]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Import CUPS v2.0b1 release-2.0b1
authorMichael Sweet <msweet@msweet-imac.local>
Tue, 15 Mar 2016 14:40:21 +0000 (10:40 -0400)
committerMichael Sweet <msweet@msweet-imac.local>
Tue, 15 Mar 2016 14:40:21 +0000 (10:40 -0400)
1137 files changed:
CHANGES-1.7.txt [new file with mode: 0644]
CHANGES-IPPTOOL.txt
CHANGES.txt
INSTALL.txt
IPPTOOL.txt
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/runloop.c
backend/snmp-supplies.c
backend/snmp.c
backend/socket.c
backend/testbackend.c
backend/usb-darwin.c
backend/usb-libusb.c
backend/usb-unix.c
berkeley/Dependencies
berkeley/lpc.c
berkeley/lpq.c
berkeley/lpr.c
cgi-bin/Dependencies
cgi-bin/Makefile
cgi-bin/admin.c
cgi-bin/classes.c
cgi-bin/help-index.c
cgi-bin/ipp-var.c
cgi-bin/jobs.c
cgi-bin/printers.c
cgi-bin/search.c
cgi-bin/template.c
cgi-bin/testcgi.c
cgi-bin/var.c
cgi-bin/websearch.c [deleted file]
conf/cups-files.conf.in
conf/cupsd.conf.in
conf/mime.types
conf/snmp.conf.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-launchd.m4 [deleted file]
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 [new file with mode: 0644]
config-scripts/cups-threads.m4
config.h.in
configure
configure.ac [moved from configure.in with 70% similarity]
cups/Dependencies
cups/Makefile
cups/adminutil.c
cups/array.c
cups/auth.c
cups/backchannel.c
cups/conflicts.c
cups/cups-private.h
cups/cups.h
cups/debug.c
cups/dest-job.c
cups/dest-localization.c
cups/dest-options.c
cups/dest.c
cups/emit.c
cups/encode.c
cups/file-private.h
cups/file.c
cups/file.h
cups/getputfile.c
cups/globals.c
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.c
cups/libcups2.def
cups/libcups_s.exp [deleted file]
cups/localize.c
cups/mark.c
cups/md5.c
cups/options.c
cups/ppd-cache.c
cups/ppd-private.h
cups/ppd.c
cups/pwg-media.c
cups/pwg-private.h
cups/request.c
cups/sidechannel.c
cups/snmp-private.h
cups/snmp.c
cups/sspi-private.h [deleted file]
cups/sspi.c [deleted file]
cups/string-private.h
cups/string.c
cups/tempfile.c
cups/testarray.c
cups/testcache.c [new file with mode: 0644]
cups/testcups.c
cups/testdest.c [new file with mode: 0644]
cups/testfile.c
cups/testhttp.c
cups/testi18n.c
cups/testipp.c
cups/testppd.c
cups/testpwg.c
cups/testsnmp.c
cups/thread-private.h
cups/thread.c
cups/tls-darwin.c [new file with mode: 0644]
cups/tls-gnutls.c [new file with mode: 0644]
cups/tls-sspi.c [new file with mode: 0644]
cups/tls.c [new file with mode: 0644]
cups/transcode.c
cups/usersys.c
cups/util.c
cups/versioning.h
desktop/cups.desktop.in
doc/Makefile
doc/apple-touch-icon.opacity [new file with mode: 0644]
doc/apple-touch-icon.png [new file with mode: 0644]
doc/ca/index.html.in [deleted file]
doc/cs/index.html.in [deleted file]
doc/cups-printable.css
doc/cups.css
doc/de/index.html.in [deleted file]
doc/es/index.html.in [deleted file]
doc/fr/index.html.in [deleted file]
doc/help/api-array.html
doc/help/api-cgi.html
doc/help/api-cups.html
doc/help/api-filedir.html
doc/help/api-filter.html
doc/help/api-httpipp.html
doc/help/api-mime.html
doc/help/api-overview.html
doc/help/api-ppd.html
doc/help/api-ppdc.html
doc/help/api-raster.html
doc/help/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-deviced.html [deleted file]
doc/help/man-cups-driverd.html [deleted file]
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 [new file with mode: 0644]
doc/help/man-cupsaccept.html
doc/help/man-cupsaddsmb.html
doc/help/man-cupsctl.html
doc/help/man-cupsd-helper.html [new file with mode: 0644]
doc/help/man-cupsd-logs.html [new file with mode: 0644]
doc/help/man-cupsd.conf.html
doc/help/man-cupsd.html
doc/help/man-cupsenable.html
doc/help/man-cupsfilter.html
doc/help/man-cupstestdsc.html
doc/help/man-cupstestppd.html
doc/help/man-filter.html
doc/help/man-ippfind.html
doc/help/man-ipptool.html
doc/help/man-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-lppasswd.html [deleted file]
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/overview.html
doc/help/postscript-driver.html
doc/help/ppd-compiler.html
doc/help/raster-driver.html
doc/help/ref-access_log.html [deleted file]
doc/help/ref-classes-conf.html [deleted file]
doc/help/ref-client-conf.html [deleted file]
doc/help/ref-cups-files-conf.html.in [deleted file]
doc/help/ref-cupsd-conf.html.in [deleted file]
doc/help/ref-error_log.html [deleted file]
doc/help/ref-mailto-conf.html [deleted file]
doc/help/ref-page_log.html [deleted file]
doc/help/ref-printers-conf.html [deleted file]
doc/help/ref-snmp-conf.html [deleted file]
doc/help/ref-subscriptions-conf.html [deleted file]
doc/help/security.html
doc/help/spec-browsing.html [deleted file]
doc/help/spec-cmp.html
doc/help/spec-design.html
doc/help/spec-ipp.html
doc/help/spec-pdf.html
doc/help/spec-ppd.html
doc/help/whatsnew.html [deleted file]
doc/index.html.in
doc/it/index.html.in [deleted file]
doc/ja/index.html.in [deleted file]
doc/pt_BR/index.html.in [deleted file]
doc/ru/index.html.in [deleted file]
filter/Dependencies
filter/commandtops.c
filter/common.c
filter/error.c
filter/gziptoany.c
filter/interpret.c
filter/pstops.c
filter/raster.c
filter/rasterbench.c
filter/rastertoepson.c
filter/rastertohp.c
filter/rastertolabel.c
filter/rastertopwg.c
filter/testraster.c
locale/Dependencies
locale/Makefile
locale/cups.header
locale/cups.pot
locale/cups.strings
locale/cups_ca.po
locale/cups_cs.po
locale/cups_de.po [deleted file]
locale/cups_es.po
locale/cups_fr.po
locale/cups_it.po
locale/cups_ja.po
locale/cups_pt_BR.po [deleted file]
locale/cups_ru.po
locale/po2strings.c
locale/strings2po.c
locale/translate.c [deleted file]
man/Makefile
man/backend.man
man/cancel.man
man/classes.conf.man
man/client.conf.man.in
man/cups-config.man
man/cups-deviced.man.in [deleted file]
man/cups-driverd.man.in [deleted file]
man/cups-files.conf.man.in
man/cups-lpd.man.in
man/cups-snmp.conf.man
man/cups-snmp.man.in
man/cups.man [new file with mode: 0644]
man/cupsaccept.man
man/cupsaddsmb.man.in
man/cupsctl.man
man/cupsd-helper.man [new file with mode: 0644]
man/cupsd-logs.man [new file with mode: 0644]
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/lppasswd.man [deleted file]
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/bcp.c
monitor/tbcp.c
notifier/Dependencies
notifier/dbus.c
packaging/cups.list.in
packaging/cups.spec
packaging/cups.spec.in
ppdc/Dependencies
ppdc/Makefile
ppdc/genstrings.cxx
ppdc/ppdc-array.cxx
ppdc/ppdc-catalog.cxx
ppdc/ppdc-driver.cxx
ppdc/ppdc-source.cxx
ppdc/ppdc.cxx
ppdc/ppdmerge.cxx
ppdc/sample.drv
scheduler/Dependencies
scheduler/Makefile
scheduler/auth.c
scheduler/auth.h
scheduler/cert.c
scheduler/classes.c
scheduler/client.c
scheduler/client.h
scheduler/colorman.c
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/cupsd.h
scheduler/cupsfilter.c
scheduler/dirsvc.c
scheduler/file.c
scheduler/ipp.c
scheduler/job.c
scheduler/job.h
scheduler/listen.c
scheduler/log.c
scheduler/main.c
scheduler/mime.c
scheduler/mime.h
scheduler/network.c
scheduler/org.cups.cups-lpd.plist.in
scheduler/org.cups.cupsd.path.in [new file with mode: 0644]
scheduler/org.cups.cupsd.plist
scheduler/org.cups.cupsd.service.in [new file with mode: 0644]
scheduler/org.cups.cupsd.socket.in [new file with mode: 0644]
scheduler/policy.c
scheduler/printers.c
scheduler/printers.h
scheduler/process.c
scheduler/select.c
scheduler/server.c
scheduler/statbuf.c
scheduler/subscriptions.c
scheduler/sysman.c
scheduler/testlpd.c
scheduler/testmime.c
scheduler/testspeed.c
scheduler/testsub.c
scheduler/tls-darwin.c [deleted file]
scheduler/tls-gnutls.c [deleted file]
scheduler/tls-openssl.c [deleted file]
scheduler/tls.c [deleted file]
scheduler/type.c
scheduler/util.c
scheduler/util.h
systemv/Dependencies
systemv/Makefile
systemv/cupstestppd.c
systemv/lp.c
systemv/lpadmin.c
systemv/lpoptions.c
systemv/lppasswd.c [deleted file]
systemv/lpstat.c
templates/Makefile
templates/add-class.tmpl
templates/add-printer.tmpl
templates/admin.tmpl
templates/ca/add-class.tmpl [deleted file]
templates/ca/add-printer.tmpl [deleted file]
templates/ca/add-rss-subscription.tmpl [deleted file]
templates/ca/admin.tmpl [deleted file]
templates/ca/choose-device.tmpl [deleted file]
templates/ca/choose-make.tmpl [deleted file]
templates/ca/choose-model.tmpl [deleted file]
templates/ca/choose-serial.tmpl [deleted file]
templates/ca/choose-uri.tmpl [deleted file]
templates/ca/class-added.tmpl [deleted file]
templates/ca/class-confirm.tmpl [deleted file]
templates/ca/class-deleted.tmpl [deleted file]
templates/ca/class-jobs-header.tmpl [deleted file]
templates/ca/class-modified.tmpl [deleted file]
templates/ca/class.tmpl [deleted file]
templates/ca/classes-header.tmpl [deleted file]
templates/ca/classes.tmpl [deleted file]
templates/ca/command.tmpl [deleted file]
templates/ca/edit-config.tmpl [deleted file]
templates/ca/error-op.tmpl [deleted file]
templates/ca/error.tmpl [deleted file]
templates/ca/header.tmpl.in [deleted file]
templates/ca/help-header.tmpl [deleted file]
templates/ca/help-printable.tmpl [deleted file]
templates/ca/help-trailer.tmpl [deleted file]
templates/ca/job-cancel.tmpl [deleted file]
templates/ca/job-hold.tmpl [deleted file]
templates/ca/job-move.tmpl [deleted file]
templates/ca/job-moved.tmpl [deleted file]
templates/ca/job-release.tmpl [deleted file]
templates/ca/job-restart.tmpl [deleted file]
templates/ca/jobs-header.tmpl [deleted file]
templates/ca/jobs.tmpl [deleted file]
templates/ca/list-available-printers.tmpl [deleted file]
templates/ca/modify-class.tmpl [deleted file]
templates/ca/modify-printer.tmpl [deleted file]
templates/ca/norestart.tmpl [deleted file]
templates/ca/option-boolean.tmpl [deleted file]
templates/ca/option-conflict.tmpl [deleted file]
templates/ca/option-header.tmpl [deleted file]
templates/ca/option-pickmany.tmpl [deleted file]
templates/ca/option-pickone.tmpl [deleted file]
templates/ca/option-trailer.tmpl [deleted file]
templates/ca/pager.tmpl [deleted file]
templates/ca/printer-accept.tmpl [deleted file]
templates/ca/printer-added.tmpl [deleted file]
templates/ca/printer-configured.tmpl [deleted file]
templates/ca/printer-confirm.tmpl [deleted file]
templates/ca/printer-default.tmpl [deleted file]
templates/ca/printer-deleted.tmpl [deleted file]
templates/ca/printer-jobs-header.tmpl [deleted file]
templates/ca/printer-modified.tmpl [deleted file]
templates/ca/printer-purge.tmpl [deleted file]
templates/ca/printer-reject.tmpl [deleted file]
templates/ca/printer-start.tmpl [deleted file]
templates/ca/printer-stop.tmpl [deleted file]
templates/ca/printer.tmpl [deleted file]
templates/ca/printers-header.tmpl [deleted file]
templates/ca/printers.tmpl [deleted file]
templates/ca/restart.tmpl [deleted file]
templates/ca/samba-export.tmpl [deleted file]
templates/ca/samba-exported.tmpl [deleted file]
templates/ca/search.tmpl [deleted file]
templates/ca/set-printer-options-header.tmpl [deleted file]
templates/ca/set-printer-options-trailer.tmpl [deleted file]
templates/ca/subscription-added.tmpl [deleted file]
templates/ca/subscription-canceled.tmpl [deleted file]
templates/ca/test-page.tmpl [deleted file]
templates/ca/trailer.tmpl [deleted file]
templates/ca/users.tmpl [deleted file]
templates/choose-device.tmpl
templates/choose-make.tmpl
templates/choose-model.tmpl
templates/choose-serial.tmpl
templates/choose-uri.tmpl
templates/class-added.tmpl
templates/class-confirm.tmpl
templates/class-deleted.tmpl
templates/class-jobs-header.tmpl
templates/class-modified.tmpl
templates/class.tmpl
templates/command.tmpl
templates/cs/add-class.tmpl [deleted file]
templates/cs/add-printer.tmpl [deleted file]
templates/cs/add-rss-subscription.tmpl [deleted file]
templates/cs/admin.tmpl [deleted file]
templates/cs/choose-device.tmpl [deleted file]
templates/cs/choose-make.tmpl [deleted file]
templates/cs/choose-model.tmpl [deleted file]
templates/cs/choose-serial.tmpl [deleted file]
templates/cs/choose-uri.tmpl [deleted file]
templates/cs/class-added.tmpl [deleted file]
templates/cs/class-confirm.tmpl [deleted file]
templates/cs/class-deleted.tmpl [deleted file]
templates/cs/class-jobs-header.tmpl [deleted file]
templates/cs/class-modified.tmpl [deleted file]
templates/cs/class.tmpl [deleted file]
templates/cs/classes-header.tmpl [deleted file]
templates/cs/classes.tmpl [deleted file]
templates/cs/command.tmpl [deleted file]
templates/cs/edit-config.tmpl [deleted file]
templates/cs/error-op.tmpl [deleted file]
templates/cs/error.tmpl [deleted file]
templates/cs/header.tmpl.in [deleted file]
templates/cs/help-header.tmpl [deleted file]
templates/cs/help-printable.tmpl [deleted file]
templates/cs/help-trailer.tmpl [deleted file]
templates/cs/job-cancel.tmpl [deleted file]
templates/cs/job-hold.tmpl [deleted file]
templates/cs/job-move.tmpl [deleted file]
templates/cs/job-moved.tmpl [deleted file]
templates/cs/job-release.tmpl [deleted file]
templates/cs/job-restart.tmpl [deleted file]
templates/cs/jobs-header.tmpl [deleted file]
templates/cs/jobs.tmpl [deleted file]
templates/cs/list-available-printers.tmpl [deleted file]
templates/cs/modify-class.tmpl [deleted file]
templates/cs/modify-printer.tmpl [deleted file]
templates/cs/norestart.tmpl [deleted file]
templates/cs/option-boolean.tmpl [deleted file]
templates/cs/option-conflict.tmpl [deleted file]
templates/cs/option-header.tmpl [deleted file]
templates/cs/option-pickmany.tmpl [deleted file]
templates/cs/option-pickone.tmpl [deleted file]
templates/cs/option-trailer.tmpl [deleted file]
templates/cs/pager.tmpl [deleted file]
templates/cs/printer-accept.tmpl [deleted file]
templates/cs/printer-added.tmpl [deleted file]
templates/cs/printer-configured.tmpl [deleted file]
templates/cs/printer-confirm.tmpl [deleted file]
templates/cs/printer-default.tmpl [deleted file]
templates/cs/printer-deleted.tmpl [deleted file]
templates/cs/printer-jobs-header.tmpl [deleted file]
templates/cs/printer-modified.tmpl [deleted file]
templates/cs/printer-purge.tmpl [deleted file]
templates/cs/printer-reject.tmpl [deleted file]
templates/cs/printer-start.tmpl [deleted file]
templates/cs/printer-stop.tmpl [deleted file]
templates/cs/printer.tmpl [deleted file]
templates/cs/printers-header.tmpl [deleted file]
templates/cs/printers.tmpl [deleted file]
templates/cs/restart.tmpl [deleted file]
templates/cs/samba-export.tmpl [deleted file]
templates/cs/samba-exported.tmpl [deleted file]
templates/cs/search.tmpl [deleted file]
templates/cs/set-printer-options-header.tmpl [deleted file]
templates/cs/set-printer-options-trailer.tmpl [deleted file]
templates/cs/subscription-added.tmpl [deleted file]
templates/cs/subscription-canceled.tmpl [deleted file]
templates/cs/test-page.tmpl [deleted file]
templates/cs/trailer.tmpl [deleted file]
templates/cs/users.tmpl [deleted file]
templates/de/add-class.tmpl [deleted file]
templates/de/add-printer.tmpl [deleted file]
templates/de/add-rss-subscription.tmpl [deleted file]
templates/de/admin.tmpl [deleted file]
templates/de/choose-device.tmpl [deleted file]
templates/de/choose-make.tmpl [deleted file]
templates/de/choose-model.tmpl [deleted file]
templates/de/choose-serial.tmpl [deleted file]
templates/de/choose-uri.tmpl [deleted file]
templates/de/class-added.tmpl [deleted file]
templates/de/class-confirm.tmpl [deleted file]
templates/de/class-deleted.tmpl [deleted file]
templates/de/class-jobs-header.tmpl [deleted file]
templates/de/class-modified.tmpl [deleted file]
templates/de/class.tmpl [deleted file]
templates/de/classes-header.tmpl [deleted file]
templates/de/classes.tmpl [deleted file]
templates/de/command.tmpl [deleted file]
templates/de/edit-config.tmpl [deleted file]
templates/de/error-op.tmpl [deleted file]
templates/de/error.tmpl [deleted file]
templates/de/header.tmpl.in [deleted file]
templates/de/help-header.tmpl [deleted file]
templates/de/help-printable.tmpl [deleted file]
templates/de/help-trailer.tmpl [deleted file]
templates/de/job-cancel.tmpl [deleted file]
templates/de/job-hold.tmpl [deleted file]
templates/de/job-move.tmpl [deleted file]
templates/de/job-moved.tmpl [deleted file]
templates/de/job-release.tmpl [deleted file]
templates/de/job-restart.tmpl [deleted file]
templates/de/jobs-header.tmpl [deleted file]
templates/de/jobs.tmpl [deleted file]
templates/de/list-available-printers.tmpl [deleted file]
templates/de/modify-class.tmpl [deleted file]
templates/de/modify-printer.tmpl [deleted file]
templates/de/norestart.tmpl [deleted file]
templates/de/option-boolean.tmpl [deleted file]
templates/de/option-conflict.tmpl [deleted file]
templates/de/option-header.tmpl [deleted file]
templates/de/option-pickmany.tmpl [deleted file]
templates/de/option-pickone.tmpl [deleted file]
templates/de/option-trailer.tmpl [deleted file]
templates/de/pager.tmpl [deleted file]
templates/de/printer-accept.tmpl [deleted file]
templates/de/printer-added.tmpl [deleted file]
templates/de/printer-configured.tmpl [deleted file]
templates/de/printer-confirm.tmpl [deleted file]
templates/de/printer-default.tmpl [deleted file]
templates/de/printer-deleted.tmpl [deleted file]
templates/de/printer-jobs-header.tmpl [deleted file]
templates/de/printer-modified.tmpl [deleted file]
templates/de/printer-purge.tmpl [deleted file]
templates/de/printer-reject.tmpl [deleted file]
templates/de/printer-start.tmpl [deleted file]
templates/de/printer-stop.tmpl [deleted file]
templates/de/printer.tmpl [deleted file]
templates/de/printers-header.tmpl [deleted file]
templates/de/printers.tmpl [deleted file]
templates/de/replace-ppd.tmpl [deleted file]
templates/de/restart.tmpl [deleted file]
templates/de/samba-export.tmpl [deleted file]
templates/de/samba-exported.tmpl [deleted file]
templates/de/search.tmpl [deleted file]
templates/de/set-printer-options-header.tmpl [deleted file]
templates/de/set-printer-options-trailer.tmpl [deleted file]
templates/de/subscription-added.tmpl [deleted file]
templates/de/subscription-canceled.tmpl [deleted file]
templates/de/test-page.tmpl [deleted file]
templates/de/trailer.tmpl [deleted file]
templates/de/users.tmpl [deleted file]
templates/edit-config.tmpl
templates/error-op.tmpl
templates/error.tmpl
templates/es/add-class.tmpl [deleted file]
templates/es/add-printer.tmpl [deleted file]
templates/es/add-rss-subscription.tmpl [deleted file]
templates/es/admin.tmpl [deleted file]
templates/es/choose-device.tmpl [deleted file]
templates/es/choose-make.tmpl [deleted file]
templates/es/choose-model.tmpl [deleted file]
templates/es/choose-serial.tmpl [deleted file]
templates/es/choose-uri.tmpl [deleted file]
templates/es/class-added.tmpl [deleted file]
templates/es/class-confirm.tmpl [deleted file]
templates/es/class-deleted.tmpl [deleted file]
templates/es/class-jobs-header.tmpl [deleted file]
templates/es/class-modified.tmpl [deleted file]
templates/es/class.tmpl [deleted file]
templates/es/classes-header.tmpl [deleted file]
templates/es/classes.tmpl [deleted file]
templates/es/command.tmpl [deleted file]
templates/es/edit-config.tmpl [deleted file]
templates/es/error-op.tmpl [deleted file]
templates/es/error.tmpl [deleted file]
templates/es/header.tmpl.in [deleted file]
templates/es/help-header.tmpl [deleted file]
templates/es/help-printable.tmpl [deleted file]
templates/es/help-trailer.tmpl [deleted file]
templates/es/job-cancel.tmpl [deleted file]
templates/es/job-hold.tmpl [deleted file]
templates/es/job-move.tmpl [deleted file]
templates/es/job-moved.tmpl [deleted file]
templates/es/job-release.tmpl [deleted file]
templates/es/job-restart.tmpl [deleted file]
templates/es/jobs-header.tmpl [deleted file]
templates/es/jobs.tmpl [deleted file]
templates/es/list-available-printers.tmpl [deleted file]
templates/es/modify-class.tmpl [deleted file]
templates/es/modify-printer.tmpl [deleted file]
templates/es/norestart.tmpl [deleted file]
templates/es/option-boolean.tmpl [deleted file]
templates/es/option-conflict.tmpl [deleted file]
templates/es/option-header.tmpl [deleted file]
templates/es/option-pickmany.tmpl [deleted file]
templates/es/option-pickone.tmpl [deleted file]
templates/es/option-trailer.tmpl [deleted file]
templates/es/pager.tmpl [deleted file]
templates/es/printer-accept.tmpl [deleted file]
templates/es/printer-added.tmpl [deleted file]
templates/es/printer-configured.tmpl [deleted file]
templates/es/printer-confirm.tmpl [deleted file]
templates/es/printer-default.tmpl [deleted file]
templates/es/printer-deleted.tmpl [deleted file]
templates/es/printer-jobs-header.tmpl [deleted file]
templates/es/printer-modified.tmpl [deleted file]
templates/es/printer-purge.tmpl [deleted file]
templates/es/printer-reject.tmpl [deleted file]
templates/es/printer-start.tmpl [deleted file]
templates/es/printer-stop.tmpl [deleted file]
templates/es/printer.tmpl [deleted file]
templates/es/printers-header.tmpl [deleted file]
templates/es/printers.tmpl [deleted file]
templates/es/restart.tmpl [deleted file]
templates/es/samba-export.tmpl [deleted file]
templates/es/samba-exported.tmpl [deleted file]
templates/es/search.tmpl [deleted file]
templates/es/set-printer-options-header.tmpl [deleted file]
templates/es/set-printer-options-trailer.tmpl [deleted file]
templates/es/subscription-added.tmpl [deleted file]
templates/es/subscription-canceled.tmpl [deleted file]
templates/es/test-page.tmpl [deleted file]
templates/es/trailer.tmpl [deleted file]
templates/es/users.tmpl [deleted file]
templates/fr/add-class.tmpl [deleted file]
templates/fr/add-printer.tmpl [deleted file]
templates/fr/add-rss-subscription.tmpl [deleted file]
templates/fr/admin.tmpl [deleted file]
templates/fr/choose-device.tmpl [deleted file]
templates/fr/choose-make.tmpl [deleted file]
templates/fr/choose-model.tmpl [deleted file]
templates/fr/choose-serial.tmpl [deleted file]
templates/fr/choose-uri.tmpl [deleted file]
templates/fr/class-added.tmpl [deleted file]
templates/fr/class-confirm.tmpl [deleted file]
templates/fr/class-deleted.tmpl [deleted file]
templates/fr/class-jobs-header.tmpl [deleted file]
templates/fr/class-modified.tmpl [deleted file]
templates/fr/class.tmpl [deleted file]
templates/fr/classes-header.tmpl [deleted file]
templates/fr/classes.tmpl [deleted file]
templates/fr/command.tmpl [deleted file]
templates/fr/edit-config.tmpl [deleted file]
templates/fr/error-op.tmpl [deleted file]
templates/fr/error.tmpl [deleted file]
templates/fr/header.tmpl.in [deleted file]
templates/fr/help-header.tmpl [deleted file]
templates/fr/help-printable.tmpl [deleted file]
templates/fr/help-trailer.tmpl [deleted file]
templates/fr/job-cancel.tmpl [deleted file]
templates/fr/job-hold.tmpl [deleted file]
templates/fr/job-move.tmpl [deleted file]
templates/fr/job-moved.tmpl [deleted file]
templates/fr/job-release.tmpl [deleted file]
templates/fr/job-restart.tmpl [deleted file]
templates/fr/jobs-header.tmpl [deleted file]
templates/fr/jobs.tmpl [deleted file]
templates/fr/list-available-printers.tmpl [deleted file]
templates/fr/modify-class.tmpl [deleted file]
templates/fr/modify-printer.tmpl [deleted file]
templates/fr/norestart.tmpl [deleted file]
templates/fr/option-boolean.tmpl [deleted file]
templates/fr/option-conflict.tmpl [deleted file]
templates/fr/option-header.tmpl [deleted file]
templates/fr/option-pickmany.tmpl [deleted file]
templates/fr/option-pickone.tmpl [deleted file]
templates/fr/option-trailer.tmpl [deleted file]
templates/fr/pager.tmpl [deleted file]
templates/fr/printer-accept.tmpl [deleted file]
templates/fr/printer-added.tmpl [deleted file]
templates/fr/printer-configured.tmpl [deleted file]
templates/fr/printer-confirm.tmpl [deleted file]
templates/fr/printer-default.tmpl [deleted file]
templates/fr/printer-deleted.tmpl [deleted file]
templates/fr/printer-jobs-header.tmpl [deleted file]
templates/fr/printer-modified.tmpl [deleted file]
templates/fr/printer-purge.tmpl [deleted file]
templates/fr/printer-reject.tmpl [deleted file]
templates/fr/printer-start.tmpl [deleted file]
templates/fr/printer-stop.tmpl [deleted file]
templates/fr/printer.tmpl [deleted file]
templates/fr/printers-header.tmpl [deleted file]
templates/fr/printers.tmpl [deleted file]
templates/fr/restart.tmpl [deleted file]
templates/fr/samba-export.tmpl [deleted file]
templates/fr/samba-exported.tmpl [deleted file]
templates/fr/search.tmpl [deleted file]
templates/fr/set-printer-options-header.tmpl [deleted file]
templates/fr/set-printer-options-trailer.tmpl [deleted file]
templates/fr/subscription-added.tmpl [deleted file]
templates/fr/subscription-canceled.tmpl [deleted file]
templates/fr/test-page.tmpl [deleted file]
templates/fr/trailer.tmpl [deleted file]
templates/fr/users.tmpl [deleted file]
templates/header.tmpl.in
templates/help-header.tmpl
templates/help-trailer.tmpl
templates/it/add-class.tmpl [deleted file]
templates/it/add-printer.tmpl [deleted file]
templates/it/add-rss-subscription.tmpl [deleted file]
templates/it/admin.tmpl [deleted file]
templates/it/choose-device.tmpl [deleted file]
templates/it/choose-make.tmpl [deleted file]
templates/it/choose-model.tmpl [deleted file]
templates/it/choose-serial.tmpl [deleted file]
templates/it/choose-uri.tmpl [deleted file]
templates/it/class-added.tmpl [deleted file]
templates/it/class-confirm.tmpl [deleted file]
templates/it/class-deleted.tmpl [deleted file]
templates/it/class-jobs-header.tmpl [deleted file]
templates/it/class-modified.tmpl [deleted file]
templates/it/class.tmpl [deleted file]
templates/it/classes-header.tmpl [deleted file]
templates/it/classes.tmpl [deleted file]
templates/it/command.tmpl [deleted file]
templates/it/edit-config.tmpl [deleted file]
templates/it/error-op.tmpl [deleted file]
templates/it/error.tmpl [deleted file]
templates/it/header.tmpl.in [deleted file]
templates/it/help-header.tmpl [deleted file]
templates/it/help-printable.tmpl [deleted file]
templates/it/help-trailer.tmpl [deleted file]
templates/it/job-cancel.tmpl [deleted file]
templates/it/job-hold.tmpl [deleted file]
templates/it/job-move.tmpl [deleted file]
templates/it/job-moved.tmpl [deleted file]
templates/it/job-release.tmpl [deleted file]
templates/it/job-restart.tmpl [deleted file]
templates/it/jobs-header.tmpl [deleted file]
templates/it/jobs.tmpl [deleted file]
templates/it/list-available-printers.tmpl [deleted file]
templates/it/modify-class.tmpl [deleted file]
templates/it/modify-printer.tmpl [deleted file]
templates/it/norestart.tmpl [deleted file]
templates/it/option-boolean.tmpl [deleted file]
templates/it/option-conflict.tmpl [deleted file]
templates/it/option-header.tmpl [deleted file]
templates/it/option-pickmany.tmpl [deleted file]
templates/it/option-pickone.tmpl [deleted file]
templates/it/option-trailer.tmpl [deleted file]
templates/it/pager.tmpl [deleted file]
templates/it/printer-accept.tmpl [deleted file]
templates/it/printer-added.tmpl [deleted file]
templates/it/printer-configured.tmpl [deleted file]
templates/it/printer-confirm.tmpl [deleted file]
templates/it/printer-default.tmpl [deleted file]
templates/it/printer-deleted.tmpl [deleted file]
templates/it/printer-jobs-header.tmpl [deleted file]
templates/it/printer-modified.tmpl [deleted file]
templates/it/printer-purge.tmpl [deleted file]
templates/it/printer-reject.tmpl [deleted file]
templates/it/printer-start.tmpl [deleted file]
templates/it/printer-stop.tmpl [deleted file]
templates/it/printer.tmpl [deleted file]
templates/it/printers-header.tmpl [deleted file]
templates/it/printers.tmpl [deleted file]
templates/it/restart.tmpl [deleted file]
templates/it/samba-export.tmpl [deleted file]
templates/it/samba-exported.tmpl [deleted file]
templates/it/search.tmpl [deleted file]
templates/it/set-printer-options-header.tmpl [deleted file]
templates/it/set-printer-options-trailer.tmpl [deleted file]
templates/it/subscription-added.tmpl [deleted file]
templates/it/subscription-canceled.tmpl [deleted file]
templates/it/test-page.tmpl [deleted file]
templates/it/trailer.tmpl [deleted file]
templates/it/users.tmpl [deleted file]
templates/ja/add-class.tmpl [deleted file]
templates/ja/add-printer.tmpl [deleted file]
templates/ja/add-rss-subscription.tmpl [deleted file]
templates/ja/admin.tmpl [deleted file]
templates/ja/choose-device.tmpl [deleted file]
templates/ja/choose-make.tmpl [deleted file]
templates/ja/choose-model.tmpl [deleted file]
templates/ja/choose-serial.tmpl [deleted file]
templates/ja/choose-uri.tmpl [deleted file]
templates/ja/class-added.tmpl [deleted file]
templates/ja/class-confirm.tmpl [deleted file]
templates/ja/class-deleted.tmpl [deleted file]
templates/ja/class-jobs-header.tmpl [deleted file]
templates/ja/class-modified.tmpl [deleted file]
templates/ja/class.tmpl [deleted file]
templates/ja/classes-header.tmpl [deleted file]
templates/ja/classes.tmpl [deleted file]
templates/ja/command.tmpl [deleted file]
templates/ja/edit-config.tmpl [deleted file]
templates/ja/error-op.tmpl [deleted file]
templates/ja/error.tmpl [deleted file]
templates/ja/header.tmpl.in [deleted file]
templates/ja/help-header.tmpl [deleted file]
templates/ja/help-printable.tmpl [deleted file]
templates/ja/help-trailer.tmpl [deleted file]
templates/ja/job-cancel.tmpl [deleted file]
templates/ja/job-hold.tmpl [deleted file]
templates/ja/job-move.tmpl [deleted file]
templates/ja/job-moved.tmpl [deleted file]
templates/ja/job-release.tmpl [deleted file]
templates/ja/job-restart.tmpl [deleted file]
templates/ja/jobs-header.tmpl [deleted file]
templates/ja/jobs.tmpl [deleted file]
templates/ja/list-available-printers.tmpl [deleted file]
templates/ja/modify-class.tmpl [deleted file]
templates/ja/modify-printer.tmpl [deleted file]
templates/ja/norestart.tmpl [deleted file]
templates/ja/option-boolean.tmpl [deleted file]
templates/ja/option-conflict.tmpl [deleted file]
templates/ja/option-header.tmpl [deleted file]
templates/ja/option-pickmany.tmpl [deleted file]
templates/ja/option-pickone.tmpl [deleted file]
templates/ja/option-trailer.tmpl [deleted file]
templates/ja/pager.tmpl [deleted file]
templates/ja/printer-accept.tmpl [deleted file]
templates/ja/printer-added.tmpl [deleted file]
templates/ja/printer-configured.tmpl [deleted file]
templates/ja/printer-confirm.tmpl [deleted file]
templates/ja/printer-default.tmpl [deleted file]
templates/ja/printer-deleted.tmpl [deleted file]
templates/ja/printer-jobs-header.tmpl [deleted file]
templates/ja/printer-modified.tmpl [deleted file]
templates/ja/printer-purge.tmpl [deleted file]
templates/ja/printer-reject.tmpl [deleted file]
templates/ja/printer-start.tmpl [deleted file]
templates/ja/printer-stop.tmpl [deleted file]
templates/ja/printer.tmpl [deleted file]
templates/ja/printers-header.tmpl [deleted file]
templates/ja/printers.tmpl [deleted file]
templates/ja/restart.tmpl [deleted file]
templates/ja/samba-export.tmpl [deleted file]
templates/ja/samba-exported.tmpl [deleted file]
templates/ja/search.tmpl [deleted file]
templates/ja/set-printer-options-header.tmpl [deleted file]
templates/ja/set-printer-options-trailer.tmpl [deleted file]
templates/ja/subscription-added.tmpl [deleted file]
templates/ja/subscription-canceled.tmpl [deleted file]
templates/ja/test-page.tmpl [deleted file]
templates/ja/trailer.tmpl [deleted file]
templates/ja/users.tmpl [deleted file]
templates/job-cancel.tmpl
templates/job-hold.tmpl
templates/job-move.tmpl
templates/job-moved.tmpl
templates/job-release.tmpl
templates/job-restart.tmpl
templates/jobs-header.tmpl
templates/list-available-printers.tmpl
templates/modify-class.tmpl
templates/modify-printer.tmpl
templates/norestart.tmpl
templates/printer-accept.tmpl
templates/printer-added.tmpl
templates/printer-cancel-jobs.tmpl [new file with mode: 0644]
templates/printer-configured.tmpl
templates/printer-confirm.tmpl
templates/printer-default.tmpl
templates/printer-deleted.tmpl
templates/printer-jobs-header.tmpl
templates/printer-modified.tmpl
templates/printer-purge.tmpl [deleted file]
templates/printer-reject.tmpl
templates/printer-start.tmpl
templates/printer-stop.tmpl
templates/printer.tmpl
templates/pt_BR/add-class.tmpl [deleted file]
templates/pt_BR/add-printer.tmpl [deleted file]
templates/pt_BR/add-rss-subscription.tmpl [deleted file]
templates/pt_BR/admin.tmpl [deleted file]
templates/pt_BR/choose-device.tmpl [deleted file]
templates/pt_BR/choose-make.tmpl [deleted file]
templates/pt_BR/choose-model.tmpl [deleted file]
templates/pt_BR/choose-serial.tmpl [deleted file]
templates/pt_BR/choose-uri.tmpl [deleted file]
templates/pt_BR/class-added.tmpl [deleted file]
templates/pt_BR/class-confirm.tmpl [deleted file]
templates/pt_BR/class-deleted.tmpl [deleted file]
templates/pt_BR/class-jobs-header.tmpl [deleted file]
templates/pt_BR/class-modified.tmpl [deleted file]
templates/pt_BR/class.tmpl [deleted file]
templates/pt_BR/classes-header.tmpl [deleted file]
templates/pt_BR/classes.tmpl [deleted file]
templates/pt_BR/command.tmpl [deleted file]
templates/pt_BR/edit-config.tmpl [deleted file]
templates/pt_BR/error-op.tmpl [deleted file]
templates/pt_BR/error.tmpl [deleted file]
templates/pt_BR/header.tmpl.in [deleted file]
templates/pt_BR/help-header.tmpl [deleted file]
templates/pt_BR/job-cancel.tmpl [deleted file]
templates/pt_BR/job-hold.tmpl [deleted file]
templates/pt_BR/job-move.tmpl [deleted file]
templates/pt_BR/job-moved.tmpl [deleted file]
templates/pt_BR/job-release.tmpl [deleted file]
templates/pt_BR/job-restart.tmpl [deleted file]
templates/pt_BR/jobs-header.tmpl [deleted file]
templates/pt_BR/jobs.tmpl [deleted file]
templates/pt_BR/list-available-printers.tmpl [deleted file]
templates/pt_BR/modify-class.tmpl [deleted file]
templates/pt_BR/modify-printer.tmpl [deleted file]
templates/pt_BR/norestart.tmpl [deleted file]
templates/pt_BR/option-boolean.tmpl [deleted file]
templates/pt_BR/option-conflict.tmpl [deleted file]
templates/pt_BR/option-header.tmpl [deleted file]
templates/pt_BR/option-pickmany.tmpl [deleted file]
templates/pt_BR/option-pickone.tmpl [deleted file]
templates/pt_BR/option-trailer.tmpl [deleted file]
templates/pt_BR/pager.tmpl [deleted file]
templates/pt_BR/printer-accept.tmpl [deleted file]
templates/pt_BR/printer-added.tmpl [deleted file]
templates/pt_BR/printer-configured.tmpl [deleted file]
templates/pt_BR/printer-confirm.tmpl [deleted file]
templates/pt_BR/printer-default.tmpl [deleted file]
templates/pt_BR/printer-deleted.tmpl [deleted file]
templates/pt_BR/printer-jobs-header.tmpl [deleted file]
templates/pt_BR/printer-modified.tmpl [deleted file]
templates/pt_BR/printer-purge.tmpl [deleted file]
templates/pt_BR/printer-reject.tmpl [deleted file]
templates/pt_BR/printer-start.tmpl [deleted file]
templates/pt_BR/printer-stop.tmpl [deleted file]
templates/pt_BR/printer.tmpl [deleted file]
templates/pt_BR/printers-header.tmpl [deleted file]
templates/pt_BR/printers.tmpl [deleted file]
templates/pt_BR/restart.tmpl [deleted file]
templates/pt_BR/samba-export.tmpl [deleted file]
templates/pt_BR/samba-exported.tmpl [deleted file]
templates/pt_BR/search.tmpl [deleted file]
templates/pt_BR/set-printer-options-header.tmpl [deleted file]
templates/pt_BR/set-printer-options-trailer.tmpl [deleted file]
templates/pt_BR/subscription-added.tmpl [deleted file]
templates/pt_BR/subscription-canceled.tmpl [deleted file]
templates/pt_BR/test-page.tmpl [deleted file]
templates/pt_BR/trailer.tmpl [deleted file]
templates/pt_BR/users.tmpl [deleted file]
templates/restart.tmpl
templates/ru/Makefile [deleted file]
templates/ru/add-class.tmpl [deleted file]
templates/ru/add-printer.tmpl [deleted file]
templates/ru/add-rss-subscription.tmpl [deleted file]
templates/ru/admin.tmpl [deleted file]
templates/ru/choose-device.tmpl [deleted file]
templates/ru/choose-make.tmpl [deleted file]
templates/ru/choose-model.tmpl [deleted file]
templates/ru/choose-serial.tmpl [deleted file]
templates/ru/choose-uri.tmpl [deleted file]
templates/ru/class-added.tmpl [deleted file]
templates/ru/class-confirm.tmpl [deleted file]
templates/ru/class-deleted.tmpl [deleted file]
templates/ru/class-jobs-header.tmpl [deleted file]
templates/ru/class-modified.tmpl [deleted file]
templates/ru/class.tmpl [deleted file]
templates/ru/classes-header.tmpl [deleted file]
templates/ru/classes.tmpl [deleted file]
templates/ru/command.tmpl [deleted file]
templates/ru/edit-config.tmpl [deleted file]
templates/ru/error-op.tmpl [deleted file]
templates/ru/error.tmpl [deleted file]
templates/ru/header.tmpl.in [deleted file]
templates/ru/help-header.tmpl [deleted file]
templates/ru/help-printable.tmpl [deleted file]
templates/ru/help-trailer.tmpl [deleted file]
templates/ru/job-cancel.tmpl [deleted file]
templates/ru/job-hold.tmpl [deleted file]
templates/ru/job-move.tmpl [deleted file]
templates/ru/job-moved.tmpl [deleted file]
templates/ru/job-release.tmpl [deleted file]
templates/ru/job-restart.tmpl [deleted file]
templates/ru/jobs-header.tmpl [deleted file]
templates/ru/jobs.tmpl [deleted file]
templates/ru/list-available-printers.tmpl [deleted file]
templates/ru/modify-class.tmpl [deleted file]
templates/ru/modify-printer.tmpl [deleted file]
templates/ru/norestart.tmpl [deleted file]
templates/ru/option-boolean.tmpl [deleted file]
templates/ru/option-conflict.tmpl [deleted file]
templates/ru/option-header.tmpl [deleted file]
templates/ru/option-pickmany.tmpl [deleted file]
templates/ru/option-pickone.tmpl [deleted file]
templates/ru/option-trailer.tmpl [deleted file]
templates/ru/pager.tmpl [deleted file]
templates/ru/printer-accept.tmpl [deleted file]
templates/ru/printer-added.tmpl [deleted file]
templates/ru/printer-configured.tmpl [deleted file]
templates/ru/printer-confirm.tmpl [deleted file]
templates/ru/printer-default.tmpl [deleted file]
templates/ru/printer-deleted.tmpl [deleted file]
templates/ru/printer-jobs-header.tmpl [deleted file]
templates/ru/printer-modified.tmpl [deleted file]
templates/ru/printer-purge.tmpl [deleted file]
templates/ru/printer-reject.tmpl [deleted file]
templates/ru/printer-start.tmpl [deleted file]
templates/ru/printer-stop.tmpl [deleted file]
templates/ru/printer.tmpl [deleted file]
templates/ru/printers-header.tmpl [deleted file]
templates/ru/printers.tmpl [deleted file]
templates/ru/restart.tmpl [deleted file]
templates/ru/samba-export.tmpl [deleted file]
templates/ru/samba-exported.tmpl [deleted file]
templates/ru/search.tmpl [deleted file]
templates/ru/set-printer-options-header.tmpl [deleted file]
templates/ru/set-printer-options-trailer.tmpl [deleted file]
templates/ru/subscription-added.tmpl [deleted file]
templates/ru/subscription-canceled.tmpl [deleted file]
templates/ru/test-page.tmpl [deleted file]
templates/ru/trailer.tmpl [deleted file]
templates/ru/users.tmpl [deleted file]
templates/set-printer-options-header.tmpl
templates/set-printer-options-trailer.tmpl
templates/subscription-added.tmpl
templates/subscription-canceled.tmpl
templates/test-page.tmpl
templates/trailer.tmpl
templates/users.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/cancel-current-job.test
test/create-printer-subscription.test
test/everywhere/bonjour-tests.sh [new file with mode: 0755]
test/everywhere/document-format-tests.sh [new file with mode: 0755]
test/everywhere/document-format-tests.test [new file with mode: 0644]
test/everywhere/ipp-tests.sh [new file with mode: 0755]
test/everywhere/ipp-tests.test [new file with mode: 0644]
test/fax-job.test [new file with mode: 0644]
test/get-completed-jobs.test
test/get-job-template-attributes.test [new file with mode: 0644]
test/get-jobs.test
test/get-notifications.test
test/get-printer-description-attributes.test [new file with mode: 0644]
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/ippfind.c
test/ippserver.c
test/ipptool.c
test/run-stp-tests.sh
test/str-header.html
test/testhp.ppd
test/testps.ppd
vcnet/config.h
vcnet/ipptool-installer.vdproj
vcnet/libcups2.vcproj
vcnet/regex/regcomp.c
vcnet/setdebug.bat
xcode/CUPS.xcodeproj/project.pbxproj
xcode/config.h

diff --git a/CHANGES-1.7.txt b/CHANGES-1.7.txt
new file mode 100644 (file)
index 0000000..d3438ff
--- /dev/null
@@ -0,0 +1,250 @@
+CHANGES-1.7.txt
+---------------
+
+CHANGES IN CUPS V1.7.5
+
+       - Security: Addressed some more situations where symlinked files would
+         be served by the web interface (STR #4455)
+       - The LPD backend did not work with some versions of glibc (STR #4452)
+       - CGI scripts did not work (STR #4454)
+       - The cupsd.conf man page did not list the ErrorPolicy directive
+         (STR #4457)
+       - Updated the Brazilian Portuguese translation (STR #4456)
+
+
+CHANGES IN CUPS V1.7.4
+
+       - Security: The web interface incorrectly served symlinked files and
+         files that were not world-readable, potentially leading to a
+         disclosure of information (STR #4450)
+       - The CUPS headers incorrectly needed libdispatch for blocks support
+         (STR #4397)
+       - CUPS did not compile when Avahi or mDNSResponder was not present
+         (STR #4402, STR #4424)
+       - The "snmp" option did not work with the network backends (STR #4422)
+       - The User directive in client.conf did not override the USER
+         environment variable (STR #4426)
+       - The web interface now properly shows a "Go" button for all text-based
+         browsers (STR #4425)
+       - The MaxJobTime directive now properly supports time values (STR #4434)
+       - The RPM spec file did not work due to the new Brazilian Portuguese
+         localization (STR #4436)
+       - Fixed an "IPP read error" issue (STR #4440)
+       - Fixed the --disable-libusb configure option (STR #4439)
+       - Fixed the debug output from the DNS-SD backend when using Avahi
+         (STR #4444)
+       - Fixed a bug in the CUPS_SC_GET_DEVICE_ID handling by the network
+         backends (STR #4447)
+       - Added USB quirk rule for Lexmark E230 (STR #4448)
+
+
+CHANGES IN CUPS V1.7.3
+
+       - Added Brazilian Portuguese translation (STR #4409)
+       - Fixed mapping of OutputBin values such as "Tray1"
+         (<rdar://problem/16685606>)
+       - Several ippGet* functions incorrectly returned -1 instead of 0 on
+         error.
+       - The cupsGetResponse function did not work properly with
+         CUPS_HTTP_DEFAULT (<rdar://problem/16762593>)
+       - The IPP backend did not abort a job when the printer did not validate
+         the supplied options (<rdar://problem/16836752>)
+       - Fixed an authentication race condition in cupsSendRequest (STR #4403)
+       - The scheduler did not add the "job-hold-until-specified" reason when
+         holding a job using the lp command (STR #4405)
+       - The configure script incorrectly added libgcrypt as a GNU TLS
+         dependency (STR #4399)
+       - cupsGetDestMediaCount did not work for CUPS_MEDIA_FLAGS DEFAULT
+         (STR #4414)
+       - Auto-typing of PWG Raster files did not work (STR #4417)
+       - IPP queues using hardcoded credentials would ask for credentials
+         (STR #4371)
+       - Dates in non-UTF-8 locales did not display correctly (STR #4388)
+       - The RPM spec file now looks for libusb-devel 1.0 or later.
+       - Fixed the "create-printer-subscription.test" file for IPPTOOL
+         (STR #4420)
+
+
+CHANGES IN CUPS V1.7.2
+
+       - Security: The scheduler now blocks URLs containing embedded HTML
+         (STR #4356)
+       - Documentation fixes (STR #3259, STR #4346, STR #4355)
+       - Fixed the Japanese localization (STR #4385)
+       - Added a German localization (STR #4363)
+       - The cupsfilter command incorrectly read the cupsd.conf file; it now
+         reads the cups-files.conf file instead.
+       - Fixed OS X builds with Xcode 5.x (<rdar://problem/15914959>)
+       - Fixed SSL support on Windows (STR #4358)
+       - Fixed documentation and naming of Create-Job/Printer-Subscriptions
+         operations (STR #4389)
+       - Phone numbers in fax jobs were not properly filtered for IPP FaxOut
+         (<rdar://problem/16351701>)
+       - Updated Linux "relro" support (STR #4349)
+       - Fixed a memory leak in the label printer driver (STR #4393)
+       - cupsEnumDests did not set the "is_default" field (STR #4332)
+       - cupsDoIORequest could miss the server status, causing failed lpadmin
+         and other administrative commands (STR #4386)
+       - cupsEnumDests didn't always call the callback function (STR #4380)
+       - "lp -i job-id -H hold" did not work (STR #nnn)
+       - CUPS didn't compile on older platforms (STR #4338)
+       - Several libcups files did not have the Apple license exception
+         notice (STR #4361)
+       - Fixed a D-BUS threading issue that caused the scheduler to crash
+         (STR #4347)
+       - The scheduler now automatically reconnects to Avahi as needed
+         (STR #4370, STR #4373)
+       - The scheduler did not handle GET requests for the log files properly
+         (STR #3265)
+       - The dnssd backend did not always report all discovered printers using
+         Avahi (STR #4365)
+       - The Zebra printer driver did not properly handle negative "label top"
+         values (STR #4354)
+       - The scheduler did not always update the MakeModel value in
+         printers.conf after updating the driver (STR #4264)
+       - The LPD mini daemon did not support print jobs larger than 2GB
+         (STR #4351)
+       - Fixed a bug in the status reading code when sending a compressed data
+         stream to an IPP printer/server (<rdar://problem/16019623>)
+       - The IPP backend might not include all job attributes in Validate-Job
+         operations (<rdar://problem/16025435>)
+       - Fixed some clang-reported issues (<rdar://problem/15936066>)
+
+
+CHANGES IN CUPS V1.7.1
+
+       - Security: the lppasswd program incorrectly used settings from
+         ~/.cups/client.conf (STR #4319)
+       - Auto debug logging was broken in 1.7.0 (<rdar://problem/15331639>)
+       - Some gzip'd PPD files could not be used (<rdar://problem/15386424>)
+       - Cleaned up some job logging in the scheduler
+         (<rdar://problem/15332672>)
+       - ATTR messages could cause string pool memory corruption in the
+         scheduler (<rdar://problem/15382819>)
+       - The RPM spec file did not list the build requirements; this was on
+         purpose, but now we are listing the Red Hat package names
+         (<rdar://problem/15375760>, STR #4322)
+       - Printing to a raw queue could result in corrupt output due to
+         opportunistic compression (<rdar://problem/15008524>)
+       - The GNU TLS support code triggered many compiler warnings due to the
+         use of old GNU TLS compatibility type names
+         (<rdar://problem/15392966>)
+       - The "make check" test suite did not work on Linux without the
+         cups-filters package installed (<rdar://problem/14292998>)
+       - Japanese PPDs using with the Shift-JIS encoding did not work
+         (<rdar://problem/15427759>)
+       - "tel:" URIs incorrectly had slashes (<rdar://problem/15418463>)
+       - The libusb-based USB backend incorrectly used write timeouts
+         (<rdar://problem/15564888>)
+       - Shared printers could become inaccessible after a few days on OS X
+         (<rdar://problem/15426838>)
+       - The IPP backend did not wait for a busy printer to become available
+         before attempting to print (<rdar://problem/15465667>)
+       - CUPS did not support "auto-monochrome" or "process-monochrome" for the
+         "print-color-mode" option (<rdar://problem/15482520>)
+       - Using "@IF(name)" in an Allow or Deny rule did not work (STR #4328)
+       - lpq and lpstat did not list jobs in the correct order when priorities
+         were specified (STR #4326)
+       - The D-BUS notifier did not remove its lockfile (STR #4314)
+       - CUPS incorrectly used the USER environment variable when the name did
+         not match the user ID (STR #4327)
+
+
+CHANGES IN CUPS V1.7.0
+
+       - Updated the Japanese localization.
+       - The lpadmin command did not send the PPD name from the "-m" option
+         (<rdar://problem/15264697>)
+       - Network backends now use the prtMarkerSuppliesClass property to
+         determine the direction of supply level values
+         (<rdar://problem/14302628>)
+       - The scheduler did not remove backup PPD files when a printer was
+         deleted (<rdar://problem/15065555>)
+       - The scheduler incorrectly responded to HEAD requests when the web
+         interface was disabled (<rdar://problem/15090332>)
+       - The scheduler did not respond using the hostname specified by the
+         client (<rdar://problem/14583574>)
+       - Fax queues did not work when shared via Bonjour
+         (<rdar://problem/14498310>)
+       - Error messages from the scheduler were not localized using the
+         language specified in the client's IPP request
+         (<rdar://problem/14128011>)
+       - Added an Italian localization (<rdar://problem/14481578>)
+       - Fixed a couple memory leaks in ippfind that were reported by Clang.
+       - Fixed a compile issue on 64-bit Linux with Clang - need to use the
+         -pie option instead of -Wl,-pie now (<rdar://problem/14480938>)
+       - The ippfind utility reported the wrong port numbers when compiled
+         against Avahi (<rdar://problem/14508324>)
+       - httpGetFd, httpGetFile, httpPutFd, and httpPutFile did not
+         automatically reconnect if the server closed the connecion after the
+         previous response.
+       - Fixed a compile error in libcups (<rdar://problem/14467141>)
+       - The scheduler incorrectly did not pass a FINAL_CONTENT_TYPE
+         environment variable to the filters or backend
+         (<rdar://problem/14355011>)
+       - The cups-exec helper program could fail randomly on OS X due to
+         sandbox violations when closing excess file descriptors
+         (<rdar://problem/14421943>)
+       - The scheduler incorrectly did not use the kqueue interface on OS X.
+
+
+CHANGES IN CUPS V1.7rc1
+
+       - Printer xxx-default values were not reported by Get-Printer-Attributes
+         or lpoptions (<rdar://problem/14401795>)
+       - Fixed deprecation warnings for many functions on OS X so they are tied
+         to the deployment version when building (<rdar://problem/14210079>)
+       - Fixed a build issue on ARM-based Linux systems - unable to validate
+         va_list arguments.
+       - Added a new ippfind tool for finding IPP printers and other Bonjour
+         services (<rdar://problem/13876199>)
+       - Fixed some issues with conversion of PWG media size names to
+         hundredths of millimeters (<rdar://problem/14065748>)
+       - The IPP backend could crash on OS X when printing to a Kerberized
+         printer (<rdar://problem/14040186>)
+       - The ipptool program now automatically extends timeouts when the
+         output buffer is filled (<rdar://problem/14016099>)
+       - The ipptool program now supports the --help and --version options.
+       - The ipptool program did not continue past include file errors by
+         default (<rdar://problem/13875803>)
+       - The ipptool program now supports FILE-ID and TEST-ID directives and
+         includes their values in its XML output (<rdar://problem/13876038>)
+       - The ipptool program now supports WITH-HOSTNAME, WITH-RESOURCE, and
+         WITH-SCHEME expect predicates to compare the corresponding URI
+         components (<rdar://problem/13876091>)
+
+
+CHANGES IN CUPS V1.7b1
+
+       - The configure script now supports a --with-rundir option to change
+         the transient run-time state directory from the default to other
+         locations like /run/cups (STR #4306)
+       - The scheduler now supports PPD lookups for classes (STR #4296)
+       - The cupsfilter program did not set the FINAL_CONTENT_TYPE
+         environment variable for filters.
+       - Added a new "-x" option to the cancel command (STR #4103)
+       - Made the PWG media handling APIs public (STR #4267)
+       - Implemented ready media support for the cupsGetDestMediaXxx APIs
+         (STR #4289)
+       - Added new cupsFindDestDefault, cupsFindDestReady, and
+         cupsFindDestSupported APIs (STR #4289)
+       - Added new cupsGetDestMediaByIndex, cupsGetDestMediaCount, and
+         cupsGetDestMediaDefault APIs (STR #4289)
+       - Added new ippGet/SetOctetString APIs for getting and setting an
+         octetString value (STR #4289)
+       - Added new ippCreateRequestedArray API for generating a array of
+         attributes from the requested-attributes attribute.
+       - The ipptool utility now supports compression, conditional tests based
+         on the presence of files, and new DEFINE predicates for STATUS.
+       - Added new IPP APIs for checking values (STR #4167)
+       - Added new IPP APis for adding and setting formatted strings.
+       - Added new HTTP APIs to support basic server functionality via libcups.
+       - The dnssd backend now generates a 1284 device ID as needed (STR #3702)
+       - CUPS now supports compressing and decompressing streamed data
+         (STR #4168)
+       - CUPS now supports higher-level PIN printing, external accounting
+         systems, and "print here" printing environments (STR #4169)
+       - IRIX is no longer a supported operating system (STR #4092)
+       - The PPD compiler now supports JCL options properly (STR #4115)
+       - The web interface now checks whether the web browser has cookies
+         enabled and displays a suitable error message (STR #4141)
index cc42e2b0f8bc64b3e62fb024a5d11d5237b947b2..c96addbde51cbfa72e1d0e1b1466841c79d74dca 100644 (file)
@@ -1,12 +1,13 @@
-CHANGES-IPPTOOL.txt - 2014-03-28
+CHANGES-IPPTOOL.txt - 2015-05-15
 --------------------------------
 
 This file provides a list of changes to the ipptool binary distribution posted
-on cups.org.
+on CUPS.org.
 
-2014-03-28
+2014-05-15
 
-       - Fixed SSL support on Windows (STR #4358)
+       - Added support for simultaneous XML and test output from ipptool.
+       - Added support for PAUSE directive in ipptool test files.
 
 
 2013-07-15
index d05ce49e61e3c737d53a17557e521dfef5aa78bd..eb812c4d7fa8e51c9c9688640577266de4664286 100644 (file)
-CHANGES.txt - 1.7.5 - 2014-07-30
+CHANGES.txt - 2.0b1 - 2014-07-30
 --------------------------------
 
-CHANGES IN CUPS V1.7.5
-
-       - Security: Addressed some more situations where symlinked files would
-         be served by the web interface (STR #4455)
-       - The LPD backend did not work with some versions of glibc (STR #4452)
-       - CGI scripts did not work (STR #4454)
-       - The cupsd.conf man page did not list the ErrorPolicy directive
-         (STR #4457)
-       - Updated the Brazilian Portuguese translation (STR #4456)
-
-
-CHANGES IN CUPS V1.7.4
-
-       - Security: The web interface incorrectly served symlinked files and
-         files that were not world-readable, potentially leading to a
-         disclosure of information (STR #4450)
-       - The CUPS headers incorrectly needed libdispatch for blocks support
-         (STR #4397)
-       - CUPS did not compile when Avahi or mDNSResponder was not present
-         (STR #4402, STR #4424)
-       - The "snmp" option did not work with the network backends (STR #4422)
-       - The User directive in client.conf did not override the USER
-         environment variable (STR #4426)
-       - The web interface now properly shows a "Go" button for all text-based
-         browsers (STR #4425)
-       - The MaxJobTime directive now properly supports time values (STR #4434)
-       - The RPM spec file did not work due to the new Brazilian Portuguese
-         localization (STR #4436)
-       - Fixed an "IPP read error" issue (STR #4440)
-       - Fixed the --disable-libusb configure option (STR #4439)
-       - Fixed the debug output from the DNS-SD backend when using Avahi
-         (STR #4444)
-       - Fixed a bug in the CUPS_SC_GET_DEVICE_ID handling by the network
-         backends (STR #4447)
-       - Added USB quirk rule for Lexmark E230 (STR #4448)
-
-
-CHANGES IN CUPS V1.7.3
-
-       - Added Brazilian Portuguese translation (STR #4409)
-       - Fixed mapping of OutputBin values such as "Tray1"
-         (<rdar://problem/16685606>)
-       - Several ippGet* functions incorrectly returned -1 instead of 0 on
-         error.
-       - The cupsGetResponse function did not work properly with
-         CUPS_HTTP_DEFAULT (<rdar://problem/16762593>)
-       - The IPP backend did not abort a job when the printer did not validate
-         the supplied options (<rdar://problem/16836752>)
-       - Fixed an authentication race condition in cupsSendRequest (STR #4403)
-       - The scheduler did not add the "job-hold-until-specified" reason when
-         holding a job using the lp command (STR #4405)
-       - The configure script incorrectly added libgcrypt as a GNU TLS
-         dependency (STR #4399)
-       - cupsGetDestMediaCount did not work for CUPS_MEDIA_FLAGS DEFAULT
-         (STR #4414)
-       - Auto-typing of PWG Raster files did not work (STR #4417)
-       - IPP queues using hardcoded credentials would ask for credentials
-         (STR #4371)
-       - Dates in non-UTF-8 locales did not display correctly (STR #4388)
-       - The RPM spec file now looks for libusb-devel 1.0 or later.
-       - Fixed the "create-printer-subscription.test" file for IPPTOOL
-         (STR #4420)
-
-
-CHANGES IN CUPS V1.7.2
-
-       - Security: The scheduler now blocks URLs containing embedded HTML
-         (STR #4356)
-       - Documentation fixes (STR #3259, STR #4346, STR #4355)
-       - Fixed the Japanese localization (STR #4385)
-       - Added a German localization (STR #4363)
-       - The cupsfilter command incorrectly read the cupsd.conf file; it now
-         reads the cups-files.conf file instead.
-       - Fixed OS X builds with Xcode 5.x (<rdar://problem/15914959>)
-       - Fixed SSL support on Windows (STR #4358)
-       - Fixed documentation and naming of Create-Job/Printer-Subscriptions
-         operations (STR #4389)
-       - Phone numbers in fax jobs were not properly filtered for IPP FaxOut
-         (<rdar://problem/16351701>)
-       - Fixed a memory leak in the label printer driver (STR #4393)
-       - Updated Linux "relro" support (STR #4349)
-       - cupsEnumDests did not set the "is_default" field (STR #4332)
-       - cupsDoIORequest could miss the server status, causing failed lpadmin
-         and other administrative commands (STR #4386)
-       - cupsEnumDests didn't always call the callback function (STR #4380)
-       - "lp -i job-id -H hold" did not work (STR #4401)
-       - CUPS didn't compile on older platforms (STR #4338)
-       - Several libcups files did not have the Apple license exception
-         notice (STR #4361)
-       - Fixed a D-BUS threading issue that caused the scheduler to crash
-         (STR #4347)
-       - The scheduler now automatically reconnects to Avahi as needed
-         (STR #4370, STR #4373)
-       - The scheduler did not handle GET requests for the log files properly
-         (STR #3265)
-       - The dnssd backend did not always report all discovered printers using
-         Avahi (STR #4365)
-       - The Zebra printer driver did not properly handle negative "label top"
-         values (STR #4354)
-       - The scheduler did not always update the MakeModel value in
-         printers.conf after updating the driver (STR #4264)
-       - The LPD mini daemon did not support print jobs larger than 2GB
-         (STR #4351)
-       - Fixed a bug in the status reading code when sending a compressed data
-         stream to an IPP printer/server (<rdar://problem/16019623>)
-       - The IPP backend might not include all job attributes in Validate-Job
-         operations (<rdar://problem/16025435>)
-       - Fixed some clang-reported issues (<rdar://problem/15936066>)
-
-
-CHANGES IN CUPS V1.7.1
-
-       - Security: the lppasswd program incorrectly used settings from
-         ~/.cups/client.conf (STR #4319)
-       - Auto debug logging was broken in 1.7.0 (<rdar://problem/15331639>)
-       - Some gzip'd PPD files could not be used (<rdar://problem/15386424>)
-       - Cleaned up some job logging in the scheduler
-         (<rdar://problem/15332672>)
-       - ATTR messages could cause string pool memory corruption in the
-         scheduler (<rdar://problem/15382819>)
-       - The RPM spec file did not list the build requirements; this was on
-         purpose, but now we are listing the Red Hat package names
-         (<rdar://problem/15375760>, STR #4322)
-       - Printing to a raw queue could result in corrupt output due to
-         opportunistic compression (<rdar://problem/15008524>)
-       - The GNU TLS support code triggered many compiler warnings due to the
-         use of old GNU TLS compatibility type names
-         (<rdar://problem/15392966>)
-       - The "make check" test suite did not work on Linux without the
-         cups-filters package installed (<rdar://problem/14292998>)
-       - Japanese PPDs using with the Shift-JIS encoding did not work
-         (<rdar://problem/15427759>)
-       - "tel:" URIs incorrectly had slashes (<rdar://problem/15418463>)
-       - The libusb-based USB backend incorrectly used write timeouts
-         (<rdar://problem/15564888>)
-       - Shared printers could become inaccessible after a few days on OS X
-         (<rdar://problem/15426838>)
-       - The IPP backend did not wait for a busy printer to become available
-         before attempting to print (<rdar://problem/15465667>)
-       - CUPS did not support "auto-monochrome" or "process-monochrome" for the
-         "print-color-mode" option (<rdar://problem/15482520>)
-       - Using "@IF(name)" in an Allow or Deny rule did not work (STR #4328)
-       - lpq and lpstat did not list jobs in the correct order when priorities
-         were specified (STR #4326)
-       - The D-BUS notifier did not remove its lockfile (STR #4314)
-       - CUPS incorrectly used the USER environment variable when the name did
-         not match the user ID (STR #4327)
-
-
-CHANGES IN CUPS V1.7.0
-
-       - Updated Japanese localization.
-       - The lpadmin command did not send the PPD name from the "-m" option
-         (<rdar://problem/15264697>)
-       - Network backends now use the prtMarkerSuppliesClass property to
-         determine the direction of supply level values
-         (<rdar://problem/14302628>)
-       - The scheduler did not remove backup PPD files when a printer was
-         deleted (<rdar://problem/15065555>)
-       - The scheduler incorrectly responded to HEAD requests when the web
-         interface was disabled (<rdar://problem/15090332>)
-       - The scheduler did not respond using the hostname specified by the
-         client (<rdar://problem/14583574>)
-       - Fax queues did not work when shared via Bonjour
-         (<rdar://problem/14498310>)
-       - Error messages from the scheduler were not localized using the
-         language specified in the client's IPP request
-         (<rdar://problem/14128011>)
-       - Added an Italian localization (<rdar://problem/14481578>)
-       - Fixed a couple memory leaks in ippfind that were reported by Clang.
-       - Fixed a compile issue on 64-bit Linux with Clang - need to use the
-         -pie option instead of -Wl,-pie now (<rdar://problem/14480938>)
-       - The ippfind utility reported the wrong port numbers when compiled
-         against Avahi (<rdar://problem/14508324>)
-       - httpGetFd, httpGetFile, httpPutFd, and httpPutFile did not
-         automatically reconnect if the server closed the connecion after the
-         previous response.
-       - Fixed a compile error in libcups (<rdar://problem/14467141>)
-       - The scheduler incorrectly did not pass a FINAL_CONTENT_TYPE
-         environment variable to the filters or backend
-         (<rdar://problem/14355011>)
-       - The cups-exec helper program could fail randomly on OS X due to
-         sandbox violations when closing excess file descriptors
-         (<rdar://problem/14421943>)
-       - The scheduler incorrectly did not use the kqueue interface on OS X.
-
-
-CHANGES IN CUPS V1.7rc1
-
-       - Printer xxx-default values were not reported by Get-Printer-Attributes
-         or lpoptions (<rdar://problem/14401795>)
-       - Fixed deprecation warnings for many functions on OS X so they are tied
-         to the deployment version when building (<rdar://problem/14210079>)
-       - Fixed a build issue on ARM-based Linux systems - unable to validate
-         va_list arguments.
-       - Added a new ippfind tool for finding IPP printers and other Bonjour
-         services (<rdar://problem/13876199>)
-       - Fixed some issues with conversion of PWG media size names to
-         hundredths of millimeters (<rdar://problem/14065748>)
-       - The IPP backend could crash on OS X when printing to a Kerberized
-         printer (<rdar://problem/14040186>)
-       - The ipptool program now automatically extends timeouts when the
-         output buffer is filled (<rdar://problem/14016099>)
-       - The ipptool program now supports the --help and --version options.
-       - The ipptool program did not continue past include file errors by
-         default (<rdar://problem/13875803>)
-       - The ipptool program now supports FILE-ID and TEST-ID directives and
-         includes their values in its XML output (<rdar://problem/13876038>)
-       - The ipptool program now supports WITH-HOSTNAME, WITH-RESOURCE, and
-         WITH-SCHEME expect predicates to compare the corresponding URI
-         components (<rdar://problem/13876091>)
-
-
-CHANGES IN CUPS V1.7b1
-
-       - The configure script now supports a --with-rundir option to change
-         the transient run-time state directory from the default to other
-         locations like /run/cups (STR #4306)
-       - The scheduler now supports PPD lookups for classes (STR #4296)
-       - The cupsfilter program did not set the FINAL_CONTENT_TYPE
-         environment variable for filters.
-       - Added a new "-x" option to the cancel command (STR #4103)
-       - Made the PWG media handling APIs public (STR #4267)
-       - Implemented ready media support for the cupsGetDestMediaXxx APIs
-         (STR #4289)
-       - Added new cupsFindDestDefault, cupsFindDestReady, and
-         cupsFindDestSupported APIs (STR #4289)
-       - Added new cupsGetDestMediaByIndex, cupsGetDestMediaCount, and
-         cupsGetDestMediaDefault APIs (STR #4289)
-       - Added new ippGet/SetOctetString APIs for getting and setting an
-         octetString value (STR #4289)
-       - Added new ippCreateRequestedArray API for generating a array of
-         attributes from the requested-attributes attribute.
-       - The ipptool utility now supports compression, conditional tests based
-         on the presence of files, and new DEFINE predicates for STATUS.
-       - Added new IPP APIs for checking values (STR #4167)
-       - Added new IPP APis for adding and setting formatted strings.
-       - Added new HTTP APIs to support basic server functionality via libcups.
-       - The dnssd backend now generates a 1284 device ID as needed (STR #3702)
-       - CUPS now supports compressing and decompressing streamed data
-         (STR #4168)
-       - CUPS now supports higher-level PIN printing, external accounting
-         systems, and "print here" printing environments (STR #4169)
-       - IRIX is no longer a supported operating system (STR #4092)
-       - The PPD compiler now supports JCL options properly (STR #4115)
-       - The web interface now checks whether the web browser has cookies
-         enabled and displays a suitable error message (STR #4141)
+CHANGES IN CUPS V2.0b1
+
+       - Added a "--list-filters" option to the cupsfilter command (STR #4325)
+        - Added systemd support (STR #3917)
+       - Added support for re-sending a job as a raster file if a higher-level
+         format such as PDF fails (<rdar://problem/15583721>)
+       - Added support for regular expression matching in the MIME type rules
+         (<rdar://problem/11131245>)
+       - Added support for TLS certificate validation and policy enforcement
+         (STR #1616)
+       - Added support for simultaneous XML and test output from ipptool.
+       - Added support for PAUSE directive in ipptool test files.
+       - Added support for auto-typing of TIFF files by ipptool (STR #4418)
+       - The scheduler now returns completed jobs in the correct newest-to-
+         oldest order (STR #4396)
+       - The configure script now supports target-specific tools for pkg-config
+         and others (STR #4423)
+       - The ipptool program now supports EXPECT statements for collection
+         member attributes (<rdar://problem/15355218>)
+       - The ipptool program now supports collection attributes with multiple
+         values (<rdar://problem/15355124>)
+       - The sample drivers now include all of the installed localizations by
+         default (<rdar://problem/14756625>)
+       - Adopted Linux man page conventions and updated all man pages
+         (STR #4372, STR #4329)
+       - The scheduler now supports the "first-index" operation attribute for
+         the Get-Jobs operation (STR #2913)
+       - Changed the default AccessLogLevel and PageLogFormat to disable the
+         access_log and page_log files by default (<rdar://problem/16495000>)
+       - cupsRasterInterpretPPD now supports the Orientation header in order to
+         support long-edge feed raster printers (<rdar://problem/15837926>)
+       - The scheduler now allows run-as-root backends to have group read and
+         execute permissions (STR #2935)
+       - The ippFindAttribute and ippFindNextAttribute functions now support
+         hierarchical searches (STR #4395)
+       - Dropped OpenSSL support in favor of GNU TLS.
+       - Dropped "dark wake" support on OS X, which was preventing portables
+         from going to sleep when there was a stuck job. We now use a variation
+         of the CUPS 1.4 sleep support to do a cleaner sleep
+         (<rdar://problem/14323704>)
+       - Dropped support for AIX, HP-UX, and OSF/1 (aka Digital UNIX)
+       - Dropped lppasswd and support for Digest authentication in in the
+         scheduler (STR #4321)
+       - The cupsGetClasses, cupsGetPrinters, and cupsTempFile functions are no
+         longer supported.
+       - The scheduler now caches more job history data and limits the number
+         of completed jobs returned by Get-Jobs as needed in order to prevent a
+         denial-of-service on busy servers (STR #2913)
+       - The filter/backend sandbox on OS X now defaults to a more strict
+         whitelist (<rdar://problem/15939788>)
+       - Increased the default idle exit timeout to 60 seconds on OS X
+         (<rdar://problem/16041820>)
+       - Printer classes were not accessible on OS X
+         (<rdar://problem/16385643>)
+       - The scheduler now uses </DefaultPrinter> to close the default printer
+         definition in printers.conf (STR #4153)
+       - Canceling all jobs in the web interface now just cancels the jobs
+         (STR #1914)
index 26cb7c03ca66d321cd9eaf57867d595cd72bc2f1..feeafe7c2ddcd8c74bffc40ab8d8f7b3b1226f10 100644 (file)
@@ -1,4 +1,4 @@
-INSTALL - CUPS v1.7.5 - 2014-07-30
+INSTALL - CUPS v2.0b1 - 2014-07-30
 ----------------------------------
 
 This file describes how to compile and install CUPS from source code. For more
index f8a008befa012150c52af98979261ed8156cb287..2293a45e2974ba867c1d7091338ecd345d52ea5a 100644 (file)
@@ -1,4 +1,4 @@
-IPPTOOL.txt - 2014-04-10
+IPPTOOL.txt - 2013-07-15
 ------------------------
 
 See the file CHANGES-IPPTOOL.txt for a list of changes to this software.
@@ -220,7 +220,7 @@ REPORTING BUGS
 
 LEGAL STUFF
 
-    CUPS is Copyright 2007-2014 by Apple Inc.  CUPS and the CUPS logo are
+    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.
index 75c4a376f195b555fc4d998bc4c1001b2525902a..658ea1e461fc0b0ce7d9d9f63261965a77d65cc3 100644 (file)
@@ -1,6 +1,6 @@
                           CUPS License Agreement
 
-                     Copyright 2007-2012 by Apple Inc.
+                     Copyright 2007-2013 by Apple Inc.
                             1 Infinite Loop
                          Cupertino, CA 95014 USA
 
@@ -10,9 +10,9 @@
 INTRODUCTION
 
 CUPS(tm) 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.
+and GNU Library General Public License ("LGPL"), Version 2, with an
+exception for Apple operating systems. A copy of the exception and
+licenses follow this introduction.
 
 The GNU LGPL applies to the CUPS and CUPS Imaging libraries
 located in the "cups" and "filter" subdirectories of the CUPS
@@ -45,7 +45,7 @@ application, driver, or filter.
 LICENSE EXCEPTIONS
 
 In addition, as the copyright holder of CUPS, Apple Inc. grants
-the following special exceptions:
+the following special exception:
 
      1. Apple Operating System Development License Exception;
 
@@ -86,14 +86,8 @@ the following special exceptions:
             This file is subject to the Apple OS-Developed
             Software exception.
 
-     2. OpenSSL Toolkit License Exception;
-
-       a. Apple Inc. explicitly allows the compilation and
-          distribution of the CUPS software with the OpenSSL
-          Toolkit.
-
-No developer is required to provide these exceptions in a
-derived work.
+No developer is required to provide this exception in a derived
+work.
 
 
 KERBEROS SUPPORT CODE
index 6d25b41cbdad79897a09a45547bdd02a075ae2ba..f9c275f3c48216ec9dbc3af2b3436df5f4a01593 100644 (file)
@@ -1,16 +1,16 @@
 #
-# "$Id: Makedefs.in 11154 2013-07-17 15:21:18Z msweet $"
+# "$Id: Makedefs.in 11716 2014-03-21 14:50:24Z msweet $"
 #
-#   Common makefile definitions for CUPS.
+# Common makefile definitions for CUPS.
 #
-#   Copyright 2007-2013 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/".
 #
 
 #
@@ -121,9 +121,9 @@ INSTALLXPC  =       @INSTALLXPC@
 #
 
 ALL_CFLAGS     =       -I.. -D_CUPS_SOURCE $(CFLAGS) $(SSLFLAGS) \
-                       @LARGEFILE@ @PTHREAD_FLAGS@ $(OPTIONS)
+                       @LARGEFILE@ @PTHREAD_FLAGS@ $(ONDEMANDFLAGS) $(OPTIONS)
 ALL_CXXFLAGS   =       -I.. -D_CUPS_SOURCE $(CXXFLAGS) $(SSLFLAGS) \
-                       @LARGEFILE@ @PTHREAD_FLAGS@ $(OPTIONS)
+                       @LARGEFILE@ @PTHREAD_FLAGS@ $(ONDEMANDFLAGS) $(OPTIONS)
 ARCHFLAGS      =       @ARCHFLAGS@
 ARFLAGS                =       @ARFLAGS@
 BACKLIBS       =       @BACKLIBS@
@@ -140,13 +140,14 @@ DSOLIBS           =       @DSOLIBS@ $(COMMONLIBS)
 DNSSDLIBS      =       @DNSSDLIBS@
 IPPFIND_BIN    =       @IPPFIND_BIN@
 IPPFIND_MAN    =       @IPPFIND_MAN@
-LAUNCHDLIBS    =       @LAUNCHDLIBS@
 LDFLAGS                =       -L../cgi-bin -L../cups -L../filter -L../ppdc \
                        -L../scheduler @LDARCHFLAGS@ \
                        @LDFLAGS@ @RELROFLAGS@ @PIEFLAGS@ $(OPTIM)
-LINKCUPS       =       @LINKCUPS@ $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(LIBZ)
+LINKCUPS       =       @LINKCUPS@ $(LIBGSSAPI) $(DNSSDLIBS) $(LIBZ)
 LINKCUPSIMAGE  =       @LINKCUPSIMAGE@
 LIBS           =       $(LINKCUPS) $(COMMONLIBS)
+ONDEMANDFLAGS  =       @ONDEMANDFLAGS@
+ONDEMANDLIBS   =       @ONDEMANDLIBS@
 OPTIM          =       @OPTIM@
 OPTIONS                =
 PAMLIBS                =       @PAMLIBS@
@@ -200,8 +201,6 @@ DATADIR             =       $(BUILDROOT)@CUPS_DATADIR@
 DOCDIR         =       $(BUILDROOT)@CUPS_DOCROOT@
 ICONDIR                =       @ICONDIR@
 INCLUDEDIR     =       $(BUILDROOT)$(includedir)
-INITDIR                =       @INITDIR@
-INITDDIR       =       @INITDDIR@
 LIBDIR         =       $(BUILDROOT)$(libdir)
 LOCALEDIR      =       $(BUILDROOT)@CUPS_LOCALEDIR@
 LOGDIR         =       $(BUILDROOT)@CUPS_LOGDIR@
@@ -216,10 +215,7 @@ REQUESTS   =       $(BUILDROOT)@CUPS_REQUESTS@
 SBINDIR                =       $(BUILDROOT)@sbindir@
 SERVERBIN      =       $(BUILDROOT)@CUPS_SERVERBIN@
 SERVERROOT     =       $(BUILDROOT)@CUPS_SERVERROOT@
-SMFMANIFESTDIR =       @SMFMANIFESTDIR@
 STATEDIR       =       $(BUILDROOT)@CUPS_STATEDIR@
-USBQUIRKS      =       @USBQUIRKS@
-XINETD         =       @XINETD@
 
 MAN1EXT                =       @MAN1EXT@
 MAN5EXT                =       @MAN5EXT@
@@ -230,8 +226,15 @@ MAN8DIR            =       @MAN8DIR@
 PAMDIR         =       @PAMDIR@
 PAMFILE                =       @PAMFILE@
 
-DEFAULT_LAUNCHD_CONF = @DEFAULT_LAUNCHD_CONF@
 DBUSDIR                =       @DBUSDIR@
+INITDIR                =       @INITDIR@
+INITDDIR       =       @INITDDIR@
+LAUNCHD_DIR    =       @LAUNCHD_DIR@
+SMFMANIFESTDIR =       @SMFMANIFESTDIR@
+SYSTEMD_DIR    =       @SYSTEMD_DIR@
+XINETD         =       @XINETD@
+
+USBQUIRKS      =       @USBQUIRKS@
 
 
 #
@@ -261,5 +264,5 @@ DBUSDIR             =       @DBUSDIR@
 
 
 #
-# End of "$Id: Makedefs.in 11154 2013-07-17 15:21:18Z msweet $"
+# End of "$Id: Makedefs.in 11716 2014-03-21 14:50:24Z msweet $"
 #
index 199d0a0b37b1a2279cf8c27c148c9a0eae447a3b..79e46a3aa344078e5ce6eba180631a39102ffb19 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,16 +1,16 @@
 #
-# "$Id: Makefile 11370 2013-10-30 15:08:29Z msweet $"
+# "$Id: Makefile 12074 2014-07-31 01:10:14Z msweet $"
 #
-#   Top-level Makefile for CUPS.
+# Top-level Makefile for CUPS.
 #
-#   Copyright 2007-2013 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/".
 #
 
 include Makedefs
@@ -98,22 +98,18 @@ clean:
 
 distclean:     clean
        $(RM) Makedefs config.h config.log config.status
+       $(RM) conf/cups-files.conf conf/cupsd.conf conf/mime.convs conf/pam.std conf/snmp.conf
        $(RM) cups-config
-       $(RM) conf/cupsd.conf conf/mime.convs conf/pam.std conf/snmp.conf
-       $(RM) doc/help/ref-cupsd-conf.html doc/help/standard.html doc/index.html
-       $(RM) man/client.conf.man
-       $(RM) man/cups-deviced.man man/cups-driverd.man
-       $(RM) man/cups-lpd.man man/cupsaddsmb.man man/cupsd.man
-       $(RM) man/cupsd.conf.man man/drv.man man/lpoptions.man
+       $(RM) data/testprint
+       $(RM) desktop/cups.desktop
+       $(RM) doc/index.html
+       $(RM) man/client.conf.man man/cups-files.conf.man man/cups-lpd.man man/cups-snmp.man man/cupsaddsmb.man man/cupsd.conf.man man/cupsd.man man/lpoptions.man
        $(RM) packaging/cups.list
-       $(RM) packaging/cups-desc.plist packaging/cups-info.plist
+       $(RM) scheduler/cups-lpd.xinetd scheduler/cups.sh scheduler/cups.xml scheduler/org.cups.cups-lpd.plist scheduler/org.cups.cupsd.path scheduler/org.cups.cupsd.service scheduler/org.cups.cupsd.socket
        $(RM) templates/header.tmpl
-       $(RM) desktop/cups.desktop
-       $(RM) scheduler/cups.sh scheduler/cups-lpd.xinetd
-       $(RM) scheduler/org.cups.cups-lpd.plist scheduler/cups.xml
        -$(RM) doc/*/index.html
        -$(RM) templates/*/header.tmpl
-       -$(RM) -r autom4te*.cache clang cups/charmaps cups/locale driver/test
+       -$(RM) -r autom4te*.cache clang cups/charmaps cups/locale
 
 
 #
@@ -323,7 +319,7 @@ sloc:
 
 EPMFLAGS       =       -v --output-dir dist $(EPMARCH)
 
-aix bsd deb depot inst pkg setld slackware swinstall tardist:
+bsd deb pkg slackware tardist:
        epm $(EPMFLAGS) -f $@ cups packaging/cups.list
 
 epm:
@@ -352,5 +348,5 @@ dist:       all
 
 
 #
-# End of "$Id: Makefile 11370 2013-10-30 15:08:29Z msweet $".
+# End of "$Id: Makefile 12074 2014-07-31 01:10:14Z msweet $".
 #
index de91fe8a8f0eecab5bfdf4c259cf5110d52b8e5c..2f5722c1fc1c7b49449eb475642902a7a8d2f680 100644 (file)
@@ -1,6 +1,19 @@
-README - CUPS v1.7.5 - 2014-07-30
+README - CUPS v2.0b1 - 2014-07-30
 ---------------------------------
 
+********************************************************************************
+********************************************************************************
+********                                                                ********
+********                                                                ********
+********    THIS IS BETA-RELEASE SOFTWARE AND SHOULD NOT BE USED ON    ********
+********    PRODUCTION SYSTEMS.                                         ********
+********                                                                ********
+********                                                                ********
+********************************************************************************
+********************************************************************************
+
+
+
 Looking for compile instructions?  Read the file "INSTALL.txt" instead...
 
 
index eeb231a2e716202b8b839ef9beb12b56377e30a6..2d6e7eb0326e4684109481d4df2b66dcc917c012 100644 (file)
@@ -1,70 +1,77 @@
 ipp.o: ipp.c backend-private.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h \
-  ../cups/array-private.h
-lpd.o: lpd.c ../cups/http-private.h ../config.h ../cups/http.h \
-  ../cups/versioning.h ../cups/array.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/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.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
+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
 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/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.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
 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/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.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/http.h \
-  ../cups/versioning.h ../cups/array.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/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.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
+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
 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/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.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
 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/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
   ../cups/sidechannel.h
 testsupplies.o: testsupplies.c backend-private.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.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.o: usb.c backend-private.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.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/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
index ec17c0a1342307913b32042a39c54713dfd2e5fa..61a2ce80d92736e0aa9999f826b40443bbc3b51f 100644 (file)
@@ -1,9 +1,9 @@
 #
-# "$Id: Makefile 11154 2013-07-17 15:21:18Z msweet $"
+# "$Id: Makefile 11859 2014-05-08 22:42:44Z msweet $"
 #
 #   Backend makefile for CUPS.
 #
-#   Copyright 2007-2013 by Apple Inc.
+#   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
@@ -23,8 +23,8 @@ include ../Makedefs
 
 # RBACKENDS are installed mode 0700 so cupsd will run them as root...
 #
-# UBACKENDS are installed mode 0755 so cupsd will run them as an unprivileged
-# user...
+# UBACKENDS and ULBACKENDS are installed mode 0755 so cupsd will run them as
+# an unprivileged user...
 #
 # See http://www.cups.org/documentation.php/api-filter.html for more info...
 RBACKENDS =    \
@@ -33,7 +33,8 @@ RBACKENDS =   \
                $(DNSSD_BACKEND)
 UBACKENDS =    \
                snmp \
-               socket \
+               socket
+ULBACKENDS =   \
                usb
 UNITTESTS =    \
                test1284 \
@@ -42,7 +43,8 @@ UNITTESTS =   \
 TARGETS =      \
                libbackend.a \
                $(RBACKENDS) \
-               $(UBACKENDS)
+               $(UBACKENDS) \
+               $(ULBACKENDS)
 LIBOBJS        =       \
                ieee1284.o \
                network.o \
@@ -71,7 +73,7 @@ all:  $(TARGETS)
 # Make library targets...
 #
 
-libs:
+libs:  $(ULBACKENDS)
 
 
 #
@@ -167,6 +169,18 @@ install-headers:
 #
 
 install-libs:
+       echo Installing backends in $(SERVERBIN)/backend
+       $(INSTALL_DIR) -m 755 $(SERVERBIN)/backend
+       for file in $(ULBACKENDS); do \
+               $(INSTALL_BIN) $$file $(SERVERBIN)/backend; \
+       done
+       if test "x$(SYMROOT)" != "x"; then \
+               $(INSTALL_DIR) $(SYMROOT); \
+               for file in $(ULBACKENDS); do \
+                       cp $$file $(SYMROOT); \
+                       dsymutil $(SYMROOT)/$$file; \
+               done \
+       fi
 
 
 #
@@ -179,7 +193,7 @@ uninstall:
                $(RM) $(SERVERBIN)/apple/$$file; \
        done
        -$(RMDIR) $(SERVERBIN)/apple
-       for file in $(RBACKENDS) $(UBACKENDS); do \
+       for file in $(RBACKENDS) $(UBACKENDS) $(ULBACKENDS); do \
                $(RM) $(SERVERBIN)/backend/$$file; \
        done
        for file in $(IPPALIASES); do \
@@ -301,5 +315,5 @@ include Dependencies
 
 
 #
-# End of "$Id: Makefile 11154 2013-07-17 15:21:18Z msweet $".
+# End of "$Id: Makefile 11859 2014-05-08 22:42:44Z msweet $".
 #
index 09e4bac4e6ef67342c3bfc587e0f38f035493248..2ad3d485c6cde84d47e14a05d5ab7004d7ca029c 100644 (file)
@@ -1,18 +1,18 @@
 /*
- * "$Id: backend-private.h 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: backend-private.h 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Backend support definitions for CUPS.
+ * Backend support definitions for CUPS.
  *
- *   Copyright 2007-2012 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"
- *   "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.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 #ifndef _CUPS_BACKEND_PRIVATE_H_
@@ -313,7 +313,7 @@ extern int          backendGetDeviceID(int fd, char *device_id,
                                           int uri_size);
 extern int             backendGetMakeModel(const char *device_id,
                                            char *make_model,
-                                           int make_model_size);
+                                           size_t make_model_size);
 extern int             backendNetworkSideCB(int print_fd, int device_fd,
                                             int snmp_fd, http_addr_t *addr,
                                             int use_bc);
@@ -334,5 +334,5 @@ extern int          backendWaitLoop(int snmp_fd, http_addr_t *addr,
 
 
 /*
- * End of "$Id: backend-private.h 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: backend-private.h 11558 2014-02-06 18:33:34Z msweet $".
  */
index 742f9124c1a12903a483f996889c5cc13cf5918f..c8f3139a65a19ca34f8d22fc4f15c9c6efb50b89 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: dnssd.c 11971 2014-07-01 14:38:29Z msweet $"
+ * "$Id: dnssd.c 11969 2014-06-30 14:27:01Z msweet $"
  *
  * DNS-SD discovery backend for CUPS.
  *
@@ -61,7 +61,8 @@ typedef struct
                *domain,                /* Domain name */
                *fullName,              /* Full name */
                *make_and_model,        /* Make and model from TXT record */
-               *device_id;             /* 1284 device ID from TXT record */
+               *device_id,             /* 1284 device ID from TXT record */
+               *uuid;                  /* UUID from TXT record */
   cups_devtype_t type;                 /* Device registration type */
   int          priority,               /* Priority associated with type */
                cups_shared,            /* CUPS shared printer? */
@@ -122,7 +123,7 @@ static void         client_callback(AvahiClient *client,
 #endif /* HAVE_AVAHI */
 
 static int             compare_devices(cups_device_t *a, cups_device_t *b);
-static void            exec_backend(char **argv);
+static void            exec_backend(char **argv) __attribute__((noreturn));
 static cups_device_t   *get_device(cups_array_t *devices,
                                    const char *serviceName,
                                    const char *regtype,
@@ -499,9 +500,15 @@ main(int  argc,                            /* I - Number of command-line args */
           {
            unquote(uriName, best->fullName, sizeof(uriName));
 
-           httpAssembleURI(HTTP_URI_CODING_ALL, device_uri, sizeof(device_uri),
-                           "dnssd", NULL, uriName, 0,
-                           best->cups_shared ? "/cups" : "/");
+            if (best->uuid)
+             httpAssembleURIf(HTTP_URI_CODING_ALL, device_uri,
+                              sizeof(device_uri), "dnssd", NULL, uriName, 0,
+                              best->cups_shared ? "/cups?uuid=%s" : "/?uuid=%s",
+                              best->uuid);
+           else
+             httpAssembleURI(HTTP_URI_CODING_ALL, device_uri,
+                             sizeof(device_uri), "dnssd", NULL, uriName, 0,
+                             best->cups_shared ? "/cups" : "/");
 
            cupsBackendReport("network", device_uri, best->make_and_model,
                              best->name, best->device_id, NULL);
@@ -532,9 +539,15 @@ main(int  argc,                            /* I - Number of command-line args */
       {
        unquote(uriName, best->fullName, sizeof(uriName));
 
-       httpAssembleURI(HTTP_URI_CODING_ALL, device_uri, sizeof(device_uri),
-                       "dnssd", NULL, uriName, 0,
-                       best->cups_shared ? "/cups" : "/");
+       if (best->uuid)
+         httpAssembleURIf(HTTP_URI_CODING_ALL, device_uri,
+                          sizeof(device_uri), "dnssd", NULL, uriName, 0,
+                          best->cups_shared ? "/cups?uuid=%s" : "/?uuid=%s",
+                          best->uuid);
+       else
+         httpAssembleURI(HTTP_URI_CODING_ALL, device_uri,
+                         sizeof(device_uri), "dnssd", NULL, uriName, 0,
+                         best->cups_shared ? "/cups" : "/");
 
        cupsBackendReport("network", device_uri, best->make_and_model,
                          best->name, best->device_id, NULL);
@@ -817,8 +830,8 @@ exec_backend(char **argv)           /* I - Command-line arguments */
  * 'device_type()' - Get DNS-SD type enumeration from string.
  */
 
-static int
-device_type(const char *regtype)
+static cups_devtype_t                  /* O - Device type */
+device_type(const char *regtype)       /* I - Service registration type */
 {
 #ifdef HAVE_AVAHI
   if (!strcmp(regtype, "_ipp._tcp"))
@@ -909,9 +922,10 @@ get_device(cups_array_t *devices,  /* I - Device array */
   */
 
 #ifdef HAVE_DNSSD
-  fprintf(stderr, "DEBUG: Found \"%s.%s%s\"...\n", serviceName, regtype, replyDomain);
+  DNSServiceConstructFullName(fullName, serviceName, regtype, replyDomain);
 #else /* HAVE_AVAHI */
-  fprintf(stderr, "DEBUG: Found \"%s.%s.%s\"...\n", serviceName, regtype, replyDomain);
+  avahi_service_name_join(fullName, kDNSServiceMaxDomainName,
+                          serviceName, regtype, replyDomain);
 #endif /* HAVE_DNSSD */
 
   device           = calloc(sizeof(cups_device_t), 1);
@@ -1098,7 +1112,7 @@ query_callback(
     datanext = data + datalen;
 
     for (ptr = key; data < datanext && *data != '='; data ++)
-      *ptr++ = *data;
+      *ptr++ = (char)*data;
     *ptr = '\0';
 
     if (data < datanext && *data == '=')
@@ -1106,7 +1120,7 @@ query_callback(
       data ++;
 
       if (data < datanext)
-       memcpy(value, data, datanext - data);
+       memcpy(value, data, (size_t)(datanext - data));
       value[datanext - data] = '\0';
 
       fprintf(stderr, "DEBUG2: query_callback: \"%s=%s\".\n",
@@ -1126,8 +1140,7 @@ query_callback(
       */
 
       ptr = device_id + strlen(device_id);
-      snprintf(ptr, sizeof(device_id) - (ptr - device_id), "%s:%s;",
-              key + 4, value);
+      snprintf(ptr, sizeof(device_id) - (size_t)(ptr - device_id), "%s:%s;", key + 4, value);
     }
 
     if (!_cups_strcasecmp(key, "usb_MFG") || !_cups_strcasecmp(key, "usb_MANU") ||
@@ -1176,6 +1189,8 @@ query_callback(
       if (device->type == CUPS_DEVICE_PRINTER)
        device->sent = 1;
     }
+    else if (!_cups_strcasecmp(key, "UUID"))
+      device->uuid = strdup(value);
   }
 
   if (device->device_id)
@@ -1196,7 +1211,7 @@ query_callback(
       * Assume the first word is the make...
       */
 
-      memcpy(make_and_model, model, ptr - model);
+      memcpy(make_and_model, model, (size_t)(ptr - model));
       make_and_model[ptr - model] = '\0';
 
       snprintf(device_id, sizeof(device_id), "MFG:%s;MDL:%s",
@@ -1231,7 +1246,7 @@ query_callback(
       while (isalnum(*ptr & 255) || *ptr == '-' || *ptr == '.')
       {
         if (isalnum(*ptr & 255) && valptr < (value + sizeof(value) - 1))
-          *valptr++ = toupper(*ptr++ & 255);
+          *valptr++ = (char)toupper(*ptr++ & 255);
         else
           break;
       }
@@ -1240,8 +1255,7 @@ query_callback(
     }
 
     ptr = device_id + strlen(device_id);
-    snprintf(ptr, sizeof(device_id) - (ptr - device_id), "CMD:%s;",
-            value + 1);
+    snprintf(ptr, sizeof(device_id) - (size_t)(ptr - device_id), "CMD:%s;", value + 1);
   }
 
   if (device_id[0])
@@ -1316,5 +1330,5 @@ unquote(char       *dst,          /* I - Destination buffer */
 
 
 /*
- * End of "$Id: dnssd.c 11971 2014-07-01 14:38:29Z msweet $".
+ * End of "$Id: dnssd.c 11969 2014-06-30 14:27:01Z msweet $".
  */
index fc5ad1d09a81aaa4e3f896a3aa035b36772565cc..a2fc623fc3947fef514658ecd9efdeb5cf2eb99e 100644 (file)
@@ -1,24 +1,18 @@
 /*
- * "$Id: ieee1284.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: ieee1284.c 11594 2014-02-14 20:09:01Z msweet $"
  *
- *   IEEE-1284 support functions for CUPS.
+ * IEEE-1284 support functions for CUPS.
  *
- *   Copyright 2007-2011 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"
- *   "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:
- *
- *   backendGetDeviceID()  - Get the IEEE-1284 device ID string and
- *                           corresponding URI.
- *   backendGetMakeModel() - Get the make and model string from the device ID.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -26,7 +20,6 @@
  */
 
 #include "backend-private.h"
-#include <cups/cups-private.h>
 
 
 /*
@@ -148,8 +141,7 @@ backendGetDeviceID(
                * Read the 1284 device ID...
                */
 
-               if ((length = read(devparportfd, device_id,
-                                  device_id_size - 1)) >= 2)
+               if ((length = read(devparportfd, device_id, (size_t)device_id_size - 1)) >= 2)
                {
                  device_id[length] = '\0';
                  got_id = 1;
@@ -178,8 +170,7 @@ backendGetDeviceID(
       * bytes.  The 1284 spec says the length is stored MSB first...
       */
 
-      length = (((unsigned)device_id[0] & 255) << 8) +
-              ((unsigned)device_id[1] & 255);
+      length = (int)((((unsigned)device_id[0] & 255) << 8) + ((unsigned)device_id[1] & 255));
 
      /*
       * Check to see if the length is larger than our buffer; first
@@ -188,8 +179,7 @@ backendGetDeviceID(
       */
 
       if (length > device_id_size || length < 14)
-       length = (((unsigned)device_id[1] & 255) << 8) +
-                ((unsigned)device_id[0] & 255);
+       length = (int)((((unsigned)device_id[1] & 255) << 8) + ((unsigned)device_id[0] & 255));
 
       if (length > device_id_size)
        length = device_id_size;
@@ -221,7 +211,7 @@ backendGetDeviceID(
 
        length -= 2;
 
-       memmove(device_id, device_id + 2, length);
+       memmove(device_id, device_id + 2, (size_t)length);
        device_id[length] = '\0';
       }
     }
@@ -287,7 +277,7 @@ backendGetDeviceID(
   */
 
   if (make_model)
-    backendGetMakeModel(device_id, make_model, make_model_size);
+    backendGetMakeModel(device_id, make_model, (size_t)make_model_size);
 
  /*
   * Then generate a device URI...
@@ -372,7 +362,7 @@ int                                 /* O - 0 on success, -1 on failure */
 backendGetMakeModel(
     const char *device_id,             /* O - 1284 device ID */
     char       *make_model,            /* O - Make/model */
-    int        make_model_size)                /* I - Size of buffer */
+    size_t     make_model_size)                /* I - Size of buffer */
 {
   int          num_values;             /* Number of keys and values */
   cups_option_t        *values;                /* Keys and values */
@@ -381,9 +371,7 @@ backendGetMakeModel(
                *des;                   /* Description string */
 
 
-  DEBUG_printf(("backendGetMakeModel(device_id=\"%s\", "
-                "make_model=%p, make_model_size=%d)\n", device_id,
-               make_model, make_model_size));
+  DEBUG_printf(("backendGetMakeModel(device_id=\"%s\", make_model=%p, make_model_size=" CUPS_LLFMT ")\n", device_id, make_model, CUPS_LLCAST make_model_size));
 
  /*
   * Range check input...
@@ -487,5 +475,5 @@ backendGetMakeModel(
 
 
 /*
- * End of "$Id: ieee1284.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: ieee1284.c 11594 2014-02-14 20:09:01Z msweet $".
  */
index bfca6a8ed30b01b1f37522da7758637f00e2df66..784b47044cb88351323397f76443dd45427fc3f5 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: ipp.c 11909 2014-06-09 18:58:16Z msweet $"
+ * "$Id: ipp.c 12048 2014-07-18 14:26:14Z msweet $"
  *
  * IPP backend for CUPS.
  *
- * Copyright 2007-2013 by Apple Inc.
+ * 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
@@ -79,7 +79,7 @@ typedef struct _cups_monitor_s                /**** Monitoring data ****/
 static const char      *auth_info_required;
                                        /* New auth-info-required value */
 #if defined(HAVE_GSSAPI) && defined(HAVE_XPC)
-static int             child_pid = 0;  /* Child process ID */
+static pid_t           child_pid = 0;  /* Child process ID */
 #endif /* HAVE_GSSAPI && HAVE_XPC */
 static const char * const jattrs[] =   /* Job attributes we want */
 {
@@ -682,6 +682,44 @@ 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...
   */
@@ -788,7 +826,7 @@ main(int  argc,                             /* I - Number of command-line args */
              break;
         }
 
-       sleep(delay);
+       sleep((unsigned)delay);
 
         delay = _cupsNextDelay(delay, &prev_delay);
       }
@@ -834,15 +872,16 @@ main(int  argc,                           /* I - Number of command-line args */
   */
 
 #ifdef HAVE_LIBZ
-  compression_sup  = NULL;
+  compression_sup      = NULL;
 #endif /* HAVE_LIBZ */
-  copies_sup       = NULL;
-  cups_version     = NULL;
-  format_sup       = NULL;
-  media_col_sup    = NULL;
-  supported        = NULL;
-  operations_sup   = NULL;
-  doc_handling_sup = NULL;
+  copies_sup           = NULL;
+  cups_version         = NULL;
+  format_sup           = NULL;
+  media_col_sup        = NULL;
+  supported            = NULL;
+  operations_sup       = NULL;
+  doc_handling_sup     = NULL;
+  print_color_mode_sup = NULL;
 
   do
   {
@@ -857,9 +896,7 @@ main(int  argc,                             /* I - Number of command-line args */
     */
 
     request = ippNewRequest(IPP_GET_PRINTER_ATTRIBUTES);
-    request->request.op.version[0] = version / 10;
-    request->request.op.version[1] = version % 10;
-
+    ippSetVersion(request, version / 10, version % 10);
     ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
                 NULL, uri);
 
@@ -908,7 +945,7 @@ main(int  argc,                             /* I - Number of command-line args */
 
         report_printer_state(supported);
 
-       sleep(delay);
+       sleep((unsigned)delay);
 
         delay = _cupsNextDelay(delay, &prev_delay);
       }
@@ -1022,7 +1059,7 @@ main(int  argc,                           /* I - Number of command-line args */
 
        report_printer_state(supported);
 
-       sleep(delay);
+       sleep((unsigned)delay);
 
        delay = _cupsNextDelay(delay, &prev_delay);
 
@@ -1311,7 +1348,7 @@ main(int  argc,                           /* I - Number of command-line args */
 
     _cupsLangPrintFilter(stderr, "INFO", _("Copying print data."));
 
-    if ((compatsize = write(fd, buffer, bytes)) < 0)
+    if ((compatsize = write(fd, buffer, (size_t)bytes)) < 0)
     {
       perror("DEBUG: Unable to write temporary file");
       return (CUPS_BACKEND_FAILED);
@@ -1510,7 +1547,7 @@ main(int  argc,                           /* I - Number of command-line args */
        else
        {
          fd          = 0;
-         http_status = cupsWriteRequestData(http, buffer, bytes);
+         http_status = cupsWriteRequestData(http, buffer, (size_t)bytes);
         }
 
         while (http_status == HTTP_CONTINUE &&
@@ -1536,7 +1573,7 @@ main(int  argc,                           /* I - Number of command-line args */
             {
              fprintf(stderr, "DEBUG: Read %d bytes...\n", (int)bytes);
 
-             if ((http_status = cupsWriteRequestData(http, buffer, bytes))
+             if ((http_status = cupsWriteRequestData(http, buffer, (size_t)bytes))
                      != HTTP_CONTINUE)
                break;
            }
@@ -1672,8 +1709,7 @@ main(int  argc,                           /* I - Number of command-line args */
        */
 
        request = ippNewRequest(IPP_SEND_DOCUMENT);
-       request->request.op.version[0] = version / 10;
-       request->request.op.version[1] = version % 10;
+       ippSetVersion(request, version / 10, version % 10);
 
        ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
                     NULL, uri);
@@ -1706,7 +1742,7 @@ main(int  argc,                           /* I - Number of command-line args */
          if (num_files == 0)
          {
            fd          = 0;
-           http_status = cupsWriteRequestData(http, buffer, bytes);
+           http_status = cupsWriteRequestData(http, buffer, (size_t)bytes);
          }
          else
          {
@@ -1725,7 +1761,7 @@ main(int  argc,                           /* I - Number of command-line args */
          while (!job_canceled && http_status == HTTP_CONTINUE &&
                 (bytes = read(fd, buffer, sizeof(buffer))) > 0)
          {
-           if ((http_status = cupsWriteRequestData(http, buffer, bytes))
+           if ((http_status = cupsWriteRequestData(http, buffer, (size_t)bytes))
                    != HTTP_CONTINUE)
              break;
            else
@@ -1775,6 +1811,20 @@ main(int  argc,                          /* I - Number of command-line args */
       fprintf(stderr, "PAGE: 1 %d\n", copies_sup ? atoi(argv[4]) : 1);
       copies_remaining --;
     }
+    else if ((ipp_status == IPP_STATUS_ERROR_DOCUMENT_FORMAT_ERROR || ipp_status == IPP_STATUS_ERROR_DOCUMENT_UNPRINTABLE) &&
+             argc == 6 &&
+             document_format && strcmp(document_format, "image/pwg-raster") && strcmp(document_format, "image/urf"))
+    {
+     /*
+      * Need to reprocess the job as raster...
+      */
+
+      fputs("JOBSTATE: cups-retry-as-raster\n", stderr);
+      if (job_id > 0)
+       cancel_job(http, uri, job_id, resource, argv[2], version);
+
+      goto cleanup;
+    }
     else if (ipp_status == IPP_SERVICE_UNAVAILABLE ||
              ipp_status == IPP_NOT_POSSIBLE ||
             ipp_status == IPP_PRINTER_BUSY)
@@ -1858,6 +1908,8 @@ main(int  argc,                           /* I - Number of command-line args */
     if (!job_id || !waitjob || !get_job_attrs)
       continue;
 
+    fputs("STATE: +cups-waiting-for-job-completed\n", stderr);
+
     _cupsLangPrintFilter(stderr, "INFO", _("Waiting for job to complete."));
 
     for (delay = _cupsNextDelay(0, &prev_delay); !job_canceled;)
@@ -1882,8 +1934,7 @@ main(int  argc,                           /* I - Number of command-line args */
       */
 
       request = ippNewRequest(IPP_GET_JOB_ATTRIBUTES);
-      request->request.op.version[0] = version / 10;
-      request->request.op.version[1] = version % 10;
+      ippSetVersion(request, version / 10, version % 10);
 
       ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
                   NULL, uri);
@@ -2008,7 +2059,7 @@ main(int  argc,                           /* I - Number of command-line args */
       * Wait before polling again...
       */
 
-      sleep(delay);
+      sleep((unsigned)delay);
 
       delay = _cupsNextDelay(delay, &prev_delay);
     }
@@ -2019,8 +2070,13 @@ main(int  argc,                          /* I - Number of command-line args */
   */
 
   if (job_canceled > 0 && job_id > 0)
+  {
     cancel_job(http, uri, job_id, resource, argv[2], version);
 
+    if (cupsLastError() > IPP_OK_CONFLICT)
+      _cupsLangPrintFilter(stderr, "ERROR", _("Unable to cancel print job."));
+  }
+
  /*
   * Check the printer state and report it if necessary...
   */
@@ -2142,8 +2198,7 @@ cancel_job(http_t     *http,              /* I - HTTP connection */
   _cupsLangPrintFilter(stderr, "INFO", _("Canceling print job."));
 
   request = ippNewRequest(IPP_CANCEL_JOB);
-  request->request.op.version[0] = version / 10;
-  request->request.op.version[1] = version % 10;
+  ippSetVersion(request, version / 10, version % 10);
 
   ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
                NULL, uri);
@@ -2158,9 +2213,6 @@ cancel_job(http_t     *http,              /* I - HTTP connection */
   */
 
   ippDelete(cupsDoRequest(http, request, resource));
-
-  if (cupsLastError() > IPP_OK_CONFLICT)
-    _cupsLangPrintFilter(stderr, "ERROR", _("Unable to cancel print job."));
 }
 
 
@@ -2188,8 +2240,7 @@ check_printer_state(
   */
 
   request = ippNewRequest(IPP_GET_PRINTER_ATTRIBUTES);
-  request->request.op.version[0] = version / 10;
-  request->request.op.version[1] = version % 10;
+  ippSetVersion(request, version / 10, version % 10);
 
   ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
               NULL, uri);
@@ -2292,8 +2343,7 @@ monitor_printer(
       job_op  = (monitor->job_id > 0 && monitor->get_job_attrs) ?
                     IPP_GET_JOB_ATTRIBUTES : IPP_GET_JOBS;
       request = ippNewRequest(job_op);
-      request->request.op.version[0] = monitor->version / 10;
-      request->request.op.version[1] = monitor->version % 10;
+      ippSetVersion(request, monitor->version / 10, monitor->version % 10);
 
       ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
                   NULL, monitor->uri);
@@ -2355,7 +2405,7 @@ monitor_printer(
               job_name = attr->values[0].string.text;
             else if (!strcmp(attr->name, "job-state") &&
                     attr->value_tag == IPP_TAG_ENUM)
-              job_state = attr->values[0].integer;
+              job_state = (ipp_jstate_t)attr->values[0].integer;
             else if (!strcmp(attr->name, "job-originating-user-name") &&
                     (attr->value_tag == IPP_TAG_NAME ||
                      attr->value_tag == IPP_TAG_NAMELANG))
@@ -2442,7 +2492,7 @@ monitor_printer(
     * Sleep for N seconds...
     */
 
-    sleep(delay);
+    sleep((unsigned)delay);
 
     delay = _cupsNextDelay(delay, &prev_delay);
   }
@@ -2452,10 +2502,17 @@ monitor_printer(
   */
 
   if (job_canceled > 0 && monitor->job_id > 0)
+  {
     if (!httpReconnect(http))
+    {
       cancel_job(http, monitor->uri, monitor->job_id, monitor->resource,
                  monitor->user, monitor->version);
 
+      if (cupsLastError() > IPP_OK_CONFLICT)
+       _cupsLangPrintFilter(stderr, "ERROR", _("Unable to cancel print job."));
+    }
+  }
+
  /*
   * Cleanup and return...
   */
@@ -2509,9 +2566,8 @@ new_request(
   * Create the IPP request...
   */
 
-  request                        = ippNewRequest(op);
-  request->request.op.version[0] = version / 10;
-  request->request.op.version[1] = version % 10;
+  request = ippNewRequest(op);
+  ippSetVersion(request, version / 10, version % 10);
 
   fprintf(stderr, "DEBUG: %s IPP/%d.%d\n",
          ippOpString(request->request.op.operation_id),
@@ -2578,8 +2634,7 @@ new_request(
           (keyword = cupsGetOption("job-password", num_options,
                                    options)) != NULL)
       {
-        ippAddOctetString(request, IPP_TAG_OPERATION, "job-password",
-                          keyword, strlen(keyword));
+        ippAddOctetString(request, IPP_TAG_OPERATION, "job-password", keyword, (int)strlen(keyword));
 
         if ((keyword = cupsGetOption("job-password-encryption", num_options,
                                     options)) == NULL)
@@ -2658,8 +2713,7 @@ new_request(
                 }
                 break;
             case IPP_TAG_STRING :
-                ippAddOctetString(request, IPP_TAG_JOB, mandatory, keyword,
-                                  strlen(keyword));
+                ippAddOctetString(request, IPP_TAG_JOB, mandatory, keyword, (int)strlen(keyword));
                 break;
             default :
                 if (!strcmp(mandatory, "print-color-mode") && !strcmp(keyword, "monochrome"))
@@ -3105,16 +3159,14 @@ report_attr(ipp_attribute_t *attr)      /* I - Attribute */
     {
       case IPP_TAG_INTEGER :
       case IPP_TAG_ENUM :
-          snprintf(valptr, sizeof(value) - (valptr - value), "%d",
-                  attr->values[i].integer);
+          snprintf(valptr, sizeof(value) - (size_t)(valptr - value), "%d", attr->values[i].integer);
          valptr += strlen(valptr);
          break;
 
       case IPP_TAG_TEXT :
       case IPP_TAG_NAME :
       case IPP_TAG_KEYWORD :
-          quote_string(attr->values[i].string.text, valptr,
-                       value + sizeof(value) - valptr);
+          quote_string(attr->values[i].string.text, valptr, (size_t)(value + sizeof(value) - valptr));
           valptr += strlen(valptr);
           break;
 
@@ -3365,12 +3417,12 @@ run_as_user(char       *argv[],         /* I - Command-line arguments */
 
   if (response)
   {
-    child_pid = xpc_dictionary_get_int64(response, "child-pid");
+    child_pid = (pid_t)xpc_dictionary_get_int64(response, "child-pid");
 
     xpc_release(response);
 
     if (child_pid)
-      fprintf(stderr, "DEBUG: Child PID=%d.\n", child_pid);
+      fprintf(stderr, "DEBUG: Child PID=%d.\n", (int)child_pid);
     else
     {
       _cupsLangPrintFilter(stderr, "ERROR",
@@ -3416,7 +3468,7 @@ run_as_user(char       *argv[],           /* I - Command-line arguments */
 
   if (response)
   {
-    status = xpc_dictionary_get_int64(response, "status");
+    status = (int)xpc_dictionary_get_int64(response, "status");
 
     if (status == SIGTERM || status == SIGKILL || status == SIGPIPE)
     {
@@ -3615,8 +3667,7 @@ update_reasons(ipp_attribute_t *attr,     /* I - printer-state-reasons or NULL */
               temp = (char *)cupsArrayNext(state_reasons))
            if (!strncmp(temp, "cups-remote-", 12))
            {
-             snprintf(remptr, sizeof(rem) - (remptr - rem), "%s%s", remprefix,
-                      temp);
+             snprintf(remptr, sizeof(rem) - (size_t)(remptr - rem), "%s%s", remprefix, temp);
              remptr    += strlen(remptr);
              remprefix = ",";
 
@@ -3629,8 +3680,7 @@ update_reasons(ipp_attribute_t *attr,     /* I - printer-state-reasons or NULL */
 
         cupsArrayAdd(state_reasons, reason);
 
-        snprintf(addptr, sizeof(add) - (addptr - add), "%s%s", addprefix,
-                reason);
+        snprintf(addptr, sizeof(add) - (size_t)(addptr - add), "%s%s", addprefix, reason);
        addptr    += strlen(addptr);
        addprefix = ",";
       }
@@ -3648,8 +3698,7 @@ update_reasons(ipp_attribute_t *attr,     /* I - printer-state-reasons or NULL */
     {
       if (cupsArrayFind(state_reasons, reason))
       {
-       snprintf(remptr, sizeof(rem) - (remptr - rem), "%s%s", remprefix,
-                reason);
+       snprintf(remptr, sizeof(rem) - (size_t)(remptr - rem), "%s%s", remprefix, reason);
        remptr    += strlen(remptr);
        remprefix = ",";
 
@@ -3669,8 +3718,7 @@ update_reasons(ipp_attribute_t *attr,     /* I - printer-state-reasons or NULL */
     {
       if (strncmp(reason, "cups-", 5) && !cupsArrayFind(new_reasons, reason))
       {
-       snprintf(remptr, sizeof(rem) - (remptr - rem), "%s%s", remprefix,
-                reason);
+       snprintf(remptr, sizeof(rem) - (size_t)(remptr - rem), "%s%s", remprefix, reason);
        remptr    += strlen(remptr);
        remprefix = ",";
 
@@ -3686,8 +3734,7 @@ update_reasons(ipp_attribute_t *attr,     /* I - printer-state-reasons or NULL */
       {
         cupsArrayAdd(state_reasons, reason);
 
-        snprintf(addptr, sizeof(add) - (addptr - add), "%s%s", addprefix,
-                reason);
+        snprintf(addptr, sizeof(add) - (size_t)(addptr - add), "%s%s", addprefix, reason);
        addptr    += strlen(addptr);
        addprefix = ",";
       }
@@ -3709,5 +3756,5 @@ update_reasons(ipp_attribute_t *attr,     /* I - printer-state-reasons or NULL */
 }
 
 /*
- * End of "$Id: ipp.c 11909 2014-06-09 18:58:16Z msweet $".
+ * End of "$Id: ipp.c 12048 2014-07-18 14:26:14Z msweet $".
  */
index f95f6ba5f66ab74487f8ddf6f1573bc83f7cece6..33e84086c383085eb69853ed71dc035535e9aa88 100644 (file)
@@ -1,27 +1,18 @@
 /*
- * "$Id: lpd.c 12025 2014-07-15 13:00:17Z msweet $"
+ * "$Id: lpd.c 12024 2014-07-15 12:58:39Z msweet $"
  *
- *   Line Printer Daemon backend for CUPS.
+ * Line Printer Daemon backend for CUPS.
  *
- *   Copyright 2007-2012 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"
- *   "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()            - Send a file to the printer or server.
- *   lpd_command()     - Send an LPR command sequence and wait for a reply.
- *   lpd_queue()       - Queue a file using the Line Printer Daemon protocol.
- *   lpd_write()       - Write a buffer of data to an LPD server.
- *   rresvport_af()    - A simple implementation of rresvport_af().
- *   sigterm_handler() - Handle 'terminate' signals that stop the backend.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -93,7 +84,7 @@ static int    lpd_queue(const char *hostname, http_addrlist_t *addrlist,
                          int copies, int banner, int format, int order,
                          int reserve, int manual_copies, int timeout,
                          int contimeout, const char *orighost);
-static int     lpd_write(int lpd_fd, char *buffer, int length);
+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 */
@@ -481,7 +472,7 @@ main(int  argc,                             /* I - Number of command-line arguments (6 or 7) */
     _cupsLangPrintFilter(stderr, "INFO", _("Copying print data."));
 
     if (bytes > 0)
-      write(fd, buffer, bytes);
+      write(fd, buffer, (size_t)bytes);
 
     backendRunLoop(-1, fd, snmp_fd, &(addrlist->addr), 0, 0,
                   backendNetworkSideCB);
@@ -592,7 +583,7 @@ lpd_command(int  fd,                /* I - Socket connection to LPD host */
 {
   va_list      ap;             /* Argument pointer */
   char         buf[1024];      /* Output buffer */
-  int          bytes;          /* Number of bytes to output */
+  ssize_t      bytes;          /* Number of bytes to output */
   char         status;         /* Status from command */
 
 
@@ -617,9 +608,9 @@ lpd_command(int  fd,                /* I - Socket connection to LPD host */
   * Send the command...
   */
 
-  fprintf(stderr, "DEBUG: Sending command string (%d bytes)...\n", bytes);
+  fprintf(stderr, "DEBUG: Sending command string (" CUPS_LLFMT " bytes)...\n", CUPS_LLCAST bytes);
 
-  if (lpd_write(fd, buf, bytes) < bytes)
+  if (lpd_write(fd, buf, (size_t)bytes) < bytes)
   {
     perror("DEBUG: Unable to send LPD command");
     return (-1);
@@ -634,7 +625,7 @@ lpd_command(int  fd,                /* I - Socket connection to LPD host */
   if (recv(fd, &status, 1, 0) < 1)
   {
     _cupsLangPrintFilter(stderr, "WARNING", _("The printer did not respond."));
-    status = errno;
+    status = (char)errno;
   }
 
   fprintf(stderr, "DEBUG: lpd_command returning %d\n", status);
@@ -680,7 +671,7 @@ lpd_queue(const char      *hostname,        /* I - Host to connect to */
   int                  have_supplies;  /* Printer supports supply levels? */
   int                  copy;           /* Copies written */
   time_t               start_time;     /* Time of first connect */
-  size_t               nbytes;         /* Number of bytes written */
+  ssize_t              nbytes;         /* Number of bytes written */
   off_t                        tbytes;         /* Total bytes written */
   char                 buffer[32768];  /* Output buffer */
 #ifdef WIN32
@@ -782,7 +773,7 @@ lpd_queue(const char      *hostname,        /* I - Host to connect to */
        return (CUPS_BACKEND_FAILED);
       }
 
-      if (!connect(fd, &(addr->addr.addr), httpAddrLength(&(addr->addr))))
+      if (!connect(fd, &(addr->addr.addr), (socklen_t)httpAddrLength(&(addr->addr))))
        break;
 
       error = errno;
@@ -846,7 +837,7 @@ lpd_queue(const char      *hostname,        /* I - Host to connect to */
              break;
         }
 
-       sleep(delay);
+       sleep((unsigned)delay);
 
        if (delay < 30)
          delay += 5;
@@ -967,7 +958,7 @@ lpd_queue(const char      *hostname,        /* I - Host to connect to */
 
     if (banner)
     {
-      snprintf(cptr, sizeof(control) - (cptr - control),
+      snprintf(cptr, sizeof(control) - (size_t)(cptr - control),
                "C%.31s\n"      /* RFC 1179, Section 7.2 - class name <= 31 chars */
               "L%s\n",
                localhost, user);
@@ -976,13 +967,13 @@ lpd_queue(const char      *hostname,      /* I - Host to connect to */
 
     while (copies > 0)
     {
-      snprintf(cptr, sizeof(control) - (cptr - control), "%cdfA%03d%.15s\n",
+      snprintf(cptr, sizeof(control) - (size_t)(cptr - control), "%cdfA%03d%.15s\n",
                format, (int)getpid() % 1000, localhost);
       cptr   += strlen(cptr);
       copies --;
     }
 
-    snprintf(cptr, sizeof(control) - (cptr - control),
+    snprintf(cptr, sizeof(control) - (size_t)(cptr - control),
              "UdfA%03d%.15s\n"
             "N%.131s\n",       /* RFC 1179, Section 7.2 - sourcefile name <= 131 chars */
              (int)getpid() % 1000, localhost, title);
@@ -1012,9 +1003,9 @@ lpd_queue(const char      *hostname,      /* I - Host to connect to */
       fprintf(stderr, "DEBUG: Sending control file (%u bytes)\n",
              (unsigned)strlen(control));
 
-      if (lpd_write(fd, control, strlen(control) + 1) < (strlen(control) + 1))
+      if ((size_t)lpd_write(fd, control, strlen(control) + 1) < (strlen(control) + 1))
       {
-       status = errno;
+       status = (char)errno;
        perror("DEBUG: Unable to write control file");
 
       }
@@ -1024,7 +1015,7 @@ lpd_queue(const char      *hostname,      /* I - Host to connect to */
        {
          _cupsLangPrintFilter(stderr, "WARNING",
                               _("The printer did not respond."));
-         status = errno;
+         status = (char)errno;
        }
       }
 
@@ -1074,7 +1065,7 @@ lpd_queue(const char      *hostname,      /* I - Host to connect to */
                               _("Spooling job, %.0f%% complete."),
                               100.0 * tbytes / filestats.st_size);
 
-         if (lpd_write(fd, buffer, nbytes) < nbytes)
+         if (lpd_write(fd, buffer, (size_t)nbytes) < nbytes)
          {
            perror("DEBUG: Unable to send print file to printer");
             break;
@@ -1087,11 +1078,11 @@ lpd_queue(const char      *hostname,    /* I - Host to connect to */
       if (mode == MODE_STANDARD)
       {
        if (tbytes < filestats.st_size)
-         status = errno;
+         status = (char)errno;
        else if (lpd_write(fd, "", 1) < 1)
        {
          perror("DEBUG: Unable to send trailing nul to printer");
-         status = errno;
+         status = (char)errno;
        }
        else
        {
@@ -1145,9 +1136,9 @@ lpd_queue(const char      *hostname,      /* I - Host to connect to */
       fprintf(stderr, "DEBUG: Sending control file (%lu bytes)\n",
              (unsigned long)strlen(control));
 
-      if (lpd_write(fd, control, strlen(control) + 1) < (strlen(control) + 1))
+      if ((size_t)lpd_write(fd, control, strlen(control) + 1) < (strlen(control) + 1))
       {
-       status = errno;
+       status = (char)errno;
        perror("DEBUG: Unable to write control file");
       }
       else
@@ -1156,7 +1147,7 @@ lpd_queue(const char      *hostname,      /* I - Host to connect to */
        {
          _cupsLangPrintFilter(stderr, "WARNING",
                               _("The printer did not respond."));
-         status = errno;
+         status = (char)errno;
        }
       }
 
@@ -1169,6 +1160,8 @@ lpd_queue(const char      *hostname,      /* I - Host to connect to */
                             _("Control file sent successfully."));
     }
 
+    fputs("STATE: +cups-waiting-for-job-completed\n", stderr);
+
    /*
     * Collect the final supply levels as needed...
     */
@@ -1204,32 +1197,32 @@ lpd_queue(const char      *hostname,    /* I - Host to connect to */
  * 'lpd_write()' - Write a buffer of data to an LPD server.
  */
 
-static int                             /* O - Number of bytes written or -1 on error */
-lpd_write(int  lpd_fd,                 /* I - LPD socket */
-          char *buffer,                        /* I - Buffer to write */
-         int  length)                  /* I - Number of bytes to write */
+static ssize_t                         /* O - Number of bytes written or -1 on error */
+lpd_write(int     lpd_fd,              /* I - LPD socket */
+          char    *buffer,             /* I - Buffer to write */
+         size_t  length)               /* I - Number of bytes to write */
 {
-  int  bytes,                          /* Number of bytes written */
-       total;                          /* Total number of bytes written */
+  ssize_t      bytes,                  /* Number of bytes written */
+               total;                  /* Total number of bytes written */
 
 
   if (abort_job)
     return (-1);
 
   total = 0;
-  while ((bytes = send(lpd_fd, buffer, length - total, 0)) >= 0)
+  while ((bytes = send(lpd_fd, buffer, length - (size_t)total, 0)) >= 0)
   {
     total  += bytes;
     buffer += bytes;
 
-    if (total == length)
+    if ((size_t)total == length)
       break;
   }
 
   if (bytes < 0)
     return (-1);
   else
-    return (length);
+    return (total);
 }
 
 
@@ -1285,11 +1278,7 @@ rresvport_af(int *port,                  /* IO - Port number to bind to */
 
     if (errno != EADDRINUSE)
     {
-#  ifdef WIN32
-      closesocket(fd);
-#  else
-      close(fd);
-#  endif /* WIN32 */
+      httpAddrClose(NULL, fd);
 
       return (-1);
     }
@@ -1331,5 +1320,5 @@ sigterm_handler(int sig)          /* I - Signal */
 
 
 /*
- * End of "$Id: lpd.c 12025 2014-07-15 13:00:17Z msweet $".
+ * End of "$Id: lpd.c 12024 2014-07-15 12:58:39Z msweet $".
  */
index 9e557dd75e52b204475c279e51ff93d70543ceb1..fa016c655cce2970f00753b44ce50a3d465836d1 100644 (file)
@@ -1,23 +1,18 @@
 /*
- * "$Id: network.c 11971 2014-07-01 14:38:29Z msweet $"
+ * "$Id: network.c 11970 2014-07-01 14:35:25Z msweet $"
  *
- *   Common backend network APIs for CUPS.
+ * Common backend network APIs for CUPS.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 2006-2007 by Easy Software Products, all rights reserved.
+ * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2006-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:
- *
- *   backendCheckSideChannel() - Check the side-channel for pending requests.
- *   backendNetworkSideCB()    - Handle common network side-channel commands.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
 
 #include "backend-private.h"
 #include <limits.h>
-#ifdef __hpux
-#  include <sys/time.h>
-#else
-#  include <sys/select.h>
-#endif /* __hpux */
+#include <sys/select.h>
 
 
 /*
@@ -100,7 +91,7 @@ backendNetworkSideCB(
 
     case CUPS_SC_CMD_GET_BIDI :
        status  = CUPS_SC_STATUS_OK;
-        data[0] = use_bc;
+        data[0] = (char)use_bc;
         datalen = 1;
         break;
 
@@ -139,13 +130,13 @@ backendNetworkSideCB(
            for (dataptr = data + strlen(data) + 1;
                 count > 0 && dataptr < (data + sizeof(data) - 1);
                 count --, dataptr += strlen(dataptr))
-             strlcpy(dataptr, snmp_value, sizeof(data) - (dataptr - data));
+             strlcpy(dataptr, snmp_value, sizeof(data) - (size_t)(dataptr - data));
 
            fprintf(stderr, "DEBUG: Returning %s %s\n", data,
                    data + strlen(data) + 1);
 
            status  = CUPS_SC_STATUS_OK;
-           datalen = dataptr - data;
+           datalen = (int)(dataptr - data);
            break;
           }
 
@@ -168,7 +159,7 @@ backendNetworkSideCB(
           {
            if (_cupsSNMPRead(snmp_fd, &packet, 1.0))
            {
-             int       i;              /* Looping var */
+             size_t    i;              /* Looping var */
 
 
               if (!_cupsSNMPOIDToString(packet.object_name, data, sizeof(data)))
@@ -183,26 +174,22 @@ backendNetworkSideCB(
              switch (packet.object_type)
              {
                case CUPS_ASN1_BOOLEAN :
-                   snprintf(dataptr, sizeof(data) - (dataptr - data), "%d",
-                            packet.object_value.boolean);
-                   datalen += (int)strlen(dataptr);
+                   snprintf(dataptr, sizeof(data) - (size_t)(dataptr - data), "%d", packet.object_value.boolean);
+                   datalen += strlen(dataptr);
                    break;
 
                case CUPS_ASN1_INTEGER :
-                   snprintf(dataptr, sizeof(data) - (dataptr - data), "%d",
+                   snprintf(dataptr, sizeof(data) - (size_t)(dataptr - data), "%d",
                             packet.object_value.integer);
-                   datalen += (int)strlen(dataptr);
+                   datalen += strlen(dataptr);
                    break;
 
                case CUPS_ASN1_BIT_STRING :
                case CUPS_ASN1_OCTET_STRING :
-                   if (packet.object_value.string.num_bytes < 0)
-                     i = 0;
-                   else if (packet.object_value.string.num_bytes <
-                            (sizeof(data) - (dataptr - data)))
+                   if (packet.object_value.string.num_bytes < (sizeof(data) - (size_t)(dataptr - data)))
                      i = packet.object_value.string.num_bytes;
                    else
-                     i = (int)(sizeof(data) - (dataptr - data));
+                     i = sizeof(data) - (size_t)(dataptr - data);
 
                    memcpy(dataptr, packet.object_value.string.bytes, i);
 
@@ -211,8 +198,8 @@ backendNetworkSideCB(
 
                case CUPS_ASN1_OID :
                    _cupsSNMPOIDToString(packet.object_value.oid, dataptr,
-                                        sizeof(data) - (dataptr - data));
-                   datalen += (int)strlen(dataptr);
+                                        sizeof(data) - (size_t)(dataptr - data));
+                   datalen += strlen(dataptr);
                    break;
 
                 case CUPS_ASN1_HEX_STRING :
@@ -220,32 +207,27 @@ backendNetworkSideCB(
                         i < packet.object_value.string.num_bytes &&
                             dataptr < (data + sizeof(data) - 3);
                         i ++, dataptr += 2)
-                     sprintf(dataptr, "%02X",
-                             packet.object_value.string.bytes[i]);
-                   datalen += (int)strlen(dataptr);
+                     sprintf(dataptr, "%02X", packet.object_value.string.bytes[i]);
+                   datalen += strlen(dataptr);
                    break;
 
                 case CUPS_ASN1_COUNTER :
-                   snprintf(dataptr, sizeof(data) - (dataptr - data), "%d",
-                            packet.object_value.counter);
-                   datalen += (int)strlen(dataptr);
+                   snprintf(dataptr, sizeof(data) - (size_t)(dataptr - data), "%u", packet.object_value.counter);
+                   datalen += strlen(dataptr);
                    break;
 
                 case CUPS_ASN1_GAUGE :
-                   snprintf(dataptr, sizeof(data) - (dataptr - data), "%u",
-                            packet.object_value.gauge);
-                   datalen += (int)strlen(dataptr);
+                   snprintf(dataptr, sizeof(data) - (size_t)(dataptr - data), "%u", packet.object_value.gauge);
+                   datalen += strlen(dataptr);
                    break;
 
                 case CUPS_ASN1_TIMETICKS :
-                   snprintf(dataptr, sizeof(data) - (dataptr - data), "%u",
-                            packet.object_value.timeticks);
-                   datalen += (int)strlen(dataptr);
+                   snprintf(dataptr, sizeof(data) - (size_t)(dataptr - data), "%u", packet.object_value.timeticks);
+                   datalen += strlen(dataptr);
                    break;
 
                 default :
-                   fprintf(stderr, "DEBUG: Unknown OID value type %02X!\n",
-                           packet.object_type);
+                   fprintf(stderr, "DEBUG: Unknown OID value type %02X.\n", packet.object_type);
 
                case CUPS_ASN1_NULL_VALUE :
                    dataptr[0] = '\0';
@@ -322,5 +304,5 @@ backendNetworkSideCB(
 
 
 /*
- * End of "$Id: network.c 11971 2014-07-01 14:38:29Z msweet $".
+ * End of "$Id: network.c 11970 2014-07-01 14:35:25Z msweet $".
  */
index 74cdc512d94a95b7b19e828ce960cb5feac4379e..48b458a47eb6a01e91c1a8eec03dbb1a3b29a202 100644 (file)
@@ -1,25 +1,18 @@
 /*
- * "$Id: runloop.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: runloop.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Common run loop APIs for CUPS backends.
+ * Common run loop APIs for CUPS backends.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 2006-2007 by Easy Software Products, all rights reserved.
+ * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2006-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:
- *
- *   backendDrainOutput() - Drain pending print data to the device.
- *   backendRunLoop()     - Read and write print and back-channel data.
- *   backendWaitLoop()    - Wait for input from stdin while handling
- *                          side-channel queries.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
 
 #include "backend-private.h"
 #include <limits.h>
-#ifdef __hpux
-#  include <sys/time.h>
-#else
-#  include <sys/select.h>
-#endif /* __hpux */
+#include <sys/select.h>
 
 
 /*
@@ -113,7 +102,7 @@ backendDrainOutput(int print_fd,    /* I - Print file descriptor */
 
     for (print_ptr = print_buffer; print_bytes > 0;)
     {
-      if ((bytes = write(device_fd, print_ptr, print_bytes)) < 0)
+      if ((bytes = write(device_fd, print_ptr, (size_t)print_bytes)) < 0)
       {
        /*
         * Write error - bail if we don't see an error we can retry...
@@ -293,7 +282,7 @@ backendRunLoop(
        fprintf(stderr,
                "DEBUG: Received " CUPS_LLFMT " bytes of back-channel data\n",
                CUPS_LLCAST bc_bytes);
-        cupsBackChannelWrite(bc_buffer, bc_bytes, 1.0);
+        cupsBackChannelWrite(bc_buffer, (size_t)bc_bytes, 1.0);
       }
       else if (bc_bytes < 0 && errno != EAGAIN && errno != EINTR)
       {
@@ -350,7 +339,7 @@ backendRunLoop(
 
     if (print_bytes && FD_ISSET(device_fd, &output))
     {
-      if ((bytes = write(device_fd, print_ptr, print_bytes)) < 0)
+      if ((bytes = write(device_fd, print_ptr, (size_t)print_bytes)) < 0)
       {
        /*
         * Write error - bail if we don't see an error we can retry...
@@ -539,5 +528,5 @@ backendWaitLoop(
 
 
 /*
- * End of "$Id: runloop.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: runloop.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 568af85862903e28930ff1d948416208269ae63f..4b1f13867545f32ed34fd263ef5ffcc0d1a00159 100644 (file)
@@ -1,24 +1,17 @@
 /*
- * "$Id: snmp-supplies.c 11319 2013-09-27 16:18:26Z msweet $"
+ * "$Id: snmp-supplies.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   SNMP supplies functions for CUPS.
+ * SNMP supplies functions for CUPS.
  *
- *   Copyright 2008-2013 by Apple Inc.
+ * Copyright 2008-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"
- *   "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:
- *
- *   backendSNMPSupplies()   - Get the current supplies for a device.
- *   backend_init_supplies() - Initialize the supplies list.
- *   backend_walk_cb()       - Interpret the supply value responses.
- *   utf16_to_utf8()         - Convert UTF-16 text to UTF-8.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -329,9 +322,9 @@ backendSNMPSupplies(
 
       if ((supplies[i].max_capacity > 0 || (quirks & CUPS_SNMP_CAPACITY)) &&
           supplies[i].level >= 0)
-        snprintf(ptr, sizeof(value) - (ptr - value), "%d", percent);
+        snprintf(ptr, sizeof(value) - (size_t)(ptr - value), "%d", percent);
       else
-        strlcpy(ptr, "-1", sizeof(value) - (ptr - value));
+        strlcpy(ptr, "-1", sizeof(value) - (size_t)(ptr - value));
     }
 
     fprintf(stderr, "ATTR: marker-levels=%s\n", value);
@@ -585,7 +578,7 @@ backend_init_supplies(
       {
         if (!strcmp(description, value))
          cupsFileRead(cachefile, (char *)supplies,
-                      num_supplies * sizeof(backend_supplies_t));
+                      (size_t)num_supplies * sizeof(backend_supplies_t));
         else
        {
          num_supplies = -1;
@@ -680,7 +673,7 @@ backend_init_supplies(
 
     if (num_supplies > 0)
       cupsFileWrite(cachefile, (char *)supplies,
-                    num_supplies * sizeof(backend_supplies_t));
+                    (size_t)num_supplies * sizeof(backend_supplies_t));
 
     cupsFileClose(cachefile);
   }
@@ -708,7 +701,7 @@ backend_init_supplies(
     if (i)
       *ptr++ = ',';
 
-    strlcpy(ptr, supplies[i].color, sizeof(value) - (ptr - value));
+    strlcpy(ptr, supplies[i].color, sizeof(value) - (size_t)(ptr - value));
   }
 
   fprintf(stderr, "ATTR: marker-colors=%s\n", value);
@@ -756,9 +749,9 @@ backend_init_supplies(
     type = supplies[i].type;
 
     if (type < CUPS_TC_other || type > CUPS_TC_covers)
-      strlcpy(ptr, "unknown", sizeof(value) - (ptr - value));
+      strlcpy(ptr, "unknown", sizeof(value) - (size_t)(ptr - value));
     else
-      strlcpy(ptr, types[type - CUPS_TC_other], sizeof(value) - (ptr - value));
+      strlcpy(ptr, types[type - CUPS_TC_other], sizeof(value) - (size_t)(ptr - value));
   }
 
   fprintf(stderr, "ATTR: marker-types=%s\n", value);
@@ -1062,9 +1055,9 @@ utf16_to_utf8(
   for (ptr = temp; srcsize >= 2;)
   {
     if (le)
-      ch = src[0] | (src[1] << 8);
+      ch = (cups_utf32_t)(src[0] | (src[1] << 8));
     else
-      ch = (src[0] << 8) | src[1];
+      ch = (cups_utf32_t)((src[0] << 8) | src[1]);
 
     src += 2;
     srcsize -= 2;
@@ -1075,13 +1068,13 @@ utf16_to_utf8(
       * Multi-word UTF-16 char...
       */
 
-      int lch;                 /* Lower word */
+      cups_utf32_t lch;                        /* Lower word */
 
 
       if (le)
-       lch = src[0] | (src[1] << 8);
+       lch = (cups_utf32_t)(src[0] | (src[1] << 8));
       else
-       lch = (src[0] << 8) | src[1];
+       lch = (cups_utf32_t)((src[0] << 8) | src[1]);
 
       if (lch >= 0xdc00 && lch <= 0xdfff)
       {
@@ -1098,10 +1091,10 @@ utf16_to_utf8(
 
   *ptr = '\0';
 
-  cupsUTF32ToUTF8(dst, temp, dstsize);
+  cupsUTF32ToUTF8(dst, temp, (int)dstsize);
 }
 
 
 /*
- * End of "$Id: snmp-supplies.c 11319 2013-09-27 16:18:26Z msweet $".
+ * End of "$Id: snmp-supplies.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index a94e89c578a4ee482f088c037e9e520bbf8c9182..d2dd1e096b991aa9f58592a8bc1523115bc4d052 100644 (file)
@@ -1,44 +1,18 @@
 /*
- * "$Id: snmp.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: snmp.c 11594 2014-02-14 20:09:01Z msweet $"
  *
- *   SNMP discovery backend for CUPS.
+ * SNMP discovery backend for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 2006-2007 by Easy Software Products, all rights reserved.
+ * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2006-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:
- *
- *   main()                    - Discover printers via SNMP.
- *   add_array()               - Add a string to an array.
- *   add_cache()               - Add a cached device...
- *   add_device_uri()          - Add a device URI to the cache.
- *   alarm_handler()           - Handle alarm signals...
- *   compare_cache()           - Compare two cache entries.
- *   debug_printf()            - Display some debugging information.
- *   fix_make_model()          - Fix common problems in the make-and-model
- *                               string.
- *   free_array()              - Free an array of strings.
- *   free_cache()              - Free the array of cached devices.
- *   get_interface_addresses() - Get the broadcast address(es) associated with
- *                               an interface.
- *   list_device()             - List a device we found...
- *   password_cb()             - Handle authentication requests.
- *   probe_device()            - Probe a device to discover whether it is a
- *                               printer.
- *   read_snmp_conf()          - Read the snmp.conf file.
- *   read_snmp_response()      - Read and parse a SNMP response...
- *   run_time()                - Return the total running time...
- *   scan_devices()            - Scan for devices using SNMP.
- *   try_connect()             - Try connecting on a port...
- *   update_cache()            - Update a cached device...
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -532,17 +506,16 @@ fix_make_model(
     make_model[0] = 'H';
     make_model[1] = 'P';
     make_model[2] = ' ';
-    strlcpy(make_model + 3, mmptr, make_model_size - 3);
+    strlcpy(make_model + 3, mmptr, (size_t)make_model_size - 3);
   }
   else if (!_cups_strncasecmp(old_make_model, "deskjet", 7))
-    snprintf(make_model, make_model_size, "HP DeskJet%s", old_make_model + 7);
+    snprintf(make_model, (size_t)make_model_size, "HP DeskJet%s", old_make_model + 7);
   else if (!_cups_strncasecmp(old_make_model, "officejet", 9))
-    snprintf(make_model, make_model_size, "HP OfficeJet%s", old_make_model + 9);
+    snprintf(make_model, (size_t)make_model_size, "HP OfficeJet%s", old_make_model + 9);
   else if (!_cups_strncasecmp(old_make_model, "stylus_pro_", 11))
-    snprintf(make_model, make_model_size, "EPSON Stylus Pro %s",
-             old_make_model + 11);
+    snprintf(make_model, (size_t)make_model_size, "EPSON Stylus Pro %s", old_make_model + 11);
   else
-    strlcpy(make_model, old_make_model, make_model_size);
+    strlcpy(make_model, old_make_model, (size_t)make_model_size);
 
   if ((mmptr = strstr(make_model, ", Inc.,")) != NULL)
   {
@@ -753,7 +726,7 @@ probe_device(snmp_cache_t *device)  /* I - Device */
            * Insert hostname/address...
            */
 
-           strlcpy(uriptr, device->addrname, sizeof(uri) - (uriptr - uri));
+           strlcpy(uriptr, device->addrname, sizeof(uri) - (size_t)(uriptr - uri));
            uriptr += strlen(uriptr);
            format += 2;
          }
@@ -1233,7 +1206,7 @@ scan_devices(int ipv4,                    /* I - SNMP IPv4 socket */
       for (addr = addrs; addr; addr = addr->next)
       {
 #ifdef AF_INET6
-        if (_httpAddrFamily(&(addr->addr)) == AF_INET6)
+        if (httpAddrFamily(&(addr->addr)) == AF_INET6)
          fd = ipv6;
        else
 #endif /* AF_INET6 */
@@ -1335,7 +1308,7 @@ try_connect(http_addr_t *addr,            /* I - Socket address */
   debug_printf("DEBUG: %.3f Trying %s://%s:%d...\n", run_time(),
                port == 515 ? "lpd" : "socket", addrname, port);
 
-  if ((fd = socket(_httpAddrFamily(addr), SOCK_STREAM, 0)) < 0)
+  if ((fd = socket(httpAddrFamily(addr), SOCK_STREAM, 0)) < 0)
   {
     fprintf(stderr, "ERROR: Unable to create socket: %s\n",
             strerror(errno));
@@ -1346,7 +1319,7 @@ try_connect(http_addr_t *addr,            /* I - Socket address */
 
   alarm(1);
 
-  status = connect(fd, (void *)addr, httpAddrLength(addr));
+  status = connect(fd, (void *)addr, (socklen_t)httpAddrLength(addr));
 
   close(fd);
   alarm(0);
@@ -1391,5 +1364,5 @@ update_cache(snmp_cache_t *device,        /* I - Device */
 
 
 /*
- * End of "$Id: snmp.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: snmp.c 11594 2014-02-14 20:09:01Z msweet $".
  */
index 821b53a8a7fcf4f86e8b6590f705fe54f99549d5..11abd00376a631edf6e06331b71cd6883513cbe9 100644 (file)
@@ -1,23 +1,18 @@
 /*
- * "$Id: socket.c 11909 2014-06-09 18:58:16Z msweet $"
+ * "$Id: socket.c 11907 2014-06-09 18:35:32Z msweet $"
  *
- *   AppSocket backend for CUPS.
+ * AppSocket backend for CUPS.
  *
- *   Copyright 2007-2012 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"
- *   "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()    - Send a file to the printer or server.
- *   wait_bc() - Wait for back-channel data...
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -46,7 +41,7 @@
  * Local functions...
  */
 
-static int     wait_bc(int device_fd, int secs);
+static ssize_t wait_bc(int device_fd, int secs);
 
 
 /*
@@ -385,7 +380,7 @@ main(int  argc,                             /* I - Number of command-line arguments (6 or 7) */
              break;
         }
 
-       sleep(delay);
+       sleep((unsigned)delay);
 
        if (delay < 30)
          delay += 5;
@@ -415,7 +410,7 @@ main(int  argc,                             /* I - Number of command-line arguments (6 or 7) */
   tbytes = 0;
 
   if (bytes > 0)
-    tbytes += write(device_fd, buffer, bytes);
+    tbytes += write(device_fd, buffer, (size_t)bytes);
 
   while (copies > 0 && tbytes >= 0)
   {
@@ -434,6 +429,8 @@ main(int  argc,                             /* I - Number of command-line arguments (6 or 7) */
       _cupsLangPrintFilter(stderr, "INFO", _("Print file sent."));
   }
 
+  fputs("STATE: +cups-waiting-for-job-completed\n", stderr);
+
   if (waiteof)
   {
    /*
@@ -479,7 +476,7 @@ main(int  argc,                             /* I - Number of command-line arguments (6 or 7) */
  * 'wait_bc()' - Wait for back-channel data...
  */
 
-static int                             /* O - # bytes read or -1 on error */
+static ssize_t                         /* O - # bytes read or -1 on error */
 wait_bc(int device_fd,                 /* I - Socket */
         int secs)                      /* I - Seconds to wait */
 {
@@ -509,7 +506,7 @@ wait_bc(int device_fd,                      /* I - Socket */
     {
       fprintf(stderr, "DEBUG: Received %d bytes of back-channel data\n",
              (int)bytes);
-      cupsBackChannelWrite(buffer, bytes, 1.0);
+      cupsBackChannelWrite(buffer, (size_t)bytes, 1.0);
     }
 
     return (bytes);
@@ -520,5 +517,5 @@ wait_bc(int device_fd,                      /* I - Socket */
 
 
 /*
- * End of "$Id: socket.c 11909 2014-06-09 18:58:16Z msweet $".
+ * End of "$Id: socket.c 11907 2014-06-09 18:35:32Z msweet $".
  */
index aecfd9cd93175b776b3b25a8873f85b3fea9a03c..b1f27e440b5380f68ae334fc1c5a374a4bcc5c79 100644 (file)
@@ -1,25 +1,18 @@
 /*
- * "$Id: testbackend.c 4297 2013-05-10 16:04:59Z msweet $"
+ * "$Id: testbackend.c 11594 2014-02-14 20:09:01Z msweet $"
  *
- *   Backend test program for CUPS.
+ * Backend test program for CUPS.
  *
- *   Copyright 2007-2012 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"
- *   "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()            - Run the named backend.
- *   sigterm_handler() - Flag when we get SIGTERM.
- *   usage()           - Show usage information.
- *   walk_cb()         - Show results of cupsSideChannelSNMPWalk...
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -97,7 +90,7 @@ main(int  argc,                               /* I - Number of command-line args */
   if (getcwd(libpath, sizeof(libpath)) &&
       (ptr = strrchr(libpath, '/')) != NULL && !strcmp(ptr, "/backend"))
   {
-    strlcpy(ptr, "/cups", sizeof(libpath) - (ptr - libpath));
+    strlcpy(ptr, "/cups", sizeof(libpath) - (size_t)(ptr - libpath));
     if (!access(libpath, 0))
     {
 #ifdef __APPLE__
@@ -311,7 +304,7 @@ main(int  argc,                             /* I - Number of command-line args */
          */
 
          if ((bytes = cupsBackChannelRead(buffer, sizeof(buffer), 0)) > 0)
-           write(2, buffer, bytes);
+           write(2, buffer, (size_t)bytes);
 
         /*
          * Throttle output to ~100hz...
@@ -339,7 +332,7 @@ main(int  argc,                             /* I - Number of command-line args */
        */
 
         while ((bytes = cupsBackChannelRead(buffer, sizeof(buffer), 5.0)) > 0)
-         write(2, buffer, bytes);
+         write(2, buffer, (size_t)bytes);
 
        exit(0);
       }
@@ -414,7 +407,7 @@ main(int  argc,                             /* I - Number of command-line args */
         while ((bytes = cupsBackChannelRead(buffer, sizeof(buffer),
                                            timeout)) > 0)
        {
-         write(2, buffer, bytes);
+         write(2, buffer, (size_t)bytes);
          timeout = 5.0;
        }
        write(2, "\nDEBUG: END\n", 12);
@@ -668,14 +661,17 @@ walk_cb(const char *oid,          /* I - OID */
        void       *context)            /* I - Context (unused) */
 {
   char temp[80];
-  if (datalen > (sizeof(temp) - 1))
+
+  (void)context;
+
+  if ((size_t)datalen > (sizeof(temp) - 1))
   {
     memcpy(temp, data, sizeof(temp) - 1);
     temp[sizeof(temp) - 1] = '\0';
   }
   else
   {
-    memcpy(temp, data, datalen);
+    memcpy(temp, data, (size_t)datalen);
     temp[datalen] = '\0';
   }
 
@@ -684,5 +680,5 @@ walk_cb(const char *oid,            /* I - OID */
 
 
 /*
- * End of "$Id: testbackend.c 4297 2013-05-10 16:04:59Z msweet $".
+ * End of "$Id: testbackend.c 11594 2014-02-14 20:09:01Z msweet $".
  */
index 8c693d53b4f5dfd630e18d58dc8c69df09dc6a60..2ec10d4a156be90d957d1cfc0a203ed60e90894d 100644 (file)
@@ -1,46 +1,46 @@
 /*
-* "$Id: usb-darwin.c 11670 2014-03-04 14:53:59Z msweet $"
-*
-* Copyright 2005-2014 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
-* terms, and your use, installation, modification or redistribution of
-* this Apple software constitutes acceptance of these terms.  If you do
-* not agree with these terms, please do not use, install, modify or
-* redistribute this Apple software.
-*
-* In consideration of your agreement to abide by the following terms, and
-* subject to these terms, Apple grants you a personal, non-exclusive
-* license, under Apple's copyrights in this original Apple software (the
-* "Apple Software"), to use, reproduce, modify and redistribute the Apple
-* Software, with or without modifications, in source and/or binary forms;
-* provided that if you redistribute the Apple Software in its entirety and
-* without modifications, you must retain this notice and the following
-* text and disclaimers in all such redistributions of the Apple Software.
-* Neither the name, trademarks, service marks or logos of Apple Computer,
-* Inc. may be used to endorse or promote products derived from the Apple
-* Software without specific prior written permission from Apple.  Except
-* as expressly stated in this notice, no other rights or licenses, express
-* or implied, are granted by Apple herein, including but not limited to
-* any patent rights that may be infringed by your derivative works or by
-* other works in which the Apple Software may be incorporated.
-*
-* The Apple Software is provided by Apple on an "AS IS" basis.  APPLE
-* MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
-* THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
-* FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
-* OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
-*
-* IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
-* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-* INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
-* MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
-* AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
-* STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
-* POSSIBILITY OF SUCH DAMAGE.
-*/
+ * "$Id: usb-darwin.c 11669 2014-03-04 14:53:34Z msweet $"
+ *
+ * Copyright 2005-2014 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
+ * terms, and your use, installation, modification or redistribution of
+ * this Apple software constitutes acceptance of these terms.  If you do
+ * not agree with these terms, please do not use, install, modify or
+ * redistribute this Apple software.
+ *
+ * In consideration of your agreement to abide by the following terms, and
+ * subject to these terms, Apple grants you a personal, non-exclusive
+ * license, under Apple's copyrights in this original Apple software (the
+ * "Apple Software"), to use, reproduce, modify and redistribute the Apple
+ * Software, with or without modifications, in source and/or binary forms;
+ * provided that if you redistribute the Apple Software in its entirety and
+ * without modifications, you must retain this notice and the following
+ * text and disclaimers in all such redistributions of the Apple Software.
+ * Neither the name, trademarks, service marks or logos of Apple Computer,
+ * Inc. may be used to endorse or promote products derived from the Apple
+ * Software without specific prior written permission from Apple.  Except
+ * as expressly stated in this notice, no other rights or licenses, express
+ * or implied, are granted by Apple herein, including but not limited to
+ * any patent rights that may be infringed by your derivative works or by
+ * other works in which the Apple Software may be incorporated.
+ *
+ * The Apple Software is provided by Apple on an "AS IS" basis.  APPLE
+ * MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
+ * THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
+ * OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
+ *
+ * IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
+ * MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
+ * AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
+ * STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
 
 /*
  * Include necessary headers.
@@ -286,10 +286,10 @@ static void log_usb_class_driver(int is_64bit);
 
 #if defined(__i386__) || defined(__x86_64__)
 static pid_t   child_pid;              /* Child PID */
-static void run_legacy_backend(int argc, char *argv[], int fd);        /* Starts child backend process running as a ppc executable */
+static void run_legacy_backend(int argc, char *argv[], int fd) __attribute__((noreturn));      /* Starts child backend process running as a ppc executable */
 #endif /* __i386__ || __x86_64__ */
 static void sigterm_handler(int sig);  /* SIGTERM handler */
-static void sigquit_handler(int sig, siginfo_t *si, void *unused);
+static void sigquit_handler(int sig, siginfo_t *si, void *unused) __attribute__((noreturn));
 
 #ifdef PARSE_PS_ERRORS
 static const char *next_line (const char *buffer);
@@ -688,7 +688,7 @@ print_device(const char *uri,               /* I - Device URI */
 
       if (g.print_bytes)
       {
-       bytes    = g.print_bytes;
+       bytes    = (UInt32)g.print_bytes;
        iostatus = (*g.classdriver)->WritePipe(g.classdriver, (UInt8*)print_ptr, &bytes, 0);
 
        /*
@@ -710,7 +710,7 @@ print_device(const char *uri,               /* I - Device URI */
        {
          fputs("DEBUG: Got USB pipe stalled during write\n", stderr);
 
-         bytes    = g.print_bytes;
+         bytes    = (UInt32)g.print_bytes;
          iostatus = (*g.classdriver)->WritePipe(g.classdriver, (UInt8*)print_ptr, &bytes, 0);
        }
 
@@ -730,7 +730,7 @@ print_device(const char *uri,               /* I - Device URI */
           sleep(5);
 #endif /* DEBUG_WRITES */
 
-         bytes    = g.print_bytes;
+         bytes    = (UInt32)g.print_bytes;
          iostatus = (*g.classdriver)->WritePipe(g.classdriver, (UInt8*)print_ptr, &bytes, 0);
         }
 
@@ -769,6 +769,7 @@ print_device(const char *uri,               /* I - Device URI */
   }
 
   fprintf(stderr, "DEBUG: Sent %lld bytes...\n", (off_t)total_bytes);
+  fputs("STATE: +cups-waiting-for-job-completed\n", stderr);
 
  /*
   * Signal the side channel thread to exit...
@@ -1017,7 +1018,7 @@ sidechannel_thread(void *reference)
          fputs("DEBUG: CUPS_SC_CMD_GET_BIDI received from driver...\n",
                stderr);
 
-         data[0] = g.bidi_flag;
+         data[0] = (char)g.bidi_flag;
          cupsSideChannelWrite(command, CUPS_SC_STATUS_OK, data, 1, 1.0);
 
          fprintf(stderr,
@@ -1033,7 +1034,7 @@ sidechannel_thread(void *reference)
          get_device_id(&status, data, &datalen);
          cupsSideChannelWrite(command, CUPS_SC_STATUS_OK, data, datalen, 1.0);
 
-          if (datalen < sizeof(data))
+          if ((size_t)datalen < sizeof(data))
            data[datalen] = '\0';
          else
            data[sizeof(data) - 1] = '\0';
@@ -1236,7 +1237,7 @@ static Boolean find_device_cb(void *refcon,
   if (obj != 0x0)
   {
     CFStringRef idString = NULL;
-    UInt32 location = -1;
+    UInt32 location = ~0U;
     UInt8      interfaceNum = 0;
 
     copy_devicestring(obj, &idString, &location, &interfaceNum);
@@ -1876,7 +1877,7 @@ static void parse_options(char *options,
     else if (!_cups_strcasecmp(name, "serial"))
       strlcpy(serial, value, serial_size);
     else if (!_cups_strcasecmp(name, "location") && location)
-      *location = strtol(value, NULL, 16);
+      *location = (UInt32)strtoul(value, NULL, 16);
   }
 }
 
@@ -1939,6 +1940,7 @@ static void run_legacy_backend(int argc,
   char *my_argv[32];
   char *usb_legacy_status;
 
+
  /*
   * If we're running as x86_64 or i386 and couldn't load the class driver
   * (because it's ppc or i386), then try to re-exec ourselves in ppc or i386
@@ -2024,7 +2026,7 @@ static void run_legacy_backend(int argc,
       cups_serverbin = CUPS_SERVERBIN;
     snprintf(usbpath, sizeof(usbpath), "%s/backend/usb", cups_serverbin);
 
-    for (i = 0; i < argc && i < (sizeof(my_argv) / sizeof(my_argv[0])) - 1; i ++)
+    for (i = 0; i < argc && i < (int)(sizeof(my_argv) / sizeof(my_argv[0])) - 1; i ++)
       my_argv[i] = argv[i];
 
     my_argv[i] = NULL;
@@ -2312,7 +2314,7 @@ static void get_device_id(cups_sc_status_t *status,
   if (deviceIDString)
   {
     CFStringGetCString(deviceIDString, data, *datalen, kCFStringEncodingUTF8);
-    *datalen = strlen(data);
+    *datalen = (int)strlen(data);
     CFRelease(deviceIDString);
   }
   *status  = CUPS_SC_STATUS_OK;
@@ -2346,5 +2348,5 @@ log_usb_class_driver(int is_64bit)        /* I - Is the USB class driver 64-bit? */
 
 
 /*
- * End of "$Id: usb-darwin.c 11670 2014-03-04 14:53:59Z msweet $".
+ * End of "$Id: usb-darwin.c 11669 2014-03-04 14:53:34Z msweet $".
  */
index 34c28999b75dcd28475edf55d401c19cdf693874..b0d996c0d8e5c8d8f13f745187bb87e4ccbb9684 100644 (file)
@@ -1,35 +1,15 @@
 /*
- * "$Id: usb-libusb.c 11456 2013-12-09 19:26:47Z msweet $"
+ * "$Id: usb-libusb.c 11594 2014-02-14 20:09:01Z msweet $"
  *
- *   LIBUSB interface code for CUPS.
+ * LIBUSB interface code for CUPS.
  *
- *   Copyright 2007-2013 by Apple Inc.
+ * Copyright 2007-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/".
- *
- * Contents:
- *
- *   list_devices()      - List the available printers.
- *   print_device()      - Print a file to a USB device.
- *   close_device()      - Close the connection to the USB printer.
- *   compare_quirks()    - Compare two quirks entries.
- *   find_device()       - Find or enumerate USB printers.
- *   find_quirks()       - Find the quirks for the given printer, if any.
- *   get_device_id()     - Get the IEEE-1284 device ID for the printer.
- *   list_cb()           - List USB printers for discovery.
- *   load_quirks()       - Load all quirks files in the /usr/share/cups/usb
- *                         directory.
- *   make_device_uri()   - Create a device URI for a USB printer.
- *   open_device()       - Open a connection to the USB printer.
- *   print_cb()          - Find a USB printer for printing.
- *   read_thread()       - Thread to read the backchannel data on.
- *   sidechannel_thread() - Handle side-channel requests.
- *   soft_reset()        - Send a soft reset to the device.
- *   soft_reset_printer() - Do the soft reset request specific to 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/".
  */
 
 /*
@@ -920,8 +900,8 @@ find_device(usb_cb_t   cb,          /* I - Callback function */
              fprintf(stderr, "DEBUG: Printer does not report class 7 and/or "
                      "subclass 1 but works as a printer anyway\n");
 
-           read_endp  = -1;
-           write_endp = -1;
+           read_endp  = 0xff;
+           write_endp = 0xff;
 
            for (endp = 0, endpptr = altptr->endpoint;
                 endp < altptr->bNumEndpoints;
@@ -1085,8 +1065,7 @@ get_device_id(usb_printer_t *printer,     /* I - Printer */
   * bytes.  The 1284 spec says the length is stored MSB first...
   */
 
-  length = (((unsigned)buffer[0] & 255) << 8) |
-          ((unsigned)buffer[1] & 255);
+  length = (int)((((unsigned)buffer[0] & 255) << 8) | ((unsigned)buffer[1] & 255));
 
  /*
   * Check to see if the length is larger than our buffer or less than 14 bytes
@@ -1097,8 +1076,7 @@ get_device_id(usb_printer_t *printer,     /* I - Printer */
   */
 
   if (length > bufsize || length < 14)
-    length = (((unsigned)buffer[1] & 255) << 8) |
-            ((unsigned)buffer[0] & 255);
+    length = (int)((((unsigned)buffer[1] & 255) << 8) | ((unsigned)buffer[0] & 255));
 
   if (length > bufsize)
     length = bufsize;
@@ -1120,7 +1098,7 @@ get_device_id(usb_printer_t *printer,     /* I - Printer */
   * nul-terminate.
   */
 
-  memmove(buffer, buffer + 2, length);
+  memmove(buffer, buffer + 2, (size_t)length);
   buffer[length] = '\0';
 
   return (0);
@@ -1734,7 +1712,7 @@ static void *read_thread(void *reference)
     {
       fprintf(stderr, "DEBUG: Read %d bytes of back-channel data...\n",
               (int)rbytes);
-      cupsBackChannelWrite((const char *)readbuffer, rbytes, 1.0);
+      cupsBackChannelWrite((const char *)readbuffer, (size_t)rbytes, 1.0);
     }
     else if (readstatus == LIBUSB_ERROR_TIMEOUT)
       fputs("DEBUG: Got USB transaction timeout during read.\n", stderr);
@@ -2021,6 +1999,6 @@ soft_reset_printer(
 
 
 /*
- * End of "$Id: usb-libusb.c 11456 2013-12-09 19:26:47Z msweet $".
+ * End of "$Id: usb-libusb.c 11594 2014-02-14 20:09:01Z msweet $".
  */
 
index 2033800497b2b65712e5f044132ae565eb0061ae..5e63a0e41eaa50a17e0f625ef16986f950b6e8b2 100644 (file)
@@ -1,27 +1,20 @@
 /*
- * "$Id: usb-unix.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: usb-unix.c 11342 2013-10-18 20:36:01Z msweet $"
  *
- *   USB port backend for CUPS.
+ * USB port backend for CUPS.
  *
- *   This file is included from "usb.c" when compiled on UNIX/Linux.
+ * This file is included from "usb.c" when compiled on UNIX/Linux.
  *
- *   Copyright 2007-2012 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"
- *   "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:
- *
- *   print_device() - Print a file to a USB device.
- *   list_devices() - List all USB devices.
- *   open_device()  - Open a USB device...
- *   side_cb()      - Handle side-channel requests...
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -285,8 +278,6 @@ list_devices(void)
       close(fd);
     }
   }
-#elif defined(__hpux)
-#elif defined(__osf)
 #elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD_kernel__)
   int   i;                      /* Looping var */
   char  device[255];            /* Device filename */
@@ -612,5 +603,5 @@ side_cb(int         print_fd,               /* I - Print file */
 
 
 /*
- * End of "$Id: usb-unix.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: usb-unix.c 11342 2013-10-18 20:36:01Z msweet $".
  */
index 46b71d9241afeb116cdd265cf98274a2ce093c41..76b1f2a5e791f044a943b3dc70814ebf9e250b9b 100644 (file)
@@ -1,25 +1,28 @@
 lpc.o: lpc.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
-  ../cups/debug-private.h ../cups/versioning.h ../cups/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 lpq.o: lpq.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
-  ../cups/debug-private.h ../cups/versioning.h ../cups/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 lpr.o: lpr.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
-  ../cups/debug-private.h ../cups/versioning.h ../cups/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 lprm.o: lprm.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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
index ffd76296a6ced009008ab0a92cfe1593f89f6b51..72b0f717dc6803b4b43a64377b73cb761fcffe7e 100644 (file)
@@ -1,24 +1,16 @@
 /*
- * "$Id: lpc.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: lpc.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   "lpc" command for CUPS.
+ * "lpc" command for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 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 commands.
- *   compare_strings() - Compare two command-line strings.
- *   do_command()      - Do an lpc command...
- *   show_help()       - Show help messages.
- *   show_status()     - Show 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/".
  */
 
 /*
@@ -32,7 +24,7 @@
  * Local functions...
  */
 
-static int     compare_strings(const char *, const char *, int);
+static int     compare_strings(const char *, const char *, size_t);
 static void    do_command(http_t *, const char *, const char *);
 static void    show_help(const char *);
 static void    show_status(http_t *, const char *);
@@ -158,9 +150,9 @@ main(int  argc,                             /* I - Number of command-line arguments */
 static int                             /* O - -1 or 1 = no match, 0 = match */
 compare_strings(const char *s,         /* I - Command-line string */
                 const char *t,         /* I - Option string */
-                int        tmin)       /* I - Minimum number of unique chars in option */
+                size_t     tmin)       /* I - Minimum number of unique chars in option */
 {
-  int  slen;                           /* Length of command-line string */
+  size_t       slen;                   /* Length of command-line string */
 
 
   slen = strlen(s);
@@ -446,5 +438,5 @@ show_status(http_t     *http,               /* I - HTTP connection to server */
 
 
 /*
- * End of "$Id: lpc.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: lpc.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 1cde7b071e89b14b37987aaff6f3607a9e0ff598..0cb90476d7e8e008a2ff329cfc9acabe9dee5040 100644 (file)
@@ -1,27 +1,16 @@
 /*
- * "$Id: lpq.c 11101 2013-07-08 11:20:33Z msweet $"
+ * "$Id: lpq.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   "lpq" command for CUPS.
+ * "lpq" command for CUPS.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 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 commands.
- *   show_jobs()    - Show jobs.
- *   show_printer() - Show printer status.
- *   usage()        - Show program usage.
- */
-
-/*
- * Include necessary headers...
+ * These coded instructions, statements, and computer programs 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/".
  */
 
 /*
@@ -194,7 +183,6 @@ main(int  argc,                             /* I - Number of command-line arguments */
            httpClose(http);
 
            usage();
-           break;
       }
     }
     else if (isdigit(argv[i][0] & 255))
@@ -262,7 +250,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
     if (i && interval)
     {
       fflush(stdout);
-      sleep(interval);
+      sleep((unsigned)interval);
     }
     else
       break;
@@ -323,9 +311,6 @@ show_jobs(const char *command,              /* I - Command name */
   ipp_jstate_t jobstate;               /* job-state */
   int          jobid,                  /* job-id */
                jobsize,                /* job-k-octets */
-#ifdef __osf__
-               jobpriority,            /* job-priority */
-#endif /* __osf__ */
                jobcount,               /* Number of jobs */
                jobcopies,              /* Number of copies */
                rank;                   /* Rank of job */
@@ -448,9 +433,6 @@ show_jobs(const char *command,              /* I - Command name */
 
       jobid       = 0;
       jobsize     = 0;
-#ifdef __osf__
-      jobpriority = 50;
-#endif /* __osf__ */
       jobstate    = IPP_JOB_PENDING;
       jobname     = "unknown";
       jobuser     = "unknown";
@@ -467,12 +449,6 @@ show_jobs(const char *command,             /* I - Command name */
            attr->value_tag == IPP_TAG_INTEGER)
          jobsize = attr->values[0].integer;
 
-#ifdef __osf__
-        if (!strcmp(attr->name, "job-priority") &&
-           attr->value_tag == IPP_TAG_INTEGER)
-         jobpriority = attr->values[0].integer;
-#endif /* __osf__ */
-
         if (!strcmp(attr->name, "job-state") &&
            attr->value_tag == IPP_TAG_ENUM)
          jobstate = (ipp_jstate_t)attr->values[0].integer;
@@ -510,16 +486,9 @@ show_jobs(const char *command,             /* I - Command name */
       }
 
       if (!longstatus && jobcount == 0)
-#ifdef __osf__
-       _cupsLangPuts(stdout,
-                     /* TRANSLATORS: Pri is job priority. */
-                     _("Rank   Owner      Pri  Job        Files"
-                       "                       Total Size"));
-#else
        _cupsLangPuts(stdout,
                      _("Rank    Owner   Job     File(s)"
                        "                         Total Size"));
-#endif /* __osf__ */
 
       jobcount ++;
 
@@ -560,16 +529,9 @@ show_jobs(const char *command,             /* I - Command name */
                        namestr, 1024.0 * jobsize);
       }
       else
-#ifdef __osf__
-        _cupsLangPrintf(stdout,
-                       _("%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"),
-                       rankstr, jobuser, jobpriority, jobid, jobname,
-                       1024.0 * jobsize);
-#else
         _cupsLangPrintf(stdout,
                        _("%-7s %-7.7s %-7d %-31.31s %.0f bytes"),
                        rankstr, jobuser, jobid, jobname, 1024.0 * jobsize);
-#endif /* __osf */
 
       if (attr == NULL)
         break;
@@ -679,5 +641,5 @@ usage(void)
 
 
 /*
- * End of "$Id: lpq.c 11101 2013-07-08 11:20:33Z msweet $".
+ * End of "$Id: lpq.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index a90818d34025a8e5d249c08f25688a215594edec..24242ca9977d693e475f579be950c9725b3c18b8 100644 (file)
@@ -1,20 +1,16 @@
 /*
- * "$Id: lpr.c 11101 2013-07-08 11:20:33Z msweet $"
+ * "$Id: lpr.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   "lpr" command for CUPS.
+ * "lpr" command for CUPS.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
+ * Copyright 2007-2014 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() - Parse options and send files for printing.
+ * These coded instructions, statements, and computer programs 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/".
  */
 
 /*
@@ -406,7 +402,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
     while (status == HTTP_CONTINUE &&
            (bytes = read(0, buffer, sizeof(buffer))) > 0)
-      status = cupsWriteRequestData(CUPS_HTTP_DEFAULT, buffer, bytes);
+      status = cupsWriteRequestData(CUPS_HTTP_DEFAULT, buffer, (size_t)bytes);
 
     if (status != HTTP_CONTINUE)
     {
@@ -436,5 +432,5 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
 
 /*
- * End of "$Id: lpr.c 11101 2013-07-08 11:20:33Z msweet $".
+ * End of "$Id: lpr.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index ff16e4849083836d45d9d7fa7865b63e243a5be6..66ffa01e195a2c8b0f830c59ba845ceabe4d8bad 100644 (file)
@@ -1,73 +1,72 @@
 help-index.o: help-index.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 help-index.h \
+  ../cups/array.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/dir.h
 html.o: html.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 help-index.h ../cups/debug-private.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
 ipp-var.o: ipp-var.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 help-index.h ../cups/debug-private.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
 search.o: search.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 help-index.h ../cups/debug-private.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
 template.o: template.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 help-index.h ../cups/debug-private.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
 var.o: var.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 help-index.h ../cups/debug-private.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/md5-private.h
 admin.o: admin.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 help-index.h ../cups/debug-private.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
 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 help-index.h ../cups/debug-private.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
 help.o: help.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 help-index.h ../cups/debug-private.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
 jobs.o: jobs.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 help-index.h ../cups/debug-private.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
-makedocset.o: makedocset.c cgi.h ../cups/cups.h ../cups/file.h \
-  ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/language.h help-index.h
+makedocset.o: makedocset.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 ../cups/language-private.h ../cups/transcode.h \
+  ../cups/string-private.h ../config.h ../cups/ipp-private.h
 printers.o: printers.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 help-index.h ../cups/debug-private.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
 testcgi.o: testcgi.c cgi.h ../cups/cups.h ../cups/file.h \
   ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/language.h help-index.h
+  ../cups/language.h ../cups/pwg.h help-index.h
 testhi.o: testhi.c cgi.h ../cups/cups.h ../cups/file.h \
   ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/language.h help-index.h
+  ../cups/language.h ../cups/pwg.h help-index.h
 testtemplate.o: testtemplate.c cgi.h ../cups/cups.h ../cups/file.h \
   ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/language.h help-index.h
-websearch.o: websearch.c cgi.h ../cups/cups.h ../cups/file.h \
-  ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/language.h help-index.h
+  ../cups/language.h ../cups/pwg.h help-index.h
index 64635a375c3a4e3e3a3da341a3e0a29d7a714294..342a8a53df1d1bac5f2e745a4df8d18a6898fa07 100644 (file)
@@ -1,16 +1,16 @@
 #
-# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
+# "$Id: Makefile 11777 2014-03-28 19:18:10Z msweet $"
 #
-#   CGI makefile for CUPS.
+# CGI makefile for CUPS.
 #
-#   Copyright 2007-2012 by Apple Inc.
-#   Copyright 1997-2006 by Easy Software Products.
+# Copyright 2007-2014 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/".
 #
 
 include ../Makedefs
@@ -32,8 +32,7 @@ OBJS  =       \
                printers.o \
                testcgi.o \
                testhi.o \
-               testtemplate.o \
-               websearch.o
+               testtemplate.o
 CGIS   =       \
                admin.cgi \
                classes.cgi \
@@ -42,8 +41,7 @@ CGIS  =       \
                printers.cgi
 LIBTARGETS =   \
                libcupscgi.a \
-               $(LIBCUPSCGI) \
-               websearch
+               $(LIBCUPSCGI)
 
 UNITTARGETS =  \
                testcgi \
@@ -82,7 +80,7 @@ unittests:    $(UNITTARGETS)
 
 clean:
        $(RM) $(OBJS) $(TARGETS) $(UNITTARGETS) makedocset
-       $(RM) libcupscgi.so libcupscgi.sl libcupscgi.dylib
+       $(RM) libcupscgi.so libcupscgi.dylib
 
 
 #
@@ -144,7 +142,7 @@ install-libs: $(INSTALLSTATIC)
        echo Installing libraries in $(LIBDIR)...
        $(INSTALL_DIR) -m 755 $(LIBDIR)
        $(INSTALL_LIB) $(LIBCUPSCGI) $(LIBDIR)
-       if test $(LIBCUPSCGI) = "libcupscgi.so.1" -o $(LIBCUPSCGI) = "libcupscgi.sl.1"; then \
+       if test $(LIBCUPSCGI) = "libcupscgi.so.1"; then \
                $(RM) $(LIBDIR)/`basename $(LIBCUPSCGI) .1`; \
                $(LN) $(LIBCUPSCGI) $(LIBDIR)/`basename $(LIBCUPSCGI) .1`; \
        fi
@@ -177,9 +175,6 @@ uninstall:
        $(RM) $(LIBDIR)/libcupscgi.1.dylib
        $(RM) $(LIBDIR)/libcupscgi.a
        $(RM) $(LIBDIR)/libcupscgi.dylib
-       $(RM) $(LIBDIR)/libcupscgi_s.a
-       $(RM) $(LIBDIR)/libcupscgi.sl
-       $(RM) $(LIBDIR)/libcupscgi.sl.1
        $(RM) $(LIBDIR)/libcupscgi.so
        $(RM) $(LIBDIR)/libcupscgi.so.1
        -$(RMDIR) $(LIBDIR)
@@ -211,10 +206,10 @@ framedhelp:
 
 
 #
-# libcupscgi.so.1, libcupscgi.sl.1
+# libcupscgi.so.1
 #
 
-libcupscgi.so.1 libcupscgi.sl.1:       $(LIBOBJS)
+libcupscgi.so.1:       $(LIBOBJS)
        echo Linking $@...
        $(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS) $(LIBS)
        $(RM) `basename $@ .1`
@@ -237,17 +232,6 @@ libcupscgi.1.dylib:        $(LIBOBJS) libcupscgi.exp
        $(LN) $@ libcupscgi.dylib
 
 
-#
-# libcupscgi_s.a
-#
-
-libcupscgi_s.a:        $(LIBOBJS)
-       echo Creating $@...
-       $(DSO) $(DSOFLAGS) -o libcupscgi_s.o $(LIBOBJS) $(LIBS)
-       $(RM) $@
-       $(AR) $(ARFLAGS) $@ libcupscgi_s.o
-
-
 #
 # libcupscgi.la
 #
@@ -361,17 +345,6 @@ testtemplate:      testtemplate.o ../Makedefs libcupscgi.a ../cups/$(LIBCUPSSTATIC)
                $(COMMONLIBS) $(SSLLIBS) $(DNSSDLIBS) $(LIBZ) $(LIBGSSAPI)
 
 
-#
-# websearch
-#
-
-websearch:     websearch.o ../Makedefs libcupscgi.a ../cups/$(LIBCUPSSTATIC)
-       echo Linking $@...
-       $(CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ websearch.o libcupscgi.a \
-               ../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(SSLLIBS) $(DNSSDLIBS) \
-               $(LIBZ) $(LIBGSSAPI)
-
-
 #
 # Dependencies...
 #
@@ -380,5 +353,5 @@ include Dependencies
 
 
 #
-# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
+# End of "$Id: Makefile 11777 2014-03-28 19:18:10Z msweet $".
 #
index 490a46bbeac79091f937c64874ec3522628924cf..b4ed294f5a04992c38a5708c09eafac20a14a234 100644 (file)
@@ -1,37 +1,16 @@
 /*
- * "$Id: admin.c 11345 2013-10-18 21:14:52Z msweet $"
+ * "$Id: admin.c 11594 2014-02-14 20:09:01Z msweet $"
  *
- *   Administration CGI for CUPS.
+ * Administration CGI for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
+ * Copyright 2007-2014 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()                    - Main entry for CGI.
- *   choose_device_cb()        - Add a device to the device selection page.
- *   do_add_rss_subscription() - Add a RSS subscription.
- *   do_am_class()             - Add or modify a class.
- *   do_am_printer()           - Add or modify a printer.
- *   do_cancel_subscription()  - Cancel a subscription.
- *   do_config_server()        - Configure server settings.
- *   do_delete_class()         - Delete a class.
- *   do_delete_printer()       - Delete a printer.
- *   do_export()               - Export printers to Samba.
- *   do_list_printers()        - List available printers.
- *   do_menu()                 - Show the main menu.
- *   do_set_allowed_users()    - Set the allowed/denied users for a queue.
- *   do_set_default()          - Set the server default printer/class.
- *   do_set_options()          - Configure the default options for a queue.
- *   do_set_sharing()          - Set printer-is-shared value.
- *   get_option_value()        - Return the value of an option.
- *   get_points()              - Get a value in points.
+ * These coded instructions, statements, and computer programs 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/".
  */
 
 /*
@@ -89,8 +68,7 @@ static double get_points(double number, const char *uval);
  */
 
 int                                    /* O - Exit status */
-main(int  argc,                                /* I - Number of command-line arguments */
-     char *argv[])                     /* I - Command-line arguments */
+main(void)
 {
   http_t       *http;                  /* Connection to the server */
   const char   *op;                    /* Operation name */
@@ -1172,7 +1150,7 @@ do_am_printer(http_t *http,               /* I - HTTP connection */
       char             filename[1024]; /* PPD filename */
       ppd_file_t       *ppd;           /* PPD information */
       char             buffer[1024];   /* Buffer */
-      int              bytes;          /* Number of bytes */
+      ssize_t          bytes;          /* Number of bytes */
       http_status_t    get_status;     /* Status of GET */
 
 
@@ -1194,7 +1172,7 @@ do_am_printer(http_t *http,               /* I - HTTP connection */
       else if ((fd = cupsTempFd(filename, sizeof(filename))) >= 0)
       {
        while ((bytes = httpRead2(http, buffer, sizeof(buffer))) > 0)
-          write(fd, buffer, bytes);
+          write(fd, buffer, (size_t)bytes);
 
        close(fd);
 
@@ -1211,8 +1189,10 @@ do_am_printer(http_t *http,              /* I - HTTP connection */
        }
        else
        {
+         int linenum;                  /* Line number */
+
          fprintf(stderr, "ERROR: Unable to open PPD file %s: %s\n",
-                 filename, ppdErrorString(ppdLastError(&bytes)));
+                 filename, ppdErrorString(ppdLastError(&linenum)));
        }
       }
       else
@@ -1380,7 +1360,7 @@ do_am_printer(http_t *http,               /* I - HTTP connection */
       if ((uriptr = strchr(uri, '?')) == NULL)
         uriptr = uri + strlen(uri);
 
-      snprintf(uriptr, sizeof(uri) - (uriptr - uri),
+      snprintf(uriptr, sizeof(uri) - (size_t)(uriptr - uri),
                "?baud=%s+bits=%s+parity=%s+flow=%s",
                cgiGetVariable("BAUDRATE"), cgiGetVariable("BITS"),
               cgiGetVariable("PARITY"), cgiGetVariable("FLOW"));
@@ -1881,7 +1861,7 @@ do_config_server(http_t *http)            /* I - HTTP connection */
         if ((end = strstr(start, "\n")) == NULL)
          end = start + strlen(start);
 
-      cupsFileWrite(temp, start, end - start);
+      cupsFileWrite(temp, start, (size_t)(end - start));
       cupsFilePutChar(temp, '\n');
 
       if (*end == '\r')
@@ -2006,9 +1986,9 @@ do_config_server(http_t *http)            /* I - HTTP connection */
     * Allocate memory and load the file into a string buffer...
     */
 
-    if ((buffer = calloc(1, info.st_size + 1)) != NULL)
+    if ((buffer = calloc(1, (size_t)info.st_size + 1)) != NULL)
     {
-      cupsFileRead(cupsd, buffer, info.st_size);
+      cupsFileRead(cupsd, buffer, (size_t)info.st_size);
       cgiSetVariable("CUPSDCONF", buffer);
       free(buffer);
     }
@@ -2025,7 +2005,7 @@ do_config_server(http_t *http)            /* I - HTTP connection */
     if (!stat(filename, &info) && info.st_size < (1024 * 1024) &&
         (cupsd = cupsFileOpen(filename, "r")) != NULL)
     {
-      if ((buffer = calloc(1, 2 * info.st_size + 1)) != NULL)
+      if ((buffer = calloc(1, 2 * (size_t)info.st_size + 1)) != NULL)
       {
        bufend = buffer + 2 * info.st_size - 1;
 
@@ -2035,7 +2015,7 @@ do_config_server(http_t *http)            /* I - HTTP connection */
          if (ch == '\\' || ch == '\"')
          {
            *bufptr++ = '\\';
-           *bufptr++ = ch;
+           *bufptr++ = (char)ch;
          }
          else if (ch == '\n')
          {
@@ -2048,7 +2028,7 @@ do_config_server(http_t *http)            /* I - HTTP connection */
            *bufptr++ = 't';
          }
          else if (ch >= ' ')
-           *bufptr++ = ch;
+           *bufptr++ = (char)ch;
        }
 
        *bufptr = '\0';
@@ -3882,7 +3862,7 @@ do_set_sharing(http_t *http)              /* I - HTTP connection */
   ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
                NULL, uri);
 
-  ippAddBoolean(request, IPP_TAG_OPERATION, "printer-is-shared", atoi(shared));
+  ippAddBoolean(request, IPP_TAG_OPERATION, "printer-is-shared", (char)atoi(shared));
 
  /*
   * Do the request and get back a response...
@@ -4096,7 +4076,7 @@ get_option_value(
       if ((val = cgiGetVariable(keyword)) == NULL)
        return (NULL);
 
-      snprintf(bufptr, bufend - bufptr, "%s%s=", prefix, cparam->name);
+      snprintf(bufptr, (size_t)(bufend - bufptr), "%s%s=", prefix, cparam->name);
       bufptr += strlen(bufptr);
       prefix = " ";
 
@@ -4110,7 +4090,7 @@ get_option_value(
                number > cparam->maximum.custom_real)
              return (NULL);
 
-           snprintf(bufptr, bufend - bufptr, "%g", number);
+           snprintf(bufptr, (size_t)(bufend - bufptr), "%g", number);
            break;
 
        case PPD_CUSTOM_INT :
@@ -4120,7 +4100,7 @@ get_option_value(
                integer > cparam->maximum.custom_int)
              return (NULL);
 
-           snprintf(bufptr, bufend - bufptr, "%ld", integer);
+           snprintf(bufptr, (size_t)(bufend - bufptr), "%ld", integer);
            break;
 
        case PPD_CUSTOM_POINTS :
@@ -4138,7 +4118,7 @@ get_option_value(
                number_points > cparam->maximum.custom_points)
              return (NULL);
 
-           snprintf(bufptr, bufend - bufptr, "%g%s", number, uval);
+           snprintf(bufptr, (size_t)(bufend - bufptr), "%g%s", number, uval);
            break;
 
        case PPD_CUSTOM_PASSCODE :
@@ -4218,5 +4198,5 @@ get_points(double     number,             /* I - Original number */
 
 
 /*
- * End of "$Id: admin.c 11345 2013-10-18 21:14:52Z msweet $".
+ * End of "$Id: admin.c 11594 2014-02-14 20:09:01Z msweet $".
  */
index eb280df3833c810540243b8ce85b7288e5696557..0af538b2fcde47841f7e6442427aa3c4ae785dbe 100644 (file)
@@ -1,23 +1,16 @@
 /*
- * "$Id: classes.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: classes.c 11928 2014-06-13 00:08:32Z msweet $"
  *
- *   Class status CGI for CUPS.
+ * Class status CGI for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 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.
- *   do_class_op()      - Do a class operation.
- *   show_all_classes() - Show all classes...
- *   show_class()       - Show a single class.
+ * These coded instructions, statements, and computer programs 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 +35,7 @@ static void   show_class(http_t *http, const char *printer);
  */
 
 int                                    /* O - Exit status */
-main(int  argc,                                /* I - Number of command-line arguments */
-     char *argv[])                     /* I - Command-line arguments */
+main(void)
 {
   const char   *pclass;                /* Class name */
   const char   *user;                  /* Username */
@@ -169,8 +161,8 @@ main(int  argc,                             /* I - Number of command-line arguments */
       do_class_op(http, pclass, CUPS_ACCEPT_JOBS, cgiText(_("Accept Jobs")));
     else if (!strcmp(op, "reject-jobs"))
       do_class_op(http, pclass, CUPS_REJECT_JOBS, cgiText(_("Reject Jobs")));
-    else if (!strcmp(op, "purge-jobs"))
-      do_class_op(http, pclass, IPP_PURGE_JOBS, cgiText(_("Purge Jobs")));
+    else if (!strcmp(op, "cancel-jobs"))
+      do_class_op(http, pclass, IPP_OP_CANCEL_JOBS, cgiText(_("Cancel Jobs")));
     else if (!_cups_strcasecmp(op, "print-test-page"))
       cgiPrintTestPage(http, pclass);
     else if (!_cups_strcasecmp(op, "move-jobs"))
@@ -286,8 +278,8 @@ do_class_op(http_t      *http,              /* I - HTTP connection */
       cgiCopyTemplateLang("printer-accept.tmpl");
     else if (op == CUPS_REJECT_JOBS)
       cgiCopyTemplateLang("printer-reject.tmpl");
-    else if (op == IPP_PURGE_JOBS)
-      cgiCopyTemplateLang("printer-purge.tmpl");
+    else if (op == IPP_OP_CANCEL_JOBS)
+      cgiCopyTemplateLang("printer-cancel-jobs.tmpl");
   }
 
   cgiEndHTML();
@@ -554,5 +546,5 @@ show_class(http_t     *http,                /* I - Connection to server */
 
 
 /*
- * End of "$Id: classes.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: classes.c 11928 2014-06-13 00:08:32Z msweet $".
  */
index 997d22fadb02ef7a0bc48ef4dab3bc248b060cb3..50cac45d6790b95eb65669a5329685ae4739c6c2 100644 (file)
@@ -1,34 +1,16 @@
 /*
- * "$Id: help-index.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: help-index.c 11594 2014-02-14 20:09:01Z msweet $"
  *
- *   Online help index routines for CUPS.
+ * Online help index routines for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   helpDeleteIndex()          - Delete an index, freeing all memory used.
- *   helpFindNode()             - Find a node in an index.
- *   helpLoadIndex()            - Load a help index from disk.
- *   helpSaveIndex()            - Save a help index to disk.
- *   helpSearchIndex()          - Search an index.
- *   help_add_word()            - Add a word to a node.
- *   help_compile_search()      - Convert a search string into a regular expression.
- *   help_delete_node()         - Free all memory used by a node.
- *   help_delete_word()         - Free all memory used by a word.
- *   help_load_directory()      - Load a directory of files into an index.
- *   help_load_file()           - Load a HTML files into an index.
- *   help_new_node()            - Create a new node and add it to an index.
- *   help_sort_nodes_by_name()  - Sort nodes by section, filename, and anchor.
- *   help_sort_nodes_by_score() - Sort nodes by score and text.
- *   help_sort_words()          - Sort words alphabetically.
+ * These coded instructions, statements, and computer programs 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/".
  */
 
 /*
@@ -346,7 +328,7 @@ helpLoadIndex(const char *hifile,   /* I - Index filename */
            mtime = strtol(ptr, &ptr, 10);
 
          offset = strtoll(ptr, &ptr, 10);
-         length = strtoll(ptr, &ptr, 10);
+         length = (size_t)strtoll(ptr, &ptr, 10);
 
          while (isspace(*ptr & 255))
             ptr ++;
@@ -1019,14 +1001,14 @@ help_load_file(
 
         *ptr++ = ' ';
 
-        if (!cupsFileGets(fp, ptr, sizeof(line) - (ptr - line) - 1))
+        if (!cupsFileGets(fp, ptr, sizeof(line) - (size_t)(ptr - line) - 1))
          break;
       }
 
       *ptr = '\0';
 
       if (node)
-       node->length = offset - node->offset;
+       node->length = (size_t)(offset - node->offset);
 
       if (!*text)
       {
@@ -1179,9 +1161,9 @@ help_load_file(
 
        for (text = ptr, ptr ++; *ptr && isalnum(*ptr & 255); ptr ++);
 
-       wordlen = ptr - text;
+       wordlen = (int)(ptr - text);
 
-        memcpy(temp, text, wordlen);
+        memcpy(temp, text, (size_t)wordlen);
        temp[wordlen] = '\0';
 
         ptr --;
@@ -1206,7 +1188,7 @@ help_load_file(
   cupsFileClose(fp);
 
   if (node)
-    node->length = offset - node->offset;
+    node->length = (size_t)(offset - node->offset);
 
   return (0);
 }
@@ -1324,5 +1306,5 @@ help_sort_words(help_word_t *w1,  /* I - Second word */
 
 
 /*
- * End of "$Id: help-index.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: help-index.c 11594 2014-02-14 20:09:01Z msweet $".
  */
index 90fd39f2572f5b5e4316ea823e7ed3e32e29b842..ae47c9b85b7aebcdbb4e897524673d33fca25d4d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: ipp-var.c 11890 2014-05-22 13:59:21Z msweet $"
+ * "$Id: ipp-var.c 11889 2014-05-22 13:54:15Z msweet $"
  *
  * CGI <-> IPP variable routines for CUPS.
  *
@@ -50,7 +50,7 @@ cgiGetAttributes(ipp_t      *request, /* I - IPP request */
   {
     for (i = 0; lang[i] && i < 15; i ++)
       if (isalnum(lang[i] & 255))
-        locale[i] = tolower(lang[i]);
+        locale[i] = (char)tolower(lang[i]);
       else
         locale[i] = '_';
 
@@ -92,7 +92,7 @@ cgiGetAttributes(ipp_t      *request, /* I - IPP request */
   while ((ch = getc(in)) != EOF)
     if (ch == '\\')
       getc(in);
-    else if (ch == '{' && num_attrs < (sizeof(attrs) / sizeof(attrs[0])))
+    else if (ch == '{' && num_attrs < (int)(sizeof(attrs) / sizeof(attrs[0])))
     {
      /*
       * Grab the name...
@@ -108,7 +108,7 @@ cgiGetAttributes(ipp_t      *request,       /* I - IPP request */
          if (ch == '_')
            *nameptr++ = '-';
          else
-            *nameptr++ = ch;
+            *nameptr++ = (char)ch;
        }
 
       *nameptr = '\0';
@@ -902,7 +902,7 @@ cgiRewriteURL(const char *uri,              /* I - Current URI */
       * Make URI relative to the current server...
       */
 
-      strlcpy(url, resource, urlsize);
+      strlcpy(url, resource, (size_t)urlsize);
     }
     else
     {
@@ -911,17 +911,13 @@ cgiRewriteURL(const char *uri,            /* I - Current URI */
       */
 
       if (userpass[0])
-       snprintf(url, urlsize, "%s://%s@%s:%d%s",
-                ishttps ? "https" : "http",
-                userpass, hostname, port, resource);
+       snprintf(url, (size_t)urlsize, "%s://%s@%s:%d%s", ishttps ? "https" : "http", userpass, hostname, port, resource);
       else
-       snprintf(url, urlsize, "%s://%s:%d%s",
-                ishttps ? "https" : "http",
-                hostname, port, resource);
+       snprintf(url, (size_t)urlsize, "%s://%s:%d%s", ishttps ? "https" : "http", hostname, port, resource);
     }
   }
   else
-    strlcpy(url, uri, urlsize);
+    strlcpy(url, uri, (size_t)urlsize);
 
   return (url);
 }
@@ -1023,7 +1019,7 @@ cgiSetIPPObjectVars(
          *valptr++ = ' ';
         }
 
-        remaining = sizeof(value) - (valptr - value);
+        remaining = sizeof(value) - (size_t)(valptr - value);
 
         if (!strcmp(attr->values[i].string.text, "printer-stopped"))
          strlcpy(valptr, _("Printer Paused"), remaining);
@@ -1161,7 +1157,7 @@ cgiSetIPPObjectVars(
     for (i = 0; i < attr->num_values; i ++)
     {
       if (i)
-       strlcat(valptr, ", ", sizeof(value) - (valptr - value));
+       strlcat(valptr, ", ", sizeof(value) - (size_t)(valptr - value));
 
       valptr += strlen(valptr);
 
@@ -1176,22 +1172,22 @@ cgiSetIPPObjectVars(
            break;
 
        case IPP_TAG_BOOLEAN :
-           snprintf(valptr, sizeof(value) - (valptr - value),
+           snprintf(valptr, sizeof(value) - (size_t)(valptr - value),
                     "%d", attr->values[i].boolean);
            break;
 
        case IPP_TAG_NOVALUE :
-           strlcat(valptr, "novalue", sizeof(value) - (valptr - value));
+           strlcat(valptr, "novalue", sizeof(value) - (size_t)(valptr - value));
            break;
 
        case IPP_TAG_RANGE :
-           snprintf(valptr, sizeof(value) - (valptr - value),
+           snprintf(valptr, sizeof(value) - (size_t)(valptr - value),
                     "%d-%d", attr->values[i].range.lower,
                     attr->values[i].range.upper);
            break;
 
        case IPP_TAG_RESOLUTION :
-           snprintf(valptr, sizeof(value) - (valptr - value),
+           snprintf(valptr, sizeof(value) - (size_t)(valptr - value),
                     "%dx%d%s", attr->values[i].resolution.xres,
                     attr->values[i].resolution.yres,
                     attr->values[i].resolution.units == IPP_RES_PER_INCH ?
@@ -1214,13 +1210,13 @@ cgiSetIPPObjectVars(
                cgiRewriteURL(attr->values[i].string.text, url,
                              sizeof(url), NULL);
 
-                snprintf(valptr, sizeof(value) - (valptr - value),
+                snprintf(valptr, sizeof(value) - (size_t)(valptr - value),
                         "<A HREF=\"%s\">%s</A>", url,
                         strrchr(attr->values[i].string.text, '/') + 1);
              }
              else
                cgiRewriteURL(attr->values[i].string.text, valptr,
-                             sizeof(value) - (valptr - value), NULL);
+                             (int)(sizeof(value) - (size_t)(valptr - value)), NULL);
               break;
             }
 
@@ -1232,7 +1228,7 @@ cgiSetIPPObjectVars(
        case IPP_TAG_LANGUAGE :
        case IPP_TAG_MIMETYPE :
            strlcat(valptr, attr->values[i].string.text,
-                   sizeof(value) - (valptr - value));
+                   sizeof(value) - (size_t)(valptr - value));
            break;
 
         case IPP_TAG_BEGIN_COLLECTION :
@@ -1565,5 +1561,5 @@ cgiText(const char *message)              /* I - Message */
 
 
 /*
- * End of "$Id: ipp-var.c 11890 2014-05-22 13:59:21Z msweet $".
+ * End of "$Id: ipp-var.c 11889 2014-05-22 13:54:15Z msweet $".
  */
index ccff8cf8678f91eed6c976f5ff9eaba1491f9a98..383532d8b85b1bb943e892aac1c408454b0dabc5 100644 (file)
@@ -1,21 +1,16 @@
 /*
- * "$Id: jobs.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: jobs.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Job status CGI for CUPS.
+ * Job status CGI for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 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.
- *   do_job_op() - Do a job operation.
+ * These coded instructions, statements, and computer programs 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,8 +32,7 @@ static void   do_job_op(http_t *http, int job_id, ipp_op_t op);
  */
 
 int                                    /* O - Exit status */
-main(int  argc,                                /* I - Number of command-line arguments */
-     char *argv[])                     /* I - Command-line arguments */
+main(void)
 {
   http_t       *http;                  /* Connection to the server */
   const char   *op;                    /* Operation name */
@@ -210,5 +204,5 @@ do_job_op(http_t      *http,                /* I - HTTP connection */
 
 
 /*
- * End of "$Id: jobs.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: jobs.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index d690c45733bdc92c192460de0c1e7e1c8ab65848..9cfd44c4e0da458fd76e930c9ed77a5040cbcf41 100644 (file)
@@ -1,23 +1,16 @@
 /*
- * "$Id: printers.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: printers.c 11928 2014-06-13 00:08:32Z msweet $"
  *
- *   Printer status CGI for CUPS.
+ * Printer status CGI for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 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.
- *   do_printer_op()     - Do a printer operation.
- *   show_all_printers() - Show all printers...
- *   show_printer()      - Show a single printer.
+ * These coded instructions, statements, and computer programs 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,8 +36,7 @@ static void   show_printer(http_t *http, const char *printer);
  */
 
 int                                    /* O - Exit status */
-main(int  argc,                                /* I - Number of command-line arguments */
-     char *argv[])                     /* I - Command-line arguments */
+main(void)
 {
   const char   *printer;               /* Printer name */
   const char   *user;                  /* Username */
@@ -172,8 +164,8 @@ main(int  argc,                             /* I - Number of command-line arguments */
       do_printer_op(http, printer, CUPS_ACCEPT_JOBS, cgiText(_("Accept Jobs")));
     else if (!strcmp(op, "reject-jobs"))
       do_printer_op(http, printer, CUPS_REJECT_JOBS, cgiText(_("Reject Jobs")));
-    else if (!strcmp(op, "purge-jobs"))
-      do_printer_op(http, printer, IPP_PURGE_JOBS, cgiText(_("Purge Jobs")));
+    else if (!strcmp(op, "cancel-jobs"))
+      do_printer_op(http, printer, IPP_OP_CANCEL_JOBS, cgiText(_("Cancel Jobs")));
     else if (!_cups_strcasecmp(op, "print-self-test-page"))
       cgiPrintCommand(http, printer, "PrintSelfTestPage",
                       cgiText(_("Print Self-Test Page")));
@@ -293,8 +285,8 @@ do_printer_op(http_t      *http,    /* I - HTTP connection */
       cgiCopyTemplateLang("printer-accept.tmpl");
     else if (op == CUPS_REJECT_JOBS)
       cgiCopyTemplateLang("printer-reject.tmpl");
-    else if (op == IPP_PURGE_JOBS)
-      cgiCopyTemplateLang("printer-purge.tmpl");
+    else if (op == IPP_OP_CANCEL_JOBS)
+      cgiCopyTemplateLang("printer-cancel-jobs.tmpl");
   }
 
   cgiEndHTML();
@@ -574,5 +566,5 @@ show_printer(http_t     *http,              /* I - Connection to server */
 
 
 /*
- * End of "$Id: printers.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: printers.c 11928 2014-06-13 00:08:32Z msweet $".
  */
index ed67008a7b1b692930389d5188a3413ab2014a89..9a9343127ec1ca59e89e60a8410e59a4926f4ab4 100644 (file)
@@ -1,22 +1,16 @@
 /*
- * "$Id: search.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: search.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Search routines for CUPS.
+ * Search routines for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   cgiCompileSearch() - Compile a search string.
- *   cgiDoSearch()      - Do a search of some text.
- *   cgiFreeSearch()    - Free a compiled search context.
+ * These coded instructions, statements, and computer programs 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,12 +32,12 @@ cgiCompileSearch(const char *query) /* I - Query string */
   char         *s,                     /* Regular expression string */
                *sptr,                  /* Pointer into RE string */
                *sword;                 /* Pointer to start of word */
-  int          slen;                   /* Allocated size of RE string */
+  size_t       slen;                   /* Allocated size of RE string */
   const char   *qptr,                  /* Pointer into query string */
                *qend;                  /* End of current word */
   const char   *prefix;                /* Prefix to add to next word */
   int          quoted;                 /* Word is quoted */
-  int          wlen;                   /* Word length */
+  size_t       wlen;                   /* Word length */
   char         *lword;                 /* Last word in query */
 
 
@@ -139,7 +133,7 @@ cgiCompileSearch(const char *query) /* I - Query string */
       for (qend = qptr + 1; *qend && !isspace(*qend); qend ++);
     }
 
-    wlen = qend - qptr;
+    wlen = (size_t)(qend - qptr);
 
    /*
     * Look for logic words: AND, OR
@@ -174,7 +168,7 @@ cgiCompileSearch(const char *query) /* I - Query string */
       * string + RE overhead...
       */
 
-      wlen = (sptr - s) + 2 * 4 * wlen + 2 * strlen(prefix) + 11;
+      wlen = (size_t)(sptr - s) + 2 * 4 * wlen + 2 * strlen(prefix) + 11;
       if (lword)
         wlen += strlen(lword);
 
@@ -377,5 +371,5 @@ cgiFreeSearch(void *search)         /* I - Search context */
 
 
 /*
- * End of "$Id: search.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: search.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index bc350a386c247ebfc1bd9d1792874064f4b44a72..88343bd28f6cc154972ea27c69a7758c9b481bac 100644 (file)
@@ -1,27 +1,16 @@
 /*
- * "$Id: template.c 11688 2014-03-05 21:11:32Z msweet $"
+ * "$Id: template.c 11685 2014-03-05 20:03:29Z msweet $"
  *
- *   CGI template function.
+ * CGI template function.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   cgiCopyTemplateFile() - Copy a template file and replace all the
- *                           '{variable}' strings with the variable value.
- *   cgiCopyTemplateLang() - Copy a template file using a language...
- *   cgiGetTemplateDir()   - Get the templates directory...
- *   cgiSetServerVersion() - Set the server name and CUPS version...
- *   cgi_copy()            - Copy the template file, substituting as needed...
- *   cgi_puts()            - Put a string to the output file, quoting as
- *                           needed...
+ * These coded instructions, statements, and computer programs 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 "cgi-private.h"
@@ -266,7 +255,7 @@ cgi_copy(FILE *out,                 /* I - Output file */
         else if (s > name && ch == '?')
          break;
        else if (s < (name + sizeof(name) - 1))
-          *s++ = ch;
+          *s++ = (char)ch;
 
       *s = '\0';
 
@@ -443,7 +432,7 @@ cgi_copy(FILE *out,                 /* I - Output file */
       *   {name~refex?true:false}    Regex match
       */
 
-      op = ch;
+      op = (char)ch;
 
       if (ch == '?')
       {
@@ -486,7 +475,7 @@ cgi_copy(FILE *out,                 /* I - Output file */
            innerptr = innername;
            while ((ch = getc(in)) != EOF && ch != '}')
              if (innerptr < (innername + sizeof(innername) - 1))
-               *innerptr++ = ch;
+               *innerptr++ = (char)ch;
            *innerptr = '\0';
 
             if (innername[0] == '#')
@@ -498,26 +487,26 @@ cgi_copy(FILE *out,                       /* I - Output file */
              if ((innerval = cgiGetArray(innername, atoi(innerptr) - 1)) == NULL)
                *s = '\0';
              else
-               strlcpy(s, innerval, sizeof(compare) - (s - compare));
+               strlcpy(s, innerval, sizeof(compare) - (size_t)(s - compare));
            }
            else if (innername[0] == '?')
            {
              if ((innerval = cgiGetArray(innername + 1, element)) == NULL)
                *s = '\0';
              else
-               strlcpy(s, innerval, sizeof(compare) - (s - compare));
+               strlcpy(s, innerval, sizeof(compare) - (size_t)(s - compare));
             }
            else if ((innerval = cgiGetArray(innername, element)) == NULL)
-             snprintf(s, sizeof(compare) - (s - compare), "{%s}", innername);
+             snprintf(s, sizeof(compare) - (size_t)(s - compare), "{%s}", innername);
            else
-             strlcpy(s, innerval, sizeof(compare) - (s - compare));
+             strlcpy(s, innerval, sizeof(compare) - (size_t)(s - compare));
 
             s += strlen(s);
          }
           else if (ch == '\\')
-           *s++ = getc(in);
+           *s++ = (char)getc(in);
          else
-            *s++ = ch;
+            *s++ = (char)ch;
 
         *s = '\0';
 
@@ -729,5 +718,5 @@ cgi_puturi(const char *s,           /* I - String to output */
 
 
 /*
- * End of "$Id: template.c 11688 2014-03-05 21:11:32Z msweet $".
+ * End of "$Id: template.c 11685 2014-03-05 20:03:29Z msweet $".
  */
index cbe80ed82e4b54dcdae27c27e51e64d126362471..61d32964fceaf3aa68c3fc83a3e328db816dbd3d 100644 (file)
@@ -1,21 +1,16 @@
 /*
- * "$Id: testcgi.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: testcgi.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   CGI test program for CUPS.
+ * CGI test program for CUPS.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2005 by Easy Software Products.
+ * Copyright 2007-2014 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()       - 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/".
  */
 
 /*
@@ -30,8 +25,7 @@
  */
 
 int                                    /* O - Exit status */
-main(int  argc,                                /* I - Number of command-line arguments */
-     char *argv[])                     /* I - Command-line arguments */
+main(void)
 {
  /*
   * Test file upload/multi-part submissions...
@@ -71,5 +65,5 @@ main(int  argc,                               /* I - Number of command-line arguments */
 
 
 /*
- * End of "$Id: testcgi.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: testcgi.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 382771d6d6698a9ced59b3d51df9a8014dc271ef..dc06cbc4c59ec7a140c8ee9d484522bb09968f02 100644 (file)
@@ -1,49 +1,20 @@
 /*
- * "$Id: var.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: var.c 12034 2014-07-16 19:37:34Z msweet $"
  *
- *   CGI form variable and array functions for CUPS.
+ * CGI form variable and array functions for CUPS.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2005 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   cgiCheckVariables()        - Check for the presence of "required"
- *                                variables.
- *   cgiClearVariables()        - Clear all form variables.
- *   cgiGetArray()              - Get an element from a form array.
- *   cgiGetCookie()             - Get a cookie value.
- *   cgiGetFile()               - Get the file (if any) that was submitted in
- *                                the form.
- *   cgiGetSize()               - Get the size of a form array value.
- *   cgiGetVariable()           - Get a CGI variable from the database.
- *   cgiInitialize()            - Initialize the CGI variable "database".
- *   cgiIsPOST()                - Determine whether this page was POSTed.
- *   cgiSetArray()              - Set array element N to the specified string.
- *   cgiSetCookie()             - Set a cookie value.
- *   cgiSetSize()               - Set the array size.
- *   cgiSetVariable()           - Set a CGI variable in the database.
- *   cgi_add_variable()         - Add a form variable.
- *   cgi_compare_variables()    - Compare two variables.
- *   cgi_find_variable()        - Find a variable.
- *   cgi_initialize_cookies()   - Initialize cookies.
- *   cgi_initialize_get()       - Initialize form variables using the GET
- *                                method.
- *   cgi_initialize_multipart() - Initialize variables and file using the POST
- *                                method.
- *   cgi_initialize_post()      - Initialize variables using the POST method.
- *   cgi_initialize_string()    - Initialize form variables from a string.
- *   cgi_passwd()               - Catch authentication requests and notify the
- *                                server.
- *   cgi_set_sid()              - Set the CUPS session ID.
- *   cgi_sort_variables()       - Sort all form variables for faster lookup.
- *   cgi_unlink_file()          - Remove the uploaded form.
+ * These coded instructions, statements, and computer programs 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 necessary headers...
  */
 
 /*#define DEBUG*/
@@ -417,7 +388,7 @@ cgiSetArray(const char *name,               /* I - Name of variable */
       const char **temp;               /* Temporary pointer */
 
       temp = (const char **)realloc((void *)(var->values),
-                                    sizeof(char *) * (element + 16));
+                                    sizeof(char *) * (size_t)(element + 16));
       if (!temp)
         return;
 
@@ -466,9 +437,9 @@ cgiSetCookie(const char *name,              /* I - Name */
     printf(" expires=%s;", httpGetDateString2(expires, date, sizeof(date)));
   }
   if (secure)
-    puts(" secure;");
+    puts(" httponly; secure;");
   else
-    putchar('\n');
+    puts(" httponly;");
 }
 
 
@@ -495,7 +466,7 @@ cgiSetSize(const char *name,                /* I - Name of variable */
     const char **temp;                 /* Temporary pointer */
 
     temp = (const char **)realloc((void *)(var->values),
-                                 sizeof(char *) * (size + 16));
+                                 sizeof(char *) * (size_t)(size + 16));
     if (!temp)
       return;
 
@@ -581,7 +552,7 @@ cgi_add_variable(const char *name,  /* I - Variable name */
     if (form_alloc == 0)
       temp_vars = malloc(sizeof(_cgi_var_t) * 16);
     else
-      temp_vars = realloc(form_vars, (form_alloc + 16) * sizeof(_cgi_var_t));
+      temp_vars = realloc(form_vars, (size_t)(form_alloc + 16) * sizeof(_cgi_var_t));
 
     if (!temp_vars)
       return;
@@ -592,7 +563,7 @@ cgi_add_variable(const char *name,  /* I - Variable name */
 
   var = form_vars + form_count;
 
-  if ((var->values = calloc(element + 1, sizeof(char *))) == NULL)
+  if ((var->values = calloc((size_t)element + 1, sizeof(char *))) == NULL)
     return;
 
   var->name            = _cupsStrAlloc(name);
@@ -632,7 +603,7 @@ cgi_find_variable(const char *name) /* I - Name of variable */
 
   key.name = name;
 
-  return ((_cgi_var_t *)bsearch(&key, form_vars, form_count, sizeof(_cgi_var_t),
+  return ((_cgi_var_t *)bsearch(&key, form_vars, (size_t)form_count, sizeof(_cgi_var_t),
                            (int (*)(const void *, const void *))cgi_compare_variables));
 }
 
@@ -769,8 +740,8 @@ cgi_initialize_multipart(
                *ptr,                   /* Pointer into name/filename */
                *end;                   /* End of buffer */
   int          ch,                     /* Character from file */
-               fd,                     /* Temporary file descriptor */
-               blen;                   /* Length of boundary string */
+               fd;                     /* Temporary file descriptor */
+  size_t       blen;                   /* Length of boundary string */
 
 
   DEBUG_printf(("cgi_initialize_multipart(boundary=\"%s\")\n", boundary));
@@ -835,22 +806,22 @@ cgi_initialize_multipart(
 
        while ((ch = getchar()) != EOF)
        {
-         *ptr++ = ch;
+         *ptr++ = (char)ch;
 
-          if ((ptr - line) >= blen && !memcmp(ptr - blen, bstring, blen))
+          if ((size_t)(ptr - line) >= blen && !memcmp(ptr - blen, bstring, blen))
          {
            ptr -= blen;
            break;
          }
 
-          if ((ptr - line - blen) >= 8192)
+          if ((ptr - line - (int)blen) >= 8192)
          {
           /*
            * Write out the first 8k of the buffer...
            */
 
            write(fd, line, 8192);
-           memmove(line, line + 8192, ptr - line - 8192);
+           memmove(line, line + 8192, (size_t)(ptr - line - 8192));
            ptr -= 8192;
          }
        }
@@ -860,7 +831,7 @@ cgi_initialize_multipart(
        */
 
        if (ptr > line)
-          write(fd, line, ptr - line);
+          write(fd, line, (size_t)(ptr - line));
 
        close(fd);
       }
@@ -877,9 +848,9 @@ cgi_initialize_multipart(
        while ((ch = getchar()) != EOF)
        {
          if (ptr < end)
-           *ptr++ = ch;
+           *ptr++ = (char)ch;
 
-          if ((ptr - line) >= blen && !memcmp(ptr - blen, bstring, blen))
+          if ((size_t)(ptr - line) >= blen && !memcmp(ptr - blen, bstring, blen))
          {
            ptr -= blen;
            break;
@@ -979,12 +950,12 @@ cgi_initialize_multipart(
 static int                             /* O - 1 if form data was read */
 cgi_initialize_post(void)
 {
-  char *content_length,                /* Length of input data (string) */
-       *data;                          /* Pointer to form data string */
-  int  length,                         /* Length of input data */
-       nbytes,                         /* Number of bytes read this read() */
-       tbytes,                         /* Total number of bytes read */
-       status;                         /* Return status */
+  char         *content_length,        /* Length of input data (string) */
+               *data;                  /* Pointer to form data string */
+  size_t       length,                 /* Length of input data */
+               tbytes;                 /* Total number of bytes read */
+  ssize_t      nbytes;                 /* Number of bytes read this read() */
+  int          status;                 /* Return status */
 
 
   DEBUG_puts("cgi_initialize_post: Initializing variables using POST method...");
@@ -1001,7 +972,7 @@ cgi_initialize_post(void)
   * Get the length of the input stream and allocate a buffer for it...
   */
 
-  length = atoi(content_length);
+  length = (size_t)strtol(content_length, NULL, 10);
   data   = malloc(length + 1);
 
   if (data == NULL)
@@ -1011,8 +982,8 @@ cgi_initialize_post(void)
   * Read the data into the buffer...
   */
 
-  for (tbytes = 0; tbytes < length; tbytes += nbytes)
-    if ((nbytes = read(0, data + tbytes, length - tbytes)) < 0)
+  for (tbytes = 0; tbytes < length; tbytes += (size_t)nbytes)
+    if ((nbytes = read(0, data + tbytes, (size_t)(length - tbytes))) < 0)
     {
       if (errno != EAGAIN)
       {
@@ -1126,7 +1097,7 @@ cgi_initialize_string(const char *data)   /* I - Form data string */
               ch = *data - '0';
               if (ch > 9)
                ch -= 7;
-              *s = ch << 4;
+              *s = (char)(ch << 4);
 
               data ++;
               ch = *data - '0';
@@ -1264,7 +1235,7 @@ cgi_sort_variables(void)
   if (form_count < 2)
     return;
 
-  qsort(form_vars, form_count, sizeof(_cgi_var_t),
+  qsort(form_vars, (size_t)form_count, sizeof(_cgi_var_t),
         (int (*)(const void *, const void *))cgi_compare_variables);
 
 #ifdef DEBUG
@@ -1307,5 +1278,5 @@ cgi_unlink_file(void)
 
 
 /*
- * End of "$Id: var.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: var.c 12034 2014-07-16 19:37:34Z msweet $".
  */
diff --git a/cgi-bin/websearch.c b/cgi-bin/websearch.c
deleted file mode 100644 (file)
index 20d8d7e..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * "$Id: websearch.c 1531 2009-05-22 21:50:50Z msweet $"
- *
- *   Web search program for www.cups.org.
- *
- *   Copyright 2007-2009 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/".
- *
- * Usage:
- *
- *   websearch directory "search string"
- *
- * Contents:
- *
- *   main()       - Search a directory of help files.
- *   list_nodes() - List matching nodes.
- */
-
-/*
- * Include necessary headers...
- */
-
-#include "cgi.h"
-
-
-/*
- * Local functions...
- */
-
-static void    list_nodes(help_index_t *hi, const char *title,
-                          cups_array_t *nodes);
-
-
-/*
- * 'main()' - Test the help index code.
- */
-
-int                                    /* O - Exit status */
-main(int  argc,                                /* I - Number of command-line args */
-     char *argv[])                     /* I - Command-line arguments */
-{
-  help_index_t *hi,                    /* Help index */
-               *search;                /* Search index */
-  char         indexname[1024];        /* Name of index file */
-
-
-  if (argc != 3)
-  {
-    puts("Usage: websearch directory \"search terms\"");
-    return (1);
-  }
-
- /*
-  * Load the help index...
-  */
-
-  snprintf(indexname, sizeof(indexname), "%s/.index", argv[1]);
-  hi = helpLoadIndex(indexname, argv[1]);
-
- /*
-  * Do any searches...
-  */
-
-  search = helpSearchIndex(hi, argv[2], NULL, NULL);
-
-  if (search)
-    list_nodes(hi, argv[1], search->sorted);
-
- /*
-  * Return with no errors...
-  */
-
-  return (0);
-}
-
-
-/*
- * 'list_nodes()' - List nodes in an array...
- */
-
-static void
-list_nodes(help_index_t *hi,           /* I - Help index */
-           const char   *title,                /* I - Title string */
-          cups_array_t *nodes)         /* I - Nodes */
-{
-  help_node_t  *node,                  /* Current node */
-               *file;                  /* File node */
-
-
-  printf("%d\n", cupsArrayCount(nodes));
-  for (node = (help_node_t *)cupsArrayFirst(nodes);
-       node;
-       node = (help_node_t *)cupsArrayNext(nodes))
-  {
-    if (node->anchor)
-    {
-      file = helpFindNode(hi, node->filename, NULL);
-      printf("%d|%s#%s|%s|%s\n", node->score, node->filename, node->anchor,
-             node->text, file ? file->text : node->filename);
-    }
-    else
-      printf("%d|%s|%s|%s\n", node->score, node->filename, node->text,
-             node->text);
-  }
-}
-
-
-/*
- * End of "$Id: websearch.c 1531 2009-05-22 21:50:50Z msweet $".
- */
index 4e7a2cd90a9eb3a66d3a5b5663178c5cc1062021..f3f702321a06c13c586806e787b260fd3d40de61 100644 (file)
@@ -1,7 +1,5 @@
 #
-# "$Id: cups-files.conf.in 11201 2013-07-26 21:27:27Z msweet $"
-#
-# Sample file/directory/user/group configuration file for the CUPS scheduler.
+# File/directory/user/group configuration file for the CUPS scheduler.
 # See "man cups-files.conf" for a complete description of this file.
 #
 
@@ -95,7 +93,3 @@ PageLog @CUPS_LOGDIR@/page_log
 # scheduler startup and cannot be one of the standard (public) temporary
 # directory locations for security reasons...
 #TempDir @CUPS_REQUESTS@/tmp
-
-#
-# End of "$Id: cups-files.conf.in 11201 2013-07-26 21:27:27Z msweet $".
-#
index e671c16c2346b30ff2c18002d6255d3363beea43..e17601446d343b72632e9189d0b96243b51f7227 100644 (file)
@@ -1,13 +1,12 @@
 #
-# "$Id: cupsd.conf.in 11025 2013-06-07 01:00:33Z msweet $"
-#
-# Sample configuration file for the CUPS scheduler.  See "man cupsd.conf" for a
+# Configuration file for the CUPS scheduler.  See "man cupsd.conf" for a
 # complete description of this file.
 #
 
 # Log general information in error_log - change "@CUPS_LOG_LEVEL@" to "debug"
 # for troubleshooting...
 LogLevel @CUPS_LOG_LEVEL@
+@CUPS_PAGE_LOG_FORMAT@
 
 # Only listen for connections from the local machine.
 Listen localhost:@DEFAULT_IPP_PORT@
@@ -128,7 +127,3 @@ WebInterface @CUPS_WEBIF@
     Order deny,allow
   </Limit>
 </Policy>
-
-#
-# End of "$Id: cupsd.conf.in 11025 2013-06-07 01:00:33Z msweet $".
-#
index 31001100f25555e641a60aab01656a78335b2bda..002674e43a11aa99fcfb9969aa1d2b387abfc2a5 100644 (file)
@@ -37,6 +37,7 @@
 #                                       100=default, 200=highest)
 #   printable(offset,length)           True if bytes are printable 8-bit chars
 #                                      (CR, NL, TAB, BS, 32-126, 128-254)
+#   regex(offset,"regex")              True if bytes match regular expression
 #   string(offset,"string")            True if bytes are identical to string
 #   istring(offset,"string")           True if bytes are identical to
 #                                       case-insensitive string
@@ -70,7 +71,7 @@
 #
 
 #application/msword            doc string(0,<D0CF11E0A1B11AE1>)
-application/pdf                        pdf string(0,%PDF)
+application/pdf                        pdf regex(0,^[\\n\\r]*%PDF)
 application/postscript         ai eps ps string(0,%!) string(0,<04>%!) \
                                contains(0,128,<1B>%-12345X) + \
                                (contains(0,4096,"LANGUAGE=POSTSCRIPT") \
@@ -123,7 +124,7 @@ application/x-shell         sh printable(0,1024) + string(0,#!) +\
                                (contains(2,80,/bash) contains(2,80,/ksh)\
                                 contains(2,80,/sh) contains(2,80,/zsh))
 application/x-csource          c cxx cpp cc C h hpp \
-                               printable(0,1024) + \
+                               printable(0,1024) + ! css + \
                                (string(0,/*) string(0,//)
                                 string(0,#include) contains(0,1024,<0a>#include) \
                                 string(0,#define) contains(0,1024,<0a>#define))
index 3b4565f090d4e3db1477fd2d29c295c05750d6e5..23a5babb2ea6495bdda91afa898df34a4aa7a88e 100644 (file)
@@ -1,13 +1,7 @@
 #
-# "$Id: snmp.conf.in 11025 2013-06-07 01:00:33Z msweet $"
-#
-#   Sample SNMP configuration file for CUPS.  See "man cups-snmp.conf" for a
-#   complete description of this file.
+# SNMP configuration file for CUPS.  See "man cups-snmp.conf" for a complete
+# description of this file.
 #
 
 @CUPS_SNMP_ADDRESS@
 @CUPS_SNMP_COMMUNITY@
-
-#
-# End of "$Id: snmp.conf.in 11025 2013-06-07 01:00:33Z msweet $".
-#
index c79070d891a159a09af69f80f13e7faff732b070..5822fe53ec8602d689a995fc6ea20535e12829df 100644 (file)
@@ -1,5 +1,5 @@
 dnl
-dnl "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $"
+dnl "$Id: cups-common.m4 12073 2014-07-31 00:58:00Z msweet $"
 dnl
 dnl Common configuration stuff for CUPS.
 dnl
@@ -20,7 +20,7 @@ dnl Set the name of the config header file...
 AC_CONFIG_HEADER(config.h)
 
 dnl Version number information...
-CUPS_VERSION=1.7.5
+CUPS_VERSION=2.0b1
 CUPS_REVISION=
 #if test -z "$CUPS_REVISION" -a -d .svn; then
 #      CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
@@ -89,7 +89,7 @@ fi
 AC_SUBST(INSTALLSTATIC)
 
 dnl Check for pkg-config, which is used for some other tests later on...
-AC_PATH_PROG(PKGCONFIG, pkg-config)
+AC_PATH_TOOL(PKGCONFIG, pkg-config)
 
 dnl Check for libraries...
 AC_SEARCH_LIBS(abs, m, AC_DEFINE(HAVE_ABS))
@@ -134,11 +134,9 @@ AC_CHECK_HEADER(stdint.h,AC_DEFINE(HAVE_STDINT_H))
 AC_CHECK_HEADER(string.h,AC_DEFINE(HAVE_STRING_H))
 AC_CHECK_HEADER(strings.h,AC_DEFINE(HAVE_STRINGS_H))
 AC_CHECK_HEADER(bstring.h,AC_DEFINE(HAVE_BSTRING_H))
-AC_CHECK_HEADER(usersec.h,AC_DEFINE(HAVE_USERSEC_H))
 AC_CHECK_HEADER(sys/ioctl.h,AC_DEFINE(HAVE_SYS_IOCTL_H))
 AC_CHECK_HEADER(sys/param.h,AC_DEFINE(HAVE_SYS_PARAM_H))
 AC_CHECK_HEADER(sys/ucred.h,AC_DEFINE(HAVE_SYS_UCRED_H))
-AC_CHECK_HEADER(scsi/sg.h,AC_DEFINE(HAVE_SCSI_SG_H))
 
 dnl Checks for iconv.h and iconv_open
 AC_CHECK_HEADER(iconv.h,
@@ -202,6 +200,9 @@ AC_CHECK_FUNCS(sigaction)
 dnl Checks for wait functions.
 AC_CHECK_FUNCS(waitpid wait3)
 
+dnl Check for posix_spawn
+AC_CHECK_FUNCS(posix_spawn)
+
 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;
@@ -359,7 +360,6 @@ case $uname in
                AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h,AC_DEFINE(HAVE_COREFOUNDATION_H))
                AC_CHECK_HEADER(CoreFoundation/CFPriv.h,AC_DEFINE(HAVE_CFPRIV_H))
                AC_CHECK_HEADER(CoreFoundation/CFBundlePriv.h,AC_DEFINE(HAVE_CFBUNDLEPRIV_H))
-               AC_CHECK_HEADER(IOKit/pwr_mgt/IOPMLibPrivate.h,AC_DEFINE(HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H))
 
                dnl Check for dynamic store function...
                AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
@@ -465,5 +465,5 @@ esac
 AC_SUBST(BUILDDIRS)
 
 dnl
-dnl End of "$Id: cups-common.m4 8781 2009-08-28 17:34:54Z mike $".
+dnl End of "$Id: cups-common.m4 12073 2014-07-31 00:58:00Z msweet $".
 dnl
index 19a08f8db647901d3a18da5b92f09ef256410dc5..421bfe7753c2fd49bbcd3d9f96a6cfe9646a6a32 100644 (file)
@@ -1,5 +1,5 @@
 dnl
-dnl "$Id: cups-compiler.m4 7871 2008-08-27 21:12:43Z mike $"
+dnl "$Id: cups-compiler.m4 11683 2014-03-05 20:00:54Z msweet $"
 dnl
 dnl Compiler stuff for CUPS.
 dnl
@@ -103,7 +103,7 @@ if test -n "$GCC"; then
        fi
 
        # Generate position-independent code as needed...
-       if test $PICFLAG = 1 -a $uname != AIX; then
+       if test $PICFLAG = 1; then
                OPTIM="-fPIC $OPTIM"
        fi
 
@@ -154,20 +154,20 @@ if test -n "$GCC"; then
 
        if test "x$with_optim" = x; then
                # Add useful warning options for tracking down problems...
-               OPTIM="-Wall -Wno-format-y2k -Wunused $OPTIM"
+               OPTIM="-Wall -Wno-format-y2k -Wsign-conversion -Wunused $OPTIM"
+
+               AC_MSG_CHECKING(if GCC supports -Wno-tautological-compare)
+               OLDCFLAGS="$CFLAGS"
+               CFLAGS="$CFLAGS -Werror -Wno-tautological-compare"
+               AC_TRY_COMPILE(,,
+                       [OPTIM="$OPTIM -Wno-tautological-compare"
+                       AC_MSG_RESULT(yes)],
+                       AC_MSG_RESULT(no))
+               CFLAGS="$OLDCFLAGS"
 
                # Additional warning options for development testing...
                if test -d .svn; then
-                       OPTIM="-Wshadow -Werror $OPTIM"
-               else
-                       AC_MSG_CHECKING(if GCC supports -Wno-tautological-compare)
-                       OLDCFLAGS="$CFLAGS"
-                       CFLAGS="$CFLAGS -Werror -Wno-tautological-compare"
-                       AC_TRY_COMPILE(,,
-                               [OPTIM="$OPTIM -Wno-tautological-compare"
-                               AC_MSG_RESULT(yes)],
-                               AC_MSG_RESULT(no))
-                       CFLAGS="$OLDCFLAGS"
+                       OPTIM="-Werror $OPTIM"
                fi
        fi
 
@@ -192,40 +192,6 @@ if test -n "$GCC"; then
 else
        # Add vendor-specific compiler options...
        case $uname in
-               AIX*)
-                       if test -z "$OPTIM"; then
-                               if test "x$with_optim" = x; then
-                                       OPTIM="-O2 -qmaxmem=6000"
-                               else
-                                       OPTIM="$with_optim $OPTIM"
-                               fi
-                       fi
-                       ;;
-               HP-UX*)
-                       if test -z "$OPTIM"; then
-                               if test "x$with_optim" = x; then
-                                       OPTIM="+O2"
-                               else
-                                       OPTIM="$with_optim $OPTIM"
-                               fi
-                       fi
-
-                       CFLAGS="-Ae $CFLAGS"
-
-                       if test $PICFLAG = 1; then
-                               OPTIM="+z $OPTIM"
-                       fi
-                       ;;
-               OSF*)
-                       # Tru64 UNIX aka Digital UNIX aka OSF/1
-                       if test -z "$OPTIM"; then
-                               if test "x$with_optim" = x; then
-                                       OPTIM="-O"
-                               else
-                                       OPTIM="$with_optim"
-                               fi
-                       fi
-                       ;;
                SunOS*)
                        # Solaris
                        if test -z "$OPTIM"; then
@@ -236,20 +202,6 @@ else
                                fi
                        fi
 
-                       if test $PICFLAG = 1; then
-                               OPTIM="-KPIC $OPTIM"
-                       fi
-                       ;;
-               UNIX_SVR*)
-                       # UnixWare
-                       if test -z "$OPTIM"; then
-                               if test "x$with_optim" = x; then
-                                       OPTIM="-O"
-                               else
-                                       OPTIM="$with_optim $OPTIM"
-                               fi
-                       fi
-
                        if test $PICFLAG = 1; then
                                OPTIM="-KPIC $OPTIM"
                        fi
@@ -268,33 +220,13 @@ fi
 
 # Add general compiler options per platform...
 case $uname in
-       HP-UX*)
-               # HP-UX 10.20 (at least) needs this definition to get the
-               # h_errno global...
-               OPTIM="$OPTIM -D_XOPEN_SOURCE_EXTENDED"
-
-               # HP-UX 11.00 (at least) needs this definition to get the
-               # u_short type used by the IP headers...
-               OPTIM="$OPTIM -D_INCLUDE_HPUX_SOURCE"
-
-               # HP-UX 11.23 (at least) needs this definition to get the
-               # IPv6 header to work...
-               OPTIM="$OPTIM -D_HPUX_SOURCE"
-               ;;
-
        Linux*)
                # glibc 2.8 and higher breaks peer credentials unless you
                # define _GNU_SOURCE...
                OPTIM="$OPTIM -D_GNU_SOURCE"
                ;;
-
-       OSF*)
-               # Tru64 UNIX aka Digital UNIX aka OSF/1 need to be told
-               # to be POSIX-compliant...
-               OPTIM="$OPTIM -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED -D_OSF_SOURCE"
-               ;;
 esac
 
 dnl
-dnl End of "$Id: cups-compiler.m4 7871 2008-08-27 21:12:43Z mike $".
+dnl End of "$Id: cups-compiler.m4 11683 2014-03-05 20:00:54Z msweet $".
 dnl
index 173cfeac87f475ad49b2ca59ab56ed0fde4fb401..cf268ded2842cac7cd44db9a0b6388be7df8a390 100644 (file)
@@ -1,5 +1,5 @@
 dnl
-dnl "$Id: cups-defaults.m4 7959 2008-09-17 19:30:58Z mike $"
+dnl "$Id: cups-defaults.m4 11789 2014-04-02 16:52:53Z msweet $"
 dnl
 dnl   Default cupsd configuration settings for CUPS.
 dnl
@@ -78,12 +78,21 @@ AC_SUBST(CUPS_LOG_LEVEL)
 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_LOG_LEVEL, "$CUPS_LOG_LEVEL")
 
 dnl Default AccessLogLevel
-AC_ARG_WITH(access_log_level, [  --with-access-log-level set default AccessLogLevel value, default=actions],
+AC_ARG_WITH(access_log_level, [  --with-access-log-level set default AccessLogLevel value, default=none],
        CUPS_ACCESS_LOG_LEVEL="$withval",
-       CUPS_ACCESS_LOG_LEVEL="actions")
+       CUPS_ACCESS_LOG_LEVEL="none")
 AC_SUBST(CUPS_ACCESS_LOG_LEVEL)
 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_ACCESS_LOG_LEVEL, "$CUPS_ACCESS_LOG_LEVEL")
 
+dnl Default PageLogFormat
+AC_ARG_WITH(page_logging, [  --enable-page-logging   enable page_log by default])
+if test "x$enable_page_logging" = xyes; then
+       CUPS_PAGE_LOG_FORMAT=""
+else
+       CUPS_PAGE_LOG_FORMAT="PageLogFormat"
+fi
+AC_SUBST(CUPS_PAGE_LOG_FORMAT)
+
 dnl Default Browsing
 AC_ARG_ENABLE(browsing, [  --disable-browsing      disable Browsing by default])
 if test "x$enable_browsing" = xno; then
@@ -400,5 +409,5 @@ AC_SUBST(CUPS_WEBIF)
 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_WEBIF, $CUPS_DEFAULT_WEBIF)
 
 dnl
-dnl End of "$Id: cups-defaults.m4 7959 2008-09-17 19:30:58Z mike $".
+dnl End of "$Id: cups-defaults.m4 11789 2014-04-02 16:52:53Z msweet $".
 dnl
index eec3dec02085e598c8d690bd0d524166b7a15db1..fa3369e3fc747ce9e96d9b5867ecd49694ca149b 100644 (file)
@@ -1,16 +1,16 @@
 dnl
-dnl "$Id: cups-directories.m4 7799 2008-07-25 20:06:08Z mike $"
+dnl "$Id: cups-directories.m4 11717 2014-03-21 16:42:53Z msweet $"
 dnl
-dnl   Directory stuff for CUPS.
+dnl Directory stuff for CUPS.
 dnl
-dnl   Copyright 2007-2013 by Apple Inc.
-dnl   Copyright 1997-2007 by Easy Software Products, all rights reserved.
+dnl Copyright 2007-2014 by Apple Inc.
+dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
 dnl
-dnl   These coded instructions, statements, and computer programs are the
-dnl   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_PREFIX_DEFAULT(/)
@@ -107,11 +107,6 @@ if test "$libdir" = "\${exec_prefix}/lib"; then
                                libdir="$exec_prefix/lib64"
                        fi
                        ;;
-               HP-UX*)
-                       if test -d /usr/lib/hpux32; then
-                               libdir="$exec_prefix/lib/hpux32"
-                       fi
-                       ;;
        esac
 fi
 
@@ -126,119 +121,6 @@ fi
 AC_SUBST(privateinclude)
 AC_SUBST(PRIVATEINCLUDE)
 
-dnl Setup init.d locations...
-AC_ARG_WITH(rcdir, [  --with-rcdir            set path for rc scripts],rcdir="$withval",rcdir="")
-AC_ARG_WITH(rclevels, [  --with-rclevels         set run levels for rc scripts],rclevels="$withval",rclevels="2 3 5")
-AC_ARG_WITH(rcstart, [  --with-rcstart          set start number for rc scripts],rcstart="$withval",rcstart="99")
-AC_ARG_WITH(rcstop, [  --with-rcstop           set stop number for rc scripts],rcstop="$withval",rcstop="00")
-AC_ARG_WITH(smfmanifestdir, [  --with-smfmanifestdir   set path for Solaris SMF manifest],smfmanifestdir="$withval",smfmanifestdir="")
-
-INITDIR=""
-INITDDIR=""
-RCLEVELS="$rclevels"
-RCSTART="$rcstart"
-RCSTOP="$rcstop"
-SMFMANIFESTDIR=""
-
-if test x$rcdir = x; then
-       case "$uname" in
-               AIX*)
-                       INITDIR="/etc/rc.d"
-                       ;;
-
-               Darwin*)
-                       # Darwin and MacOS X...
-                       if test -x /sbin/launchd; then
-                               INITDDIR="/System/Library/LaunchDaemons"
-                       else
-                               INITDDIR="/System/Library/StartupItems/PrintingServices"
-                       fi
-                       ;;
-
-               FreeBSD* | OpenBSD* | MirBSD* | ekkoBSD*)
-                       # FreeBSD and OpenBSD
-                       ;;
-
-               HP-UX*)
-                       INITDIR="/sbin"
-                       RCLEVELS="2"
-                       RCSTART="380"
-                       RCSTOP="620"
-                       ;;
-
-               Linux | GNU | GNU/k*BSD*)
-                       # Linux/HURD seems to choose an init.d directory at random...
-                       if test -d /sbin/init.d; then
-                               # SuSE
-                               INITDIR="/sbin/init.d"
-                       else
-                               if test -d /etc/init.d; then
-                                       # Others
-                                       INITDIR="/etc"
-                               else
-                                       # RedHat
-                                       INITDIR="/etc/rc.d"
-                               fi
-                       fi
-                       RCSTART="81"
-                       RCSTOP="36"
-                       ;;
-
-               NetBSD*)
-                       # NetBSD
-                       INITDDIR="/etc/rc.d"
-                       ;;
-
-               OSF1*)
-                       INITDIR="/sbin"
-                       ;;
-
-               SunOS*)
-                       # Solaris
-                       if test "x$smfmanifestdir" != x; then
-                               SMFMANIFESTDIR=$smfmanifestdir
-                       else
-                               INITDIR="/etc"
-                               RCSTART="81"
-                       fi
-                       ;;
-
-               *)
-                       INITDIR="/etc"
-                       ;;
-
-       esac
-elif test "x$rcdir" != xno; then
-       if test "x$rclevels" = x; then
-               INITDDIR="$rcdir"
-       else
-               INITDIR="$rcdir"
-       fi
-fi
-
-AC_SUBST(INITDIR)
-AC_SUBST(INITDDIR)
-AC_SUBST(RCLEVELS)
-AC_SUBST(RCSTART)
-AC_SUBST(RCSTOP)
-AC_SUBST(SMFMANIFESTDIR)
-
-dnl Xinetd support...
-AC_ARG_WITH(xinetd, [  --with-xinetd           set path for xinetd config files],XINETD="$withval",XINETD="")
-
-if test "x$XINETD" = x -a ! -x /sbin/launchd; then
-       for dir in /private/etc/xinetd.d /etc/xinetd.d /usr/local/etc/xinetd.d; do
-               if test -d $dir; then
-                       XINETD="$dir"
-                       break
-               fi
-       done
-elif test "x$XINETD" = xno; then
-       XINETD=""
-fi
-
-AC_SUBST(XINETD)
-
 dnl LPD sharing support...
 AC_ARG_WITH(lpdconfig, [  --with-lpdconfig        set URI for LPD config file],
        LPDCONFIG="$withval", LPDCONFIG="")
@@ -355,10 +237,6 @@ if test "$localedir" = "\${datarootdir}/locale"; then
                        CUPS_LOCALEDIR="$datarootdir/locale"
                        ;;
 
-               OSF1* | AIX*)
-                       CUPS_LOCALEDIR="$exec_prefix/lib/nls/msg"
-                       ;;
-
                *)
                        # This is the standard System V location...
                        CUPS_LOCALEDIR="$exec_prefix/lib/locale"
@@ -427,5 +305,5 @@ AC_DEFINE_UNQUOTED(CUPS_STATEDIR, "$CUPS_STATEDIR")
 AC_SUBST(CUPS_STATEDIR)
 
 dnl
-dnl End of "$Id: cups-directories.m4 7799 2008-07-25 20:06:08Z mike $".
+dnl End of "$Id: cups-directories.m4 11717 2014-03-21 16:42:53Z msweet $".
 dnl
index 02974ef8aea4bd2422a5a0b615bc0337038e2b47..570856321165f42c21664beae8c70cfef97de7d9 100644 (file)
@@ -1,5 +1,5 @@
 dnl
-dnl "$Id: cups-dnssd.m4 7890 2008-08-29 22:19:39Z mike $"
+dnl "$Id: cups-dnssd.m4 11324 2013-10-04 03:11:42Z msweet $"
 dnl
 dnl   DNS Service Discovery (aka Bonjour) stuff for CUPS.
 dnl
@@ -82,5 +82,5 @@ AC_SUBST(IPPFIND_BIN)
 AC_SUBST(IPPFIND_MAN)
 
 dnl
-dnl End of "$Id: cups-dnssd.m4 7890 2008-08-29 22:19:39Z mike $".
+dnl End of "$Id: cups-dnssd.m4 11324 2013-10-04 03:11:42Z msweet $".
 dnl
index d0923d75d5b0a6401139415f6ae9f29399761cc2..616d96c1f1eff9f013c7a6e20a25facfd8cef80d 100644 (file)
@@ -1,5 +1,5 @@
 dnl
-dnl   "$Id: cups-gssapi.m4 11324 2013-10-04 03:11:42Z msweet $"
+dnl   "$Id: cups-gssapi.m4 11911 2014-06-10 13:54:53Z msweet $"
 dnl
 dnl   GSSAPI/Kerberos library detection for CUPS.
 dnl
@@ -22,7 +22,7 @@ LIBGSSAPI=""
 AC_SUBST(LIBGSSAPI)
 
 if test x$enable_gssapi != xno; then
-       AC_PATH_PROG(KRB5CONFIG, krb5-config)
+       AC_PATH_TOOL(KRB5CONFIG, krb5-config)
        if test "x$KRB5CONFIG" != x; then
                case "$uname" in
                        Darwin)
@@ -129,5 +129,5 @@ AC_SUBST(CUPS_DEFAULT_GSSSERVICENAME)
 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_GSSSERVICENAME, "$CUPS_DEFAULT_GSSSERVICENAME")
 
 dnl
-dnl End of "$Id: cups-gssapi.m4 11324 2013-10-04 03:11:42Z msweet $".
+dnl End of "$Id: cups-gssapi.m4 11911 2014-06-10 13:54:53Z msweet $".
 dnl
index 8243de7878a0666835fe2c502dd7090cc53e4967..6be7b1f364097d809b692fb8708ba256671cb43c 100644 (file)
@@ -1,5 +1,5 @@
 dnl
-dnl "$Id: cups-largefile.m4 6649 2007-07-11 21:46:42Z mike $"
+dnl "$Id: cups-largefile.m4 11324 2013-10-04 03:11:42Z msweet $"
 dnl
 dnl   Large file support stuff for CUPS.
 dnl
@@ -48,5 +48,5 @@ fi
 AC_CHECK_FUNC(strtoll, AC_DEFINE(HAVE_STRTOLL))
 
 dnl
-dnl End of "$Id: cups-largefile.m4 6649 2007-07-11 21:46:42Z mike $".
+dnl End of "$Id: cups-largefile.m4 11324 2013-10-04 03:11:42Z msweet $".
 dnl
diff --git a/config-scripts/cups-launchd.m4 b/config-scripts/cups-launchd.m4
deleted file mode 100644 (file)
index 23a2295..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-dnl
-dnl "$Id: cups-launchd.m4 6649 2007-07-11 21:46:42Z mike $"
-dnl
-dnl   launchd stuff for CUPS.
-dnl
-dnl   Copyright 2007-2010 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
-
-
-AC_ARG_ENABLE(launchd, [  --disable-launchd       disable launchd support])
-
-DEFAULT_LAUNCHD_CONF=""
-LAUNCHDLIBS=""
-
-if test x$enable_launchd != xno; then
-       AC_CHECK_FUNC(launch_msg, AC_DEFINE(HAVE_LAUNCHD))
-       AC_CHECK_HEADER(launch.h, AC_DEFINE(HAVE_LAUNCH_H))
-
-       case "$uname" in
-               Darwin*)
-                       # Darwin, MacOS X
-                       DEFAULT_LAUNCHD_CONF="/System/Library/LaunchDaemons/org.cups.cupsd.plist"
-                       # liblaunch is already part of libSystem
-                       ;;
-               *)
-                       # All others; this test will need to be updated
-                       ;;
-       esac
-fi
-
-AC_SUBST(DEFAULT_LAUNCHD_CONF)
-AC_SUBST(LAUNCHDLIBS)
-
-dnl
-dnl End of "$Id: cups-launchd.m4 6649 2007-07-11 21:46:42Z mike $".
-dnl
index d6026b24b051166b38e241f86716e7816895d3cf..2dcaab3a96fef4f7d8bca9b5513fe4b7bfe74a21 100644 (file)
@@ -1,5 +1,5 @@
 dnl
-dnl "$Id: cups-libtool.m4 6649 2007-07-11 21:46:42Z mike $"
+dnl "$Id: cups-libtool.m4 11324 2013-10-04 03:11:42Z msweet $"
 dnl
 dnl   Libtool stuff for CUPS.
 dnl
@@ -35,5 +35,5 @@ if test x$LIBTOOL != x; then
 fi
 
 dnl
-dnl End of "$Id: cups-libtool.m4 6649 2007-07-11 21:46:42Z mike $".
+dnl End of "$Id: cups-libtool.m4 11324 2013-10-04 03:11:42Z msweet $".
 dnl
index 16246838c09c6ee34e30f5af21e9f0468ddce4db..bd6b8d557846e4c0dff17bea8d87df03228e6918 100644 (file)
@@ -1,16 +1,16 @@
 dnl
-dnl "$Id: cups-manpages.m4 6649 2007-07-11 21:46:42Z mike $"
+dnl "$Id: cups-manpages.m4 11342 2013-10-18 20:36:01Z msweet $"
 dnl
-dnl   Manpage stuff for CUPS.
+dnl Manpage stuff for CUPS.
 dnl
-dnl   Copyright 2007-2012 by Apple Inc.
-dnl   Copyright 1997-2006 by Easy Software Products, all rights reserved.
+dnl Copyright 2007-2013 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 Fix "mandir" variable...
@@ -22,8 +22,8 @@ fi
 
 if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/"; then
        case "$uname" in
-               Darwin* | Linux | GNU | *BSD* | AIX*)
-                       # Darwin, MacOS X, Linux, GNU HURD, *BSD, and AIX
+               Darwin* | Linux | GNU | *BSD*)
+                       # Darwin, MacOS X, Linux, GNU HURD, and *BSD
                        mandir="/usr/share/man"
                        AMANDIR="/usr/share/man"
                        PMANDIR="/usr/share/man"
@@ -45,8 +45,8 @@ AC_SUBST(PMANDIR)
 
 dnl Setup manpage extensions...
 case "$uname" in
-       SunOS* | HP-UX*)
-               # Solaris and HP-UX
+       SunOS*)
+               # Solaris
                MAN1EXT=1
                MAN5EXT=5
                MAN7EXT=7
@@ -78,5 +78,5 @@ AC_SUBST(MAN8EXT)
 AC_SUBST(MAN8DIR)
 
 dnl
-dnl End of "$Id: cups-manpages.m4 6649 2007-07-11 21:46:42Z mike $".
+dnl End of "$Id: cups-manpages.m4 11342 2013-10-18 20:36:01Z msweet $".
 dnl
index b97fb4a496e1209e6f68ef2bb9733bd6438100df..12c39fc2c6f14ecaeaf4507944917e0b93b36ebe 100644 (file)
@@ -1,16 +1,16 @@
 dnl
-dnl "$Id: cups-network.m4 7918 2008-09-08 22:03:01Z mike $"
+dnl "$Id: cups-network.m4 11719 2014-03-21 18:07:23Z msweet $"
 dnl
-dnl   Networking stuff for CUPS.
+dnl Networking stuff for CUPS.
 dnl
-dnl   Copyright 2007-2011 by Apple Inc.
-dnl   Copyright 1997-2005 by Easy Software Products, all rights reserved.
+dnl Copyright 2007-2014 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_CHECK_HEADER(resolv.h,AC_DEFINE(HAVE_RESOLV_H))
@@ -66,9 +66,6 @@ fi
 AC_SUBST(CUPS_DEFAULT_DOMAINSOCKET)
 AC_SUBST(CUPS_LISTEN_DOMAINSOCKET)
 
-AC_CHECK_HEADERS(AppleTalk/at_proto.h,AC_DEFINE(HAVE_APPLETALK_AT_PROTO_H),,
-       [#include <netat/appletalk.h>])
-
 dnl
-dnl End of "$Id: cups-network.m4 7918 2008-09-08 22:03:01Z mike $".
+dnl End of "$Id: cups-network.m4 11719 2014-03-21 18:07:23Z msweet $".
 dnl
index acf5b51a34834b6d0ed886c72a809801625854e7..755f9d7e2c6ec6d531038c72d57da685512b4873 100644 (file)
@@ -1,5 +1,5 @@
 dnl
-dnl "$Id: cups-opsys.m4 6649 2007-07-11 21:46:42Z mike $"
+dnl "$Id: cups-opsys.m4 11324 2013-10-04 03:11:42Z msweet $"
 dnl
 dnl   Operating system stuff for CUPS.
 dnl
@@ -35,5 +35,5 @@ case "$uname" in
 esac
 
 dnl
-dnl "$Id: cups-opsys.m4 6649 2007-07-11 21:46:42Z mike $"
+dnl "$Id: cups-opsys.m4 11324 2013-10-04 03:11:42Z msweet $"
 dnl
index 72bf32fc3549870b9aec689a9b879366fa1658a0..904a2739dd76f1ff245d05e7d0359d722379e47c 100644 (file)
@@ -1,26 +1,21 @@
 dnl
-dnl "$Id: cups-pam.m4 7960 2008-09-17 19:42:02Z mike $"
+dnl "$Id: cups-pam.m4 11342 2013-10-18 20:36:01Z msweet $"
 dnl
 dnl   PAM stuff for CUPS.
 dnl
-dnl   Copyright 2007-2012 by Apple Inc.
-dnl   Copyright 1997-2005 by Easy Software Products, all rights reserved.
+dnl Copyright 2007-2013 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(pam, [  --disable-pam           disable PAM support])
 AC_ARG_WITH(pam_module, [  --with-pam-module       specify the PAM module to use])
 
-dnl Don't use PAM with AIX...
-if test $uname = AIX; then
-       enable_pam=no
-fi
-
 PAMDIR=""
 PAMFILE="pam.std"
 PAMLIBS=""
@@ -98,5 +93,5 @@ AC_SUBST(PAMMOD)
 AC_SUBST(PAMMODAUTH)
 
 dnl
-dnl End of "$Id: cups-pam.m4 7960 2008-09-17 19:42:02Z mike $".
+dnl End of "$Id: cups-pam.m4 11342 2013-10-18 20:36:01Z msweet $".
 dnl
index 901068c27bbd8f5432f992c3a96d0cc9de6c01a8..8774a2f612935c610c72eb2665181d1d28f60b6c 100644 (file)
@@ -1,5 +1,5 @@
 dnl
-dnl "$Id$"
+dnl "$Id: cups-poll.m4 11324 2013-10-04 03:11:42Z msweet $"
 dnl
 dnl   Select/poll stuff for CUPS.
 dnl
@@ -18,5 +18,5 @@ AC_CHECK_FUNC(epoll_create, AC_DEFINE(HAVE_EPOLL))
 AC_CHECK_FUNC(kqueue, AC_DEFINE(HAVE_KQUEUE))
 
 dnl
-dnl End of "$Id$".
+dnl End of "$Id: cups-poll.m4 11324 2013-10-04 03:11:42Z msweet $".
 dnl
index d4ed98850e0619dda0990e13e38352eb91a7e607..defaf097f10e9e246bea0eefe5bfeca854721342 100644 (file)
@@ -1,5 +1,5 @@
 dnl
-dnl "$Id: cups-scripting.m4 7915 2008-09-07 22:18:29Z mike $"
+dnl "$Id: cups-scripting.m4 11324 2013-10-04 03:11:42Z msweet $"
 dnl
 dnl   Scripting configuration stuff for CUPS.
 dnl
@@ -85,5 +85,5 @@ if test "x$CUPS_PYTHON" != x; then
 fi
 
 dnl
-dnl End of "$Id: cups-scripting.m4 7915 2008-09-07 22:18:29Z mike $".
+dnl End of "$Id: cups-scripting.m4 11324 2013-10-04 03:11:42Z msweet $".
 dnl
index ef2c714240aa27ea5545ba8703d392861e090150..a8df14a3e322793edab17745663dc3b1e8c0c62b 100644 (file)
@@ -1,16 +1,16 @@
 dnl
-dnl "$Id: cups-sharedlibs.m4 7630 2008-06-09 22:31:44Z mike $"
+dnl "$Id: cups-sharedlibs.m4 11342 2013-10-18 20:36:01Z msweet $"
 dnl
-dnl   Shared library support for CUPS.
+dnl Shared library support for CUPS.
 dnl
-dnl   Copyright 2007-2012 by Apple Inc.
-dnl   Copyright 1997-2005 by Easy Software Products, all rights reserved.
+dnl Copyright 2007-2013 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
 
 PICFLAG=1
@@ -34,51 +34,7 @@ if test x$enable_shared != xno; then
                        DSOXX="\$(CXX)"
                        DSOFLAGS="$DSOFLAGS -Wl,-h\`basename \$@\` -G \$(OPTIM)"
                        ;;
-               UNIX_S*)
-                       LIBCUPS="lib$cupsbase.so.2"
-                       LIBCUPSCGI="libcupscgi.so.1"
-                       LIBCUPSIMAGE="libcupsimage.so.2"
-                       LIBCUPSMIME="libcupsmime.so.1"
-                       LIBCUPSPPDC="libcupsppdc.so.1"
-                       DSO="\$(CC)"
-                       DSOXX="\$(CXX)"
-                       DSOFLAGS="$DSOFLAGS -Wl,-h,\`basename \$@\` -G \$(OPTIM)"
-                       ;;
-               HP-UX*)
-                       case "$uarch" in
-                               ia64)
-                                       LIBCUPS="lib$cupsbase.so.2"
-                                       LIBCUPSCGI="libcupscgi.so.1"
-                                       LIBCUPSIMAGE="libcupsimage.so.2"
-                                       LIBCUPSMIME="libcupsmime.so.1"
-                                       LIBCUPSPPDC="libcupsppdc.so.1"
-                                       DSO="\$(CC)"
-                                       DSOXX="\$(CXX)"
-                                       DSOFLAGS="$DSOFLAGS -Wl,-b,-z,+h,\`basename \$@\`"
-                                       ;;
-                               *)
-                                       LIBCUPS="lib$cupsbase.sl.2"
-                                       LIBCUPSCGI="libcupscgi.sl.1"
-                                       LIBCUPSIMAGE="libcupsimage.sl.2"
-                                       LIBCUPSMIME="libcupsmime.sl.1"
-                                       LIBCUPSPPDC="libcupsppdc.sl.1"
-                                       DSO="\$(LD)"
-                                       DSOXX="\$(LD)"
-                                       DSOFLAGS="$DSOFLAGS -b -z +h \`basename \$@\`"
-                                       ;;
-                       esac
-                       ;;
-               IRIX)
-                       LIBCUPS="lib$cupsbase.so.2"
-                       LIBCUPSCGI="libcupscgi.so.1"
-                       LIBCUPSIMAGE="libcupsimage.so.2"
-                       LIBCUPSMIME="libcupsmime.so.1"
-                       LIBCUPSPPDC="libcupsppdc.so.1"
-                       DSO="\$(CC)"
-                       DSOXX="\$(CXX)"
-                       DSOFLAGS="$DSOFLAGS -set_version,sgi2.6,-soname,\`basename \$@\` -shared \$(OPTIM)"
-                       ;;
-               OSF1* | Linux | GNU | *BSD*)
+               Linux | GNU | *BSD*)
                        LIBCUPS="lib$cupsbase.so.2"
                        LIBCUPSCGI="libcupscgi.so.1"
                        LIBCUPSIMAGE="libcupsimage.so.2"
@@ -98,17 +54,6 @@ if test x$enable_shared != xno; then
                        DSOXX="\$(CXX)"
                        DSOFLAGS="$DSOFLAGS -dynamiclib -single_module -lc"
                        ;;
-               AIX*)
-                       LIBCUPS="lib${cupsbase}_s.a"
-                       LIBCUPSBASE="${cupsbase}_s"
-                       LIBCUPSCGI="libcupscgi_s.a"
-                       LIBCUPSIMAGE="libcupsimage_s.a"
-                       LIBCUPSMIME="libcupsmime_s.a"
-                       LIBCUPSPPDC="libcupsppdc_s.a"
-                       DSO="\$(CC)"
-                       DSOXX="\$(CXX)"
-                       DSOFLAGS="$DSOFLAGS -Wl,-bexpall,-bM:SRE,-bnoentry,-blibpath:\$(libdir)"
-                       ;;
                *)
                        echo "Warning: shared libraries may not be supported.  Trying -shared"
                        echo "         option with compiler."
@@ -151,19 +96,11 @@ if test x$enable_shared = xno; then
        EXTLINKCUPS="-lcups"
        EXTLINKCUPSIMAGE="-lcupsimage"
 else
-       if test $uname = AIX; then
-               LINKCUPS="-l${cupsbase}_s"
-               LINKCUPSIMAGE="-lcupsimage_s"
-
-               EXTLINKCUPS="-lcups_s"
-               EXTLINKCUPSIMAGE="-lcupsimage_s"
-       else
-               LINKCUPS="-l${cupsbase}"
-               LINKCUPSIMAGE="-lcupsimage"
+       LINKCUPS="-l${cupsbase}"
+       LINKCUPSIMAGE="-lcupsimage"
 
-               EXTLINKCUPS="-lcups"
-               EXTLINKCUPSIMAGE="-lcupsimage"
-       fi
+       EXTLINKCUPS="-lcups"
+       EXTLINKCUPSIMAGE="-lcupsimage"
 fi
 
 AC_SUBST(EXTLINKCUPS)
@@ -186,19 +123,6 @@ if test "$DSO" != ":"; then
        # need this option, even when the library is installed in a
        # standard location...
        case $uname in
-                HP-UX*)
-                       # HP-UX needs the path, even for /usr/lib...
-                       case "$uarch" in
-                               ia64)
-                                       DSOFLAGS="-Wl,+s,+b,$libdir $DSOFLAGS"
-                                       ;;
-                               *)
-                                       DSOFLAGS="+s +b $libdir $DSOFLAGS"
-                                       ;;
-                       esac
-                       LDFLAGS="$LDFLAGS -Wl,+s,+b,$libdir"
-                       EXPORT_LDFLAGS="-Wl,+s,+b,$libdir"
-                       ;;
                 SunOS*)
                        # Solaris...
                        if test $exec_prefix != /usr; then
@@ -234,5 +158,5 @@ AC_SUBST(IMGLIBS)
 AC_SUBST(EXPORT_LDFLAGS)
 
 dnl
-dnl End of "$Id: cups-sharedlibs.m4 7630 2008-06-09 22:31:44Z mike $".
+dnl End of "$Id: cups-sharedlibs.m4 11342 2013-10-18 20:36:01Z msweet $".
 dnl
index f3dc0595f9be270a89626f2dafa8971fccbdbd51..cdd035c5ae7f51c0712ed207bc69b5a58a4244b4 100644 (file)
@@ -1,28 +1,21 @@
 dnl
-dnl "$Id: cups-ssl.m4 7241 2008-01-22 22:34:52Z mike $"
+dnl "$Id: cups-ssl.m4 11911 2014-06-10 13:54:53Z msweet $"
 dnl
-dnl   OpenSSL/GNUTLS stuff for CUPS.
+dnl TLS stuff for CUPS.
 dnl
-dnl   Copyright 2007-2012 by Apple Inc.
-dnl   Copyright 1997-2007 by Easy Software Products, all rights reserved.
+dnl Copyright 2007-2014 by Apple Inc.
+dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
 dnl
-dnl   These coded instructions, statements, and computer programs are the
-dnl   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(ssl, [  --disable-ssl           disable SSL/TLS support])
 AC_ARG_ENABLE(cdsassl, [  --enable-cdsassl        use CDSA for SSL/TLS support, default=first])
 AC_ARG_ENABLE(gnutls, [  --enable-gnutls         use GNU TLS for SSL/TLS support, default=second])
-AC_ARG_ENABLE(openssl, [  --enable-openssl        use OpenSSL for SSL/TLS support, default=third])
-AC_ARG_WITH(openssl-libs, [  --with-openssl-libs     set directory for OpenSSL library],
-    LDFLAGS="-L$withval $LDFLAGS"
-    DSOFLAGS="-L$withval $DSOFLAGS",)
-AC_ARG_WITH(openssl-includes, [  --with-openssl-includes set directory for OpenSSL includes],
-    CFLAGS="-I$withval $CFLAGS"
-    CPPFLAGS="-I$withval $CPPFLAGS",)
 
 SSLFLAGS=""
 SSLLIBS=""
@@ -59,14 +52,15 @@ if test x$enable_ssl != xno; then
                AC_CHECK_HEADER(Security/SecIdentitySearchPriv.h,
                    AC_DEFINE(HAVE_SECIDENTITYSEARCHPRIV_H))
 
-               AC_DEFINE(HAVE_CSSMERRORSTRING)])
+               AC_DEFINE(HAVE_CSSMERRORSTRING)
+               AC_DEFINE(HAVE_SECKEYCHAINOPEN)])
        fi
     fi
 
     dnl Then look for GNU TLS...
     if test $have_ssl = 0 -a "x$enable_gnutls" != "xno" -a "x$PKGCONFIG" != x; then
-       AC_PATH_PROG(LIBGNUTLSCONFIG,libgnutls-config)
-       AC_PATH_PROG(LIBGCRYPTCONFIG,libgcrypt-config)
+       AC_PATH_TOOL(LIBGNUTLSCONFIG,libgnutls-config)
+       AC_PATH_TOOL(LIBGCRYPTCONFIG,libgcrypt-config)
        if $PKGCONFIG --exists gnutls; then
            have_ssl=1
            SSLLIBS=`$PKGCONFIG --libs gnutls`
@@ -84,58 +78,8 @@ if test x$enable_ssl != xno; then
        if test $have_ssl = 1; then
            CUPS_SERVERCERT="ssl/server.crt"
            CUPS_SERVERKEY="ssl/server.key"
-
-            if $PKGCONFIG --exists gcrypt; then
-               SSLLIBS="$SSLLIBS `$PKGCONFIG --libs gcrypt`"
-               SSLFLAGS="$SSLFLAGS `$PKGCONFIG --cflags gcrypt`"
-           elif test "x$LIBGCRYPTCONFIG" != x; then
-               SSLLIBS="$SSLLIBS `$LIBGCRYPTCONFIG --libs`"
-               SSLFLAGS="$SSLFLAGS `$LIBGCRYPTCONFIG --cflags`"
-           fi
        fi
     fi
-
-    dnl Check for the OpenSSL library last...
-    if test $have_ssl = 0 -a "x$enable_openssl" != "xno"; then
-       AC_CHECK_HEADER(openssl/ssl.h,[
-           dnl Save the current libraries so the crypto stuff isn't always
-           dnl included...
-           SAVELIBS="$LIBS"
-
-           dnl Some ELF systems can't resolve all the symbols in libcrypto
-           dnl if libcrypto was linked against RSAREF, and fail to link the
-           dnl test program correctly, even though a correct installation
-           dnl of OpenSSL exists.  So we test the linking three times in
-           dnl case the RSAREF libraries are needed.
-
-           for libcrypto in \
-               "-lcrypto" \
-               "-lcrypto -lrsaref" \
-               "-lcrypto -lRSAglue -lrsaref"
-           do
-               AC_CHECK_LIB(ssl,SSL_new,
-                   [have_ssl=1
-                    SSLFLAGS="-DOPENSSL_DISABLE_OLD_DES_SUPPORT"
-                    SSLLIBS="-lssl $libcrypto"
-                    AC_DEFINE(HAVE_SSL)
-                    AC_DEFINE(HAVE_LIBSSL)],,
-                   $libcrypto)
-
-               if test "x${SSLLIBS}" != "x"; then
-                   break
-               fi
-           done
-
-           if test "x${SSLLIBS}" != "x"; then
-               CUPS_SERVERCERT="ssl/server.crt"
-               CUPS_SERVERKEY="ssl/server.key"
-
-               LIBS="$SAVELIBS $SSLLIBS"
-               AC_CHECK_FUNCS(SSL_set_tlsext_host_name)
-           fi
-
-           LIBS="$SAVELIBS"])
-    fi
 fi
 
 IPPALIASES="http"
@@ -143,7 +87,7 @@ if test $have_ssl = 1; then
     AC_MSG_RESULT([    Using SSLLIBS="$SSLLIBS"])
     AC_MSG_RESULT([    Using SSLFLAGS="$SSLFLAGS"])
     IPPALIASES="http https ipps"
-elif test x$enable_cdsa = xyes -o x$enable_gnutls = xyes -o x$enable_openssl = xyes; then
+elif test x$enable_cdsa = xyes -o x$enable_gnutls = xyes; then
     AC_MSG_ERROR([Unable to enable SSL support.])
 fi
 
@@ -157,5 +101,5 @@ EXPORT_SSLLIBS="$SSLLIBS"
 AC_SUBST(EXPORT_SSLLIBS)
 
 dnl
-dnl End of "$Id: cups-ssl.m4 7241 2008-01-22 22:34:52Z mike $".
+dnl End of "$Id: cups-ssl.m4 11911 2014-06-10 13:54:53Z msweet $".
 dnl
diff --git a/config-scripts/cups-startup.m4 b/config-scripts/cups-startup.m4
new file mode 100644 (file)
index 0000000..946aacb
--- /dev/null
@@ -0,0 +1,176 @@
+dnl
+dnl "$Id: cups-startup.m4 11747 2014-03-27 01:15:48Z msweet $"
+dnl
+dnl Launch-on-demand/startup stuff for CUPS.
+dnl
+dnl Copyright 2007-2014 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
+
+ONDEMANDFLAGS=""
+ONDEMANDLIBS=""
+AC_SUBST(ONDEMANDFLAGS)
+AC_SUBST(ONDEMANDLIBS)
+
+dnl Launchd is used on OS X/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_HEADER(launch.h, AC_DEFINE(HAVE_LAUNCH_H))
+
+       case "$uname" in
+               Darwin*)
+                       # Darwin, MacOS X
+                       LAUNCHD_DIR="/System/Library/LaunchDaemons"
+                       # liblaunch is already part of libSystem
+                       ;;
+               *)
+                       # All others; this test will need to be updated
+                       ;;
+       esac
+fi
+
+dnl Systemd is used on Linux...
+AC_ARG_ENABLE(systemd, [  --disable-systemd       disable systemd support])
+AC_ARG_WITH(systemd, [  --with-systemd          set directory for systemd service files],
+        SYSTEMD_DIR="$withval", SYSTEMD_DIR="")
+AC_SUBST(SYSTEMD_DIR)
+
+if test x$enable_systemd != xno; then
+       if test "x$PKGCONFIG" = x; then
+               if test x$enable_systemd = xyes; then
+                       AC_MSG_ERROR(Need pkg-config to enable systemd support.)
+                fi
+        else
+               AC_MSG_CHECKING(for libsystemd-daemon)
+                if $PKGCONFIG --exists libsystemd-daemon; then
+                        AC_MSG_RESULT(yes)
+                        ONDEMANDFLAGS=`$PKGCONFIG --cflags libsystemd-daemon`
+                        ONDEMANDLIBS=`$PKGCONFIG --libs libsystemd-daemon`
+                        AC_DEFINE(HAVE_SYSTEMD)
+                       if test "x$SYSTEMD_DIR" = x; then
+                               SYSTEMD_DIR="`$PKGCONFIG --variable=systemdsystemunitdir systemd`"
+                        fi
+                else
+                        AC_MSG_RESULT(no)
+                fi
+        fi
+fi
+
+dnl Solaris uses smf
+SMFMANIFESTDIR=""
+AC_SUBST(SMFMANIFESTDIR)
+AC_ARG_WITH(smfmanifestdir, [  --with-smfmanifestdir   set path for Solaris SMF manifest],SMFMANIFESTDIR="$withval")
+
+dnl Use init on other platforms...
+AC_ARG_WITH(rcdir, [  --with-rcdir            set path for rc scripts],rcdir="$withval",rcdir="")
+AC_ARG_WITH(rclevels, [  --with-rclevels         set run levels for rc scripts],rclevels="$withval",rclevels="2 3 5")
+AC_ARG_WITH(rcstart, [  --with-rcstart          set start number for rc scripts],rcstart="$withval",rcstart="")
+AC_ARG_WITH(rcstop, [  --with-rcstop           set stop number for rc scripts],rcstop="$withval",rcstop="")
+
+if test x$rcdir = x; then
+       if test x$LAUNCHD_DIR = x -a x$SYSTEMD_DIR = x -a x$SMFMANIFESTDIR = x; then
+                # Fall back on "init", the original service startup interface...
+                if test -d /sbin/init.d; then
+                        # SuSE
+                        rcdir="/sbin/init.d"
+                elif test -d /etc/init.d; then
+                        # Others
+                        rcdir="/etc"
+                else
+                        # RedHat, NetBSD
+                        rcdir="/etc/rc.d"
+                fi
+        else
+               rcdir="no"
+       fi
+fi
+
+if test "x$rcstart" = x; then
+       case "$uname" in
+               Linux | GNU | GNU/k*BSD*)
+                       # Linux
+                        rcstart="81"
+                       ;;
+
+               SunOS*)
+                       # Solaris
+                        rcstart="81"
+                       ;;
+
+                *)
+                        # Others
+                        rcstart="99"
+                        ;;
+       esac
+fi
+
+if test "x$rcstop" = x; then
+       case "$uname" in
+               Linux | GNU | GNU/k*BSD*)
+                       # Linux
+                        rcstop="36"
+                       ;;
+
+                *)
+                        # Others
+                        rcstop="00"
+                        ;;
+       esac
+fi
+
+INITDIR=""
+INITDDIR=""
+RCLEVELS="$rclevels"
+RCSTART="$rcstart"
+RCSTOP="$rcstop"
+AC_SUBST(INITDIR)
+AC_SUBST(INITDDIR)
+AC_SUBST(RCLEVELS)
+AC_SUBST(RCSTART)
+AC_SUBST(RCSTOP)
+
+if test "x$rcdir" != xno; then
+       if test "x$rclevels" = x; then
+               INITDDIR="$rcdir"
+       else
+               INITDIR="$rcdir"
+       fi
+fi
+
+dnl Xinetd support...
+AC_ARG_WITH(xinetd, [  --with-xinetd           set path for xinetd config files],xinetd="$withval",xinetd="")
+XINETD=""
+AC_SUBST(XINETD)
+
+if test "x$xinetd" = x; then
+       if test ! -x /sbin/launchd; then
+                for dir in /etc/xinetd.d /usr/local/etc/xinetd.d; do
+                        if test -d $dir; then
+                                XINETD="$dir"
+                                break
+                        fi
+                done
+        fi
+elif test "x$xinet" != xno; then
+       XINETD="$xinetd"
+fi
+
+
+dnl
+dnl End of "$Id: cups-startup.m4 11747 2014-03-27 01:15:48Z msweet $".
+dnl
index b95c79fa42d9a9f7ae4263d088a3771e4706ebac..9eaf63a1213f98452170b674af24be2b4327e120 100644 (file)
@@ -1,5 +1,5 @@
 dnl
-dnl "$Id: cups-threads.m4 6649 2007-07-11 21:46:42Z mike $"
+dnl "$Id: cups-threads.m4 11324 2013-10-04 03:11:42Z msweet $"
 dnl
 dnl   Threading stuff for CUPS.
 dnl
@@ -50,5 +50,5 @@ fi
 AC_SUBST(PTHREAD_FLAGS)
 
 dnl
-dnl End of "$Id: cups-threads.m4 6649 2007-07-11 21:46:42Z mike $".
+dnl End of "$Id: cups-threads.m4 11324 2013-10-04 03:11:42Z msweet $".
 dnl
index 2c5399e0b02d2afc66affc9e66200e558957ef3e..c3347945ba51610274351296aef4d4cba556729e 100644 (file)
@@ -1,16 +1,16 @@
 /*
- * "$Id: config.h.in 11642 2014-02-27 15:57:59Z msweet $"
+ * "$Id: config.h.in 11717 2014-03-21 16:42:53Z msweet $"
  *
- *   Configuration file for CUPS.
+ * Configuration file for CUPS.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
+ * Copyright 2007-2014 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_CONFIG_H_
 #define CUPS_STATEDIR  "/var/run/cups"
 
 
+/*
+ * Do we have posix_spawn?
+ */
+
+#undef HAVE_POSIX_SPAWN
+
+
 /*
  * Do we have ZLIB?
  */
 
 #undef HAVE_CDSASSL
 #undef HAVE_GNUTLS
-#undef HAVE_LIBSSL
 #undef HAVE_SSL
 
 
-/*
- * Do we have the SSL_set_tlsext_host_name function?
- */
-
-#undef HAVE_SSL_SET_TLSEXT_HOST_NAME
-
-
 /*
  * What Security framework headers do we have?
  */
 #undef HAVE_CSSMERRORSTRING
 
 
+/*
+ * Do we have the SecGenerateSelfSignedCertificate function?
+ */
+
+#undef HAVE_SECGENERATESELFSIGNEDCERTIFICATE
+
+
+/*
+ * Do we have the SecKeychainOpen function?
+ */
+
+#undef HAVE_SECKEYCHAINOPEN
+
+
 /*
  * Do we have libpaper?
  */
 #undef HAVE_STRUCT_SOCKADDR_SA_LEN
 
 
-/*
- * Do we have the AIX usersec.h header file?
- */
-
-#undef HAVE_USERSEC_H
-
-
 /*
  * Do we have pthread support?
  */
 
 #undef HAVE_LAUNCH_H
 #undef HAVE_LAUNCHD
+#undef HAVE_LAUNCH_ACTIVATE_SOCKET
+
+
+/*
+ * Do we have systemd support?
+ */
+
+#undef HAVE_SYSTEMD
 
 
 /*
 #undef HAVE_NOTIFY_POST
 
 
-/*
- * Do we have Darwin's IOKit private headers?
- */
-
-#undef HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H
-
-
 /*
  * Do we have DBUS?
  */
@@ -707,5 +714,5 @@ static __inline int _cups_abs(int i) { return (i < 0 ? -i : i); }
 #endif /* !_CUPS_CONFIG_H_ */
 
 /*
- * End of "$Id: config.h.in 11642 2014-02-27 15:57:59Z msweet $".
+ * End of "$Id: config.h.in 11717 2014-03-21 16:42:53Z msweet $".
  */
index 04a23df9affa84c77ddb842d5873cb6ec52a764c..4b270fee79e7a36859e5702a0354fa7d6072639a 100755 (executable)
--- a/configure
+++ b/configure
@@ -625,6 +625,7 @@ CUPS_USER
 CUPS_DEFAULT_SHARED
 CUPS_BROWSE_LOCAL_PROTOCOLS
 CUPS_BROWSING
+CUPS_PAGE_LOG_FORMAT
 CUPS_ACCESS_LOG_LEVEL
 CUPS_LOG_LEVEL
 CUPS_FATAL_ERRORS
@@ -633,8 +634,17 @@ CUPS_CUPSD_FILE_PERM
 CUPS_CONFIG_FILE_PERM
 CUPS_BUNDLEDIR
 LANGUAGES
-LAUNCHDLIBS
-DEFAULT_LAUNCHD_CONF
+XINETD
+RCSTOP
+RCSTART
+RCLEVELS
+INITDDIR
+INITDIR
+SMFMANIFESTDIR
+SYSTEMD_DIR
+LAUNCHD_DIR
+ONDEMANDLIBS
+ONDEMANDFLAGS
 IPPFIND_MAN
 IPPFIND_BIN
 DNSSD_BACKEND
@@ -705,13 +715,6 @@ MENUDIR
 ICONDIR
 CUPS_DATADIR
 CUPS_CACHEDIR
-XINETD
-SMFMANIFESTDIR
-RCSTOP
-RCSTART
-RCLEVELS
-INITDDIR
-INITDIR
 PRIVATEINCLUDE
 privateinclude
 BUILDDIRS
@@ -818,12 +821,6 @@ with_adminkey
 with_operkey
 with_components
 with_privateinclude
-with_rcdir
-with_rclevels
-with_rcstart
-with_rcstop
-with_smfmanifestdir
-with_xinetd
 with_lpdconfig
 with_smbconfig
 with_cachedir
@@ -850,9 +847,6 @@ enable_threads
 enable_ssl
 enable_cdsassl
 enable_gnutls
-enable_openssl
-with_openssl_libs
-with_openssl_includes
 enable_pam
 with_pam_module
 enable_largefile
@@ -861,6 +855,14 @@ enable_dnssd
 with_dnssd_libs
 with_dnssd_includes
 enable_launchd
+enable_systemd
+with_systemd
+with_smfmanifestdir
+with_rcdir
+with_rclevels
+with_rcstart
+with_rcstop
+with_xinetd
 with_languages
 with_bundledir
 with_config_file_perm
@@ -869,6 +871,7 @@ with_log_file_perm
 with_fatal_errors
 with_log_level
 with_access_log_level
+with_page_logging
 enable_browsing
 with_local_protocols
 enable_default_shared
@@ -1530,12 +1533,12 @@ Optional Features:
   --disable-ssl           disable SSL/TLS support
   --enable-cdsassl        use CDSA for SSL/TLS support, default=first
   --enable-gnutls         use GNU TLS for SSL/TLS support, default=second
-  --enable-openssl        use OpenSSL for SSL/TLS support, default=third
   --disable-pam           disable PAM support
   --disable-largefile     omit support for large files
   --disable-avahi         disable DNS Service Discovery support using Avahi
   --disable-dnssd         disable DNS Service Discovery support using mDNSResponder
   --disable-launchd       disable launchd support
+  --disable-systemd       disable systemd support
   --disable-browsing      disable Browsing by default
   --disable-default-shared
                          disable DefaultShared by default
@@ -1553,12 +1556,6 @@ Optional Packages:
                            - "all" (default) builds everything
                            - "core" builds libcups and ipptool
   --with-privateinclude   set path for private include files, default=none
-  --with-rcdir            set path for rc scripts
-  --with-rclevels         set run levels for rc scripts
-  --with-rcstart          set start number for rc scripts
-  --with-rcstop           set stop number for rc scripts
-  --with-smfmanifestdir   set path for Solaris SMF manifest
-  --with-xinetd           set path for xinetd config files
   --with-lpdconfig        set URI for LPD config file
   --with-smbconfig        set URI for Samba config file
   --with-cachedir         set path for cache files
@@ -1573,11 +1570,16 @@ Optional Packages:
   --with-ldarchflags      set program architecture flags
   --with-domainsocket     set unix domain socket name
   --with-gssservicename   set default gss service name
-  --with-openssl-libs     set directory for OpenSSL library
-  --with-openssl-includes set directory for OpenSSL includes
   --with-pam-module       specify the PAM module to use
   --with-dnssd-libs       set directory for DNS Service Discovery library
   --with-dnssd-includes   set directory for DNS Service Discovery includes
+  --with-systemd          set directory for systemd service files
+  --with-smfmanifestdir   set path for Solaris SMF manifest
+  --with-rcdir            set path for rc scripts
+  --with-rclevels         set run levels for rc scripts
+  --with-rcstart          set start number for rc scripts
+  --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-config-file-perm set default ConfigFilePerm value, default=0640
@@ -1585,7 +1587,8 @@ Optional Packages:
   --with-log-file-perm    set default LogFilePerm value, default=0644
   --with-fatal-errors     set default FatalErrors value, default=config
   --with-log-level        set default LogLevel value, default=warn
-  --with-access-log-level set default AccessLogLevel value, default=actions
+  --with-access-log-level set default AccessLogLevel value, default=none
+  --enable-page-logging   enable page_log by default
   --with-local-protocols  set default BrowseLocalProtocols, default=""
   --with-cups-user        set default user for CUPS
   --with-cups-group       set default group for CUPS
@@ -2517,7 +2520,7 @@ esac
 ac_config_headers="$ac_config_headers config.h"
 
 
-CUPS_VERSION=1.7.5
+CUPS_VERSION=2.0b1
 CUPS_REVISION=
 #if test -z "$CUPS_REVISION" -a -d .svn; then
 #      CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
@@ -4109,8 +4112,9 @@ fi
 
 
 
-# Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
 if ${ac_cv_path_PKGCONFIG+:} false; then :
@@ -4149,6 +4153,63 @@ $as_echo "no" >&6; }
 fi
 
 
+fi
+if test -z "$ac_cv_path_PKGCONFIG"; then
+  ac_pt_PKGCONFIG=$PKGCONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKGCONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_PKGCONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG
+if test -n "$ac_pt_PKGCONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
+$as_echo "$ac_pt_PKGCONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKGCONFIG" = x; then
+    PKGCONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKGCONFIG=$ac_pt_PKGCONFIG
+  fi
+else
+  PKGCONFIG="$ac_cv_path_PKGCONFIG"
+fi
+
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing abs" >&5
@@ -4829,13 +4890,6 @@ if test "x$ac_cv_header_bstring_h" = xyes; then :
 fi
 
 
-ac_fn_c_check_header_mongrel "$LINENO" "usersec.h" "ac_cv_header_usersec_h" "$ac_includes_default"
-if test "x$ac_cv_header_usersec_h" = xyes; then :
-  $as_echo "#define HAVE_USERSEC_H 1" >>confdefs.h
-
-fi
-
-
 ac_fn_c_check_header_mongrel "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$ac_includes_default"
 if test "x$ac_cv_header_sys_ioctl_h" = xyes; then :
   $as_echo "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h
@@ -4857,13 +4911,6 @@ if test "x$ac_cv_header_sys_ucred_h" = xyes; then :
 fi
 
 
-ac_fn_c_check_header_mongrel "$LINENO" "scsi/sg.h" "ac_cv_header_scsi_sg_h" "$ac_includes_default"
-if test "x$ac_cv_header_scsi_sg_h" = xyes; then :
-  $as_echo "#define HAVE_SCSI_SG_H 1" >>confdefs.h
-
-fi
-
-
 
 ac_fn_c_check_header_mongrel "$LINENO" "iconv.h" "ac_cv_header_iconv_h" "$ac_includes_default"
 if test "x$ac_cv_header_iconv_h" = xyes; then :
@@ -5164,6 +5211,18 @@ fi
 done
 
 
+for ac_func in posix_spawn
+do :
+  ac_fn_c_check_func "$LINENO" "posix_spawn" "ac_cv_func_posix_spawn"
+if test "x$ac_cv_func_posix_spawn" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_POSIX_SPAWN 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
@@ -5598,13 +5657,6 @@ if test "x$ac_cv_header_CoreFoundation_CFBundlePriv_h" = xyes; then :
 fi
 
 
-               ac_fn_c_check_header_mongrel "$LINENO" "IOKit/pwr_mgt/IOPMLibPrivate.h" "ac_cv_header_IOKit_pwr_mgt_IOPMLibPrivate_h" "$ac_includes_default"
-if test "x$ac_cv_header_IOKit_pwr_mgt_IOPMLibPrivate_h" = xyes; then :
-  $as_echo "#define HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H 1" >>confdefs.h
-
-fi
-
-
 
                                for ac_func in SCDynamicStoreCopyComputerName
 do :
@@ -5904,11 +5956,6 @@ if test "$libdir" = "\${exec_prefix}/lib"; then
                                libdir="$exec_prefix/lib64"
                        fi
                        ;;
-               HP-UX*)
-                       if test -d /usr/lib/hpux32; then
-                               libdir="$exec_prefix/lib/hpux32"
-                       fi
-                       ;;
        esac
 fi
 
@@ -5930,159 +5977,6 @@ fi
 
 
 
-# Check whether --with-rcdir was given.
-if test "${with_rcdir+set}" = set; then :
-  withval=$with_rcdir; rcdir="$withval"
-else
-  rcdir=""
-fi
-
-
-# Check whether --with-rclevels was given.
-if test "${with_rclevels+set}" = set; then :
-  withval=$with_rclevels; rclevels="$withval"
-else
-  rclevels="2 3 5"
-fi
-
-
-# Check whether --with-rcstart was given.
-if test "${with_rcstart+set}" = set; then :
-  withval=$with_rcstart; rcstart="$withval"
-else
-  rcstart="99"
-fi
-
-
-# Check whether --with-rcstop was given.
-if test "${with_rcstop+set}" = set; then :
-  withval=$with_rcstop; rcstop="$withval"
-else
-  rcstop="00"
-fi
-
-
-# Check whether --with-smfmanifestdir was given.
-if test "${with_smfmanifestdir+set}" = set; then :
-  withval=$with_smfmanifestdir; smfmanifestdir="$withval"
-else
-  smfmanifestdir=""
-fi
-
-
-INITDIR=""
-INITDDIR=""
-RCLEVELS="$rclevels"
-RCSTART="$rcstart"
-RCSTOP="$rcstop"
-SMFMANIFESTDIR=""
-
-if test x$rcdir = x; then
-       case "$uname" in
-               AIX*)
-                       INITDIR="/etc/rc.d"
-                       ;;
-
-               Darwin*)
-                       # Darwin and MacOS X...
-                       if test -x /sbin/launchd; then
-                               INITDDIR="/System/Library/LaunchDaemons"
-                       else
-                               INITDDIR="/System/Library/StartupItems/PrintingServices"
-                       fi
-                       ;;
-
-               FreeBSD* | OpenBSD* | MirBSD* | ekkoBSD*)
-                       # FreeBSD and OpenBSD
-                       ;;
-
-               HP-UX*)
-                       INITDIR="/sbin"
-                       RCLEVELS="2"
-                       RCSTART="380"
-                       RCSTOP="620"
-                       ;;
-
-               Linux | GNU | GNU/k*BSD*)
-                       # Linux/HURD seems to choose an init.d directory at random...
-                       if test -d /sbin/init.d; then
-                               # SuSE
-                               INITDIR="/sbin/init.d"
-                       else
-                               if test -d /etc/init.d; then
-                                       # Others
-                                       INITDIR="/etc"
-                               else
-                                       # RedHat
-                                       INITDIR="/etc/rc.d"
-                               fi
-                       fi
-                       RCSTART="81"
-                       RCSTOP="36"
-                       ;;
-
-               NetBSD*)
-                       # NetBSD
-                       INITDDIR="/etc/rc.d"
-                       ;;
-
-               OSF1*)
-                       INITDIR="/sbin"
-                       ;;
-
-               SunOS*)
-                       # Solaris
-                       if test "x$smfmanifestdir" != x; then
-                               SMFMANIFESTDIR=$smfmanifestdir
-                       else
-                               INITDIR="/etc"
-                               RCSTART="81"
-                       fi
-                       ;;
-
-               *)
-                       INITDIR="/etc"
-                       ;;
-
-       esac
-elif test "x$rcdir" != xno; then
-       if test "x$rclevels" = x; then
-               INITDDIR="$rcdir"
-       else
-               INITDIR="$rcdir"
-       fi
-fi
-
-
-
-
-
-
-
-
-
-# Check whether --with-xinetd was given.
-if test "${with_xinetd+set}" = set; then :
-  withval=$with_xinetd; XINETD="$withval"
-else
-  XINETD=""
-fi
-
-
-if test "x$XINETD" = x -a ! -x /sbin/launchd; then
-       for dir in /private/etc/xinetd.d /etc/xinetd.d /usr/local/etc/xinetd.d; do
-               if test -d $dir; then
-                       XINETD="$dir"
-                       break
-               fi
-       done
-elif test "x$XINETD" = xno; then
-       XINETD=""
-fi
-
-
-
-
 # Check whether --with-lpdconfig was given.
 if test "${with_lpdconfig+set}" = set; then :
   withval=$with_lpdconfig; LPDCONFIG="$withval"
@@ -6266,10 +6160,6 @@ if test "$localedir" = "\${datarootdir}/locale"; then
                        CUPS_LOCALEDIR="$datarootdir/locale"
                        ;;
 
-               OSF1* | AIX*)
-                       CUPS_LOCALEDIR="$exec_prefix/lib/nls/msg"
-                       ;;
-
                *)
                        # This is the standard System V location...
                        CUPS_LOCALEDIR="$exec_prefix/lib/locale"
@@ -6382,8 +6272,8 @@ fi
 
 if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/"; then
        case "$uname" in
-               Darwin* | Linux | GNU | *BSD* | AIX*)
-                       # Darwin, MacOS X, Linux, GNU HURD, *BSD, and AIX
+               Darwin* | Linux | GNU | *BSD*)
+                       # Darwin, MacOS X, Linux, GNU HURD, and *BSD
                        mandir="/usr/share/man"
                        AMANDIR="/usr/share/man"
                        PMANDIR="/usr/share/man"
@@ -6404,8 +6294,8 @@ fi
 
 
 case "$uname" in
-       SunOS* | HP-UX*)
-               # Solaris and HP-UX
+       SunOS*)
+               # Solaris
                MAN1EXT=1
                MAN5EXT=5
                MAN7EXT=7
@@ -6464,51 +6354,7 @@ if test x$enable_shared != xno; then
                        DSOXX="\$(CXX)"
                        DSOFLAGS="$DSOFLAGS -Wl,-h\`basename \$@\` -G \$(OPTIM)"
                        ;;
-               UNIX_S*)
-                       LIBCUPS="lib$cupsbase.so.2"
-                       LIBCUPSCGI="libcupscgi.so.1"
-                       LIBCUPSIMAGE="libcupsimage.so.2"
-                       LIBCUPSMIME="libcupsmime.so.1"
-                       LIBCUPSPPDC="libcupsppdc.so.1"
-                       DSO="\$(CC)"
-                       DSOXX="\$(CXX)"
-                       DSOFLAGS="$DSOFLAGS -Wl,-h,\`basename \$@\` -G \$(OPTIM)"
-                       ;;
-               HP-UX*)
-                       case "$uarch" in
-                               ia64)
-                                       LIBCUPS="lib$cupsbase.so.2"
-                                       LIBCUPSCGI="libcupscgi.so.1"
-                                       LIBCUPSIMAGE="libcupsimage.so.2"
-                                       LIBCUPSMIME="libcupsmime.so.1"
-                                       LIBCUPSPPDC="libcupsppdc.so.1"
-                                       DSO="\$(CC)"
-                                       DSOXX="\$(CXX)"
-                                       DSOFLAGS="$DSOFLAGS -Wl,-b,-z,+h,\`basename \$@\`"
-                                       ;;
-                               *)
-                                       LIBCUPS="lib$cupsbase.sl.2"
-                                       LIBCUPSCGI="libcupscgi.sl.1"
-                                       LIBCUPSIMAGE="libcupsimage.sl.2"
-                                       LIBCUPSMIME="libcupsmime.sl.1"
-                                       LIBCUPSPPDC="libcupsppdc.sl.1"
-                                       DSO="\$(LD)"
-                                       DSOXX="\$(LD)"
-                                       DSOFLAGS="$DSOFLAGS -b -z +h \`basename \$@\`"
-                                       ;;
-                       esac
-                       ;;
-               IRIX)
-                       LIBCUPS="lib$cupsbase.so.2"
-                       LIBCUPSCGI="libcupscgi.so.1"
-                       LIBCUPSIMAGE="libcupsimage.so.2"
-                       LIBCUPSMIME="libcupsmime.so.1"
-                       LIBCUPSPPDC="libcupsppdc.so.1"
-                       DSO="\$(CC)"
-                       DSOXX="\$(CXX)"
-                       DSOFLAGS="$DSOFLAGS -set_version,sgi2.6,-soname,\`basename \$@\` -shared \$(OPTIM)"
-                       ;;
-               OSF1* | Linux | GNU | *BSD*)
+               Linux | GNU | *BSD*)
                        LIBCUPS="lib$cupsbase.so.2"
                        LIBCUPSCGI="libcupscgi.so.1"
                        LIBCUPSIMAGE="libcupsimage.so.2"
@@ -6528,17 +6374,6 @@ if test x$enable_shared != xno; then
                        DSOXX="\$(CXX)"
                        DSOFLAGS="$DSOFLAGS -dynamiclib -single_module -lc"
                        ;;
-               AIX*)
-                       LIBCUPS="lib${cupsbase}_s.a"
-                       LIBCUPSBASE="${cupsbase}_s"
-                       LIBCUPSCGI="libcupscgi_s.a"
-                       LIBCUPSIMAGE="libcupsimage_s.a"
-                       LIBCUPSMIME="libcupsmime_s.a"
-                       LIBCUPSPPDC="libcupsppdc_s.a"
-                       DSO="\$(CC)"
-                       DSOXX="\$(CXX)"
-                       DSOFLAGS="$DSOFLAGS -Wl,-bexpall,-bM:SRE,-bnoentry,-blibpath:\$(libdir)"
-                       ;;
                *)
                        echo "Warning: shared libraries may not be supported.  Trying -shared"
                        echo "         option with compiler."
@@ -6581,19 +6416,11 @@ if test x$enable_shared = xno; then
        EXTLINKCUPS="-lcups"
        EXTLINKCUPSIMAGE="-lcupsimage"
 else
-       if test $uname = AIX; then
-               LINKCUPS="-l${cupsbase}_s"
-               LINKCUPSIMAGE="-lcupsimage_s"
-
-               EXTLINKCUPS="-lcups_s"
-               EXTLINKCUPSIMAGE="-lcupsimage_s"
-       else
-               LINKCUPS="-l${cupsbase}"
-               LINKCUPSIMAGE="-lcupsimage"
+       LINKCUPS="-l${cupsbase}"
+       LINKCUPSIMAGE="-lcupsimage"
 
-               EXTLINKCUPS="-lcups"
-               EXTLINKCUPSIMAGE="-lcupsimage"
-       fi
+       EXTLINKCUPS="-lcups"
+       EXTLINKCUPSIMAGE="-lcupsimage"
 fi
 
 
@@ -6615,19 +6442,6 @@ if test "$DSO" != ":"; then
        # need this option, even when the library is installed in a
        # standard location...
        case $uname in
-                HP-UX*)
-                       # HP-UX needs the path, even for /usr/lib...
-                       case "$uarch" in
-                               ia64)
-                                       DSOFLAGS="-Wl,+s,+b,$libdir $DSOFLAGS"
-                                       ;;
-                               *)
-                                       DSOFLAGS="+s +b $libdir $DSOFLAGS"
-                                       ;;
-                       esac
-                       LDFLAGS="$LDFLAGS -Wl,+s,+b,$libdir"
-                       EXPORT_LDFLAGS="-Wl,+s,+b,$libdir"
-                       ;;
                 SunOS*)
                        # Solaris...
                        if test $exec_prefix != /usr; then
@@ -6804,7 +6618,7 @@ if test -n "$GCC"; then
        fi
 
        # Generate position-independent code as needed...
-       if test $PICFLAG = 1 -a $uname != AIX; then
+       if test $PICFLAG = 1; then
                OPTIM="-fPIC $OPTIM"
        fi
 
@@ -6908,17 +6722,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
        if test "x$with_optim" = x; then
                # Add useful warning options for tracking down problems...
-               OPTIM="-Wall -Wno-format-y2k -Wunused $OPTIM"
+               OPTIM="-Wall -Wno-format-y2k -Wsign-conversion -Wunused $OPTIM"
 
-               # Additional warning options for development testing...
-               if test -d .svn; then
-                       OPTIM="-Wshadow -Werror $OPTIM"
-               else
-                       { $as_echo "$as_me:${as_lineno-$LINENO}: checking if GCC supports -Wno-tautological-compare" >&5
+               { $as_echo "$as_me:${as_lineno-$LINENO}: checking if GCC supports -Wno-tautological-compare" >&5
 $as_echo_n "checking if GCC supports -Wno-tautological-compare... " >&6; }
-                       OLDCFLAGS="$CFLAGS"
-                       CFLAGS="$CFLAGS -Werror -Wno-tautological-compare"
-                       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+               OLDCFLAGS="$CFLAGS"
+               CFLAGS="$CFLAGS -Werror -Wno-tautological-compare"
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -6931,14 +6741,18 @@ main ()
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   OPTIM="$OPTIM -Wno-tautological-compare"
-                               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+                       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-                       CFLAGS="$OLDCFLAGS"
+               CFLAGS="$OLDCFLAGS"
+
+               # Additional warning options for development testing...
+               if test -d .svn; then
+                       OPTIM="-Werror $OPTIM"
                fi
        fi
 
@@ -6963,66 +6777,18 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 else
        # Add vendor-specific compiler options...
        case $uname in
-               AIX*)
+               SunOS*)
+                       # Solaris
                        if test -z "$OPTIM"; then
                                if test "x$with_optim" = x; then
-                                       OPTIM="-O2 -qmaxmem=6000"
+                                       OPTIM="-xO2"
                                else
                                        OPTIM="$with_optim $OPTIM"
                                fi
-                       fi
-                       ;;
-               HP-UX*)
-                       if test -z "$OPTIM"; then
-                               if test "x$with_optim" = x; then
-                                       OPTIM="+O2"
-                               else
-                                       OPTIM="$with_optim $OPTIM"
-                               fi
-                       fi
-
-                       CFLAGS="-Ae $CFLAGS"
-
-                       if test $PICFLAG = 1; then
-                               OPTIM="+z $OPTIM"
-                       fi
-                       ;;
-               OSF*)
-                       # Tru64 UNIX aka Digital UNIX aka OSF/1
-                       if test -z "$OPTIM"; then
-                               if test "x$with_optim" = x; then
-                                       OPTIM="-O"
-                               else
-                                       OPTIM="$with_optim"
-                               fi
-                       fi
-                       ;;
-               SunOS*)
-                       # Solaris
-                       if test -z "$OPTIM"; then
-                               if test "x$with_optim" = x; then
-                                       OPTIM="-xO2"
-                               else
-                                       OPTIM="$with_optim $OPTIM"
-                               fi
-                       fi
-
-                       if test $PICFLAG = 1; then
-                               OPTIM="-KPIC $OPTIM"
-                       fi
-                       ;;
-               UNIX_SVR*)
-                       # UnixWare
-                       if test -z "$OPTIM"; then
-                               if test "x$with_optim" = x; then
-                                       OPTIM="-O"
-                               else
-                                       OPTIM="$with_optim $OPTIM"
-                               fi
-                       fi
-
-                       if test $PICFLAG = 1; then
-                               OPTIM="-KPIC $OPTIM"
+                       fi
+
+                       if test $PICFLAG = 1; then
+                               OPTIM="-KPIC $OPTIM"
                        fi
                        ;;
                *)
@@ -7039,31 +6805,11 @@ fi
 
 # Add general compiler options per platform...
 case $uname in
-       HP-UX*)
-               # HP-UX 10.20 (at least) needs this definition to get the
-               # h_errno global...
-               OPTIM="$OPTIM -D_XOPEN_SOURCE_EXTENDED"
-
-               # HP-UX 11.00 (at least) needs this definition to get the
-               # u_short type used by the IP headers...
-               OPTIM="$OPTIM -D_INCLUDE_HPUX_SOURCE"
-
-               # HP-UX 11.23 (at least) needs this definition to get the
-               # IPv6 header to work...
-               OPTIM="$OPTIM -D_HPUX_SOURCE"
-               ;;
-
        Linux*)
                # glibc 2.8 and higher breaks peer credentials unless you
                # define _GNU_SOURCE...
                OPTIM="$OPTIM -D_GNU_SOURCE"
                ;;
-
-       OSF*)
-               # Tru64 UNIX aka Digital UNIX aka OSF/1 need to be told
-               # to be POSIX-compliant...
-               OPTIM="$OPTIM -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED -D_OSF_SOURCE"
-               ;;
 esac
 
 
@@ -7706,21 +7452,6 @@ fi
 
 
 
-for ac_header in AppleTalk/at_proto.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "AppleTalk/at_proto.h" "ac_cv_header_AppleTalk_at_proto_h" "#include <netat/appletalk.h>
-"
-if test "x$ac_cv_header_AppleTalk_at_proto_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_APPLETALK_AT_PROTO_H 1
-_ACEOF
- $as_echo "#define HAVE_APPLETALK_AT_PROTO_H 1" >>confdefs.h
-
-fi
-
-done
-
-
 
 
 ac_fn_c_check_func "$LINENO" "poll" "ac_cv_func_poll"
@@ -7754,8 +7485,9 @@ LIBGSSAPI=""
 
 
 if test x$enable_gssapi != xno; then
-       # Extract the first word of "krb5-config", so it can be a program name with args.
-set dummy krb5-config; ac_word=$2
+       if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}krb5-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}krb5-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
 if ${ac_cv_path_KRB5CONFIG+:} false; then :
@@ -7794,6 +7526,63 @@ $as_echo "no" >&6; }
 fi
 
 
+fi
+if test -z "$ac_cv_path_KRB5CONFIG"; then
+  ac_pt_KRB5CONFIG=$KRB5CONFIG
+  # Extract the first word of "krb5-config", so it can be a program name with args.
+set dummy krb5-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_KRB5CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_KRB5CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_KRB5CONFIG="$ac_pt_KRB5CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_KRB5CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_KRB5CONFIG=$ac_cv_path_ac_pt_KRB5CONFIG
+if test -n "$ac_pt_KRB5CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_KRB5CONFIG" >&5
+$as_echo "$ac_pt_KRB5CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_KRB5CONFIG" = x; then
+    KRB5CONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    KRB5CONFIG=$ac_pt_KRB5CONFIG
+  fi
+else
+  KRB5CONFIG="$ac_cv_path_KRB5CONFIG"
+fi
+
        if test "x$KRB5CONFIG" != x; then
                case "$uname" in
                        Darwin)
@@ -8200,25 +7989,6 @@ if test "${enable_gnutls+set}" = set; then :
   enableval=$enable_gnutls;
 fi
 
-# Check whether --enable-openssl was given.
-if test "${enable_openssl+set}" = set; then :
-  enableval=$enable_openssl;
-fi
-
-
-# Check whether --with-openssl-libs was given.
-if test "${with_openssl_libs+set}" = set; then :
-  withval=$with_openssl_libs; LDFLAGS="-L$withval $LDFLAGS"
-    DSOFLAGS="-L$withval $DSOFLAGS"
-fi
-
-
-# Check whether --with-openssl-includes was given.
-if test "${with_openssl_includes+set}" = set; then :
-  withval=$with_openssl_includes; CFLAGS="-I$withval $CFLAGS"
-    CPPFLAGS="-I$withval $CPPFLAGS"
-fi
-
 
 SSLFLAGS=""
 SSLLIBS=""
@@ -8299,6 +8069,8 @@ fi
 
                $as_echo "#define HAVE_CSSMERRORSTRING 1" >>confdefs.h
 
+               $as_echo "#define HAVE_SECKEYCHAINOPEN 1" >>confdefs.h
+
 fi
 
 
@@ -8306,8 +8078,9 @@ fi
     fi
 
         if test $have_ssl = 0 -a "x$enable_gnutls" != "xno" -a "x$PKGCONFIG" != x; then
-       # Extract the first word of "libgnutls-config", so it can be a program name with args.
-set dummy libgnutls-config; ac_word=$2
+       if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}libgnutls-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}libgnutls-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
 if ${ac_cv_path_LIBGNUTLSCONFIG+:} false; then :
@@ -8346,8 +8119,66 @@ $as_echo "no" >&6; }
 fi
 
 
-       # Extract the first word of "libgcrypt-config", so it can be a program name with args.
-set dummy libgcrypt-config; ac_word=$2
+fi
+if test -z "$ac_cv_path_LIBGNUTLSCONFIG"; then
+  ac_pt_LIBGNUTLSCONFIG=$LIBGNUTLSCONFIG
+  # Extract the first word of "libgnutls-config", so it can be a program name with args.
+set dummy libgnutls-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_LIBGNUTLSCONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_LIBGNUTLSCONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_LIBGNUTLSCONFIG="$ac_pt_LIBGNUTLSCONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_LIBGNUTLSCONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_LIBGNUTLSCONFIG=$ac_cv_path_ac_pt_LIBGNUTLSCONFIG
+if test -n "$ac_pt_LIBGNUTLSCONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_LIBGNUTLSCONFIG" >&5
+$as_echo "$ac_pt_LIBGNUTLSCONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_LIBGNUTLSCONFIG" = x; then
+    LIBGNUTLSCONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    LIBGNUTLSCONFIG=$ac_pt_LIBGNUTLSCONFIG
+  fi
+else
+  LIBGNUTLSCONFIG="$ac_cv_path_LIBGNUTLSCONFIG"
+fi
+
+       if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}libgcrypt-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}libgcrypt-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
 if ${ac_cv_path_LIBGCRYPTCONFIG+:} false; then :
@@ -8386,6 +8217,63 @@ $as_echo "no" >&6; }
 fi
 
 
+fi
+if test -z "$ac_cv_path_LIBGCRYPTCONFIG"; then
+  ac_pt_LIBGCRYPTCONFIG=$LIBGCRYPTCONFIG
+  # Extract the first word of "libgcrypt-config", so it can be a program name with args.
+set dummy libgcrypt-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_LIBGCRYPTCONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_LIBGCRYPTCONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_LIBGCRYPTCONFIG="$ac_pt_LIBGCRYPTCONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_LIBGCRYPTCONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_LIBGCRYPTCONFIG=$ac_cv_path_ac_pt_LIBGCRYPTCONFIG
+if test -n "$ac_pt_LIBGCRYPTCONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_LIBGCRYPTCONFIG" >&5
+$as_echo "$ac_pt_LIBGCRYPTCONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_LIBGCRYPTCONFIG" = x; then
+    LIBGCRYPTCONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    LIBGCRYPTCONFIG=$ac_pt_LIBGCRYPTCONFIG
+  fi
+else
+  LIBGCRYPTCONFIG="$ac_cv_path_LIBGCRYPTCONFIG"
+fi
+
        if $PKGCONFIG --exists gnutls; then
            have_ssl=1
            SSLLIBS=`$PKGCONFIG --libs gnutls`
@@ -8407,103 +8295,7 @@ fi
        if test $have_ssl = 1; then
            CUPS_SERVERCERT="ssl/server.crt"
            CUPS_SERVERKEY="ssl/server.key"
-
-            if $PKGCONFIG --exists gcrypt; then
-               SSLLIBS="$SSLLIBS `$PKGCONFIG --libs gcrypt`"
-               SSLFLAGS="$SSLFLAGS `$PKGCONFIG --cflags gcrypt`"
-           elif test "x$LIBGCRYPTCONFIG" != x; then
-               SSLLIBS="$SSLLIBS `$LIBGCRYPTCONFIG --libs`"
-               SSLFLAGS="$SSLFLAGS `$LIBGCRYPTCONFIG --cflags`"
-           fi
        fi
-    fi
-
-        if test $have_ssl = 0 -a "x$enable_openssl" != "xno"; then
-       ac_fn_c_check_header_mongrel "$LINENO" "openssl/ssl.h" "ac_cv_header_openssl_ssl_h" "$ac_includes_default"
-if test "x$ac_cv_header_openssl_ssl_h" = xyes; then :
-
-                           SAVELIBS="$LIBS"
-
-
-           for libcrypto in \
-               "-lcrypto" \
-               "-lcrypto -lrsaref" \
-               "-lcrypto -lRSAglue -lrsaref"
-           do
-               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_new in -lssl" >&5
-$as_echo_n "checking for SSL_new in -lssl... " >&6; }
-if ${ac_cv_lib_ssl_SSL_new+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lssl $libcrypto $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char SSL_new ();
-int
-main ()
-{
-return SSL_new ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_ssl_SSL_new=yes
-else
-  ac_cv_lib_ssl_SSL_new=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_new" >&5
-$as_echo "$ac_cv_lib_ssl_SSL_new" >&6; }
-if test "x$ac_cv_lib_ssl_SSL_new" = xyes; then :
-  have_ssl=1
-                    SSLFLAGS="-DOPENSSL_DISABLE_OLD_DES_SUPPORT"
-                    SSLLIBS="-lssl $libcrypto"
-                    $as_echo "#define HAVE_SSL 1" >>confdefs.h
-
-                    $as_echo "#define HAVE_LIBSSL 1" >>confdefs.h
-
-fi
-
-
-               if test "x${SSLLIBS}" != "x"; then
-                   break
-               fi
-           done
-
-           if test "x${SSLLIBS}" != "x"; then
-               CUPS_SERVERCERT="ssl/server.crt"
-               CUPS_SERVERKEY="ssl/server.key"
-
-               LIBS="$SAVELIBS $SSLLIBS"
-               for ac_func in SSL_set_tlsext_host_name
-do :
-  ac_fn_c_check_func "$LINENO" "SSL_set_tlsext_host_name" "ac_cv_func_SSL_set_tlsext_host_name"
-if test "x$ac_cv_func_SSL_set_tlsext_host_name" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_SSL_SET_TLSEXT_HOST_NAME 1
-_ACEOF
-
-fi
-done
-
-           fi
-
-           LIBS="$SAVELIBS"
-fi
-
-
     fi
 fi
 
@@ -8514,7 +8306,7 @@ $as_echo "    Using SSLLIBS=\"$SSLLIBS\"" >&6; }
     { $as_echo "$as_me:${as_lineno-$LINENO}: result:     Using SSLFLAGS=\"$SSLFLAGS\"" >&5
 $as_echo "    Using SSLFLAGS=\"$SSLFLAGS\"" >&6; }
     IPPALIASES="http https ipps"
-elif test x$enable_cdsa = xyes -o x$enable_gnutls = xyes -o x$enable_openssl = xyes; then
+elif test x$enable_cdsa = xyes -o x$enable_gnutls = xyes; then
     as_fn_error $? "Unable to enable SSL support." "$LINENO" 5
 fi
 
@@ -8541,10 +8333,6 @@ if test "${with_pam_module+set}" = set; then :
 fi
 
 
-if test $uname = AIX; then
-       enable_pam=no
-fi
-
 PAMDIR=""
 PAMFILE="pam.std"
 PAMLIBS=""
@@ -9172,15 +8960,18 @@ fi
 
 
 
+ONDEMANDFLAGS=""
+ONDEMANDLIBS=""
+
+
 
 # Check whether --enable-launchd was given.
 if test "${enable_launchd+set}" = set; then :
   enableval=$enable_launchd;
 fi
 
+LAUNCHD_DIR=""
 
-DEFAULT_LAUNCHD_CONF=""
-LAUNCHDLIBS=""
 
 if test x$enable_launchd != xno; then
        ac_fn_c_check_func "$LINENO" "launch_msg" "ac_cv_func_launch_msg"
@@ -9189,6 +8980,17 @@ if test "x$ac_cv_func_launch_msg" = xyes; then :
 
 fi
 
+       if test $uversion -ge 140; then
+               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_LAUNCH_ACTIVATE_SOCKET 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
@@ -9200,7 +9002,7 @@ fi
        case "$uname" in
                Darwin*)
                        # Darwin, MacOS X
-                       DEFAULT_LAUNCHD_CONF="/System/Library/LaunchDaemons/org.cups.cupsd.plist"
+                       LAUNCHD_DIR="/System/Library/LaunchDaemons"
                        # liblaunch is already part of libSystem
                        ;;
                *)
@@ -9209,7 +9011,181 @@ fi
        esac
 fi
 
+# Check whether --enable-systemd was given.
+if test "${enable_systemd+set}" = set; then :
+  enableval=$enable_systemd;
+fi
+
 
+# Check whether --with-systemd was given.
+if test "${with_systemd+set}" = set; then :
+  withval=$with_systemd; SYSTEMD_DIR="$withval"
+else
+  SYSTEMD_DIR=""
+fi
+
+
+
+if test x$enable_systemd != xno; then
+       if test "x$PKGCONFIG" = x; then
+               if test x$enable_systemd = xyes; then
+                       as_fn_error $? "Need pkg-config to enable systemd support." "$LINENO" 5
+                fi
+        else
+               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsystemd-daemon" >&5
+$as_echo_n "checking for libsystemd-daemon... " >&6; }
+                if $PKGCONFIG --exists libsystemd-daemon; then
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+                        ONDEMANDFLAGS=`$PKGCONFIG --cflags libsystemd-daemon`
+                        ONDEMANDLIBS=`$PKGCONFIG --libs libsystemd-daemon`
+                        $as_echo "#define HAVE_SYSTEMD 1" >>confdefs.h
+
+                       if test "x$SYSTEMD_DIR" = x; then
+                               SYSTEMD_DIR="`$PKGCONFIG --variable=systemdsystemunitdir systemd`"
+                        fi
+                else
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+                fi
+        fi
+fi
+
+SMFMANIFESTDIR=""
+
+
+# Check whether --with-smfmanifestdir was given.
+if test "${with_smfmanifestdir+set}" = set; then :
+  withval=$with_smfmanifestdir; SMFMANIFESTDIR="$withval"
+fi
+
+
+
+# Check whether --with-rcdir was given.
+if test "${with_rcdir+set}" = set; then :
+  withval=$with_rcdir; rcdir="$withval"
+else
+  rcdir=""
+fi
+
+
+# Check whether --with-rclevels was given.
+if test "${with_rclevels+set}" = set; then :
+  withval=$with_rclevels; rclevels="$withval"
+else
+  rclevels="2 3 5"
+fi
+
+
+# Check whether --with-rcstart was given.
+if test "${with_rcstart+set}" = set; then :
+  withval=$with_rcstart; rcstart="$withval"
+else
+  rcstart=""
+fi
+
+
+# Check whether --with-rcstop was given.
+if test "${with_rcstop+set}" = set; then :
+  withval=$with_rcstop; rcstop="$withval"
+else
+  rcstop=""
+fi
+
+
+if test x$rcdir = x; then
+       if test x$LAUNCHD_DIR = x -a x$SYSTEMD_DIR = x -a x$SMFMANIFESTDIR = x; then
+                # Fall back on "init", the original service startup interface...
+                if test -d /sbin/init.d; then
+                        # SuSE
+                        rcdir="/sbin/init.d"
+                elif test -d /etc/init.d; then
+                        # Others
+                        rcdir="/etc"
+                else
+                        # RedHat, NetBSD
+                        rcdir="/etc/rc.d"
+                fi
+        else
+               rcdir="no"
+       fi
+fi
+
+if test "x$rcstart" = x; then
+       case "$uname" in
+               Linux | GNU | GNU/k*BSD*)
+                       # Linux
+                        rcstart="81"
+                       ;;
+
+               SunOS*)
+                       # Solaris
+                        rcstart="81"
+                       ;;
+
+                *)
+                        # Others
+                        rcstart="99"
+                        ;;
+       esac
+fi
+
+if test "x$rcstop" = x; then
+       case "$uname" in
+               Linux | GNU | GNU/k*BSD*)
+                       # Linux
+                        rcstop="36"
+                       ;;
+
+                *)
+                        # Others
+                        rcstop="00"
+                        ;;
+       esac
+fi
+
+INITDIR=""
+INITDDIR=""
+RCLEVELS="$rclevels"
+RCSTART="$rcstart"
+RCSTOP="$rcstop"
+
+
+
+
+
+
+if test "x$rcdir" != xno; then
+       if test "x$rclevels" = x; then
+               INITDDIR="$rcdir"
+       else
+               INITDIR="$rcdir"
+       fi
+fi
+
+
+# Check whether --with-xinetd was given.
+if test "${with_xinetd+set}" = set; then :
+  withval=$with_xinetd; xinetd="$withval"
+else
+  xinetd=""
+fi
+
+XINETD=""
+
+
+if test "x$xinetd" = x; then
+       if test ! -x /sbin/launchd; then
+                for dir in /etc/xinetd.d /usr/local/etc/xinetd.d; do
+                        if test -d $dir; then
+                                XINETD="$dir"
+                                break
+                        fi
+                done
+        fi
+elif test "x$xinet" != xno; then
+       XINETD="$xinetd"
+fi
 
 
 
@@ -9326,7 +9302,7 @@ _ACEOF
 if test "${with_access_log_level+set}" = set; then :
   withval=$with_access_log_level; CUPS_ACCESS_LOG_LEVEL="$withval"
 else
-  CUPS_ACCESS_LOG_LEVEL="actions"
+  CUPS_ACCESS_LOG_LEVEL="none"
 fi
 
 
@@ -9335,6 +9311,19 @@ cat >>confdefs.h <<_ACEOF
 _ACEOF
 
 
+
+# Check whether --with-page_logging was given.
+if test "${with_page_logging+set}" = set; then :
+  withval=$with_page_logging;
+fi
+
+if test "x$enable_page_logging" = xyes; then
+       CUPS_PAGE_LOG_FORMAT=""
+else
+       CUPS_PAGE_LOG_FORMAT="PageLogFormat"
+fi
+
+
 # Check whether --enable-browsing was given.
 if test "${enable_browsing+set}" = set; then :
   enableval=$enable_browsing;
@@ -10088,7 +10077,7 @@ fi
 
 
 
-ac_config_files="$ac_config_files Makedefs conf/cups-files.conf conf/cupsd.conf conf/mime.convs conf/pam.std conf/snmp.conf cups-config data/testprint desktop/cups.desktop doc/help/ref-cups-files-conf.html doc/help/ref-cupsd-conf.html doc/index.html man/client.conf.man man/cups-deviced.man man/cups-driverd.man man/cups-files.conf.man man/cups-lpd.man man/cups-snmp.man man/cupsaddsmb.man man/cupsd.conf.man man/cupsd.man man/lpoptions.man scheduler/cups-lpd.xinetd scheduler/cups.sh scheduler/cups.xml scheduler/org.cups.cups-lpd.plist templates/header.tmpl packaging/cups.list $LANGFILES"
+ac_config_files="$ac_config_files Makedefs conf/cups-files.conf conf/cupsd.conf conf/mime.convs conf/pam.std conf/snmp.conf cups-config data/testprint desktop/cups.desktop doc/index.html man/client.conf.man man/cups-files.conf.man man/cups-lpd.man man/cups-snmp.man man/cupsaddsmb.man man/cupsd.conf.man man/cupsd.man man/lpoptions.man scheduler/cups-lpd.xinetd scheduler/cups.sh scheduler/cups.xml scheduler/org.cups.cups-lpd.plist scheduler/org.cups.cupsd.path scheduler/org.cups.cupsd.service scheduler/org.cups.cupsd.socket templates/header.tmpl packaging/cups.list $LANGFILES"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
     "cups-config") CONFIG_FILES="$CONFIG_FILES cups-config" ;;
     "data/testprint") CONFIG_FILES="$CONFIG_FILES data/testprint" ;;
     "desktop/cups.desktop") CONFIG_FILES="$CONFIG_FILES desktop/cups.desktop" ;;
-    "doc/help/ref-cups-files-conf.html") CONFIG_FILES="$CONFIG_FILES doc/help/ref-cups-files-conf.html" ;;
-    "doc/help/ref-cupsd-conf.html") CONFIG_FILES="$CONFIG_FILES doc/help/ref-cupsd-conf.html" ;;
     "doc/index.html") CONFIG_FILES="$CONFIG_FILES doc/index.html" ;;
     "man/client.conf.man") CONFIG_FILES="$CONFIG_FILES man/client.conf.man" ;;
-    "man/cups-deviced.man") CONFIG_FILES="$CONFIG_FILES man/cups-deviced.man" ;;
-    "man/cups-driverd.man") CONFIG_FILES="$CONFIG_FILES man/cups-driverd.man" ;;
     "man/cups-files.conf.man") CONFIG_FILES="$CONFIG_FILES man/cups-files.conf.man" ;;
     "man/cups-lpd.man") CONFIG_FILES="$CONFIG_FILES man/cups-lpd.man" ;;
     "man/cups-snmp.man") CONFIG_FILES="$CONFIG_FILES man/cups-snmp.man" ;;
@@ -10819,6 +10804,9 @@ do
     "scheduler/cups.sh") CONFIG_FILES="$CONFIG_FILES scheduler/cups.sh" ;;
     "scheduler/cups.xml") CONFIG_FILES="$CONFIG_FILES scheduler/cups.xml" ;;
     "scheduler/org.cups.cups-lpd.plist") CONFIG_FILES="$CONFIG_FILES scheduler/org.cups.cups-lpd.plist" ;;
+    "scheduler/org.cups.cupsd.path") CONFIG_FILES="$CONFIG_FILES scheduler/org.cups.cupsd.path" ;;
+    "scheduler/org.cups.cupsd.service") CONFIG_FILES="$CONFIG_FILES scheduler/org.cups.cupsd.service" ;;
+    "scheduler/org.cups.cupsd.socket") CONFIG_FILES="$CONFIG_FILES scheduler/org.cups.cupsd.socket" ;;
     "templates/header.tmpl") CONFIG_FILES="$CONFIG_FILES templates/header.tmpl" ;;
     "packaging/cups.list") CONFIG_FILES="$CONFIG_FILES packaging/cups.list" ;;
     "$LANGFILES") CONFIG_FILES="$CONFIG_FILES $LANGFILES" ;;
similarity index 70%
rename from configure.in
rename to configure.ac
index 4a5d804377d491bf29c4885f5747080471f168ed..21d7f93a762839e813f1244e960857cb156f9aa3 100644 (file)
@@ -1,16 +1,16 @@
 dnl
-dnl "$Id: configure.in 11109 2013-07-08 21:15:13Z msweet $"
+dnl "$Id: configure.ac 11823 2014-04-21 12:22:03Z msweet $"
 dnl
-dnl   Configuration script for CUPS.
+dnl Configuration script for CUPS.
 dnl
-dnl   Copyright 2007-2012 by Apple Inc.
-dnl   Copyright 1997-2007 by Easy Software Products, all rights reserved.
+dnl Copyright 2007-2014 by Apple Inc.
+dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
 dnl
-dnl   These coded instructions, statements, and computer programs are the
-dnl   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_INIT(cups/cups.h)
@@ -32,7 +32,7 @@ sinclude(config-scripts/cups-ssl.m4)
 sinclude(config-scripts/cups-pam.m4)
 sinclude(config-scripts/cups-largefile.m4)
 sinclude(config-scripts/cups-dnssd.m4)
-sinclude(config-scripts/cups-launchd.m4)
+sinclude(config-scripts/cups-startup.m4)
 sinclude(config-scripts/cups-defaults.m4)
 sinclude(config-scripts/cups-scripting.m4)
 
@@ -68,12 +68,8 @@ AC_OUTPUT(Makedefs
          cups-config
          data/testprint
          desktop/cups.desktop
-         doc/help/ref-cups-files-conf.html
-         doc/help/ref-cupsd-conf.html
          doc/index.html
          man/client.conf.man
-         man/cups-deviced.man
-         man/cups-driverd.man
          man/cups-files.conf.man
          man/cups-lpd.man
          man/cups-snmp.man
@@ -85,6 +81,9 @@ AC_OUTPUT(Makedefs
          scheduler/cups.sh
          scheduler/cups.xml
          scheduler/org.cups.cups-lpd.plist
+         scheduler/org.cups.cupsd.path
+         scheduler/org.cups.cupsd.service
+         scheduler/org.cups.cupsd.socket
          templates/header.tmpl
           packaging/cups.list
          $LANGFILES)
@@ -92,5 +91,5 @@ AC_OUTPUT(Makedefs
 chmod +x cups-config
 
 dnl
-dnl End of "$Id: configure.in 11109 2013-07-08 21:15:13Z msweet $".
+dnl End of "$Id: configure.ac 11823 2014-04-21 12:22:03Z msweet $".
 dnl
index 10beea26ba737d49aa8a943afee74f7a41e39e47..54bd08c7c629e7f00a9c979f519eeb96d8343626 100644 (file)
 adminutil.o: adminutil.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h adminutil.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
 array.o: array.c string-private.h ../config.h debug-private.h \
   ../cups/versioning.h array-private.h ../cups/array.h
 attr.o: attr.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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 ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 backchannel.o: backchannel.c cups.h file.h versioning.h ipp.h http.h \
-  array.h language.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 ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h backend.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 ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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 ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 debug.o: debug.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 dest.o: dest.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 dest-job.o: dest-job.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 dest-localization.o: dest-localization.c cups-private.h string-private.h \
-  ../config.h debug-private.h ../cups/versioning.h ipp-private.h \
-  ../cups/ipp.h http.h array.h http-private.h md5-private.h \
-  language-private.h ../cups/transcode.h language.h pwg-private.h \
-  ../cups/cups.h file.h ppd-private.h ../cups/ppd.h thread-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
 dest-options.o: dest-options.c cups-private.h string-private.h \
-  ../config.h debug-private.h ../cups/versioning.h ipp-private.h \
-  ../cups/ipp.h http.h array.h http-private.h md5-private.h \
-  language-private.h ../cups/transcode.h language.h pwg-private.h \
-  ../cups/cups.h file.h ppd-private.h ../cups/ppd.h thread-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
 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 ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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 ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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.o: file.c file-private.h cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 getdevices.o: getdevices.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
-getifaddrs.o: getifaddrs.c http-private.h ../config.h ../cups/http.h \
-  versioning.h array.h md5-private.h ipp-private.h ../cups/ipp.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
+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
 getputfile.o: getputfile.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 globals.o: globals.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 http.o: http.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 http-addr.o: http-addr.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 http-addrlist.o: http-addrlist.c cups-private.h string-private.h \
-  ../config.h debug-private.h ../cups/versioning.h ipp-private.h \
-  ../cups/ipp.h http.h array.h http-private.h md5-private.h \
-  language-private.h ../cups/transcode.h language.h pwg-private.h \
-  ../cups/cups.h file.h ppd-private.h ../cups/ppd.h thread-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
 http-support.o: http-support.c cups-private.h string-private.h \
-  ../config.h debug-private.h ../cups/versioning.h ipp-private.h \
-  ../cups/ipp.h http.h array.h http-private.h md5-private.h \
-  language-private.h ../cups/transcode.h language.h pwg-private.h \
-  ../cups/cups.h file.h ppd-private.h ../cups/ppd.h thread-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
 ipp.o: ipp.c cups-private.h string-private.h ../config.h debug-private.h \
-  ../cups/versioning.h ipp-private.h ../cups/ipp.h http.h array.h \
-  http-private.h md5-private.h language-private.h ../cups/transcode.h \
-  language.h pwg-private.h ../cups/cups.h file.h ppd-private.h \
-  ../cups/ppd.h thread-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
 ipp-support.o: ipp-support.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 langprintf.o: langprintf.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 language.o: language.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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 ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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 ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 md5.o: md5.c md5-private.h string-private.h ../config.h
-md5passwd.o: md5passwd.c http-private.h ../config.h ../cups/http.h \
-  versioning.h array.h md5-private.h ipp-private.h ../cups/ipp.h \
-  string-private.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 \
+  ../cups/ipp.h string-private.h
 notify.o: notify.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 options.o: options.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
+  language.h pwg.h
 ppd.o: ppd.c cups-private.h string-private.h ../config.h debug-private.h \
-  ../cups/versioning.h ipp-private.h ../cups/ipp.h http.h array.h \
-  http-private.h md5-private.h language-private.h ../cups/transcode.h \
-  language.h pwg-private.h ../cups/cups.h file.h ppd-private.h \
-  ../cups/ppd.h thread-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
 ppd-cache.o: ppd-cache.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 pwg-media.o: pwg-media.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 request.o: request.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 sidechannel.o: sidechannel.c sidechannel.h versioning.h cups-private.h \
-  string-private.h ../config.h debug-private.h ipp-private.h \
-  ../cups/ipp.h http.h array.h http-private.h md5-private.h \
-  language-private.h ../cups/transcode.h language.h pwg-private.h \
-  ../cups/cups.h file.h ppd-private.h ../cups/ppd.h thread-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
 snmp.o: snmp.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h snmp-private.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
 snprintf.o: snprintf.c string-private.h ../config.h
 string.o: string.c string-private.h ../config.h debug-private.h \
   ../cups/versioning.h thread-private.h array.h
 tempfile.o: tempfile.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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.o: thread.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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.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
 transcode.o: transcode.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 usersys.o: usersys.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 util.o: util.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 testadmin.o: testadmin.c adminutil.h cups.h file.h versioning.h ipp.h \
-  http.h array.h language.h string-private.h ../config.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.h dir.h
+  ../cups/versioning.h array-private.h ../cups/array.h dir.h
 testconflicts.o: testconflicts.c cups.h file.h versioning.h ipp.h http.h \
-  array.h language.h ppd.h string-private.h ../config.h
+  array.h language.h pwg.h ppd.h string-private.h ../config.h
 testcups.o: testcups.c string-private.h ../config.h cups.h file.h \
-  versioning.h ipp.h http.h array.h language.h ppd.h
+  versioning.h ipp.h http.h array.h language.h pwg.h ppd.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 \
   ../cups/versioning.h file.h
-testhttp.o: testhttp.c string-private.h ../config.h http-private.h \
-  ../cups/http.h versioning.h array.h md5-private.h ipp-private.h \
-  ../cups/ipp.h
+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
 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 \
   ipp-private.h ../cups/ipp.h http.h array.h
 testoptions.o: testoptions.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 testlang.o: testlang.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 testppd.o: testppd.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.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
 testpwg.o: testpwg.c ppd-private.h ../cups/cups.h file.h versioning.h \
-  ipp.h http.h array.h language.h ../cups/ppd.h pwg-private.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 ipp-private.h http-private.h md5-private.h \
-  language-private.h ../cups/transcode.h thread-private.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 ipp-private.h ../cups/ipp.h \
-  http.h array.h http-private.h md5-private.h language-private.h \
-  ../cups/transcode.h language.h pwg-private.h ../cups/cups.h file.h \
-  ppd-private.h ../cups/ppd.h thread-private.h snmp-private.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
index e3647f3def8760bd831bf73269cab309a0d32175..00b9b2b80ab6cac6f7c7b535fb3ea01377e6f9f5 100644 (file)
@@ -1,18 +1,18 @@
 #
-# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
+# "$Id: Makefile 12032 2014-07-15 20:37:32Z msweet $"
 #
-#   API library Makefile for CUPS.
+# API library Makefile for CUPS.
 #
-#   Copyright 2007-2013 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/".
 #
-#   This file is subject to the Apple OS-Developed Software exception.
+# This file is subject to the Apple OS-Developed Software exception.
 #
 
 include ../Makedefs
@@ -76,6 +76,7 @@ LIBOBJS       =       \
                string.o \
                tempfile.o \
                thread.o \
+               tls.o \
                transcode.o \
                usersys.o \
                util.o
@@ -84,6 +85,7 @@ TESTOBJS      = \
                testarray.o \
                testconflicts.o \
                testcups.o \
+               testdest.o \
                testfile.o \
                testhttp.o \
                testi18n.o \
@@ -147,8 +149,10 @@ LIBTARGETS =       \
 UNITTARGETS =  \
                testadmin \
                testarray \
+               testcache \
                testconflicts \
                testcups \
+               testdest \
                testfile \
                testhttp \
                testi18n \
@@ -190,7 +194,7 @@ unittests:  $(UNITTARGETS)
 
 clean:
        $(RM) $(OBJS) $(TARGETS) $(UNITTARGETS)
-       $(RM) libcups.so libcups.sl libcups.dylib
+       $(RM) libcups.so libcups.dylib
 
 
 #
@@ -257,7 +261,7 @@ install-libs: $(INSTALLSTATIC)
        echo Installing libraries in $(LIBDIR)...
        $(INSTALL_DIR) -m 755 $(LIBDIR)
        $(INSTALL_LIB) $(LIBCUPS) $(LIBDIR)
-       if test $(LIBCUPS) = "libcups.so.2" -o $(LIBCUPS) = "libcups.sl.2"; then \
+       if test $(LIBCUPS) = "libcups.so.2"; then \
                $(RM) $(LIBDIR)/`basename $(LIBCUPS) .2`; \
                $(LN) $(LIBCUPS) $(LIBDIR)/`basename $(LIBCUPS) .2`; \
        fi
@@ -286,9 +290,6 @@ uninstall:
        $(RM) $(LIBDIR)/libcups.2.dylib
        $(RM) $(LIBDIR)/$(LIBCUPSSTATIC)
        $(RM) $(LIBDIR)/libcups.dylib
-       $(RM) $(LIBDIR)/libcups_s.a
-       $(RM) $(LIBDIR)/libcups.sl
-       $(RM) $(LIBDIR)/libcups.sl.2
        $(RM) $(LIBDIR)/libcups.so
        $(RM) $(LIBDIR)/libcups.so.2
        -$(RMDIR) $(LIBDIR)
@@ -299,10 +300,10 @@ uninstall:
 
 
 #
-# libcups.so.2, libcups.sl.2
+# libcups.so.2
 #
 
-libcups.so.2 libcups.sl.2:     $(LIBOBJS)
+libcups.so.2:  $(LIBOBJS)
        echo Linking $@...
        $(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS) $(LIBGSSAPI) \
                $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
@@ -322,7 +323,7 @@ libcups.2.dylib:    $(LIBOBJS) $(LIBCUPSORDER)
        echo Linking $@...
        $(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ \
                -install_name $(libdir)/$@ \
-               -current_version 2.10.0 \
+               -current_version 2.11.0 \
                -compatibility_version 2.0.0 \
                -exported_symbols_list t.exp \
                $(LIBOBJS) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
@@ -331,19 +332,6 @@ libcups.2.dylib:   $(LIBOBJS) $(LIBCUPSORDER)
        $(LN) $@ libcups.dylib
 
 
-#
-# libcups_s.a
-#
-
-libcups_s.a:   $(LIBOBJS) libcups_s.exp
-       echo Creating $@...
-       $(DSO) $(DSOFLAGS) -Wl,-bexport:libcups_s.exp -o libcups_s.o \
-               $(LIBOBJS) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
-               $(COMMONLIBS) $(LIBZ)
-       $(RM) $@
-       $(AR) $(ARFLAGS) $@ libcups_s.o
-
-
 #
 # libcups.la
 #
@@ -351,7 +339,7 @@ libcups_s.a:        $(LIBOBJS) libcups_s.exp
 libcups.la:    $(LIBOBJS)
        echo Linking $@...
        $(CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) \
-               -rpath $(LIBDIR) -version-info 2:10 $(LIBGSSAPI) $(SSLLIBS) \
+               -rpath $(LIBDIR) -version-info 2:11 $(LIBGSSAPI) $(SSLLIBS) \
                $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
 
 
@@ -366,6 +354,23 @@ libcups.a: $(LIBOBJS)
        $(RANLIB) $@
 
 
+#
+# libcups2.def (Windows DLL exports file...)
+#
+
+libcups2.def: $(LIBOBJS) Makefile
+       echo Generating $@...
+       echo "LIBRARY libcups2" >libcups2.def
+       echo "VERSION 2.11" >>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) | \
+               grep -v -E \
+                   -e 'cups_debug|Apple|BackChannel|Backend|FileCheck|Filter|GSSService|SetNegotiate|SideChannel' \
+                   -e 'Block$$' | \
+               sed -e '1,$$s/^_//' | sort >>libcups2.def
+
+
 #
 # testadmin (dependency on static CUPS library is intentional)
 #
@@ -388,6 +393,16 @@ testarray: testarray.o $(LIBCUPSSTATIC)
        ./testarray
 
 
+#
+# testcache (dependency on static CUPS library is intentional)
+#
+
+testcache:     testcache.o $(LIBCUPSSTATIC)
+       echo Linking $@...
+       $(CC) $(LDFLAGS) -o $@ testcache.o $(LIBCUPSSTATIC) \
+               $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
+
+
 #
 # testconflicts (dependency on static CUPS library is intentional)
 #
@@ -408,6 +423,16 @@ testcups:  testcups.o $(LIBCUPSSTATIC)
                $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
 
 
+#
+# testdest (dependency on static CUPS library is intentional)
+#
+
+testdest:      testdest.o $(LIBCUPSSTATIC)
+       echo Linking $@...
+       $(CC) $(LDFLAGS) -o $@ testdest.o $(LIBCUPSSTATIC) \
+               $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
+
+
 #
 # testfile (dependency on static CUPS library is intentional)
 #
@@ -636,8 +661,9 @@ sloc:
 #
 
 include Dependencies
+tls.o: tls-darwin.c tls-gnutls.c tls-sspi.c
 
 
 #
-# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
+# End of "$Id: Makefile 12032 2014-07-15 20:37:32Z msweet $".
 #
index 580511b8fe54f90638879f395d10fa13de13a82f..9307893f565b20e1f84249c73b3bd76a2e294769 100644 (file)
@@ -1,29 +1,18 @@
 /*
- * "$Id: adminutil.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: adminutil.c 11598 2014-02-18 18:58:19Z msweet $"
  *
- *   Administration utility API definitions for CUPS.
+ * Administration utility API definitions for CUPS.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 2001-2007 by Easy Software Products.
+ * Copyright 2007-2014 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.
- *
- * Contents:
- *
- *   cupsAdminCreateWindowsPPD()  - Create the Windows PPD file for a printer.
- *   cupsAdminExportSamba()       - Export a printer to Samba.
- *   cupsAdminGetServerSettings() - Get settings from the server.
- *   cupsAdminSetServerSettings() - Set settings on the server.
- *   do_samba_command()           - Do a SAMBA command.
- *   get_cupsd_conf()             - Get the current cupsd.conf file.
- *   invalidate_cupsd_cache()     - Invalidate the cached cupsd.conf settings.
- *   write_option()               - Write a CUPS option to a PPD file.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -52,7 +41,7 @@ static int            do_samba_command(const char *command,
                                         FILE *logfile);
 static http_status_t   get_cupsd_conf(http_t *http, _cups_globals_t *cg,
                                       time_t last_update, char *name,
-                                      int namelen, int *remote);
+                                      size_t namelen, int *remote);
 static void            invalidate_cupsd_cache(_cups_globals_t *cg);
 static void            write_option(cups_file_t *dstfp, int order,
                                     const char *name, const char *text,
@@ -319,7 +308,7 @@ cupsAdminCreateWindowsPPD(
        }
       }
 
-      snprintf(ptr + 1, sizeof(line) - (ptr - line + 1),
+      snprintf(ptr + 1, sizeof(line) - (size_t)(ptr - line + 1),
                "%%cupsJobTicket: %s=%s\n\"\n*End", option, choice);
 
       cupsFilePrintf(dstfp, "*%% Changed for CUPS Windows Driver...\n%s\n",
@@ -2120,7 +2109,7 @@ get_cupsd_conf(
     _cups_globals_t *cg,               /* I - Global data */
     time_t          last_update,       /* I - Last update time for file */
     char            *name,             /* I - Filename buffer */
-    int             namesize,          /* I - Size of filename buffer */
+    size_t          namesize,          /* I - Size of filename buffer */
     int             *remote)           /* O - Remote file? */
 {
   int          fd;                     /* Temporary file descriptor */
@@ -2176,7 +2165,7 @@ get_cupsd_conf(
     * Read cupsd.conf via a HTTP GET request...
     */
 
-    if ((fd = cupsTempFd(name, namesize)) < 0)
+    if ((fd = cupsTempFd(name, (int)namesize)) < 0)
     {
       *name = '\0';
 
@@ -2337,5 +2326,5 @@ write_option(cups_file_t     *dstfp,      /* I - PPD file */
 
 
 /*
- * End of "$Id: adminutil.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: adminutil.c 11598 2014-02-18 18:58:19Z msweet $".
  */
index 29ae6d95ebabc31044367fd50df492d2eed83977..b93ca1895e33345125204747de963bbcc5047b65 100644 (file)
@@ -1,56 +1,25 @@
 /*
- * "$Id: array.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: array.c 12031 2014-07-15 19:57:59Z msweet $"
  *
- *   Sorted array routines for CUPS.
+ * Sorted array routines for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   cupsArrayAdd()         - Add an element to the array.
- *   _cupsArrayAddStrings() - Add zero or more comma-delimited strings to an
- *                            array.
- *   cupsArrayClear()       - Clear the array.
- *   cupsArrayCount()       - Get the number of elements in the array.
- *   cupsArrayCurrent()     - Return the current element in the array.
- *   cupsArrayDelete()      - Free all memory used by the array.
- *   cupsArrayDup()         - Duplicate the array.
- *   cupsArrayFind()        - Find an element in the array.
- *   cupsArrayFirst()       - Get the first element in the array.
- *   cupsArrayGetIndex()    - Get the index of the current element.
- *   cupsArrayGetInsert()   - Get the index of the last inserted element.
- *   cupsArrayIndex()       - Get the N-th element in the array.
- *   cupsArrayInsert()      - Insert an element in the array.
- *   cupsArrayLast()        - Get the last element in the array.
- *   cupsArrayNew()         - Create a new array.
- *   cupsArrayNew2()        - Create a new array with hash.
- *   cupsArrayNew3()        - Create a new array with hash and/or free function.
- *   _cupsArrayNewStrings() - Create a new array of comma-delimited strings.
- *   cupsArrayNext()        - Get the next element in the array.
- *   cupsArrayPrev()        - Get the previous element in the array.
- *   cupsArrayRemove()      - Remove an element from the array.
- *   cupsArrayRestore()     - Reset the current element to the last @link
- *                            cupsArraySave@.
- *   cupsArraySave()        - Mark the current element for a later @link
- *                            cupsArrayRestore@.
- *   cupsArrayUserData()    - Return the user data for an array.
- *   cups_array_add()       - Insert or append an element to the array.
- *   cups_array_find()      - Find an element in the array.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
  * Include necessary headers...
  */
 
+#include <cups/cups.h>
 #include "string-private.h"
 #include "debug-private.h"
 #include "array-private.h"
@@ -423,7 +392,7 @@ cupsArrayDup(cups_array_t *a)               /* I - Array */
     * Allocate memory for the elements...
     */
 
-    da->elements = malloc(a->num_elements * sizeof(void *));
+    da->elements = malloc((size_t)a->num_elements * sizeof(void *));
     if (!da->elements)
     {
       free(da);
@@ -451,7 +420,7 @@ cupsArrayDup(cups_array_t *a)               /* I - Array */
       * Just copy raw pointers...
       */
 
-      memcpy(da->elements, a->elements, a->num_elements * sizeof(void *));
+      memcpy(da->elements, a->elements, (size_t)a->num_elements * sizeof(void *));
     }
 
     da->num_elements   = a->num_elements;
@@ -794,7 +763,7 @@ cupsArrayNew3(cups_array_func_t  f, /* I - Comparison function or @code NULL@ fo
   {
     a->hashfunc  = h;
     a->hashsize  = hsize;
-    a->hash      = malloc(hsize * sizeof(int));
+    a->hash      = malloc((size_t)hsize * sizeof(int));
 
     if (!a->hash)
     {
@@ -802,7 +771,7 @@ cupsArrayNew3(cups_array_func_t  f, /* I - Comparison function or @code NULL@ fo
       return (NULL);
     }
 
-    memset(a->hash, -1, hsize * sizeof(int));
+    memset(a->hash, -1, (size_t)hsize * sizeof(int));
   }
 
   a->copyfunc = cf;
@@ -918,9 +887,9 @@ int                                 /* O - 1 on success, 0 on failure */
 cupsArrayRemove(cups_array_t *a,       /* I - Array */
                 void         *e)       /* I - Element */
 {
-  int  i,                              /* Looping var */
-       current,                        /* Current element */
-       diff;                           /* Difference */
+  ssize_t      i,                      /* Looping var */
+               current;                /* Current element */
+  int          diff;                   /* Difference */
 
 
  /*
@@ -952,7 +921,7 @@ cupsArrayRemove(cups_array_t *a,    /* I - Array */
 
   if (current < a->num_elements)
     memmove(a->elements + current, a->elements + current + 1,
-            (a->num_elements - current) * sizeof(void *));
+            (size_t)(a->num_elements - current) * sizeof(void *));
 
   if (current <= a->current)
     a->current --;
@@ -1053,9 +1022,9 @@ cups_array_add(cups_array_t *a,           /* I - Array */
                void         *e,                /* I - Element to add */
               int          insert)     /* I - 1 = insert, 0 = append */
 {
-  int  i,                              /* Looping var */
-       current,                        /* Current element */
-       diff;                           /* Comparison with current element */
+  int          i,                      /* Looping var */
+               current;                /* Current element */
+  int          diff;                   /* Comparison with current element */
 
 
   DEBUG_printf(("7cups_array_add(a=%p, e=%p, insert=%d)", a, e, insert));
@@ -1079,7 +1048,7 @@ cups_array_add(cups_array_t *a,           /* I - Array */
     if (a->alloc_elements == 0)
     {
       count = 16;
-      temp  = malloc(count * sizeof(void *));
+      temp  = malloc((size_t)count * sizeof(void *));
     }
     else
     {
@@ -1088,10 +1057,10 @@ cups_array_add(cups_array_t *a,         /* I - Array */
       else
         count = a->alloc_elements + 1024;
 
-      temp = realloc(a->elements, count * sizeof(void *));
+      temp = realloc(a->elements, (size_t)count * sizeof(void *));
     }
 
-    DEBUG_printf(("9cups_array_add: count=%d", count));
+    DEBUG_printf(("9cups_array_add: count=" CUPS_LLFMT, CUPS_LLCAST count));
 
     if (!temp)
     {
@@ -1181,7 +1150,7 @@ cups_array_add(cups_array_t *a,           /* I - Array */
     */
 
     memmove(a->elements + current + 1, a->elements + current,
-            (a->num_elements - current) * sizeof(void *));
+            (size_t)(a->num_elements - current) * sizeof(void *));
 
     if (a->current >= current)
       a->current ++;
@@ -1190,11 +1159,11 @@ cups_array_add(cups_array_t *a,         /* I - Array */
       if (a->saved[i] >= current)
        a->saved[i] ++;
 
-    DEBUG_printf(("9cups_array_add: insert element at index %d...", current));
+    DEBUG_printf(("9cups_array_add: insert element at index " CUPS_LLFMT, CUPS_LLCAST current));
   }
 #ifdef DEBUG
   else
-    DEBUG_printf(("9cups_array_add: append element at %d...", current));
+    DEBUG_printf(("9cups_array_add: append element at " CUPS_LLFMT, CUPS_LLCAST current));
 #endif /* DEBUG */
 
   if (a->copyfunc)
@@ -1213,8 +1182,7 @@ cups_array_add(cups_array_t *a,           /* I - Array */
 
 #ifdef DEBUG
   for (current = 0; current < a->num_elements; current ++)
-    DEBUG_printf(("9cups_array_add: a->elements[%d]=%p", current,
-                  a->elements[current]));
+    DEBUG_printf(("9cups_array_add: a->elements[" CUPS_LLFMT "]=%p", CUPS_LLCAST current, a->elements[current]));
 #endif /* DEBUG */
 
   DEBUG_puts("9cups_array_add: returning 1");
@@ -1362,5 +1330,5 @@ cups_array_find(cups_array_t *a,  /* I - Array */
 
 
 /*
- * End of "$Id: array.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: array.c 12031 2014-07-15 19:57:59Z msweet $".
  */
index 9d38b391182a07149f03007bdc6ad113b28a1119..048dd4f08a7c513b2e07cb41da434be1880f1cef 100644 (file)
@@ -1,32 +1,21 @@
 /*
- * "$Id: auth.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: auth.c 11776 2014-03-28 19:16:05Z msweet $"
  *
- *   Authentication functions for CUPS.
+ * Authentication functions for CUPS.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
+ * Copyright 2007-2014 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products.
  *
- *   This file contains Kerberos support code, copyright 2006 by
- *   Jelmer Vernooij.
+ * This file contains Kerberos support code, copyright 2006 by
+ * Jelmer Vernooij.
  *
- *   These coded instructions, statements, and computer programs 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:
- *
- *   cupsDoAuthentication()        - Authenticate a request.
- *   _cupsSetNegotiateAuthString() - Set the Kerberos authentication string.
- *   cups_gss_acquire()            - Kerberos credentials callback.
- *   cups_gss_getname()            - Get CUPS service credentials for
- *                                   authentication.
- *   cups_gss_printf()             - Show debug error messages from GSSAPI.
- *   cups_local_auth()             - Get the local authorization certificate if
- *                                   available/applicable.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -272,7 +261,6 @@ cupsDoAuthentication(
     char       encode[33],             /* MD5 buffer */
                digest[1024];           /* Digest auth data */
 
-
     httpGetSubField(http, HTTP_FIELD_WWW_AUTHENTICATE, "realm", realm);
     httpGetSubField(http, HTTP_FIELD_WWW_AUTHENTICATE, "nonce", nonce);
 
@@ -453,21 +441,21 @@ _cupsSetNegotiateAuthString(
     * arbitrarily large credentials...
     */
 
-    int authsize = 10 +                                /* "Negotiate " */
-                  output_token.length * 4 / 3 + 1 +    /* Base64 */
-                  1;                                   /* nul */
+    int authsize = 10 +                        /* "Negotiate " */
+                  (int)output_token.length * 4 / 3 + 1 + 1;
+                                       /* Base64 + nul */
 
     httpSetAuthString(http, NULL, NULL);
 
-    if ((http->authstring = malloc(authsize)) == NULL)
+    if ((http->authstring = malloc((size_t)authsize)) == NULL)
     {
       http->authstring = http->_authstring;
       authsize         = sizeof(http->_authstring);
     }
 
-    strlcpy(http->authstring, "Negotiate ", authsize);
+    strlcpy(http->authstring, "Negotiate ", (size_t)authsize);
     httpEncode64_2(http->authstring + 10, authsize - 10, output_token.value,
-                  output_token.length);
+                  (int)output_token.length);
 
     gss_release_buffer(&minor_status, &output_token);
   }
@@ -888,5 +876,5 @@ cups_local_auth(http_t *http)               /* I - HTTP connection to server */
 
 
 /*
- * End of "$Id: auth.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: auth.c 11776 2014-03-28 19:16:05Z msweet $".
  */
index 66fa1ce4d52c453653729785eb5173b61788431a..dca31d28622811f78d96a8e3ec4f14f4006a62db 100644 (file)
@@ -1,24 +1,18 @@
 /*
- * "$Id: backchannel.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: backchannel.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Backchannel functions for CUPS.
+ * Backchannel functions for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   cupsBackChannelRead()  - Read data from the backchannel.
- *   cupsBackChannelWrite() - Write data to the backchannel.
- *   cups_setup()           - Setup select()
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -169,7 +163,7 @@ cupsBackChannelWrite(
       */
 
       buffer += count;
-      total  += count;
+      total  += (size_t)count;
     }
   }
 
@@ -195,5 +189,5 @@ cups_setup(fd_set         *set,             /* I - Set for select() */
 
 
 /*
- * End of "$Id: backchannel.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: backchannel.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 2ec8b7eb624b4634c7da76d8d8e28be0a2e31c35..23fecde8d7cab3f8ba69eb8cf24457a02f147d59 100644 (file)
@@ -1,34 +1,20 @@
 /*
- * "$Id: conflicts.c 3933 2012-10-01 03:01:10Z msweet $"
+ * "$Id: conflicts.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Option marking routines for CUPS.
+ * Option marking routines for CUPS.
  *
- *   Copyright 2007-2012 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/".
  *
- *   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:
- *
- *   cupsGetConflicts()       - Get a list of conflicting options in a marked
- *                              PPD.
- *   cupsResolveConflicts()   - Resolve conflicts in a marked PPD.
- *   ppdConflicts()           - Check to see if there are any conflicts among
- *                              the marked option choices.
- *   ppdInstallableConflict() - Test whether an option choice conflicts with an
- *                              installable option.
- *   ppd_is_installable()     - Determine whether an option is in the
- *                              InstallableOptions group.
- *   ppd_load_constraints()   - Load constraints from a PPD file.
- *   ppd_test_constraints()   - See if any constraints are active.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -193,7 +179,7 @@ cupsResolveConflicts(
                        tries,          /* Number of tries */
                        num_newopts;    /* Number of new options */
   cups_option_t                *newopts;       /* New options */
-  cups_array_t         *active,        /* Active constraints */
+  cups_array_t         *active = NULL, /* Active constraints */
                        *pass,          /* Resolvers for this pass */
                        *resolvers,     /* Resolvers we have used */
                        *test;          /* Test array for conflicts */
@@ -886,7 +872,7 @@ ppd_load_constraints(ppd_file_t *ppd)       /* I - PPD file */
       return;
     }
 
-    if ((constptr = calloc(i, sizeof(_ppd_cups_uiconst_t))) == NULL)
+    if ((constptr = calloc((size_t)i, sizeof(_ppd_cups_uiconst_t))) == NULL)
     {
       free(consts);
       DEBUG_puts("8ppd_load_constraints: Unable to allocate memory for "
@@ -1210,5 +1196,5 @@ ppd_test_constraints(
 
 
 /*
- * End of "$Id: conflicts.c 3933 2012-10-01 03:01:10Z msweet $".
+ * End of "$Id: conflicts.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 9328cdadf32b9ef233a3b5f41beb03d6aed64f5e..90420a220db681c76cc369ea604389baff2f1b40 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: cups-private.h 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: cups-private.h 11851 2014-05-07 23:55:35Z msweet $"
  *
  *   Private definitions for CUPS.
  *
@@ -166,9 +166,9 @@ typedef struct _cups_globals_s              /**** CUPS global state data ****/
   void                 *server_cert_data;
                                        /* Server certificate user data */
   int                  server_version, /* Server IPP version */
-                       any_root,       /* Allow any root */
+                       any_root,       /* Allow any (e.g., self-signed) root */
                        expired_certs,  /* Allow expired certs */
-                       expired_root;   /* Allow expired root */
+                       validate_certs; /* Validate certificates */
 
   /* util.c */
   char                 def_printer[256];
@@ -281,5 +281,5 @@ extern char         *_cupsUserDefault(char *name, size_t namesize);
 #endif /* !_CUPS_CUPS_PRIVATE_H_ */
 
 /*
- * End of "$Id: cups-private.h 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: cups-private.h 11851 2014-05-07 23:55:35Z msweet $".
  */
index 3a1e8d1fddf7c62d884fbb9f4c5da81da7899a31..77e824d0bcfb41e3cb091c12e70e627b5ddff487 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: cups.h 12025 2014-07-15 13:00:17Z msweet $"
+ * "$Id: cups.h 11884 2014-05-16 21:54:22Z msweet $"
  *
  * API definitions for CUPS.
  *
@@ -49,10 +49,10 @@ extern "C" {
  * Constants...
  */
 
-#  define CUPS_VERSION                 1.0705
-#  define CUPS_VERSION_MAJOR           1
-#  define CUPS_VERSION_MINOR           7
-#  define CUPS_VERSION_PATCH           5
+#  define CUPS_VERSION                 2.0000
+#  define CUPS_VERSION_MAJOR           2
+#  define CUPS_VERSION_MINOR           0
+#  define CUPS_VERSION_PATCH           0
 
 #  define CUPS_BC_FD                   3
                                        /* Back-channel file descriptor for
@@ -615,6 +615,11 @@ 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 */
+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;
 
 #  ifdef __cplusplus
 }
@@ -623,5 +628,5 @@ extern const char   *cupsUserAgent(void) _CUPS_API_1_7;
 #endif /* !_CUPS_CUPS_H_ */
 
 /*
- * End of "$Id: cups.h 12025 2014-07-15 13:00:17Z msweet $".
+ * End of "$Id: cups.h 11884 2014-05-16 21:54:22Z msweet $".
  */
index 6df860cb75a6bb926d162fe016865fca27835160..d6c38f7d758d6ac68ac45b930e665f28b367c1bb 100644 (file)
@@ -1,24 +1,17 @@
 /*
- * "$Id: debug.c 4027 2012-11-16 01:00:05Z msweet $"
+ * "$Id: debug.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Debugging functions for CUPS.
+ * Debugging functions for CUPS.
  *
- *   Copyright 2008-2012 by Apple Inc.
+ * Copyright 2008-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/".
+ * These coded instructions, statements, and computer programs 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:
- *
- *   debug_vsnprintf()    - Format a string into a fixed size buffer.
- *   _cups_debug_printf() - Write a formatted line to the log.
- *   _cups_debug_puts()   - Write a single line to the log.
- *   _cups_debug_set()    - Enable or disable debug logging.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -92,7 +85,7 @@ debug_thread_id(void)
  * 'debug_vsnprintf()' - Format a string into a fixed size buffer.
  */
 
-static int                             /* O - Number of bytes formatted */
+static ssize_t                         /* O - Number of bytes formatted */
 debug_vsnprintf(char       *buffer,    /* O - Output buffer */
                 size_t     bufsize,    /* O - Size of output buffer */
                const char *format,     /* I - printf-style format string */
@@ -108,7 +101,7 @@ debug_vsnprintf(char       *buffer, /* O - Output buffer */
                *tptr,                  /* Pointer into temporary format */
                temp[1024];             /* Buffer for formatted numbers */
   char         *s;                     /* Pointer to string */
-  int          bytes;                  /* Total number of bytes needed */
+  ssize_t      bytes;                  /* Total number of bytes needed */
 
 
   if (!buffer || bufsize < 2 || !format)
@@ -149,7 +142,7 @@ debug_vsnprintf(char       *buffer, /* O - Output buffer */
        format ++;
        width = va_arg(ap, int);
 
-       snprintf(tptr, sizeof(tformat) - (tptr - tformat), "%d", width);
+       snprintf(tptr, sizeof(tformat) - (size_t)(tptr - tformat), "%d", width);
        tptr += strlen(tptr);
       }
       else
@@ -181,7 +174,7 @@ debug_vsnprintf(char       *buffer, /* O - Output buffer */
          format ++;
          prec = va_arg(ap, int);
 
-         snprintf(tptr, sizeof(tformat) - (tptr - tformat), "%d", prec);
+         snprintf(tptr, sizeof(tformat) - (size_t)(tptr - tformat), "%d", prec);
          tptr += strlen(tptr);
        }
        else
@@ -236,7 +229,7 @@ debug_vsnprintf(char       *buffer, /* O - Output buffer */
        case 'e' :
        case 'f' :
        case 'g' :
-           if ((width + 2) > sizeof(temp))
+           if ((size_t)(width + 2) > sizeof(temp))
              break;
 
            sprintf(temp, tformat, va_arg(ap, double));
@@ -258,7 +251,7 @@ debug_vsnprintf(char       *buffer, /* O - Output buffer */
        case 'o' :
        case 'u' :
        case 'x' :
-           if ((width + 2) > sizeof(temp))
+           if ((size_t)(width + 2) > sizeof(temp))
              break;
 
 #  ifdef HAVE_LONG_LONG
@@ -281,7 +274,7 @@ debug_vsnprintf(char       *buffer, /* O - Output buffer */
            break;
 
        case 'p' : /* Pointer value */
-           if ((width + 2) > sizeof(temp))
+           if ((size_t)(width + 2) > sizeof(temp))
              break;
 
            sprintf(temp, tformat, va_arg(ap, void *));
@@ -301,7 +294,7 @@ debug_vsnprintf(char       *buffer, /* O - Output buffer */
            if (bufptr)
            {
              if (width <= 1)
-               *bufptr++ = va_arg(ap, int);
+               *bufptr++ = (char)va_arg(ap, int);
              else
              {
                if ((bufptr + width) > bufend)
@@ -382,7 +375,7 @@ debug_vsnprintf(char       *buffer, /* O - Output buffer */
            break;
 
        case 'n' : /* Output number of chars so far */
-           *(va_arg(ap, int *)) = bytes;
+           *(va_arg(ap, int *)) = (int)bytes;
            break;
       }
     }
@@ -418,7 +411,7 @@ _cups_debug_printf(const char *format,      /* I - Printf-style format string */
   va_list              ap;             /* Pointer to arguments */
   struct timeval       curtime;        /* Current time */
   char                 buffer[2048];   /* Output buffer */
-  size_t               bytes;          /* Number of bytes in buffer */
+  ssize_t              bytes;          /* Number of bytes in buffer */
   int                  level;          /* Log level in message */
 
 
@@ -471,7 +464,7 @@ _cups_debug_printf(const char *format,      /* I - Printf-style format string */
   bytes = debug_vsnprintf(buffer + 19, sizeof(buffer) - 20, format, ap) + 19;
   va_end(ap);
 
-  if (bytes >= (sizeof(buffer) - 1))
+  if ((size_t)bytes >= (sizeof(buffer) - 1))
   {
     buffer[sizeof(buffer) - 2] = '\n';
     bytes = sizeof(buffer) - 1;
@@ -487,7 +480,7 @@ _cups_debug_printf(const char *format,      /* I - Printf-style format string */
   */
 
   _cupsMutexLock(&debug_log_mutex);
-  write(_cups_debug_fd, buffer, bytes);
+  write(_cups_debug_fd, buffer, (size_t)bytes);
   _cupsMutexUnlock(&debug_log_mutex);
 }
 
@@ -501,7 +494,7 @@ _cups_debug_puts(const char *s)             /* I - String to output */
 {
   struct timeval       curtime;        /* Current time */
   char                 buffer[2048];   /* Output buffer */
-  size_t               bytes;          /* Number of bytes in buffer */
+  ssize_t              bytes;          /* Number of bytes in buffer */
   int                  level;          /* Log level in message */
 
 
@@ -551,7 +544,7 @@ _cups_debug_puts(const char *s)             /* I - String to output */
                   (int)(curtime.tv_sec % 60), (int)(curtime.tv_usec / 1000),
                   s);
 
-  if (bytes >= (sizeof(buffer) - 1))
+  if ((size_t)bytes >= (sizeof(buffer) - 1))
   {
     buffer[sizeof(buffer) - 2] = '\n';
     bytes = sizeof(buffer) - 1;
@@ -567,7 +560,7 @@ _cups_debug_puts(const char *s)             /* I - String to output */
   */
 
   _cupsMutexLock(&debug_log_mutex);
-  write(_cups_debug_fd, buffer, bytes);
+  write(_cups_debug_fd, buffer, (size_t)bytes);
   _cupsMutexUnlock(&debug_log_mutex);
 }
 
@@ -650,5 +643,5 @@ _cups_debug_set(const char *logfile,        /* I - Log file or NULL */
 
 
 /*
- * End of "$Id: debug.c 4027 2012-11-16 01:00:05Z msweet $".
+ * End of "$Id: debug.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index f346444c66423734b935d17d0227f4fc88317acd..703b1710d3f029b976cf2f7d6c583f888cc4d5a2 100644 (file)
@@ -1,25 +1,17 @@
 /*
- * "$Id: dest-job.c 4274 2013-04-09 20:10:23Z msweet $"
+ * "$Id: dest-job.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Destination job support for CUPS.
+ * Destination job support for CUPS.
  *
- *   Copyright 2012-2013 by Apple Inc.
+ * Copyright 2012-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/".
+ * These coded instructions, statements, and computer programs 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:
- *
- *   cupsCancelDestJob()      - Cancel a job on a destination.
- *   cupsCloseDestJob()       - Close a job and start printing.
- *   cupsCreateDestJob()      - Create a job on a destination.
- *   cupsFinishDestDocument() - Finish the current document.
- *   cupsStartDestDocument()  - Start a new document.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -45,6 +37,12 @@ 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;
+
   return (IPP_STATUS_ERROR_NOT_FOUND);
 }
 
@@ -344,7 +342,7 @@ cupsStartDestDocument(
   if (format)
     ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE,
                  "document-format", NULL, format);
-  ippAddBoolean(request, IPP_TAG_OPERATION, "last-document", last_document);
+  ippAddBoolean(request, IPP_TAG_OPERATION, "last-document", (char)last_document);
 
   cupsEncodeOptions2(request, num_options, options, IPP_TAG_OPERATION);
   cupsEncodeOptions2(request, num_options, options, IPP_TAG_DOCUMENT);
@@ -362,5 +360,5 @@ cupsStartDestDocument(
 
 
 /*
- * End of "$Id: dest-job.c 4274 2013-04-09 20:10:23Z msweet $".
+ * End of "$Id: dest-job.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 9c3cfae15061538fc4c16a09a55d69208cee4eb7..f2bb9eb066ae93de5abb78b3fa2d68ce1bde91b4 100644 (file)
@@ -1,28 +1,17 @@
 /*
- * "$Id: dest-localization.c 4216 2013-03-11 13:57:36Z msweet $"
+ * "$Id: dest-localization.c 11894 2014-05-23 03:18:00Z msweet $"
  *
- *   Destination localization support for CUPS.
+ * Destination localization support for CUPS.
  *
- *   Copyright 2012-2013 by Apple Inc.
+ * Copyright 2012-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/".
+ * These coded instructions, statements, and computer programs 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:
- *
- *   cupsLocalizeDestOption()   - Get the localized string for a destination
- *                                option.
- *   cupsLocalizeDestValue()    - Get the localized string for a destination
- *                                option+value pair.
- *   cups_create_localizations() - Create the localizations array for a
- *                                destination.
- *   cups_read_strings()        - Read a pair of strings from a .strings file.
- *   cups_scan_strings()        - Scan a quoted string.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -42,6 +31,170 @@ static int  cups_read_strings(cups_file_t *fp, char *buffer, size_t bufsize,
 static char    *cups_scan_strings(char *buffer);
 
 
+/*
+ * 'cupsLocalizeDestMedia()' - Get the localized string for a destination media
+ *                             size.
+ *
+ * The returned string is stored in the destination information and will become
+ * invalid if the destination information is deleted.
+ *
+ * @since CUPS 2.0@
+ */
+
+const char *                           /* O - Localized string */
+cupsLocalizeDestMedia(
+    http_t       *http,                        /* I - Connection to destination */
+    cups_dest_t  *dest,                        /* I - Destination */
+    cups_dinfo_t *dinfo,               /* I - Destination information */
+    unsigned     flags,                        /* I - Media flags */
+    cups_size_t  *size)                        /* I - Media size */
+{
+  cups_lang_t          *lang;          /* Standard localizations */
+  _cups_message_t      key,            /* Search key */
+                       *match;         /* Matching entry */
+  pwg_media_t          *pwg;           /* PWG media information */
+  cups_array_t         *db;            /* Media database */
+  _cups_media_db_t     *mdb;           /* Media database entry */
+  char                 name[1024],     /* Size name */
+                       temp[256];      /* Temporary string */
+  const char           *lsize,         /* Localized media size */
+                       *lsource,       /* Localized media source */
+                       *ltype;         /* Localized media type */
+
+
+ /*
+  * Range check input...
+  */
+
+  if (!http || !dest || !dinfo || !size)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
+    return (NULL);
+  }
+
+ /*
+  * See if the localization is cached...
+  */
+
+  if (!dinfo->localizations)
+    cups_create_localizations(http, dinfo);
+
+  key.id = size->media;
+  if ((match = (_cups_message_t *)cupsArrayFind(dinfo->localizations, &key)) != NULL)
+    return (match->str);
+
+ /*
+  * If not, get the localized size, source, and type strings...
+  */
+
+  lang = cupsLangDefault();
+  pwg  = pwgMediaForSize(size->width, size->length);
+
+  if (pwg->ppd)
+    lsize = _cupsLangString(lang, pwg->ppd);
+  else
+    lsize = NULL;
+
+  if (!lsize)
+  {
+    if ((size->width % 635) == 0 && (size->length % 635) == 0)
+    {
+     /*
+      * Use inches since the size is a multiple of 1/4 inch.
+      */
+
+      snprintf(temp, sizeof(temp), _cupsLangString(lang, _("%g x %g")), size->width / 2540.0, size->length / 2540.0);
+    }
+    else
+    {
+     /*
+      * Use millimeters since the size is not a multiple of 1/4 inch.
+      */
+
+      snprintf(temp, sizeof(temp), _cupsLangString(lang, _("%d x %d mm")), (size->width + 50) / 100, (size->length + 50) / 100);
+    }
+
+    lsize = temp;
+  }
+
+  if (flags & CUPS_MEDIA_FLAGS_READY)
+    db = dinfo->ready_db;
+  else
+    db = dinfo->media_db;
+
+  DEBUG_printf(("1cupsLocalizeDestMedia: size->media=\"%s\"", size->media));
+
+  for (mdb = (_cups_media_db_t *)cupsArrayFirst(db); mdb; mdb = (_cups_media_db_t *)cupsArrayNext(db))
+  {
+    if (mdb->key && !strcmp(mdb->key, size->media))
+      break;
+    else if (mdb->size_name && !strcmp(mdb->size_name, size->media))
+      break;
+  }
+
+  if (!mdb)
+  {
+    for (mdb = (_cups_media_db_t *)cupsArrayFirst(db); mdb; mdb = (_cups_media_db_t *)cupsArrayNext(db))
+    {
+      if (mdb->width == size->width && mdb->length == size->length && mdb->bottom == size->bottom && mdb->left == size->left && mdb->right == size->right && mdb->top == size->top)
+       break;
+    }
+  }
+
+  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));
+
+    lsource = cupsLocalizeDestValue(http, dest, dinfo, "media-source", mdb->source);
+    ltype   = cupsLocalizeDestValue(http, dest, dinfo, "media-type", mdb->type);
+  }
+  else
+  {
+    lsource = NULL;
+    ltype   = NULL;
+  }
+
+  if (!lsource && !ltype)
+  {
+    if (size->bottom || size->left || size->right || size->top)
+      snprintf(name, sizeof(name), _cupsLangString(lang, _("%s (Borderless)")), lsize);
+    else
+      strlcpy(name, lsize, sizeof(name));
+  }
+  else if (!lsource)
+  {
+    if (size->bottom || size->left || size->right || size->top)
+      snprintf(name, sizeof(name), _cupsLangString(lang, _("%s (Borderless, %s)")), lsize, ltype);
+    else
+      snprintf(name, sizeof(name), _cupsLangString(lang, _("%s (%s)")), lsize, ltype);
+  }
+  else if (!ltype)
+  {
+    if (size->bottom || size->left || size->right || size->top)
+      snprintf(name, sizeof(name), _cupsLangString(lang, _("%s (Borderless, %s)")), lsize, lsource);
+    else
+      snprintf(name, sizeof(name), _cupsLangString(lang, _("%s (%s)")), lsize, lsource);
+  }
+  else
+  {
+    if (size->bottom || size->left || size->right || size->top)
+      snprintf(name, sizeof(name), _cupsLangString(lang, _("%s (Borderless, %s, %s)")), lsize, ltype, lsource);
+    else
+      snprintf(name, sizeof(name), _cupsLangString(lang, _("%s (%s, %s)")), lsize, ltype, lsource);
+  }
+
+  if ((match = (_cups_message_t *)calloc(1, sizeof(_cups_message_t))) == NULL)
+    return (NULL);
+
+  match->id  = strdup(size->media);
+  match->str = strdup(name);
+
+  cupsArrayAdd(dinfo->localizations, match);
+
+  return (match->str);
+}
+
+
 /*
  * 'cupsLocalizeDestOption()' - Get the localized string for a destination
  *                              option.
@@ -356,8 +509,7 @@ cups_scan_strings(char *buffer)             /* I - Start of string */
        * Decode \nnn octal escape...
        */
 
-       *bufptr = ((((bufptr[1] - '0') << 3) | (bufptr[2] - '0')) << 3) |
-                 (bufptr[3] - '0');
+       *bufptr = (char)(((((bufptr[1] - '0') << 3) | (bufptr[2] - '0')) << 3) | (bufptr[3] - '0'));
        _cups_strcpy(bufptr + 1, bufptr + 4);
       }
       else
@@ -383,5 +535,5 @@ cups_scan_strings(char *buffer)             /* I - Start of string */
 
 
 /*
- * End of "$Id: dest-localization.c 4216 2013-03-11 13:57:36Z msweet $".
+ * End of "$Id: dest-localization.c 11894 2014-05-23 03:18:00Z msweet $".
  */
index 8c585340a5755c91ba985131b1d89cb7ddc045b9..8fda3c83242aa8ed43d528580d47dfc53bb6869b 100644 (file)
@@ -1,55 +1,17 @@
 /*
- * "$Id: dest-options.c 11883 2014-05-16 21:04:07Z msweet $"
+ * "$Id: dest-options.c 11882 2014-05-16 21:02:15Z msweet $"
  *
- *   Destination option/media support for CUPS.
+ * Destination option/media support for CUPS.
  *
- *   Copyright 2012-2013 by Apple Inc.
+ * Copyright 2012-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/".
+ * These coded instructions, statements, and computer programs 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:
- *
- *   cupsCheckDestSupported()  - Check that the option and value are supported
- *                              by the destination.
- *   cupsCopyDestConflicts()   - Get conflicts and resolutions for a new
- *                              option/value pair.
- *   cupsCopyDestInfo()        - Get the supported values/capabilities for the
- *                              destination.
- *   cupsFindDestDefault()     - Find the default value(s) for the given
- *                              option.
- *   cupsFindDestReady()       - Find the default value(s) for the given
- *                              option.
- *   cupsFindDestSupported()   - Find the default value(s) for the given
- *                              option.
- *   cupsFreeDestInfo()        - Free destination information obtained using
- *                              @link cupsCopyDestInfo@.
- *   cupsGetDestMediaByIndex() - Get a media name, dimension, and margins for a
- *                              specific size.
- *   cupsGetDestMediaByName()  - Get media names, dimensions, and margins.
- *   cupsGetDestMediaBySize()  - Get media names, dimensions, and margins.
- *   cupsGetDestMediaCount()   - Get the number of sizes supported by a
- *                              destination.
- *   cupsGetDestMediaDefault() - Get the default size for a destination.
- *   cups_add_dconstres()      - Add a constraint or resolver to an array.
- *   cups_compare_dconstres()  - Compare to resolver entries.
- *   cups_compare_media_db()   - Compare two media entries.
- *   cups_copy_media_db()      - Copy a media entry.
- *   cups_create_cached()      - Create the media selection cache.
- *   cups_create_constraints() - Create the constraints and resolvers arrays.
- *   cups_create_defaults()    - Create the -default option array.
- *   cups_create_media_db()    - Create the media database.
- *   cups_free_media_cb()      - Free a media entry.
- *   cups_get_media_db()       - Lookup the media entry for a given size.
- *   cups_is_close_media_db()  - Compare two media entries to see if they are
- *                              close to the same size.
- *   cups_test_constraints()   - Test constraints.
- *   cups_update_ready()       - Update xxx-ready attributes for the printer.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -328,7 +290,7 @@ cupsCopyDestConflicts(
                *myres = NULL,          /* My resolved options */
                *myoption,              /* My current option */
                *option;                /* Current option */
-  cups_array_t *active,                /* Active conflicts */
+  cups_array_t *active = NULL,         /* Active conflicts */
                *pass = NULL,           /* Resolvers for this pass */
                *resolvers = NULL,      /* Resolvers we have used */
                *test;                  /* Test array for conflicts */
@@ -669,7 +631,7 @@ cupsCopyDestInfo(
         version = 11;
       else if (status == IPP_STATUS_ERROR_BUSY)
       {
-        sleep(delay);
+        sleep((unsigned)delay);
 
         delay = _cupsNextDelay(delay, &prev_delay);
       }
@@ -1184,7 +1146,7 @@ cupsGetDestMediaDefault(
   * Fall back to the first matching media size...
   */
 
-  return (cupsGetDestMediaByIndex(http, dest, dinfo, flags, 0, size));
+  return (cupsGetDestMediaByIndex(http, dest, dinfo, 0, flags, size));
 }
 
 
@@ -2286,9 +2248,7 @@ cups_update_ready(http_t       *http,     /* I - Connection to destination */
                dinfo->uri);
   ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
                NULL, cupsUser());
-  ippAddStrings(request, IPP_TAG_OPERATION,
-                IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST, "requested-attributes",
-                (int)(sizeof(pattrs) / sizeof(pattrs[0])), NULL, pattrs);
+  ippAddStrings(request, IPP_TAG_OPERATION, IPP_CONST_TAG(IPP_TAG_KEYWORD), "requested-attributes", (int)(sizeof(pattrs) / sizeof(pattrs[0])), NULL, pattrs);
 
   dinfo->ready_attrs = cupsDoRequest(http, request, dinfo->resource);
 
@@ -2307,5 +2267,5 @@ cups_update_ready(http_t       *http,     /* I - Connection to destination */
 
 
 /*
- * End of "$Id: dest-options.c 11883 2014-05-16 21:04:07Z msweet $".
+ * End of "$Id: dest-options.c 11882 2014-05-16 21:02:15Z msweet $".
  */
index 7b30340a5facf22f62a6b795e3a544e1d4e13ec5..ab36a0660025f698846c1e986617cfd5f27da534 100644 (file)
@@ -1,85 +1,18 @@
 /*
- * "$Id: dest.c 11688 2014-03-05 21:11:32Z msweet $"
+ * "$Id: dest.c 11959 2014-06-26 18:30:19Z msweet $"
  *
- *   User-defined destination (and option) support for CUPS.
+ * User-defined destination (and option) support for CUPS.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   cupsAddDest()                 - Add a destination to the list of
- *                                   destinations.
- *   _cupsAppleCopyDefaultPaperID() - Get the default paper ID.
- *   _cupsAppleCopyDefaultPrinter() - Get the default printer at this location.
- *   _cupsAppleGetUseLastPrinter()  - Get whether to use the last used printer.
- *   _cupsAppleSetDefaultPaperID()  - Set the default paper id.
- *   _cupsAppleSetDefaultPrinter()  - Set the default printer for this
- *                                   location.
- *   _cupsAppleSetUseLastPrinter()  - Set whether to use the last used printer.
- *   cupsConnectDest()             - Connect to the server for a destination.
- *   cupsConnectDestBlock()        - Connect to the server for a destination.
- *   cupsCopyDest()                - Copy a destination.
- *   cupsEnumDests()               - Enumerate available destinations with a
- *                                   callback function.
- *   cupsEnumDestsBlock()          - Enumerate available destinations with a
- *                                   block.
- *   cupsFreeDests()               - Free the memory used by the list of
- *                                   destinations.
- *   cupsGetDest()                 - Get the named destination from the list.
- *   _cupsGetDestResource()        - Get the resource path and URI for a
- *                                   destination.
- *   _cupsGetDests()               - Get destinations from a server.
- *   cupsGetDests()                - Get the list of destinations from the
- *                                   default server.
- *   cupsGetDests2()               - Get the list of destinations from the
- *                                   specified server.
- *   cupsGetNamedDest()            - Get options for the named destination.
- *   cupsRemoveDest()              - Remove a destination from the destination
- *                                   list.
- *   cupsSetDefaultDest()          - Set the default destination.
- *   cupsSetDests()                - Save the list of destinations for the
- *                                   default server.
- *   cupsSetDests2()               - Save the list of destinations for the
- *                                   specified server.
- *   _cupsUserDefault()            - Get the user default printer from
- *                                   environment variables and location
- *                                   information.
- *   appleCopyLocations()          - Copy the location history array.
- *   appleCopyNetwork()            - Get the network ID for the current
- *                                   location.
- *   appleGetPaperSize()           - Get the default paper size.
- *   appleGetPrinter()             - Get a printer from the history array.
- *   cups_add_dest()               - Add a destination to the array.
- *   cups_block_cb()               - Enumeration callback for block API.
- *   cups_compare_dests()          - Compare two destinations.
- *   cups_dnssd_browse_cb()        - Browse for printers.
- *   cups_dnssd_browse_cb()        - Browse for printers.
- *   cups_dnssd_client_cb()        - Avahi client callback function.
- *   cups_dnssd_compare_device()    - Compare two devices.
- *   cups_dnssd_free_device()      - Free the memory used by a device.
- *   cups_dnssd_get_device()       - Lookup a device and create it as needed.
- *   cups_dnssd_local_cb()         - Browse for local printers.
- *   cups_dnssd_poll_cb()          - Wait for input on the specified file
- *                                   descriptors.
- *   cups_dnssd_query_cb()         - Process query data.
- *   cups_dnssd_resolve()          - Resolve a Bonjour printer URI.
- *   cups_dnssd_resolve_cb()       - See if we should continue resolving.
- *   cups_dnssd_unquote()          - Unquote a name string.
- *   cups_find_dest()              - Find a destination using a binary search.
- *   cups_get_default()            - Get the default destination from an
- *                                   lpoptions file.
- *   cups_get_dests()              - Get destinations from a file.
- *   cups_make_string()            - Make a comma-separated string of values
- *                                   from an IPP attribute.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -334,7 +267,7 @@ cupsAddDest(const char  *name,              /* I  - Destination name */
       * Copy options from parent...
       */
 
-      dest->options = calloc(sizeof(cups_option_t), parent->num_options);
+      dest->options = calloc(sizeof(cups_option_t), (size_t)parent->num_options);
 
       if (dest->options)
       {
@@ -672,9 +605,9 @@ cupsConnectDest(
 
   if (httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme),
                       userpass, sizeof(userpass), hostname, sizeof(hostname),
-                      &port, resource, resourcesize) < HTTP_URI_STATUS_OK)
+                      &port, resource, (int)resourcesize) < HTTP_URI_STATUS_OK)
   {
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad printer URI."), 1);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad printer-uri."), 1);
 
     if (cb)
       (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_ERROR,
@@ -842,8 +775,7 @@ cupsCopyDest(cups_dest_t *dest,
 
   if (new_dest)
   {
-    if ((new_dest->options = calloc(sizeof(cups_option_t),
-                                    dest->num_options)) == NULL)
+    if ((new_dest->options = calloc(sizeof(cups_option_t), (size_t)dest->num_options)) == NULL)
       return (cupsRemoveDest(dest->name, dest->instance, num_dests, dests));
 
     new_dest->num_options = dest->num_options;
@@ -1359,9 +1291,9 @@ _cupsGetDestResource(
 
   if (httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme),
                       userpass, sizeof(userpass), hostname, sizeof(hostname),
-                      &port, resource, resourcesize) < HTTP_URI_STATUS_OK)
+                      &port, resource, (int)resourcesize) < HTTP_URI_STATUS_OK)
   {
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad printer URI."), 1);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad printer-uri."), 1);
 
     return (NULL);
   }
@@ -1370,6 +1302,100 @@ _cupsGetDestResource(
 }
 
 
+/*
+ * 'cupsGetDestWithURI()' - Get a destination associated with a URI.
+ *
+ * "name" is the desired name for the printer. If @code NULL@, a name will be
+ * created using the URI.
+ *
+ * "uri" is the "ipp" or "ipps" URI for the printer.
+ *
+ * @since CUPS 2.0@
+ */
+
+cups_dest_t *                          /* O - Destination or @code NULL@ */
+cupsGetDestWithURI(const char *name,   /* I - Desired printer name or @code NULL@ */
+                   const char *uri)    /* I - URI for the printer */
+{
+  cups_dest_t  *dest;                  /* New destination */
+  char         temp[1024],             /* Temporary string */
+               scheme[256],            /* Scheme from URI */
+               userpass[256],          /* Username:password from URI */
+               hostname[256],          /* Hostname from URI */
+               resource[1024],         /* Resource path from URI */
+               *ptr;                   /* Pointer into string */
+  int          port;                   /* Port number from URI */
+
+
+ /*
+  * Range check input...
+  */
+
+  if (!uri)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
+    return (NULL);
+  }
+
+  if (httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme), userpass, sizeof(userpass), hostname, sizeof(hostname), &port, resource, sizeof(resource)) < HTTP_URI_STATUS_OK ||
+      (strncmp(uri, "ipp://", 6) && strncmp(uri, "ipps://", 7)))
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad printer-uri."), 1);
+
+    return (NULL);
+  }
+
+  if (!name)
+  {
+   /*
+    * Create the name from the URI...
+    */
+
+    if (strstr(hostname, "._tcp"))
+    {
+     /*
+      * Use the service instance name...
+      */
+
+      if ((ptr = strchr(hostname, '.')) != NULL)
+        *ptr = '\0';
+
+      name = hostname;
+    }
+    else if (!strncmp(resource, "/classes/", 9))
+    {
+      snprintf(temp, sizeof(temp), "%s @ %s", resource + 9, hostname);
+      name = temp;
+    }
+    else if (!strncmp(resource, "/printers/", 10))
+    {
+      snprintf(temp, sizeof(temp), "%s @ %s", resource + 10, hostname);
+      name = temp;
+    }
+    else
+    {
+      name = hostname;
+    }
+  }
+
+ /*
+  * Create the destination...
+  */
+
+  if ((dest = calloc(1, sizeof(cups_dest_t))) == NULL)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
+    return (NULL);
+  }
+
+  dest->name        = _cupsStrAlloc(name);
+  dest->num_options = cupsAddOption("printer-uri-supported", uri, dest->num_options, &(dest->options));
+  dest->num_options = cupsAddOption("printer-info", name, dest->num_options, &(dest->options));
+
+  return (dest);
+}
+
+
 /*
  * '_cupsGetDests()' - Get destinations from a server.
  *
@@ -1486,10 +1512,8 @@ _cupsGetDests(http_t       *http,        /* I  - Connection to server or
   }
   else if (mask)
   {
-    ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_ENUM, "printer-type",
-                  type);
-    ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_ENUM, "printer-type-mask",
-                  mask);
+    ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_ENUM, "printer-type", (int)type);
+    ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_ENUM, "printer-type-mask", (int)mask);
   }
 
  /*
@@ -1734,10 +1758,10 @@ cupsGetDests2(http_t      *http,        /* I - Connection to server or @code CUPS_HTTP_
   if (num_dests > 0)
   {
     num_reals = num_dests;
-    reals     = calloc(num_reals, sizeof(cups_dest_t));
+    reals     = calloc((size_t)num_reals, sizeof(cups_dest_t));
 
     if (reals)
-      memcpy(reals, *dests, num_reals * sizeof(cups_dest_t));
+      memcpy(reals, *dests, (size_t)num_reals * sizeof(cups_dest_t));
     else
       num_reals = 0;
   }
@@ -2008,10 +2032,10 @@ cupsRemoveDest(const char  *name,       /* I  - Destination name */
 
   num_dests --;
 
-  i = dest - *dests;
+  i = (int)(dest - *dests);
 
   if (i < num_dests)
-    memmove(dest, dest + 1, (num_dests - i) * sizeof(cups_dest_t));
+    memmove(dest, dest + 1, (size_t)(num_dests - i) * sizeof(cups_dest_t));
 
   return (num_dests);
 }
@@ -2345,7 +2369,7 @@ _cupsUserDefault(char   *name,            /* I - Name buffer */
 
   if ((locprinter = _cupsAppleCopyDefaultPrinter()) != NULL)
   {
-    CFStringGetCString(locprinter, name, namesize, kCFStringEncodingUTF8);
+    CFStringGetCString(locprinter, name, (CFIndex)namesize, kCFStringEncodingUTF8);
     CFRelease(locprinter);
   }
   else
@@ -2553,7 +2577,7 @@ cups_add_dest(const char  *name,  /* I  - Name of destination */
   if (*num_dests == 0)
     dest = malloc(sizeof(cups_dest_t));
   else
-    dest = realloc(*dests, sizeof(cups_dest_t) * (*num_dests + 1));
+    dest = realloc(*dests, sizeof(cups_dest_t) * (size_t)(*num_dests + 1));
 
   if (!dest)
     return (NULL);
@@ -2580,8 +2604,7 @@ cups_add_dest(const char  *name,  /* I  - Name of destination */
   */
 
   if (insert < *num_dests)
-    memmove(*dests + insert + 1, *dests + insert,
-            (*num_dests - insert) * sizeof(cups_dest_t));
+    memmove(*dests + insert + 1, *dests + insert, (size_t)(*num_dests - insert) * sizeof(cups_dest_t));
 
   (*num_dests) ++;
 
@@ -3186,7 +3209,7 @@ cups_dnssd_query_cb(
       txtnext = txt + txtlen;
 
       for (ptr = key; txt < txtnext && *txt != '='; txt ++)
-       *ptr++ = *txt;
+       *ptr++ = (char)*txt;
       *ptr = '\0';
 
       if (txt < txtnext && *txt == '=')
@@ -3194,7 +3217,7 @@ cups_dnssd_query_cb(
        txt ++;
 
        if (txt < txtnext)
-         memcpy(value, txt, txtnext - txt);
+         memcpy(value, txt, (size_t)(txtnext - txt));
        value[txtnext - txt] = '\0';
 
        DEBUG_printf(("6cups_dnssd_query_cb: %s=%s", key, value));
@@ -3271,7 +3294,7 @@ cups_dnssd_query_cb(
         */
 
        saw_printer_type = 1;
-        type             = strtol(value, NULL, 0);
+        type             = (cups_ptype_t)strtol(value, NULL, 0);
       }
       else if (!saw_printer_type)
       {
@@ -3419,7 +3442,7 @@ cups_dnssd_resolve(
                             _HTTP_RESOLVE_FQDN, cups_dnssd_resolve_cb,
                             &resolve)) == NULL)
   {
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unable to resolve printer URI."), 1);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unable to resolve printer-uri."), 1);
 
     if (cb)
       (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_ERROR,
@@ -3873,22 +3896,21 @@ cups_make_string(
     {
       case IPP_TAG_INTEGER :
       case IPP_TAG_ENUM :
-         snprintf(ptr, end - ptr + 1, "%d", attr->values[i].integer);
+         snprintf(ptr, (size_t)(end - ptr + 1), "%d", attr->values[i].integer);
          break;
 
       case IPP_TAG_BOOLEAN :
          if (attr->values[i].boolean)
-           strlcpy(ptr, "true", end - ptr + 1);
+           strlcpy(ptr, "true", (size_t)(end - ptr + 1));
          else
-           strlcpy(ptr, "false", end - ptr + 1);
+           strlcpy(ptr, "false", (size_t)(end - ptr + 1));
          break;
 
       case IPP_TAG_RANGE :
          if (attr->values[i].range.lower == attr->values[i].range.upper)
-           snprintf(ptr, end - ptr + 1, "%d", attr->values[i].range.lower);
+           snprintf(ptr, (size_t)(end - ptr + 1), "%d", attr->values[i].range.lower);
          else
-           snprintf(ptr, end - ptr + 1, "%d-%d", attr->values[i].range.lower,
-                    attr->values[i].range.upper);
+           snprintf(ptr, (size_t)(end - ptr + 1), "%d-%d", attr->values[i].range.lower, attr->values[i].range.upper);
          break;
 
       default :
@@ -3920,5 +3942,5 @@ cups_make_string(
 
 
 /*
- * End of "$Id: dest.c 11688 2014-03-05 21:11:32Z msweet $".
+ * End of "$Id: dest.c 11959 2014-06-26 18:30:19Z msweet $".
  */
index a9c35bb94423e77a6cfd48089167e4d272100b74..b1ad41050d5467ee9f3c6663db3aced28b364143 100644 (file)
@@ -1,37 +1,20 @@
 /*
- * "$Id: emit.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: emit.c 11594 2014-02-14 20:09:01Z msweet $"
  *
- *   PPD code emission routines for CUPS.
+ * PPD code emission routines for CUPS.
  *
- *   Copyright 2007-2012 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/".
  *
- *   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:
- *
- *   ppdCollect()          - Collect all marked options that reside in the
- *                           specified section.
- *   ppdCollect2()         - Collect all marked options that reside in the
- *                           specified section and minimum order.
- *   ppdEmit()             - Emit code for marked options to a file.
- *   ppdEmitAfterOrder()   - Emit a subset of the code for marked options to a
- *                           file.
- *   ppdEmitFd()           - Emit code for marked options to a file.
- *   ppdEmitJCL()          - Emit code for JCL options to a file.
- *   ppdEmitJCLEnd()       - Emit JCLEnd code to a file.
- *   ppdEmitString()       - Get a string containing the code for marked
- *                           options.
- *   ppd_compare_cparams() - Compare the order of two custom parameters.
- *   ppd_handle_media()    - Handle media selection...
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -121,13 +104,13 @@ ppdCollect2(ppd_file_t    *ppd,           /* I - PPD file data */
 
   count = 0;
   if ((collect = calloc(sizeof(ppd_choice_t *),
-                        cupsArrayCount(ppd->marked))) == NULL)
+                        (size_t)cupsArrayCount(ppd->marked))) == NULL)
   {
     *choices = NULL;
     return (0);
   }
 
-  if ((orders = calloc(sizeof(float), cupsArrayCount(ppd->marked))) == NULL)
+  if ((orders = calloc(sizeof(float), (size_t)cupsArrayCount(ppd->marked))) == NULL)
   {
     *choices = NULL;
     free(collect);
@@ -358,7 +341,7 @@ ppdEmitFd(ppd_file_t    *ppd,               /* I - PPD file record */
        break;
       }
 
-      buflength -= bytes;
+      buflength -= (size_t)bytes;
       bufptr    += bytes;
     }
 
@@ -831,8 +814,7 @@ ppdEmitString(ppd_file_t    *ppd,   /* I - PPD file record */
                      break;
 
                  case PPD_CUSTOM_INT :
-                     snprintf(bufptr, bufend - bufptr, "%d",
-                              cparam->current.custom_int);
+                     snprintf(bufptr, (size_t)(bufend - bufptr), "%d", cparam->current.custom_int);
                      bufptr += strlen(bufptr);
                      break;
 
@@ -841,8 +823,7 @@ ppdEmitString(ppd_file_t    *ppd,   /* I - PPD file record */
                  case PPD_CUSTOM_STRING :
                      if (cparam->current.custom_string)
                      {
-                       strlcpy(bufptr, cparam->current.custom_string,
-                               bufend - bufptr);
+                       strlcpy(bufptr, cparam->current.custom_string, (size_t)(bufend - bufptr));
                        bufptr += strlen(bufptr);
                      }
                      break;
@@ -862,7 +843,7 @@ ppdEmitString(ppd_file_t    *ppd,   /* I - PPD file record */
         * Otherwise just copy the option code directly...
        */
 
-        strlcpy(bufptr, choices[i]->code, bufend - bufptr + 1);
+        strlcpy(bufptr, choices[i]->code, (size_t)(bufend - bufptr + 1));
         bufptr += strlen(bufptr);
       }
     }
@@ -873,7 +854,7 @@ ppdEmitString(ppd_file_t    *ppd,   /* I - PPD file record */
       * options...
       */
 
-      strlcpy(bufptr, "[{\n", bufend - bufptr + 1);
+      strlcpy(bufptr, "[{\n", (size_t)(bufend - bufptr + 1));
       bufptr += 3;
 
      /*
@@ -898,8 +879,7 @@ ppdEmitString(ppd_file_t    *ppd,   /* I - PPD file record */
        float           values[5];      /* Values for custom command */
 
 
-        strlcpy(bufptr, "%%BeginFeature: *CustomPageSize True\n",
-               bufend - bufptr + 1);
+        strlcpy(bufptr, "%%BeginFeature: *CustomPageSize True\n", (size_t)(bufend - bufptr + 1));
         bufptr += 37;
 
         size = ppdPageSize(ppd, "Custom");
@@ -994,7 +974,7 @@ ppdEmitString(ppd_file_t    *ppd,   /* I - PPD file record */
          * Level 2 command sequence...
          */
 
-         strlcpy(bufptr, ppd_custom_code, bufend - bufptr + 1);
+         strlcpy(bufptr, ppd_custom_code, (size_t)(bufend - bufptr + 1));
           bufptr += strlen(bufptr);
        }
       }
@@ -1017,8 +997,7 @@ ppdEmitString(ppd_file_t    *ppd,  /* I - PPD file record */
             cparam = (ppd_cparam_t *)cupsArrayNext(coption->params))
           cupsArrayAdd(params, cparam);
 
-        snprintf(bufptr, bufend - bufptr + 1,
-                "%%%%BeginFeature: *Custom%s True\n", coption->keyword);
+        snprintf(bufptr, (size_t)(bufend - bufptr + 1), "%%%%BeginFeature: *Custom%s True\n", coption->keyword);
         bufptr += strlen(bufptr);
 
         for (cparam = (ppd_cparam_t *)cupsArrayFirst(params);
@@ -1037,8 +1016,7 @@ ppdEmitString(ppd_file_t    *ppd, /* I - PPD file record */
                break;
 
            case PPD_CUSTOM_INT :
-               snprintf(bufptr, bufend - bufptr + 1, "%d\n",
-                        cparam->current.custom_int);
+               snprintf(bufptr, (size_t)(bufend - bufptr + 1), "%d\n", cparam->current.custom_int);
                bufptr += strlen(bufptr);
                break;
 
@@ -1053,7 +1031,7 @@ ppdEmitString(ppd_file_t    *ppd, /* I - PPD file record */
                  {
                    if (*s < ' ' || *s == '(' || *s == ')' || *s >= 127)
                    {
-                     snprintf(bufptr, bufend - bufptr + 1, "\\%03o", *s & 255);
+                     snprintf(bufptr, (size_t)(bufend - bufptr + 1), "\\%03o", *s & 255);
                      bufptr += strlen(bufptr);
                    }
                    else
@@ -1071,15 +1049,14 @@ ppdEmitString(ppd_file_t    *ppd,       /* I - PPD file record */
       }
       else
       {
-        snprintf(bufptr, bufend - bufptr + 1, "%%%%BeginFeature: *%s %s\n",
-                 choices[i]->option->keyword, choices[i]->choice);
+        snprintf(bufptr, (size_t)(bufend - bufptr + 1), "%%%%BeginFeature: *%s %s\n", choices[i]->option->keyword, choices[i]->choice);
        bufptr += strlen(bufptr);
       }
 
       if (choices[i]->code && choices[i]->code[0])
       {
         j = (int)strlen(choices[i]->code);
-       memcpy(bufptr, choices[i]->code, j);
+       memcpy(bufptr, choices[i]->code, (size_t)j);
        bufptr += j;
 
        if (choices[i]->code[j - 1] != '\n')
@@ -1087,7 +1064,7 @@ ppdEmitString(ppd_file_t    *ppd, /* I - PPD file record */
       }
 
       strlcpy(bufptr, "%%EndFeature\n"
-                     "} stopped cleartomark\n", bufend - bufptr + 1);
+                     "} stopped cleartomark\n", (size_t)(bufend - bufptr + 1));
       bufptr += strlen(bufptr);
 
       DEBUG_printf(("2ppdEmitString: Offset in string is %d...",
@@ -1095,7 +1072,7 @@ ppdEmitString(ppd_file_t    *ppd, /* I - PPD file record */
     }
     else
     {
-      strlcpy(bufptr, choices[i]->code, bufend - bufptr + 1);
+      strlcpy(bufptr, choices[i]->code, (size_t)(bufend - bufptr + 1));
       bufptr += strlen(bufptr);
     }
 
@@ -1225,5 +1202,5 @@ ppd_handle_media(ppd_file_t *ppd) /* I - PPD file */
 
 
 /*
- * End of "$Id: emit.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: emit.c 11594 2014-02-14 20:09:01Z msweet $".
  */
index dcee8f65e2460f795b2f80cbe29ddc83d7a534f6..5847f5684aa0ab90a37ff209e4586fafa159c873 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: encode.c 11867 2014-05-09 20:33:08Z msweet $"
+ * "$Id: encode.c 11733 2014-03-25 18:01:41Z msweet $"
  *
  * Option encoding routines for CUPS.
  *
@@ -151,6 +151,8 @@ static const _ipp_option_t ipp_options[] =
   { 0, "job-accounting-user-id", IPP_TAG_NAME,          IPP_TAG_JOB },
   { 0, "job-accounting-user-id-default", IPP_TAG_NAME,  IPP_TAG_PRINTER },
   { 0, "job-authorization-uri",        IPP_TAG_URI,            IPP_TAG_OPERATION },
+  { 0, "job-cancel-after",     IPP_TAG_INTEGER,        IPP_TAG_JOB },
+  { 0, "job-cancel-after-default", IPP_TAG_INTEGER,    IPP_TAG_PRINTER },
   { 0, "job-hold-until",       IPP_TAG_KEYWORD,        IPP_TAG_JOB },
   { 0, "job-id",               IPP_TAG_INTEGER,        IPP_TAG_ZERO }, /* never send as option */
   { 0, "job-impressions",      IPP_TAG_INTEGER,        IPP_TAG_ZERO }, /* never send as option */
@@ -647,7 +649,7 @@ cupsEncodeOptions2(
            * Integer/enumeration value...
            */
 
-            attr->values[j].integer = strtol(val, &s, 10);
+            attr->values[j].integer = (int)strtol(val, &s, 10);
 
             DEBUG_printf(("2cupsEncodeOptions2: Added integer option value "
                          "%d...", attr->values[j].integer));
@@ -689,12 +691,12 @@ cupsEncodeOptions2(
              s = val;
            }
            else
-             attr->values[j].range.lower = strtol(val, &s, 10);
+             attr->values[j].range.lower = (int)strtol(val, &s, 10);
 
            if (*s == '-')
            {
              if (s[1])
-               attr->values[j].range.upper = strtol(s + 1, NULL, 10);
+               attr->values[j].range.upper = (int)strtol(s + 1, NULL, 10);
              else
                attr->values[j].range.upper = 2147483647;
             }
@@ -711,10 +713,10 @@ cupsEncodeOptions2(
            * Resolution...
            */
 
-           attr->values[j].resolution.xres = strtol(val, &s, 10);
+           attr->values[j].resolution.xres = (int)strtol(val, &s, 10);
 
            if (*s == 'x')
-             attr->values[j].resolution.yres = strtol(s + 1, &s, 10);
+             attr->values[j].resolution.yres = (int)strtol(s + 1, &s, 10);
            else
              attr->values[j].resolution.yres = attr->values[j].resolution.xres;
 
@@ -847,5 +849,5 @@ compare_ipp_options(_ipp_option_t *a,       /* I - First option */
 
 
 /*
- * End of "$Id: encode.c 11867 2014-05-09 20:33:08Z msweet $".
+ * End of "$Id: encode.c 11733 2014-03-25 18:01:41Z msweet $".
  */
index bc147ff8fbec299ec38a13e9a5e2c489d02069c9..7a34207fa241f88b0d00f0bb3d75330cd588767c 100644 (file)
@@ -1,23 +1,23 @@
 /*
- * "$Id: file-private.h 11642 2014-02-27 15:57:59Z msweet $"
+ * "$Id: file-private.h 11627 2014-02-20 16:15:09Z msweet $"
  *
- *   Private file definitions for CUPS.
+ * Private file definitions for CUPS.
  *
- *   Since stdio files max out at 256 files on many systems, we have to
- *   write similar functions without this limit.  At the same time, using
- *   our own file functions allows us to provide transparent support of
- *   gzip'd print files, PPD files, etc.
+ * Since stdio files max out at 256 files on many systems, we have to
+ * write similar functions without this limit.  At the same time, using
+ * our own file functions allows us to provide transparent support of
+ * gzip'd print files, PPD files, etc.
  *
- *   Copyright 2007-2011 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.
  */
 
 #ifndef _CUPS_FILE_PRIVATE_H_
@@ -135,5 +135,5 @@ extern void                 _cupsFileCheckFilter(void *context,
 #endif /* !_CUPS_FILE_PRIVATE_H_ */
 
 /*
- * End of "$Id: file-private.h 11642 2014-02-27 15:57:59Z msweet $".
+ * End of "$Id: file-private.h 11627 2014-02-20 16:15:09Z msweet $".
  */
index e0ea5cef767c46935684097a205a22dd1f3734a4..f1b65e677d86ec8d70324538e4e79cdfe2e6f481 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: file.c 11642 2014-02-27 15:57:59Z msweet $"
+ * "$Id: file.c 11627 2014-02-20 16:15:09Z msweet $"
  *
  * File functions for CUPS.
  *
@@ -8,7 +8,7 @@
  * our own file functions allows us to provide transparent support of
  * gzip'd print files, PPD files, etc.
  *
- * Copyright 2007-2013 by Apple Inc.
+ * 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
@@ -288,7 +288,6 @@ _cupsFileCheckFilter(
 
   switch (result)
   {
-    default :
     case _CUPS_FILE_CHECK_OK :
         prefix = "DEBUG2";
        break;
@@ -372,7 +371,7 @@ cupsFileClose(cups_file_t *fp)              /* I - CUPS file */
         if (fp->stream.next_out > fp->cbuf)
        {
          if (cups_write(fp, (char *)fp->cbuf,
-                        fp->stream.next_out - fp->cbuf) < 0)
+                        (size_t)(fp->stream.next_out - fp->cbuf)) < 0)
            status = -1;
 
          fp->stream.next_out  = fp->cbuf;
@@ -390,14 +389,14 @@ cupsFileClose(cups_file_t *fp)            /* I - CUPS file */
       * Write the CRC and length...
       */
 
-      trailer[0] = fp->crc;
-      trailer[1] = fp->crc >> 8;
-      trailer[2] = fp->crc >> 16;
-      trailer[3] = fp->crc >> 24;
-      trailer[4] = fp->pos;
-      trailer[5] = fp->pos >> 8;
-      trailer[6] = fp->pos >> 16;
-      trailer[7] = fp->pos >> 24;
+      trailer[0] = (unsigned char)fp->crc;
+      trailer[1] = (unsigned char)(fp->crc >> 8);
+      trailer[2] = (unsigned char)(fp->crc >> 16);
+      trailer[3] = (unsigned char)(fp->crc >> 24);
+      trailer[4] = (unsigned char)fp->pos;
+      trailer[5] = (unsigned char)(fp->pos >> 8);
+      trailer[6] = (unsigned char)(fp->pos >> 16);
+      trailer[7] = (unsigned char)(fp->pos >> 24);
 
       if (cups_write(fp, (char *)trailer, 8) < 0)
         status = -1;
@@ -430,7 +429,7 @@ cupsFileClose(cups_file_t *fp)              /* I - CUPS file */
 
   if (mode == 's')
   {
-    if (closesocket(fd) < 0)
+    if (httpAddrClose(NULL, fd) < 0)
       status = -1;
   }
   else if (!is_stdio)
@@ -511,7 +510,7 @@ cupsFileFind(const char *filename,  /* I - File to find */
 
     if (!access(filename, 0))
     {
-      strlcpy(buffer, filename, bufsize);
+      strlcpy(buffer, filename, (size_t)bufsize);
       return (buffer);
     }
     else
@@ -536,7 +535,7 @@ cupsFileFind(const char *filename,  /* I - File to find */
       if (bufptr > buffer && bufptr[-1] != '/' && bufptr < bufend)
         *bufptr++ = '/';
 
-      strlcpy(bufptr, filename, bufend - bufptr);
+      strlcpy(bufptr, filename, (size_t)(bufend - bufptr));
 
 #ifdef WIN32
       if (!access(buffer, 0))
@@ -563,7 +562,7 @@ cupsFileFind(const char *filename,  /* I - File to find */
   if (bufptr > buffer && bufptr[-1] != '/' && bufptr < bufend)
     *bufptr++ = '/';
 
-  strlcpy(bufptr, filename, bufend - bufptr);
+  strlcpy(bufptr, filename, (size_t)(bufend - bufptr));
 
   if (!access(buffer, 0))
   {
@@ -611,10 +610,10 @@ cupsFileFlush(cups_file_t *fp)            /* I - CUPS file */
   {
 #ifdef HAVE_LIBZ
     if (fp->compressed)
-      bytes = cups_compress(fp, fp->buf, bytes);
+      bytes = cups_compress(fp, fp->buf, (size_t)bytes);
     else
 #endif /* HAVE_LIBZ */
-      bytes = cups_write(fp, fp->buf, bytes);
+      bytes = cups_write(fp, fp->buf, (size_t)bytes);
 
     if (bytes < 0)
       return (-1);
@@ -885,7 +884,7 @@ cupsFileGetLine(cups_file_t *fp,    /* I - File to read from */
 
   DEBUG_printf(("4cupsFileGetLine: pos=" CUPS_LLFMT, CUPS_LLCAST fp->pos));
 
-  return (ptr - buf);
+  return ((size_t)(ptr - buf));
 }
 
 
@@ -960,7 +959,7 @@ cupsFileGets(cups_file_t *fp,               /* I - CUPS file */
       break;
     }
     else
-      *ptr++ = ch;
+      *ptr++ = (char)ch;
   }
 
   *ptr = '\0';
@@ -1132,7 +1131,7 @@ cupsFileOpen(const char *filename,        /* I - Name of file */
   if ((fp = cupsFileOpenFd(fd, mode)) == NULL)
   {
     if (*mode == 's')
-      closesocket(fd);
+      httpAddrClose(NULL, fd);
     else
       close(fd);
   }
@@ -1215,10 +1214,10 @@ cupsFileOpenFd(int        fd,           /* I - File descriptor */
          header[1] = 0x8b;
          header[2] = Z_DEFLATED;
          header[3] = 0;
-         header[4] = curtime;
-         header[5] = curtime >> 8;
-         header[6] = curtime >> 16;
-         header[7] = curtime >> 24;
+         header[4] = (unsigned char)curtime;
+         header[5] = (unsigned char)(curtime >> 8);
+         header[6] = (unsigned char)(curtime >> 16);
+         header[7] = (unsigned char)(curtime >> 24);
          header[8] = 0;
          header[9] = 0x03;
 
@@ -1343,11 +1342,11 @@ cupsFilePrintf(cups_file_t *fp,         /* I - CUPS file */
     if (bytes > 65535)
       return (-1);
 
-    if ((temp = realloc(fp->printf_buffer, bytes + 1)) == NULL)
+    if ((temp = realloc(fp->printf_buffer, (size_t)(bytes + 1))) == NULL)
       return (-1);
 
     fp->printf_buffer = temp;
-    fp->printf_size   = bytes + 1;
+    fp->printf_size   = (size_t)(bytes + 1);
 
     va_start(ap, format);
     bytes = vsnprintf(fp->printf_buffer, fp->printf_size, format, ap);
@@ -1356,14 +1355,14 @@ cupsFilePrintf(cups_file_t *fp,         /* I - CUPS file */
 
   if (fp->mode == 's')
   {
-    if (cups_write(fp, fp->printf_buffer, bytes) < 0)
+    if (cups_write(fp, fp->printf_buffer, (size_t)bytes) < 0)
       return (-1);
 
     fp->pos += bytes;
 
     DEBUG_printf(("4cupsFilePrintf: pos=" CUPS_LLFMT, CUPS_LLCAST fp->pos));
 
-    return (bytes);
+    return ((int)bytes);
   }
 
   if ((fp->ptr + bytes) > fp->end)
@@ -1374,20 +1373,20 @@ cupsFilePrintf(cups_file_t *fp,         /* I - CUPS file */
 
   DEBUG_printf(("4cupsFilePrintf: pos=" CUPS_LLFMT, CUPS_LLCAST fp->pos));
 
-  if (bytes > sizeof(fp->buf))
+  if ((size_t)bytes > sizeof(fp->buf))
   {
 #ifdef HAVE_LIBZ
     if (fp->compressed)
-      return (cups_compress(fp, fp->printf_buffer, bytes));
+      return ((int)cups_compress(fp, fp->printf_buffer, (size_t)bytes));
     else
 #endif /* HAVE_LIBZ */
-      return (cups_write(fp, fp->printf_buffer, bytes));
+      return ((int)cups_write(fp, fp->printf_buffer, (size_t)bytes));
   }
   else
   {
-    memcpy(fp->ptr, fp->printf_buffer, bytes);
+    memcpy(fp->ptr, fp->printf_buffer, (size_t)bytes);
     fp->ptr += bytes;
-    return (bytes);
+    return ((int)bytes);
   }
 }
 
@@ -1418,7 +1417,7 @@ cupsFilePutChar(cups_file_t *fp,  /* I - CUPS file */
     char ch;                           /* Output character */
 
 
-    ch = c;
+    ch = (char)c;
 
     if (send(fp->fd, &ch, 1, 0) < 1)
       return (-1);
@@ -1433,7 +1432,7 @@ cupsFilePutChar(cups_file_t *fp,  /* I - CUPS file */
       if (cupsFileFlush(fp))
        return (-1);
 
-    *(fp->ptr) ++ = c;
+    *(fp->ptr) ++ = (char)c;
   }
 
   fp->pos ++;
@@ -1480,7 +1479,7 @@ cupsFilePutConf(cups_file_t *fp,  /* I - CUPS file */
       * Need to quote the first # in the info string...
       */
 
-      if ((temp = cupsFileWrite(fp, value, ptr - value)) < 0)
+      if ((temp = cupsFileWrite(fp, value, (size_t)(ptr - value))) < 0)
         return (-1);
       bytes += temp;
 
@@ -1531,18 +1530,18 @@ cupsFilePuts(cups_file_t *fp,           /* I - CUPS file */
   * Write the string...
   */
 
-  bytes = (int)strlen(s);
+  bytes = (ssize_t)strlen(s);
 
   if (fp->mode == 's')
   {
-    if (cups_write(fp, s, bytes) < 0)
+    if (cups_write(fp, s, (size_t)bytes) < 0)
       return (-1);
 
     fp->pos += bytes;
 
     DEBUG_printf(("4cupsFilePuts: pos=" CUPS_LLFMT, CUPS_LLCAST fp->pos));
 
-    return (bytes);
+    return ((int)bytes);
   }
 
   if ((fp->ptr + bytes) > fp->end)
@@ -1553,20 +1552,20 @@ cupsFilePuts(cups_file_t *fp,           /* I - CUPS file */
 
   DEBUG_printf(("4cupsFilePuts: pos=" CUPS_LLFMT, CUPS_LLCAST fp->pos));
 
-  if (bytes > sizeof(fp->buf))
+  if ((size_t)bytes > sizeof(fp->buf))
   {
 #ifdef HAVE_LIBZ
     if (fp->compressed)
-      return (cups_compress(fp, s, bytes));
+      return ((int)cups_compress(fp, s, (size_t)bytes));
     else
 #endif /* HAVE_LIBZ */
-      return (cups_write(fp, s, bytes));
+      return ((int)cups_write(fp, s, (size_t)bytes));
   }
   else
   {
-    memcpy(fp->ptr, s, bytes);
+    memcpy(fp->ptr, s, (size_t)bytes);
     fp->ptr += bytes;
-    return (bytes);
+    return ((int)bytes);
   }
 }
 
@@ -1622,7 +1621,7 @@ cupsFileRead(cups_file_t *fp,             /* I - CUPS file */
     if (count > (ssize_t)bytes)
       count = (ssize_t)bytes;
 
-    memcpy(buf, fp->ptr, count);
+    memcpy(buf, fp->ptr,(size_t) count);
     fp->ptr += count;
     fp->pos += count;
 
@@ -1632,8 +1631,8 @@ cupsFileRead(cups_file_t *fp,             /* I - CUPS file */
     * Update the counts for the last read...
     */
 
-    bytes -= count;
-    total += count;
+    bytes -= (size_t)count;
+    total += (size_t)count;
     buf   += count;
   }
 
@@ -2105,14 +2104,14 @@ cups_compress(cups_file_t *fp,          /* I - CUPS file */
   * Update the CRC...
   */
 
-  fp->crc = crc32(fp->crc, (const Bytef *)buf, bytes);
+  fp->crc = crc32(fp->crc, (const Bytef *)buf, (uInt)bytes);
 
  /*
   * Deflate the bytes...
   */
 
   fp->stream.next_in  = (Bytef *)buf;
-  fp->stream.avail_in = bytes;
+  fp->stream.avail_in = (uInt)bytes;
 
   while (fp->stream.avail_in > 0)
   {
@@ -2123,9 +2122,9 @@ cups_compress(cups_file_t *fp,            /* I - CUPS file */
     DEBUG_printf(("9cups_compress: avail_in=%d, avail_out=%d",
                   fp->stream.avail_in, fp->stream.avail_out));
 
-    if (fp->stream.avail_out < (int)(sizeof(fp->cbuf) / 8))
+    if (fp->stream.avail_out < (uInt)(sizeof(fp->cbuf) / 8))
     {
-      if (cups_write(fp, (char *)fp->cbuf, fp->stream.next_out - fp->cbuf) < 0)
+      if (cups_write(fp, (char *)fp->cbuf, (size_t)(fp->stream.next_out - fp->cbuf)) < 0)
         return (-1);
 
       fp->stream.next_out  = fp->cbuf;
@@ -2135,7 +2134,7 @@ cups_compress(cups_file_t *fp,            /* I - CUPS file */
     deflate(&(fp->stream), Z_NO_FLUSH);
   }
 
-  return (bytes);
+  return ((ssize_t)bytes);
 }
 #endif /* HAVE_LIBZ */
 
@@ -2315,7 +2314,7 @@ cups_fill(cups_file_t *fp)                /* I - CUPS file */
       */
 
       if ((bytes = end - ptr) > 0)
-        memcpy(fp->cbuf, ptr, bytes);
+        memcpy(fp->cbuf, ptr, (size_t)bytes);
 
      /*
       * Setup the decompressor data...
@@ -2326,7 +2325,7 @@ cups_fill(cups_file_t *fp)                /* I - CUPS file */
       fp->stream.opaque    = (voidpf)0;
       fp->stream.next_in   = (Bytef *)fp->cbuf;
       fp->stream.next_out  = NULL;
-      fp->stream.avail_in  = bytes;
+      fp->stream.avail_in  = (uInt)bytes;
       fp->stream.avail_out = 0;
       fp->crc              = crc32(0L, Z_NULL, 0);
 
@@ -2355,7 +2354,7 @@ cups_fill(cups_file_t *fp)                /* I - CUPS file */
           return (-1);
 
        fp->stream.next_in  = fp->cbuf;
-       fp->stream.avail_in = bytes;
+       fp->stream.avail_in = (uInt)bytes;
       }
 
      /*
@@ -2369,7 +2368,7 @@ cups_fill(cups_file_t *fp)                /* I - CUPS file */
 
       if (fp->stream.next_out > (Bytef *)fp->buf)
         fp->crc = crc32(fp->crc, (Bytef *)fp->buf,
-                       fp->stream.next_out - (Bytef *)fp->buf);
+                       (uInt)(fp->stream.next_out - (Bytef *)fp->buf));
 
       if (status == Z_STREAM_END)
       {
@@ -2381,7 +2380,7 @@ cups_fill(cups_file_t *fp)                /* I - CUPS file */
        uLong           tcrc;           /* Trailer CRC */
 
 
-       if (read(fp->fd, trailer, sizeof(trailer)) < sizeof(trailer))
+       if (read(fp->fd, trailer, sizeof(trailer)) < (ssize_t)sizeof(trailer))
        {
         /*
           * Can't get it, so mark end-of-file...
@@ -2417,7 +2416,7 @@ cups_fill(cups_file_t *fp)                /* I - CUPS file */
        }
       }
 
-      bytes = sizeof(fp->buf) - fp->stream.avail_out;
+      bytes = (ssize_t)sizeof(fp->buf) - (ssize_t)fp->stream.avail_out;
 
      /*
       * Return the decompressed data...
@@ -2658,8 +2657,8 @@ cups_write(cups_file_t *fp,               /* I - CUPS file */
     * Update the counts for the last write call...
     */
 
-    bytes -= count;
-    total += count;
+    bytes -= (size_t)count;
+    total += (size_t)count;
     buf   += count;
   }
 
@@ -2672,5 +2671,5 @@ cups_write(cups_file_t *fp,               /* I - CUPS file */
 
 
 /*
- * End of "$Id: file.c 11642 2014-02-27 15:57:59Z msweet $".
+ * End of "$Id: file.c 11627 2014-02-20 16:15:09Z msweet $".
  */
index 887c33a1e1b42bfa6000966bab00fc9a3bc9bffe..43bf294d6cd5f6fa1c5f3e99c3195ea8b281c885 100644 (file)
@@ -1,23 +1,23 @@
 /*
- * "$Id: file.h 11642 2014-02-27 15:57:59Z msweet $"
+ * "$Id: file.h 11627 2014-02-20 16:15:09Z msweet $"
  *
- *   Public file definitions for CUPS.
+ * Public file definitions for CUPS.
  *
- *   Since stdio files max out at 256 files on many systems, we have to
- *   write similar functions without this limit.  At the same time, using
- *   our own file functions allows us to provide transparent support of
- *   gzip'd print files, PPD files, etc.
+ * Since stdio files max out at 256 files on many systems, we have to
+ * write similar functions without this limit.  At the same time, using
+ * our own file functions allows us to provide transparent support of
+ * gzip'd print files, PPD files, etc.
  *
- *   Copyright 2007-2011 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.
  */
 
 #ifndef _CUPS_FILE_H_
@@ -114,5 +114,5 @@ extern ssize_t              cupsFileWrite(cups_file_t *fp, const char *buf,
 #endif /* !_CUPS_FILE_H_ */
 
 /*
- * End of "$Id: file.h 11642 2014-02-27 15:57:59Z msweet $".
+ * End of "$Id: file.h 11627 2014-02-20 16:15:09Z msweet $".
  */
index 33c5e5b8f53784c4de77860e1df19d94d8d38585..73d2142465f62bb442b631f9a79a2d462b02eb8a 100644 (file)
@@ -1,25 +1,18 @@
 /*
- * "$Id: getputfile.c 11153 2013-07-17 14:10:21Z msweet $"
+ * "$Id: getputfile.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Get/put file functions for CUPS.
+ * Get/put file functions for CUPS.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   cupsGetFd()   - Get a file from the server.
- *   cupsGetFile() - Get a file from the server.
- *   cupsPutFd()   - Put a file on the server.
- *   cupsPutFile() - Put a file on the server.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -49,7 +42,7 @@ cupsGetFd(http_t     *http,           /* I - Connection to server or @code CUPS_HTTP_DEFA
          const char *resource,         /* I - Resource name */
          int        fd)                /* I - File descriptor */
 {
-  int          bytes;                  /* Number of bytes read */
+  ssize_t      bytes;                  /* Number of bytes read */
   char         buffer[8192];           /* Buffer for file */
   http_status_t        status;                 /* HTTP status from server */
   char         if_modified_since[HTTP_MAX_VALUE];
@@ -174,7 +167,7 @@ cupsGetFd(http_t     *http,         /* I - Connection to server or @code CUPS_HTTP_DEFA
     */
 
     while ((bytes = httpRead2(http, buffer, sizeof(buffer))) > 0)
-      write(fd, buffer, bytes);
+      write(fd, buffer, (size_t)bytes);
   }
   else
   {
@@ -273,8 +266,8 @@ cupsPutFd(http_t     *http,         /* I - Connection to server or @code CUPS_HTTP_DEFA
           const char *resource,                /* I - Resource name */
          int        fd)                /* I - File descriptor */
 {
-  int          bytes,                  /* Number of bytes read */
-               retries;                /* Number of retries */
+  ssize_t      bytes;                  /* Number of bytes read */
+  int          retries;                /* Number of retries */
   char         buffer[8192];           /* Buffer for file */
   http_status_t        status;                 /* HTTP status from server */
 
@@ -362,7 +355,7 @@ cupsPutFd(http_t     *http,         /* I - Connection to server or @code CUPS_HTTP_DEFA
             break;
        }
        else
-          httpWrite2(http, buffer, bytes);
+          httpWrite2(http, buffer, (size_t)bytes);
     }
 
     if (status == HTTP_STATUS_CONTINUE)
@@ -518,5 +511,5 @@ cupsPutFile(http_t     *http,               /* I - Connection to server or @code CUPS_HTTP_DE
 
 
 /*
- * End of "$Id: getputfile.c 11153 2013-07-17 14:10:21Z msweet $".
+ * End of "$Id: getputfile.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 9eb9c5a28172d4a86dd5c0a73f1e5aa84c1a0cde..40727381d0b8d4f404f4c68d674bd4056af0b013 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: globals.c 11113 2013-07-10 14:08:39Z msweet $"
+ * "$Id: globals.c 11851 2014-05-07 23:55:35Z msweet $"
  *
  *   Global variable access routines for CUPS.
  *
@@ -218,7 +218,7 @@ cups_globals_alloc(void)
   cg->password_cb    = (cups_password_cb2_t)_cupsGetPassword;
   cg->any_root       = 1;
   cg->expired_certs  = 1;
-  cg->expired_root   = 1;
+  cg->validate_certs = 0;
 
 #ifdef DEBUG
  /*
@@ -392,5 +392,5 @@ cups_globals_init(void)
 
 
 /*
- * End of "$Id: globals.c 11113 2013-07-10 14:08:39Z msweet $".
+ * End of "$Id: globals.c 11851 2014-05-07 23:55:35Z msweet $".
  */
index e8daaf3e788b7fa64b82d43517c5ba5005133541..51bf039a58aa149e2a80e18932c3012c8894f097 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: http-addr.c 11642 2014-02-27 15:57:59Z msweet $"
+ * "$Id: http-addr.c 11627 2014-02-20 16:15:09Z msweet $"
  *
  * HTTP address routines for CUPS.
  *
- * Copyright 2007-2013 by Apple Inc.
+ * 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
@@ -20,6 +20,7 @@
  */
 
 #include "cups-private.h"
+#include <sys/stat.h>
 #ifdef HAVE_RESOLV_H
 #  include <resolv.h>
 #endif /* HAVE_RESOLV_H */
@@ -55,6 +56,37 @@ httpAddrAny(const http_addr_t *addr) /* I - Address to check */
 }
 
 
+/*
+ * 'httpAddrClose()' - Close a socket created by @link httpAddrConnect@ or
+ *                     @link httpAddrListen@.
+ *
+ * Pass @code NULL@ for sockets created with @link httpAddrConnect@ and the
+ * listen address for sockets created with @link httpAddrListen@. This will
+ * ensure that domain sockets are removed when closed.
+ *
+ * @since CUPS 2.0@
+ */
+
+int                                            /* O - 0 on success, -1 on failure */
+httpAddrClose(http_addr_t *addr,               /* I - Listen address or @code NULL@ */
+              int         fd)                  /* I - Socket file descriptor */
+{
+#ifdef WIN32
+  if (closesocket(fd))
+#else
+  if (close(fd))
+#endif /* WIN32 */
+    return (-1);
+
+#ifdef AF_LOCAL
+  if (addr && addr->addr.sa_family == AF_LOCAL)
+    return (unlink(addr->un.sun_path));
+#endif /* AF_LOCAL */
+
+  return (0);
+}
+
+
 /*
  * 'httpAddrEqual()' - Compare two addresses.
  *
@@ -107,8 +139,7 @@ httpAddrLength(const http_addr_t *addr)     /* I - Address */
 #endif /* AF_INET6 */
 #ifdef AF_LOCAL
   if (addr->addr.sa_family == AF_LOCAL)
-    return (offsetof(struct sockaddr_un, sun_path) +
-            strlen(addr->un.sun_path) + 1);
+    return ((int)(offsetof(struct sockaddr_un, sun_path) + strlen(addr->un.sun_path) + 1));
   else
 #endif /* AF_LOCAL */
   if (addr->addr.sa_family == AF_INET)
@@ -131,16 +162,21 @@ httpAddrListen(http_addr_t *addr, /* I - Address to bind to */
                int         port)       /* I - Port number to bind to */
 {
   int          fd = -1,                /* Socket */
-               val;                    /* Socket value */
+               val,                    /* Socket value */
+                status;                        /* Bind status */
 
 
  /*
   * Range check input...
   */
 
-  if (!addr || port <= 0)
+  if (!addr || port < 0)
     return (-1);
 
+ /*
+  * Create the socket and set options...
+  */
+
   if ((fd = socket(addr->addr.sa_family, SOCK_STREAM, 0)) < 0)
   {
     _cupsSetHTTPError(HTTP_STATUS_ERROR);
@@ -155,9 +191,50 @@ httpAddrListen(http_addr_t *addr,  /* I - Address to bind to */
     setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, CUPS_SOCAST &val, sizeof(val));
 #endif /* IPV6_V6ONLY */
 
-  _httpAddrSetPort(addr, port);
+ /*
+  * Bind the socket...
+  */
 
-  if (bind(fd, (struct sockaddr *)addr, httpAddrLength(addr)))
+#ifdef AF_LOCAL
+  if (addr->addr.sa_family == AF_LOCAL)
+  {
+    mode_t     mask;                   /* Umask setting */
+
+   /*
+    * Remove any existing domain socket file...
+    */
+
+    unlink(addr->un.sun_path);
+
+   /*
+    * Save the current umask and set it to 0 so that all users can access
+    * the domain socket...
+    */
+
+    mask = umask(0);
+
+   /*
+    * Bind the domain socket...
+    */
+
+    status = bind(fd, (struct sockaddr *)addr, (socklen_t)httpAddrLength(addr));
+
+   /*
+    * Restore the umask and fix permissions...
+    */
+
+    umask(mask);
+    chmod(addr->un.sun_path, 0140777);
+  }
+  else
+#endif /* AF_LOCAL */
+  {
+    _httpAddrSetPort(addr, port);
+
+    status = bind(fd, (struct sockaddr *)addr, (socklen_t)httpAddrLength(addr));
+  }
+
+  if (status)
   {
     _cupsSetHTTPError(HTTP_STATUS_ERROR);
 
@@ -166,6 +243,10 @@ httpAddrListen(http_addr_t *addr,  /* I - Address to bind to */
     return (-1);
   }
 
+ /*
+  * Listen...
+  */
+
   if (listen(fd, 5))
   {
     _cupsSetHTTPError(HTTP_STATUS_ERROR);
@@ -175,6 +256,14 @@ httpAddrListen(http_addr_t *addr,  /* I - Address to bind to */
     return (-1);
   }
 
+ /*
+  * Close on exec...
+  */
+
+#ifndef WIN32
+  fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC);
+#endif /* !WIN32 */
+
 #ifdef SO_NOSIGPIPE
  /*
   * Disable SIGPIPE for this socket.
@@ -254,7 +343,7 @@ httpAddrLookup(
 #ifdef AF_LOCAL
   if (addr->addr.sa_family == AF_LOCAL)
   {
-    strlcpy(name, addr->un.sun_path, namelen);
+    strlcpy(name, addr->un.sun_path, (size_t)namelen);
     return (name);
   }
 #endif /* AF_LOCAL */
@@ -265,7 +354,7 @@ httpAddrLookup(
 
   if (httpAddrLocalhost(addr))
   {
-    strlcpy(name, "localhost", namelen);
+    strlcpy(name, "localhost", (size_t)namelen);
     return (name);
   }
 
@@ -300,8 +389,7 @@ httpAddrLookup(
     * do...
     */
 
-    int error = getnameinfo(&addr->addr, httpAddrLength(addr), name, namelen,
-                           NULL, 0, 0);
+    int error = getnameinfo(&addr->addr, (socklen_t)httpAddrLength(addr), name, (socklen_t)namelen, NULL, 0, 0);
 
     if (error)
     {
@@ -337,7 +425,7 @@ httpAddrLookup(
       return (httpAddrString(addr, name, namelen));
     }
 
-    strlcpy(name, host->h_name, namelen);
+    strlcpy(name, host->h_name, (size_t)namelen);
   }
 #endif /* HAVE_GETNAMEINFO */
 
@@ -347,6 +435,20 @@ httpAddrLookup(
 }
 
 
+/*
+ * 'httpAddrFamily()' - Get the address family of an address.
+ */
+
+int                                    /* O - Address family */
+httpAddrFamily(http_addr_t *addr)      /* I - Address */
+{
+  if (addr)
+    return (addr->addr.sa_family);
+  else
+    return (0);
+}
+
+
 /*
  * 'httpAddrPort()' - Get the port number associated with an address.
  *
@@ -357,7 +459,7 @@ int                                 /* O - Port number */
 httpAddrPort(http_addr_t *addr)                /* I - Address */
 {
   if (!addr)
-    return (ippPort());
+    return (-1);
 #ifdef AF_INET6
   else if (addr->addr.sa_family == AF_INET6)
     return (ntohs(addr->ipv6.sin6_port));
@@ -365,12 +467,9 @@ httpAddrPort(http_addr_t *addr)            /* I - Address */
   else if (addr->addr.sa_family == AF_INET)
     return (ntohs(addr->ipv4.sin_port));
   else
-    return (ippPort());
+    return (0);
 }
 
-/* For OS X 10.8 and earlier */
-int _httpAddrPort(http_addr_t *addr) { return (httpAddrPort(addr)); }
-
 
 /*
  * '_httpAddrSetPort()' - Set the port number associated with an address.
@@ -422,9 +521,9 @@ httpAddrString(const http_addr_t *addr,     /* I - Address to convert */
   if (addr->addr.sa_family == AF_LOCAL)
   {
     if (addr->un.sun_path[0] == '/')
-      strlcpy(s, addr->un.sun_path, slen);
+      strlcpy(s, addr->un.sun_path, (size_t)slen);
     else
-      strlcpy(s, "localhost", slen);
+      strlcpy(s, "localhost", (size_t)slen);
   }
   else
 #endif /* AF_LOCAL */
@@ -432,10 +531,9 @@ httpAddrString(const http_addr_t *addr,    /* I - Address to convert */
   {
     unsigned temp;                     /* Temporary address */
 
-
     temp = ntohl(addr->ipv4.sin_addr.s_addr);
 
-    snprintf(s, slen, "%d.%d.%d.%d", (temp >> 24) & 255,
+    snprintf(s, (size_t)slen, "%d.%d.%d.%d", (temp >> 24) & 255,
              (temp >> 16) & 255, (temp >> 8) & 255, temp & 255);
   }
 #ifdef AF_INET6
@@ -445,8 +543,7 @@ httpAddrString(const http_addr_t *addr,     /* I - Address to convert */
                temps[64];              /* Temporary string for address */
 
 #  ifdef HAVE_GETNAMEINFO
-    if (getnameinfo(&addr->addr, httpAddrLength(addr), temps, sizeof(temps),
-                    NULL, 0, NI_NUMERICHOST))
+    if (getnameinfo(&addr->addr, (socklen_t)httpAddrLength(addr), temps, sizeof(temps), NULL, 0, NI_NUMERICHOST))
     {
      /*
       * If we get an error back, then the address type is not supported
@@ -477,8 +574,7 @@ httpAddrString(const http_addr_t *addr,     /* I - Address to convert */
     {
       temp = ntohl(addr->ipv6.sin6_addr.s6_addr32[i]);
 
-      snprintf(sptr, sizeof(temps) - (sptr - temps), "%s%x", prefix,
-               (temp >> 16) & 0xffff);
+      snprintf(sptr, sizeof(temps) - (size_t)(sptr - temps), "%s%x", prefix, (temp >> 16) & 0xffff);
       prefix = ":";
       sptr += strlen(sptr);
 
@@ -486,7 +582,7 @@ httpAddrString(const http_addr_t *addr,     /* I - Address to convert */
 
       if (temp || i == 3 || addr->ipv6.sin6_addr.s6_addr32[i + 1])
       {
-        snprintf(sptr, sizeof(temps) - (sptr - temps), "%s%x", prefix, temp);
+        snprintf(sptr, sizeof(temps) - (size_t)(sptr - temps), "%s%x", prefix, temp);
        sptr += strlen(sptr);
       }
     }
@@ -498,7 +594,7 @@ httpAddrString(const http_addr_t *addr,     /* I - Address to convert */
 
       if (i < 4)
       {
-        snprintf(sptr, sizeof(temps) - (sptr - temps), "%s:", prefix);
+        snprintf(sptr, sizeof(temps) - (size_t)(sptr - temps), "%s:", prefix);
        prefix = ":";
        sptr += strlen(sptr);
 
@@ -509,13 +605,11 @@ httpAddrString(const http_addr_t *addr,   /* I - Address to convert */
           if ((temp & 0xffff0000) ||
              (i > 0 && addr->ipv6.sin6_addr.s6_addr32[i - 1]))
          {
-            snprintf(sptr, sizeof(temps) - (sptr - temps), "%s%x", prefix,
-                    (temp >> 16) & 0xffff);
+            snprintf(sptr, sizeof(temps) - (size_t)(sptr - temps), "%s%x", prefix, (temp >> 16) & 0xffff);
            sptr += strlen(sptr);
           }
 
-          snprintf(sptr, sizeof(temps) - (sptr - temps), "%s%x", prefix,
-                  temp & 0xffff);
+          snprintf(sptr, sizeof(temps) - (size_t)(sptr - temps), "%s%x", prefix, temp & 0xffff);
          sptr += strlen(sptr);
        }
       }
@@ -533,7 +627,7 @@ httpAddrString(const http_addr_t *addr,     /* I - Address to convert */
        * Empty at end...
        */
 
-        strlcpy(sptr, "::", sizeof(temps) - (sptr - temps));
+        strlcpy(sptr, "::", sizeof(temps) - (size_t)(sptr - temps));
       }
     }
 #  endif /* HAVE_GETNAMEINFO */
@@ -542,11 +636,11 @@ httpAddrString(const http_addr_t *addr,   /* I - Address to convert */
     * Add "[v1." and "]" around IPv6 address to convert to URI form.
     */
 
-    snprintf(s, slen, "[v1.%s]", temps);
+    snprintf(s, (size_t)slen, "[v1.%s]", temps);
   }
 #endif /* AF_INET6 */
   else
-    strlcpy(s, "UNKNOWN", slen);
+    strlcpy(s, "UNKNOWN", (size_t)slen);
 
   DEBUG_printf(("1httpAddrString: returning \"%s\"...", s));
 
@@ -554,6 +648,24 @@ httpAddrString(const http_addr_t *addr,    /* I - Address to convert */
 }
 
 
+/*
+ * 'httpGetAddress()' - Get the address of the connected peer of a connection.
+ *
+ * Returns @code NULL@ if the socket is currently unconnected.
+ *
+ * @since CUPS 2.0@
+ */
+
+http_addr_t *                          /* O - Connected address or @code NULL@ */
+httpGetAddress(http_t *http)           /* I - HTTP connection */
+{
+  if (http)
+    return (http->hostaddr);
+  else
+    return (NULL);
+}
+
+
 /*
  * 'httpGetHostByName()' - Lookup a hostname or IPv4 address, and return
  *                         address records for the specified name.
@@ -603,7 +715,7 @@ httpGetHostByName(const char *name) /* I - Hostname or IP address */
     cg->hostent.h_name      = (char *)name;
     cg->hostent.h_aliases   = NULL;
     cg->hostent.h_addrtype  = AF_LOCAL;
-    cg->hostent.h_length    = strlen(name) + 1;
+    cg->hostent.h_length    = (int)strlen(name) + 1;
     cg->hostent.h_addr_list = cg->ip_ptrs;
     cg->ip_ptrs[0]          = (char *)name;
     cg->ip_ptrs[1]          = NULL;
@@ -667,7 +779,8 @@ httpGetHostByName(const char *name) /* I - Hostname or IP address */
  * 'httpGetHostname()' - Get the FQDN for the connection or local system.
  *
  * When "http" points to a connected socket, return the hostname or
- * address that was used in the call to httpConnect() or httpConnectEncrypt().
+ * address that was used in the call to httpConnect() or httpConnectEncrypt(),
+ * or the address of the client for the connection from httpAcceptConnection().
  * Otherwise, return the FQDN for the local system using both gethostname()
  * and gethostbyname() to get the local hostname with domain.
  *
@@ -679,15 +792,19 @@ httpGetHostname(http_t *http,             /* I - HTTP connection or NULL */
                 char   *s,             /* I - String buffer for name */
                 int    slen)           /* I - Size of buffer */
 {
-  if (!s || slen <= 1)
-    return (NULL);
-
   if (http)
   {
-    if (http->hostname[0] == '/')
-      strlcpy(s, "localhost", slen);
+    if (!s || slen <= 1)
+    {
+      if (http->hostname[0] == '/')
+       return ("localhost");
+      else
+       return (http->hostname);
+    }
+    else if (http->hostname[0] == '/')
+      strlcpy(s, "localhost", (size_t)slen);
     else
-      strlcpy(s, http->hostname, slen);
+      strlcpy(s, http->hostname, (size_t)slen);
   }
   else
   {
@@ -695,8 +812,11 @@ httpGetHostname(http_t *http,              /* I - HTTP connection or NULL */
     * Get the hostname...
     */
 
-    if (gethostname(s, slen) < 0)
-      strlcpy(s, "localhost", slen);
+    if (!s || slen <= 1)
+      return (NULL);
+
+    if (gethostname(s, (size_t)slen) < 0)
+      strlcpy(s, "localhost", (size_t)slen);
 
     if (!strchr(s, '.'))
     {
@@ -720,7 +840,7 @@ httpGetHostname(http_t *http,               /* I - HTTP connection or NULL */
         * Append ".local." to the hostname we get...
        */
 
-        snprintf(s, slen, "%s.local.", localStr);
+        snprintf(s, (size_t)slen, "%s.local.", localStr);
       }
 
       if (local)
@@ -741,7 +861,7 @@ httpGetHostname(http_t *http,               /* I - HTTP connection or NULL */
         * Use the resolved hostname...
        */
 
-       strlcpy(s, host->h_name, slen);
+       strlcpy(s, host->h_name, (size_t)slen);
       }
 #endif /* HAVE_SCDYNAMICSTORECOPYCOMPUTERNAME */
     }
@@ -756,5 +876,46 @@ httpGetHostname(http_t *http,              /* I - HTTP connection or NULL */
 
 
 /*
- * End of "$Id: http-addr.c 11642 2014-02-27 15:57:59Z msweet $".
+ * 'httpResolveHostname()' - Resolve the hostname of the HTTP connection
+ *                           address.
+ *
+ * @since CUPS 2.0@
+ */
+
+const char *                           /* O - Resolved hostname or @code NULL@ */
+httpResolveHostname(http_t *http,      /* I - HTTP connection */
+                    char   *buffer,    /* I - Hostname buffer */
+                    size_t bufsize)    /* I - Size of buffer */
+{
+  if (!http)
+    return (NULL);
+
+  if (isdigit(http->hostname[0] & 255) || http->hostname[0] == '[')
+  {
+    char       temp[1024];             /* Temporary string */
+
+    if (httpAddrLookup(http->hostaddr, temp, sizeof(temp)))
+      strlcpy(http->hostname, temp, sizeof(http->hostname));
+    else
+      return (NULL);
+  }
+
+  if (buffer)
+  {
+    if (http->hostname[0] == '/')
+      strlcpy(buffer, "localhost", bufsize);
+    else
+      strlcpy(buffer, http->hostname, bufsize);
+
+    return (buffer);
+  }
+  else if (http->hostname[0] == '/')
+    return ("localhost");
+  else
+    return (http->hostname);
+}
+
+
+/*
+ * End of "$Id: http-addr.c 11627 2014-02-20 16:15:09Z msweet $".
  */
index bb1ff949f70cec496c5a84b3a763cc2534d80697..b83214810831297b769dc0c3b592ac3225eb7376 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: http-addrlist.c 11642 2014-02-27 15:57:59Z msweet $"
+ * "$Id: http-addrlist.c 11627 2014-02-20 16:15:09Z msweet $"
  *
  * HTTP address list routines for CUPS.
  *
- * Copyright 2007-2013 by Apple Inc.
+ * 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
@@ -115,7 +115,7 @@ httpAddrConnect2(
                  httpAddrString(&(addrlist->addr), temp, sizeof(temp)),
                  httpAddrPort(&(addrlist->addr))));
 
-    if ((*sock = (int)socket(_httpAddrFamily(&(addrlist->addr)), SOCK_STREAM,
+    if ((*sock = (int)socket(httpAddrFamily(&(addrlist->addr)), SOCK_STREAM,
                              0)) < 0)
     {
      /*
@@ -180,8 +180,7 @@ httpAddrConnect2(
     * Then connect...
     */
 
-    if (!connect(*sock, &(addrlist->addr.addr),
-                 httpAddrLength(&(addrlist->addr))))
+    if (!connect(*sock, &(addrlist->addr.addr), (socklen_t)httpAddrLength(&(addrlist->addr))))
     {
       DEBUG_printf(("1httpAddrConnect2: Connected to %s:%d...",
                    httpAddrString(&(addrlist->addr), temp, sizeof(temp)),
@@ -218,11 +217,7 @@ httpAddrConnect2(
 
             DEBUG_puts("1httpAddrConnect2: Canceled connect()");
 
-#    ifdef WIN32
-           closesocket(*sock);
-#    else
-           close(*sock);
-#    endif /* WIN32 */
+            httpAddrClose(NULL, *sock);
 
            *sock = -1;
 
@@ -290,11 +285,7 @@ httpAddrConnect2(
     * Close this socket and move to the next address...
     */
 
-#ifdef WIN32
-    closesocket(*sock);
-#else
-    close(*sock);
-#endif /* WIN32 */
+    httpAddrClose(NULL, *sock);
 
     *sock    = -1;
     addrlist = addrlist->next;
@@ -877,5 +868,5 @@ httpAddrGetList(const char *hostname,       /* I - Hostname, IP address, or NULL for p
 
 
 /*
- * End of "$Id: http-addrlist.c 11642 2014-02-27 15:57:59Z msweet $".
+ * End of "$Id: http-addrlist.c 11627 2014-02-20 16:15:09Z msweet $".
  */
index 99a85c39ea232715b0837487c1ee0d56a86f7cb9..23aee761f21e204c3078f2473a1dc91056462c55 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: http-private.h 11392 2013-11-06 01:29:56Z msweet $"
+ * "$Id: http-private.h 12044 2014-07-17 21:21:21Z msweet $"
  *
  * Private HTTP definitions for CUPS.
  *
- * Copyright 2007-2013 by Apple Inc.
+ * 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
@@ -23,6 +23,7 @@
  */
 
 #  include "config.h"
+#  include <cups/language.h>
 #  include <stddef.h>
 #  include <stdlib.h>
 
@@ -39,7 +40,6 @@
 #    include <unistd.h>
 #    include <fcntl.h>
 #    include <sys/socket.h>
-#    define closesocket(f) close(f)
 #    define CUPS_SOCAST
 #  endif /* WIN32 */
 
@@ -73,11 +73,7 @@ typedef int socklen_t;
 #  include "md5-private.h"
 #  include "ipp-private.h"
 
-#  if defined HAVE_LIBSSL
-#    include <openssl/err.h>
-#    include <openssl/rand.h>
-#    include <openssl/ssl.h>
-#  elif defined HAVE_GNUTLS
+#  ifdef HAVE_GNUTLS
 #    include <gnutls/gnutls.h>
 #    include <gnutls/x509.h>
 #    include <gcrypt.h>
@@ -98,6 +94,19 @@ typedef int socklen_t;
 #      include <Security/SecCertificate.h>
 #      include <Security/SecIdentity.h>
 #    endif /* HAVE_SECCERTIFICATE_H */
+#    ifdef HAVE_SECCERTIFICATEPRIV_H
+#      include <Security/SecCertificatePriv.h>
+#    else
+#      ifdef __cplusplus
+extern "C" {
+#      endif /* __cplusplus */
+extern SecCertificateRef SecCertificateCreateWithBytes(CFAllocatorRef allocator, const UInt8 *bytes, CFIndex length);
+extern bool SecCertificateIsValid(SecCertificateRef certificate, CFAbsoluteTime verifyTime);
+extern CFAbsoluteTime SecCertificateNotValidAfter(SecCertificateRef certificate);
+#      ifdef __cplusplus
+}
+#      endif /* __cplusplus */
+#    endif /* HAVE_SECCERTIFICATEPRIV_H */
 #    ifdef HAVE_SECITEMPRIV_H
 #      include <Security/SecItemPriv.h>
 #    endif /* HAVE_SECITEMPRIV_H */
@@ -108,8 +117,13 @@ typedef int socklen_t;
 #      include <Security/SecPolicyPriv.h>
 #    endif /* HAVE_SECPOLICYPRIV_H */
 #  elif defined(HAVE_SSPISSL)
-#    include "sspi-private.h"
-#  endif /* HAVE_LIBSSL */
+#    include <wincrypt.h>
+#    include <wintrust.h>
+#    include <schannel.h>
+#    define SECURITY_WIN32
+#    include <security.h>
+#    include <sspi.h>
+#  endif /* HAVE_GNUTLS */
 
 #  ifndef WIN32
 #    include <net/if.h>
@@ -142,6 +156,7 @@ extern "C" {
  */
 
 
+#define _HTTP_MAX_SBUFFER      65536   /* Size of (de)compression buffer */
 #define _HTTP_RESOLVE_DEFAULT  0       /* Just resolve with default options */
 #define _HTTP_RESOLVE_STDERR   1       /* Log resolve progress to stderr */
 #define _HTTP_RESOLVE_FQDN     2       /* Resolve to a FQDN */
@@ -152,30 +167,13 @@ extern "C" {
  * Types and functions for SSL support...
  */
 
-#  if defined HAVE_LIBSSL
-/*
- * The OpenSSL library provides its own SSL/TLS context structure for its
- * IO and protocol management.  However, we need to provide our own BIO
- * (basic IO) implementation to do timeouts...
- */
-
-typedef SSL  *http_tls_t;
-typedef void *http_tls_credentials_t;
-
-extern BIO_METHOD *_httpBIOMethods(void);
-
-#  elif defined HAVE_GNUTLS
+#  ifdef HAVE_GNUTLS
 /*
  * The GNU TLS library is more of a "bare metal" SSL/TLS library...
  */
 
 typedef gnutls_session_t http_tls_t;
-typedef void *http_tls_credentials_t;
-
-extern ssize_t _httpReadGNUTLS(gnutls_transport_ptr_t ptr, void *data,
-                               size_t length);
-extern ssize_t _httpWriteGNUTLS(gnutls_transport_ptr_t ptr, const void *data,
-                                size_t length);
+typedef gnutls_certificate_credentials_t *http_tls_credentials_t;
 
 #  elif defined(HAVE_CDSASSL)
 /*
@@ -205,18 +203,31 @@ extern OSStatus SecPolicySetValue(SecPolicyRef policyRef,
 typedef SSLContextRef  http_tls_t;
 typedef CFArrayRef     http_tls_credentials_t;
 
-extern OSStatus        _httpReadCDSA(SSLConnectionRef connection, void *data,
-                             size_t *dataLength);
-extern OSStatus        _httpWriteCDSA(SSLConnectionRef connection, const void *data,
-                              size_t *dataLength);
-
 #  elif defined(HAVE_SSPISSL)
 /*
  * Windows' SSPI library gets a CUPS wrapper...
  */
 
-typedef _sspi_struct_t * http_tls_t;
-typedef void *http_tls_credentials_t;
+typedef struct _http_sspi_s            /**** SSPI/SSL data structure ****/
+{
+  CredHandle   creds;                  /* Credentials */
+  CtxtHandle   context;                /* SSL context */
+  BOOL         contextInitialized;     /* Is context init'd? */
+  SecPkgContext_StreamSizes streamSizes;/* SSL data stream sizes */
+  BYTE         *decryptBuffer;         /* Data pre-decryption*/
+  size_t       decryptBufferLength;    /* Length of decrypt buffer */
+  size_t       decryptBufferUsed;      /* Bytes used in buffer */
+  BYTE         *readBuffer;            /* Data post-decryption */
+  int          readBufferLength;       /* Length of read buffer */
+  int          readBufferUsed;         /* Bytes used in buffer */
+  BYTE         *writeBuffer;           /* Data pre-encryption */
+  int          writeBufferLength;      /* Length of write buffer */
+  PCCERT_CONTEXT localCert,            /* Local certificate */
+               remoteCert;             /* Remote (peer's) certificate */
+  char         error[256];             /* Most recent error message */
+} _http_sspi_t;
+typedef _http_sspi_t *http_tls_t;
+typedef PCCERT_CONTEXT http_tls_credentials_t;
 
 #  else
 /*
@@ -225,7 +236,7 @@ typedef void *http_tls_credentials_t;
 
 typedef void *http_tls_t;
 typedef void *http_tls_credentials_t;
-#  endif /* HAVE_LIBSSL */
+#  endif /* HAVE_GNUTLS */
 
 typedef enum _http_coding_e            /**** HTTP content coding enumeration ****/
 {
@@ -242,6 +253,7 @@ typedef enum _http_mode_e           /**** HTTP mode enumeration ****/
   _HTTP_MODE_SERVER                    /* Server connected (accepted) from client */
 } _http_mode_t;
 
+#  ifndef _HTTP_NO_PRIVATE
 struct _http_s                         /**** HTTP connection structure ****/
 {
   int                  fd;             /* File descriptor for this socket */
@@ -263,7 +275,7 @@ struct _http_s                              /**** HTTP connection structure ****/
   int                  used;           /* Number of bytes used in buffer */
   char                 buffer[HTTP_MAX_BUFFER];
                                        /* Buffer for incoming data */
-  int                  auth_type;      /* Authentication in use */
+  int                  _auth_type;     /* Authentication in use (deprecated) */
   _cups_md5_state_t    md5_state;      /* MD5 state */
   char                 nonce[HTTP_MAX_VALUE];
                                        /* Nonce value */
@@ -329,9 +341,10 @@ struct _http_s                             /**** HTTP connection structure ****/
 #  ifdef HAVE_LIBZ
   _http_coding_t       coding;         /* _HTTP_CODING_xxx */
   z_stream             stream;         /* (De)compression stream */
-  Bytef                        *dbuffer;       /* Decompression buffer */
+  Bytef                        *sbuffer;       /* (De)compression buffer */
 #  endif /* HAVE_LIBZ */
 };
+#  endif /* !_HTTP_NO_PRIVATE */
 
 
 /*
@@ -341,11 +354,6 @@ struct _http_s                             /**** HTTP connection structure ****/
 #  ifndef HAVE_HSTRERROR
 extern const char *_cups_hstrerror(int error);
 #    define hstrerror _cups_hstrerror
-#  elif defined(_AIX) || defined(__osf__)
-/*
- * AIX and Tru64 UNIX don't provide a prototype but do provide the function...
- */
-extern const char *hstrerror(int error);
 #  endif /* !HAVE_HSTRERROR */
 
 
@@ -395,19 +403,7 @@ extern void        _cups_freeifaddrs(struct ifaddrs *addrs);
  * Prototypes...
  */
 
-#define                        _httpAddrFamily(addrp) (addrp)->addr.sa_family
-extern int             _httpAddrPort(http_addr_t *addr)
-                                     _CUPS_INTERNAL_MSG("Use httpAddrPort instead.");
 extern void            _httpAddrSetPort(http_addr_t *addr, int port);
-extern char            *_httpAssembleUUID(const char *server, int port,
-                                          const char *name, int number,
-                                          char *buffer, size_t bufsize)
-                                          _CUPS_INTERNAL_MSG("Use httpAssembleUUID instead.");
-extern http_t          *_httpCreate(const char *host, int port,
-                                    http_addrlist_t *addrlist,
-                                    http_encryption_t encryption,
-                                    int family)
-                                    _CUPS_INTERNAL_MSG("Use httpConnect2 or httpAccept instead.");
 extern http_tls_credentials_t
                        _httpCreateCredentials(cups_array_t *credentials);
 extern char            *_httpDecodeURI(char *dst, const char *src,
@@ -416,12 +412,18 @@ extern void               _httpDisconnect(http_t *http);
 extern char            *_httpEncodeURI(char *dst, const char *src,
                                        size_t dstsize);
 extern void            _httpFreeCredentials(http_tls_credentials_t credentials);
-extern ssize_t         _httpPeek(http_t *http, char *buffer, size_t length)
-                                 _CUPS_INTERNAL_MSG("Use httpPeek instead.");
 extern const char      *_httpResolveURI(const char *uri, char *resolved_uri,
                                         size_t resolved_size, int options,
                                         int (*cb)(void *context),
                                         void *context);
+extern const char      *_httpStatus(cups_lang_t *lang, http_status_t status);
+extern void            _httpTLSInitialize(void);
+extern size_t          _httpTLSPending(http_t *http);
+extern int             _httpTLSRead(http_t *http, char *buf, int len);
+extern int             _httpTLSSetCredentials(http_t *http);
+extern int             _httpTLSStart(http_t *http);
+extern void            _httpTLSStop(http_t *http);
+extern int             _httpTLSWrite(http_t *http, const char *buf, int len);
 extern int             _httpUpdate(http_t *http, http_status_t *status);
 extern int             _httpWait(http_t *http, int msec, int usessl);
 
@@ -437,5 +439,5 @@ extern int          _httpWait(http_t *http, int msec, int usessl);
 #endif /* !_CUPS_HTTP_PRIVATE_H_ */
 
 /*
- * End of "$Id: http-private.h 11392 2013-11-06 01:29:56Z msweet $".
+ * End of "$Id: http-private.h 12044 2014-07-17 21:21:21Z msweet $".
  */
index a4250beec7c4bca2a4b714d923950513e1180ec9..0f224097a0b29e8b6be24f5e3e4ee85a2e758861 100644 (file)
@@ -1,53 +1,18 @@
 /*
- * "$Id: http-support.c 11445 2013-12-05 19:57:43Z msweet $"
+ * "$Id: http-support.c 11844 2014-05-02 11:58:54Z msweet $"
  *
- *   HTTP support routines for CUPS.
+ * HTTP support routines for CUPS.
  *
- *   Copyright 2007-2013 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.
- *
- * Contents:
- *
- *   httpAssembleURI()   - Assemble a uniform resource identifier from its
- *                         components.
- *   httpAssembleURIf()   - Assemble a uniform resource identifier from its
- *                         components with a formatted resource.
- *   httpAssembleUUID()   - Assemble a name-based UUID URN conforming to RFC
- *                          4122.
- *   httpDecode64()      - Base64-decode a string.
- *   httpDecode64_2()    - Base64-decode a string.
- *   httpEncode64()      - Base64-encode a string.
- *   httpEncode64_2()    - Base64-encode a string.
- *   httpGetDateString()  - Get a formatted date/time string from a time value.
- *   httpGetDateString2() - Get a formatted date/time string from a time value.
- *   httpGetDateTime()   - Get a time value from a formatted date/time string.
- *   httpSeparate()      - Separate a Universal Resource Identifier into its
- *                         components.
- *   httpSeparate2()     - Separate a Universal Resource Identifier into its
- *                         components.
- *   httpSeparateURI()   - Separate a Universal Resource Identifier into its
- *                         components.
- *   httpStatus()        - Return a short string describing a HTTP status
- *                         code.
- *   _cups_hstrerror()   - hstrerror() emulation function for Solaris and
- *                         others.
- *   _httpDecodeURI()    - Percent-decode a HTTP request URI.
- *   _httpEncodeURI()    - Percent-encode a HTTP request URI.
- *   _httpResolveURI()   - Resolve a DNS-SD URI.
- *   http_client_cb()    - Client callback for resolving URI.
- *   http_copy_decode()   - Copy and decode a URI.
- *   http_copy_encode()   - Copy and encode a URI.
- *   http_poll_cb()       - Wait for input on the specified file descriptors.
- *   http_resolve_cb()   - Build a device URI for the given service name.
- *   http_resolve_cb()   - Build a device URI for the given service name.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -84,6 +49,7 @@ typedef struct _http_uribuf_s         /* URI buffer */
   size_t               bufsize;        /* Size of buffer */
   int                  options;        /* Options passed to _httpResolveURI */
   const char           *resource;      /* Resource from URI */
+  const char           *uuid;          /* UUID from URI */
 } _http_uribuf_t;
 
 
@@ -91,7 +57,7 @@ typedef struct _http_uribuf_s         /* URI buffer */
  * Local globals...
  */
 
-static const char * const http_days[7] =
+static const char * const http_days[7] =/* Days of the week */
                        {
                          "Sun",
                          "Mon",
@@ -102,7 +68,7 @@ static const char * const http_days[7] =
                          "Sat"
                        };
 static const char * const http_months[12] =
-                       {
+                       {               /* Months of the year */
                          "Jan",
                          "Feb",
                          "Mar",
@@ -116,6 +82,26 @@ static const char * const http_months[12] =
                          "Nov",
                          "Dec"
                        };
+static const char * const http_states[] =
+                       {               /* HTTP state strings */
+                         "HTTP_STATE_ERROR",
+                         "HTTP_STATE_WAITING",
+                         "HTTP_STATE_OPTIONS",
+                         "HTTP_STATE_GET",
+                         "HTTP_STATE_GET_SEND",
+                         "HTTP_STATE_HEAD",
+                         "HTTP_STATE_POST",
+                         "HTTP_STATE_POST_RECV",
+                         "HTTP_STATE_POST_SEND",
+                         "HTTP_STATE_PUT",
+                         "HTTP_STATE_PUT_RECV",
+                         "HTTP_STATE_DELETE",
+                         "HTTP_STATE_TRACE",
+                         "HTTP_STATE_CONNECT",
+                         "HTTP_STATE_STATUS",
+                         "HTTP_STATE_UNKNOWN_METHOD",
+                         "HTTP_STATE_UNKNOWN_VERSION"
+                       };
 
 
 /*
@@ -206,10 +192,10 @@ httpAssembleURI(
   if (!ptr)
     goto assemble_overflow;
 
-  if (!strcmp(scheme, "mailto") || !strcmp(scheme, "tel"))
+  if (!strcmp(scheme, "geo") || !strcmp(scheme, "mailto") || !strcmp(scheme, "tel"))
   {
    /*
-    * mailto: and tel: only have :, no //...
+    * geo:, mailto:, and tel: only have :, no //...
     */
 
     if (ptr < end)
@@ -220,7 +206,7 @@ httpAssembleURI(
   else
   {
    /*
-    * Schemes other than mailto: and tel: all have //...
+    * Schemes other than geo:, mailto:, and tel: typically have //...
     */
 
     if ((ptr + 2) < end)
@@ -372,7 +358,7 @@ httpAssembleURI(
 
     if (port > 0)
     {
-      snprintf(ptr, end - ptr + 1, ":%d", port);
+      snprintf(ptr, (size_t)(end - ptr + 1), ":%d", port);
       ptr += strlen(ptr);
 
       if (ptr >= end)
@@ -486,7 +472,7 @@ httpAssembleURIf(
   bytes = vsnprintf(resource, sizeof(resource), resourcef, ap);
   va_end(ap);
 
-  if (bytes >= sizeof(resource))
+  if ((size_t)bytes >= sizeof(resource))
   {
     *uri = '\0';
     return (HTTP_URI_STATUS_OVERFLOW);
@@ -534,7 +520,7 @@ httpAssembleUUID(const char *server,        /* I - Server name */
           (unsigned)CUPS_RAND() & 0xffff, (unsigned)CUPS_RAND() & 0xffff);
 
   _cupsMD5Init(&md5state);
-  _cupsMD5Append(&md5state, (unsigned char *)data, strlen(data));
+  _cupsMD5Append(&md5state, (unsigned char *)data, (int)strlen(data));
   _cupsMD5Finish(&md5state, md5sum);
 
  /*
@@ -552,13 +538,6 @@ httpAssembleUUID(const char *server,       /* I - Server name */
   return (buffer);
 }
 
-/* For OS X 10.8 and earlier */
-char *_httpAssembleUUID(const char *server, int port, const char *name,
-                       int number, char *buffer, size_t bufsize)
-{
-  return (httpAssembleUUID(server, port, name, number, buffer, bufsize));
-}
-
 
 /*
  * 'httpDecode64()' - Base64-decode a string.
@@ -597,10 +576,10 @@ httpDecode64_2(char       *out,           /* I  - String to write to */
               int        *outlen,      /* IO - Size of output string */
                const char *in)         /* I  - String to read from */
 {
-  int  pos,                            /* Bit position */
-       base64;                         /* Value of this character */
-  char *outptr,                        /* Output pointer */
-       *outend;                        /* End of output buffer */
+  int          pos;                    /* Bit position */
+  unsigned     base64;                 /* Value of this character */
+  char         *outptr,                /* Output pointer */
+               *outend;                /* End of output buffer */
 
 
  /*
@@ -629,11 +608,11 @@ httpDecode64_2(char       *out,           /* I  - String to write to */
     */
 
     if (*in >= 'A' && *in <= 'Z')
-      base64 = *in - 'A';
+      base64 = (unsigned)(*in - 'A');
     else if (*in >= 'a' && *in <= 'z')
-      base64 = *in - 'a' + 26;
+      base64 = (unsigned)(*in - 'a' + 26);
     else if (*in >= '0' && *in <= '9')
-      base64 = *in - '0' + 52;
+      base64 = (unsigned)(*in - '0' + 52);
     else if (*in == '+')
       base64 = 62;
     else if (*in == '/')
@@ -651,21 +630,21 @@ httpDecode64_2(char       *out,           /* I  - String to write to */
     {
       case 0 :
           if (outptr < outend)
-            *outptr = base64 << 2;
+            *outptr = (char)(base64 << 2);
          pos ++;
          break;
       case 1 :
           if (outptr < outend)
-            *outptr++ |= (base64 >> 4) & 3;
+            *outptr++ |= (char)((base64 >> 4) & 3);
           if (outptr < outend)
-           *outptr = (base64 << 4) & 255;
+           *outptr = (char)((base64 << 4) & 255);
          pos ++;
          break;
       case 2 :
           if (outptr < outend)
-            *outptr++ |= (base64 >> 2) & 15;
+            *outptr++ |= (char)((base64 >> 2) & 15);
           if (outptr < outend)
-           *outptr = (base64 << 6) & 255;
+           *outptr = (char)((base64 << 6) & 255);
          pos ++;
          break;
       case 3 :
@@ -830,10 +809,7 @@ httpGetDateString2(time_t t,               /* I - UNIX time */
 
   tdate = gmtime(&t);
   if (tdate)
-    snprintf(s, slen, "%s, %02d %s %d %02d:%02d:%02d GMT",
-            http_days[tdate->tm_wday], tdate->tm_mday,
-            http_months[tdate->tm_mon], tdate->tm_year + 1900,
-            tdate->tm_hour, tdate->tm_min, tdate->tm_sec);
+    snprintf(s, (size_t)slen, "%s, %02d %s %d %02d:%02d:%02d GMT", http_days[tdate->tm_wday], tdate->tm_mday, http_months[tdate->tm_mon], tdate->tm_year + 1900, tdate->tm_hour, tdate->tm_min, tdate->tm_sec);
   else
     s[0] = '\0';
 
@@ -1028,7 +1004,7 @@ httpSeparateURI(
     * Workaround for HP IPP client bug...
     */
 
-    strlcpy(scheme, "ipp", schemelen);
+    strlcpy(scheme, "ipp", (size_t)schemelen);
     status = HTTP_URI_STATUS_MISSING_SCHEME;
   }
   else if (*uri == '/')
@@ -1037,7 +1013,7 @@ httpSeparateURI(
     * Filename...
     */
 
-    strlcpy(scheme, "file", schemelen);
+    strlcpy(scheme, "file", (size_t)schemelen);
     status = HTTP_URI_STATUS_MISSING_SCHEME;
   }
   else
@@ -1255,7 +1231,7 @@ httpSeparateURI(
         return (HTTP_URI_STATUS_BAD_PORT);
       }
 
-      *port = strtol(uri + 1, (char **)&uri, 10);
+      *port = (int)strtol(uri + 1, (char **)&uri, 10);
 
       if (*uri != '/' && *uri)
       {
@@ -1322,21 +1298,33 @@ httpSeparateURI(
 
 
 /*
- * 'httpStatus()' - Return a short string describing a HTTP status code.
+ * 'httpStateString()' - Return the string describing a HTTP state value.
  *
- * The returned string is localized to the current POSIX locale and is based
- * on the status strings defined in RFC 2616.
+ * @since CUPS 2.0@
+ */
+
+const char *                           /* O - State string */
+httpStateString(http_state_t state)    /* I - HTTP state value */
+{
+  if (state < HTTP_STATE_ERROR || state > HTTP_STATE_UNKNOWN_VERSION)
+    return ("HTTP_STATE_???");
+  else
+    return (http_states[state - HTTP_STATE_ERROR]);
+}
+
+
+/*
+ * '_httpStatus()' - Return the localized string describing a HTTP status code.
+ *
+ * The returned string is localized using the passed message catalog.
  */
 
 const char *                           /* O - Localized status string */
-httpStatus(http_status_t status)       /* I - HTTP status code */
+_httpStatus(cups_lang_t   *lang,       /* I - Language */
+            http_status_t status)      /* I - HTTP status code */
 {
   const char   *s;                     /* Status string */
-  _cups_globals_t *cg = _cupsGlobals();        /* Global data */
-
 
-  if (!cg->lang_default)
-    cg->lang_default = cupsLangDefault();
 
   switch (status)
   {
@@ -1419,6 +1407,90 @@ httpStatus(http_status_t status) /* I - HTTP status code */
        break;
   }
 
+  return (_cupsLangString(lang, s));
+}
+
+
+/*
+ * 'httpStatus()' - Return a short string describing a HTTP status code.
+ *
+ * The returned string is localized to the current POSIX locale and is based
+ * on the status strings defined in RFC 2616.
+ */
+
+const char *                           /* O - Localized status string */
+httpStatus(http_status_t status)       /* I - HTTP status code */
+{
+  _cups_globals_t *cg = _cupsGlobals();        /* Global data */
+
+
+  if (!cg->lang_default)
+    cg->lang_default = cupsLangDefault();
+
+  return (_httpStatus(cg->lang_default, status));
+}
+
+/*
+ * 'httpURIStatusString()' - Return a string describing a URI status code.
+ *
+ * @since CUPS 2.0@
+ */
+
+const char *                           /* O - Localized status string */
+httpURIStatusString(
+    http_uri_status_t status)          /* I - URI status code */
+{
+  const char   *s;                     /* Status string */
+  _cups_globals_t *cg = _cupsGlobals();        /* Global data */
+
+
+  if (!cg->lang_default)
+    cg->lang_default = cupsLangDefault();
+
+  switch (status)
+  {
+    case HTTP_URI_STATUS_OVERFLOW :
+       s = _("URI too large");
+       break;
+    case HTTP_URI_STATUS_BAD_ARGUMENTS :
+       s = _("Bad arguments to function");
+       break;
+    case HTTP_URI_STATUS_BAD_RESOURCE :
+       s = _("Bad resource in URI");
+       break;
+    case HTTP_URI_STATUS_BAD_PORT :
+       s = _("Bad port number in URI");
+       break;
+    case HTTP_URI_STATUS_BAD_HOSTNAME :
+       s = _("Bad hostname/address in URI");
+       break;
+    case HTTP_URI_STATUS_BAD_USERNAME :
+       s = _("Bad username in URI");
+       break;
+    case HTTP_URI_STATUS_BAD_SCHEME :
+       s = _("Bad scheme in URI");
+       break;
+    case HTTP_URI_STATUS_BAD_URI :
+       s = _("Bad/empty URI");
+       break;
+    case HTTP_URI_STATUS_OK :
+       s = _("OK");
+       break;
+    case HTTP_URI_STATUS_MISSING_SCHEME :
+       s = _("Missing scheme in URI");
+       break;
+    case HTTP_URI_STATUS_UNKNOWN_SCHEME :
+       s = _("Unknown scheme in URI");
+       break;
+    case HTTP_URI_STATUS_MISSING_RESOURCE :
+       s = _("Missing resource in URI");
+       break;
+
+    default:
+        s = _("Unknown");
+       break;
+  }
+
   return (_cupsLangString(cg->lang_default, s));
 }
 
@@ -1538,7 +1610,9 @@ _httpResolveURI(
   {
 #if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
     char               *regtype,       /* Pointer to type in hostname */
-                       *domain;        /* Pointer to domain in hostname */
+                       *domain,        /* Pointer to domain in hostname */
+                       *uuid,          /* Pointer to UUID in URI */
+                       *uuidend;       /* Pointer to end of UUID in URI */
     _http_uribuf_t     uribuf;         /* URI buffer */
     int                        offline = 0;    /* offline-report state set? */
 #  ifdef HAVE_DNSSD
@@ -1546,9 +1620,11 @@ _httpResolveURI(
 #      pragma comment(lib, "dnssd.lib")
 #    endif /* WIN32 */
     DNSServiceRef      ref,            /* DNS-SD master service reference */
-                       domainref,      /* DNS-SD service reference for domain */
+                       domainref = NULL,/* DNS-SD service reference for domain */
+                       ippref = NULL,  /* DNS-SD service reference for network IPP */
+                       ippsref = NULL, /* DNS-SD service reference for network IPPS */
                        localref;       /* DNS-SD service reference for .local */
-    int                        domainsent = 0; /* Send the domain resolve? */
+    int                        extrasent = 0;  /* Send the domain/IPP/IPPS resolves? */
 #    ifdef HAVE_POLL
     struct pollfd      polldata;       /* Polling data */
 #    else /* select() */
@@ -1595,12 +1671,21 @@ _httpResolveURI(
     if (domain)
       *domain++ = '\0';
 
+    if ((uuid = strstr(resource, "?uuid=")) != NULL)
+    {
+      *uuid = '\0';
+      uuid  += 6;
+      if ((uuidend = strchr(uuid, '&')) != NULL)
+        *uuidend = '\0';
+    }
+
+    resolved_uri[0] = '\0';
+
     uribuf.buffer   = resolved_uri;
     uribuf.bufsize  = resolved_size;
     uribuf.options  = options;
     uribuf.resource = resource;
-
-    resolved_uri[0] = '\0';
+    uribuf.uuid     = uuid;
 
     DEBUG_printf(("6_httpResolveURI: Resolving hostname=\"%s\", regtype=\"%s\", "
                   "domain=\"%s\"\n", hostname, regtype, domain));
@@ -1616,7 +1701,7 @@ _httpResolveURI(
 #  ifdef HAVE_DNSSD
     if (DNSServiceCreateConnection(&ref) == kDNSServiceErr_NoError)
     {
-      int myinterface = kDNSServiceInterfaceIndexAny;
+      uint32_t myinterface = kDNSServiceInterfaceIndexAny;
                                        /* Lookup on any interface */
 
       if (!strcmp(scheme, "ippusb"))
@@ -1656,7 +1741,7 @@ _httpResolveURI(
          polldata.fd     = DNSServiceRefSockFD(ref);
          polldata.events = POLLIN;
 
-         fds = poll(&polldata, 1, 1000 * timeout);
+         fds = poll(&polldata, 1, (int)(1000 * timeout));
 
 #    else /* select() */
          FD_ZERO(&input_set);
@@ -1688,7 +1773,7 @@ _httpResolveURI(
            * comes in, do an additional domain resolution...
            */
 
-           if (domainsent == 0 && domain && _cups_strcasecmp(domain, "local."))
+           if (extrasent == 0 && domain && _cups_strcasecmp(domain, "local."))
            {
              if (options & _HTTP_RESOLVE_STDERR)
                fprintf(stderr,
@@ -1702,7 +1787,33 @@ _httpResolveURI(
                                    myinterface, hostname, regtype, domain,
                                    http_resolve_cb,
                                    &uribuf) == kDNSServiceErr_NoError)
-               domainsent = 1;
+               extrasent = 1;
+           }
+           else if (extrasent == 0 && !strcmp(scheme, "ippusb"))
+           {
+             if (options & _HTTP_RESOLVE_STDERR)
+               fprintf(stderr, "DEBUG: Resolving \"%s\", regtype=\"_ipps._tcp\", domain=\"local.\"...\n", hostname);
+
+             ippsref = ref;
+             if (DNSServiceResolve(&ippsref,
+                                   kDNSServiceFlagsShareConnection,
+                                   kDNSServiceInterfaceIndexAny, hostname,
+                                   "_ipps._tcp", domain, http_resolve_cb,
+                                   &uribuf) == kDNSServiceErr_NoError)
+               extrasent = 1;
+           }
+           else if (extrasent == 1 && !strcmp(scheme, "ippusb"))
+           {
+             if (options & _HTTP_RESOLVE_STDERR)
+               fprintf(stderr, "DEBUG: Resolving \"%s\", regtype=\"_ipp._tcp\", domain=\"local.\"...\n", hostname);
+
+             ippref = ref;
+             if (DNSServiceResolve(&ippref,
+                                   kDNSServiceFlagsShareConnection,
+                                   kDNSServiceInterfaceIndexAny, hostname,
+                                   "_ipp._tcp", domain, http_resolve_cb,
+                                   &uribuf) == kDNSServiceErr_NoError)
+               extrasent = 2;
            }
 
           /*
@@ -1719,7 +1830,8 @@ _httpResolveURI(
          }
          else
          {
-           if (DNSServiceProcessResult(ref) == kDNSServiceErr_NoError)
+           if (DNSServiceProcessResult(ref) == kDNSServiceErr_NoError &&
+               resolved_uri[0])
            {
              uri = resolved_uri;
              break;
@@ -1727,8 +1839,15 @@ _httpResolveURI(
          }
        }
 
-       if (domainsent)
-         DNSServiceRefDeallocate(domainref);
+       if (extrasent)
+       {
+         if (domainref)
+           DNSServiceRefDeallocate(domainref);
+         if (ippref)
+           DNSServiceRefDeallocate(ippref);
+         if (ippsref)
+           DNSServiceRefDeallocate(ippsref);
+       }
 
        DNSServiceRefDeallocate(localref);
       }
@@ -1920,7 +2039,7 @@ http_copy_decode(char       *dst, /* O - Destination buffer */
          else
            quoted |= *src - '0';
 
-          *ptr++ = quoted;
+          *ptr++ = (char)quoted;
        }
        else
        {
@@ -2032,6 +2151,31 @@ http_resolve_cb(
                interfaceIndex, errorCode, fullName, hostTarget, port, txtLen,
                txtRecord, context));
 
+ /*
+  * If we have a UUID, compare it...
+  */
+
+  if (uribuf->uuid &&
+      (value = TXTRecordGetValuePtr(txtLen, txtRecord, "UUID",
+                                    &valueLen)) != NULL)
+  {
+    char       uuid[256];              /* UUID value */
+
+    memcpy(uuid, value, valueLen);
+    uuid[valueLen] = '\0';
+
+    if (_cups_strcasecmp(uuid, uribuf->uuid))
+    {
+      if (uribuf->options & _HTTP_RESOLVE_STDERR)
+       fprintf(stderr, "DEBUG: Found UUID %s, looking for %s.", uuid,
+               uribuf->uuid);
+
+      DEBUG_printf(("7http_resolve_cb: Found UUID %s, looking for %s.", uuid,
+                    uribuf->uuid));
+      return;
+    }
+  }
+
  /*
   * Figure out the scheme from the full name...
   */
@@ -2123,9 +2267,7 @@ http_resolve_cb(
     {
       for (addr = addrlist; addr; addr = addr->next)
       {
-        int error = getnameinfo(&(addr->addr.addr),
-                               httpAddrLength(&(addr->addr)),
-                               fqdn, sizeof(fqdn), NULL, 0, NI_NAMEREQD);
+        int error = getnameinfo(&(addr->addr.addr), (socklen_t)httpAddrLength(&(addr->addr)), fqdn, sizeof(fqdn), NULL, 0, NI_NAMEREQD);
 
         if (!error)
        {
@@ -2156,12 +2298,9 @@ http_resolve_cb(
 
   if ((!strcmp(scheme, "ipp") || !strcmp(scheme, "ipps")) &&
       !strcmp(uribuf->resource, "/cups"))
-    httpAssembleURIf(HTTP_URI_CODING_ALL, uribuf->buffer, uribuf->bufsize,
-                     scheme, NULL, hostTarget, ntohs(port), "%s?snmp=false",
-                     resource);
+    httpAssembleURIf(HTTP_URI_CODING_ALL, uribuf->buffer, (int)uribuf->bufsize, scheme, NULL, hostTarget, ntohs(port), "%s?snmp=false", resource);
   else
-    httpAssembleURI(HTTP_URI_CODING_ALL, uribuf->buffer, uribuf->bufsize,
-                    scheme, NULL, hostTarget, ntohs(port), resource);
+    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));
 }
@@ -2236,6 +2375,31 @@ http_resolve_cb(
     return;
   }
 
+ /*
+  * If we have a UUID, compare it...
+  */
+
+  if (uribuf->uuid && (pair = avahi_string_list_find(txt, "UUID")) != NULL)
+  {
+    char       uuid[256];              /* UUID value */
+
+    avahi_string_list_get_pair(pair, NULL, &value, &valueLen);
+
+    memcpy(uuid, value, valueLen);
+    uuid[valueLen] = '\0';
+
+    if (_cups_strcasecmp(uuid, uribuf->uuid))
+    {
+      if (uribuf->options & _HTTP_RESOLVE_STDERR)
+       fprintf(stderr, "DEBUG: Found UUID %s, looking for %s.", uuid,
+               uribuf->uuid);
+
+      DEBUG_printf(("7http_resolve_cb: Found UUID %s, looking for %s.", uuid,
+                    uribuf->uuid));
+      return;
+    }
+  }
+
  /*
   * Figure out the scheme from the full name...
   */
@@ -2341,9 +2505,7 @@ http_resolve_cb(
     {
       for (addr = addrlist; addr; addr = addr->next)
       {
-        int error = getnameinfo(&(addr->addr.addr),
-                               httpAddrLength(&(addr->addr)),
-                               fqdn, sizeof(fqdn), NULL, 0, NI_NAMEREQD);
+        int error = getnameinfo(&(addr->addr.addr), (socklen_t)httpAddrLength(&(addr->addr)), fqdn, sizeof(fqdn), NULL, 0, NI_NAMEREQD);
 
         if (!error)
        {
@@ -2382,5 +2544,5 @@ http_resolve_cb(
 
 
 /*
- * End of "$Id: http-support.c 11445 2013-12-05 19:57:43Z msweet $".
+ * End of "$Id: http-support.c 11844 2014-05-02 11:58:54Z msweet $".
  */
index d840769f93ac66ebfc206f81fd56cd58d879a021..b4c9d71fb8dc2c824916004e25441eed94fbf814 100644 (file)
@@ -1,12 +1,13 @@
 /*
- * "$Id: http.c 11761 2014-03-28 13:04:33Z msweet $"
+ * "$Id: http.c 12034 2014-07-16 19:37:34Z msweet $"
  *
  * HTTP routines for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
- * This file contains Kerberos support code, copyright 2006 by Jelmer Vernooij.
+ * This file contains Kerberos support code, copyright 2006 by
+ * Jelmer Vernooij.
  *
  * These coded instructions, statements, and computer programs are the
  * property of Apple Inc. and are protected by Federal copyright
@@ -53,7 +54,6 @@ static http_t         *http_create(const char *host, int port,
 static void            http_debug_hex(const char *prefix, const char *buffer,
                                       int bytes);
 #endif /* DEBUG */
-static http_field_t    http_field(const char *name);
 static ssize_t         http_read(http_t *http, char *buffer, size_t length);
 static ssize_t         http_read_buffered(http_t *http, char *buffer, size_t length);
 static ssize_t         http_read_chunk(http_t *http, char *buffer, size_t length);
@@ -63,23 +63,12 @@ static ssize_t              http_write(http_t *http, const char *buffer,
                                   size_t length);
 static ssize_t         http_write_chunk(http_t *http, const char *buffer,
                                         size_t length);
-#ifdef HAVE_SSL
-static int             http_read_ssl(http_t *http, char *buf, int len);
-#  ifdef HAVE_CDSASSL
-static int             http_set_credentials(http_t *http);
-#  endif /* HAVE_CDSASSL */
-#endif /* HAVE_SSL */
 static off_t           http_set_length(http_t *http);
 static void            http_set_timeout(int fd, double timeout);
 static void            http_set_wait(http_t *http);
-#ifdef DEBUG
-static const char      *http_state_string(http_state_t state);
-#endif /* DEBUG */
+
 #ifdef HAVE_SSL
-static int             http_setup_ssl(http_t *http);
-static void            http_shutdown_ssl(http_t *http);
-static int             http_upgrade(http_t *http);
-static int             http_write_ssl(http_t *http, const char *buf, int len);
+static int             http_tls_upgrade(http_t *http);
 #endif /* HAVE_SSL */
 
 
@@ -122,34 +111,6 @@ static const char * const http_fields[] =
                        };
 
 
-#if defined(HAVE_SSL) && defined(HAVE_LIBSSL)
-/*
- * BIO methods for OpenSSL...
- */
-
-static int             http_bio_write(BIO *h, const char *buf, int num);
-static int             http_bio_read(BIO *h, char *buf, int size);
-static int             http_bio_puts(BIO *h, const char *str);
-static long            http_bio_ctrl(BIO *h, int cmd, long arg1, void *arg2);
-static int             http_bio_new(BIO *h);
-static int             http_bio_free(BIO *data);
-
-static BIO_METHOD      http_bio_methods =
-                       {
-                         BIO_TYPE_SOCKET,
-                         "http",
-                         http_bio_write,
-                         http_bio_read,
-                         http_bio_puts,
-                         NULL, /* http_bio_gets, */
-                         http_bio_ctrl,
-                         http_bio_new,
-                         http_bio_free,
-                         NULL,
-                       };
-#endif /* HAVE_SSL && HAVE_LIBSSL */
-
-
 /*
  * 'httpAcceptConnection()' - Accept a new HTTP client connection from the
  *                            specified listening socket.
@@ -201,8 +162,12 @@ httpAcceptConnection(int fd,               /* I - Listen socket file descriptor */
     return (NULL);
   }
 
-  httpAddrString(&(http->addrlist->addr), http->hostname,
-                sizeof(http->hostname));
+  http->hostaddr = &(http->addrlist->addr);
+
+  if (httpAddrLocalhost(http->hostaddr))
+    strlcpy(http->hostname, "localhost", sizeof(http->hostname));
+  else
+    httpAddrString(http->hostaddr, http->hostname, sizeof(http->hostname));
 
 #ifdef SO_NOSIGPIPE
  /*
@@ -270,25 +235,12 @@ httpAddCredential(
 }
 
 
-#if defined(HAVE_SSL) && defined(HAVE_LIBSSL)
-/*
- * '_httpBIOMethods()' - Get the OpenSSL BIO methods for HTTP connections.
- */
-
-BIO_METHOD *                           /* O - BIO methods for OpenSSL */
-_httpBIOMethods(void)
-{
-  return (&http_bio_methods);
-}
-#endif /* HAVE_SSL && HAVE_LIBSSL */
-
-
 /*
  * 'httpBlocking()' - Set blocking/non-blocking behavior on a connection.
  */
 
 void
-httpBlocking(http_t *http,             /* I - Connection to server */
+httpBlocking(http_t *http,             /* I - HTTP connection */
              int    b)                 /* I - 1 = blocking, 0 = non-blocking */
 {
   if (http)
@@ -304,7 +256,7 @@ httpBlocking(http_t *http,          /* I - Connection to server */
  */
 
 int                                    /* O - 0 = no data, 1 = data available */
-httpCheck(http_t *http)                        /* I - Connection to server */
+httpCheck(http_t *http)                        /* I - HTTP connection */
 {
   return (httpWait(http, 0));
 }
@@ -317,7 +269,7 @@ httpCheck(http_t *http)                     /* I - Connection to server */
  */
 
 void
-httpClearCookie(http_t *http)          /* I - Connection to server */
+httpClearCookie(http_t *http)          /* I - HTTP connection */
 {
   if (!http)
     return;
@@ -335,7 +287,7 @@ httpClearCookie(http_t *http)               /* I - Connection to server */
  */
 
 void
-httpClearFields(http_t *http)          /* I - Connection to server */
+httpClearFields(http_t *http)          /* I - HTTP connection */
 {
   DEBUG_printf(("httpClearFields(http=%p)", http));
 
@@ -385,7 +337,7 @@ httpClearFields(http_t *http)               /* I - Connection to server */
  */
 
 void
-httpClose(http_t *http)                        /* I - Connection to server */
+httpClose(http_t *http)                        /* I - HTTP connection */
 {
 #ifdef HAVE_GSSAPI
   OM_uint32    minor_status;           /* Minor status code */
@@ -438,6 +390,30 @@ httpClose(http_t *http)                    /* I - Connection to server */
 }
 
 
+/*
+ * 'httpCompareCredentials()' - Compare two sets of X.509 credentials.
+ *
+ * @since CUPS 2.0@
+ */
+
+int                                    /* O - 1 if they match, 0 if they do not */
+httpCompareCredentials(
+    cups_array_t *cred1,               /* I - First set of X.509 credentials */
+    cups_array_t *cred2)               /* I - Second set of X.509 credentials */
+{
+  http_credential_t    *temp1, *temp2; /* Temporary credentials */
+
+
+  for (temp1 = (http_credential_t *)cupsArrayFirst(cred1), temp2 = (http_credential_t *)cupsArrayFirst(cred2); temp1 && temp2; temp1 = (http_credential_t *)cupsArrayNext(cred1), temp2 = (http_credential_t *)cupsArrayNext(cred2))
+    if (temp1->datalen != temp2->datalen)
+      return (0);
+    else if (memcmp(temp1->data, temp2->data, temp1->datalen))
+      return (0);
+
+  return (temp1 == temp2);
+}
+
+
 /*
  * 'httpConnect()' - Connect to a HTTP server.
  *
@@ -450,8 +426,8 @@ http_t *                            /* O - New HTTP connection */
 httpConnect(const char *host,          /* I - Host to connect to */
             int        port)           /* I - Port number */
 {
-  return (httpConnect2(host, port, NULL, AF_UNSPEC, HTTP_ENCRYPTION_IF_REQUESTED,
-                       1, 30000, NULL));
+  return (httpConnect2(host, port, NULL, AF_UNSPEC,
+                       HTTP_ENCRYPTION_IF_REQUESTED, 1, 30000, NULL));
 }
 
 
@@ -527,140 +503,12 @@ httpConnectEncrypt(
 }
 
 
-/*
- * 'httpCopyCredentials()' - Copy the credentials associated with an encrypted
- *                          connection.
- *
- * @since CUPS 1.5/OS X 10.7@
- */
-
-int                                    /* O - Status of call (0 = success) */
-httpCopyCredentials(
-    http_t      *http,                 /* I - Connection to server */
-    cups_array_t **credentials)                /* O - Array of credentials */
-{
-#  ifdef HAVE_LIBSSL
-#  elif defined(HAVE_GNUTLS)
-#  elif defined(HAVE_CDSASSL)
-  OSStatus             error;          /* Error code */
-  SecTrustRef          peerTrust;      /* Peer trust reference */
-  CFIndex              count;          /* Number of credentials */
-  SecCertificateRef    secCert;        /* Certificate reference */
-  CFDataRef            data;           /* Certificate data */
-  int                  i;              /* Looping var */
-#  elif defined(HAVE_SSPISSL)
-#  endif /* HAVE_LIBSSL */
-
-
-  if (credentials)
-    *credentials = NULL;
-
-  if (!http || !http->tls || !credentials)
-    return (-1);
-
-#  ifdef HAVE_LIBSSL
-  return (-1);
-
-#  elif defined(HAVE_GNUTLS)
-  return (-1);
-
-#  elif defined(HAVE_CDSASSL)
-  if (!(error = SSLCopyPeerTrust(http->tls, &peerTrust)) && peerTrust)
-  {
-    if ((*credentials = cupsArrayNew(NULL, NULL)) != NULL)
-    {
-      count = SecTrustGetCertificateCount(peerTrust);
-
-      for (i = 0; i < count; i ++)
-      {
-       secCert = SecTrustGetCertificateAtIndex(peerTrust, i);
-       if ((data = SecCertificateCopyData(secCert)))
-       {
-         httpAddCredential(*credentials, CFDataGetBytePtr(data),
-                           CFDataGetLength(data));
-         CFRelease(data);
-       }
-      }
-    }
-
-    CFRelease(peerTrust);
-  }
-
-  return (error);
-
-#  elif defined(HAVE_SSPISSL)
-  return (-1);
-
-#  else
-  return (-1);
-#  endif /* HAVE_LIBSSL */
-}
-
-
-/*
- * '_httpCreateCredentials()' - Create credentials in the internal format.
- */
-
-http_tls_credentials_t                 /* O - Internal credentials */
-_httpCreateCredentials(
-    cups_array_t *credentials)         /* I - Array of credentials */
-{
-  if (!credentials)
-    return (NULL);
-
-#  ifdef HAVE_LIBSSL
-  return (NULL);
-
-#  elif defined(HAVE_GNUTLS)
-  return (NULL);
-
-#  elif defined(HAVE_CDSASSL)
-  CFMutableArrayRef    peerCerts;      /* Peer credentials reference */
-  SecCertificateRef    secCert;        /* Certificate reference */
-  CFDataRef            data;           /* Credential data reference */
-  http_credential_t    *credential;    /* Credential data */
-
-
-  if ((peerCerts = CFArrayCreateMutable(kCFAllocatorDefault,
-                                       cupsArrayCount(credentials),
-                                       &kCFTypeArrayCallBacks)) == NULL)
-    return (NULL);
-
-  for (credential = (http_credential_t *)cupsArrayFirst(credentials);
-       credential;
-       credential = (http_credential_t *)cupsArrayNext(credentials))
-  {
-    if ((data = CFDataCreate(kCFAllocatorDefault, credential->data,
-                            credential->datalen)))
-    {
-      if ((secCert = SecCertificateCreateWithData(kCFAllocatorDefault, data))
-              != NULL)
-      {
-       CFArrayAppendValue(peerCerts, secCert);
-       CFRelease(secCert);
-      }
-
-      CFRelease(data);
-    }
-  }
-
-  return (peerCerts);
-
-#  elif defined(HAVE_SSPISSL)
-  return (NULL);
-
-#  else
-  return (NULL);
-#  endif /* HAVE_LIBSSL */
-}
-
-
 /*
  * 'httpDelete()' - Send a DELETE request to the server.
  */
 
 int                                    /* O - Status of call (0 = success) */
-httpDelete(http_t     *http,           /* I - Connection to server */
+httpDelete(http_t     *http,           /* I - HTTP connection */
            const char *uri)            /* I - URI to delete */
 {
   return (http_send(http, HTTP_STATE_DELETE, uri));
@@ -672,18 +520,14 @@ httpDelete(http_t     *http,              /* I - Connection to server */
  */
 
 void
-_httpDisconnect(http_t *http)          /* I - Connection to server */
+_httpDisconnect(http_t *http)          /* I - HTTP connection */
 {
 #ifdef HAVE_SSL
   if (http->tls)
-    http_shutdown_ssl(http);
+    _httpTLSStop(http);
 #endif /* HAVE_SSL */
 
-#ifdef WIN32
-  closesocket(http->fd);
-#else
-  close(http->fd);
-#endif /* WIN32 */
+  httpAddrClose(NULL, http->fd);
 
   http->fd = -1;
 }
@@ -694,7 +538,7 @@ _httpDisconnect(http_t *http)               /* I - Connection to server */
  */
 
 int                                    /* O - -1 on error, 0 on success */
-httpEncryption(http_t            *http,        /* I - Connection to server */
+httpEncryption(http_t            *http,        /* I - HTTP connection */
                http_encryption_t e)    /* I - New encryption preference */
 {
   DEBUG_printf(("httpEncryption(http=%p, e=%d)", http, e));
@@ -703,15 +547,29 @@ httpEncryption(http_t            *http,   /* I - Connection to server */
   if (!http)
     return (0);
 
-  http->encryption = e;
+  if (http->mode == _HTTP_MODE_CLIENT)
+  {
+    http->encryption = e;
 
-  if ((http->encryption == HTTP_ENCRYPTION_ALWAYS && !http->tls) ||
-      (http->encryption == HTTP_ENCRYPTION_NEVER && http->tls))
-    return (httpReconnect2(http, 30000, NULL));
-  else if (http->encryption == HTTP_ENCRYPTION_REQUIRED && !http->tls)
-    return (http_upgrade(http));
+    if ((http->encryption == HTTP_ENCRYPTION_ALWAYS && !http->tls) ||
+        (http->encryption == HTTP_ENCRYPTION_NEVER && http->tls))
+      return (httpReconnect2(http, 30000, NULL));
+    else if (http->encryption == HTTP_ENCRYPTION_REQUIRED && !http->tls)
+      return (http_tls_upgrade(http));
+    else
+      return (0);
+  }
   else
-    return (0);
+  {
+    if (e == HTTP_ENCRYPTION_NEVER && http->tls)
+      return (-1);
+
+    http->encryption = e;
+    if (e != HTTP_ENCRYPTION_IF_REQUESTED && !http->tls)
+      return (_httpTLSStart(http));
+    else
+      return (0);
+  }
 #else
   if (e == HTTP_ENCRYPTION_ALWAYS || e == HTTP_ENCRYPTION_REQUIRED)
     return (-1);
@@ -726,7 +584,7 @@ httpEncryption(http_t            *http,     /* I - Connection to server */
  */
 
 int                                    /* O - Error code (errno) value */
-httpError(http_t *http)                        /* I - Connection to server */
+httpError(http_t *http)                        /* I - HTTP connection */
 {
   if (http)
     return (http->error);
@@ -735,12 +593,31 @@ httpError(http_t *http)                   /* I - Connection to server */
 }
 
 
+/*
+ * 'httpFieldValue()' - Return the HTTP field enumeration value for a field
+ *                      name.
+ */
+
+http_field_t                           /* O - Field index */
+httpFieldValue(const char *name)       /* I - String name */
+{
+  int  i;                              /* Looping var */
+
+
+  for (i = 0; i < HTTP_FIELD_MAX; i ++)
+    if (!_cups_strcasecmp(name, http_fields[i]))
+      return ((http_field_t)i);
+
+  return (HTTP_FIELD_UNKNOWN);
+}
+
+
 /*
  * 'httpFlush()' - Flush data from a HTTP connection.
  */
 
 void
-httpFlush(http_t *http)                        /* I - Connection to server */
+httpFlush(http_t *http)                        /* I - HTTP connection */
 {
   char         buffer[8192];           /* Junk buffer */
   int          blocking;               /* To block or not to block */
@@ -748,7 +625,7 @@ httpFlush(http_t *http)                     /* I - Connection to server */
 
 
   DEBUG_printf(("httpFlush(http=%p), state=%s", http,
-                http_state_string(http->state)));
+                httpStateString(http->state)));
 
  /*
   * Nothing to do if we are in the "waiting" state...
@@ -796,14 +673,10 @@ httpFlush(http_t *http)                   /* I - Connection to server */
 
 #ifdef HAVE_SSL
     if (http->tls)
-      http_shutdown_ssl(http);
+      _httpTLSStop(http);
 #endif /* HAVE_SSL */
 
-#ifdef WIN32
-    closesocket(http->fd);
-#else
-    close(http->fd);
-#endif /* WIN32 */
+    httpAddrClose(NULL, http->fd);
 
     http->fd = -1;
   }
@@ -817,13 +690,13 @@ httpFlush(http_t *http)                   /* I - Connection to server */
  */
 
 int                                    /* O - Bytes written or -1 on error */
-httpFlushWrite(http_t *http)           /* I - Connection to server */
+httpFlushWrite(http_t *http)           /* I - HTTP connection */
 {
-  int  bytes;                          /* Bytes written */
+  ssize_t      bytes;                  /* Bytes written */
 
 
   DEBUG_printf(("httpFlushWrite(http=%p) data_encoding=%d", http,
-                http ? http->data_encoding : -1));
+                http ? http->data_encoding : 100));
 
   if (!http || !http->wused)
   {
@@ -833,42 +706,15 @@ httpFlushWrite(http_t *http)              /* I - Connection to server */
   }
 
   if (http->data_encoding == HTTP_ENCODING_CHUNKED)
-    bytes = http_write_chunk(http, http->wbuffer, http->wused);
+    bytes = http_write_chunk(http, http->wbuffer, (size_t)http->wused);
   else
-    bytes = http_write(http, http->wbuffer, http->wused);
+    bytes = http_write(http, http->wbuffer, (size_t)http->wused);
 
   http->wused = 0;
 
-  DEBUG_printf(("1httpFlushWrite: Returning %d, errno=%d.", bytes, errno));
-
-  return (bytes);
-}
-
-
-/*
- * '_httpFreeCredentials()' - Free internal credentials.
- */
-
-void
-_httpFreeCredentials(
-    http_tls_credentials_t credentials)        /* I - Internal credentials */
-{
-  if (!credentials)
-    return;
-
-#ifdef HAVE_LIBSSL
-  (void)credentials;
-
-#elif defined(HAVE_GNUTLS)
-  (void)credentials;
+  DEBUG_printf(("1httpFlushWrite: Returning %d, errno=%d.", (int)bytes, errno));
 
-#elif defined(HAVE_CDSASSL)
-  CFRelease(credentials);
-
-#elif defined(HAVE_SSPISSL)
-  (void)credentials;
-
-#endif /* HAVE_LIBSSL */
+  return ((int)bytes);
 }
 
 
@@ -901,13 +747,28 @@ httpFreeCredentials(
  */
 
 int                                    /* O - Status of call (0 = success) */
-httpGet(http_t     *http,              /* I - Connection to server */
+httpGet(http_t     *http,              /* I - HTTP connection */
         const char *uri)               /* I - URI to get */
 {
   return (http_send(http, HTTP_STATE_GET, uri));
 }
 
 
+/*
+ * 'httpGetActivity()' - Get the most recent activity for a connection.
+ *
+ * The return value is the UNIX time of the last read or write.
+ *
+ * @since CUPS 2.0@
+ */
+
+time_t                                 /* O - Time of last read or write */
+httpGetActivity(http_t *http)          /* I - HTTP connection */
+{
+  return (http ? http->activity : 0);
+}
+
+
 /*
  * 'httpGetAuthString()' - Get the current authorization string.
  *
@@ -920,7 +781,7 @@ httpGet(http_t     *http,           /* I - Connection to server */
  */
 
 char *                                 /* O - Authorization string */
-httpGetAuthString(http_t *http)                /* I - Connection to server */
+httpGetAuthString(http_t *http)                /* I - HTTP connection */
 {
   if (http)
     return (http->authstring);
@@ -936,7 +797,7 @@ httpGetAuthString(http_t *http)             /* I - Connection to server */
  */
 
 int                                    /* O - 1 if blocking, 0 if non-blocking */
-httpGetBlocking(http_t *http)          /* I - Connection to server */
+httpGetBlocking(http_t *http)          /* I - HTTP connection */
 {
   return (http ? http->blocking : 0);
 }
@@ -957,7 +818,7 @@ httpGetBlocking(http_t *http)               /* I - Connection to server */
 const char *                           /* O - Content-Coding value or
                                               @code NULL@ for the identity
                                               coding. */
-httpGetContentEncoding(http_t *http)   /* I - Connection to client/server */
+httpGetContentEncoding(http_t *http)   /* I - HTTP connection */
 {
 #ifdef HAVE_LIBZ
   if (http && http->accept_encoding)
@@ -1043,6 +904,23 @@ httpGetCookie(http_t *http)               /* I - HTTP connecion */
 }
 
 
+/*
+ * 'httpGetEncryption()' - Get the current encryption mode of a connection.
+ *
+ * This function returns the encryption mode for the connection. Use the
+ * @link httpIsEncrypted@ function to determine whether a TLS session has
+ * been established.
+ *
+ * @since CUPS 2.0@
+ */
+
+http_encryption_t                      /* O - Current encryption mode */
+httpGetEncryption(http_t *http)                /* I - HTTP connection */
+{
+  return (http ? http->encryption : HTTP_ENCRYPTION_IF_REQUESTED);
+}
+
+
 /*
  * 'httpGetExpect()' - Get the value of the Expect header, if any.
  *
@@ -1053,7 +931,7 @@ httpGetCookie(http_t *http)                /* I - HTTP connecion */
  */
 
 http_status_t                          /* O - Expect: status, if any */
-httpGetExpect(http_t *http)            /* I - Connection to client */
+httpGetExpect(http_t *http)            /* I - HTTP connection */
 {
   if (!http)
     return (HTTP_STATUS_ERROR);
@@ -1069,7 +947,7 @@ httpGetExpect(http_t *http)                /* I - Connection to client */
  */
 
 int                                    /* O - File descriptor or -1 if none */
-httpGetFd(http_t *http)                        /* I - Connection to server */
+httpGetFd(http_t *http)                        /* I - HTTP connection */
 {
   return (http ? http->fd : -1);
 }
@@ -1080,7 +958,7 @@ httpGetFd(http_t *http)                    /* I - Connection to server */
  */
 
 const char *                           /* O - Field value */
-httpGetField(http_t       *http,       /* I - Connection to server */
+httpGetField(http_t       *http,       /* I - HTTP connection */
              http_field_t field)       /* I - Field to get */
 {
   if (!http || field <= HTTP_FIELD_UNKNOWN || field >= HTTP_FIELD_MAX)
@@ -1114,6 +992,19 @@ httpGetField(http_t       *http,  /* I - Connection to server */
 }
 
 
+/*
+ * 'httpGetKeepAlive()' - Get the current Keep-Alive state of the connection.
+ *
+ * @since CUPS 2.0@
+ */
+
+http_keepalive_t                       /* O - Keep-Alive state */
+httpGetKeepAlive(http_t *http)         /* I - HTTP connection */
+{
+  return (http ? http->keep_alive : HTTP_KEEPALIVE_OFF);
+}
+
+
 /*
  * 'httpGetLength()' - Get the amount of data remaining from the
  *                     content-length or transfer-encoding fields.
@@ -1125,7 +1016,7 @@ httpGetField(http_t       *http,  /* I - Connection to server */
  */
 
 int                                    /* O - Content length */
-httpGetLength(http_t *http)            /* I - Connection to server */
+httpGetLength(http_t *http)            /* I - HTTP connection */
 {
  /*
   * Get the read content length and return the 32-bit value.
@@ -1153,13 +1044,13 @@ httpGetLength(http_t *http)             /* I - Connection to server */
  */
 
 off_t                                  /* O - Content length */
-httpGetLength2(http_t *http)           /* I - Connection to server */
+httpGetLength2(http_t *http)           /* I - HTTP connection */
 {
   off_t                        remaining;      /* Remaining length */
 
 
   DEBUG_printf(("2httpGetLength2(http=%p), state=%s", http,
-                http_state_string(http->state)));
+                httpStateString(http->state)));
 
   if (!http)
     return (-1);
@@ -1210,6 +1101,58 @@ httpGetLength2(http_t *http)             /* I - Connection to server */
 }
 
 
+/*
+ * 'httpGetPending()' - Get the number of bytes that are buffered for writing.
+ *
+ * @since CUPS 2.0@
+ */
+
+size_t                                 /* O - Number of bytes buffered */
+httpGetPending(http_t *http)           /* I - HTTP connection */
+{
+  return (http ? (size_t)http->wused : 0);
+}
+
+
+/*
+ * 'httpGetReady()' - Get the number of bytes that can be read without blocking.
+ *
+ * @since CUPS 2.0@
+ */
+
+size_t                                 /* O - Number of bytes available */
+httpGetReady(http_t *http)             /* I - HTTP connection */
+{
+  if (!http)
+    return (0);
+  else if (http->used > 0)
+    return ((size_t)http->used);
+#ifdef HAVE_SSL
+  else if (http->tls)
+    return (_httpTLSPending(http));
+#endif /* HAVE_SSL */
+
+  return (0);
+}
+
+
+/*
+ * 'httpGetRemaining()' - Get the number of remaining bytes in the message
+ *                        body or current chunk.
+ *
+ * The @link httpIsChunked@ function can be used to determine whether the
+ * message body is chunked or fixed-length.
+ *
+ * @since CUPS 2.0@
+ */
+
+size_t                                 /* O - Remaining bytes */
+httpGetRemaining(http_t *http)         /* I - HTTP connection */
+{
+  return (http ? (size_t)http->data_remaining : 0);
+}
+
+
 /*
  * 'httpGets()' - Get a line of text from a HTTP connection.
  */
@@ -1217,14 +1160,14 @@ httpGetLength2(http_t *http)            /* I - Connection to server */
 char *                                 /* O - Line or NULL */
 httpGets(char   *line,                 /* I - Line to read into */
          int    length,                        /* I - Max length of buffer */
-        http_t *http)                  /* I - Connection to server */
+        http_t *http)                  /* I - HTTP connection */
 {
-  char *lineptr,                       /* Pointer into line */
-       *lineend,                       /* End of line */
-       *bufptr,                        /* Pointer into input buffer */
-       *bufend;                        /* Pointer to end of buffer */
-  int  bytes,                          /* Number of bytes read */
-       eol;                            /* End-of-line? */
+  char         *lineptr,               /* Pointer into line */
+               *lineend,               /* End of line */
+               *bufptr,                /* Pointer into input buffer */
+               *bufend;                /* Pointer to end of buffer */
+  ssize_t      bytes;                  /* Number of bytes read */
+  int          eol;                    /* End-of-line? */
 
 
   DEBUG_printf(("2httpGets(line=%p, length=%d, http=%p)", line, length, http));
@@ -1273,10 +1216,9 @@ httpGets(char   *line,                   /* I - Line to read into */
         return (NULL);
       }
 
-      bytes = http_read(http, http->buffer + http->used,
-                        HTTP_MAX_BUFFER - http->used);
+      bytes = http_read(http, http->buffer + http->used, (size_t)(HTTP_MAX_BUFFER - http->used));
 
-      DEBUG_printf(("4httpGets: read %d bytes.", bytes));
+      DEBUG_printf(("4httpGets: read " CUPS_LLFMT " bytes.", CUPS_LLCAST bytes));
 
       if (bytes < 0)
       {
@@ -1336,7 +1278,7 @@ httpGets(char   *line,                    /* I - Line to read into */
       * Yup, update the amount used...
       */
 
-      http->used += bytes;
+      http->used += (int)bytes;
     }
 
    /*
@@ -1360,7 +1302,7 @@ httpGets(char   *line,                    /* I - Line to read into */
 
     http->used -= (int)(bufptr - http->buffer);
     if (http->used > 0)
-      memmove(http->buffer, bufptr, http->used);
+      memmove(http->buffer, bufptr, (size_t)http->used);
 
     if (eol)
     {
@@ -1389,7 +1331,7 @@ httpGets(char   *line,                    /* I - Line to read into */
  */
 
 http_state_t                           /* O - HTTP state */
-httpGetState(http_t *http)             /* I - Connection to server */
+httpGetState(http_t *http)             /* I - HTTP connection */
 {
   return (http ? http->state : HTTP_STATE_ERROR);
 }
@@ -1402,7 +1344,7 @@ httpGetState(http_t *http)                /* I - Connection to server */
  */
 
 http_status_t                          /* O - HTTP status */
-httpGetStatus(http_t *http)            /* I - Connection to server */
+httpGetStatus(http_t *http)            /* I - HTTP connection */
 {
   return (http ? http->status : HTTP_STATUS_ERROR);
 }
@@ -1415,7 +1357,7 @@ httpGetStatus(http_t *http)               /* I - Connection to server */
  */
 
 char *                                 /* O - Value or NULL */
-httpGetSubField(http_t       *http,    /* I - Connection to server */
+httpGetSubField(http_t       *http,    /* I - HTTP connection */
                 http_field_t field,    /* I - Field index */
                 const char   *name,    /* I - Name of sub-field */
                char         *value)    /* O - Value string */
@@ -1431,7 +1373,7 @@ httpGetSubField(http_t       *http,       /* I - Connection to server */
  */
 
 char *                                 /* O - Value or NULL */
-httpGetSubField2(http_t       *http,   /* I - Connection to server */
+httpGetSubField2(http_t       *http,   /* I - HTTP connection */
                  http_field_t field,   /* I - Field index */
                  const char   *name,   /* I - Name of sub-field */
                 char         *value,   /* O - Value string */
@@ -1561,7 +1503,7 @@ httpGetSubField2(http_t       *http,      /* I - Connection to server */
  */
 
 http_version_t                         /* O - Version number */
-httpGetVersion(http_t *http)           /* I - Connection to server */
+httpGetVersion(http_t *http)           /* I - HTTP connection */
 {
   return (http ? http->version : HTTP_VERSION_1_0);
 }
@@ -1572,7 +1514,7 @@ httpGetVersion(http_t *http)              /* I - Connection to server */
  */
 
 int                                    /* O - Status of call (0 = success) */
-httpHead(http_t     *http,             /* I - Connection to server */
+httpHead(http_t     *http,             /* I - HTTP connection */
          const char *uri)              /* I - URI for head */
 {
   DEBUG_printf(("httpHead(http=%p, uri=\"%s\")", http, uri));
@@ -1592,10 +1534,6 @@ httpInitialize(void)
 #ifdef WIN32
   WSADATA      winsockdata;            /* WinSock data */
 #endif /* WIN32 */
-#ifdef HAVE_LIBSSL
-  int          i;                      /* Looping var */
-  unsigned char        data[1024];             /* Seed data */
-#endif /* HAVE_LIBSSL */
 
 
   _cupsGlobalLock();
@@ -1629,36 +1567,43 @@ httpInitialize(void)
 #  endif /* !SO_NOSIGPIPE */
 #endif /* WIN32 */
 
-#ifdef HAVE_GNUTLS
- /*
-  * Initialize GNU TLS...
-  */
-
-  gnutls_global_init();
+#  ifdef HAVE_SSL
+  _httpTLSInitialize();
+#  endif /* HAVE_SSL */
 
-#elif defined(HAVE_LIBSSL)
- /*
-  * Initialize OpenSSL...
-  */
+  initialized = 1;
+  _cupsGlobalUnlock();
+}
 
-  SSL_load_error_strings();
-  SSL_library_init();
 
- /*
-  * Using the current time is a dubious random seed, but on some systems
-  * it is the best we can do (on others, this seed isn't even used...)
-  */
+/*
+ * 'httpIsChunked()' - Report whether a message body is chunked.
+ *
+ * This function returns non-zero if the message body is composed of
+ * variable-length chunks.
+ *
+ * @since CUPS 2.0@
+ */
 
-  CUPS_SRAND(time(NULL));
+int                                    /* O - 1 if chunked, 0 if not */
+httpIsChunked(http_t *http)            /* I - HTTP connection */
+{
+  return (http ? http->data_encoding == HTTP_ENCODING_CHUNKED : 0);
+}
 
-  for (i = 0; i < sizeof(data); i ++)
-    data[i] = CUPS_RAND();
 
-  RAND_seed(data, sizeof(data));
-#endif /* HAVE_GNUTLS */
+/*
+ * 'httpIsEncrypted()' - Report whether a connection is encrypted.
+ *
+ * This function returns non-zero if the connection is currently encrypted.
+ *
+ * @since CUPS 2.0@
+ */
 
-  initialized = 1;
-  _cupsGlobalUnlock();
+int                                    /* O - 1 if encrypted, 0 if not */
+httpIsEncrypted(http_t *http)          /* I - HTTP connection */
+{
+  return (http ? http->tls != NULL : 0);
 }
 
 
@@ -1667,7 +1612,7 @@ httpInitialize(void)
  */
 
 int                                    /* O - Status of call (0 = success) */
-httpOptions(http_t     *http,          /* I - Connection to server */
+httpOptions(http_t     *http,          /* I - HTTP connection */
             const char *uri)           /* I - URI for options */
 {
   return (http_send(http, HTTP_STATE_OPTIONS, uri));
@@ -1687,7 +1632,7 @@ httpOptions(http_t     *http,             /* I - Connection to server */
  */
 
 ssize_t                                        /* O - Number of bytes copied */
-httpPeek(http_t *http,                 /* I - Connection to server */
+httpPeek(http_t *http,                 /* I - HTTP connection */
          char   *buffer,               /* I - Buffer for data */
         size_t length)                 /* I - Maximum number of bytes */
 {
@@ -1761,7 +1706,7 @@ httpPeek(http_t *http,                    /* I - Connection to server */
       http->state = HTTP_STATE_STATUS;
 
     DEBUG_printf(("1httpPeek: 0-length chunk, set state to %s.",
-                  http_state_string(http->state)));
+                  httpStateString(http->state)));
 
    /*
     * Prevent future reads for this request...
@@ -1799,13 +1744,13 @@ httpPeek(http_t *http,                  /* I - Connection to server */
       }
     }
 
-    if (http->data_remaining > sizeof(http->buffer))
+    if ((size_t)http->data_remaining > sizeof(http->buffer))
       buflen = sizeof(http->buffer);
     else
-      buflen = http->data_remaining;
+      buflen = (ssize_t)http->data_remaining;
 
     DEBUG_printf(("2httpPeek: Reading %d bytes into buffer.", (int)buflen));
-    bytes = http_read(http, http->buffer, buflen);
+    bytes = http_read(http, http->buffer, (size_t)buflen);
 
     DEBUG_printf(("2httpPeek: Read " CUPS_LLFMT " bytes into buffer.",
                   CUPS_LLCAST bytes));
@@ -1815,7 +1760,7 @@ httpPeek(http_t *http,                    /* I - Connection to server */
       http_debug_hex("httpPeek", http->buffer, (int)bytes);
 #endif /* DEBUG */
 
-      http->used = bytes;
+      http->used = (int)bytes;
     }
   }
 
@@ -1832,27 +1777,27 @@ httpPeek(http_t *http,                  /* I - Connection to server */
                                        /* Number of bytes to copy */
 
       if (http->stream.avail_in > 0 &&
-         http->stream.next_in > http->dbuffer)
-        memmove(http->dbuffer, http->stream.next_in, http->stream.avail_in);
+         http->stream.next_in > http->sbuffer)
+        memmove(http->sbuffer, http->stream.next_in, http->stream.avail_in);
 
-      http->stream.next_in = http->dbuffer;
+      http->stream.next_in = http->sbuffer;
 
-      if (buflen > http->data_remaining)
-        buflen = http->data_remaining;
+      if (buflen > (size_t)http->data_remaining)
+        buflen = (size_t)http->data_remaining;
 
-      if (buflen > http->used)
-        buflen = http->used;
+      if (buflen > (size_t)http->used)
+        buflen = (size_t)http->used;
 
       DEBUG_printf(("1httpPeek: Copying %d more bytes of data into "
                    "decompression buffer.", (int)buflen));
 
-      memcpy(http->dbuffer + http->stream.avail_in, http->buffer, buflen);
+      memcpy(http->sbuffer + http->stream.avail_in, http->buffer, buflen);
       http->stream.avail_in += buflen;
       http->used            -= buflen;
       http->data_remaining  -= buflen;
 
       if (http->used > 0)
-        memmove(http->buffer, http->buffer + buflen, http->used);
+        memmove(http->buffer, http->buffer + buflen, (size_t)http->used);
     }
 
     DEBUG_printf(("2httpPeek: length=%d, avail_in=%d", (int)length,
@@ -1866,7 +1811,7 @@ httpPeek(http_t *http,                    /* I - Connection to server */
     }
 
     stream.next_out  = (Bytef *)buffer;
-    stream.avail_out = length;
+    stream.avail_out = (uInt)length;
 
     zerr = inflate(&stream, Z_SYNC_FLUSH);
     inflateEnd(&stream);
@@ -1875,15 +1820,14 @@ httpPeek(http_t *http,                  /* I - Connection to server */
     {
       DEBUG_printf(("2httpPeek: zerr=%d", zerr));
 #ifdef DEBUG
-      http_debug_hex("2httpPeek", (char *)http->dbuffer,
-                    http->stream.avail_in);
+      http_debug_hex("2httpPeek", (char *)http->sbuffer, (int)http->stream.avail_in);
 #endif /* DEBUG */
 
       http->error = EIO;
       return (-1);
     }
 
-    bytes = length - http->stream.avail_out;
+    bytes = (ssize_t)(length - http->stream.avail_out);
 
 #  else
     DEBUG_puts("2httpPeek: No inflateCopy on this platform, httpPeek does not "
@@ -1931,17 +1875,13 @@ httpPeek(http_t *http,                  /* I - Connection to server */
   return (bytes);
 }
 
-/* For OS X 10.8 and earlier */
-ssize_t _httpPeek(http_t *http, char *buffer, size_t length)
-{ return (httpPeek(http, buffer, length)); }
-
 
 /*
  * 'httpPost()' - Send a POST request to the server.
  */
 
 int                                    /* O - Status of call (0 = success) */
-httpPost(http_t     *http,             /* I - Connection to server */
+httpPost(http_t     *http,             /* I - HTTP connection */
          const char *uri)              /* I - URI for post */
 {
   return (http_send(http, HTTP_STATE_POST, uri));
@@ -1955,11 +1895,11 @@ httpPost(http_t     *http,              /* I - Connection to server */
  */
 
 int                                    /* O - Number of bytes written */
-httpPrintf(http_t     *http,           /* I - Connection to server */
+httpPrintf(http_t     *http,           /* I - HTTP connection */
            const char *format,         /* I - printf-style format string */
           ...)                         /* I - Additional args as needed */
 {
-  int          bytes;                  /* Number of bytes to write */
+  ssize_t      bytes;                  /* Number of bytes to write */
   char         buf[16384];             /* Buffer for formatted string */
   va_list      ap;                     /* Variable argument pointer */
 
@@ -1970,10 +1910,10 @@ httpPrintf(http_t     *http,            /* I - Connection to server */
   bytes = vsnprintf(buf, sizeof(buf), format, ap);
   va_end(ap);
 
-  DEBUG_printf(("3httpPrintf: (%d bytes) %s", bytes, buf));
+  DEBUG_printf(("3httpPrintf: (" CUPS_LLFMT " bytes) %s", CUPS_LLCAST bytes, buf));
 
   if (http->data_encoding == HTTP_ENCODING_FIELDS)
-    return (httpWrite2(http, buf, bytes));
+    return ((int)httpWrite2(http, buf, (size_t)bytes));
   else
   {
     if (http->wused)
@@ -1984,7 +1924,7 @@ httpPrintf(http_t     *http,              /* I - Connection to server */
        return (-1);
     }
 
-    return (http_write(http, buf, bytes));
+    return ((int)http_write(http, buf, (size_t)bytes));
   }
 }
 
@@ -1994,7 +1934,7 @@ httpPrintf(http_t     *http,              /* I - Connection to server */
  */
 
 int                                    /* O - Status of call (0 = success) */
-httpPut(http_t     *http,              /* I - Connection to server */
+httpPut(http_t     *http,              /* I - HTTP connection */
         const char *uri)               /* I - URI to put */
 {
   DEBUG_printf(("httpPut(http=%p, uri=\"%s\")", http, uri));
@@ -2012,11 +1952,11 @@ httpPut(http_t     *http,               /* I - Connection to server */
  */
 
 int                                    /* O - Number of bytes read */
-httpRead(http_t *http,                 /* I - Connection to server */
+httpRead(http_t *http,                 /* I - HTTP connection */
          char   *buffer,               /* I - Buffer for data */
         int    length)                 /* I - Maximum number of bytes */
 {
-  return ((int)httpRead2(http, buffer, length));
+  return ((int)httpRead2(http, buffer, (size_t)length));
 }
 
 
@@ -2027,7 +1967,7 @@ httpRead(http_t *http,                    /* I - Connection to server */
  */
 
 ssize_t                                        /* O - Number of bytes read */
-httpRead2(http_t *http,                        /* I - Connection to server */
+httpRead2(http_t *http,                        /* I - HTTP connection */
           char   *buffer,              /* I - Buffer for data */
          size_t length)                /* I - Maximum number of bytes */
 {
@@ -2069,21 +2009,20 @@ httpRead2(http_t *http,                 /* I - Connection to server */
                      (int)http->stream.avail_in, (int)length));
 
        http->stream.next_out  = (Bytef *)buffer;
-       http->stream.avail_out = length;
+       http->stream.avail_out = (uInt)length;
 
        if ((zerr = inflate(&(http->stream), Z_SYNC_FLUSH)) < Z_OK)
        {
          DEBUG_printf(("2httpRead2: zerr=%d", zerr));
 #ifdef DEBUG
-          http_debug_hex("2httpRead2", (char *)http->dbuffer,
-                         http->stream.avail_in);
+          http_debug_hex("2httpRead2", (char *)http->sbuffer, (int)http->stream.avail_in);
 #endif /* DEBUG */
 
          http->error = EIO;
          return (-1);
        }
 
-       bytes = length - http->stream.avail_out;
+       bytes = (ssize_t)(length - http->stream.avail_out);
 
        DEBUG_printf(("2httpRead2: avail_in=%d, avail_out=%d, bytes=%d",
                      http->stream.avail_in, http->stream.avail_out,
@@ -2094,16 +2033,16 @@ httpRead2(http_t *http,                 /* I - Connection to server */
 
       if (bytes == 0)
       {
-        ssize_t buflen = HTTP_MAX_BUFFER - http->stream.avail_in;
+        ssize_t buflen = HTTP_MAX_BUFFER - (ssize_t)http->stream.avail_in;
                                        /* Additional bytes for buffer */
 
         if (buflen > 0)
         {
           if (http->stream.avail_in > 0 &&
-              http->stream.next_in > http->dbuffer)
-            memmove(http->dbuffer, http->stream.next_in, http->stream.avail_in);
+              http->stream.next_in > http->sbuffer)
+            memmove(http->sbuffer, http->stream.next_in, http->stream.avail_in);
 
-         http->stream.next_in = http->dbuffer;
+         http->stream.next_in = http->sbuffer;
 
           DEBUG_printf(("1httpRead2: Reading up to %d more bytes of data into "
                         "decompression buffer.", (int)buflen));
@@ -2111,16 +2050,12 @@ httpRead2(http_t *http,                 /* I - Connection to server */
           if (http->data_remaining > 0)
           {
            if (buflen > http->data_remaining)
-             buflen = http->data_remaining;
+             buflen = (ssize_t)http->data_remaining;
 
-           bytes = http_read_buffered(http,
-                                      (char *)http->dbuffer +
-                                              http->stream.avail_in, buflen);
+           bytes = http_read_buffered(http, (char *)http->sbuffer + http->stream.avail_in, (size_t)buflen);
           }
           else if (http->data_encoding == HTTP_ENCODING_CHUNKED)
-            bytes = http_read_chunk(http,
-                                   (char *)http->dbuffer +
-                                       http->stream.avail_in, buflen);
+            bytes = http_read_chunk(http, (char *)http->sbuffer + http->stream.avail_in, (size_t)buflen);
           else
             bytes = 0;
 
@@ -2133,7 +2068,7 @@ httpRead2(http_t *http,                   /* I - Connection to server */
                         "decompression buffer.", CUPS_LLCAST bytes));
 
           http->data_remaining  -= bytes;
-          http->stream.avail_in += bytes;
+          http->stream.avail_in += (uInt)bytes;
 
          if (http->data_remaining <= 0 &&
              http->data_encoding == HTTP_ENCODING_CHUNKED)
@@ -2232,144 +2167,36 @@ httpRead2(http_t *http,                        /* I - Connection to server */
       http->state = HTTP_STATE_STATUS;
 
     DEBUG_printf(("1httpRead2: End of content, set state to %s.",
-                 http_state_string(http->state)));
+                 httpStateString(http->state)));
   }
 
   return (bytes);
 }
 
 
-#if defined(HAVE_SSL) && defined(HAVE_CDSASSL)
 /*
- * '_httpReadCDSA()' - Read function for the CDSA library.
+ * 'httpReadRequest()' - Read a HTTP request from a connection.
+ *
+ * @since CUPS 1.7/OS X 10.9@
  */
 
-OSStatus                               /* O  - -1 on error, 0 on success */
-_httpReadCDSA(
-    SSLConnectionRef connection,       /* I  - SSL/TLS connection */
-    void             *data,            /* I  - Data buffer */
-    size_t           *dataLength)      /* IO - Number of bytes */
+http_state_t                           /* O - New state of connection */
+httpReadRequest(http_t *http,          /* I - HTTP connection */
+                char   *uri,           /* I - URI buffer */
+               size_t urilen)          /* I - Size of URI buffer */
 {
-  OSStatus     result;                 /* Return value */
-  ssize_t      bytes;                  /* Number of bytes read */
-  http_t       *http;                  /* HTTP connection */
+  char line[4096],                     /* HTTP request line */
+       *req_method,                    /* HTTP request method */
+       *req_uri,                       /* HTTP request URI */
+       *req_version;                   /* HTTP request version number string */
 
 
-  http = (http_t *)connection;
+ /*
+  * Range check input...
+  */
 
-  if (!http->blocking)
-  {
-   /*
-    * Make sure we have data before we read...
-    */
-
-    while (!_httpWait(http, http->wait_value, 0))
-    {
-      if (http->timeout_cb && (*http->timeout_cb)(http, http->timeout_data))
-       continue;
-
-      http->error = ETIMEDOUT;
-      return (-1);
-    }
-  }
-
-  do
-  {
-    bytes = recv(http->fd, data, *dataLength, 0);
-  }
-  while (bytes == -1 && (errno == EINTR || errno == EAGAIN));
-
-  if (bytes == *dataLength)
-  {
-    result = 0;
-  }
-  else if (bytes > 0)
-  {
-    *dataLength = bytes;
-    result = errSSLWouldBlock;
-  }
-  else
-  {
-    *dataLength = 0;
-
-    if (bytes == 0)
-      result = errSSLClosedGraceful;
-    else if (errno == EAGAIN)
-      result = errSSLWouldBlock;
-    else
-      result = errSSLClosedAbort;
-  }
-
-  return (result);
-}
-#endif /* HAVE_SSL && HAVE_CDSASSL */
-
-
-#if defined(HAVE_SSL) && defined(HAVE_GNUTLS)
-/*
- * '_httpReadGNUTLS()' - Read function for the GNU TLS library.
- */
-
-ssize_t                                        /* O - Number of bytes read or -1 on error */
-_httpReadGNUTLS(
-    gnutls_transport_ptr_t ptr,                /* I - Connection to server */
-    void                   *data,      /* I - Buffer */
-    size_t                 length)     /* I - Number of bytes to read */
-{
-  http_t       *http;                  /* HTTP connection */
-  ssize_t      bytes;                  /* Bytes read */
-
-
-  DEBUG_printf(("6_httpReadGNUTLS(ptr=%p, data=%p, length=%d)", ptr, data, (int)length));
-
-  http = (http_t *)ptr;
-
-  if (!http->blocking)
-  {
-   /*
-    * Make sure we have data before we read...
-    */
-
-    while (!_httpWait(http, http->wait_value, 0))
-    {
-      if (http->timeout_cb && (*http->timeout_cb)(http, http->timeout_data))
-       continue;
-
-      http->error = ETIMEDOUT;
-      return (-1);
-    }
-  }
-
-  bytes = recv(http->fd, data, length, 0);
-  DEBUG_printf(("6_httpReadGNUTLS: bytes=%d", (int)bytes));
-  return (bytes);
-}
-#endif /* HAVE_SSL && HAVE_GNUTLS */
-
-
-/*
- * 'httpReadRequest()' - Read a HTTP request from a connection.
- *
- * @since CUPS 1.7/OS X 10.9@
- */
-
-http_state_t                           /* O - New state of connection */
-httpReadRequest(http_t *http,          /* I - HTTP connection */
-                char   *uri,           /* I - URI buffer */
-               size_t urilen)          /* I - Size of URI buffer */
-{
-  char line[4096],                     /* HTTP request line */
-       *req_method,                    /* HTTP request method */
-       *req_uri,                       /* HTTP request URI */
-       *req_version;                   /* HTTP request version number string */
-
-
- /*
-  * 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 ")",
+                http, uri, CUPS_LLCAST urilen));
 
   if (uri)
     *uri = '\0';
@@ -2382,7 +2209,7 @@ httpReadRequest(http_t *http,             /* I - HTTP connection */
   else if (http->state != HTTP_STATE_WAITING)
   {
     DEBUG_printf(("1httpReadRequest: Bad state %s, returning HTTP_STATE_ERROR.",
-                  http_state_string(http->state)));
+                  httpStateString(http->state)));
     return (HTTP_STATE_ERROR);
   }
 
@@ -2430,6 +2257,7 @@ httpReadRequest(http_t *http,             /* I - HTTP connection */
   if (!*req_uri)
   {
     DEBUG_puts("1httpReadRequest: No request URI.");
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No request URI."), 1);
     return (HTTP_STATE_ERROR);
   }
 
@@ -2446,6 +2274,7 @@ httpReadRequest(http_t *http,             /* I - HTTP connection */
   if (!*req_version)
   {
     DEBUG_puts("1httpReadRequest: No request protocol version.");
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No request protocol version."), 1);
     return (HTTP_STATE_ERROR);
   }
 
@@ -2477,11 +2306,12 @@ httpReadRequest(http_t *http,           /* I - HTTP connection */
   else
   {
     DEBUG_printf(("1httpReadRequest: Unknown method \"%s\".", req_method));
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unknown request method."), 1);
     return (HTTP_STATE_UNKNOWN_METHOD);
   }
 
   DEBUG_printf(("1httpReadRequest: Set state to %s.",
-                http_state_string(http->state)));
+                httpStateString(http->state)));
 
   if (!strcmp(req_version, "HTTP/1.0"))
   {
@@ -2496,6 +2326,7 @@ httpReadRequest(http_t *http,             /* I - HTTP connection */
   else
   {
     DEBUG_printf(("1httpReadRequest: Unknown version \"%s\".", req_version));
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unknown request version."), 1);
     return (HTTP_STATE_UNKNOWN_VERSION);
   }
 
@@ -2516,7 +2347,7 @@ httpReadRequest(http_t *http,             /* I - HTTP connection */
  */
 
 int                                    /* O - 0 on success, non-zero on failure */
-httpReconnect(http_t *http)            /* I - Connection to server */
+httpReconnect(http_t *http)            /* I - HTTP connection */
 {
   DEBUG_printf(("httpReconnect(http=%p)", http));
 
@@ -2530,7 +2361,7 @@ httpReconnect(http_t *http)               /* I - Connection to server */
  */
 
 int                                    /* O - 0 on success, non-zero on failure */
-httpReconnect2(http_t *http,           /* I - Connection to server */
+httpReconnect2(http_t *http,           /* I - HTTP connection */
               int    msec,             /* I - Timeout in milliseconds */
               int    *cancel)          /* I - Pointer to "cancel" variable */
 {
@@ -2554,7 +2385,7 @@ httpReconnect2(http_t *http,              /* I - Connection to server */
   if (http->tls)
   {
     DEBUG_puts("2httpReconnect2: Shutting down SSL/TLS...");
-    http_shutdown_ssl(http);
+    _httpTLSStop(http);
   }
 #endif /* HAVE_SSL */
 
@@ -2566,11 +2397,7 @@ httpReconnect2(http_t *http,             /* I - Connection to server */
   {
     DEBUG_printf(("2httpReconnect2: Closing socket %d...", http->fd));
 
-#ifdef WIN32
-    closesocket(http->fd);
-#else
-    close(http->fd);
-#endif /* WIN32 */
+    httpAddrClose(NULL, http->fd);
 
     http->fd = -1;
   }
@@ -2636,19 +2463,15 @@ httpReconnect2(http_t *http,            /* I - Connection to server */
     * Always do encryption via SSL.
     */
 
-    if (http_setup_ssl(http) != 0)
+    if (_httpTLSStart(http) != 0)
     {
-#  ifdef WIN32
-      closesocket(http->fd);
-#  else
-      close(http->fd);
-#  endif /* WIN32 */
+      httpAddrClose(NULL, http->fd);
 
       return (-1);
     }
   }
   else if (http->encryption == HTTP_ENCRYPTION_REQUIRED && !http->tls_upgrade)
-    return (http_upgrade(http));
+    return (http_tls_upgrade(http));
 #endif /* HAVE_SSL */
 
   DEBUG_printf(("1httpReconnect2: Connected to %s:%d...",
@@ -2671,7 +2494,7 @@ httpReconnect2(http_t *http,              /* I - Connection to server */
  */
 
 void
-httpSetAuthString(http_t     *http,    /* I - Connection to server */
+httpSetAuthString(http_t     *http,    /* I - HTTP connection */
                   const char *scheme,  /* I - Auth scheme (NULL to clear it) */
                  const char *data)     /* I - Auth data (NULL for none) */
 {
@@ -2693,10 +2516,10 @@ httpSetAuthString(http_t     *http,     /* I - Connection to server */
     * Set the current authorization string...
     */
 
-    int len = (int)strlen(scheme) + (data ? (int)strlen(data) + 1 : 0) + 1;
+    size_t len = strlen(scheme) + (data ? strlen(data) + 1 : 0) + 1;
     char *temp;
 
-    if (len > (int)sizeof(http->_authstring))
+    if (len > sizeof(http->_authstring))
     {
       if ((temp = malloc(len)) == NULL)
         len = sizeof(http->_authstring);
@@ -2728,7 +2551,7 @@ httpSetAuthString(http_t     *http,       /* I - Connection to server */
  */
 
 int                                            /* O - Status of call (0 = success) */
-httpSetCredentials(http_t      *http,          /* I - Connection to server */
+httpSetCredentials(http_t      *http,          /* I - HTTP connection */
                   cups_array_t *credentials)   /* I - Array of credentials */
 {
   if (!http || cupsArrayCount(credentials) < 1)
@@ -2775,7 +2598,7 @@ httpSetCookie(http_t     *http,           /* I - Connection */
  */
 
 void
-httpSetDefaultField(http_t       *http,        /* I - Connection to server */
+httpSetDefaultField(http_t       *http,        /* I - HTTP connection */
                     http_field_t field,        /* I - Field index */
                    const char   *value)/* I - Value */
 {
@@ -2825,7 +2648,7 @@ httpSetDefaultField(http_t       *http,   /* I - Connection to server */
  */
 
 void
-httpSetExpect(http_t        *http,     /* I - Connection to server */
+httpSetExpect(http_t        *http,     /* I - HTTP connection */
               http_status_t expect)    /* I - HTTP status to expect
                                               (@code HTTP_STATUS_CONTINUE@) */
 {
@@ -2841,7 +2664,7 @@ httpSetExpect(http_t        *http,        /* I - Connection to server */
  */
 
 void
-httpSetField(http_t       *http,       /* I - Connection to server */
+httpSetField(http_t       *http,       /* I - HTTP connection */
              http_field_t field,       /* I - Field index */
             const char   *value)       /* I - Value */
 {
@@ -2943,6 +2766,22 @@ httpSetField(http_t       *http, /* I - Connection to server */
 }
 
 
+/*
+ * 'httpSetKeepAlive()' - Set the current Keep-Alive state of a connection.
+ *
+ * @since CUPS 2.0@
+ */
+
+void
+httpSetKeepAlive(
+    http_t           *http,            /* I - HTTP connection */
+    http_keepalive_t keep_alive)       /* I - New Keep-Alive value */
+{
+  if (http)
+    http->keep_alive = keep_alive;
+}
+
+
 /*
  * 'httpSetLength()' - Set the content-length and content-encoding.
  *
@@ -2950,7 +2789,7 @@ httpSetField(http_t       *http,  /* I - Connection to server */
  */
 
 void
-httpSetLength(http_t *http,            /* I - Connection to server */
+httpSetLength(http_t *http,            /* I - HTTP connection */
               size_t length)           /* I - Length (0 for chunked) */
 {
   DEBUG_printf(("httpSetLength(http=%p, length=" CUPS_LLFMT ")", http,
@@ -2985,7 +2824,7 @@ httpSetLength(http_t *http,               /* I - Connection to server */
 
 void
 httpSetTimeout(
-    http_t            *http,           /* I - Connection to server */
+    http_t            *http,           /* I - HTTP connection */
     double            timeout,         /* I - Number of seconds for timeout,
                                                must be greater than 0 */
     http_timeout_cb_t cb,              /* I - Callback function or NULL */
@@ -3005,12 +2844,35 @@ httpSetTimeout(
 }
 
 
+/*
+ * 'httpShutdown()' - Shutdown one side of an HTTP connection.
+ *
+ * @since CUPS 2.0@
+ */
+
+void
+httpShutdown(http_t *http)             /* I - HTTP connection */
+{
+  if (!http || http->fd < 0)
+    return;
+
+  if (http->tls)
+    _httpTLSStop(http);
+
+#ifdef WIN32
+  shutdown(http->fd, SD_RECEIVE);      /* Microsoft-ism... */
+#else
+  shutdown(http->fd, SHUT_RD);
+#endif /* WIN32 */
+}
+
+
 /*
  * 'httpTrace()' - Send an TRACE request to the server.
  */
 
 int                                    /* O - Status of call (0 = success) */
-httpTrace(http_t     *http,            /* I - Connection to server */
+httpTrace(http_t     *http,            /* I - HTTP connection */
           const char *uri)             /* I - URI for trace */
 {
   return (http_send(http, HTTP_STATE_TRACE, uri));
@@ -3025,7 +2887,7 @@ httpTrace(http_t     *http,               /* I - Connection to server */
  */
 
 int                                    /* O - 1 to continue, 0 to stop */
-_httpUpdate(http_t        *http,       /* I - Connection to server */
+_httpUpdate(http_t        *http,       /* I - HTTP connection */
             http_status_t *status)     /* O - Current HTTP status */
 {
   char         line[32768],            /* Line from connection... */
@@ -3035,7 +2897,7 @@ _httpUpdate(http_t        *http,  /* I - Connection to server */
 
 
   DEBUG_printf(("_httpUpdate(http=%p, status=%p), state=%s", http, status,
-                http_state_string(http->state)));
+                httpStateString(http->state)));
 
  /*
   * Grab a single line from the connection...
@@ -3072,13 +2934,9 @@ _httpUpdate(http_t        *http, /* I - Connection to server */
 #ifdef HAVE_SSL
     if (http->status == HTTP_STATUS_SWITCHING_PROTOCOLS && !http->tls)
     {
-      if (http_setup_ssl(http) != 0)
+      if (_httpTLSStart(http) != 0)
       {
-#  ifdef WIN32
-       closesocket(http->fd);
-#  else
-       close(http->fd);
-#  endif /* WIN32 */
+        httpAddrClose(NULL, http->fd);
 
        *status = http->status = HTTP_STATUS_ERROR;
        return (0);
@@ -3106,7 +2964,7 @@ _httpUpdate(http_t        *http,  /* I - Connection to server */
          http->state ++;
 
          DEBUG_printf(("1_httpUpdate: Set state to %s.",
-                       http_state_string(http->state)));
+                       httpStateString(http->state)));
 
       case HTTP_STATE_POST_SEND :
       case HTTP_STATE_HEAD :
@@ -3179,7 +3037,7 @@ _httpUpdate(http_t        *http,  /* I - Connection to server */
 
       httpSetCookie(http, value);
     }
-    else if ((field = http_field(line)) != HTTP_FIELD_UNKNOWN)
+    else if ((field = httpFieldValue(line)) != HTTP_FIELD_UNKNOWN)
       httpSetField(http, field, value);
 #ifdef DEBUG
     else
@@ -3203,13 +3061,13 @@ _httpUpdate(http_t        *http,        /* I - Connection to server */
  */
 
 http_status_t                          /* O - HTTP status */
-httpUpdate(http_t *http)               /* I - Connection to server */
+httpUpdate(http_t *http)               /* I - HTTP connection */
 {
   http_status_t        status;                 /* Request status */
 
 
   DEBUG_printf(("httpUpdate(http=%p), state=%s", http,
-                http_state_string(http->state)));
+                httpStateString(http->state)));
 
  /*
   * Flush pending data, if any...
@@ -3267,7 +3125,7 @@ httpUpdate(http_t *http)          /* I - Connection to server */
  */
 
 int                                    /* O - 1 if data is available, 0 otherwise */
-_httpWait(http_t *http,                        /* I - Connection to server */
+_httpWait(http_t *http,                        /* I - HTTP connection */
           int    msec,                 /* I - Milliseconds to wait */
          int    usessl)                /* I - Use SSL context? */
 {
@@ -3293,32 +3151,10 @@ _httpWait(http_t *http,                 /* I - Connection to server */
   */
 
 #ifdef HAVE_SSL
-  if (http->tls && usessl)
+  if (http->tls && _httpTLSPending(http))
   {
-#  ifdef HAVE_LIBSSL
-    if (SSL_pending(http->tls))
-    {
-      DEBUG_puts("5_httpWait: Return 1 since there is pending SSL data.");
-      return (1);
-    }
-
-#  elif defined(HAVE_GNUTLS)
-    if (gnutls_record_check_pending(http->tls))
-    {
-      DEBUG_puts("5_httpWait: Return 1 since there is pending SSL data.");
-      return (1);
-    }
-
-#  elif defined(HAVE_CDSASSL)
-    size_t bytes;                      /* Bytes that are available */
-
-    if (!SSLGetBufferedReadSize(http->tls, &bytes) &&
-        bytes > 0)
-    {
-      DEBUG_puts("5_httpWait: Return 1 since there is pending SSL data.");
-      return (1);
-    }
-#  endif /* HAVE_LIBSSL */
+    DEBUG_puts("5_httpWait: Return 1 since there is pending TLS data.");
+    return (1);
   }
 #endif /* HAVE_SSL */
 
@@ -3378,7 +3214,7 @@ _httpWait(http_t *http,                   /* I - Connection to server */
  */
 
 int                                    /* O - 1 if data is available, 0 otherwise */
-httpWait(http_t *http,                 /* I - Connection to server */
+httpWait(http_t *http,                 /* I - HTTP connection */
          int    msec)                  /* I - Milliseconds to wait */
 {
  /*
@@ -3434,11 +3270,11 @@ httpWait(http_t *http,                  /* I - Connection to server */
  */
 
 int                                    /* O - Number of bytes written */
-httpWrite(http_t     *http,            /* I - Connection to server */
+httpWrite(http_t     *http,            /* I - HTTP connection */
           const char *buffer,          /* I - Buffer for data */
          int        length)            /* I - Number of bytes to write */
 {
-  return ((int)httpWrite2(http, buffer, length));
+  return ((int)httpWrite2(http, buffer, (size_t)length));
 }
 
 
@@ -3449,7 +3285,7 @@ httpWrite(http_t     *http,               /* I - Connection to server */
  */
 
 ssize_t                                        /* O - Number of bytes written */
-httpWrite2(http_t     *http,           /* I - Connection to server */
+httpWrite2(http_t     *http,           /* I - HTTP connection */
            const char *buffer,         /* I - Buffer for data */
           size_t     length)           /* I - Number of bytes to write */
 {
@@ -3491,37 +3327,48 @@ httpWrite2(http_t     *http,            /* I - Connection to server */
     }
     else
     {
+      size_t   slen;                   /* Bytes to write */
+      ssize_t  sret;                   /* Bytes written */
+
       http->stream.next_in   = (Bytef *)buffer;
-      http->stream.avail_in  = length;
-      http->stream.next_out  = (Bytef *)http->wbuffer + http->wused;
-      http->stream.avail_out = sizeof(http->wbuffer) - http->wused;
+      http->stream.avail_in  = (uInt)length;
 
       while (deflate(&(http->stream), Z_NO_FLUSH) == Z_OK)
       {
-       http->wused = sizeof(http->wbuffer) - http->stream.avail_out;
+        DEBUG_printf(("1httpWrite2: avail_out=%d", http->stream.avail_out));
 
-        if (http->stream.avail_out == 0)
-        {
-         if (httpFlushWrite(http) < 0)
-         {
-           DEBUG_puts("1httpWrite2: Unable to flush, returning -1.");
-           return (-1);
-         }
+        if (http->stream.avail_out > 0)
+         continue;
+
+       slen = _HTTP_MAX_SBUFFER - http->stream.avail_out;
 
-         http->stream.next_out  = (Bytef *)http->wbuffer;
-         http->stream.avail_out = sizeof(http->wbuffer);
+        DEBUG_printf(("1httpWrite2: Writing intermediate chunk, len=%d", (int)slen));
+
+       if (slen > 0 && http->data_encoding == HTTP_ENCODING_CHUNKED)
+         sret = http_write_chunk(http, (char *)http->sbuffer, slen);
+       else if (slen > 0)
+         sret = http_write(http, (char *)http->sbuffer, slen);
+       else
+         sret = 0;
+
+        if (sret < 0)
+       {
+         DEBUG_puts("1httpWrite2: Unable to write, returning -1.");
+         return (-1);
        }
+
+       http->stream.next_out  = (Bytef *)http->sbuffer;
+       http->stream.avail_out = (uInt)_HTTP_MAX_SBUFFER;
       }
 
-      http->wused = sizeof(http->wbuffer) - http->stream.avail_out;
-      bytes       = length;
+      bytes = (ssize_t)length;
     }
   }
   else
 #endif /* HAVE_LIBZ */
   if (length > 0)
   {
-    if (http->wused && (length + http->wused) > sizeof(http->wbuffer))
+    if (http->wused && (length + (size_t)http->wused) > sizeof(http->wbuffer))
     {
       DEBUG_printf(("2httpWrite2: Flushing buffer (wused=%d, length="
                     CUPS_LLFMT ")", http->wused, CUPS_LLCAST length));
@@ -3529,8 +3376,7 @@ httpWrite2(http_t     *http,              /* I - Connection to server */
       httpFlushWrite(http);
     }
 
-    if ((length + http->wused) <= sizeof(http->wbuffer) &&
-        length < sizeof(http->wbuffer))
+    if ((length + (size_t)http->wused) <= sizeof(http->wbuffer) && length < sizeof(http->wbuffer))
     {
      /*
       * Write to buffer...
@@ -3553,9 +3399,9 @@ httpWrite2(http_t     *http,              /* I - Connection to server */
                     CUPS_LLCAST length));
 
       if (http->data_encoding == HTTP_ENCODING_CHUNKED)
-       bytes = (ssize_t)http_write_chunk(http, buffer, (int)length);
+       bytes = (ssize_t)http_write_chunk(http, buffer, length);
       else
-       bytes = (ssize_t)http_write(http, buffer, (int)length);
+       bytes = (ssize_t)http_write(http, buffer, length);
 
       DEBUG_printf(("2httpWrite2: Wrote " CUPS_LLFMT " bytes...",
                     CUPS_LLCAST bytes));
@@ -3608,13 +3454,14 @@ httpWrite2(http_t     *http,            /* I - Connection to server */
 
     if (http->state == HTTP_STATE_POST_RECV)
       http->state ++;
-    else if (http->state == HTTP_STATE_POST_SEND)
+    else if (http->state == HTTP_STATE_POST_SEND ||
+             http->state == HTTP_STATE_GET_SEND)
       http->state = HTTP_STATE_WAITING;
     else
       http->state = HTTP_STATE_STATUS;
 
     DEBUG_printf(("2httpWrite2: Changed state to %s.",
-                 http_state_string(http->state)));
+                 httpStateString(http->state)));
   }
 
   DEBUG_printf(("1httpWrite2: Returning " CUPS_LLFMT ".", CUPS_LLCAST bytes));
@@ -3623,82 +3470,6 @@ httpWrite2(http_t     *http,             /* I - Connection to server */
 }
 
 
-#if defined(HAVE_SSL) && defined(HAVE_CDSASSL)
-/*
- * '_httpWriteCDSA()' - Write function for the CDSA library.
- */
-
-OSStatus                               /* O  - -1 on error, 0 on success */
-_httpWriteCDSA(
-    SSLConnectionRef connection,       /* I  - SSL/TLS connection */
-    const void       *data,            /* I  - Data buffer */
-    size_t           *dataLength)      /* IO - Number of bytes */
-{
-  OSStatus     result;                 /* Return value */
-  ssize_t      bytes;                  /* Number of bytes read */
-  http_t       *http;                  /* HTTP connection */
-
-
-  http = (http_t *)connection;
-
-  do
-  {
-    bytes = write(http->fd, data, *dataLength);
-  }
-  while (bytes == -1 && (errno == EINTR || errno == EAGAIN));
-
-  if (bytes == *dataLength)
-  {
-    result = 0;
-  }
-  else if (bytes >= 0)
-  {
-    *dataLength = bytes;
-    result = errSSLWouldBlock;
-  }
-  else
-  {
-    *dataLength = 0;
-
-    if (errno == EAGAIN)
-      result = errSSLWouldBlock;
-    else
-      result = errSSLClosedAbort;
-  }
-
-  return (result);
-}
-#endif /* HAVE_SSL && HAVE_CDSASSL */
-
-
-#if defined(HAVE_SSL) && defined(HAVE_GNUTLS)
-/*
- * '_httpWriteGNUTLS()' - Write function for the GNU TLS library.
- */
-
-ssize_t                                        /* O - Number of bytes written or -1 on error */
-_httpWriteGNUTLS(
-    gnutls_transport_ptr_t ptr,                /* I - Connection to server */
-    const void             *data,      /* I - Data buffer */
-    size_t                 length)     /* I - Number of bytes to write */
-{
-  ssize_t bytes;                       /* Bytes written */
-
-
-  DEBUG_printf(("6_httpWriteGNUTLS(ptr=%p, data=%p, length=%d)", ptr, data,
-                (int)length));
-#ifdef DEBUG
-  http_debug_hex("_httpWriteGNUTLS", data, (int)length);
-#endif /* DEBUG */
-
-  bytes = send(((http_t *)ptr)->fd, data, length, 0);
-  DEBUG_printf(("_httpWriteGNUTLS: bytes=%d", (int)bytes));
-
-  return (bytes);
-}
-#endif /* HAVE_SSL && HAVE_GNUTLS */
-
-
 /*
  * 'httpWriteResponse()' - Write a HTTP response to a client connection.
  *
@@ -3734,7 +3505,7 @@ httpWriteResponse(http_t        *http,    /* I - HTTP connection */
 
   if (status >= HTTP_STATUS_BAD_REQUEST && http->keep_alive)
   {
-    http->keep_alive = 0;
+    http->keep_alive = HTTP_KEEPALIVE_OFF;
     httpSetField(http, HTTP_FIELD_KEEP_ALIVE, "");
   }
 
@@ -3753,13 +3524,17 @@ httpWriteResponse(http_t        *http,  /* I - HTTP connection */
   }
 
 #ifdef HAVE_SSL
-  if (status == HTTP_STATUS_UPGRADE_REQUIRED)
+  if (status == HTTP_STATUS_UPGRADE_REQUIRED ||
+      status == HTTP_STATUS_SWITCHING_PROTOCOLS)
   {
     if (!http->fields[HTTP_FIELD_CONNECTION][0])
       httpSetField(http, HTTP_FIELD_CONNECTION, "Upgrade");
 
     if (!http->fields[HTTP_FIELD_UPGRADE][0])
       httpSetField(http, HTTP_FIELD_UPGRADE, "TLS/1.2,TLS/1.1,TLS/1.0");
+
+    if (!http->fields[HTTP_FIELD_CONTENT_LENGTH][0])
+      httpSetField(http, HTTP_FIELD_CONTENT_LENGTH, "0");
   }
 #endif /* HAVE_SSL */
 
@@ -3818,8 +3593,15 @@ httpWriteResponse(http_t        *http,   /* I - HTTP connection */
 
     if (http->cookie)
     {
-      if (httpPrintf(http, "Set-Cookie: %s path=/%s\r\n", http->cookie,
-                     http->tls ? " secure" : "") < 1)
+      if (strchr(http->cookie, ';'))
+      {
+        if (httpPrintf(http, "Set-Cookie: %s\r\n", http->cookie) < 1)
+       {
+         http->status = HTTP_STATUS_ERROR;
+         return (-1);
+       }
+      }
+      else if (httpPrintf(http, "Set-Cookie: %s; path=/; httponly;%s\r\n", http->cookie, http->tls ? " secure;" : "") < 1)
       {
        http->status = HTTP_STATUS_ERROR;
        return (-1);
@@ -3839,7 +3621,8 @@ httpWriteResponse(http_t        *http,    /* I - HTTP connection */
     return (-1);
   }
 
-  if (status == HTTP_STATUS_CONTINUE)
+  if (status == HTTP_STATUS_CONTINUE ||
+      status == HTTP_STATUS_SWITCHING_PROTOCOLS)
   {
    /*
     * Restore the old data_encoding and data_length values...
@@ -3861,7 +3644,7 @@ httpWriteResponse(http_t        *http,    /* I - HTTP connection */
            http->state == HTTP_STATE_STATUS)
   {
     DEBUG_printf(("1httpWriteResponse: Resetting state to HTTP_STATE_WAITING, "
-                  "was %s.", http_state_string(http->state)));
+                  "was %s.", httpStateString(http->state)));
     http->state = HTTP_STATE_WAITING;
   }
   else
@@ -3873,6 +3656,14 @@ httpWriteResponse(http_t        *http,   /* I - HTTP connection */
 
     http_set_length(http);
 
+    if (http->data_encoding == HTTP_ENCODING_LENGTH && http->data_remaining == 0)
+    {
+      DEBUG_printf(("1httpWriteResponse: Resetting state to HTTP_STATE_WAITING, "
+                    "was %s.", httpStateString(http->state)));
+      http->state = HTTP_STATE_WAITING;
+      return (0);
+    }
+
 #ifdef HAVE_LIBZ
    /*
     * Then start any content encoding...
@@ -3882,230 +3673,96 @@ httpWriteResponse(http_t        *http, /* I - HTTP connection */
     http_content_coding_start(http,
                              httpGetField(http, HTTP_FIELD_CONTENT_ENCODING));
 #endif /* HAVE_LIBZ */
+
   }
 
   return (0);
 }
 
 
-#if defined(HAVE_SSL) && defined(HAVE_LIBSSL)
+#ifdef HAVE_LIBZ
 /*
- * 'http_bio_ctrl()' - Control the HTTP connection.
+ * 'http_content_coding_finish()' - Finish doing any content encoding.
  */
 
-static long                            /* O - Result/data */
-http_bio_ctrl(BIO  *h,                 /* I - BIO data */
-              int  cmd,                        /* I - Control command */
-             long arg1,                /* I - First argument */
-             void *arg2)               /* I - Second argument */
+static void
+http_content_coding_finish(
+    http_t *http)                      /* I - HTTP connection */
 {
-  switch (cmd)
-  {
-    default :
-        return (0);
+  int          zerr;                   /* Compression status */
+  Byte         dummy[1];               /* Dummy read buffer */
+  size_t       bytes;                  /* Number of bytes to write */
 
-    case BIO_CTRL_RESET :
-        h->ptr = NULL;
-       return (0);
-
-    case BIO_C_SET_FILE_PTR :
-        h->ptr  = arg2;
-       h->init = 1;
-       return (1);
-
-    case BIO_C_GET_FILE_PTR :
-        if (arg2)
-       {
-         *((void **)arg2) = h->ptr;
-         return (1);
-       }
-       else
-         return (0);
-
-    case BIO_CTRL_DUP :
-    case BIO_CTRL_FLUSH :
-        return (1);
-  }
-}
-
-
-/*
- * 'http_bio_free()' - Free OpenSSL data.
- */
 
-static int                             /* O - 1 on success, 0 on failure */
-http_bio_free(BIO *h)                  /* I - BIO data */
-{
-  if (!h)
-    return (0);
+  DEBUG_printf(("http_content_coding_finish(http=%p)", http));
+  DEBUG_printf(("1http_content_coding_finishing: http->coding=%d", http->coding));
 
-  if (h->shutdown)
+  switch (http->coding)
   {
-    h->init  = 0;
-    h->flags = 0;
-  }
+    case _HTTP_CODING_DEFLATE :
+    case _HTTP_CODING_GZIP :
+        http->stream.next_in  = dummy;
+        http->stream.avail_in = 0;
 
-  return (1);
-}
+        do
+        {
+          zerr  = deflate(&(http->stream), Z_FINISH);
+         bytes = _HTTP_MAX_SBUFFER - http->stream.avail_out;
 
+          if (bytes > 0)
+         {
+           DEBUG_printf(("1http_content_coding_finish: Writing trailing chunk, len=%d", (int)bytes));
 
-/*
- * 'http_bio_new()' - Initialize an OpenSSL BIO structure.
- */
+           if (http->data_encoding == HTTP_ENCODING_CHUNKED)
+             http_write_chunk(http, (char *)http->sbuffer, bytes);
+           else
+             http_write(http, (char *)http->sbuffer, bytes);
+          }
 
-static int                             /* O - 1 on success, 0 on failure */
-http_bio_new(BIO *h)                   /* I - BIO data */
-{
-  if (!h)
-    return (0);
+          http->stream.next_out  = (Bytef *)http->sbuffer;
+          http->stream.avail_out = (uInt)_HTTP_MAX_SBUFFER;
+       }
+        while (zerr == Z_OK);
 
-  h->init  = 0;
-  h->num   = 0;
-  h->ptr   = NULL;
-  h->flags = 0;
+        deflateEnd(&(http->stream));
 
-  return (1);
-}
+        free(http->sbuffer);
+        http->sbuffer = NULL;
 
+        if (http->wused)
+          httpFlushWrite(http);
+        break;
 
-/*
- * 'http_bio_puts()' - Send a string for OpenSSL.
- */
+    case _HTTP_CODING_INFLATE :
+    case _HTTP_CODING_GUNZIP :
+        inflateEnd(&(http->stream));
+        free(http->sbuffer);
+        http->sbuffer = NULL;
+        break;
 
-static int                             /* O - Bytes written */
-http_bio_puts(BIO        *h,           /* I - BIO data */
-              const char *str)         /* I - String to write */
-{
-#ifdef WIN32
-  return (send(((http_t *)h->ptr)->fd, str, (int)strlen(str), 0));
-#else
-  return (send(((http_t *)h->ptr)->fd, str, strlen(str), 0));
-#endif /* WIN32 */
+    default :
+        break;
+  }
+
+  http->coding = _HTTP_CODING_IDENTITY;
 }
 
 
 /*
- * 'http_bio_read()' - Read data for OpenSSL.
+ * 'http_content_coding_start()' - Start doing content encoding.
  */
 
-static int                             /* O - Bytes read */
-http_bio_read(BIO  *h,                 /* I - BIO data */
-              char *buf,               /* I - Buffer */
-             int  size)                /* I - Number of bytes to read */
+static void
+http_content_coding_start(
+    http_t     *http,                  /* I - HTTP connection */
+    const char *value)                 /* I - Value of Content-Encoding */
 {
-  http_t       *http;                  /* HTTP connection */
+  int                  zerr;           /* Error/status */
+  _http_coding_t       coding;         /* Content coding value */
 
 
-  http = (http_t *)h->ptr;
-
-  if (!http->blocking)
-  {
-   /*
-    * Make sure we have data before we read...
-    */
-
-    while (!_httpWait(http, http->wait_value, 0))
-    {
-      if (http->timeout_cb && (*http->timeout_cb)(http, http->timeout_data))
-       continue;
-
-#ifdef WIN32
-      http->error = WSAETIMEDOUT;
-#else
-      http->error = ETIMEDOUT;
-#endif /* WIN32 */
-
-      return (-1);
-    }
-  }
-
-  return (recv(http->fd, buf, size, 0));
-}
-
-
-/*
- * 'http_bio_write()' - Write data for OpenSSL.
- */
-
-static int                             /* O - Bytes written */
-http_bio_write(BIO        *h,          /* I - BIO data */
-               const char *buf,                /* I - Buffer to write */
-              int        num)          /* I - Number of bytes to write */
-{
-  return (send(((http_t *)h->ptr)->fd, buf, num, 0));
-}
-#endif /* HAVE_SSL && HAVE_LIBSSL */
-
-
-#ifdef HAVE_LIBZ
-/*
- * 'http_content_coding_finish()' - Finish doing any content encoding.
- */
-
-static void
-http_content_coding_finish(
-    http_t *http)                      /* I - HTTP connection */
-{
-  int  zerr;                           /* Compression status */
-  Byte dummy[1];                       /* Dummy read buffer */
-
-
-  switch (http->coding)
-  {
-    case _HTTP_CODING_DEFLATE :
-    case _HTTP_CODING_GZIP :
-        http->stream.next_in  = dummy;
-        http->stream.avail_in = 0;
-
-        do
-        {
-          http->stream.next_out  = (Bytef *)http->wbuffer + http->wused;
-          http->stream.avail_out = sizeof(http->wbuffer) - http->wused;
-
-          zerr = deflate(&(http->stream), Z_FINISH);
-
-          http->wused = sizeof(http->wbuffer) - http->stream.avail_out;
-          if (http->wused == sizeof(http->wbuffer))
-            httpFlushWrite(http);
-        }
-        while (zerr == Z_OK);
-
-        deflateEnd(&(http->stream));
-
-        if (http->wused)
-          httpFlushWrite(http);
-        break;
-
-    case _HTTP_CODING_INFLATE :
-    case _HTTP_CODING_GUNZIP :
-        inflateEnd(&(http->stream));
-        free(http->dbuffer);
-        http->dbuffer = NULL;
-        break;
-
-    default :
-        break;
-  }
-
-  http->coding = _HTTP_CODING_IDENTITY;
-}
-
-
-/*
- * 'http_content_coding_start()' - Start doing content encoding.
- */
-
-static void
-http_content_coding_start(
-    http_t     *http,                  /* I - HTTP connection */
-    const char *value)                 /* I - Value of Content-Encoding */
-{
-  int                  zerr;           /* Error/status */
-  _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\")", http,
+                value));
 
   if (http->coding != _HTTP_CODING_IDENTITY)
   {
@@ -4160,6 +3817,13 @@ http_content_coding_start(
         if (http->wused)
           httpFlushWrite(http);
 
+        if ((http->sbuffer = malloc(_HTTP_MAX_SBUFFER)) == NULL)
+        {
+          http->status = HTTP_STATUS_ERROR;
+          http->error  = errno;
+          return;
+        }
+
        /*
         * Window size for compression is 11 bits - optimal based on PWG Raster
         * sample files on pwg.org.  -11 is raw deflate, 27 is gzip, per ZLIB
@@ -4175,11 +3839,14 @@ http_content_coding_start(
           http->error  = zerr == Z_MEM_ERROR ? ENOMEM : EINVAL;
           return;
         }
+
+       http->stream.next_out  = (Bytef *)http->sbuffer;
+       http->stream.avail_out = (uInt)_HTTP_MAX_SBUFFER;
         break;
 
     case _HTTP_CODING_INFLATE :
     case _HTTP_CODING_GUNZIP :
-        if ((http->dbuffer = malloc(HTTP_MAX_BUFFER)) == NULL)
+        if ((http->sbuffer = malloc(_HTTP_MAX_SBUFFER)) == NULL)
         {
           http->status = HTTP_STATUS_ERROR;
           http->error  = errno;
@@ -4195,15 +3862,15 @@ http_content_coding_start(
                                  coding == _HTTP_CODING_INFLATE ? -15 : 31))
                < Z_OK)
         {
-          free(http->dbuffer);
-          http->dbuffer = NULL;
+          free(http->sbuffer);
+          http->sbuffer = NULL;
           http->status  = HTTP_STATUS_ERROR;
           http->error   = zerr == Z_MEM_ERROR ? ENOMEM : EINVAL;
           return;
         }
 
         http->stream.avail_in = 0;
-        http->stream.next_in  = http->dbuffer;
+        http->stream.next_in  = http->sbuffer;
         break;
 
     default :
@@ -4308,12 +3975,6 @@ http_create(
   return (http);
 }
 
-/* For OS X 10.8 and earlier */
-http_t *_httpCreate(const char *host, int port, http_addrlist_t *addrlist,
-                   http_encryption_t encryption, int family)
-{ return (http_create(host, port, addrlist, family, encryption, 1,
-                      _HTTP_MODE_CLIENT)); }
-
 
 #ifdef DEBUG
 /*
@@ -4362,7 +4023,7 @@ http_debug_hex(const char *prefix,        /* I - Prefix for line */
       if (ch < ' ' || ch >= 127)
        ch = '.';
 
-      *ptr++ = ch;
+      *ptr++ = (char)ch;
     }
 
     *ptr = '\0';
@@ -4372,24 +4033,6 @@ http_debug_hex(const char *prefix,       /* I - Prefix for line */
 #endif /* DEBUG */
 
 
-/*
- * 'http_field()' - Return the field index for a field name.
- */
-
-static http_field_t                    /* O - Field index */
-http_field(const char *name)           /* I - String name */
-{
-  int  i;                              /* Looping var */
-
-
-  for (i = 0; i < HTTP_FIELD_MAX; i ++)
-    if (_cups_strcasecmp(name, http_fields[i]) == 0)
-      return ((http_field_t)i);
-
-  return (HTTP_FIELD_UNKNOWN);
-}
-
-
 /*
  * 'http_read()' - Read a buffer from a HTTP connection.
  *
@@ -4398,7 +4041,7 @@ http_field(const char *name)              /* I - String name */
  */
 
 static ssize_t                         /* O - Number of bytes read or -1 on error */
-http_read(http_t *http,                        /* I - Connection to server */
+http_read(http_t *http,                        /* I - HTTP connection */
           char   *buffer,              /* I - Buffer */
           size_t length)               /* I - Maximum bytes to read */
 {
@@ -4426,7 +4069,7 @@ http_read(http_t *http,                   /* I - Connection to server */
   {
 #ifdef HAVE_SSL
     if (http->tls)
-      bytes = http_read_ssl(http, buffer, length);
+      bytes = _httpTLSRead(http, buffer, (int)length);
     else
 #endif /* HAVE_SSL */
     bytes = recv(http->fd, buffer, length, 0);
@@ -4512,7 +4155,7 @@ http_read(http_t *http,                   /* I - Connection to server */
  */
 
 static ssize_t                         /* O - Number of bytes read or -1 on error */
-http_read_buffered(http_t *http,       /* I - Connection to server */
+http_read_buffered(http_t *http,       /* I - HTTP connection */
                    char   *buffer,     /* I - Buffer */
                    size_t length)      /* I - Maximum bytes to read */
 {
@@ -4526,18 +4169,18 @@ http_read_buffered(http_t *http,        /* I - Connection to server */
   if (http->used > 0)
   {
     if (length > (size_t)http->used)
-      bytes = (size_t)http->used;
+      bytes = (ssize_t)http->used;
     else
-      bytes = length;
+      bytes = (ssize_t)length;
 
     DEBUG_printf(("2http_read: Grabbing %d bytes from input buffer.",
                   (int)bytes));
 
-    memcpy(buffer, http->buffer, bytes);
+    memcpy(buffer, http->buffer, (size_t)bytes);
     http->used -= (int)bytes;
 
     if (http->used > 0)
-      memmove(http->buffer, http->buffer + bytes, http->used);
+      memmove(http->buffer, http->buffer + bytes, (size_t)http->used);
   }
   else
     bytes = http_read(http, buffer, length);
@@ -4554,7 +4197,7 @@ http_read_buffered(http_t *http,  /* I - Connection to server */
  */
 
 static ssize_t                         /* O - Number of bytes read or -1 on error */
-http_read_chunk(http_t *http,          /* I - Connection to server */
+http_read_chunk(http_t *http,          /* I - HTTP connection */
                char   *buffer,         /* I - Buffer */
                size_t length)          /* I - Maximum bytes to read */
 {
@@ -4615,103 +4258,12 @@ http_read_chunk(http_t *http,          /* I - Connection to server */
 }
 
 
-#ifdef HAVE_SSL
-/*
- * 'http_read_ssl()' - Read from a SSL/TLS connection.
- */
-
-static int                             /* O - Bytes read */
-http_read_ssl(http_t *http,            /* I - Connection to server */
-             char   *buf,              /* I - Buffer to store data */
-             int    len)               /* I - Length of buffer */
-{
-#  if defined(HAVE_LIBSSL)
-  return (SSL_read((SSL *)(http->tls), buf, len));
-
-#  elif defined(HAVE_GNUTLS)
-  ssize_t      result;                 /* Return value */
-
-
-  result = gnutls_record_recv(http->tls, buf, len);
-
-  if (result < 0 && !errno)
-  {
-   /*
-    * Convert GNU TLS error to errno value...
-    */
-
-    switch (result)
-    {
-      case GNUTLS_E_INTERRUPTED :
-         errno = EINTR;
-         break;
-
-      case GNUTLS_E_AGAIN :
-          errno = EAGAIN;
-          break;
-
-      default :
-          errno = EPIPE;
-          break;
-    }
-
-    result = -1;
-  }
-
-  return ((int)result);
-
-#  elif defined(HAVE_CDSASSL)
-  int          result;                 /* Return value */
-  OSStatus     error;                  /* Error info */
-  size_t       processed;              /* Number of bytes processed */
-
-
-  error = SSLRead(http->tls, buf, len, &processed);
-  DEBUG_printf(("6http_read_ssl: error=%d, processed=%d", (int)error,
-                (int)processed));
-  switch (error)
-  {
-    case 0 :
-       result = (int)processed;
-       break;
-
-    case errSSLWouldBlock :
-       if (processed)
-         result = (int)processed;
-       else
-       {
-         result = -1;
-         errno  = EINTR;
-       }
-       break;
-
-    case errSSLClosedGraceful :
-    default :
-       if (processed)
-         result = (int)processed;
-       else
-       {
-         result = -1;
-         errno  = EPIPE;
-       }
-       break;
-  }
-
-  return (result);
-
-#  elif defined(HAVE_SSPISSL)
-  return _sspiRead((_sspi_struct_t*) http->tls, buf, len);
-#  endif /* HAVE_LIBSSL */
-}
-#endif /* HAVE_SSL */
-
-
 /*
  * 'http_send()' - Send a request with all fields and the trailing blank line.
  */
 
 static int                             /* O - 0 on success, non-zero on error */
-http_send(http_t       *http,          /* I - Connection to server */
+http_send(http_t       *http,          /* I - HTTP connection */
           http_state_t request,                /* I - Request code */
          const char   *uri)            /* I - URI */
 {
@@ -4893,45 +4445,6 @@ http_send(http_t       *http,            /* I - Connection to server */
 }
 
 
-#ifdef HAVE_SSL
-#  if defined(HAVE_CDSASSL)
-/*
- * 'http_set_credentials()' - Set the SSL/TLS credentials.
- */
-
-static int                             /* O - Status of connection */
-http_set_credentials(http_t *http)     /* I - Connection to server */
-{
-  _cups_globals_t *cg = _cupsGlobals();        /* Pointer to library globals */
-  OSStatus             error = 0;      /* Error code */
-  http_tls_credentials_t credentials = NULL;
-                                       /* TLS credentials */
-
-
-  DEBUG_printf(("7http_set_credentials(%p)", http));
-
- /*
-  * Prefer connection specific credentials...
-  */
-
-  if ((credentials = http->tls_credentials) == NULL)
-    credentials = cg->tls_credentials;
-
-  if (credentials)
-  {
-    error = SSLSetCertificate(http->tls, credentials);
-    DEBUG_printf(("4http_set_credentials: SSLSetCertificate, error=%d",
-                 (int)error));
-  }
-  else
-    DEBUG_puts("4http_set_credentials: No credentials to set.");
-
-  return (error);
-}
-#  endif /* HAVE_CDSASSL */
-#endif /* HAVE_SSL */
-
-
 /*
  * 'http_set_length()' - Set the data_encoding and data_remaining values.
  */
@@ -4943,7 +4456,7 @@ http_set_length(http_t *http)             /* I - Connection */
 
 
   DEBUG_printf(("http_set_length(http=%p) mode=%d state=%s", http, http->mode,
-                http_state_string(http->state)));
+                httpStateString(http->state)));
 
   if ((remaining = httpGetLength2(http)) >= 0)
   {
@@ -4976,7 +4489,7 @@ http_set_length(http_t *http)             /* I - Connection */
     http->data_remaining = remaining;
 
     if (remaining <= INT_MAX)
-      http->_data_remaining = remaining;
+      http->_data_remaining = (int)remaining;
     else
       http->_data_remaining = INT_MAX;
   }
@@ -5016,7 +4529,7 @@ http_set_timeout(int    fd,               /* I - File descriptor */
  */
 
 static void
-http_set_wait(http_t *http)            /* I - Connection to server */
+http_set_wait(http_t *http)            /* I - HTTP connection */
 {
   if (http->blocking)
   {
@@ -5032,521 +4545,17 @@ http_set_wait(http_t *http)            /* I - Connection to server */
 
 #ifdef HAVE_SSL
 /*
- * 'http_setup_ssl()' - Set up SSL/TLS support on a connection.
- */
-
-static int                             /* O - 0 on success, -1 on failure */
-http_setup_ssl(http_t *http)           /* I - Connection to server */
-{
-  char                 hostname[256],  /* Hostname */
-                       *hostptr;       /* Pointer into hostname */
-
-#  ifdef HAVE_LIBSSL
-  SSL_CTX              *context;       /* Context for encryption */
-  BIO                  *bio;           /* BIO data */
-  const char           *message = NULL;/* Error message */
-#  elif defined(HAVE_GNUTLS)
-  int                  status;         /* Status of handshake */
-  gnutls_certificate_client_credentials *credentials;
-                                       /* TLS credentials */
-#  elif defined(HAVE_CDSASSL)
-  _cups_globals_t      *cg = _cupsGlobals();
-                                       /* Pointer to library globals */
-  OSStatus             error;          /* Error code */
-  const char           *message = NULL;/* Error message */
-  cups_array_t         *credentials;   /* Credentials array */
-  cups_array_t         *names;         /* CUPS distinguished names */
-  CFArrayRef           dn_array;       /* CF distinguished names array */
-  CFIndex              count;          /* Number of credentials */
-  CFDataRef            data;           /* Certificate data */
-  int                  i;              /* Looping var */
-  http_credential_t    *credential;    /* Credential data */
-#  elif defined(HAVE_SSPISSL)
-  TCHAR                        username[256];  /* Username returned from GetUserName() */
-  TCHAR                        commonName[256];/* Common name for certificate */
-  DWORD                        dwSize;         /* 32 bit size */
-#  endif /* HAVE_LIBSSL */
-
-
-  DEBUG_printf(("7http_setup_ssl(http=%p)", http));
-
- /*
-  * Get the hostname to use for SSL...
-  */
-
-  if (httpAddrLocalhost(http->hostaddr))
-  {
-    strlcpy(hostname, "localhost", sizeof(hostname));
-  }
-  else
-  {
-   /*
-    * Otherwise make sure the hostname we have does not end in a trailing dot.
-    */
-
-    strlcpy(hostname, http->hostname, sizeof(hostname));
-    if ((hostptr = hostname + strlen(hostname) - 1) >= hostname &&
-        *hostptr == '.')
-      *hostptr = '\0';
-  }
-
-#  ifdef HAVE_LIBSSL
-  context = SSL_CTX_new(SSLv23_client_method());
-
-  SSL_CTX_set_options(context, SSL_OP_NO_SSLv2); /* Only use SSLv3 or TLS */
-
-  bio = BIO_new(_httpBIOMethods());
-  BIO_ctrl(bio, BIO_C_SET_FILE_PTR, 0, (char *)http);
-
-  http->tls = SSL_new(context);
-  SSL_set_bio(http->tls, bio, bio);
-
-#   ifdef HAVE_SSL_SET_TLSEXT_HOST_NAME
-  SSL_set_tlsext_host_name(http->tls, hostname);
-#   endif /* HAVE_SSL_SET_TLSEXT_HOST_NAME */
-
-  if (SSL_connect(http->tls) != 1)
-  {
-    unsigned long      error;  /* Error code */
-
-    while ((error = ERR_get_error()) != 0)
-    {
-      message = ERR_error_string(error, NULL);
-      DEBUG_printf(("8http_setup_ssl: %s", message));
-    }
-
-    SSL_CTX_free(context);
-    SSL_free(http->tls);
-    http->tls = NULL;
-
-#    ifdef WIN32
-    http->error  = WSAGetLastError();
-#    else
-    http->error  = errno;
-#    endif /* WIN32 */
-    http->status = HTTP_STATUS_ERROR;
-
-    if (!message)
-      message = _("Unable to establish a secure connection to host.");
-
-    _cupsSetError(IPP_STATUS_ERROR_CUPS_PKI, message, 1);
-
-    return (-1);
-  }
-
-#  elif defined(HAVE_GNUTLS)
-  credentials = (gnutls_certificate_client_credentials *)
-                    malloc(sizeof(gnutls_certificate_client_credentials));
-  if (credentials == NULL)
-  {
-    DEBUG_printf(("8http_setup_ssl: Unable to allocate credentials: %s",
-                  strerror(errno)));
-    http->error  = errno;
-    http->status = HTTP_STATUS_ERROR;
-    _cupsSetHTTPError(HTTP_STATUS_ERROR);
-
-    return (-1);
-  }
-
-  gnutls_certificate_allocate_credentials(credentials);
-
-  gnutls_init(&http->tls, GNUTLS_CLIENT);
-  gnutls_set_default_priority(http->tls);
-  gnutls_server_name_set(http->tls, GNUTLS_NAME_DNS, hostname,
-                         strlen(hostname));
-  gnutls_credentials_set(http->tls, GNUTLS_CRD_CERTIFICATE, *credentials);
-  gnutls_transport_set_ptr(http->tls, (gnutls_transport_ptr_t)http);
-  gnutls_transport_set_pull_function(http->tls, _httpReadGNUTLS);
-  gnutls_transport_set_push_function(http->tls, _httpWriteGNUTLS);
-
-  while ((status = gnutls_handshake(http->tls)) != GNUTLS_E_SUCCESS)
-  {
-    DEBUG_printf(("8http_setup_ssl: gnutls_handshake returned %d (%s)",
-                  status, gnutls_strerror(status)));
-
-    if (gnutls_error_is_fatal(status))
-    {
-      http->error  = EIO;
-      http->status = HTTP_STATUS_ERROR;
-
-      _cupsSetError(IPP_STATUS_ERROR_CUPS_PKI, gnutls_strerror(status), 0);
-
-      gnutls_deinit(http->tls);
-      gnutls_certificate_free_credentials(*credentials);
-      free(credentials);
-      http->tls = NULL;
-
-      return (-1);
-    }
-  }
-
-  http->tls_credentials = credentials;
-
-#  elif defined(HAVE_CDSASSL)
-  if ((http->tls = SSLCreateContext(kCFAllocatorDefault, kSSLClientSide,
-                                    kSSLStreamType)) == NULL)
-  {
-    DEBUG_puts("4http_setup_ssl: SSLCreateContext failed.");
-    http->error  = errno = ENOMEM;
-    http->status = HTTP_STATUS_ERROR;
-    _cupsSetHTTPError(HTTP_STATUS_ERROR);
-
-    return (-1);
-  }
-
-  error = SSLSetConnection(http->tls, http);
-  DEBUG_printf(("4http_setup_ssl: SSLSetConnection, error=%d", (int)error));
-
-  if (!error)
-  {
-    error = SSLSetIOFuncs(http->tls, _httpReadCDSA, _httpWriteCDSA);
-    DEBUG_printf(("4http_setup_ssl: SSLSetIOFuncs, error=%d", (int)error));
-  }
-
-  if (!error)
-  {
-    error = SSLSetSessionOption(http->tls, kSSLSessionOptionBreakOnServerAuth,
-                                true);
-    DEBUG_printf(("4http_setup_ssl: SSLSetSessionOption, error=%d",
-                  (int)error));
-  }
-
-  if (!error)
-  {
-    if (cg->client_cert_cb)
-    {
-      error = SSLSetSessionOption(http->tls,
-                                 kSSLSessionOptionBreakOnCertRequested, true);
-      DEBUG_printf(("4http_setup_ssl: kSSLSessionOptionBreakOnCertRequested, "
-                    "error=%d", (int)error));
-    }
-    else
-    {
-      error = http_set_credentials(http);
-      DEBUG_printf(("4http_setup_ssl: http_set_credentials, error=%d",
-                    (int)error));
-    }
-  }
-
- /*
-  * Let the server know which hostname/domain we are trying to connect to
-  * in case it wants to serve up a certificate with a matching common name.
-  */
-
-  if (!error)
-  {
-    error = SSLSetPeerDomainName(http->tls, hostname, strlen(hostname));
-
-    DEBUG_printf(("4http_setup_ssl: SSLSetPeerDomainName, error=%d",
-                  (int)error));
-  }
-
-  if (!error)
-  {
-    int done = 0;                      /* Are we done yet? */
-
-    while (!error && !done)
-    {
-      error = SSLHandshake(http->tls);
-
-      DEBUG_printf(("4http_setup_ssl: SSLHandshake returned %d.", (int)error));
-
-      switch (error)
-      {
-       case noErr :
-           done = 1;
-           break;
-
-       case errSSLWouldBlock :
-           error = noErr;              /* Force a retry */
-           usleep(1000);               /* in 1 millisecond */
-           break;
-
-       case errSSLServerAuthCompleted :
-           error = 0;
-           if (cg->server_cert_cb)
-           {
-             error = httpCopyCredentials(http, &credentials);
-             if (!error)
-             {
-               error = (cg->server_cert_cb)(http, http->tls, credentials,
-                                            cg->server_cert_data);
-               httpFreeCredentials(credentials);
-             }
-
-             DEBUG_printf(("4http_setup_ssl: Server certificate callback "
-                           "returned %d.", (int)error));
-           }
-           break;
-
-       case errSSLClientCertRequested :
-           error = 0;
-
-           if (cg->client_cert_cb)
-           {
-             names = NULL;
-             if (!(error = SSLCopyDistinguishedNames(http->tls, &dn_array)) &&
-                 dn_array)
-             {
-               if ((names = cupsArrayNew(NULL, NULL)) != NULL)
-               {
-                 for (i = 0, count = CFArrayGetCount(dn_array); i < count; i++)
-                 {
-                   data = (CFDataRef)CFArrayGetValueAtIndex(dn_array, i);
-
-                   if ((credential = malloc(sizeof(*credential))) != NULL)
-                   {
-                     credential->datalen = CFDataGetLength(data);
-                     if ((credential->data = malloc(credential->datalen)))
-                     {
-                       memcpy((void *)credential->data, CFDataGetBytePtr(data),
-                              credential->datalen);
-                       cupsArrayAdd(names, credential);
-                     }
-                     else
-                       free(credential);
-                   }
-                 }
-               }
-
-               CFRelease(dn_array);
-             }
-
-             if (!error)
-             {
-               error = (cg->client_cert_cb)(http, http->tls, names,
-                                            cg->client_cert_data);
-
-               DEBUG_printf(("4http_setup_ssl: Client certificate callback "
-                             "returned %d.", (int)error));
-             }
-
-             httpFreeCredentials(names);
-           }
-           break;
-
-       case errSSLUnknownRootCert :
-           message = _("Unable to establish a secure connection to host "
-                       "(untrusted certificate).");
-           break;
-
-       case errSSLNoRootCert :
-           message = _("Unable to establish a secure connection to host "
-                       "(self-signed certificate).");
-           break;
-
-       case errSSLCertExpired :
-           message = _("Unable to establish a secure connection to host "
-                       "(expired certificate).");
-           break;
-
-       case errSSLCertNotYetValid :
-           message = _("Unable to establish a secure connection to host "
-                       "(certificate not yet valid).");
-           break;
-
-       case errSSLHostNameMismatch :
-           message = _("Unable to establish a secure connection to host "
-                       "(host name mismatch).");
-           break;
-
-       case errSSLXCertChainInvalid :
-           message = _("Unable to establish a secure connection to host "
-                       "(certificate chain invalid).");
-           break;
-
-       case errSSLConnectionRefused :
-           message = _("Unable to establish a secure connection to host "
-                       "(peer dropped connection before responding).");
-           break;
-
-       default :
-           break;
-      }
-    }
-  }
-
-  if (error)
-  {
-    http->error  = error;
-    http->status = HTTP_STATUS_ERROR;
-    errno        = ECONNREFUSED;
-
-    CFRelease(http->tls);
-    http->tls = NULL;
-
-   /*
-    * If an error string wasn't set by the callbacks use a generic one...
-    */
-
-    if (!message)
-#ifdef HAVE_CSSMERRORSTRING
-      message = cssmErrorString(error);
-#else
-      message = _("Unable to establish a secure connection to host.");
-#endif /* HAVE_CSSMERRORSTRING */
-
-    _cupsSetError(IPP_STATUS_ERROR_CUPS_PKI, message, 1);
-
-    return (-1);
-  }
-
-#  elif defined(HAVE_SSPISSL)
-  http->tls = _sspiAlloc();
-
-  if (!http->tls)
-  {
-    DEBUG_puts("8http_setup_ssl: Unable to allocate SSPI data.");
-    _cupsSetHTTPError(HTTP_STATUS_ERROR);
-    return (-1);
-  }
-
-  http->tls->sock = http->fd;
-  dwSize          = sizeof(username) / sizeof(TCHAR);
-  GetUserName(username, &dwSize);
-  _sntprintf_s(commonName, sizeof(commonName) / sizeof(TCHAR),
-               sizeof(commonName) / sizeof(TCHAR), TEXT("CN=%s"), username);
-
-  DEBUG_printf(("8http_setup_ssl: commonName=\"%s\"", commonName));
-
-  if (!_sspiGetCredentials(http->tls, L"ClientContainer", commonName, FALSE))
-  {
-    DEBUG_puts("8http_setup_ssl: _sspiGetCredentials failed.");
-
-    _sspiFree(http->tls);
-    http->tls = NULL;
-
-    http->error  = EIO;
-    http->status = HTTP_STATUS_ERROR;
-
-    _cupsSetError(IPP_STATUS_ERROR_CUPS_PKI,
-                  _("Unable to establish a secure connection to host."), 1);
-
-    return (-1);
-  }
-
-  _sspiSetAllowsAnyRoot(http->tls, TRUE);
-  _sspiSetAllowsExpiredCerts(http->tls, TRUE);
-
-  if (!_sspiConnect(http->tls, hostname))
-  {
-    DEBUG_printf(("8http_setup_ssl: _sspiConnect failed for \"%s\".", hostname));
-
-    _sspiFree(http->tls);
-    http->tls = NULL;
-
-    http->error  = EIO;
-    http->status = HTTP_STATUS_ERROR;
-
-    _cupsSetError(IPP_STATUS_ERROR_CUPS_PKI,
-                  _("Unable to establish a secure connection to host."), 1);
-
-    return (-1);
-  }
-#  endif /* HAVE_CDSASSL */
-
-  return (0);
-}
-
-
-/*
- * 'http_shutdown_ssl()' - Shut down SSL/TLS on a connection.
- */
-
-static void
-http_shutdown_ssl(http_t *http)                /* I - Connection to server */
-{
-#  ifdef HAVE_LIBSSL
-  SSL_CTX      *context;               /* Context for encryption */
-
-  context = SSL_get_SSL_CTX(http->tls);
-
-  SSL_shutdown(http->tls);
-  SSL_CTX_free(context);
-  SSL_free(http->tls);
-
-#  elif defined(HAVE_GNUTLS)
-  gnutls_certificate_client_credentials *credentials;
-                                       /* TLS credentials */
-
-  credentials = (gnutls_certificate_client_credentials *)(http->tls_credentials);
-
-  gnutls_bye(http->tls, GNUTLS_SHUT_RDWR);
-  gnutls_deinit(http->tls);
-  gnutls_certificate_free_credentials(*credentials);
-  free(credentials);
-
-#  elif defined(HAVE_CDSASSL)
-  while (SSLClose(http->tls) == errSSLWouldBlock)
-    usleep(1000);
-
-  CFRelease(http->tls);
-
-  if (http->tls_credentials)
-    CFRelease(http->tls_credentials);
-
-#  elif defined(HAVE_SSPISSL)
-  _sspiFree(http->tls);
-#  endif /* HAVE_LIBSSL */
-
-  http->tls             = NULL;
-  http->tls_credentials = NULL;
-}
-#endif /* HAVE_SSL */
-
-
-#ifdef DEBUG
-/*
- * 'http_state_string()' - Return the string associated with a given HTTP state.
- */
-
-static const char *                    /* O - State string */
-http_state_string(http_state_t state)  /* I - HTTP state */
-{
-  static char buffer[255];             /* Unknown value buffer */
-  static const char * const states[] = /* State strings */
-  {
-    "HTTP_STATE_ERROR",
-    "HTTP_STATE_WAITING",
-    "HTTP_STATE_OPTIONS",
-    "HTTP_STATE_GET",
-    "HTTP_STATE_GET_SEND",
-    "HTTP_STATE_HEAD",
-    "HTTP_STATE_POST",
-    "HTTP_STATE_POST_RECV",
-    "HTTP_STATE_POST_SEND",
-    "HTTP_STATE_PUT",
-    "HTTP_STATE_PUT_RECV",
-    "HTTP_STATE_DELETE",
-    "HTTP_STATE_TRACE",
-    "HTTP_STATE_CONNECT",
-    "HTTP_STATE_STATUS",
-    "HTTP_STATE_UNKNOWN_METHOD",
-    "HTTP_STATE_UNKNOWN_VERSION"
-  };
-
-  if (state >= HTTP_STATE_ERROR && state <= HTTP_STATE_UNKNOWN_VERSION)
-    return (states[state - HTTP_STATE_ERROR]);
-
-  snprintf(buffer, sizeof(buffer), "??? %d ???", (int)state);
-  return (buffer);
-}
-#endif /* DEBUG */
-
-
-#ifdef HAVE_SSL
-/*
- * 'http_upgrade()' - Force upgrade to TLS encryption.
+ * 'http_tls_upgrade()' - Force upgrade to TLS encryption.
  */
 
 static int                             /* O - Status of connection */
-http_upgrade(http_t *http)             /* I - Connection to server */
+http_tls_upgrade(http_t *http)         /* I - HTTP connection */
 {
   int          ret;                    /* Return value */
   http_t       myhttp;                 /* Local copy of HTTP data */
 
 
-  DEBUG_printf(("7http_upgrade(%p)", http));
+  DEBUG_printf(("7http_tls_upgrade(%p)", http));
 
  /*
   * Flush the connection to make sure any previous "Upgrade" message
@@ -5606,13 +4615,10 @@ http_upgrade(http_t *http)              /* I - Connection to server */
     * Server does not support HTTP upgrade...
     */
 
-    DEBUG_puts("8http_upgrade: Server does not support HTTP upgrade!");
+    DEBUG_puts("8http_tls_upgrade: Server does not support HTTP upgrade!");
 
-#  ifdef WIN32
-    closesocket(http->fd);
-#  else
-    close(http->fd);
-#  endif
+    _cupsSetError(IPP_STATUS_ERROR_CUPS_PKI, _("Encryption is not supported."), 1);
+    httpAddrClose(NULL, http->fd);
 
     http->fd = -1;
 
@@ -5629,7 +4635,7 @@ http_upgrade(http_t *http)                /* I - Connection to server */
  */
 
 static ssize_t                         /* O - Number of bytes written */
-http_write(http_t     *http,           /* I - Connection to server */
+http_write(http_t     *http,           /* I - HTTP connection */
            const char *buffer,         /* I - Buffer for data */
           size_t     length)           /* I - Number of bytes to write */
 {
@@ -5705,7 +4711,7 @@ http_write(http_t     *http,              /* I - Connection to server */
 
 #ifdef HAVE_SSL
     if (http->tls)
-      bytes = http_write_ssl(http, buffer, length);
+      bytes = _httpTLSWrite(http, buffer, (int)length);
     else
 #endif /* HAVE_SSL */
     bytes = send(http->fd, buffer, length, 0);
@@ -5759,11 +4765,11 @@ http_write(http_t     *http,            /* I - Connection to server */
 
     buffer += bytes;
     tbytes += bytes;
-    length -= bytes;
+    length -= (size_t)bytes;
   }
 
 #ifdef DEBUG
-  http_debug_hex("http_write", buffer - tbytes, tbytes);
+  http_debug_hex("http_write", buffer - tbytes, (int)tbytes);
 #endif /* DEBUG */
 
   DEBUG_printf(("3http_write: Returning " CUPS_LLFMT ".", CUPS_LLCAST tbytes));
@@ -5777,7 +4783,7 @@ http_write(http_t     *http,              /* I - Connection to server */
  */
 
 static ssize_t                         /* O - Number bytes written */
-http_write_chunk(http_t     *http,     /* I - Connection to server */
+http_write_chunk(http_t     *http,     /* I - HTTP connection */
                  const char *buffer,   /* I - Buffer to write */
                 size_t        length)  /* I - Length of buffer */
 {
@@ -5815,96 +4821,6 @@ http_write_chunk(http_t     *http,       /* I - Connection to server */
 }
 
 
-#ifdef HAVE_SSL
-/*
- * 'http_write_ssl()' - Write to a SSL/TLS connection.
- */
-
-static int                             /* O - Bytes written */
-http_write_ssl(http_t     *http,       /* I - Connection to server */
-              const char *buf,         /* I - Buffer holding data */
-              int        len)          /* I - Length of buffer */
-{
-  ssize_t      result;                 /* Return value */
-
-
-  DEBUG_printf(("2http_write_ssl(http=%p, buf=%p, len=%d)", http, buf, len));
-
-#  if defined(HAVE_LIBSSL)
-  result = SSL_write((SSL *)(http->tls), buf, len);
-
-#  elif defined(HAVE_GNUTLS)
-  result = gnutls_record_send(http->tls, buf, len);
-
-  if (result < 0 && !errno)
-  {
-   /*
-    * Convert GNU TLS error to errno value...
-    */
-
-    switch (result)
-    {
-      case GNUTLS_E_INTERRUPTED :
-         errno = EINTR;
-         break;
-
-      case GNUTLS_E_AGAIN :
-          errno = EAGAIN;
-          break;
-
-      default :
-          errno = EPIPE;
-          break;
-    }
-
-    result = -1;
-  }
-
-#  elif defined(HAVE_CDSASSL)
-  OSStatus     error;                  /* Error info */
-  size_t       processed;              /* Number of bytes processed */
-
-
-  error = SSLWrite(http->tls, buf, len, &processed);
-
-  switch (error)
-  {
-    case 0 :
-       result = (int)processed;
-       break;
-
-    case errSSLWouldBlock :
-       if (processed)
-         result = (int)processed;
-       else
-       {
-         result = -1;
-         errno  = EINTR;
-       }
-       break;
-
-    case errSSLClosedGraceful :
-    default :
-       if (processed)
-         result = (int)processed;
-       else
-       {
-         result = -1;
-         errno  = EPIPE;
-       }
-       break;
-  }
-#  elif defined(HAVE_SSPISSL)
-  return _sspiWrite((_sspi_struct_t *)http->tls, (void *)buf, len);
-#  endif /* HAVE_LIBSSL */
-
-  DEBUG_printf(("3http_write_ssl: Returning %d.", (int)result));
-
-  return ((int)result);
-}
-#endif /* HAVE_SSL */
-
-
 /*
- * End of "$Id: http.c 11761 2014-03-28 13:04:33Z msweet $".
+ * End of "$Id: http.c 12034 2014-07-16 19:37:34Z msweet $".
  */
index f9c83a88e8aa1486f565182378359ddc206af329..bce03ca8ec40ac85581be0ab7ea4f945eee95e25 100644 (file)
@@ -1,18 +1,18 @@
 /*
- * "$Id: http.h 11085 2013-07-03 13:53:05Z msweet $"
+ * "$Id: http.h 11850 2014-05-07 23:12:48Z msweet $"
  *
- *   Hyper-Text Transport Protocol definitions for CUPS.
+ * Hyper-Text Transport Protocol definitions for CUPS.
  *
- *   Copyright 2007-2013 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.
  */
 
 #ifndef _CUPS_HTTP_H_
@@ -87,8 +87,6 @@ extern "C" {
 #    define s6_addr32  _S6_un._S6_u32
 #  elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)|| defined(__DragonFly__)
 #    define s6_addr32  __u6_addr.__u6_addr32
-#  elif defined(__osf__)
-#    define s6_addr32  s6_un.sa6_laddr
 #  elif defined(WIN32)
 /*
  * Windows only defines byte and 16-bit word members of the union and
@@ -344,6 +342,16 @@ typedef enum http_status_e         /**** HTTP status codes ****/
 #  endif /* !_CUPS_NO_DEPRECATED */
 } http_status_t;
 
+typedef enum http_trust_e              /**** Level of trust for credentials @since CUPS 2.0@ */
+{
+  HTTP_TRUST_OK = 0,                   /* Credentials are OK/trusted */
+  HTTP_TRUST_INVALID,                  /* Credentials are invalid */
+  HTTP_TRUST_CHANGED,                  /* Credentials have changed */
+  HTTP_TRUST_EXPIRED,                  /* Credentials are expired */
+  HTTP_TRUST_RENEWED,                  /* Credentials have been renewed */
+  HTTP_TRUST_UNKNOWN,                  /* Credentials are unknown/new */
+} http_trust_t;
+
 typedef enum http_uri_status_e         /**** URI separation status @since CUPS 1.2@ ****/
 {
   HTTP_URI_STATUS_OVERFLOW = -8,       /* URI buffer for httpAssembleURI is too small */
@@ -585,7 +593,7 @@ extern int          httpReconnect2(http_t *http, int msec, int *cancel)
                                       _CUPS_API_1_6;
 
 
-/**** New in CUPS 1.7 ****/
+/**** New in CUPS 1.7/OS X 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;
@@ -612,6 +620,31 @@ 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 */
+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;
+extern int             httpCredentialsAreValidForName(cups_array_t *credentials, const char *common_name);
+extern time_t          httpCredentialsGetExpiration(cups_array_t *credentials) _CUPS_API_2_0;
+extern http_trust_t    httpCredentialsGetTrust(cups_array_t *credentials, const char *common_name) _CUPS_API_2_0;
+extern size_t          httpCredentialsString(cups_array_t *credentials, char *buffer, size_t bufsize) _CUPS_API_2_0;
+extern http_field_t    httpFieldValue(const char *name) _CUPS_API_2_0;
+extern time_t          httpGetActivity(http_t *http) _CUPS_API_2_0;
+extern http_addr_t     *httpGetAddress(http_t *http) _CUPS_API_2_0;
+extern http_encryption_t httpGetEncryption(http_t *http) _CUPS_API_2_0;
+extern http_keepalive_t        httpGetKeepAlive(http_t *http) _CUPS_API_2_0;
+extern size_t          httpGetPending(http_t *http) _CUPS_API_2_0;
+extern size_t          httpGetReady(http_t *http) _CUPS_API_2_0;
+extern size_t          httpGetRemaining(http_t *http) _CUPS_API_2_0;
+extern int             httpIsChunked(http_t *http) _CUPS_API_2_0;
+extern int             httpIsEncrypted(http_t *http) _CUPS_API_2_0;
+extern int             httpLoadCredentials(const char *path, cups_array_t **credentials, const char *common_name) _CUPS_API_2_0;
+extern const char      *httpResolveHostname(http_t *http, char *buffer, size_t bufsize) _CUPS_API_2_0;
+extern int             httpSaveCredentials(const char *path, cups_array_t *credentials, const char *common_name) _CUPS_API_2_0;
+extern void            httpSetKeepAlive(http_t *http, http_keepalive_t keep_alive) _CUPS_API_2_0;
+extern void            httpShutdown(http_t *http) _CUPS_API_2_0;
+extern const char      *httpStateString(http_state_t state) _CUPS_API_2_0;
+extern const char      *httpURIStatusString(http_uri_status_t status) _CUPS_API_2_0;
 
 /*
  * C++ magic...
@@ -623,5 +656,5 @@ extern http_state_t httpWriteResponse(http_t *http,
 #endif /* !_CUPS_HTTP_H_ */
 
 /*
- * End of "$Id: http.h 11085 2013-07-03 13:53:05Z msweet $".
+ * End of "$Id: http.h 11850 2014-05-07 23:12:48Z msweet $".
  */
index 210c2e796662f93b7f7b3dc456820a1f430a04e7..262baf7c7c61564f32042a93fa1e510d7c0d8699 100644 (file)
@@ -1,18 +1,18 @@
 /*
- * "$Id: ipp-private.h 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: ipp-private.h 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Private IPP definitions for CUPS.
+ * Private IPP definitions for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 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_IPP_PRIVATE_H_
@@ -77,5 +77,5 @@ extern _ipp_option_t  *_ippFindOption(const char *name);
 #endif /* !_CUPS_IPP_H_ */
 
 /*
- * End of "$Id: ipp-private.h 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: ipp-private.h 11558 2014-02-06 18:33:34Z msweet $".
  */
index 2eaa8e530120cf0689ad1e2db94d02a847c7c1cb..a94888160db52eb695d8fe931172f3b8eb55918c 100644 (file)
@@ -1,39 +1,18 @@
 /*
- * "$Id: ipp-support.c 11734 2014-03-25 18:01:47Z msweet $"
+ * "$Id: ipp-support.c 11806 2014-04-09 16:12:27Z msweet $"
  *
- *   Internet Printing Protocol support functions for CUPS.
+ * Internet Printing Protocol support functions for CUPS.
  *
- *   Copyright 2007-2013 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.
- *
- * Contents:
- *
- *   ippAttributeString()      - Convert the attribute's value to a string.
- *   ippCreateRequestedArray() - Create a CUPS array of attribute names from
- *                              the given requested-attributes attribute.
- *   ippEnumString()          - Return a string corresponding to the enum
- *                              value.
- *   ippEnumValue()           - Return the value associated with a given enum
- *                              string.
- *   ippErrorString()         - Return a name for the given status code.
- *   ippErrorValue()          - Return a status code for the given name.
- *   ippOpString()            - Return a name for the given operation id.
- *   ippOpValue()             - Return an operation id for the given name.
- *   ippPort()                - Return the default IPP port number.
- *   ippSetPort()             - Set the default port number.
- *   ippTagString()           - Return the tag name corresponding to a tag
- *                              value.
- *   ippTagValue()            - Return the tag value corresponding to a tag
- *                              name.
- *   ipp_col_string()         - Convert a collection to a string.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
  * Local globals...
  */
 
+static const char * const ipp_states[] =
+               {
+                 "IPP_STATE_ERROR",
+                 "IPP_STATE_IDLE",
+                 "IPP_STATE_HEADER",
+                 "IPP_STATE_ATTRIBUTE",
+                 "IPP_STATE_DATA"
+               };
 static const char * const ipp_status_oks[] =   /* "OK" status codes */
                {                               /* (name) = abandoned standard value */
                  "successful-ok",
@@ -87,7 +74,11 @@ static const char * const ipp_status_oks[] = /* "OK" status codes */
                  "client-error-document-password-error",
                  "client-error-document-permission-error",
                  "client-error-document-security-error",
-                 "client-error-document-unprintable-error"
+                 "client-error-document-unprintable-error",
+                 "client-error-account-info-needed",
+                 "client-error-account-closed",
+                 "client-error-account-limit-reached",
+                 "client-error-account-authorization-failed"
                },
                * const ipp_status_480s[] =     /* Vendor client errors */
                {
@@ -334,7 +325,7 @@ static const char * const ipp_document_states[] =
                  "pending",
                  "4",
                  "processing",
-                 "6",
+                 "processing-stopped", /* IPPSIX */
                  "canceled",
                  "aborted",
                  "completed"
@@ -353,8 +344,8 @@ static const char * const ipp_document_states[] =
                  "bale",
                  "booklet-maker",
                  "jog-offset",
-                 "15",
-                 "16",
+                 "coat",               /* Finishings 2.0 */
+                 "laminate",           /* Finishings 2.0 */
                  "17",
                  "18",
                  "19",
@@ -370,10 +361,10 @@ static const char * const ipp_document_states[] =
                  "staple-dual-top",
                  "staple-dual-right",
                  "staple-dual-bottom",
-                 "32",
-                 "33",
-                 "34",
-                 "35",
+                 "staple-triple-left", /* Finishings 2.0 */
+                 "staple-triple-top",  /* Finishings 2.0 */
+                 "staple-triple-right",/* Finishings 2.0 */
+                 "staple-triple-bottom",/* Finishings 2.0 */
                  "36",
                  "37",
                  "38",
@@ -408,37 +399,37 @@ static const char * const ipp_document_states[] =
                  "67",
                  "68",
                  "69",
-                 "punch-top-left",
-                 "punch-bottom-left",
-                 "punch-top-right",
-                 "punch-bottom-right",
-                 "punch-dual-left",
-                 "punch-dual-top",
-                 "punch-dual-right",
-                 "punch-dual-bottom",
-                 "punch-triple-left",
-                 "punch-triple-top",
-                 "punch-triple-right",
-                 "punch-triple-bottom",
-                 "punch-quad-left",
-                 "punch-quad-top",
-                 "punch-quad-right",
-                 "punch-quad-bottom",
+                 "punch-top-left",     /* Finishings 2.0 */
+                 "punch-bottom-left",  /* Finishings 2.0 */
+                 "punch-top-right",    /* Finishings 2.0 */
+                 "punch-bottom-right", /* Finishings 2.0 */
+                 "punch-dual-left",    /* Finishings 2.0 */
+                 "punch-dual-top",     /* Finishings 2.0 */
+                 "punch-dual-right",   /* Finishings 2.0 */
+                 "punch-dual-bottom",  /* Finishings 2.0 */
+                 "punch-triple-left",  /* Finishings 2.0 */
+                 "punch-triple-top",   /* Finishings 2.0 */
+                 "punch-triple-right", /* Finishings 2.0 */
+                 "punch-triple-bottom",/* Finishings 2.0 */
+                 "punch-quad-left",    /* Finishings 2.0 */
+                 "punch-quad-top",     /* Finishings 2.0 */
+                 "punch-quad-right",   /* Finishings 2.0 */
+                 "punch-quad-bottom",  /* Finishings 2.0 */
                  "86",
                  "87",
                  "88",
                  "89",
-                 "fold-accordian",
-                 "fold-double-gate",
-                 "fold-gate",
-                 "fold-half",
-                 "fold-half-z",
-                 "fold-left-gate",
-                 "fold-letter",
-                 "fold-parallel",
-                 "fold-poster",
-                 "fold-right-gate",
-                 "fold-z"
+                 "fold-accordian",     /* Finishings 2.0 */
+                 "fold-double-gate",   /* Finishings 2.0 */
+                 "fold-gate",          /* Finishings 2.0 */
+                 "fold-half",          /* Finishings 2.0 */
+                 "fold-half-z",        /* Finishings 2.0 */
+                 "fold-left-gate",     /* Finishings 2.0 */
+                 "fold-letter",        /* Finishings 2.0 */
+                 "fold-parallel",      /* Finishings 2.0 */
+                 "fold-poster",        /* Finishings 2.0 */
+                 "fold-right-gate",    /* Finishings 2.0 */
+                 "fold-z"              /* Finishings 2.0 */
                },
                * const ipp_finishings_vendor[] =
                {
@@ -572,7 +563,8 @@ static const char * const ipp_document_states[] =
                  "portrait",
                  "landscape",
                  "reverse-landscape",
-                 "reverse-portrait"
+                 "reverse-portrait",
+                 "none"
                },
                * const ipp_print_qualities[] =
                {                       /* print-quality enums */
@@ -650,53 +642,44 @@ ippAttributeString(
           ptr = ippEnumString(attr->name, val->integer);
 
           if (buffer && bufptr < bufend)
-            strlcpy(bufptr, ptr, bufend - bufptr + 1);
+            strlcpy(bufptr, ptr, (size_t)(bufend - bufptr + 1));
 
           bufptr += strlen(ptr);
           break;
 
       case IPP_TAG_INTEGER :
           if (buffer && bufptr < bufend)
-            bufptr += snprintf(bufptr, bufend - bufptr + 1, "%d", val->integer);
+            bufptr += snprintf(bufptr, (size_t)(bufend - bufptr + 1), "%d", val->integer);
           else
             bufptr += snprintf(temp, sizeof(temp), "%d", val->integer);
           break;
 
       case IPP_TAG_BOOLEAN :
           if (buffer && bufptr < bufend)
-            strlcpy(bufptr, val->boolean ? "true" : "false",
-                    bufend - bufptr + 1);
+            strlcpy(bufptr, val->boolean ? "true" : "false", (size_t)(bufend - bufptr + 1));
 
           bufptr += val->boolean ? 4 : 5;
           break;
 
       case IPP_TAG_RANGE :
           if (buffer && bufptr < bufend)
-            bufptr += snprintf(bufptr, bufend - bufptr + 1, "%d-%d",
-                               val->range.lower, val->range.upper);
+            bufptr += snprintf(bufptr, (size_t)(bufend - bufptr + 1), "%d-%d", val->range.lower, val->range.upper);
           else
-            bufptr += snprintf(temp, sizeof(temp), "%d-%d", val->range.lower,
-                               val->range.upper);
+            bufptr += snprintf(temp, sizeof(temp), "%d-%d", val->range.lower, val->range.upper);
           break;
 
       case IPP_TAG_RESOLUTION :
           if (buffer && bufptr < bufend)
-            bufptr += snprintf(bufptr, bufend - bufptr + 1, "%dx%d%s",
-                               val->resolution.xres, val->resolution.yres,
-                               val->resolution.units == IPP_RES_PER_INCH ?
-                                   "dpi" : "dpcm");
+            bufptr += snprintf(bufptr, (size_t)(bufend - bufptr + 1), "%dx%d%s", val->resolution.xres, val->resolution.yres, val->resolution.units == IPP_RES_PER_INCH ? "dpi" : "dpcm");
           else
-            bufptr += snprintf(temp, sizeof(temp), "%dx%d%s",
-                               val->resolution.xres, val->resolution.yres,
-                               val->resolution.units == IPP_RES_PER_INCH ?
-                                   "dpi" : "dpcm");
+            bufptr += snprintf(temp, sizeof(temp), "%dx%d%s", val->resolution.xres, val->resolution.yres, val->resolution.units == IPP_RES_PER_INCH ? "dpi" : "dpcm");
           break;
 
       case IPP_TAG_DATE :
           {
             unsigned year;             /* Year */
 
-            year = (val->date[0] << 8) + val->date[1];
+            year = ((unsigned)val->date[0] << 8) + (unsigned)val->date[1];
 
            if (val->date[9] == 0 && val->date[10] == 0)
              snprintf(temp, sizeof(temp), "%04u-%02u-%02uT%02u:%02u:%02uZ",
@@ -710,7 +693,7 @@ ippAttributeString(
                       val->date[10]);
 
             if (buffer && bufptr < bufend)
-              strlcpy(bufptr, temp, bufend - bufptr + 1);
+              strlcpy(bufptr, temp, (size_t)(bufend - bufptr + 1));
 
             bufptr += strlen(temp);
           }
@@ -754,7 +737,7 @@ ippAttributeString(
             bufptr ++;
 
             if (buffer && bufptr < bufend)
-              strlcpy(bufptr, val->string.language, bufend - bufptr);
+              strlcpy(bufptr, val->string.language, (size_t)(bufend - bufptr));
             bufptr += strlen(val->string.language);
 
             if (buffer && bufptr < bufend)
@@ -765,8 +748,7 @@ ippAttributeString(
 
       case IPP_TAG_BEGIN_COLLECTION :
           if (buffer && bufptr < bufend)
-            bufptr += ipp_col_string(val->collection, bufptr,
-                                     bufend - bufptr + 1);
+            bufptr += ipp_col_string(val->collection, bufptr, (size_t)(bufend - bufptr + 1));
           else
             bufptr += ipp_col_string(val->collection, NULL, 0);
           break;
@@ -788,11 +770,9 @@ ippAttributeString(
             else if (!isprint(*ptr & 255))
             {
               if (buffer && bufptr < bufend)
-                bufptr += snprintf(bufptr, bufend - bufptr + 1, "\\%03o",
-                                   *ptr & 255);
+                bufptr += snprintf(bufptr, (size_t)(bufend - bufptr + 1), "\\%03o", *ptr & 255);
               else
-                bufptr += snprintf(temp, sizeof(temp), "\\%03o",
-                                   *ptr & 255);
+                bufptr += snprintf(temp, sizeof(temp), "\\%03o", *ptr & 255);
             }
             else
             {
@@ -806,7 +786,7 @@ ippAttributeString(
       default :
           ptr = ippTagString(attr->value_tag);
           if (buffer && bufptr < bufend)
-            strlcpy(bufptr, ptr, bufend - bufptr + 1);
+            strlcpy(bufptr, ptr, (size_t)(bufend - bufptr + 1));
           bufptr += strlen(ptr);
           break;
     }
@@ -817,7 +797,7 @@ ippAttributeString(
   else if (bufend)
     *bufend = '\0';
 
-  return (bufptr - buffer);
+  return ((size_t)(bufptr - buffer));
 }
 
 
@@ -1550,11 +1530,16 @@ ippCreateRequestedArray(ipp_t *request) /* I - IPP request */
     "printer-fax-modem-info",          /* IPP FaxOut */
     "printer-fax-modem-name",          /* IPP FaxOut */
     "printer-fax-modem-number",                /* IPP FaxOut */
+    "printer-firmware-name",           /* PWG 5110.1 */
+    "printer-firmware-patches",                /* PWG 5110.1 */
+    "printer-firmware-string-version", /* PWG 5110.1 */
+    "printer-firmware-version",                /* PWG 5110.1 */
     "printer-geo-location",
     "printer-get-attributes-supported",
     "printer-icc-profiles",
     "printer-icons",
     "printer-info",
+    "printer-input-tray",              /* IPP JPS3 */
     "printer-is-accepting-jobs",
     "printer-is-shared",               /* CUPS extension */
     "printer-kind",                    /* IPP Paid Printing */
@@ -1570,6 +1555,7 @@ ippCreateRequestedArray(ipp_t *request)   /* I - IPP request */
     "printer-native-formats",
     "printer-organization",
     "printer-organizational-unit",
+    "printer-output-tray",             /* IPP JPS3 */
     "printer-settable-attributes-supported",
     "printer-state",
     "printer-state-change-date-time",
@@ -1858,7 +1844,7 @@ ippEnumValue(const char *attrname,        /* I - Attribute name */
   */
 
   if (isdigit(*enumstring & 255))
-    return (strtol(enumstring, NULL, 0));
+    return ((int)strtol(enumstring, NULL, 0));
 
  /*
   * Otherwise look up the string...
@@ -1953,7 +1939,7 @@ ippErrorString(ipp_status_t error)        /* I - Error status */
   else if (error == IPP_STATUS_CUPS_SEE_OTHER)
     return ("cups-see-other");
   else if (error >= IPP_STATUS_ERROR_BAD_REQUEST &&
-           error <= IPP_STATUS_ERROR_DOCUMENT_UNPRINTABLE)
+           error <= IPP_STATUS_ERROR_ACCOUNT_AUTHORIZATION_FAILED)
     return (ipp_status_400s[error - IPP_STATUS_ERROR_BAD_REQUEST]);
   else if (error >= 0x480 &&
            error <= IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED)
@@ -1985,7 +1971,7 @@ ippErrorString(ipp_status_t error)        /* I - Error status */
 ipp_status_t                           /* O - IPP status code */
 ippErrorValue(const char *name)                /* I - Name */
 {
-  int          i;
+  size_t       i;                      /* Looping var */
 
 
   for (i = 0; i < (sizeof(ipp_status_oks) / sizeof(ipp_status_oks[0])); i ++)
@@ -2062,7 +2048,7 @@ ippOpString(ipp_op_t op)          /* I - Operation ID */
 ipp_op_t                               /* O - Operation ID */
 ippOpValue(const char *name)           /* I - Textual name */
 {
-  int          i;
+  size_t       i;                      /* Looping var */
 
 
   if (!strncmp(name, "0x", 2))
@@ -2133,6 +2119,22 @@ ippSetPort(int p)                        /* I - Port number to use */
 }
 
 
+/*
+ * 'ippStateString()' - Return the name corresponding to a state value.
+ *
+ * @since CUPS 2.0@
+ */
+
+const char *                           /* O - State name */
+ippStateString(ipp_state_t state)      /* I - State value */
+{
+  if (state >= IPP_STATE_ERROR && state <= IPP_STATE_DATA)
+    return (ipp_states[state - IPP_STATE_ERROR]);
+  else
+    return ("UNKNOWN");
+}
+
+
 /*
  * 'ippTagString()' - Return the tag name corresponding to a tag value.
  *
@@ -2164,7 +2166,7 @@ ippTagString(ipp_tag_t tag)               /* I - Tag value */
 ipp_tag_t                              /* O - Tag value */
 ippTagValue(const char *name)          /* I - Tag name */
 {
-  int  i;                              /* Looping var */
+  size_t       i;                      /* Looping var */
 
 
   for (i = 0; i < (sizeof(ipp_tag_names) / sizeof(ipp_tag_names[0])); i ++)
@@ -2228,12 +2230,12 @@ ipp_col_string(ipp_t  *col,             /* I - Collection attribute */
     prefix = ' ';
 
     if (buffer && bufptr < bufend)
-      bufptr += snprintf(bufptr, bufend - bufptr + 1, "%s=", attr->name);
+      bufptr += snprintf(bufptr, (size_t)(bufend - bufptr + 1), "%s=", attr->name);
     else
       bufptr += strlen(attr->name) + 1;
 
     if (buffer && bufptr < bufend)
-      bufptr += ippAttributeString(attr, bufptr, bufend - bufptr + 1);
+      bufptr += ippAttributeString(attr, bufptr, (size_t)(bufend - bufptr + 1));
     else
       bufptr += ippAttributeString(attr, temp, sizeof(temp));
   }
@@ -2249,10 +2251,10 @@ ipp_col_string(ipp_t  *col,             /* I - Collection attribute */
     *bufptr = '}';
   bufptr ++;
 
-  return (bufptr - buffer);
+  return ((size_t)(bufptr - buffer));
 }
 
 
 /*
- * End of "$Id: ipp-support.c 11734 2014-03-25 18:01:47Z msweet $".
+ * End of "$Id: ipp-support.c 11806 2014-04-09 16:12:27Z msweet $".
  */
index 0946a0d6d7d6a4b7c29aadde36166ab24038068e..fab338453301f80c2d9256ba66fd79a2c4655966 100644 (file)
 /*
- * "$Id: ipp.c 11864 2014-05-08 23:10:47Z msweet $"
- *
- *   Internet Printing Protocol functions for CUPS.
- *
- *   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/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   _cupsBufferGet()       - Get a read/write buffer.
- *   _cupsBufferRelease()    - Release a read/write buffer.
- *   ippAddBoolean()        - Add a boolean attribute to an IPP message.
- *   ippAddBooleans()       - Add an array of boolean values.
- *   ippAddCollection()      - Add a collection value.
- *   ippAddCollections()     - Add an array of collection values.
- *   ippAddDate()           - Add a date attribute to an IPP message.
- *   ippAddInteger()        - Add a integer attribute to an IPP message.
- *   ippAddIntegers()       - Add an array of integer values.
- *   ippAddOctetString()     - Add an octetString value to an IPP message.
- *   ippAddOutOfBand()      - Add an out-of-band value to an IPP message.
- *   ippAddRange()          - Add a range of values to an IPP message.
- *   ippAddRanges()         - Add ranges of values to an IPP message.
- *   ippAddResolution()      - Add a resolution value to an IPP message.
- *   ippAddResolutions()     - Add resolution values to an IPP message.
- *   ippAddSeparator()      - Add a group separator to an IPP message.
- *   ippAddString()         - Add a language-encoded string to an IPP message.
- *   ippAddStringf()        - Add a formatted string to an IPP message.
- *   ippAddStringfv()       - Add a formatted string to an IPP message.
- *   ippAddStrings()        - Add language-encoded strings to an IPP message.
- *   ippContainsInteger()    - Determine whether an attribute contains the
- *                            specified value or is within the list of ranges.
- *   ippContainsString()     - Determine whether an attribute contains the
- *                            specified string value.
- *   ippCopyAttribute()      - Copy an attribute.
- *   ippCopyAttributes()     - Copy attributes from one IPP message to another.
- *   ippDateToTime()        - Convert from RFC 1903 Date/Time format to UNIX
- *                            time in seconds.
- *   ippDelete()            - Delete an IPP message.
- *   ippDeleteAttribute()    - Delete a single attribute in an IPP message.
- *   ippDeleteValues()      - Delete values in an attribute.
- *   ippFindAttribute()      - Find a named attribute in a request.
- *   ippFindNextAttribute()  - Find the next named attribute in a request.
- *   ippFirstAttribute()     - Return the first attribute in the message.
- *   ippGetBoolean()        - Get a boolean value for an attribute.
- *   ippGetCollection()      - Get a collection value for an attribute.
- *   ippGetCount()          - Get the number of values in an attribute.
- *   ippGetDate()           - Get a date value for an attribute.
- *   ippGetGroupTag()       - Get the group associated with an attribute.
- *   ippGetInteger()        - Get the integer/enum value for an attribute.
- *   ippGetName()           - Get the attribute name.
- *   ippGetOctetString()     - Get an octetString value from an IPP attribute.
- *   ippGetOperation()      - Get the operation ID in an IPP message.
- *   ippGetRange()          - Get a rangeOfInteger value from an attribute.
- *   ippGetRequestId()      - Get the request ID from an IPP message.
- *   ippGetResolution()      - Get a resolution value for an attribute.
- *   ippGetState()          - Get the IPP message state.
- *   ippGetStatusCode()      - Get the status code from an IPP response or
- *                            event message.
- *   ippGetString()         - Get the string and optionally the language code
- *                            for an attribute.
- *   ippGetValueTag()       - Get the value tag for an attribute.
- *   ippGetVersion()        - Get the major and minor version number from an
- *                            IPP message.
- *   ippLength()            - Compute the length of an IPP message.
- *   ippNextAttribute()      - Return the next attribute in the message.
- *   ippNew()               - Allocate a new IPP message.
- *   ippNewRequest()        - Allocate a new IPP request message.
- *   ippNewResponse()       - Allocate a new IPP response message.
- *   ippRead()              - Read data for an IPP message from a HTTP
- *                            connection.
- *   ippReadFile()          - Read data for an IPP message from a file.
- *   ippReadIO()            - Read data for an IPP message.
- *   ippSetBoolean()        - Set a boolean value in an attribute.
- *   ippSetCollection()      - Set a collection value in an attribute.
- *   ippSetDate()           - Set a date value in an attribute.
- *   ippSetGroupTag()       - Set the group tag of an attribute.
- *   ippSetInteger()        - Set an integer or enum value in an attribute.
- *   ippSetName()           - Set the name of an attribute.
- *   ippSetOctetString()     - Set an octetString value in an IPP attribute.
- *   ippSetOperation()      - Set the operation ID in an IPP request message.
- *   ippSetRange()          - Set a rangeOfInteger value in an attribute.
- *   ippSetRequestId()      - Set the request ID in an IPP message.
- *   ippSetResolution()      - Set a resolution value in an attribute.
- *   ippSetState()          - Set the current state of the IPP message.
- *   ippSetStatusCode()      - Set the status code in an IPP response or event
- *                            message.
- *   ippSetString()         - Set a string value in an attribute.
- *   ippSetStringf()        - Set a formatted string value of an attribute.
- *   ippSetStringf()        - Set a formatted string value of an attribute.
- *   ippSetValueTag()       - Set the value tag of an attribute.
- *   ippSetVersion()        - Set the version number in an IPP message.
- *   ippTimeToDate()        - Convert from UNIX time to RFC 1903 format.
- *   ippValidateAttribute()  - Validate the contents of an attribute.
- *   ippValidateAttributes() - Validate all attributes in an IPP message.
- *   ippWrite()             - Write data for an IPP message to a HTTP
- *                            connection.
- *   ippWriteFile()         - Write data for an IPP message to a file.
- *   ippWriteIO()           - Write data for an IPP message.
- *   ipp_add_attr()         - Add a new attribute to the message.
- *   ipp_free_values()      - Free attribute values.
- *   ipp_get_code()         - Convert a C locale/charset name into an IPP
- *                            language/charset code.
- *   ipp_lang_code()        - Convert a C locale name into an IPP language
- *                            code.
- *   ipp_length()           - Compute the length of an IPP message or
- *                            collection value.
- *   ipp_read_http()        - Semi-blocking read on a HTTP connection...
- *   ipp_read_file()        - Read IPP data from a file.
- *   ipp_set_error()        - Set a formatted, localized error string.
- *   ipp_set_value()        - Get the value element from an attribute,
- *                            expanding it as needed.
- *   ipp_write_file()       - Write IPP data to a file.
+ * "$Id: ipp.c 11840 2014-04-29 15:57:26Z msweet $"
+ *
+ * Internet Printing Protocol functions for CUPS.
+ *
+ * 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/".
+ *
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -656,13 +550,13 @@ ippAddOctetString(ipp_t      *ipp,        /* I - IPP message */
 
   if (data)
   {
-    if ((attr->values[0].unknown.data = malloc(datalen)) == NULL)
+    if ((attr->values[0].unknown.data = malloc((size_t)datalen)) == NULL)
     {
       ippDeleteAttribute(ipp, attr);
       return (NULL);
     }
 
-    memcpy(attr->values[0].unknown.data, data, datalen);
+    memcpy(attr->values[0].unknown.data, data, (size_t)datalen);
   }
 
  /*
@@ -1232,7 +1126,7 @@ ippAddStringfv(ipp_t      *ipp,           /* I - IPP message */
     if (!s)
       s = "(null)";
 
-    bytes = strlen(s);
+    bytes = (ssize_t)strlen(s);
     strlcpy(buffer, s, sizeof(buffer));
   }
   else
@@ -1818,10 +1712,10 @@ ippCopyAttribute(
 
          if (dstval->unknown.length > 0)
          {
-           if ((dstval->unknown.data = malloc(dstval->unknown.length)) == NULL)
+           if ((dstval->unknown.data = malloc((size_t)dstval->unknown.length)) == NULL)
              dstval->unknown.length = 0;
            else
-             memcpy(dstval->unknown.data, srcval->unknown.data, dstval->unknown.length);
+             memcpy(dstval->unknown.data, srcval->unknown.data, (size_t)dstval->unknown.length);
          }
        }
         break; /* anti-compiler-warning-code */
@@ -2089,6 +1983,10 @@ ippDeleteValues(
 
 /*
  * 'ippFindAttribute()' - Find a named attribute in a request.
+ *
+ * Starting with CUPS 2.0, the attribute name can contain a hierarchical list
+ * of attribute and member names separated by slashes, for example
+ * "media-col/media-size".
  */
 
 ipp_attribute_t        *                       /* O - Matching attribute */
@@ -2107,6 +2005,7 @@ ippFindAttribute(ipp_t      *ipp, /* I - IPP message */
   */
 
   ipp->current = NULL;
+  ipp->atend   = 0;
 
  /*
   * Search for the attribute...
@@ -2118,6 +2017,10 @@ ippFindAttribute(ipp_t      *ipp,        /* I - IPP message */
 
 /*
  * 'ippFindNextAttribute()' - Find the next named attribute in a request.
+ *
+ * Starting with CUPS 2.0, the attribute name can contain a hierarchical list
+ * of attribute and member names separated by slashes, for example
+ * "media-col/media-size".
  */
 
 ipp_attribute_t        *                       /* O - Matching attribute */
@@ -2125,8 +2028,11 @@ ippFindNextAttribute(ipp_t      *ipp,    /* I - IPP message */
                      const char *name, /* I - Name of attribute */
                     ipp_tag_t  type)   /* I - Type of attribute */
 {
-  ipp_attribute_t      *attr;          /* Current atttribute */
+  ipp_attribute_t      *attr,          /* Current atttribute */
+                       *childattr;     /* Child attribute */
   ipp_tag_t            value_tag;      /* Value tag */
+  char                 parent[1024],   /* Parent attribute name */
+                       *child;         /* Child attribute name */
 
 
   DEBUG_printf(("2ippFindNextAttribute(ipp=%p, name=\"%s\", type=%02x(%s))",
@@ -2135,7 +2041,60 @@ ippFindNextAttribute(ipp_t      *ipp,    /* I - IPP message */
   if (!ipp || !name)
     return (NULL);
 
-  if (ipp->current)
+  DEBUG_printf(("3ippFindNextAttribute: atend=%d", ipp->atend));
+
+  if (ipp->atend)
+    return (NULL);
+
+  if (strchr(name, '/'))
+  {
+   /*
+    * Search for child attribute...
+    */
+
+    strlcpy(parent, name, sizeof(parent));
+    if ((child = strchr(parent, '/')) == NULL)
+    {
+      DEBUG_puts("3ippFindNextAttribute: Attribute name too long.");
+      return (NULL);
+    }
+
+    *child++ = '\0';
+
+    if (ipp->current && ipp->current->name && ipp->current->value_tag == IPP_TAG_BEGIN_COLLECTION && !strcmp(parent, ipp->current->name))
+    {
+      while (ipp->curindex < ipp->current->num_values)
+      {
+        if ((childattr = ippFindNextAttribute(ipp->current->values[ipp->curindex].collection, child, type)) != NULL)
+          return (childattr);
+
+        ipp->curindex ++;
+        if (ipp->curindex < ipp->current->num_values && ipp->current->values[ipp->curindex].collection)
+          ipp->current->values[ipp->curindex].collection->current = NULL;
+      }
+
+      ipp->prev     = ipp->current;
+      ipp->current  = ipp->current->next;
+      ipp->curindex = 0;
+
+      if (!ipp->current)
+      {
+        ipp->atend = 1;
+        return (NULL);
+      }
+    }
+
+    if (!ipp->current)
+    {
+      ipp->prev     = NULL;
+      ipp->current  = ipp->attrs;
+      ipp->curindex = 0;
+    }
+
+    name = parent;
+    attr = ipp->current;
+  }
+  else if (ipp->current)
   {
     ipp->prev = ipp->current;
     attr      = ipp->current->next;
@@ -2154,18 +2113,33 @@ ippFindNextAttribute(ipp_t      *ipp,   /* I - IPP message */
     value_tag = (ipp_tag_t)(attr->value_tag & IPP_TAG_CUPS_MASK);
 
     if (attr->name != NULL && _cups_strcasecmp(attr->name, name) == 0 &&
-        (value_tag == type || type == IPP_TAG_ZERO ||
+        (value_tag == type || type == IPP_TAG_ZERO || name == parent ||
         (value_tag == IPP_TAG_TEXTLANG && type == IPP_TAG_TEXT) ||
         (value_tag == IPP_TAG_NAMELANG && type == IPP_TAG_NAME)))
     {
       ipp->current = attr;
 
-      return (attr);
+      if (name == parent && attr->value_tag == IPP_TAG_BEGIN_COLLECTION)
+      {
+        int i;                         /* Looping var */
+
+        for (i = 0; i < attr->num_values; i ++)
+        {
+         if ((childattr = ippFindAttribute(attr->values[i].collection, child, type)) != NULL)
+         {
+           attr->values[0].collection->curindex = i;
+           return (childattr);
+         }
+        }
+      }
+      else
+        return (attr);
     }
   }
 
   ipp->current = NULL;
   ipp->prev    = NULL;
+  ipp->atend   = 1;
 
   return (NULL);
 }
@@ -2752,8 +2726,8 @@ ippNew(void)
     if (cg->server_version == 0)
       _cupsSetDefaults();
 
-    temp->request.any.version[0] = cg->server_version / 10;
-    temp->request.any.version[1] = cg->server_version % 10;
+    temp->request.any.version[0] = (ipp_uchar_t)(cg->server_version / 10);
+    temp->request.any.version[1] = (ipp_uchar_t)(cg->server_version % 10);
     temp->use                    = 1;
   }
 
@@ -3312,7 +3286,7 @@ ippReadIO(void       *src,                /* I - Data source */
            * New attribute; read the name and add it...
            */
 
-           if ((*cb)(src, buffer, n) < n)
+           if ((*cb)(src, buffer, (size_t)n) < n)
            {
              DEBUG_puts("1ippReadIO: unable to read name.");
              _cupsBufferRelease((char *)buffer);
@@ -3413,7 +3387,7 @@ ippReadIO(void       *src,                /* I - Data source */
                  return (IPP_STATE_ERROR);
                }
 
-                value->boolean = buffer[0];
+                value->boolean = (char)buffer[0];
                break;
 
             case IPP_TAG_NOVALUE :
@@ -3444,7 +3418,7 @@ ippReadIO(void       *src,                /* I - Data source */
            case IPP_TAG_MIMETYPE :
                if (n > 0)
                {
-                 if ((*cb)(src, buffer, n) < n)
+                 if ((*cb)(src, buffer, (size_t)n) < n)
                  {
                    DEBUG_puts("1ippReadIO: unable to read string value.");
                    _cupsBufferRelease((char *)buffer);
@@ -3545,7 +3519,7 @@ ippReadIO(void       *src,                /* I - Data source */
                  return (IPP_STATE_ERROR);
                }
 
-               if ((*cb)(src, buffer, n) < n)
+               if ((*cb)(src, buffer, (size_t)n) < n)
                {
                  DEBUG_puts("1ippReadIO: Unable to read string w/language "
                             "value.");
@@ -3567,8 +3541,7 @@ ippReadIO(void       *src,                /* I - Data source */
 
                n = (bufptr[0] << 8) | bufptr[1];
 
-               if ((bufptr + 2 + n) >= (buffer + IPP_BUF_SIZE) ||
-                   n >= sizeof(string))
+               if ((bufptr + 2 + n) >= (buffer + IPP_BUF_SIZE) || n >= (int)sizeof(string))
                {
                  _cupsSetError(IPP_STATUS_ERROR_INTERNAL,
                                _("IPP language length overflows value."), 1);
@@ -3587,7 +3560,7 @@ ippReadIO(void       *src,                /* I - Data source */
                  return (IPP_STATE_ERROR);
                }
 
-               memcpy(string, bufptr + 2, n);
+               memcpy(string, bufptr + 2, (size_t)n);
                string[n] = '\0';
 
                value->string.language = _cupsStrAlloc((char *)string);
@@ -3670,7 +3643,7 @@ ippReadIO(void       *src,                /* I - Data source */
                  _cupsBufferRelease((char *)buffer);
                  return (IPP_STATE_ERROR);
                }
-               else if ((*cb)(src, buffer, n) < n)
+               else if ((*cb)(src, buffer, (size_t)n) < n)
                {
                  DEBUG_puts("1ippReadIO: Unable to read member name value.");
                  _cupsBufferRelease((char *)buffer);
@@ -3706,7 +3679,7 @@ ippReadIO(void       *src,                /* I - Data source */
 
                if (n > 0)
                {
-                 if ((value->unknown.data = malloc(n)) == NULL)
+                 if ((value->unknown.data = malloc((size_t)n)) == NULL)
                  {
                    _cupsSetHTTPError(HTTP_STATUS_ERROR);
                    DEBUG_puts("1ippReadIO: Unable to allocate value");
@@ -3714,7 +3687,7 @@ ippReadIO(void       *src,                /* I - Data source */
                    return (IPP_STATE_ERROR);
                  }
 
-                 if ((*cb)(src, value->unknown.data, n) < n)
+                 if ((*cb)(src, value->unknown.data, (size_t)n) < n)
                  {
                    DEBUG_puts("1ippReadIO: Unable to read unsupported value.");
                    _cupsBufferRelease((char *)buffer);
@@ -3785,7 +3758,7 @@ ippSetBoolean(ipp_t           *ipp,       /* I  - IPP message */
   */
 
   if ((value = ipp_set_value(ipp, attr, element)) != NULL)
-    value->boolean = boolvalue;
+    value->boolean = (char)boolvalue;
 
   return (value != NULL);
 }
@@ -4080,9 +4053,9 @@ ippSetOctetString(
       {
        void    *temp;                  /* Temporary data pointer */
 
-       if ((temp = malloc(datalen)) != NULL)
+       if ((temp = malloc((size_t)datalen)) != NULL)
        {
-         memcpy(temp, data, datalen);
+         memcpy(temp, data, (size_t)datalen);
 
          value->unknown.data   = temp;
          value->unknown.length = datalen;
@@ -4478,7 +4451,7 @@ ippSetStringfv(ipp_t           *ipp,      /* I  - IPP message */
     if (!s)
       s = "(null)";
 
-    bytes = strlen(s);
+    bytes = (ssize_t)strlen(s);
     strlcpy(buffer, s, sizeof(buffer));
   }
   else
@@ -4759,8 +4732,8 @@ ippSetVersion(ipp_t *ipp,         /* I - IPP message */
   * Set the version number...
   */
 
-  ipp->request.any.version[0] = major;
-  ipp->request.any.version[1] = minor;
+  ipp->request.any.version[0] = (ipp_uchar_t)major;
+  ipp->request.any.version[1] = (ipp_uchar_t)minor;
 
   return (1);
 }
@@ -4798,13 +4771,13 @@ ippTimeToDate(time_t t)                 /* I - UNIX time value */
   unixdate = gmtime(&t);
   unixdate->tm_year += 1900;
 
-  date[0]  = unixdate->tm_year >> 8;
-  date[1]  = unixdate->tm_year;
-  date[2]  = unixdate->tm_mon + 1;
-  date[3]  = unixdate->tm_mday;
-  date[4]  = unixdate->tm_hour;
-  date[5]  = unixdate->tm_min;
-  date[6]  = unixdate->tm_sec;
+  date[0]  = (ipp_uchar_t)(unixdate->tm_year >> 8);
+  date[1]  = (ipp_uchar_t)(unixdate->tm_year);
+  date[2]  = (ipp_uchar_t)(unixdate->tm_mon + 1);
+  date[3]  = (ipp_uchar_t)unixdate->tm_mday;
+  date[4]  = (ipp_uchar_t)unixdate->tm_hour;
+  date[5]  = (ipp_uchar_t)unixdate->tm_min;
+  date[6]  = (ipp_uchar_t)unixdate->tm_sec;
   date[7]  = 0;
   date[8]  = '+';
   date[9]  = 0;
@@ -5569,12 +5542,12 @@ ippWriteIO(void       *dst,             /* I - Destination */
 
          *bufptr++ = ipp->request.any.version[0];
          *bufptr++ = ipp->request.any.version[1];
-         *bufptr++ = ipp->request.any.op_status >> 8;
-         *bufptr++ = ipp->request.any.op_status;
-         *bufptr++ = ipp->request.any.request_id >> 24;
-         *bufptr++ = ipp->request.any.request_id >> 16;
-         *bufptr++ = ipp->request.any.request_id >> 8;
-         *bufptr++ = ipp->request.any.request_id;
+         *bufptr++ = (ipp_uchar_t)(ipp->request.any.op_status >> 8);
+         *bufptr++ = (ipp_uchar_t)ipp->request.any.op_status;
+         *bufptr++ = (ipp_uchar_t)(ipp->request.any.request_id >> 24);
+         *bufptr++ = (ipp_uchar_t)(ipp->request.any.request_id >> 16);
+         *bufptr++ = (ipp_uchar_t)(ipp->request.any.request_id >> 8);
+         *bufptr++ = (ipp_uchar_t)ipp->request.any.request_id;
 
          DEBUG_printf(("2ippWriteIO: version=%d.%d", buffer[0], buffer[1]));
          DEBUG_printf(("2ippWriteIO: op_status=%04x",
@@ -5582,7 +5555,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
          DEBUG_printf(("2ippWriteIO: request_id=%d",
                        ipp->request.any.request_id));
 
-          if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
+          if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
          {
            DEBUG_puts("1ippWriteIO: Could not write IPP header...");
            _cupsBufferRelease((char *)buffer);
@@ -5635,7 +5608,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
 
              DEBUG_printf(("2ippWriteIO: wrote group tag=%x(%s)",
                            attr->group_tag, ippTagString(attr->group_tag)));
-             *bufptr++ = attr->group_tag;
+             *bufptr++ = (ipp_uchar_t)attr->group_tag;
            }
            else if (attr->group_tag == IPP_TAG_ZERO)
              continue;
@@ -5680,17 +5653,17 @@ ippWriteIO(void       *dst,             /* I - Destination */
             if (attr->value_tag > 0xff)
             {
               *bufptr++ = IPP_TAG_EXTENSION;
-             *bufptr++ = attr->value_tag >> 24;
-             *bufptr++ = attr->value_tag >> 16;
-             *bufptr++ = attr->value_tag >> 8;
-             *bufptr++ = attr->value_tag;
+             *bufptr++ = (ipp_uchar_t)(attr->value_tag >> 24);
+             *bufptr++ = (ipp_uchar_t)(attr->value_tag >> 16);
+             *bufptr++ = (ipp_uchar_t)(attr->value_tag >> 8);
+             *bufptr++ = (ipp_uchar_t)attr->value_tag;
             }
             else
-             *bufptr++ = attr->value_tag;
+             *bufptr++ = (ipp_uchar_t)attr->value_tag;
 
-           *bufptr++ = n >> 8;
-           *bufptr++ = n;
-           memcpy(bufptr, attr->name, n);
+           *bufptr++ = (ipp_uchar_t)(n >> 8);
+           *bufptr++ = (ipp_uchar_t)n;
+           memcpy(bufptr, attr->name, (size_t)n);
            bufptr += n;
           }
          else
@@ -5723,21 +5696,21 @@ ippWriteIO(void       *dst,             /* I - Destination */
             *bufptr++ = IPP_TAG_MEMBERNAME;
            *bufptr++ = 0;
            *bufptr++ = 0;
-           *bufptr++ = n >> 8;
-           *bufptr++ = n;
-           memcpy(bufptr, attr->name, n);
+           *bufptr++ = (ipp_uchar_t)(n >> 8);
+           *bufptr++ = (ipp_uchar_t)n;
+           memcpy(bufptr, attr->name, (size_t)n);
            bufptr += n;
 
             if (attr->value_tag > 0xff)
             {
               *bufptr++ = IPP_TAG_EXTENSION;
-             *bufptr++ = attr->value_tag >> 24;
-             *bufptr++ = attr->value_tag >> 16;
-             *bufptr++ = attr->value_tag >> 8;
-             *bufptr++ = attr->value_tag;
+             *bufptr++ = (ipp_uchar_t)(attr->value_tag >> 24);
+             *bufptr++ = (ipp_uchar_t)(attr->value_tag >> 16);
+             *bufptr++ = (ipp_uchar_t)(attr->value_tag >> 8);
+             *bufptr++ = (ipp_uchar_t)attr->value_tag;
             }
             else
-             *bufptr++ = attr->value_tag;
+             *bufptr++ = (ipp_uchar_t)attr->value_tag;
 
             *bufptr++ = 0;
             *bufptr++ = 0;
@@ -5768,7 +5741,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                {
                   if ((IPP_BUF_SIZE - (bufptr - buffer)) < 9)
                  {
-                    if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
+                    if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
                    {
                      DEBUG_puts("1ippWriteIO: Could not write IPP "
                                 "attribute...");
@@ -5786,7 +5759,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                    * values with a zero-length name...
                    */
 
-                    *bufptr++ = attr->value_tag;
+                    *bufptr++ = (ipp_uchar_t)attr->value_tag;
                    *bufptr++ = 0;
                    *bufptr++ = 0;
                  }
@@ -5800,10 +5773,10 @@ ippWriteIO(void       *dst,             /* I - Destination */
 
                  *bufptr++ = 0;
                  *bufptr++ = 4;
-                 *bufptr++ = value->integer >> 24;
-                 *bufptr++ = value->integer >> 16;
-                 *bufptr++ = value->integer >> 8;
-                 *bufptr++ = value->integer;
+                 *bufptr++ = (ipp_uchar_t)(value->integer >> 24);
+                 *bufptr++ = (ipp_uchar_t)(value->integer >> 16);
+                 *bufptr++ = (ipp_uchar_t)(value->integer >> 8);
+                 *bufptr++ = (ipp_uchar_t)value->integer;
                }
                break;
 
@@ -5814,7 +5787,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                {
                   if ((IPP_BUF_SIZE - (bufptr - buffer)) < 6)
                  {
-                    if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
+                    if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
                    {
                      DEBUG_puts("1ippWriteIO: Could not write IPP "
                                 "attribute...");
@@ -5832,7 +5805,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                    * values with a zero-length name...
                    */
 
-                    *bufptr++ = attr->value_tag;
+                    *bufptr++ = (ipp_uchar_t)attr->value_tag;
                    *bufptr++ = 0;
                    *bufptr++ = 0;
                  }
@@ -5845,7 +5818,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
 
                  *bufptr++ = 0;
                  *bufptr++ = 1;
-                 *bufptr++ = value->boolean;
+                 *bufptr++ = (ipp_uchar_t)value->boolean;
                }
                break;
 
@@ -5875,7 +5848,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
 
                     if ((IPP_BUF_SIZE - (bufptr - buffer)) < 3)
                    {
-                      if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
+                      if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
                      {
                        DEBUG_puts("1ippWriteIO: Could not write IPP "
                                   "attribute...");
@@ -5886,7 +5859,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                      bufptr = buffer;
                    }
 
-                    *bufptr++ = attr->value_tag;
+                    *bufptr++ = (ipp_uchar_t)attr->value_tag;
                    *bufptr++ = 0;
                    *bufptr++ = 0;
                  }
@@ -5908,7 +5881,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
 
                   if ((int)(IPP_BUF_SIZE - (bufptr - buffer)) < (n + 2))
                  {
-                    if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
+                    if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
                    {
                      DEBUG_puts("1ippWriteIO: Could not write IPP "
                                 "attribute...");
@@ -5929,12 +5902,12 @@ ippWriteIO(void       *dst,             /* I - Destination */
                  * Put the 2-byte length and string characters in the buffer.
                  */
 
-                 *bufptr++ = n >> 8;
-                 *bufptr++ = n;
+                 *bufptr++ = (ipp_uchar_t)(n >> 8);
+                 *bufptr++ = (ipp_uchar_t)n;
 
                  if (n > 0)
                  {
-                   memcpy(bufptr, value->string.text, n);
+                   memcpy(bufptr, value->string.text, (size_t)n);
                    bufptr += n;
                  }
                }
@@ -5947,7 +5920,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                {
                   if ((IPP_BUF_SIZE - (bufptr - buffer)) < 16)
                  {
-                    if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
+                    if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
                    {
                      DEBUG_puts("1ippWriteIO: Could not write IPP "
                                 "attribute...");
@@ -5965,7 +5938,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                    * values with a zero-length name...
                    */
 
-                    *bufptr++ = attr->value_tag;
+                    *bufptr++ = (ipp_uchar_t)attr->value_tag;
                    *bufptr++ = 0;
                    *bufptr++ = 0;
                  }
@@ -5992,7 +5965,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                {
                   if ((IPP_BUF_SIZE - (bufptr - buffer)) < 14)
                  {
-                    if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
+                    if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
                    {
                      DEBUG_puts("1ippWriteIO: Could not write IPP "
                                 "attribute...");
@@ -6010,7 +5983,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                    * values with a zero-length name...
                    */
 
-                    *bufptr++ = attr->value_tag;
+                    *bufptr++ = (ipp_uchar_t)attr->value_tag;
                    *bufptr++ = 0;
                    *bufptr++ = 0;
                  }
@@ -6026,15 +5999,15 @@ ippWriteIO(void       *dst,             /* I - Destination */
 
                  *bufptr++ = 0;
                  *bufptr++ = 9;
-                 *bufptr++ = value->resolution.xres >> 24;
-                 *bufptr++ = value->resolution.xres >> 16;
-                 *bufptr++ = value->resolution.xres >> 8;
-                 *bufptr++ = value->resolution.xres;
-                 *bufptr++ = value->resolution.yres >> 24;
-                 *bufptr++ = value->resolution.yres >> 16;
-                 *bufptr++ = value->resolution.yres >> 8;
-                 *bufptr++ = value->resolution.yres;
-                 *bufptr++ = value->resolution.units;
+                 *bufptr++ = (ipp_uchar_t)(value->resolution.xres >> 24);
+                 *bufptr++ = (ipp_uchar_t)(value->resolution.xres >> 16);
+                 *bufptr++ = (ipp_uchar_t)(value->resolution.xres >> 8);
+                 *bufptr++ = (ipp_uchar_t)value->resolution.xres;
+                 *bufptr++ = (ipp_uchar_t)(value->resolution.yres >> 24);
+                 *bufptr++ = (ipp_uchar_t)(value->resolution.yres >> 16);
+                 *bufptr++ = (ipp_uchar_t)(value->resolution.yres >> 8);
+                 *bufptr++ = (ipp_uchar_t)value->resolution.yres;
+                 *bufptr++ = (ipp_uchar_t)value->resolution.units;
                }
                break;
 
@@ -6045,7 +6018,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                {
                   if ((IPP_BUF_SIZE - (bufptr - buffer)) < 13)
                  {
-                    if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
+                    if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
                    {
                      DEBUG_puts("1ippWriteIO: Could not write IPP "
                                 "attribute...");
@@ -6063,7 +6036,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                    * values with a zero-length name...
                    */
 
-                    *bufptr++ = attr->value_tag;
+                    *bufptr++ = (ipp_uchar_t)attr->value_tag;
                    *bufptr++ = 0;
                    *bufptr++ = 0;
                  }
@@ -6078,14 +6051,14 @@ ippWriteIO(void       *dst,             /* I - Destination */
 
                  *bufptr++ = 0;
                  *bufptr++ = 8;
-                 *bufptr++ = value->range.lower >> 24;
-                 *bufptr++ = value->range.lower >> 16;
-                 *bufptr++ = value->range.lower >> 8;
-                 *bufptr++ = value->range.lower;
-                 *bufptr++ = value->range.upper >> 24;
-                 *bufptr++ = value->range.upper >> 16;
-                 *bufptr++ = value->range.upper >> 8;
-                 *bufptr++ = value->range.upper;
+                 *bufptr++ = (ipp_uchar_t)(value->range.lower >> 24);
+                 *bufptr++ = (ipp_uchar_t)(value->range.lower >> 16);
+                 *bufptr++ = (ipp_uchar_t)(value->range.lower >> 8);
+                 *bufptr++ = (ipp_uchar_t)value->range.lower;
+                 *bufptr++ = (ipp_uchar_t)(value->range.upper >> 24);
+                 *bufptr++ = (ipp_uchar_t)(value->range.upper >> 16);
+                 *bufptr++ = (ipp_uchar_t)(value->range.upper >> 8);
+                 *bufptr++ = (ipp_uchar_t)value->range.upper;
                }
                break;
 
@@ -6104,7 +6077,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
 
                     if ((IPP_BUF_SIZE - (bufptr - buffer)) < 3)
                    {
-                      if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
+                      if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
                      {
                        DEBUG_puts("1ippWriteIO: Could not write IPP "
                                   "attribute...");
@@ -6115,7 +6088,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                      bufptr = buffer;
                    }
 
-                    *bufptr++ = attr->value_tag;
+                    *bufptr++ = (ipp_uchar_t)attr->value_tag;
                    *bufptr++ = 0;
                    *bufptr++ = 0;
                  }
@@ -6148,7 +6121,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
 
                   if ((int)(IPP_BUF_SIZE - (bufptr - buffer)) < (n + 2))
                  {
-                    if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
+                    if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
                    {
                      DEBUG_puts("1ippWriteIO: Could not write IPP "
                                 "attribute...");
@@ -6160,8 +6133,8 @@ ippWriteIO(void       *dst,               /* I - Destination */
                  }
 
                  /* Length of entire value */
-                 *bufptr++ = n >> 8;
-                 *bufptr++ = n;
+                 *bufptr++ = (ipp_uchar_t)(n >> 8);
+                 *bufptr++ = (ipp_uchar_t)n;
 
                  /* Length of language */
                  if (value->string.language != NULL)
@@ -6169,13 +6142,13 @@ ippWriteIO(void       *dst,             /* I - Destination */
                  else
                    n = 0;
 
-                 *bufptr++ = n >> 8;
-                 *bufptr++ = n;
+                 *bufptr++ = (ipp_uchar_t)(n >> 8);
+                 *bufptr++ = (ipp_uchar_t)n;
 
                  /* Language */
                  if (n > 0)
                  {
-                   memcpy(bufptr, value->string.language, n);
+                   memcpy(bufptr, value->string.language, (size_t)n);
                    bufptr += n;
                  }
 
@@ -6185,13 +6158,13 @@ ippWriteIO(void       *dst,             /* I - Destination */
                  else
                    n = 0;
 
-                 *bufptr++ = n >> 8;
-                 *bufptr++ = n;
+                 *bufptr++ = (ipp_uchar_t)(n >> 8);
+                 *bufptr++ = (ipp_uchar_t)n;
 
                  /* Text */
                  if (n > 0)
                  {
-                   memcpy(bufptr, value->string.text, n);
+                   memcpy(bufptr, value->string.text, (size_t)n);
                    bufptr += n;
                  }
                }
@@ -6211,7 +6184,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
 
                   if ((IPP_BUF_SIZE - (bufptr - buffer)) < 5)
                  {
-                    if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
+                    if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
                    {
                      DEBUG_puts("1ippWriteIO: Could not write IPP "
                                 "attribute...");
@@ -6229,7 +6202,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                    * values with a zero-length name...
                    */
 
-                    *bufptr++ = attr->value_tag;
+                    *bufptr++ = (ipp_uchar_t)attr->value_tag;
                    *bufptr++ = 0;
                    *bufptr++ = 0;
                  }
@@ -6241,7 +6214,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                  *bufptr++ = 0;
                  *bufptr++ = 0;
 
-                  if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
+                  if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
                  {
                    DEBUG_puts("1ippWriteIO: Could not write IPP "
                               "attribute...");
@@ -6281,7 +6254,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
 
                     if ((IPP_BUF_SIZE - (bufptr - buffer)) < 3)
                    {
-                      if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
+                      if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
                      {
                        DEBUG_puts("1ippWriteIO: Could not write IPP "
                                   "attribute...");
@@ -6292,7 +6265,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
                      bufptr = buffer;
                    }
 
-                    *bufptr++ = attr->value_tag;
+                    *bufptr++ = (ipp_uchar_t)attr->value_tag;
                    *bufptr++ = 0;
                    *bufptr++ = 0;
                  }
@@ -6316,7 +6289,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
 
                   if ((int)(IPP_BUF_SIZE - (bufptr - buffer)) < (n + 2))
                  {
-                    if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
+                    if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
                    {
                      DEBUG_puts("1ippWriteIO: Could not write IPP "
                                 "attribute...");
@@ -6328,13 +6301,13 @@ ippWriteIO(void       *dst,             /* I - Destination */
                  }
 
                  /* Length of unknown value */
-                 *bufptr++ = n >> 8;
-                 *bufptr++ = n;
+                 *bufptr++ = (ipp_uchar_t)(n >> 8);
+                 *bufptr++ = (ipp_uchar_t)n;
 
                  /* Value */
                  if (n > 0)
                  {
-                   memcpy(bufptr, value->unknown.data, n);
+                   memcpy(bufptr, value->unknown.data, (size_t)n);
                    bufptr += n;
                  }
                }
@@ -6347,7 +6320,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
 
          if (bufptr > buffer)
          {
-           if ((*cb)(dst, buffer, (int)(bufptr - buffer)) < 0)
+           if ((*cb)(dst, buffer, (size_t)(bufptr - buffer)) < 0)
            {
              DEBUG_puts("1ippWriteIO: Could not write IPP attribute...");
              _cupsBufferRelease((char *)buffer);
@@ -6389,7 +6362,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
            n         = 5;
          }
 
-         if ((*cb)(dst, buffer, n) < 0)
+         if ((*cb)(dst, buffer, (size_t)n) < 0)
          {
            DEBUG_puts("1ippWriteIO: Could not write IPP end-tag...");
            _cupsBufferRelease((char *)buffer);
@@ -6448,7 +6421,7 @@ ipp_add_attr(ipp_t      *ipp,             /* I - IPP message */
     alloc_values = (num_values + IPP_MAX_VALUES - 1) & ~(IPP_MAX_VALUES - 1);
 
   attr = calloc(sizeof(ipp_attribute_t) +
-                (alloc_values - 1) * sizeof(_ipp_value_t), 1);
+                (size_t)(alloc_values - 1) * sizeof(_ipp_value_t), 1);
 
   if (attr)
   {
@@ -6580,7 +6553,7 @@ ipp_free_values(ipp_attribute_t *attr,    /* I - Attribute to free values from */
 
   if ((element + count) < attr->num_values)
     memmove(attr->values + element, attr->values + element + count,
-            (attr->num_values - count - element) * sizeof(_ipp_value_t));
+            (size_t)(attr->num_values - count - element) * sizeof(_ipp_value_t));
 
   attr->num_values -= count;
 }
@@ -6612,7 +6585,7 @@ ipp_get_code(const char *value,           /* I - Locale/charset string */
     if (*value == '_')
       *bufptr++ = '-';
     else
-      *bufptr++ = _cups_tolower(*value);
+      *bufptr++ = (char)_cups_tolower(*value);
 
   *bufptr = '\0';
 
@@ -6703,12 +6676,15 @@ ipp_length(ipp_t *ipp,                  /* I - IPP message or collection */
                   "bytes=" CUPS_LLFMT, attr->name, attr->num_values, CUPS_LLCAST bytes));
 
     if (attr->value_tag < IPP_TAG_EXTENSION)
-      bytes += attr->num_values;       /* Value tag for each value */
+      bytes += (size_t)attr->num_values;/* Value tag for each value */
     else
-      bytes += 5 * attr->num_values;   /* Value tag for each value */
-    bytes += 2 * attr->num_values;     /* Name lengths */
-    bytes += (int)strlen(attr->name);  /* Name */
-    bytes += 2 * attr->num_values;     /* Value lengths */
+      bytes += (size_t)(5 * attr->num_values);
+                                       /* Value tag for each value */
+    bytes += (size_t)(2 * attr->num_values);
+                                       /* Name lengths */
+    bytes += strlen(attr->name);       /* Name */
+    bytes += (size_t)(2 * attr->num_values);
+                                       /* Value lengths */
 
     if (collection)
       bytes += 5;                      /* Add membername overhead */
@@ -6726,11 +6702,11 @@ ipp_length(ipp_t *ipp,                  /* I - IPP message or collection */
 
       case IPP_TAG_INTEGER :
       case IPP_TAG_ENUM :
-          bytes += 4 * attr->num_values;
+          bytes += (size_t)(4 * attr->num_values);
          break;
 
       case IPP_TAG_BOOLEAN :
-          bytes += attr->num_values;
+          bytes += (size_t)attr->num_values;
          break;
 
       case IPP_TAG_TEXT :
@@ -6749,20 +6725,21 @@ ipp_length(ipp_t *ipp,                  /* I - IPP message or collection */
          break;
 
       case IPP_TAG_DATE :
-          bytes += 11 * attr->num_values;
+          bytes += (size_t)(11 * attr->num_values);
          break;
 
       case IPP_TAG_RESOLUTION :
-          bytes += 9 * attr->num_values;
+          bytes += (size_t)(9 * attr->num_values);
          break;
 
       case IPP_TAG_RANGE :
-          bytes += 8 * attr->num_values;
+          bytes += (size_t)(8 * attr->num_values);
          break;
 
       case IPP_TAG_TEXTLANG :
       case IPP_TAG_NAMELANG :
-          bytes += 4 * attr->num_values;/* Charset + text length */
+          bytes += (size_t)(4 * attr->num_values);
+                                       /* Charset + text length */
 
          for (i = 0, value = attr->values;
               i < attr->num_values;
@@ -6787,7 +6764,7 @@ ipp_length(ipp_t *ipp,                    /* I - IPP message or collection */
          for (i = 0, value = attr->values;
               i < attr->num_values;
               i ++, value ++)
-            bytes += value->unknown.length;
+            bytes += (size_t)value->unknown.length;
          break;
     }
   }
@@ -6817,8 +6794,8 @@ ipp_read_http(http_t      *http,  /* I - Client connection */
               ipp_uchar_t *buffer,     /* O - Buffer for data */
              size_t      length)       /* I - Total length */
 {
-  int  tbytes,                         /* Total bytes read */
-       bytes;                          /* Bytes read this pass */
+  ssize_t      tbytes,                 /* Total bytes read */
+               bytes;                  /* Bytes read this pass */
 
 
   DEBUG_printf(("7ipp_read_http(http=%p, buffer=%p, length=%d)",
@@ -6832,8 +6809,7 @@ ipp_read_http(http_t      *http,  /* I - Client connection */
        tbytes < (int)length;
        tbytes += bytes, buffer += bytes)
   {
-    DEBUG_printf(("9ipp_read_http: tbytes=%d, http->state=%d", tbytes,
-                  http->state));
+    DEBUG_printf(("9ipp_read_http: tbytes=" CUPS_LLFMT ", http->state=%d", CUPS_LLCAST tbytes, http->state));
 
     if (http->state == HTTP_STATE_WAITING)
       break;
@@ -6855,7 +6831,7 @@ ipp_read_http(http_t      *http,  /* I - Client connection */
       }
     }
 
-    if ((bytes = httpRead2(http, (char *)buffer, length - tbytes)) < 0)
+    if ((bytes = httpRead2(http, (char *)buffer, length - (size_t)tbytes)) < 0)
     {
 #ifdef WIN32
       break;
@@ -6877,7 +6853,7 @@ ipp_read_http(http_t      *http,  /* I - Client connection */
   if (tbytes == 0 && bytes < 0)
     tbytes = -1;
 
-  DEBUG_printf(("8ipp_read_http: Returning %d bytes", tbytes));
+  DEBUG_printf(("8ipp_read_http: Returning " CUPS_LLFMT " bytes", CUPS_LLCAST tbytes));
 
   return (tbytes);
 }
@@ -6976,8 +6952,7 @@ ipp_set_value(ipp_t           *ipp,       /* IO - IPP message */
   * Reallocate memory...
   */
 
-  if ((temp = realloc(temp, sizeof(ipp_attribute_t) +
-                           (alloc_values - 1) * sizeof(_ipp_value_t))) == NULL)
+  if ((temp = realloc(temp, sizeof(ipp_attribute_t) + (size_t)(alloc_values - 1) * sizeof(_ipp_value_t))) == NULL)
   {
     _cupsSetHTTPError(HTTP_STATUS_ERROR);
     DEBUG_puts("4ipp_set_value: Unable to resize attribute.");
@@ -6988,8 +6963,7 @@ ipp_set_value(ipp_t           *ipp,       /* IO - IPP message */
   * Zero the new memory...
   */
 
-  memset(temp->values + temp->num_values, 0,
-         (alloc_values - temp->num_values) * sizeof(_ipp_value_t));
+  memset(temp->values + temp->num_values, 0, (size_t)(alloc_values - temp->num_values) * sizeof(_ipp_value_t));
 
   if (temp != *attr)
   {
@@ -7072,5 +7046,5 @@ ipp_write_file(int         *fd,           /* I - File descriptor */
 
 
 /*
- * End of "$Id: ipp.c 11864 2014-05-08 23:10:47Z msweet $".
+ * End of "$Id: ipp.c 11840 2014-04-29 15:57:26Z msweet $".
  */
index beada0af6e86511a8e4e044ba713a3372a5997ab..c56e7abe8fca5bf5b8c6b3fabcedbbc82d019106 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: ipp.h 11734 2014-03-25 18:01:47Z msweet $"
+ * "$Id: ipp.h 11806 2014-04-09 16:12:27Z msweet $"
  *
  * Internet Printing Protocol definitions for CUPS.
  *
@@ -67,6 +67,13 @@ extern "C" {
 #  define IPP_MAX_URISCHEME    64      /* Maximum length of uriScheme values w/nul */
 #  define IPP_MAX_VALUES       8       /* Power-of-2 allocation increment */
 
+/*
+ * Macro to flag a text string attribute as "const" (static storage) vs.
+ * allocated.
+ */
+
+#  define IPP_CONST_TAG(x) (ipp_tag_t)(IPP_TAG_CUPS_CONST | (x))
+
 
 /*
  * Types and structures...
@@ -103,6 +110,8 @@ typedef enum ipp_finishings_e               /**** Finishings ****/
   IPP_FINISHINGS_BALE,                 /* Bale (any type) */
   IPP_FINISHINGS_BOOKLET_MAKER,                /* Fold to make booklet */
   IPP_FINISHINGS_JOG_OFFSET,           /* Offset for binding (any type) */
+  IPP_FINISHINGS_COAT,                 /* Apply protective liquid or powder coating */
+  IPP_FINISHINGS_LAMINATE,             /* Apply protective (solid) material */
   IPP_FINISHINGS_STAPLE_TOP_LEFT = 20, /* Staple top left corner */
   IPP_FINISHINGS_STAPLE_BOTTOM_LEFT,   /* Staple bottom left corner */
   IPP_FINISHINGS_STAPLE_TOP_RIGHT,     /* Staple top right corner */
@@ -115,6 +124,10 @@ typedef enum ipp_finishings_e              /**** Finishings ****/
   IPP_FINISHINGS_STAPLE_DUAL_TOP,      /* Two staples on top */
   IPP_FINISHINGS_STAPLE_DUAL_RIGHT,    /* Two staples on right */
   IPP_FINISHINGS_STAPLE_DUAL_BOTTOM,   /* Two staples on bottom */
+  IPP_FINISHINGS_STAPLE_TRIPLE_LEFT,   /* Three staples on left */
+  IPP_FINISHINGS_STAPLE_TRIPLE_TOP,    /* Three staples on top */
+  IPP_FINISHINGS_STAPLE_TRIPLE_RIGHT,  /* Three staples on right */
+  IPP_FINISHINGS_STAPLE_TRIPLE_BOTTOM, /* Three staples on bottom */
   IPP_FINISHINGS_BIND_LEFT = 50,       /* Bind on left */
   IPP_FINISHINGS_BIND_TOP,             /* Bind on top */
   IPP_FINISHINGS_BIND_RIGHT,           /* Bind on right */
@@ -400,7 +413,8 @@ typedef enum ipp_orient_e           /**** Orientation values ****/
   IPP_ORIENT_PORTRAIT = 3,             /* No rotation */
   IPP_ORIENT_LANDSCAPE,                        /* 90 degrees counter-clockwise */
   IPP_ORIENT_REVERSE_LANDSCAPE,                /* 90 degrees clockwise */
-  IPP_ORIENT_REVERSE_PORTRAIT          /* 180 degrees */
+  IPP_ORIENT_REVERSE_PORTRAIT,         /* 180 degrees */
+  IPP_ORIENT_NONE                      /* No rotation */
 
 #  ifndef _CUPS_NO_DEPRECATED
 #    define IPP_PORTRAIT               IPP_ORIENT_PORTRAIT
@@ -503,15 +517,21 @@ typedef enum ipp_status_e         /**** IPP status codes ****/
   IPP_STATUS_ERROR_DOCUMENT_PERMISSION,        /* client-error-document-permission-error */
   IPP_STATUS_ERROR_DOCUMENT_SECURITY,  /* client-error-document-security-error */
   IPP_STATUS_ERROR_DOCUMENT_UNPRINTABLE,/* client-error-document-unprintable-error */
-
-  /* Proposed extensions for paid printing */
+  IPP_STATUS_ERROR_ACCOUNT_INFO_NEEDED,        /* client-error-account-info-needed */
+  IPP_STATUS_ERROR_ACCOUNT_CLOSED,     /* client-error-account-closed */
+  IPP_STATUS_ERROR_ACCOUNT_LIMIT_REACHED,
+                                       /* client-error-account-limit-reached */
+  IPP_STATUS_ERROR_ACCOUNT_AUTHORIZATION_FAILED,
+                                       /* client-error-account-authorization-failed */
+
+  /* Legacy status codes for paid printing */
   IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED = 0x049C,
-                                       /* cups-error-account-info-needed @since CUPS 1.7/OS X 10.9@ */
-  IPP_STATUS_ERROR_CUPS_ACCOUNT_CLOSED,        /* cups-error-account-closed @since CUPS 1.7/OS X 10.9@ */
+                                       /* cups-error-account-info-needed @deprecated@ */
+  IPP_STATUS_ERROR_CUPS_ACCOUNT_CLOSED,        /* cups-error-account-closed @deprecate@ */
   IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED,
-                                       /* cups-error-account-limit-reached @since CUPS 1.7/OS X 10.9@ */
+                                       /* cups-error-account-limit-reached @deprecated@ */
   IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED,
-                                       /* cups-error-account-authorization-failed @since CUPS 1.7/OS X 10.9@ */
+                                       /* cups-error-account-authorization-failed @deprecated@ */
 
   IPP_STATUS_ERROR_INTERNAL = 0x0500,  /* server-error-internal-error */
   IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED,
@@ -790,6 +810,9 @@ struct _ipp_s                               /**** IPP Request/Response/Notification ****/
 
 /**** New in CUPS 1.4.4 ****/
   int                  use;            /* Use count @since CUPS 1.4.4/OS X 10.6.?@ */
+/**** New in CUPS 2.0 ****/
+  int                  atend,          /* At end of list? */
+                       curindex;       /* Current attribute index for hierarchical search */
 };
 #  endif /* _IPP_PRIVATE_STRUCTURES */
 
@@ -984,6 +1007,10 @@ extern int                ippValidateAttribute(ipp_attribute_t *attr)
 extern int             ippValidateAttributes(ipp_t *ipp) _CUPS_API_1_7;
 
 
+/**** New in CUPS 2.0 ****/
+extern const char      *ippStateString(ipp_state_t state) _CUPS_API_2_0;
+
+
 /*
  * C++ magic...
  */
@@ -994,5 +1021,5 @@ extern int         ippValidateAttributes(ipp_t *ipp) _CUPS_API_1_7;
 #endif /* !_CUPS_IPP_H_ */
 
 /*
- * End of "$Id: ipp.h 11734 2014-03-25 18:01:47Z msweet $".
+ * End of "$Id: ipp.h 11806 2014-04-09 16:12:27Z msweet $".
  */
index af641c91d4fdca83d9b734c1b5e615b0a93f6b49..420ca7e79e64152abb31275a5975988e54a5dbee 100644 (file)
@@ -1,27 +1,18 @@
 /*
- * "$Id: langprintf.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: langprintf.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Localized printf/puts functions for CUPS.
+ * Localized printf/puts functions for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 2002-2007 by Easy Software Products.
+ * Copyright 2007-2014 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/".
  *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   _cupsLangPrintError()  - Print a message followed by a standard error.
- *   _cupsLangPrintFilter() - Print a formatted filter message string to a file.
- *   _cupsLangPrintf()      - Print a formatted message string to a file.
- *   _cupsLangPuts()        - Print a static message string to a file.
- *   _cupsSetLocale()       - Set the current locale and transcode the
- *                            command-line.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -39,7 +30,7 @@ void
 _cupsLangPrintError(const char *prefix,        /* I - Non-localized message prefix */
                     const char *message)/* I - Message */
 {
-  int          bytes;                  /* Number of bytes formatted */
+  ssize_t      bytes;                  /* Number of bytes formatted */
   int          last_errno;             /* Last error */
   char         buffer[2048],           /* Message buffer */
                *bufptr,                /* Pointer into buffer */
@@ -81,7 +72,7 @@ _cupsLangPrintError(const char *prefix,       /* I - Non-localized message prefix */
   else
     bufptr = buffer;
 
-  snprintf(bufptr, sizeof(buffer) - (bufptr - buffer),
+  snprintf(bufptr, sizeof(buffer) - (size_t)(bufptr - buffer),
           /* TRANSLATORS: Message is "subject: error" */
           _cupsLangString(cg->lang_default, _("%s: %s")),
           _cupsLangString(cg->lang_default, message), strerror(last_errno));
@@ -95,7 +86,7 @@ _cupsLangPrintError(const char *prefix,       /* I - Non-localized message prefix */
                             cg->lang_default->encoding);
 
   if (bytes > 0)
-    fwrite(output, 1, bytes, stderr);
+    fwrite(output, 1, (size_t)bytes, stderr);
 }
 
 
@@ -110,7 +101,7 @@ _cupsLangPrintFilter(
     const char *message,               /* I - Message string to use */
     ...)                               /* I - Additional arguments as needed */
 {
-  int          bytes;                  /* Number of bytes formatted */
+  ssize_t      bytes;                  /* Number of bytes formatted */
   char         temp[2048],             /* Temporary format buffer */
                buffer[2048],           /* Message buffer */
                output[8192];           /* Output buffer */
@@ -152,9 +143,9 @@ _cupsLangPrintFilter(
   */
 
   if (bytes > 0)
-    return ((int)fwrite(output, 1, bytes, fp));
+    return ((int)fwrite(output, 1, (size_t)bytes, fp));
   else
-    return (bytes);
+    return ((int)bytes);
 }
 
 
@@ -167,7 +158,7 @@ _cupsLangPrintf(FILE       *fp,             /* I - File to write to */
                const char *message,    /* I - Message string to use */
                ...)                    /* I - Additional arguments as needed */
 {
-  int          bytes;                  /* Number of bytes formatted */
+  ssize_t      bytes;                  /* Number of bytes formatted */
   char         buffer[2048],           /* Message buffer */
                output[8192];           /* Output buffer */
   va_list      ap;                     /* Pointer to additional arguments */
@@ -209,9 +200,9 @@ _cupsLangPrintf(FILE       *fp,             /* I - File to write to */
   */
 
   if (bytes > 0)
-    return ((int)fwrite(output, 1, bytes, fp));
+    return ((int)fwrite(output, 1, (size_t)bytes, fp));
   else
-    return (bytes);
+    return ((int)bytes);
 }
 
 
@@ -223,7 +214,7 @@ int                                 /* O - Number of bytes written */
 _cupsLangPuts(FILE       *fp,          /* I - File to write to */
               const char *message)     /* I - Message string to use */
 {
-  int          bytes;                  /* Number of bytes formatted */
+  ssize_t      bytes;                  /* Number of bytes formatted */
   char         output[8192];           /* Message buffer */
   _cups_globals_t *cg;                 /* Global data */
 
@@ -248,18 +239,16 @@ _cupsLangPuts(FILE       *fp,             /* I - File to write to */
                            (cups_utf8_t *)_cupsLangString(cg->lang_default,
                                                           message),
                            sizeof(output) - 4, cg->lang_default->encoding);
-  bytes += cupsUTF8ToCharset(output + bytes, (cups_utf8_t *)"\n",
-                             sizeof(output) - bytes,
-                            cg->lang_default->encoding);
+  bytes += cupsUTF8ToCharset(output + bytes, (cups_utf8_t *)"\n", (int)(sizeof(output) - (size_t)bytes), cg->lang_default->encoding);
 
  /*
   * Write the string and return the number of bytes written...
   */
 
   if (bytes > 0)
-    return ((int)fwrite(output, 1, bytes, fp));
+    return ((int)fwrite(output, 1, (size_t)bytes, fp));
   else
-    return (bytes);
+    return ((int)bytes);
 }
 
 
@@ -301,7 +290,7 @@ _cupsSetLocale(char *argv[])                /* IO - Command-line arguments */
     if ((charset = strchr(new_lc_time, '.')) == NULL)
       charset = new_lc_time + strlen(new_lc_time);
 
-    strlcpy(charset, ".UTF-8", sizeof(new_lc_time) - (charset - new_lc_time));
+    strlcpy(charset, ".UTF-8", sizeof(new_lc_time) - (size_t)(charset - new_lc_time));
   }
   else
     strlcpy(new_lc_time, "C", sizeof(new_lc_time));
@@ -348,5 +337,5 @@ _cupsSetLocale(char *argv[])                /* IO - Command-line arguments */
 
 
 /*
- * End of "$Id: langprintf.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: langprintf.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 0836f6d96f91022bd35676056da9e85bc25fcaab..035f9d259963cd8bf1ac0db4ef087a5634222285 100644 (file)
@@ -1,43 +1,18 @@
 /*
- * "$Id: language.c 11424 2013-11-08 19:51:01Z msweet $"
+ * "$Id: language.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   I18N/language support for CUPS.
+ * I18N/language support for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   _cupsAppleLanguage()   - Get the Apple language identifier associated with
- *                           a locale ID.
- *   _cupsEncodingName()    - Return the character encoding name string for the
- *                           given encoding enumeration.
- *   cupsLangDefault()     - Return the default language.
- *   cupsLangEncoding()     - Return the character encoding (us-ascii, etc.)
- *                           for the given language.
- *   cupsLangFlush()       - Flush all language data out of the cache.
- *   cupsLangFree()        - Free language data.
- *   cupsLangGet()         - Get a language.
- *   _cupsLangString()     - Get a message string.
- *   _cupsMessageFree()     - Free a messages array.
- *   _cupsMessageLoad()     - Load a .po file into a messages array.
- *   _cupsMessageLookup()   - Lookup a message string.
- *   _cupsMessageNew()     - Make a new message catalog array.
- *   appleLangDefault()     - Get the default locale string.
- *   appleMessageLoad()     - Load a message catalog from a localizable bundle.
- *   cups_cache_lookup()    - Lookup a language in the cache...
- *   cups_message_compare() - Compare two messages.
- *   cups_message_free()    - Free a message.
- *   cups_message_load()    - Load the message catalog for a language.
- *   cups_unquote()        - Unquote characters in strings...
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -227,8 +202,8 @@ _cupsAppleLanguage(const char *locale,      /* I - Locale ID */
          */
 
          language[2] = '_';
-         language[3] = toupper(language[3] & 255);
-         language[4] = toupper(language[4] & 255);
+         language[3] = (char)toupper(language[3] & 255);
+         language[4] = (char)toupper(language[4] & 255);
        }
        break;
   }
@@ -253,7 +228,7 @@ _cupsAppleLanguage(const char *locale,      /* I - Locale ID */
     if ((langid = CFLocaleCreateCanonicalLanguageIdentifierFromString(
                       kCFAllocatorDefault, localeid)) != NULL)
     {
-      CFStringGetCString(langid, language, langsize, kCFStringEncodingASCII);
+      CFStringGetCString(langid, language, (CFIndex)langsize, kCFStringEncodingASCII);
       CFRelease(langid);
     }
 
@@ -278,8 +253,8 @@ const char *                                /* O - Character encoding */
 _cupsEncodingName(
     cups_encoding_t encoding)          /* I - Encoding value */
 {
-  if (encoding < 0 ||
-      encoding >= (sizeof(lang_encodings) / sizeof(const char *)))
+  if (encoding < CUPS_US_ASCII ||
+      encoding >= (cups_encoding_t)(sizeof(lang_encodings) / sizeof(lang_encodings[0])))
   {
     DEBUG_printf(("1_cupsEncodingName(encoding=%d) = out of range (\"%s\")",
                   encoding, lang_encodings[0]));
@@ -608,7 +583,7 @@ cupsLangGet(const char *language)   /* I - Language or locale */
       if (*language == '_' || *language == '-' || *language == '.')
        break;
       else if (ptr < (langname + sizeof(langname) - 1))
-        *ptr++ = tolower(*language & 255);
+        *ptr++ = (char)tolower(*language & 255);
 
     *ptr = '\0';
 
@@ -622,7 +597,7 @@ cupsLangGet(const char *language)   /* I - Language or locale */
        if (*language == '.')
          break;
        else if (ptr < (country + sizeof(country) - 1))
-          *ptr++ = toupper(*language & 255);
+          *ptr++ = (char)toupper(*language & 255);
 
       *ptr = '\0';
     }
@@ -635,7 +610,7 @@ cupsLangGet(const char *language)   /* I - Language or locale */
 
       for (language ++, ptr = charset; *language; language ++)
         if (_cups_isalnum(*language) && ptr < (charset + sizeof(charset) - 1))
-          *ptr++ = toupper(*language & 255);
+          *ptr++ = (char)toupper(*language & 255);
 
       *ptr = '\0';
     }
@@ -846,8 +821,8 @@ _cupsMessageLoad(const char *filename,      /* I - Message catalog to load */
   char                 s[4096],        /* String buffer */
                        *ptr,           /* Pointer into buffer */
                        *temp;          /* New string */
-  int                  length;         /* Length of combined strings */
-  size_t               ptrlen;         /* Length of string */
+  size_t               length,         /* Length of combined strings */
+                       ptrlen;         /* Length of string */
 
 
   DEBUG_printf(("4_cupsMessageLoad(filename=\"%s\")", filename));
@@ -978,11 +953,10 @@ _cupsMessageLoad(const char *filename,    /* I - Message catalog to load */
       * Append to current string...
       */
 
-      length = (int)strlen(m->str ? m->str : m->id);
+      length = strlen(m->str ? m->str : m->id);
       ptrlen = strlen(ptr);
 
-      if ((temp = realloc(m->str ? m->str : m->id,
-                          length + ptrlen + 1)) == NULL)
+      if ((temp = realloc(m->str ? m->str : m->id, length + ptrlen + 1)) == NULL)
       {
         if (m->str)
          free(m->str);
@@ -1351,7 +1325,7 @@ appleMessageLoad(const char *locale)      /* I - Locale ID */
 
   url = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault,
                                                 (UInt8 *)filename,
-                                               strlen(filename), false);
+                                               (CFIndex)strlen(filename), false);
   if (url)
   {
     stream = CFReadStreamCreateWithFile(kCFAllocatorDefault, url);
@@ -1586,5 +1560,5 @@ cups_unquote(char       *d,               /* O - Unquoted string */
 
 
 /*
- * End of "$Id: language.c 11424 2013-11-08 19:51:01Z msweet $".
+ * End of "$Id: language.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index f3ea9ff6c841d1b4020bb68781bd21ef6b5897ea..66ab4ad663b6a68865dd7153d7a4eaf0135b9b39 100644 (file)
-LIBRARY libcups2\r
-VERSION 2.10\r
-EXPORTS\r
-_cupsBufferGet\r
-_cupsBufferRelease\r
-_cupsGet1284Values\r
-_cupsGetDests\r
-_cupsGetPassword\r
-_cupsGlobals\r
-_cupsLangPrintError\r
-_cupsLangPrintf\r
-_cupsLangPuts\r
-_cupsLangString\r
-_cupsMD5Append\r
-_cupsMD5Finish\r
-_cupsMD5Init\r
-_cupsMessageFree\r
-_cupsMessageLoad\r
-_cupsMessageLookup\r
-_cupsMutexLock\r
-_cupsMutexUnlock\r
-_cupsNextDelay\r
-_cupsSetError\r
-_cupsSetLocale\r
-_cupsStrAlloc\r
-_cupsStrDate\r
-_cupsStrFlush\r
-_cupsStrFormatd\r
-_cupsStrFree\r
-_cupsStrRetain\r
-_cupsStrScand\r
-_cupsStrStatistics\r
-_cups_strcasecmp\r
-_cups_strncasecmp\r
-_cups_strcpy\r
-_cups_strlcat\r
-_cups_strlcpy\r
-_httpAddrSetPort\r
-_httpAssembleUUID\r
-_httpEncodeURI\r
-_httpResolveURI\r
-_httpWait\r
-_ippFindOption\r
-_ppdCacheCreateWithFile\r
-_ppdCacheCreateWithPPD\r
-_ppdCacheDestroy\r
-_ppdCacheGetBin\r
-_ppdCacheGetInputSlot\r
-_ppdCacheGetMediaType\r
-_ppdCacheGetOutputBin\r
-_ppdCacheGetPageSize\r
-_ppdCacheGetSize\r
-_ppdCacheGetSource\r
-_ppdCacheGetType\r
-_ppdCacheWriteFile\r
-_ppdFreeLanguages\r
-_ppdGetEncoding\r
-_ppdGetLanguages\r
-_ppdHashName\r
-_ppdLocalizedAttr\r
-_ppdNormalizeMakeAndModel\r
-_ppdOpen\r
-_ppdOpenFile\r
-_ppdParseOptions\r
-_pwgMediaTable\r
-cupsAddDest\r
-cupsAddOption\r
-cupsAdminCreateWindowsPPD\r
-cupsAdminExportSamba\r
-cupsArrayAdd\r
-cupsArrayClear\r
-cupsArrayCount\r
-cupsArrayCurrent\r
-cupsArrayDelete\r
-cupsArrayDup\r
-cupsArrayFind\r
-cupsArrayFirst\r
-cupsArrayGetIndex\r
-cupsArrayGetInsert\r
-cupsArrayIndex\r
-cupsArrayInsert\r
-cupsArrayLast\r
-cupsArrayNew\r
-cupsArrayNew2\r
-cupsArrayNew3\r
-cupsArrayNext\r
-cupsArrayPrev\r
-cupsArrayRemove\r
-cupsArrayRestore\r
-cupsArraySave\r
-cupsArrayUserData\r
-cupsCancelJob\r
-cupsCharsetToUTF8\r
-cupsDirClose\r
-cupsDirOpen\r
-cupsDirRead\r
-cupsDirRewind\r
-cupsDoAuthentication\r
-cupsDoFileRequest\r
-cupsDoIORequest\r
-cupsDoRequest\r
-cupsEncodeOptions\r
-cupsEncodeOptions2\r
-cupsEncryption\r
-cupsFileClose\r
-cupsFileCompression\r
-cupsFileEOF\r
-cupsFileFind\r
-cupsFileFlush\r
-cupsFileGetChar\r
-cupsFileGetConf\r
-cupsFileGetLine\r
-cupsFileGets\r
-cupsFileLock\r
-cupsFileNumber\r
-cupsFileOpen\r
-cupsFileOpenFd\r
-cupsFilePeekChar\r
-cupsFilePrintf\r
-cupsFilePutChar\r
-cupsFilePuts\r
-cupsFileRead\r
-cupsFileRewind\r
-cupsFileSeek\r
-cupsFileStderr\r
-cupsFileStdin\r
-cupsFileStdout\r
-cupsFileTell\r
-cupsFileUnlock\r
-cupsFileWrite\r
-cupsFindDestDefault\r
-cupsFindDestReady\r
-cupsFindDestSupported\r
-cupsFreeDests\r
-cupsFreeJobs\r
-cupsFreeOptions\r
-cupsGetClasses\r
-cupsGetDefault\r
-cupsGetDefault2\r
-cupsGetDest\r
-cupsGetDestMediaByIndex\r
-cupsGetDestMediaCount\r
-cupsGetDestMediaDefault\r
-cupsGetDests\r
-cupsGetDests2\r
-cupsGetFd\r
-cupsGetFile\r
-cupsGetJobs\r
-cupsGetJobs2\r
-cupsGetOption\r
-cupsGetPPD\r
-cupsGetPPD2\r
-cupsGetPassword\r
-cupsGetPrinters\r
-cupsGetResponse\r
-cupsLangDefault\r
-cupsLangEncoding\r
-cupsLangFlush\r
-cupsLangFree\r
-cupsLangGet\r
-cupsLastError\r
-cupsLastErrorString\r
-cupsMarkOptions\r
-cupsNotifySubject\r
-cupsNotifyText\r
-cupsParseOptions\r
-cupsPrintFile\r
-cupsPrintFile2\r
-cupsPrintFiles\r
-cupsPrintFiles2\r
-cupsPutFd\r
-cupsPutFile\r
-cupsRemoveOption\r
-cupsResolveConflicts\r
-cupsSendRequest\r
-cupsServer\r
-cupsSetClientCertCB\r
-cupsSetCredentials\r
-cupsSetDests\r
-cupsSetDests2\r
-cupsSetEncryption\r
-cupsSetPasswordCB\r
-cupsSetServer\r
-cupsSetServerCertCB\r
-cupsSetUser\r
-cupsSetUserAgent\r
-cupsTempFd\r
-cupsTempFile\r
-cupsTempFile2\r
-cupsUserAgent\r
-cupsUTF32ToUTF8\r
-cupsUTF8ToCharset\r
-cupsUTF8ToUTF32\r
-cupsUser\r
-cupsWriteRequestData\r
-httpAcceptConnection\r
-httpAddCredential\r
-httpAddrAny\r
-httpAddrConnect\r
-httpAddrCopyList\r
-httpAddrEqual\r
-httpAddrFreeList\r
-httpAddrGetList\r
-httpAddrLength\r
-httpAddrListen\r
-httpAddrLocalhost\r
-httpAddrLookup\r
-httpAddrPort\r
-httpAddrString\r
-httpAssembleURI\r
-httpAssembleURIf\r
-httpAssembleUUID\r
-httpBlocking\r
-httpCheck\r
-httpClearCookie\r
-httpClearFields\r
-httpClose\r
-httpConnect\r
-httpConnect2\r
-httpConnectEncrypt\r
-httpCopyCredentials\r
-httpDecode64\r
-httpDecode64_2\r
-httpDelete\r
-httpEncode64\r
-httpEncode64_2\r
-httpEncryption\r
-httpError\r
-httpFlush\r
-httpFlushWrite\r
-httpFreeCredentials\r
-httpGet\r
-httpGetBlocking\r
-httpGetContentEncoding\r
-httpGetCookie\r
-httpGetDateString\r
-httpGetDateString2\r
-httpGetDateTime\r
-httpGetExpect\r
-httpGetFd\r
-httpGetField\r
-httpGetHostByName\r
-httpGetHostname\r
-httpGetLength\r
-httpGetLength2\r
-httpGetStatus\r
-httpGetSubField\r
-httpGetSubField2\r
-httpGets\r
-httpHead\r
-httpInitialize\r
-httpMD5\r
-httpMD5Final\r
-httpMD5String\r
-httpOptions\r
-httpPeek\r
-httpPost\r
-httpPrintf\r
-httpPut\r
-httpRead\r
-httpRead2\r
-httpReadRequest\r
-httpReconnect\r
-httpSeparate\r
-httpSeparate2\r
-httpSeparateURI\r
-httpSetCookie\r
-httpSetCredentials\r
-httpSetDefaultField\r
-httpSetExpect\r
-httpSetField\r
-httpSetLength\r
-httpSetTimeout\r
-httpStatus\r
-httpTrace\r
-httpUpdate\r
-httpWait\r
-httpWrite\r
-httpWrite2\r
-httpWriteResponse\r
-ippAddBoolean\r
-ippAddBooleans\r
-ippAddCollection\r
-ippAddCollections\r
-ippAddDate\r
-ippAddInteger\r
-ippAddIntegers\r
-ippAddOctetString\r
-ippAddOutOfBand\r
-ippAddRange\r
-ippAddRanges\r
-ippAddResolution\r
-ippAddResolutions\r
-ippAddSeparator\r
-ippAddString\r
-ippAddStringf\r
-ippAddStringfv\r
-ippAddStrings\r
-ippAttributeString\r
-ippContainsInteger\r
-ippContainsString\r
-ippCopyAttribute\r
-ippCopyAttributes\r
-ippCreateRequestedArray\r
-ippDateToTime\r
-ippDelete\r
-ippDeleteAttribute\r
-ippDeleteValues\r
-ippEnumString\r
-ippEnumValue\r
-ippErrorString\r
-ippErrorValue\r
-ippFindAttribute\r
-ippFindNextAttribute\r
-ippFirstAttribute\r
-ippGetBoolean\r
-ippGetCollection\r
-ippGetCount\r
-ippGetDate\r
-ippGetGroupTag\r
-ippGetInteger\r
-ippGetName\r
-ippGetOctetString\r
-ippGetOperation\r
-ippGetRange\r
-ippGetRequestId\r
-ippGetResolution\r
-ippGetState\r
-ippGetStatusCode\r
-ippGetString\r
-ippGetValueTag\r
-ippGetVersion\r
-ippLength\r
-ippNew\r
-ippNewRequest\r
-ippNewResponse\r
-ippNextAttribute\r
-ippOpString\r
-ippOpValue\r
-ippPort\r
-ippRead\r
-ippReadFile\r
-ippReadIO\r
-ippSetPort\r
-ippSetBoolean\r
-ippSetCollection\r
-ippSetDate\r
-ippSetGroupTag\r
-ippSetInteger\r
-ippSetName\r
-ippSetOctetString\r
-ippSetOperation\r
-ippSetRange\r
-ippSetRequestId\r
-ippSetResolution\r
-ippSetState\r
-ippSetStatusCode\r
-ippSetString\r
-ippSetStringf\r
-ippSetStringfv\r
-ippSetValueTag\r
-ippSetVersion\r
-ippTagString\r
-ippTagValue\r
-ippTimeToDate\r
-ippValidateAttribute\r
-ippValidateAttributes\r
-ippWrite\r
-ippWriteFile\r
-ippWriteIO\r
-ppdClose\r
-ppdCollect\r
-ppdCollect2\r
-ppdConflicts\r
-ppdEmit\r
-ppdEmitAfterOrder\r
-ppdEmitFd\r
-ppdEmitJCL\r
-ppdEmitJCLEnd\r
-ppdEmitString\r
-ppdErrorString\r
-ppdFindAttr\r
-ppdFindChoice\r
-ppdFindCustomOption\r
-ppdFindCustomParam\r
-ppdFindMarkedChoice\r
-ppdFindNextAttr\r
-ppdFindOption\r
-ppdFirstCustomParam\r
-ppdFirstOption\r
-ppdIsMarked\r
-ppdLastError\r
-ppdLocalize\r
-ppdMarkDefaults\r
-ppdMarkOption\r
-ppdNextCustomParam\r
-ppdNextOption\r
-ppdOpen\r
-ppdOpen2\r
-ppdOpenFd\r
-ppdOpenFile\r
-ppdPageLength\r
-ppdPageSize\r
-ppdPageWidth\r
-ppdSetConformance\r
-pwgFormatSizeName\r
-pwgInitSize\r
-pwgMediaForLegacy\r
-pwgMediaForPPD\r
-pwgMediaForPWG\r
-pwgMediaForSize\r
+LIBRARY libcups2
+VERSION 2.11
+EXPORTS
+_cupsArrayAddStrings
+_cupsArrayNewStrings
+_cupsBufferGet
+_cupsBufferRelease
+_cupsCharmapFlush
+_cupsConnect
+_cupsEncodingName
+_cupsGet1284Values
+_cupsGetDestResource
+_cupsGetDests
+_cupsGetPassword
+_cupsGlobalLock
+_cupsGlobalUnlock
+_cupsGlobals
+_cupsLangPrintError
+_cupsLangPrintf
+_cupsLangPuts
+_cupsLangString
+_cupsMD5Append
+_cupsMD5Finish
+_cupsMD5Init
+_cupsMessageFree
+_cupsMessageLoad
+_cupsMessageLookup
+_cupsMessageNew
+_cupsMutexInit
+_cupsMutexLock
+_cupsMutexUnlock
+_cupsNextDelay
+_cupsRWInit
+_cupsRWLockRead
+_cupsRWLockWrite
+_cupsRWUnlock
+_cupsSNMPClose
+_cupsSNMPCopyOID
+_cupsSNMPDefaultCommunity
+_cupsSNMPIsOID
+_cupsSNMPIsOIDPrefixed
+_cupsSNMPOIDToString
+_cupsSNMPOpen
+_cupsSNMPRead
+_cupsSNMPSetDebug
+_cupsSNMPStringToOID
+_cupsSNMPWalk
+_cupsSNMPWrite
+_cupsSetDefaults
+_cupsSetError
+_cupsSetHTTPError
+_cupsSetLocale
+_cupsStrAlloc
+_cupsStrDate
+_cupsStrFlush
+_cupsStrFormatd
+_cupsStrFree
+_cupsStrRetain
+_cupsStrScand
+_cupsStrStatistics
+_cupsThreadCreate
+_cupsUserDefault
+_cups_strcasecmp
+_cups_strcpy
+_cups_strcpy
+_cups_strlcat
+_cups_strlcpy
+_cups_strncasecmp
+_httpAddrSetPort
+_httpCreateCredentials
+_httpDecodeURI
+_httpDisconnect
+_httpEncodeURI
+_httpFreeCredentials
+_httpResolveURI
+_httpStatus
+_httpTLSInitialize
+_httpTLSPending
+_httpTLSRead
+_httpTLSStart
+_httpTLSStop
+_httpTLSWrite
+_httpUpdate
+_httpWait
+_ippCheckOptions
+_ippFindOption
+_ppdCacheCreateWithFile
+_ppdCacheCreateWithPPD
+_ppdCacheDestroy
+_ppdCacheGetBin
+_ppdCacheGetFinishingOptions
+_ppdCacheGetFinishingValues
+_ppdCacheGetInputSlot
+_ppdCacheGetMediaType
+_ppdCacheGetOutputBin
+_ppdCacheGetPageSize
+_ppdCacheGetSize
+_ppdCacheGetSource
+_ppdCacheGetType
+_ppdCacheWriteFile
+_ppdFreeLanguages
+_ppdGetEncoding
+_ppdGetLanguages
+_ppdHashName
+_ppdLocalizedAttr
+_ppdNormalizeMakeAndModel
+_ppdOpen
+_ppdOpenFile
+_ppdParseOptions
+_pwgGenerateSize
+_pwgInitSize
+_pwgInputSlotForSource
+_pwgMediaForLegacy
+_pwgMediaForPPD
+_pwgMediaForPWG
+_pwgMediaForSize
+_pwgMediaNearSize
+_pwgMediaTable
+_pwgMediaTypeForType
+_pwgPageSizeForMedia
+cupsAddDest
+cupsAddOption
+cupsAdminCreateWindowsPPD
+cupsAdminExportSamba
+cupsAdminGetServerSettings
+cupsAdminSetServerSettings
+cupsArrayAdd
+cupsArrayClear
+cupsArrayCount
+cupsArrayCurrent
+cupsArrayDelete
+cupsArrayDup
+cupsArrayFind
+cupsArrayFirst
+cupsArrayGetIndex
+cupsArrayGetInsert
+cupsArrayIndex
+cupsArrayInsert
+cupsArrayLast
+cupsArrayNew
+cupsArrayNew2
+cupsArrayNew3
+cupsArrayNext
+cupsArrayPrev
+cupsArrayRemove
+cupsArrayRestore
+cupsArraySave
+cupsArrayUserData
+cupsCancelDestJob
+cupsCancelJob
+cupsCancelJob2
+cupsCharsetToUTF8
+cupsCheckDestSupported
+cupsCloseDestJob
+cupsConnectDest
+cupsCopyDest
+cupsCopyDestConflicts
+cupsCopyDestInfo
+cupsCreateDestJob
+cupsCreateJob
+cupsDirClose
+cupsDirOpen
+cupsDirRead
+cupsDirRewind
+cupsDoAuthentication
+cupsDoFileRequest
+cupsDoIORequest
+cupsDoRequest
+cupsEncodeOptions
+cupsEncodeOptions2
+cupsEncryption
+cupsEnumDests
+cupsFileClose
+cupsFileCompression
+cupsFileEOF
+cupsFileFind
+cupsFileFlush
+cupsFileGetChar
+cupsFileGetConf
+cupsFileGetLine
+cupsFileGets
+cupsFileLock
+cupsFileNumber
+cupsFileOpen
+cupsFileOpenFd
+cupsFilePeekChar
+cupsFilePrintf
+cupsFilePutChar
+cupsFilePutConf
+cupsFilePuts
+cupsFileRead
+cupsFileRewind
+cupsFileSeek
+cupsFileStderr
+cupsFileStdin
+cupsFileStdout
+cupsFileTell
+cupsFileUnlock
+cupsFileWrite
+cupsFindDestDefault
+cupsFindDestReady
+cupsFindDestSupported
+cupsFinishDestDocument
+cupsFinishDocument
+cupsFreeDestInfo
+cupsFreeDests
+cupsFreeJobs
+cupsFreeOptions
+cupsGetClasses
+cupsGetConflicts
+cupsGetDefault
+cupsGetDefault2
+cupsGetDest
+cupsGetDestMediaByIndex
+cupsGetDestMediaByName
+cupsGetDestMediaBySize
+cupsGetDestMediaCount
+cupsGetDestMediaDefault
+cupsGetDestWithURI
+cupsGetDests
+cupsGetDests2
+cupsGetDevices
+cupsGetFd
+cupsGetFile
+cupsGetJobs
+cupsGetJobs2
+cupsGetNamedDest
+cupsGetOption
+cupsGetPPD
+cupsGetPPD2
+cupsGetPPD3
+cupsGetPassword
+cupsGetPassword2
+cupsGetPrinters
+cupsGetResponse
+cupsGetServerPPD
+cupsLangDefault
+cupsLangEncoding
+cupsLangFlush
+cupsLangFree
+cupsLangGet
+cupsLastError
+cupsLastErrorString
+cupsLocalizeDestMedia
+cupsLocalizeDestOption
+cupsLocalizeDestValue
+cupsMakeServerCredentials
+cupsMarkOptions
+cupsNotifySubject
+cupsNotifyText
+cupsParseOptions
+cupsPrintFile
+cupsPrintFile2
+cupsPrintFiles
+cupsPrintFiles2
+cupsPutFd
+cupsPutFile
+cupsReadResponseData
+cupsRemoveDest
+cupsRemoveOption
+cupsResolveConflicts
+cupsSendRequest
+cupsServer
+cupsSetClientCertCB
+cupsSetCredentials
+cupsSetDefaultDest
+cupsSetDests
+cupsSetDests2
+cupsSetEncryption
+cupsSetPasswordCB
+cupsSetPasswordCB2
+cupsSetServer
+cupsSetServerCertCB
+cupsSetServerCredentials
+cupsSetUser
+cupsSetUserAgent
+cupsStartDestDocument
+cupsStartDocument
+cupsTempFd
+cupsTempFile
+cupsTempFile2
+cupsUTF32ToUTF8
+cupsUTF8ToCharset
+cupsUTF8ToUTF32
+cupsUser
+cupsUserAgent
+cupsWriteRequestData
+httpAcceptConnection
+httpAddCredential
+httpAddrAny
+httpAddrClose
+httpAddrConnect
+httpAddrConnect2
+httpAddrCopyList
+httpAddrEqual
+httpAddrFamily
+httpAddrFreeList
+httpAddrGetList
+httpAddrLength
+httpAddrListen
+httpAddrLocalhost
+httpAddrLookup
+httpAddrPort
+httpAddrString
+httpAssembleURI
+httpAssembleURIf
+httpAssembleUUID
+httpBlocking
+httpCheck
+httpClearCookie
+httpClearFields
+httpClose
+httpCompareCredentials
+httpConnect
+httpConnect2
+httpConnectEncrypt
+httpCopyCredentials
+httpCredentialsAreValidForName
+httpCredentialsGetExpiration
+httpCredentialsGetTrust
+httpCredentialsString
+httpDecode64
+httpDecode64_2
+httpDelete
+httpEncode64
+httpEncode64_2
+httpEncryption
+httpError
+httpFieldValue
+httpFlush
+httpFlushWrite
+httpFreeCredentials
+httpGet
+httpGetActivity
+httpGetAddress
+httpGetAuthString
+httpGetBlocking
+httpGetContentEncoding
+httpGetCookie
+httpGetDateString
+httpGetDateString2
+httpGetDateTime
+httpGetEncryption
+httpGetExpect
+httpGetFd
+httpGetField
+httpGetHostByName
+httpGetHostname
+httpGetKeepAlive
+httpGetLength
+httpGetLength2
+httpGetPending
+httpGetReady
+httpGetRemaining
+httpGetState
+httpGetStatus
+httpGetSubField
+httpGetSubField2
+httpGetVersion
+httpGets
+httpHead
+httpInitialize
+httpIsChunked
+httpIsEncrypted
+httpLoadCredentials
+httpMD5
+httpMD5Final
+httpMD5String
+httpOptions
+httpPeek
+httpPost
+httpPrintf
+httpPut
+httpRead
+httpRead2
+httpReadRequest
+httpReconnect
+httpReconnect2
+httpResolveHostname
+httpSaveCredentials
+httpSeparate
+httpSeparate2
+httpSeparateURI
+httpSetAuthString
+httpSetCookie
+httpSetCredentials
+httpSetDefaultField
+httpSetExpect
+httpSetField
+httpSetKeepAlive
+httpSetLength
+httpSetTimeout
+httpShutdown
+httpStateString
+httpStatus
+httpTrace
+httpURIStatusString
+httpUpdate
+httpWait
+httpWrite
+httpWrite2
+httpWriteResponse
+ippAddBoolean
+ippAddBooleans
+ippAddCollection
+ippAddCollections
+ippAddDate
+ippAddInteger
+ippAddIntegers
+ippAddOctetString
+ippAddOutOfBand
+ippAddRange
+ippAddRanges
+ippAddResolution
+ippAddResolutions
+ippAddSeparator
+ippAddString
+ippAddStringf
+ippAddStringfv
+ippAddStrings
+ippAttributeString
+ippContainsInteger
+ippContainsString
+ippCopyAttribute
+ippCopyAttributes
+ippCreateRequestedArray
+ippDateToTime
+ippDelete
+ippDeleteAttribute
+ippDeleteValues
+ippEnumString
+ippEnumValue
+ippErrorString
+ippErrorValue
+ippFindAttribute
+ippFindNextAttribute
+ippFirstAttribute
+ippGetBoolean
+ippGetCollection
+ippGetCount
+ippGetDate
+ippGetGroupTag
+ippGetInteger
+ippGetName
+ippGetOctetString
+ippGetOperation
+ippGetRange
+ippGetRequestId
+ippGetResolution
+ippGetState
+ippGetStatusCode
+ippGetString
+ippGetValueTag
+ippGetVersion
+ippLength
+ippNew
+ippNewRequest
+ippNewResponse
+ippNextAttribute
+ippOpString
+ippOpValue
+ippPort
+ippRead
+ippReadFile
+ippReadIO
+ippSetBoolean
+ippSetCollection
+ippSetDate
+ippSetGroupTag
+ippSetInteger
+ippSetName
+ippSetOctetString
+ippSetOperation
+ippSetPort
+ippSetRange
+ippSetRequestId
+ippSetResolution
+ippSetState
+ippSetStatusCode
+ippSetString
+ippSetStringf
+ippSetStringfv
+ippSetValueTag
+ippSetVersion
+ippStateString
+ippTagString
+ippTagValue
+ippTimeToDate
+ippValidateAttribute
+ippValidateAttributes
+ippWrite
+ippWriteFile
+ippWriteIO
+ppdClose
+ppdCollect
+ppdCollect2
+ppdConflicts
+ppdEmit
+ppdEmitAfterOrder
+ppdEmitFd
+ppdEmitJCL
+ppdEmitJCLEnd
+ppdEmitString
+ppdErrorString
+ppdFindAttr
+ppdFindChoice
+ppdFindCustomOption
+ppdFindCustomParam
+ppdFindMarkedChoice
+ppdFindNextAttr
+ppdFindOption
+ppdFirstCustomParam
+ppdFirstOption
+ppdInstallableConflict
+ppdIsMarked
+ppdLastError
+ppdLocalize
+ppdLocalizeAttr
+ppdLocalizeIPPReason
+ppdLocalizeMarkerName
+ppdMarkDefaults
+ppdMarkOption
+ppdNextCustomParam
+ppdNextOption
+ppdOpen
+ppdOpen2
+ppdOpenFd
+ppdOpenFile
+ppdPageLength
+ppdPageSize
+ppdPageSizeLimits
+ppdPageWidth
+ppdSetConformance
+pwgFormatSizeName
+pwgInitSize
+pwgMediaForLegacy
+pwgMediaForPPD
+pwgMediaForPWG
+pwgMediaForSize
diff --git a/cups/libcups_s.exp b/cups/libcups_s.exp
deleted file mode 100644 (file)
index b8b2207..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-_cups_debug_fd
-_cupsBufferGet
-_cupsBufferRelease
-_cupsGet1284Values
-_cupsGetDests
-_cupsGetPassword
-_cupsGlobals
-_cupsLangPrintError
-_cupsLangPrintf
-_cupsLangPuts
-_cupsLangString
-_cupsMD5Append
-_cupsMD5Finish
-_cupsMD5Init
-_cupsMessageFree
-_cupsMessageLoad
-_cupsMessageLookup
-_cupsNextDelay
-_cupsSetError
-_cupsSetLocale
-_cupsSNMPClose
-_cupsSNMPCopyOID
-_cupsSNMPDefaultCommunity
-_cupsSNMPIsOID
-_cupsSNMPIsOIDPrefixed
-_cupsSNMPOIDToString
-_cupsSNMPOpen
-_cupsSNMPRead
-_cupsSNMPSetDebug
-_cupsSNMPStringToOID
-_cupsSNMPWalk
-_cupsSNMPWrite
-_cupsStrAlloc
-_cupsStrFlush
-_cupsStrFormatd
-_cupsStrFree
-_cupsStrRetain
-_cupsStrScand
-_cupsStrStatistics
-_cups_getifaddrs
-_cups_freeifaddrs
-_cups_strcpy
-_cups_strlcat
-_cups_strlcpy
-_httpAddrPort
-_httpAddrSetPort
-_httpAssembleUUID
-_httpBIOMethods
-_httpCreate
-_httpEncodeURI
-_httpPeek
-_httpResolveURI
-_httpSetTimeout
-_httpWait
-_ippFindOption
-_ppdFreeLanguages
-_ppdGetEncoding
-_ppdGetLanguages
-_ppdHashName
-_ppdLocalizedAttr
-_ppdNormalizeMakeAndModel
-_ppdOpen
-_ppdOpenFile
-_ppdParseOptions
-_pwgCreateWithFile
-_pwgDestroy
-_pwgWriteFile
-_pwgGenerateSize
-_pwgInitSize
-_pwgMediaForLegacy
-_pwgMediaForPPD
-_pwgMediaForPWG
-_pwgMediaForSize
-_pwgCreateWithPPD
-_pwgGetBin
-_pwgGetInputSlot
-_pwgGetMediaType
-_pwgGetOutputBin
-_pwgGetPageSize
-_pwgGetSize
-_pwgGetSource
-_pwgGetType
-_pwgInputSlotForSource
-_pwgMediaTypeForType
-_pwgPageSizeForMedia
index 5a9b55f95008e91379657be1ddf1983de1913be8..42c5fff93544226727c450a9697a5b4086bcf1d4 100644 (file)
@@ -1,42 +1,27 @@
 /*
- * "$Id: localize.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: localize.c 11698 2014-03-17 11:58:18Z msweet $"
  *
- *   PPD localization routines for CUPS.
+ * PPD localization routines for CUPS.
  *
- *   Copyright 2007-2012 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/".
  *
- *   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:
- *
- *   ppdLocalize()           - Localize the PPD file to the current locale.
- *   ppdLocalizeAttr()       - Localize an attribute.
- *   ppdLocalizeIPPReason()  - Get the localized version of a cupsIPPReason
- *                             attribute.
- *   ppdLocalizeMarkerName() - Get the localized version of a marker-names
- *                             attribute value.
- *   _ppdFreeLanguages()     - Free an array of languages from _ppdGetLanguages.
- *   _ppdGetLanguages()      - Get an array of languages from a PPD file.
- *   _ppdHashName()          - Generate a hash value for a device or profile
- *                             name.
- *   _ppdLocalizedAttr()     - Find a localized attribute.
- *   ppd_ll_CC()             - Get the current locale names.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -51,7 +36,7 @@
  * Local functions...
  */
 
-static cups_lang_t     *ppd_ll_CC(char *ll_CC, int ll_CC_size);
+static cups_lang_t     *ppd_ll_CC(char *ll_CC, size_t ll_CC_size);
 
 
 /*
@@ -263,8 +248,8 @@ ppdLocalizeIPPReason(
                *bufptr,                /* Pointer into buffer */
                *bufend,                /* Pointer to end of buffer */
                *valptr;                /* Pointer into value */
-  int          ch,                     /* Hex-encoded character */
-               schemelen;              /* Length of scheme name */
+  int          ch;                     /* Hex-encoded character */
+  size_t       schemelen;              /* Length of scheme name */
 
 
  /*
@@ -303,14 +288,14 @@ ppdLocalizeIPPReason(
       const char *message = NULL;      /* Localized message */
 
       if (!strncmp(reason, "media-needed", 12))
-       message = _("The paper tray needs to be filled.");
+       message = _("Load paper.");
       else if (!strncmp(reason, "media-jam", 9))
-       message = _("There is a paper jam.");
+       message = _("Paper jam.");
       else if (!strncmp(reason, "offline", 7) ||
                       !strncmp(reason, "shutdown", 8))
        message = _("The printer is not connected.");
       else if (!strncmp(reason, "toner-low", 9))
-       message = _("The printer is running low on toner.");
+       message = _("The printer is low on toner.");
       else if (!strncmp(reason, "toner-empty", 11))
        message = _("The printer may be out of toner.");
       else if (!strncmp(reason, "cover-open", 10))
@@ -320,19 +305,19 @@ ppdLocalizeIPPReason(
       else if (!strncmp(reason, "door-open", 9))
        message = _("The printer's door is open.");
       else if (!strncmp(reason, "input-tray-missing", 18))
-       message = _("The paper tray is missing.");
+       message = _("Paper tray is missing.");
       else if (!strncmp(reason, "media-low", 9))
-       message = _("The paper tray is almost empty.");
+       message = _("Paper tray is almost empty.");
       else if (!strncmp(reason, "media-empty", 11))
-       message = _("The paper tray is empty.");
+       message = _("Paper tray is empty.");
       else if (!strncmp(reason, "output-tray-missing", 19))
-       message = _("The output bin is missing.");
+       message = _("Output bin is missing.");
       else if (!strncmp(reason, "output-area-almost-full", 23))
-       message = _("The output bin is almost full.");
+       message = _("Output bin is almost full.");
       else if (!strncmp(reason, "output-area-full", 16))
-       message = _("The output bin is full.");
+       message = _("Output bin is full.");
       else if (!strncmp(reason, "marker-supply-low", 17))
-       message = _("The printer is running low on ink.");
+       message = _("The printer is low on ink.");
       else if (!strncmp(reason, "marker-supply-empty", 19))
        message = _("The printer may be out of ink.");
       else if (!strncmp(reason, "marker-waste-almost-full", 24))
@@ -405,9 +390,9 @@ ppdLocalizeIPPReason(
            valptr ++;
 
            if (isdigit(*valptr & 255))
-             *bufptr++ = ch | (*valptr - '0');
+             *bufptr++ = (char)(ch | (*valptr - '0'));
            else
-             *bufptr++ = ch | (tolower(*valptr) - 'a' + 10);
+             *bufptr++ = (char)(ch | (tolower(*valptr) - 'a' + 10));
            valptr ++;
          }
          else if (*valptr == '+')
@@ -644,8 +629,8 @@ _ppdGetLanguages(ppd_file_t *ppd)   /* I - PPD file */
 unsigned                               /* O - Hash value */
 _ppdHashName(const char *name)         /* I - Name to hash */
 {
-  int          mult;                   /* Multiplier */
-  unsigned     hash = 0;               /* Hash value */
+  unsigned     mult,                   /* Multiplier */
+               hash = 0;               /* Hash value */
 
 
   for (mult = 1; *name && mult <= 128; mult ++, name ++)
@@ -727,8 +712,8 @@ _ppdLocalizedAttr(ppd_file_t *ppd,  /* I - PPD file */
  */
 
 static cups_lang_t *                   /* O - Current language */
-ppd_ll_CC(char *ll_CC,                 /* O - Country-specific locale name */
-          int  ll_CC_size)             /* I - Size of country-specific name */
+ppd_ll_CC(char   *ll_CC,               /* O - Country-specific locale name */
+          size_t ll_CC_size)           /* I - Size of country-specific name */
 {
   cups_lang_t  *lang;                  /* Current language */
 
@@ -775,5 +760,5 @@ ppd_ll_CC(char *ll_CC,                      /* O - Country-specific locale name */
 
 
 /*
- * End of "$Id: localize.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: localize.c 11698 2014-03-17 11:58:18Z msweet $".
  */
index 23a39970121bd16c8b58f6217043eff0da38e667..9580c0da7c6e654278943d983ab1e60d9a3dcf16 100644 (file)
@@ -1,39 +1,20 @@
 /*
- * "$Id: mark.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: mark.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Option marking routines for CUPS.
+ * Option marking routines for CUPS.
  *
- *   Copyright 2007-2012 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/".
  *
- *   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:
- *
- *   cupsMarkOptions()     - Mark command-line options in a PPD file.
- *   ppdFindChoice()       - Return a pointer to an option choice.
- *   ppdFindMarkedChoice() - Return the marked choice for the specified option.
- *   ppdFindOption()       - Return a pointer to the specified option.
- *   ppdIsMarked()         - Check to see if an option is marked.
- *   ppdMarkDefaults()     - Mark all default options in the PPD file.
- *   ppdMarkOption()       - Mark an option in a PPD file and return the number
- *                           of conflicts.
- *   ppdFirstOption()      - Return the first option in the PPD file.
- *   ppdNextOption()       - Return the next option in the PPD file.
- *   _ppdParseOptions()    - Parse options from a PPD file.
- *   ppd_debug_marked()    - Output the marked array to stdout...
- *   ppd_defaults()        - Set the defaults for this group and all sub-groups.
- *   ppd_mark_choices()    - Mark one or more option choices from a string.
- *   ppd_mark_option()     - Quickly mark an option without checking for
- *                           conflicts.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -143,7 +124,7 @@ cupsMarkOptions(
       * Extract the sub-option from the string...
       */
 
-      for (ptr = s; *val && *val != ',' && (ptr - s) < (sizeof(s) - 1);)
+      for (ptr = s; *val && *val != ',' && (size_t)(ptr - s) < (sizeof(s) - 1);)
        *ptr++ = *val++;
       *ptr++ = '\0';
 
@@ -195,7 +176,7 @@ cupsMarkOptions(
 
       if (print_quality)
       {
-       pwg_pq = atoi(print_quality) - IPP_QUALITY_DRAFT;
+       pwg_pq = (_pwg_print_quality_t)(atoi(print_quality) - IPP_QUALITY_DRAFT);
        if (pwg_pq < _PWG_PRINT_QUALITY_DRAFT)
          pwg_pq = _PWG_PRINT_QUALITY_DRAFT;
        else if (pwg_pq > _PWG_PRINT_QUALITY_HIGH)
@@ -316,7 +297,7 @@ cupsMarkOptions(
         if (!isdigit(*ptr & 255))
          break;
 
-        if ((j = strtol(ptr, &ptr, 10)) < 3)
+        if ((j = (int)strtol(ptr, &ptr, 10)) < 3)
          break;
 
        /*
@@ -1097,5 +1078,5 @@ ppd_mark_option(ppd_file_t *ppd,  /* I - PPD file */
 
 
 /*
- * End of "$Id: mark.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: mark.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index c3e73133a88583be9196a7f999e964e4390032ee..5f473cb365f4dc3a923260de2beecc2b9c8cae39 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: md5.c 11374 2013-11-04 23:49:10Z msweet $"
+ * "$Id: md5.c 11594 2014-02-14 20:09:01Z msweet $"
  *
  * Private MD5 implementation for CUPS.
  *
- * Copyright 2007-2013 by Apple Inc.
+ * Copyright 2007-2014 by Apple Inc.
  * Copyright 2005 by Easy Software Products
  * Copyright (C) 1999 Aladdin Enterprises.  All rights reserved.
  *
@@ -291,7 +291,7 @@ _cupsMD5Append(_cups_md5_state_t *pms, const unsigned char *data, int nbytes)
        return;
 
     /* Update the message length. */
-    pms->count[1] += nbytes >> 29;
+    pms->count[1] += (unsigned)nbytes >> 29;
     pms->count[0] += nbits;
     if (pms->count[0] < nbits)
        pms->count[1]++;
@@ -300,7 +300,7 @@ _cupsMD5Append(_cups_md5_state_t *pms, const unsigned char *data, int nbytes)
     if (offset) {
        int copy = (offset + nbytes > 64 ? 64 - offset : nbytes);
 
-       memcpy(pms->buf + offset, p, copy);
+       memcpy(pms->buf + offset, p, (size_t)copy);
        if (offset + copy < 64)
            return;
        p += copy;
@@ -314,7 +314,7 @@ _cupsMD5Append(_cups_md5_state_t *pms, const unsigned char *data, int nbytes)
 
     /* Process a final partial block. */
     if (left)
-       memcpy(pms->buf, p, left);
+       memcpy(pms->buf, p, (size_t)left);
 }
 
 void
@@ -342,5 +342,5 @@ _cupsMD5Finish(_cups_md5_state_t *pms, unsigned char digest[16])
 
 
 /*
- * End of "$Id: md5.c 11374 2013-11-04 23:49:10Z msweet $".
+ * End of "$Id: md5.c 11594 2014-02-14 20:09:01Z msweet $".
  */
index d025009953f6b98ccc057113d9b5f85c5f4e2fa4..49b16f11a7235670d5d3dc1d1dd34df87c137e5a 100644 (file)
@@ -1,29 +1,18 @@
 /*
- * "$Id: options.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: options.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Option routines for CUPS.
+ * Option routines for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   cupsAddOption()        - Add an option to an option array.
- *   cupsFreeOptions()      - Free all memory used by options.
- *   cupsGetOption()        - Get an option value.
- *   cupsParseOptions()     - Parse options from a command-line argument.
- *   cupsRemoveOption()     - Remove an option from an option array.
- *   _cupsGet1284Values()   - Get 1284 device ID keys and values.
- *   cups_compare_options() - Compare two options.
- *   cups_find_option()     - Find an option using a binary search.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -99,10 +88,9 @@ cupsAddOption(const char    *name,   /* I  - Name of option */
     if (num_options == 0)
       temp = (cups_option_t *)malloc(sizeof(cups_option_t));
     else
-      temp = (cups_option_t *)realloc(*options, sizeof(cups_option_t) *
-                                               (num_options + 1));
+      temp = (cups_option_t *)realloc(*options, sizeof(cups_option_t) * (size_t)(num_options + 1));
 
-    if (temp == NULL)
+    if (!temp)
     {
       DEBUG_puts("3cupsAddOption: Unable to expand option array, returning 0");
       return (0);
@@ -114,8 +102,7 @@ cupsAddOption(const char    *name,  /* I  - Name of option */
     {
       DEBUG_printf(("4cupsAddOption: Shifting %d options...",
                     (int)(num_options - insert)));
-      memmove(temp + insert + 1, temp + insert,
-             (num_options - insert) * sizeof(cups_option_t));
+      memmove(temp + insert + 1, temp + insert, (size_t)(num_options - insert) * sizeof(cups_option_t));
     }
 
     temp        += insert;
@@ -487,7 +474,7 @@ cupsRemoveOption(
     _cupsStrFree(option->value);
 
     if (i > 0)
-      memmove(option, option + 1, i * sizeof(cups_option_t));
+      memmove(option, option + 1, (size_t)i * sizeof(cups_option_t));
   }
 
  /*
@@ -707,5 +694,5 @@ cups_find_option(
 
 
 /*
- * End of "$Id: options.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: options.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 75eef2d9c85fbd48d599e1a13f70cd9ba92dd0ed..7b3a9e5bf6c921c635074c0d6228ad4b01731666 100644 (file)
@@ -1,49 +1,17 @@
 /*
- * "$Id: ppd-cache.c 11833 2014-04-24 15:04:15Z msweet $"
+ * "$Id: ppd-cache.c 11832 2014-04-24 15:04:00Z msweet $"
  *
- *   PPD cache implementation for CUPS.
+ * PPD cache implementation for CUPS.
  *
- *   Copyright 2010-2013 by Apple Inc.
+ * 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/".
+ * These coded instructions, statements, and computer programs 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:
- *
- *   _ppdCacheCreateWithFile() - Create PPD cache and mapping data from a
- *                               written file.
- *   _ppdCacheCreateWithPPD()  - Create PWG mapping data from a PPD file.
- *   _ppdCacheDestroy()        - Free all memory used for PWG mapping data.
- *   _ppdCacheGetBin()         - Get the PWG output-bin keyword associated with
- *                               a PPD OutputBin.
- *   _ppdCacheGetInputSlot()   - Get the PPD InputSlot associated with the job
- *                               attributes or a keyword string.
- *   _ppdCacheGetMediaType()   - Get the PPD MediaType associated with the job
- *                               attributes or a keyword string.
- *   _ppdCacheGetOutputBin()   - Get the PPD OutputBin associated with the
- *                               keyword string.
- *   _ppdCacheGetPageSize()    - Get the PPD PageSize associated with the job
- *                               attributes or a keyword string.
- *   _ppdCacheGetSize()        - Get the PWG size associated with a PPD
- *                               PageSize.
- *   _ppdCacheGetSource()      - Get the PWG media-source associated with a PPD
- *                               InputSlot.
- *   _ppdCacheGetType()        - Get the PWG media-type associated with a PPD
- *                               MediaType.
- *   _ppdCacheWriteFile()      - Write PWG mapping data to a file.
- *   _pwgInputSlotForSource()  - Get the InputSlot name for the given PWG
- *                               media-source.
- *   _pwgMediaTypeForType()    - Get the MediaType name for the given PWG
- *                               media-type.
- *   _pwgPageSizeForMedia()    - Get the PageSize name for the given media.
- *   pwg_ppdize_name()         - Convert an IPP keyword to a PPD keyword.
- *   pwg_unppdize_name()       - Convert a PPD keyword to a lowercase IPP
- *                               keyword.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -290,7 +258,7 @@ _ppdCacheCreateWithFile(
        goto create_error;
       }
 
-      if ((pc->bins = calloc(num_bins, sizeof(pwg_map_t))) == NULL)
+      if ((pc->bins = calloc((size_t)num_bins, sizeof(pwg_map_t))) == NULL)
       {
         DEBUG_printf(("_ppdCacheCreateWithFile: Unable to allocate %d bins.",
                      num_sizes));
@@ -340,7 +308,7 @@ _ppdCacheCreateWithFile(
 
       if (num_sizes > 0)
       {
-       if ((pc->sizes = calloc(num_sizes, sizeof(pwg_size_t))) == NULL)
+       if ((pc->sizes = calloc((size_t)num_sizes, sizeof(pwg_size_t))) == NULL)
        {
          DEBUG_printf(("_ppdCacheCreateWithFile: Unable to allocate %d sizes.",
                        num_sizes));
@@ -428,7 +396,7 @@ _ppdCacheCreateWithFile(
        goto create_error;
       }
 
-      if ((pc->sources = calloc(num_sources, sizeof(pwg_map_t))) == NULL)
+      if ((pc->sources = calloc((size_t)num_sources, sizeof(pwg_map_t))) == NULL)
       {
         DEBUG_printf(("_ppdCacheCreateWithFile: Unable to allocate %d sources.",
                      num_sources));
@@ -477,7 +445,7 @@ _ppdCacheCreateWithFile(
        goto create_error;
       }
 
-      if ((pc->types = calloc(num_types, sizeof(pwg_map_t))) == NULL)
+      if ((pc->types = calloc((size_t)num_types, sizeof(pwg_map_t))) == NULL)
       {
         DEBUG_printf(("_ppdCacheCreateWithFile: Unable to allocate %d types.",
                      num_types));
@@ -553,7 +521,7 @@ _ppdCacheCreateWithFile(
       if ((finishings = calloc(1, sizeof(_pwg_finishings_t))) == NULL)
         goto create_error;
 
-      finishings->value       = strtol(value, &valueptr, 10);
+      finishings->value       = (ipp_finishings_t)strtol(value, &valueptr, 10);
       finishings->num_options = cupsParseOptions(valueptr, 0,
                                                  &(finishings->options));
 
@@ -714,7 +682,7 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd)     /* I - PPD file */
 
   if (ppd->num_sizes > 0)
   {
-    if ((pc->sizes = calloc(ppd->num_sizes, sizeof(pwg_size_t))) == NULL)
+    if ((pc->sizes = calloc((size_t)ppd->num_sizes, sizeof(pwg_size_t))) == NULL)
     {
       DEBUG_printf(("_ppdCacheCreateWithPPD: Unable to allocate %d "
                    "pwg_size_t's.", ppd->num_sizes));
@@ -782,8 +750,9 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd)     /* I - PPD file */
       * dimensions that are <= 0...
       */
 
-      if ((pwg_media = pwgMediaForSize(PWG_FROM_POINTS(ppd_size->width),
-                                       PWG_FROM_POINTS(ppd_size->length))) == NULL)
+      if ((pwg_media = _pwgMediaNearSize(PWG_FROM_POINTS(ppd_size->width),
+                                       PWG_FROM_POINTS(ppd_size->length),
+                                       0)) == NULL)
        continue;
 
       new_width      = pwg_media->width;
@@ -891,8 +860,7 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd)     /* I - PPD file */
   {
     pc->source_option = _cupsStrAlloc(input_slot->keyword);
 
-    if ((pc->sources = calloc(input_slot->num_choices,
-                               sizeof(pwg_map_t))) == NULL)
+    if ((pc->sources = calloc((size_t)input_slot->num_choices, sizeof(pwg_map_t))) == NULL)
     {
       DEBUG_printf(("_ppdCacheCreateWithPPD: Unable to allocate %d "
                     "pwg_map_t's for InputSlot.", input_slot->num_choices));
@@ -953,8 +921,7 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd)     /* I - PPD file */
 
   if ((media_type = ppdFindOption(ppd, "MediaType")) != NULL)
   {
-    if ((pc->types = calloc(media_type->num_choices,
-                             sizeof(pwg_map_t))) == NULL)
+    if ((pc->types = calloc((size_t)media_type->num_choices, sizeof(pwg_map_t))) == NULL)
     {
       DEBUG_printf(("_ppdCacheCreateWithPPD: Unable to allocate %d "
                     "pwg_map_t's for MediaType.", media_type->num_choices));
@@ -1018,8 +985,7 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd)    /* I - PPD file */
 
   if ((output_bin = ppdFindOption(ppd, "OutputBin")) != NULL)
   {
-    if ((pc->bins = calloc(output_bin->num_choices,
-                           sizeof(pwg_map_t))) == NULL)
+    if ((pc->bins = calloc((size_t)output_bin->num_choices, sizeof(pwg_map_t))) == NULL)
     {
       DEBUG_printf(("_ppdCacheCreateWithPPD: Unable to allocate %d "
                     "pwg_map_t's for OutputBin.", output_bin->num_choices));
@@ -1202,7 +1168,7 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd)   /* I - PPD file */
 
          num_options = pc->num_presets[_PWG_PRINT_COLOR_MODE_COLOR]
                                        [pwg_print_quality];
-         options     = calloc(sizeof(cups_option_t), num_options);
+         options     = calloc(sizeof(cups_option_t), (size_t)num_options);
 
          if (options)
          {
@@ -1371,7 +1337,7 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd)   /* I - PPD file */
       if ((finishings = calloc(1, sizeof(_pwg_finishings_t))) == NULL)
         goto create_error;
 
-      finishings->value       = atoi(ppd_attr->spec);
+      finishings->value       = (ipp_finishings_t)atoi(ppd_attr->spec);
       finishings->num_options = _ppdParseOptions(ppd_attr->value, 0,
                                                  &(finishings->options),
                                                  _PPD_PARSE_OPTIONS);
@@ -1611,7 +1577,7 @@ _ppdCacheGetFinishingOptions(
 
     for (i = 0; i < num_values; i ++)
     {
-      key.value = ippGetInteger(attr, i);
+      key.value = (ipp_finishings_t)ippGetInteger(attr, i);
 
       if ((f = cupsArrayFind(pc->finishings, &key)) != NULL)
       {
@@ -1665,8 +1631,13 @@ _ppdCacheGetFinishingValues(
   * Range check input...
   */
 
+  DEBUG_printf(("_ppdCacheGetFinishingValues(pc=%p, num_options=%d, options=%p, max_values=%d, values=%p)", pc, num_options, options, max_values, values));
+
   if (!pc || !pc->finishings || num_options < 1 || max_values < 1 || !values)
+  {
+    DEBUG_puts("_ppdCacheGetFinishingValues: Bad arguments, returning 0.");
     return (0);
+  }
 
  /*
   * Go through the finishings options and see what is set...
@@ -1676,13 +1647,24 @@ _ppdCacheGetFinishingValues(
        f;
        f = (_pwg_finishings_t *)cupsArrayNext(pc->finishings))
   {
+    DEBUG_printf(("_ppdCacheGetFinishingValues: Checking %d (%s)", f->value, ippEnumString("finishings", f->value)));
+
     for (i = f->num_options, option = f->options; i > 0; i --, option ++)
+    {
+      DEBUG_printf(("_ppdCacheGetFinishingValues: %s=%s?", option->name, option->value));
+
       if ((val = cupsGetOption(option->name, num_options, options)) == NULL ||
           _cups_strcasecmp(option->value, val))
+      {
+        DEBUG_puts("_ppdCacheGetFinishingValues: NO");
         break;
+      }
+    }
 
     if (i == 0)
     {
+      DEBUG_printf(("_ppdCacheGetFinishingValues: Adding %d.", f->value));
+
       values[num_values ++] = f->value;
 
       if (num_values >= max_values)
@@ -1690,6 +1672,8 @@ _ppdCacheGetFinishingValues(
     }
   }
 
+  DEBUG_printf(("_ppdCacheGetFinishingValues: Returning %d.", num_values));
+
   return (num_values);
 }
 
@@ -2629,7 +2613,7 @@ _pwgPageSizeForMedia(
     * Copy the size name from class_sizename_dimensions...
     */
 
-    memcpy(name, sizeptr + 1, dimptr - sizeptr - 1);
+    memcpy(name, sizeptr + 1, (size_t)(dimptr - sizeptr - 1));
     name[dimptr - sizeptr - 1] = '\0';
   }
 
@@ -2676,14 +2660,14 @@ pwg_ppdize_name(const char *ipp,        /* I - IPP keyword */
        *end;                           /* End of name buffer */
 
 
-  *name = toupper(*ipp++);
+  *name = (char)toupper(*ipp++);
 
   for (ptr = name + 1, end = name + namesize - 1; *ipp && ptr < end;)
   {
     if (*ipp == '-' && _cups_isalpha(ipp[1]))
     {
       ipp ++;
-      *ptr++ = toupper(*ipp++ & 255);
+      *ptr++ = (char)toupper(*ipp++ & 255);
     }
     else
       *ptr++ = *ipp++;
@@ -2710,7 +2694,7 @@ pwg_unppdize_name(const char *ppd,        /* I - PPD keyword */
   for (ptr = name, end = name + namesize - 1; *ppd && ptr < end; ppd ++)
   {
     if (_cups_isalnum(*ppd) || *ppd == '-')
-      *ptr++ = tolower(*ppd & 255);
+      *ptr++ = (char)tolower(*ppd & 255);
     else if (strchr(dashchars, *ppd))
       *ptr++ = '-';
     else
@@ -2728,5 +2712,5 @@ pwg_unppdize_name(const char *ppd,        /* I - PPD keyword */
 
 
 /*
- * End of "$Id: ppd-cache.c 11833 2014-04-24 15:04:15Z msweet $".
+ * End of "$Id: ppd-cache.c 11832 2014-04-24 15:04:00Z msweet $".
  */
index 4b8c4ba0955a54d346518b45cbaf008bf48049f5..c1376d2cb9f79bec4b168bfa6abc3275eccf8a80 100644 (file)
@@ -1,27 +1,27 @@
 /*
- * "$Id: ppd-private.h 4274 2013-04-09 20:10:23Z msweet $"
+ * "$Id: ppd-private.h 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Private PPD definitions for CUPS.
+ * Private PPD definitions for CUPS.
  *
- *   Copyright 2007-2013 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/".
  *
- *   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_PRIVATE_H_
@@ -221,5 +221,5 @@ extern const char   *_pwgPageSizeForMedia(pwg_media_t *media,
 #endif /* !_CUPS_PPD_PRIVATE_H_ */
 
 /*
- * End of "$Id: ppd-private.h 4274 2013-04-09 20:10:23Z msweet $".
+ * End of "$Id: ppd-private.h 11558 2014-02-06 18:33:34Z msweet $".
  */
index c172c3d7486da7ec640cca9cd78fc9ba74110540..b3ebea4d4087a2b35d87cb8643d84e754e2247f1 100644 (file)
@@ -1,61 +1,27 @@
 /*
- * "$Id: ppd.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: ppd.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   PPD file routines for CUPS.
+ * PPD file routines for CUPS.
  *
- *   Copyright 2007-2012 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/".
  *
- *   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:
- *
- *   ppdClose()             - Free all memory used by the PPD file.
- *   ppdErrorString()       - Returns the text assocated with a status.
- *   _ppdGetEncoding()      - Get the CUPS encoding value for the given
- *                            LanguageEncoding.
- *   ppdLastError()         - Return the status from the last ppdOpen*().
- *   ppdOpen()              - Read a PPD file into memory.
- *   _ppdOpen()             - Read a PPD file into memory.
- *   ppdOpen2()             - Read a PPD file into memory.
- *   ppdOpenFd()            - Read a PPD file into memory.
- *   _ppdOpenFile()         - Read a PPD file into memory.
- *   ppdOpenFile()          - Read a PPD file into memory.
- *   ppdSetConformance()    - Set the conformance level for PPD files.
- *   ppd_add_attr()         - Add an attribute to the PPD data.
- *   ppd_add_choice()       - Add a choice to an option.
- *   ppd_add_size()         - Add a page size.
- *   ppd_compare_attrs()    - Compare two attributes.
- *   ppd_compare_choices()  - Compare two choices...
- *   ppd_compare_coptions() - Compare two custom options.
- *   ppd_compare_options()  - Compare two options.
- *   ppd_decode()           - Decode a string value...
- *   ppd_free_filters()     - Free the filters array.
- *   ppd_free_group()       - Free a single UI group.
- *   ppd_free_option()      - Free a single option.
- *   ppd_get_coption()      - Get a custom option record.
- *   ppd_get_cparam()       - Get a custom parameter record.
- *   ppd_get_group()        - Find or create the named group as needed.
- *   ppd_get_option()       - Find or create the named option as needed.
- *   ppd_hash_option()      - Generate a hash of the option name...
- *   ppd_read()             - Read a line from a PPD file, skipping comment
- *                            lines as necessary.
- *   ppd_update_filters()   - Update the filters array as needed.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
  * Definitions...
  */
 
-#if defined(WIN32) || defined(__EMX__)
-#  define READ_BINARY  "rb"            /* Open a binary file for reading */
-#  define WRITE_BINARY "wb"            /* Open a binary file for writing */
-#else
-#  define READ_BINARY  "r"             /* Open a binary file for reading */
-#  define WRITE_BINARY "w"             /* Open a binary file for writing */
-#endif /* WIN32 || __EMX__ */
-
 #define ppd_free(p)    if (p) free(p)  /* Safe free macro */
 
 #define PPD_KEYWORD    1               /* Line contained a keyword */
@@ -872,8 +830,7 @@ _ppdOpen(
       if (ppd->num_profiles == 0)
         profile = malloc(sizeof(ppd_profile_t));
       else
-        profile = realloc(ppd->profiles, sizeof(ppd_profile_t) *
-                                        (ppd->num_profiles + 1));
+        profile = realloc(ppd->profiles, sizeof(ppd_profile_t) * (size_t)(ppd->num_profiles + 1));
 
       if (!profile)
       {
@@ -907,7 +864,7 @@ _ppdOpen(
       if (ppd->num_filters == 0)
         filter = malloc(sizeof(char *));
       else
-        filter = realloc(ppd->filters, sizeof(char *) * (ppd->num_filters + 1));
+        filter = realloc(ppd->filters, sizeof(char *) * (size_t)(ppd->num_filters + 1));
 
       if (filter == NULL)
       {
@@ -937,8 +894,7 @@ _ppdOpen(
       if (ppd->num_fonts == 0)
         tempfonts = (char **)malloc(sizeof(char *));
       else
-        tempfonts = (char **)realloc(ppd->fonts,
-                                    sizeof(char *) * (ppd->num_fonts + 1));
+        tempfonts = (char **)realloc(ppd->fonts, sizeof(char *) * (size_t)(ppd->num_fonts + 1));
 
       if (tempfonts == NULL)
       {
@@ -1173,7 +1129,7 @@ _ppdOpen(
        }
 
       ppd->num_emulations = count;
-      if ((ppd->emulations = calloc(count, sizeof(ppd_emul_t))) == NULL)
+      if ((ppd->emulations = calloc((size_t)count, sizeof(ppd_emul_t))) == NULL)
       {
         cg->ppd_status = PPD_ALLOC_ERROR;
 
@@ -1697,8 +1653,7 @@ _ppdOpen(
       if (ppd->num_consts == 0)
        constraint = calloc(2, sizeof(ppd_const_t));
       else
-       constraint = realloc(ppd->consts,
-                            (ppd->num_consts + 2) * sizeof(ppd_const_t));
+       constraint = realloc(ppd->consts, (size_t)(ppd->num_consts + 2) * sizeof(ppd_const_t));
 
       if (constraint == NULL)
       {
@@ -2282,7 +2237,7 @@ ppd_add_attr(ppd_file_t *ppd,             /* I - PPD file data */
   if (ppd->num_attrs == 0)
     ptr = malloc(sizeof(ppd_attr_t *));
   else
-    ptr = realloc(ppd->attrs, (ppd->num_attrs + 1) * sizeof(ppd_attr_t *));
+    ptr = realloc(ppd->attrs, (size_t)(ppd->num_attrs + 1) * sizeof(ppd_attr_t *));
 
   if (ptr == NULL)
     return (NULL);
@@ -2334,8 +2289,7 @@ ppd_add_choice(ppd_option_t *option,      /* I - Option */
   if (option->num_choices == 0)
     choice = malloc(sizeof(ppd_choice_t));
   else
-    choice = realloc(option->choices,
-                    sizeof(ppd_choice_t) * (option->num_choices + 1));
+    choice = realloc(option->choices, sizeof(ppd_choice_t) * (size_t)(option->num_choices + 1));
 
   if (choice == NULL)
     return (NULL);
@@ -2365,7 +2319,7 @@ ppd_add_size(ppd_file_t *ppd,             /* I - PPD file */
   if (ppd->num_sizes == 0)
     size = malloc(sizeof(ppd_size_t));
   else
-    size = realloc(ppd->sizes, sizeof(ppd_size_t) * (ppd->num_sizes + 1));
+    size = realloc(ppd->sizes, sizeof(ppd_size_t) * (size_t)(ppd->num_sizes + 1));
 
   if (size == NULL)
     return (NULL);
@@ -2454,9 +2408,9 @@ ppd_decode(char *string)          /* I - String to decode */
       while (isxdigit(*inptr & 255))
       {
        if (_cups_isalpha(*inptr))
-         *outptr = (tolower(*inptr) - 'a' + 10) << 4;
+         *outptr = (char)((tolower(*inptr) - 'a' + 10) << 4);
        else
-         *outptr = (*inptr - '0') << 4;
+         *outptr = (char)((*inptr - '0') << 4);
 
        inptr ++;
 
@@ -2464,9 +2418,9 @@ ppd_decode(char *string)          /* I - String to decode */
          break;
 
        if (_cups_isalpha(*inptr))
-         *outptr |= tolower(*inptr) - 'a' + 10;
+         *outptr |= (char)(tolower(*inptr) - 'a' + 10);
        else
-         *outptr |= *inptr - '0';
+         *outptr |= (char)(*inptr - '0');
 
        inptr ++;
        outptr ++;
@@ -2687,8 +2641,7 @@ ppd_get_group(ppd_file_t      *ppd,       /* I - PPD file */
     if (ppd->num_groups == 0)
       group = malloc(sizeof(ppd_group_t));
     else
-      group = realloc(ppd->groups,
-                     (ppd->num_groups + 1) * sizeof(ppd_group_t));
+      group = realloc(ppd->groups, (size_t)(ppd->num_groups + 1) * sizeof(ppd_group_t));
 
     if (group == NULL)
     {
@@ -2736,8 +2689,7 @@ ppd_get_option(ppd_group_t *group,        /* I - Group */
     if (group->num_options == 0)
       option = malloc(sizeof(ppd_option_t));
     else
-      option = realloc(group->options,
-                      (group->num_options + 1) * sizeof(ppd_option_t));
+      option = realloc(group->options, (size_t)(group->num_options + 1) * sizeof(ppd_option_t));
 
     if (option == NULL)
       return (NULL);
@@ -2917,7 +2869,7 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
        * Any other character...
        */
 
-       *lineptr++ = ch;
+       *lineptr++ = (char)ch;
        col ++;
 
        if (col > (PPD_MAX_LINE - 1))
@@ -3370,7 +3322,7 @@ ppd_update_filters(ppd_file_t      *ppd,/* I - PPD file */
     if (ppd->num_filters == 0)
       filter = malloc(sizeof(char *));
     else
-      filter = realloc(ppd->filters, sizeof(char *) * (ppd->num_filters + 1));
+      filter = realloc(ppd->filters, sizeof(char *) * (size_t)(ppd->num_filters + 1));
 
     if (filter == NULL)
     {
@@ -3394,5 +3346,5 @@ ppd_update_filters(ppd_file_t      *ppd,/* I - PPD file */
 
 
 /*
- * End of "$Id: ppd.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: ppd.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 657e1fef763c16ba01493a866eddab09f535222e..f1e2b0f530bce42f463ee6abd31445ca9b2e14d4 100644 (file)
@@ -1,36 +1,17 @@
 /*
- * "$Id: pwg-media.c 11240 2013-08-14 20:33:55Z msweet $"
+ * "$Id: pwg-media.c 11881 2014-05-16 20:59:22Z msweet $"
  *
- *   PWG media name API implementation for CUPS.
+ * PWG media name API implementation for CUPS.
  *
- *   Copyright 2009-2013 by Apple Inc.
+ * Copyright 2009-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/".
+ * These coded instructions, statements, and computer programs 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:
- *
- *   pwgFormatSizeName()      - Generate a PWG self-describing media size name.
- *   pwgInitSize()           - Initialize a pwg_size_t structure using IPP Job
- *                             Template attributes.
- *   pwgMediaForLegacy()      - Find a PWG media size by ISO/IPP legacy name.
- *   pwgMediaForPPD()        - Find a PWG media size by Adobe PPD name.
- *   pwgMediaForPWG()        - Find a PWG media size by 5101.1 self-describing
- *                             name.
- *   pwgMediaForSize()       - Get the PWG media size for the given
- *                             dimensions.
- *   _pwgMediaTable()         - Return the internal media size table.
- *   pwg_compare_legacy()     - Compare two sizes using the legacy names.
- *   pwg_compare_ppd()       - Compare two sizes using the PPD names.
- *   pwg_compare_pwg()       - Compare two sizes using the PWG names.
- *   pwg_format_inches()      - Convert and format PWG units as inches.
- *   pwg_format_millimeters() - Convert and format PWG units as millimeters.
- *   pwg_scan_measurement()   - Scan a measurement in inches or millimeters.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -376,10 +357,10 @@ pwgFormatSizeName(char       *keyword,    /* I - Keyword buffer */
   */
 
   uptr = usize;
-  (*format)(uptr, sizeof(usize) - (uptr - usize), width);
+  (*format)(uptr, sizeof(usize) - (size_t)(uptr - usize), width);
   uptr += strlen(uptr);
   *uptr++ = 'x';
-  (*format)(uptr, sizeof(usize) - (uptr - usize), length);
+  (*format)(uptr, sizeof(usize) - (size_t)(uptr - usize), length);
   uptr += strlen(uptr);
 
  /*
@@ -930,6 +911,24 @@ pwg_media_t *_pwgMediaForPWG(const char *pwg)
 pwg_media_t *                          /* O - PWG media name */
 pwgMediaForSize(int width,             /* I - Width in hundredths of millimeters */
                int length)             /* I - Length in hundredths of millimeters */
+{
+ /*
+  * Adobe uses a size matching algorithm with an epsilon of 5 points, which
+  * is just about 176/2540ths...
+  */
+
+  return (_pwgMediaNearSize(width, length, 176));
+}
+
+
+/*
+ * '_pwgMediaNearSize()' - Get the PWG media size within the given tolerance.
+ */
+
+pwg_media_t *                          /* O - PWG media name */
+_pwgMediaNearSize(int width,           /* I - Width in hundredths of millimeters */
+                 int length,           /* I - Length in hundredths of millimeters */
+                 int epsilon)          /* I - Match within this tolernace. PWG units */
 {
   int          i;                      /* Looping var */
   pwg_media_t  *media,                 /* Current media */
@@ -956,17 +955,13 @@ pwgMediaForSize(int width,                /* I - Width in hundredths of millimeters */
        i > 0;
        i --, media ++)
   {
-   /*
-    * Adobe uses a size matching algorithm with an epsilon of 5 points, which
-    * is just about 176/2540ths...
-    */
 
     dw = abs(media->width - width);
     dl = abs(media->length - length);
 
     if (!dw && !dl)
       return (media);
-    else if (dw < 176 && dl < 176)
+    else if (dw <= epsilon && dl <= epsilon)
     {
       if (dw <= best_dw && dl <= best_dl)
       {
@@ -1185,5 +1180,5 @@ pwg_scan_measurement(
 
 
 /*
- * End of "$Id: pwg-media.c 11240 2013-08-14 20:33:55Z msweet $".
+ * End of "$Id: pwg-media.c 11881 2014-05-16 20:59:22Z msweet $".
  */
index 1f1bc7cff898fabde7aca152033794098200375c..3e086dbab4524caebfb562955510413f475f2311 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: pwg-private.h 11240 2013-08-14 20:33:55Z msweet $"
+ * "$Id: pwg-private.h 11826 2014-04-23 00:38:21Z msweet $"
  *
  *   Private PWG media API definitions for CUPS.
  *
@@ -66,6 +66,7 @@ extern pwg_media_t    *_pwgMediaForPWG(const char *pwg)
 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);
 
 #  ifdef __cplusplus
 }
@@ -74,5 +75,5 @@ extern const pwg_media_t *_pwgMediaTable(size_t *num_media);
 #endif /* !_CUPS_PWG_PRIVATE_H_ */
 
 /*
- * End of "$Id: pwg-private.h 11240 2013-08-14 20:33:55Z msweet $".
+ * End of "$Id: pwg-private.h 11826 2014-04-23 00:38:21Z msweet $".
  */
index cf261f4ac016145b7fe406ea384acb262866b4e0..8f5131730a55190e561aa2266f320f5e61d1a05d 100644 (file)
@@ -1,34 +1,18 @@
 /*
- * "$Id: request.c 11867 2014-05-09 20:33:08Z msweet $"
+ * "$Id: request.c 11866 2014-05-09 20:20:16Z msweet $"
  *
- *   IPP utilities for CUPS.
+ * IPP utilities for CUPS.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   cupsDoFileRequest()    - Do an IPP request with a file.
- *   cupsDoIORequest()      - Do an IPP request with file descriptors.
- *   cupsDoRequest()        - Do an IPP request.
- *   cupsGetResponse()      - Get a response to an IPP request.
- *   cupsLastError()        - Return the last IPP status code.
- *   cupsLastErrorString()  - Return the last IPP status-message.
- *   _cupsNextDelay()       - Return the next retry delay value.
- *   cupsReadResponseData() - Read additional data after the IPP response.
- *   cupsSendRequest()      - Send an IPP request.
- *   cupsWriteRequestData() - Write additional data after an IPP request.
- *   _cupsConnect()         - Get the default server connection...
- *   _cupsSetError()        - Set the last IPP status code and status-message.
- *   _cupsSetHTTPError()    - Set the last error using the HTTP status.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -129,7 +113,7 @@ cupsDoIORequest(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
   size_t       length = 0;             /* Content-Length value */
   http_status_t        status;                 /* Status of HTTP request */
   struct stat  fileinfo;               /* File information */
-  int          bytes;                  /* Number of bytes read/written */
+  ssize_t      bytes;                  /* Number of bytes read/written */
   char         buffer[32768];          /* Output buffer */
 
 
@@ -205,7 +189,7 @@ cupsDoIORequest(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
       length = 0;                      /* Chunk when piping */
     else
 #endif /* !WIN32 */
-    length = ippLength(request) + fileinfo.st_size;
+    length = ippLength(request) + (size_t)fileinfo.st_size;
   }
   else
     length = ippLength(request);
@@ -249,9 +233,9 @@ cupsDoIORequest(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
 #endif /* WIN32 */
       lseek(infile, 0, SEEK_SET);
 
-      while ((bytes = (int)read(infile, buffer, sizeof(buffer))) > 0)
+      while ((bytes = read(infile, buffer, sizeof(buffer))) > 0)
       {
-        if ((status = cupsWriteRequestData(http, buffer, bytes))
+        if ((status = cupsWriteRequestData(http, buffer, (size_t)bytes))
                 != HTTP_STATUS_CONTINUE)
          break;
       }
@@ -283,8 +267,8 @@ cupsDoIORequest(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
       * Write trailing data to file...
       */
 
-      while ((bytes = (int)httpRead2(http, buffer, sizeof(buffer))) > 0)
-       if (write(outfile, buffer, bytes) < bytes)
+      while ((bytes = httpRead2(http, buffer, sizeof(buffer))) > 0)
+       if (write(outfile, buffer, (size_t)bytes) < bytes)
          break;
     }
 
@@ -971,7 +955,7 @@ cupsWriteRequestData(
 
   if (length >= HTTP_MAX_BUFFER ||
       http->wused < wused ||
-      (wused > 0 && http->wused == length))
+      (wused > 0 && (size_t)http->wused == length))
   {
    /*
     * We've written something to the server, so check for response data...
@@ -1205,5 +1189,5 @@ _cupsSetHTTPError(http_status_t status)   /* I - HTTP status code */
 
 
 /*
- * End of "$Id: request.c 11867 2014-05-09 20:33:08Z msweet $".
+ * End of "$Id: request.c 11866 2014-05-09 20:20:16Z msweet $".
  */
index cad2a2b4030f5ef7e3875620389747609cfce26b..8ecfbfc12298bafe9b4d975e06e12789253541a6 100644 (file)
@@ -1,27 +1,18 @@
 /*
- * "$Id: sidechannel.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: sidechannel.c 11594 2014-02-14 20:09:01Z msweet $"
  *
- *   Side-channel API code for CUPS.
+ * Side-channel API code for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 2006 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   cupsSideChannelDoRequest() - Send a side-channel command to a backend and
- *                                wait for a response.
- *   cupsSideChannelRead()      - Read a side-channel message.
- *   cupsSideChannelSNMPGet()   - Query a SNMP OID's value.
- *   cupsSideChannelSNMPWalk()  - Query multiple SNMP OID values.
- *   cupsSideChannelWrite()     - Write a side-channel message.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
 #else
 #  include <unistd.h>
 #endif /* WIN32 */
-#ifdef __hpux
-#  include <sys/time.h>
-#elif !defined(WIN32)
-#  include <sys/select.h>
-#endif /* __hpux */
 #ifndef WIN32
+#  include <sys/select.h>
 #  include <sys/time.h>
 #endif /* !WIN32 */
 #ifdef HAVE_POLL
@@ -120,7 +107,7 @@ cupsSideChannelRead(
     double            timeout)         /* I  - Timeout in seconds */
 {
   char         *buffer;                /* Message buffer */
-  int          bytes;                  /* Bytes read */
+  ssize_t      bytes;                  /* Bytes read */
   int          templen;                /* Data length from message */
   int          nfds;                   /* Number of file descriptors */
 #ifdef HAVE_POLL
@@ -151,7 +138,7 @@ cupsSideChannelRead(
   pfd.events = POLLIN;
 
   while ((nfds = poll(&pfd, 1,
-                     timeout < 0.0 ? -1 : (long)(timeout * 1000))) < 0 &&
+                     timeout < 0.0 ? -1 : (int)(timeout * 1000))) < 0 &&
         (errno == EINTR || errno == EAGAIN))
     ;
 
@@ -214,7 +201,7 @@ cupsSideChannelRead(
 
   if (bytes < 4)
   {
-    DEBUG_printf(("1cupsSideChannelRead: Short read of %d bytes", bytes));
+    DEBUG_printf(("1cupsSideChannelRead: Short read of " CUPS_LLFMT " bytes", CUPS_LLCAST bytes));
 
     _cupsBufferRelease(buffer);
 
@@ -277,7 +264,7 @@ cupsSideChannelRead(
     *status  = (cups_sc_status_t)buffer[1];
     *datalen = templen;
 
-    memcpy(data, buffer + 4, templen);
+    memcpy(data, buffer + 4, (size_t)templen);
   }
 
   _cupsBufferRelease(buffer);
@@ -368,7 +355,7 @@ cupsSideChannelSNMPGet(
     * Parse the response of the form "oid\0value"...
     */
 
-    real_oidlen  = strlen(real_data) + 1;
+    real_oidlen  = (int)strlen(real_data) + 1;
     real_datalen -= real_oidlen;
 
     if ((real_datalen + 1) > *datalen)
@@ -377,7 +364,7 @@ cupsSideChannelSNMPGet(
       return (CUPS_SC_STATUS_TOO_BIG);
     }
 
-    memcpy(data, real_data + real_oidlen, real_datalen);
+    memcpy(data, real_data + real_oidlen, (size_t)real_datalen);
     data[real_datalen] = '\0';
 
     *datalen = real_datalen;
@@ -427,8 +414,8 @@ cupsSideChannelSNMPWalk(
   cups_sc_status_t     status;         /* Status of command */
   cups_sc_command_t    rcommand;       /* Response command */
   char                 *real_data;     /* Real data buffer for response */
-  int                  real_datalen,   /* Real length of data buffer */
-                       real_oidlen,    /* Length of returned OID string */
+  int                  real_datalen;   /* Real length of data buffer */
+  size_t               real_oidlen,    /* Length of returned OID string */
                        oidlen;         /* Length of first OID */
   const char           *current_oid;   /* Current OID */
   char                 last_oid[2048]; /* Last OID */
@@ -452,7 +439,7 @@ cupsSideChannelSNMPWalk(
   */
 
   current_oid = oid;
-  oidlen      = (int)strlen(oid);
+  oidlen      = strlen(oid);
   last_oid[0] = '\0';
 
   do
@@ -499,7 +486,7 @@ cupsSideChannelSNMPWalk(
         return (CUPS_SC_STATUS_OK);
       }
 
-      if (real_datalen < sizeof(real_data))
+      if ((size_t)real_datalen < sizeof(real_data))
         real_data[real_datalen] = '\0';
 
       real_oidlen  = strlen(real_data) + 1;
@@ -545,7 +532,7 @@ cupsSideChannelWrite(
     double            timeout)         /* I - Timeout in seconds */
 {
   char         *buffer;                /* Message buffer */
-  int          bytes;                  /* Bytes written */
+  ssize_t      bytes;                  /* Bytes written */
 #ifdef HAVE_POLL
   struct pollfd        pfd;                    /* Poll structure for poll() */
 #else /* select() */
@@ -575,7 +562,7 @@ cupsSideChannelWrite(
     if (poll(&pfd, 1, -1) < 1)
       return (-1);
   }
-  else if (poll(&pfd, 1, (long)(timeout * 1000)) < 1)
+  else if (poll(&pfd, 1, (int)(timeout * 1000)) < 1)
     return (-1);
 
 #else /* select() */
@@ -608,23 +595,23 @@ cupsSideChannelWrite(
   * 4-N      Data
   */
 
-  if ((buffer = _cupsBufferGet(datalen + 4)) == NULL)
+  if ((buffer = _cupsBufferGet((size_t)datalen + 4)) == NULL)
     return (-1);
 
   buffer[0] = command;
   buffer[1] = status;
-  buffer[2] = datalen >> 8;
-  buffer[3] = datalen & 255;
+  buffer[2] = (char)(datalen >> 8);
+  buffer[3] = (char)(datalen & 255);
 
   bytes = 4;
 
   if (datalen > 0)
   {
-    memcpy(buffer + 4, data, datalen);
+    memcpy(buffer + 4, data, (size_t)datalen);
     bytes += datalen;
   }
 
-  while (write(CUPS_SC_FD, buffer, bytes) < 0)
+  while (write(CUPS_SC_FD, buffer, (size_t)bytes) < 0)
     if (errno != EINTR && errno != EAGAIN)
     {
       _cupsBufferRelease(buffer);
@@ -638,5 +625,5 @@ cupsSideChannelWrite(
 
 
 /*
- * End of "$Id: sidechannel.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: sidechannel.c 11594 2014-02-14 20:09:01Z msweet $".
  */
index 9661243b719f42643bd0d3e74e879516c23931ae..21698e0472d5a149cb5d6b445cfb12b31993ccb9 100644 (file)
@@ -1,18 +1,18 @@
 /*
- * "$Id: snmp-private.h 3794 2012-04-23 22:44:16Z msweet $"
+ * "$Id: snmp-private.h 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Private SNMP definitions for CUPS.
+ * Private SNMP definitions for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 2006-2007 by Easy Software Products, all rights reserved.
+ * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2006-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.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 #ifndef _CUPS_SNMP_PRIVATE_H_
@@ -66,14 +66,14 @@ typedef struct cups_snmp_string_s   /**** String value ****/
 {
   unsigned char        bytes[CUPS_SNMP_MAX_STRING];
                                        /* Bytes in string */
-  int          num_bytes;              /* Number of bytes */
+  unsigned     num_bytes;              /* Number of bytes */
 } cups_snmp_string_t;
 
 union cups_snmp_value_u                        /**** Object value ****/
 {
   int          boolean;                /* Boolean value */
   int          integer;                /* Integer value */
-  unsigned     counter;                /* Counter value */
+  int          counter;                /* Counter value */
   unsigned     gauge;                  /* Gauge value */
   unsigned     timeticks;              /* Timeticks  value */
   int          oid[CUPS_SNMP_MAX_OID]; /* OID value */
@@ -88,7 +88,7 @@ typedef struct cups_snmp_s            /**** SNMP data packet ****/
   char         community[CUPS_SNMP_MAX_COMMUNITY];
                                        /* Community name */
   cups_asn1_t  request_type;           /* Request type */
-  int          request_id;             /* request-id value */
+  unsigned     request_id;             /* request-id value */
   int          error_status;           /* error-status value */
   int          error_index;            /* error-index value */
   int          object_name[CUPS_SNMP_MAX_OID];
@@ -142,5 +142,5 @@ extern int          _cupsSNMPWrite(int fd, http_addr_t *address, int version,
 
 
 /*
- * End of "$Id: snmp-private.h 3794 2012-04-23 22:44:16Z msweet $".
+ * End of "$Id: snmp-private.h 11558 2014-02-06 18:33:34Z msweet $".
  */
index b50d3d57a2248e0329b4e283f42e40f2688b7714..86d4598c323adb345db8e5dc8a527c8486d3f222 100644 (file)
@@ -1,57 +1,18 @@
 /*
- * "$Id: snmp.c 4167 2013-02-04 19:27:13Z msweet $"
+ * "$Id: snmp.c 11594 2014-02-14 20:09:01Z msweet $"
  *
- *   SNMP functions for CUPS.
+ * SNMP functions for CUPS.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 2006-2007 by Easy Software Products, all rights reserved.
+ * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2006-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:
- *
- *   _cupsSNMPClose()            - Close a SNMP socket.
- *   _cupsSNMPCopyOID()          - Copy an OID.
- *   _cupsSNMPDefaultCommunity() - Get the default SNMP community name.
- *   _cupsSNMPIsOID()            - Test whether a SNMP response contains the
- *                                 specified OID.
- *   _cupsSNMPIsOIDPrefixed()    - Test whether a SNMP response uses the
- *                                 specified OID prefix.
- *   _cupsSNMPOIDToString()      - Convert an OID to a string.
- *   _cupsSNMPOpen()             - Open a SNMP socket.
- *   _cupsSNMPRead()             - Read and parse a SNMP response.
- *   _cupsSNMPSetDebug()         - Enable/disable debug logging to stderr.
- *   _cupsSNMPStringToOID()      - Convert a numeric OID string to an OID array.
- *   _cupsSNMPWalk()             - Enumerate a group of OIDs.
- *   _cupsSNMPWrite()            - Send an SNMP query packet.
- *   asn1_debug()                - Decode an ASN1-encoded message.
- *   asn1_decode_snmp()          - Decode a SNMP packet.
- *   asn1_encode_snmp()          - Encode a SNMP packet.
- *   asn1_get_integer()          - Get an integer value.
- *   asn1_get_length()           - Get a value length.
- *   asn1_get_oid()              - Get an OID value.
- *   asn1_get_packed()           - Get a packed integer value.
- *   asn1_get_string()           - Get a string value.
- *   asn1_get_type()             - Get a value type.
- *   asn1_set_integer()          - Set an integer value.
- *   asn1_set_length()           - Set a value length.
- *   asn1_set_oid()              - Set an OID value.
- *   asn1_set_packed()           - Set a packed integer value.
- *   asn1_size_integer()         - Figure out the number of bytes needed for an
- *                                 integer value.
- *   asn1_size_length()          - Figure out the number of bytes needed for a
- *                                 length value.
- *   asn1_size_oid()             - Figure out the numebr of bytes needed for an
- *                                 OID value.
- *   asn1_size_packed()          - Figure out the number of bytes needed for a
- *                                 packed integer value.
- *   snmp_set_error()            - Set the localized error for a packet.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -77,16 +38,16 @@ static int          asn1_encode_snmp(unsigned char *buffer, size_t len,
                                         cups_snmp_t *packet);
 static int             asn1_get_integer(unsigned char **buffer,
                                         unsigned char *bufend,
-                                        int length);
+                                        unsigned length);
 static int             asn1_get_oid(unsigned char **buffer,
                                     unsigned char *bufend,
-                                    int length, int *oid, int oidsize);
+                                    unsigned length, int *oid, int oidsize);
 static int             asn1_get_packed(unsigned char **buffer,
                                        unsigned char *bufend);
 static char            *asn1_get_string(unsigned char **buffer,
                                         unsigned char *bufend,
-                                        int length, char *string,
-                                        int strsize);
+                                        unsigned length, char *string,
+                                        size_t strsize);
 static unsigned                asn1_get_length(unsigned char **buffer,
                                        unsigned char *bufend);
 static int             asn1_get_type(unsigned char **buffer,
@@ -99,10 +60,10 @@ static void         asn1_set_oid(unsigned char **buffer,
                                     const int *oid);
 static void            asn1_set_packed(unsigned char **buffer,
                                        int integer);
-static int             asn1_size_integer(int integer);
-static int             asn1_size_length(int length);
-static int             asn1_size_oid(const int *oid);
-static int             asn1_size_packed(int integer);
+static unsigned                asn1_size_integer(int integer);
+static unsigned                asn1_size_length(unsigned length);
+static unsigned                asn1_size_oid(const int *oid);
+static unsigned                asn1_size_packed(int integer);
 static void            snmp_set_error(cups_snmp_t *packet,
                                       const char *message);
 
@@ -116,11 +77,7 @@ _cupsSNMPClose(int fd)                      /* I - SNMP socket file descriptor */
 {
   DEBUG_printf(("4_cupsSNMPClose(fd=%d)", fd));
 
-#ifdef WIN32
-  closesocket(fd);
-#else
-  close(fd);
-#endif /* WIN32 */
+  httpAddrClose(NULL, fd);
 }
 
 
@@ -323,7 +280,7 @@ _cupsSNMPOIDToString(const int *src,        /* I - OID */
   for (dstptr = dst, dstend = dstptr + dstsize - 1;
        *src >= 0 && dstptr < dstend;
        src ++, dstptr += strlen(dstptr))
-    snprintf(dstptr, dstend - dstptr + 1, ".%d", *src);
+    snprintf(dstptr, (size_t)(dstend - dstptr + 1), ".%d", *src);
 
   if (*src >= 0)
     return (NULL);
@@ -391,7 +348,7 @@ _cupsSNMPRead(int         fd,               /* I - SNMP socket file descriptor */
 {
   unsigned char        buffer[CUPS_SNMP_MAX_PACKET];
                                        /* Data packet */
-  int          bytes;                  /* Number of bytes received */
+  ssize_t      bytes;                  /* Number of bytes received */
   socklen_t    addrlen;                /* Source address length */
   http_addr_t  address;                /* Source address */
 
@@ -477,9 +434,9 @@ _cupsSNMPRead(int         fd,               /* I - SNMP socket file descriptor */
   * Look for the response status code in the SNMP message header...
   */
 
-  asn1_debug("DEBUG: IN ", buffer, bytes, 0);
+  asn1_debug("DEBUG: IN ", buffer, (size_t)bytes, 0);
 
-  asn1_decode_snmp(buffer, bytes, packet);
+  asn1_decode_snmp(buffer, (size_t)bytes, packet);
 
   memcpy(&(packet->address), &address, sizeof(packet->address));
 
@@ -600,7 +557,7 @@ _cupsSNMPWalk(int            fd,    /* I - SNMP socket */
              void           *data)     /* I - User data pointer that is passed to the callback function */
 {
   int          count = 0;              /* Number of OIDs found */
-  int          request_id = 0;         /* Current request ID */
+  unsigned     request_id = 0;         /* Current request ID */
   cups_snmp_t  packet;                 /* Current response packet */
   int          lastoid[CUPS_SNMP_MAX_OID];
                                        /* Last OID we got */
@@ -693,7 +650,7 @@ _cupsSNMPWrite(
   cups_snmp_t  packet;                 /* SNMP message packet */
   unsigned char        buffer[CUPS_SNMP_MAX_PACKET];
                                        /* SNMP message buffer */
-  int          bytes;                  /* Size of message */
+  ssize_t      bytes;                  /* Size of message */
   http_addr_t  temp;                   /* Copy of address */
 
 
@@ -749,7 +706,7 @@ _cupsSNMPWrite(
     return (0);
   }
 
-  asn1_debug("DEBUG: OUT ", buffer, bytes, 0);
+  asn1_debug("DEBUG: OUT ", buffer, (size_t)bytes, 0);
 
  /*
   * Send the message...
@@ -759,8 +716,7 @@ _cupsSNMPWrite(
 
   _httpAddrSetPort(&temp, CUPS_SNMP_PORT);
 
-  return (sendto(fd, buffer, bytes, 0, (void *)&temp,
-                 httpAddrLength(&temp)) == bytes);
+  return (sendto(fd, buffer, (size_t)bytes, 0, (void *)&temp, (socklen_t)httpAddrLength(&temp)) == bytes);
 }
 
 
@@ -774,14 +730,14 @@ asn1_debug(const char    *prefix, /* I - Prefix string */
            size_t        len,          /* I - Length of buffer */
            int           indent)       /* I - Indentation */
 {
-  int          i;                      /* Looping var */
+  size_t       i;                      /* Looping var */
   unsigned char        *bufend;                /* End of buffer */
   int          integer;                /* Number value */
   int          oid[CUPS_SNMP_MAX_OID]; /* OID value */
   char         string[CUPS_SNMP_MAX_STRING];
                                        /* String value */
   unsigned char        value_type;             /* Type of value */
-  int          value_length;           /* Length of value */
+  unsigned     value_length;           /* Length of value */
   _cups_globals_t *cg = _cupsGlobals();        /* Global data */
 
 
@@ -794,15 +750,15 @@ asn1_debug(const char    *prefix, /* I - Prefix string */
     * Do a hex dump of the packet...
     */
 
-    int j;
+    size_t j;
 
     fprintf(stderr, "%sHex Dump (%d bytes):\n", prefix, (int)len);
 
-    for (i = 0; i < (int)len; i += 16)
+    for (i = 0; i < len; i += 16)
     {
-      fprintf(stderr, "%s%04x:", prefix, i);
+      fprintf(stderr, "%s%04x:", prefix, (unsigned)i);
 
-      for (j = 0; j < 16 && (i + j) < (int)len; j ++)
+      for (j = 0; j < 16 && (i + j) < len; j ++)
       {
         if (j && !(j & 3))
          fprintf(stderr, "  %02x", buffer[i + j]);
@@ -822,7 +778,7 @@ asn1_debug(const char    *prefix,   /* I - Prefix string */
 
       fputs("    ", stderr);
 
-      for (j = 0; j < 16 && (i + j) < (int)len; j ++)
+      for (j = 0; j < 16 && (i + j) < len; j ++)
         if (buffer[i + j] < ' ' || buffer[i + j] >= 0x7f)
          putc('.', stderr);
        else
@@ -843,7 +799,7 @@ asn1_debug(const char    *prefix,   /* I - Prefix string */
     * Get value type...
     */
 
-    value_type   = asn1_get_type(&buffer, bufend);
+    value_type   = (unsigned char)asn1_get_type(&buffer, bufend);
     value_length = asn1_get_length(&buffer, bufend);
 
     switch (value_type)
@@ -913,7 +869,7 @@ asn1_debug(const char    *prefix,   /* I - Prefix string */
 
           fprintf(stderr, "%s%*sOID %d bytes ", prefix, indent, "",
                  value_length);
-         for (i = 0; i < integer; i ++)
+         for (i = 0; i < (unsigned)integer; i ++)
            fprintf(stderr, ".%d", oid[i]);
          putc('\n', stderr);
           break;
@@ -972,7 +928,7 @@ asn1_decode_snmp(unsigned char *buffer,     /* I - Buffer */
 {
   unsigned char        *bufptr,                /* Pointer into the data */
                *bufend;                /* End of data */
-  int          length;                 /* Length of value */
+  unsigned     length;                 /* Length of value */
 
 
  /*
@@ -1005,7 +961,7 @@ asn1_decode_snmp(unsigned char *buffer,    /* I - Buffer */
     asn1_get_string(&bufptr, bufend, length, packet->community,
                     sizeof(packet->community));
 
-    if ((packet->request_type = asn1_get_type(&bufptr, bufend))
+    if ((packet->request_type = (cups_asn1_t)asn1_get_type(&bufptr, bufend))
             != CUPS_ASN1_GET_RESPONSE)
       snmp_set_error(packet, _("Packet does not contain a Get-Response-PDU"));
     else if (asn1_get_length(&bufptr, bufend) == 0)
@@ -1016,7 +972,7 @@ asn1_decode_snmp(unsigned char *buffer,    /* I - Buffer */
       snmp_set_error(packet, _("request-id uses indefinite length"));
     else
     {
-      packet->request_id = asn1_get_integer(&bufptr, bufend, length);
+      packet->request_id = (unsigned)asn1_get_integer(&bufptr, bufend, length);
 
       if (asn1_get_type(&bufptr, bufend) != CUPS_ASN1_INTEGER)
        snmp_set_error(packet, _("No error-status"));
@@ -1052,7 +1008,7 @@ asn1_decode_snmp(unsigned char *buffer,   /* I - Buffer */
            asn1_get_oid(&bufptr, bufend, length, packet->object_name,
                         CUPS_SNMP_MAX_OID);
 
-            packet->object_type = asn1_get_type(&bufptr, bufend);
+            packet->object_type = (cups_asn1_t)asn1_get_type(&bufptr, bufend);
 
            if ((length = asn1_get_length(&bufptr, bufend)) == 0 &&
                packet->object_type != CUPS_ASN1_NULL_VALUE &&
@@ -1096,12 +1052,12 @@ asn1_decode_snmp(unsigned char *buffer, /* I - Buffer */
 
                case CUPS_ASN1_GAUGE :
                    packet->object_value.gauge =
-                       asn1_get_integer(&bufptr, bufend, length);
+                       (unsigned)asn1_get_integer(&bufptr, bufend, length);
                    break;
 
                case CUPS_ASN1_TIMETICKS :
                    packet->object_value.timeticks =
-                       asn1_get_integer(&bufptr, bufend, length);
+                       (unsigned)asn1_get_integer(&bufptr, bufend, length);
                    break;
 
                 default :
@@ -1129,7 +1085,7 @@ asn1_encode_snmp(unsigned char *buffer,   /* I - Buffer */
                  cups_snmp_t   *packet)        /* I - SNMP packet */
 {
   unsigned char        *bufptr;                /* Pointer into buffer */
-  int          total,                  /* Total length */
+  unsigned     total,                  /* Total length */
                msglen,                 /* Length of entire message */
                commlen,                /* Length of community string */
                reqlen,                 /* Length of request */
@@ -1176,17 +1132,17 @@ asn1_encode_snmp(unsigned char *buffer, /* I - Buffer */
   varlen  = 1 + asn1_size_length(namelen) + namelen +
             1 + asn1_size_length(valuelen) + valuelen;
   listlen = 1 + asn1_size_length(varlen) + varlen;
-  reqlen  = 2 + asn1_size_integer(packet->request_id) +
+  reqlen  = 2 + asn1_size_integer((int)packet->request_id) +
             2 + asn1_size_integer(packet->error_status) +
             2 + asn1_size_integer(packet->error_index) +
             1 + asn1_size_length(listlen) + listlen;
-  commlen = strlen(packet->community);
+  commlen = (unsigned)strlen(packet->community);
   msglen  = 2 + asn1_size_integer(packet->version) +
             1 + asn1_size_length(commlen) + commlen +
            1 + asn1_size_length(reqlen) + reqlen;
   total   = 1 + asn1_size_length(msglen) + msglen;
 
-  if (total > (int)bufsize)
+  if (total > bufsize)
   {
     packet->error = "Message too large for buffer";
     return (-1);
@@ -1212,7 +1168,7 @@ asn1_encode_snmp(unsigned char *buffer,   /* I - Buffer */
   *bufptr++ = packet->request_type;    /* Get-Request-PDU/Get-Next-Request-PDU */
   asn1_set_length(&bufptr, reqlen);
 
-  asn1_set_integer(&bufptr, packet->request_id);
+  asn1_set_integer(&bufptr, (int)packet->request_id);
 
   asn1_set_integer(&bufptr, packet->error_status);
 
@@ -1258,7 +1214,7 @@ asn1_encode_snmp(unsigned char *buffer,   /* I - Buffer */
         break;
   }
 
-  return (bufptr - buffer);
+  return ((int)(bufptr - buffer));
 }
 
 
@@ -1270,7 +1226,7 @@ static int                                /* O  - Integer value */
 asn1_get_integer(
     unsigned char **buffer,            /* IO - Pointer in buffer */
     unsigned char *bufend,             /* I  - End of buffer */
-    int           length)              /* I  - Length of value */
+    unsigned      length)              /* I  - Length of value */
 {
   int  value;                          /* Integer value */
 
@@ -1333,7 +1289,7 @@ static int                                /* O  - Number of OIDs */
 asn1_get_oid(
     unsigned char **buffer,            /* IO - Pointer in buffer */
     unsigned char *bufend,             /* I  - End of buffer */
-    int           length,              /* I  - Length of value */
+    unsigned      length,              /* I  - Length of value */
     int           *oid,                        /* I  - OID buffer */
     int           oidsize)             /* I  - Size of OID buffer */
 {
@@ -1375,7 +1331,7 @@ asn1_get_oid(
 
   *oidptr = -1;
 
-  return (oidptr - oid);
+  return ((int)(oidptr - oid));
 }
 
 
@@ -1417,22 +1373,14 @@ static char *                           /* O  - String */
 asn1_get_string(
     unsigned char **buffer,            /* IO - Pointer in buffer */
     unsigned char *bufend,             /* I  - End of buffer */
-    int           length,              /* I  - Value length */
+    unsigned      length,              /* I  - Value length */
     char          *string,             /* I  - String buffer */
-    int           strsize)             /* I  - String buffer size */
+    size_t        strsize)             /* I  - String buffer size */
 {
-  if (length > (bufend - *buffer))
-    length = bufend - *buffer;
+  if (length > (unsigned)(bufend - *buffer))
+    length = (unsigned)(bufend - *buffer);
 
-  if (length < 0)
-  {
-   /*
-    * Disallow negative lengths!
-    */
-
-    *string = '\0';
-  }
-  else if (length < strsize)
+  if (length < strsize)
   {
    /*
     * String is smaller than the buffer...
@@ -1456,7 +1404,7 @@ asn1_get_string(
   if (length > 0)
     (*buffer) += length;
 
-  return (length < 0 ? NULL : string);
+  return (string);
 }
 
 
@@ -1496,40 +1444,40 @@ asn1_set_integer(unsigned char **buffer,/* IO - Pointer in buffer */
   {
     **buffer = 4;
     (*buffer) ++;
-    **buffer = integer >> 24;
+    **buffer = (unsigned char)(integer >> 24);
     (*buffer) ++;
-    **buffer = integer >> 16;
+    **buffer = (unsigned char)(integer >> 16);
     (*buffer) ++;
-    **buffer = integer >> 8;
+    **buffer = (unsigned char)(integer >> 8);
     (*buffer) ++;
-    **buffer = integer;
+    **buffer = (unsigned char)integer;
     (*buffer) ++;
   }
   else if (integer > 0x7fff || integer < -0x8000)
   {
     **buffer = 3;
     (*buffer) ++;
-    **buffer = integer >> 16;
+    **buffer = (unsigned char)(integer >> 16);
     (*buffer) ++;
-    **buffer = integer >> 8;
+    **buffer = (unsigned char)(integer >> 8);
     (*buffer) ++;
-    **buffer = integer;
+    **buffer = (unsigned char)integer;
     (*buffer) ++;
   }
   else if (integer > 0x7f || integer < -0x80)
   {
     **buffer = 2;
     (*buffer) ++;
-    **buffer = integer >> 8;
+    **buffer = (unsigned char)(integer >> 8);
     (*buffer) ++;
-    **buffer = integer;
+    **buffer = (unsigned char)integer;
     (*buffer) ++;
   }
   else
   {
     **buffer = 1;
     (*buffer) ++;
-    **buffer = integer;
+    **buffer = (unsigned char)integer;
     (*buffer) ++;
   }
 }
@@ -1547,21 +1495,21 @@ asn1_set_length(unsigned char **buffer, /* IO - Pointer in buffer */
   {
     **buffer = 0x82;                   /* 2-byte length */
     (*buffer) ++;
-    **buffer = length >> 8;
+    **buffer = (unsigned char)(length >> 8);
     (*buffer) ++;
-    **buffer = length;
+    **buffer = (unsigned char)length;
     (*buffer) ++;
   }
   else if (length > 127)
   {
     **buffer = 0x81;                   /* 1-byte length */
     (*buffer) ++;
-    **buffer = length;
+    **buffer = (unsigned char)length;
     (*buffer) ++;
   }
   else
   {
-    **buffer = length;                 /* Length */
+    **buffer = (unsigned char)length;  /* Length */
     (*buffer) ++;
   }
 }
@@ -1635,7 +1583,7 @@ asn1_set_packed(unsigned char **buffer,   /* IO - Pointer in buffer */
  *                         integer value.
  */
 
-static int                             /* O - Size in bytes */
+static unsigned                                /* O - Size in bytes */
 asn1_size_integer(int integer)         /* I - Integer value */
 {
   if (integer > 0x7fffff || integer < -0x800000)
@@ -1654,8 +1602,8 @@ asn1_size_integer(int integer)            /* I - Integer value */
  *                        length value.
  */
 
-static int                             /* O - Size in bytes */
-asn1_size_length(int length)           /* I - Length value */
+static unsigned                                /* O - Size in bytes */
+asn1_size_length(unsigned length)      /* I - Length value */
 {
   if (length > 0xff)
     return (3);
@@ -1671,10 +1619,10 @@ asn1_size_length(int length)            /* I - Length value */
  *                     OID value.
  */
 
-static int                             /* O - Size in bytes */
+static unsigned                                /* O - Size in bytes */
 asn1_size_oid(const int *oid)          /* I - OID value */
 {
-  int  length;                         /* Length of value */
+  unsigned     length;                 /* Length of value */
 
 
   if (oid[1] < 0)
@@ -1694,7 +1642,7 @@ asn1_size_oid(const int *oid)             /* I - OID value */
  *                        packed integer value.
  */
 
-static int                             /* O - Size in bytes */
+static unsigned                                /* O - Size in bytes */
 asn1_size_packed(int integer)          /* I - Integer value */
 {
   if (integer > 0xfffffff)
@@ -1729,5 +1677,5 @@ snmp_set_error(cups_snmp_t *packet,       /* I - Packet */
 
 
 /*
- * End of "$Id: snmp.c 4167 2013-02-04 19:27:13Z msweet $".
+ * End of "$Id: snmp.c 11594 2014-02-14 20:09:01Z msweet $".
  */
diff --git a/cups/sspi-private.h b/cups/sspi-private.h
deleted file mode 100644 (file)
index e8f36c2..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- *   Private SSPI definitions for CUPS.
- *
- *   Copyright 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/".
- */
-
-#ifndef _CUPS_SSPI_PRIVATE_H_
-#      define _CUPS_SSPI_PRIVATE_H_
-
-/*
- * Include necessary headers...
- */
-
-#  include <config.h>
-#  include <winsock2.h>
-#  include <ws2tcpip.h>
-#  include <wincrypt.h>
-#  include <wintrust.h>
-#  include <schannel.h>
-#  define SECURITY_WIN32
-#  include <security.h>
-#  include <sspi.h>
-
-/*
- * C++ magic...
- */
-
-#      ifdef __cplusplus
-extern "C" {
-#      endif /* __cplusplus */
-
-
-typedef struct                                         /**** SSPI/SSL data structure ****/
-{
-  SOCKET                       sock;                   /* TCP/IP socket */
-  CredHandle                   creds;                  /* Credentials */
-  CtxtHandle                   context;                /* SSL context */
-  BOOL                         contextInitialized;     /* Is context init'd? */
-  SecPkgContext_StreamSizes    streamSizes;            /* SSL data stream sizes */
-  BYTE                         *decryptBuffer;         /* Data pre-decryption*/
-  size_t                       decryptBufferLength;    /* Length of decrypt buffer */
-  size_t                       decryptBufferUsed;      /* Bytes used in buffer */
-  BYTE                         *readBuffer;            /* Data post-decryption */
-  size_t                       readBufferLength;       /* Length of read buffer */
-  size_t                       readBufferUsed;         /* Bytes used in buffer */
-  DWORD                                certFlags;              /* Cert verification flags */
-} _sspi_struct_t;
-
-
-/*
- * Prototypes...
- */
-_sspi_struct_t *_sspiAlloc(void);
-BOOL           _sspiAccept(_sspi_struct_t *conn);
-BOOL           _sspiConnect(_sspi_struct_t *conn,
-                            const CHAR *hostname);
-void           _sspiFree(_sspi_struct_t *conn);
-BOOL           _sspiGetCredentials(_sspi_struct_t *conn,
-                                   const LPWSTR containerName,
-                                   const TCHAR  *commonName,
-                                   BOOL server);
-int            _sspiPending(_sspi_struct_t *conn);
-int            _sspiRead(_sspi_struct_t *conn,
-                         void *buf, size_t len);
-void           _sspiSetAllowsAnyRoot(_sspi_struct_t *conn,
-                                     BOOL allow);
-void           _sspiSetAllowsExpiredCerts(_sspi_struct_t *conn,
-                                          BOOL allow);
-int            _sspiWrite(_sspi_struct_t *conn,
-                          void *buf, size_t len);
-
-
-#  ifdef __cplusplus
-}
-#  endif /* __cplusplus */
-#endif /* !_CUPS_SSPI_PRIVATE_H_ */
diff --git a/cups/sspi.c b/cups/sspi.c
deleted file mode 100644 (file)
index ba66f72..0000000
+++ /dev/null
@@ -1,1468 +0,0 @@
-/*
- * "$Id: sspi.c 11760 2014-03-28 12:58:24Z msweet $"
- *
- * Windows SSPI SSL implementation 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/".
- */
-
-/*
- * Include necessary headers...
- */
-
-#include "sspi-private.h"
-#include "debug-private.h"
-
-
-/* required to link this library for certificate functions */
-#pragma comment(lib, "Crypt32.lib")
-#pragma comment(lib, "Secur32.lib")
-#pragma comment(lib, "Ws2_32.lib")
-
-
-#if !defined(SECURITY_FLAG_IGNORE_UNKNOWN_CA)
-#  define SECURITY_FLAG_IGNORE_UNKNOWN_CA         0x00000100 /* Untrusted root */
-#endif
-
-#if !defined(SECURITY_FLAG_IGNORE_CERT_DATE_INVALID)
-#  define SECURITY_FLAG_IGNORE_CERT_DATE_INVALID  0x00002000 /* Expired X509 Cert. */
-#endif
-
-static DWORD sspi_verify_certificate(PCCERT_CONTEXT  serverCert,
-                                     const CHAR      *serverName,
-                                     DWORD           dwCertFlags);
-
-
-/*
- * 'sspi_alloc()' - Allocate SSPI ssl object
- */
-_sspi_struct_t*                                /* O  - New SSPI/SSL object */
-_sspiAlloc(void)
-{
-  _sspi_struct_t *conn = calloc(sizeof(_sspi_struct_t), 1);
-
-  if (conn)
-    conn->sock = INVALID_SOCKET;
-
-  return (conn);
-}
-
-
-/*
- * '_sspiGetCredentials()' - Retrieve an SSL/TLS certificate from the system store
- *                              If one cannot be found, one is created.
- */
-BOOL                                   /* O - 1 on success, 0 on failure */
-_sspiGetCredentials(_sspi_struct_t *conn,
-                                       /* I - Client connection */
-                    const LPWSTR   container,
-                                       /* I - Cert container name */
-                    const TCHAR    *cn,        /* I - Common name of certificate */
-                    BOOL           isServer)
-                                       /* I - Is caller a server? */
-{
-  HCERTSTORE           store = NULL;   /* Certificate store */
-  PCCERT_CONTEXT       storedContext = NULL;
-                                       /* Context created from the store */
-  PCCERT_CONTEXT       createdContext = NULL;
-                                       /* Context created by us */
-  DWORD                        dwSize = 0;     /* 32 bit size */
-  PBYTE                        p = NULL;       /* Temporary storage */
-  HCRYPTPROV           hProv = (HCRYPTPROV) NULL;
-                                       /* Handle to a CSP */
-  CERT_NAME_BLOB       sib;            /* Arbitrary array of bytes */
-  SCHANNEL_CRED                SchannelCred;   /* Schannel credential data */
-  TimeStamp            tsExpiry;       /* Time stamp */
-  SECURITY_STATUS      Status;         /* Status */
-  HCRYPTKEY            hKey = (HCRYPTKEY) NULL;
-                                       /* Handle to crypto key */
-  CRYPT_KEY_PROV_INFO  kpi;            /* Key container info */
-  SYSTEMTIME           et;             /* System time */
-  CERT_EXTENSIONS      exts;           /* Array of cert extensions */
-  CRYPT_KEY_PROV_INFO  ckp;            /* Handle to crypto key */
-  BOOL                 ok = TRUE;      /* Return value */
-
-
-  DEBUG_printf(("_sspiGetCredentials(conn=%p, container=%p, cn=\"%s\", isServer=%d)", conn, container, cn, isServer));
-
-  if (!conn)
-    return (FALSE);
-  if (!cn)
-    return (FALSE);
-
-  if (!CryptAcquireContextW(&hProv, (LPWSTR) container, MS_DEF_PROV_W,
-                           PROV_RSA_FULL,
-                           CRYPT_NEWKEYSET | CRYPT_MACHINE_KEYSET))
-  {
-    if (GetLastError() == NTE_EXISTS)
-    {
-      if (!CryptAcquireContextW(&hProv, (LPWSTR) container, MS_DEF_PROV_W,
-                               PROV_RSA_FULL, CRYPT_MACHINE_KEYSET))
-      {
-        DEBUG_printf(("_sspiGetCredentials: CryptAcquireContext failed: %x\n",
-                      GetLastError()));
-        ok = FALSE;
-        goto cleanup;
-      }
-    }
-  }
-
-  store = CertOpenStore(CERT_STORE_PROV_SYSTEM,
-                        X509_ASN_ENCODING|PKCS_7_ASN_ENCODING,
-                        hProv,
-                        CERT_SYSTEM_STORE_LOCAL_MACHINE |
-                        CERT_STORE_NO_CRYPT_RELEASE_FLAG |
-                        CERT_STORE_OPEN_EXISTING_FLAG,
-                        L"MY");
-
-  if (!store)
-  {
-    DEBUG_printf(("_sspiGetCredentials: CertOpenSystemStore failed: %x\n",
-                  GetLastError()));
-    ok = FALSE;
-    goto cleanup;
-  }
-
-  dwSize = 0;
-
-  if (!CertStrToName(X509_ASN_ENCODING, cn, CERT_OID_NAME_STR,
-                     NULL, NULL, &dwSize, NULL))
-  {
-    DEBUG_printf(("_sspiGetCredentials: CertStrToName failed: %x\n",
-                   GetLastError()));
-    ok = FALSE;
-    goto cleanup;
-  }
-
-  p = (PBYTE) malloc(dwSize);
-
-  if (!p)
-  {
-    DEBUG_printf(("_sspiGetCredentials: malloc failed for %d bytes", dwSize));
-    ok = FALSE;
-    goto cleanup;
-  }
-
-  if (!CertStrToName(X509_ASN_ENCODING, cn, CERT_OID_NAME_STR, NULL,
-                     p, &dwSize, NULL))
-  {
-    DEBUG_printf(("_sspiGetCredentials: CertStrToName failed: %x",
-                 GetLastError()));
-    ok = FALSE;
-    goto cleanup;
-  }
-
-  sib.cbData = dwSize;
-  sib.pbData = p;
-
-  storedContext = CertFindCertificateInStore(store, X509_ASN_ENCODING|PKCS_7_ASN_ENCODING,
-                                             0, CERT_FIND_SUBJECT_NAME, &sib, NULL);
-
-  if (!storedContext)
-  {
-   /*
-    * If we couldn't find the context, then we'll
-    * create a new one
-    */
-    if (!CryptGenKey(hProv, AT_KEYEXCHANGE, CRYPT_EXPORTABLE, &hKey))
-    {
-      DEBUG_printf(("_sspiGetCredentials: CryptGenKey failed: %x",
-                    GetLastError()));
-      ok = FALSE;
-      goto cleanup;
-    }
-
-    ZeroMemory(&kpi, sizeof(kpi));
-    kpi.pwszContainerName = (LPWSTR) container;
-    kpi.pwszProvName = MS_DEF_PROV_W;
-    kpi.dwProvType = PROV_RSA_FULL;
-    kpi.dwFlags = CERT_SET_KEY_CONTEXT_PROP_ID;
-    kpi.dwKeySpec = AT_KEYEXCHANGE;
-
-    GetSystemTime(&et);
-    et.wYear += 10;
-
-    ZeroMemory(&exts, sizeof(exts));
-
-    createdContext = CertCreateSelfSignCertificate(hProv, &sib, 0, &kpi, NULL, NULL,
-                                                   &et, &exts);
-
-    if (!createdContext)
-    {
-      DEBUG_printf(("_sspiGetCredentials: CertCreateSelfSignCertificate failed: %x",
-                   GetLastError()));
-      ok = FALSE;
-      goto cleanup;
-    }
-
-    if (!CertAddCertificateContextToStore(store, createdContext,
-                                          CERT_STORE_ADD_REPLACE_EXISTING,
-                                          &storedContext))
-    {
-      DEBUG_printf(("_sspiGetCredentials: CertAddCertificateContextToStore failed: %x",
-                    GetLastError()));
-      ok = FALSE;
-      goto cleanup;
-    }
-
-    ZeroMemory(&ckp, sizeof(ckp));
-    ckp.pwszContainerName = (LPWSTR) container;
-    ckp.pwszProvName = MS_DEF_PROV_W;
-    ckp.dwProvType = PROV_RSA_FULL;
-    ckp.dwFlags = CRYPT_MACHINE_KEYSET;
-    ckp.dwKeySpec = AT_KEYEXCHANGE;
-
-    if (!CertSetCertificateContextProperty(storedContext,
-                                           CERT_KEY_PROV_INFO_PROP_ID,
-                                           0, &ckp))
-    {
-      DEBUG_printf(("_sspiGetCredentials: CertSetCertificateContextProperty failed: %x",
-                    GetLastError()));
-      ok = FALSE;
-      goto cleanup;
-    }
-  }
-
-  ZeroMemory(&SchannelCred, sizeof(SchannelCred));
-
-  SchannelCred.dwVersion = SCHANNEL_CRED_VERSION;
-  SchannelCred.cCreds = 1;
-  SchannelCred.paCred = &storedContext;
-
- /*
-  * SSPI doesn't seem to like it if grbitEnabledProtocols
-  * is set for a client
-  */
-  if (isServer)
-    SchannelCred.grbitEnabledProtocols = SP_PROT_SSL3TLS1;
-
- /*
-  * Create an SSPI credential.
-  */
-  Status = AcquireCredentialsHandle(NULL, UNISP_NAME,
-                                    isServer ? SECPKG_CRED_INBOUND:SECPKG_CRED_OUTBOUND,
-                                    NULL, &SchannelCred, NULL, NULL, &conn->creds,
-                                    &tsExpiry);
-  if (Status != SEC_E_OK)
-  {
-    DEBUG_printf(("_sspiGetCredentials: AcquireCredentialsHandle failed: %x", Status));
-    ok = FALSE;
-    goto cleanup;
-  }
-
-cleanup:
-
- /*
-  * Cleanup
-  */
-  if (hKey)
-    CryptDestroyKey(hKey);
-
-  if (createdContext)
-    CertFreeCertificateContext(createdContext);
-
-  if (storedContext)
-    CertFreeCertificateContext(storedContext);
-
-  if (p)
-    free(p);
-
-  if (store)
-    CertCloseStore(store, 0);
-
-  if (hProv)
-    CryptReleaseContext(hProv, 0);
-
-  return (ok);
-}
-
-
-/*
- * '_sspiConnect()' - Make an SSL connection. This function
- *                    assumes a TCP/IP connection has already
- *                    been successfully made
- */
-BOOL                                   /* O - 1 on success, 0 on failure */
-_sspiConnect(_sspi_struct_t *conn,     /* I - Client connection */
-             const CHAR *hostname)     /* I - Server hostname */
-{
-  PCCERT_CONTEXT       serverCert;     /* Server certificate */
-  DWORD                        dwSSPIFlags;    /* SSL connection attributes we want */
-  DWORD                        dwSSPIOutFlags; /* SSL connection attributes we got */
-  TimeStamp            tsExpiry;       /* Time stamp */
-  SECURITY_STATUS      scRet;          /* Status */
-  DWORD                        cbData;         /* Data count */
-  SecBufferDesc                inBuffer;       /* Array of SecBuffer structs */
-  SecBuffer            inBuffers[2];   /* Security package buffer */
-  SecBufferDesc                outBuffer;      /* Array of SecBuffer structs */
-  SecBuffer            outBuffers[1];  /* Security package buffer */
-  BOOL                 ok = TRUE;      /* Return value */
-
-  serverCert  = NULL;
-
-  dwSSPIFlags = ISC_REQ_SEQUENCE_DETECT   |
-                ISC_REQ_REPLAY_DETECT     |
-                ISC_REQ_CONFIDENTIALITY   |
-                ISC_RET_EXTENDED_ERROR    |
-                ISC_REQ_ALLOCATE_MEMORY   |
-                ISC_REQ_STREAM;
-
- /*
-  * Initiate a ClientHello message and generate a token.
-  */
-  outBuffers[0].pvBuffer   = NULL;
-  outBuffers[0].BufferType = SECBUFFER_TOKEN;
-  outBuffers[0].cbBuffer   = 0;
-
-  outBuffer.cBuffers = 1;
-  outBuffer.pBuffers = outBuffers;
-  outBuffer.ulVersion = SECBUFFER_VERSION;
-
-  scRet = InitializeSecurityContext(&conn->creds, NULL, TEXT(""), dwSSPIFlags,
-                                    0, SECURITY_NATIVE_DREP, NULL, 0, &conn->context,
-                                    &outBuffer, &dwSSPIOutFlags, &tsExpiry);
-
-  if (scRet != SEC_I_CONTINUE_NEEDED)
-  {
-    DEBUG_printf(("_sspiConnect: InitializeSecurityContext(1) failed: %x", scRet));
-    ok = FALSE;
-    goto cleanup;
-  }
-
- /*
-  * Send response to server if there is one.
-  */
-  if (outBuffers[0].cbBuffer && outBuffers[0].pvBuffer)
-  {
-    cbData = send(conn->sock, outBuffers[0].pvBuffer, outBuffers[0].cbBuffer, 0);
-
-    if ((cbData == SOCKET_ERROR) || !cbData)
-    {
-      DEBUG_printf(("_sspiConnect: send failed: %d", WSAGetLastError()));
-      FreeContextBuffer(outBuffers[0].pvBuffer);
-      DeleteSecurityContext(&conn->context);
-      ok = FALSE;
-      goto cleanup;
-    }
-
-    DEBUG_printf(("_sspiConnect: %d bytes of handshake data sent", cbData));
-
-   /*
-    * Free output buffer.
-    */
-    FreeContextBuffer(outBuffers[0].pvBuffer);
-    outBuffers[0].pvBuffer = NULL;
-  }
-
-  dwSSPIFlags = ISC_REQ_MANUAL_CRED_VALIDATION |
-                   ISC_REQ_SEQUENCE_DETECT        |
-                ISC_REQ_REPLAY_DETECT          |
-                ISC_REQ_CONFIDENTIALITY        |
-                ISC_RET_EXTENDED_ERROR         |
-                ISC_REQ_ALLOCATE_MEMORY        |
-                ISC_REQ_STREAM;
-
-  conn->decryptBufferUsed = 0;
-
- /*
-  * Loop until the handshake is finished or an error occurs.
-  */
-  scRet = SEC_I_CONTINUE_NEEDED;
-
-  while(scRet == SEC_I_CONTINUE_NEEDED        ||
-        scRet == SEC_E_INCOMPLETE_MESSAGE     ||
-        scRet == SEC_I_INCOMPLETE_CREDENTIALS)
-  {
-    if ((conn->decryptBufferUsed == 0) || (scRet == SEC_E_INCOMPLETE_MESSAGE))
-    {
-      if (conn->decryptBufferLength <= conn->decryptBufferUsed)
-      {
-        conn->decryptBufferLength += 4096;
-        conn->decryptBuffer = (BYTE*) realloc(conn->decryptBuffer, conn->decryptBufferLength);
-
-        if (!conn->decryptBuffer)
-        {
-          DEBUG_printf(("_sspiConnect: unable to allocate %d byte decrypt buffer",
-                        conn->decryptBufferLength));
-          SetLastError(E_OUTOFMEMORY);
-          ok = FALSE;
-          goto cleanup;
-        }
-      }
-
-      cbData = recv(conn->sock, conn->decryptBuffer + conn->decryptBufferUsed,
-                    (int) (conn->decryptBufferLength - conn->decryptBufferUsed), 0);
-
-      if (cbData == SOCKET_ERROR)
-      {
-        DEBUG_printf(("_sspiConnect: recv failed: %d", WSAGetLastError()));
-        ok = FALSE;
-        goto cleanup;
-      }
-      else if (cbData == 0)
-      {
-        DEBUG_printf(("_sspiConnect: server unexpectedly disconnected"));
-        ok = FALSE;
-        goto cleanup;
-      }
-
-      DEBUG_printf(("_sspiConnect: %d bytes of handshake data received",
-                    cbData));
-
-      conn->decryptBufferUsed += cbData;
-    }
-
-   /*
-    * Set up the input buffers. Buffer 0 is used to pass in data
-    * received from the server. Schannel will consume some or all
-    * of this. Leftover data (if any) will be placed in buffer 1 and
-    * given a buffer type of SECBUFFER_EXTRA.
-    */
-    inBuffers[0].pvBuffer   = conn->decryptBuffer;
-    inBuffers[0].cbBuffer   = (unsigned long) conn->decryptBufferUsed;
-    inBuffers[0].BufferType = SECBUFFER_TOKEN;
-
-    inBuffers[1].pvBuffer   = NULL;
-    inBuffers[1].cbBuffer   = 0;
-    inBuffers[1].BufferType = SECBUFFER_EMPTY;
-
-    inBuffer.cBuffers       = 2;
-    inBuffer.pBuffers       = inBuffers;
-    inBuffer.ulVersion      = SECBUFFER_VERSION;
-
-   /*
-    * Set up the output buffers. These are initialized to NULL
-    * so as to make it less likely we'll attempt to free random
-    * garbage later.
-    */
-    outBuffers[0].pvBuffer  = NULL;
-    outBuffers[0].BufferType= SECBUFFER_TOKEN;
-    outBuffers[0].cbBuffer  = 0;
-
-    outBuffer.cBuffers      = 1;
-    outBuffer.pBuffers      = outBuffers;
-    outBuffer.ulVersion     = SECBUFFER_VERSION;
-
-   /*
-    * Call InitializeSecurityContext.
-    */
-    scRet = InitializeSecurityContext(&conn->creds, &conn->context, NULL, dwSSPIFlags,
-                                      0, SECURITY_NATIVE_DREP, &inBuffer, 0, NULL,
-                                      &outBuffer, &dwSSPIOutFlags, &tsExpiry);
-
-   /*
-    * If InitializeSecurityContext was successful (or if the error was
-    * one of the special extended ones), send the contends of the output
-    * buffer to the server.
-    */
-    if (scRet == SEC_E_OK                ||
-        scRet == SEC_I_CONTINUE_NEEDED   ||
-        FAILED(scRet) && (dwSSPIOutFlags & ISC_RET_EXTENDED_ERROR))
-    {
-      if (outBuffers[0].cbBuffer && outBuffers[0].pvBuffer)
-      {
-        cbData = send(conn->sock, outBuffers[0].pvBuffer, outBuffers[0].cbBuffer, 0);
-
-        if ((cbData == SOCKET_ERROR) || !cbData)
-        {
-          DEBUG_printf(("_sspiConnect: send failed: %d", WSAGetLastError()));
-          FreeContextBuffer(outBuffers[0].pvBuffer);
-          DeleteSecurityContext(&conn->context);
-          ok = FALSE;
-          goto cleanup;
-        }
-
-        DEBUG_printf(("_sspiConnect: %d bytes of handshake data sent", cbData));
-
-       /*
-        * Free output buffer.
-        */
-        FreeContextBuffer(outBuffers[0].pvBuffer);
-        outBuffers[0].pvBuffer = NULL;
-      }
-    }
-
-   /*
-    * If InitializeSecurityContext returned SEC_E_INCOMPLETE_MESSAGE,
-    * then we need to read more data from the server and try again.
-    */
-    if (scRet == SEC_E_INCOMPLETE_MESSAGE)
-      continue;
-
-   /*
-    * If InitializeSecurityContext returned SEC_E_OK, then the
-    * handshake completed successfully.
-    */
-    if (scRet == SEC_E_OK)
-    {
-     /*
-      * If the "extra" buffer contains data, this is encrypted application
-      * protocol layer stuff. It needs to be saved. The application layer
-      * will later decrypt it with DecryptMessage.
-      */
-      DEBUG_printf(("_sspiConnect: Handshake was successful"));
-
-      if (inBuffers[1].BufferType == SECBUFFER_EXTRA)
-      {
-        if (conn->decryptBufferLength < inBuffers[1].cbBuffer)
-        {
-          conn->decryptBuffer = realloc(conn->decryptBuffer, inBuffers[1].cbBuffer);
-
-          if (!conn->decryptBuffer)
-          {
-            DEBUG_printf(("_sspiConnect: unable to allocate %d bytes for decrypt buffer",
-                          inBuffers[1].cbBuffer));
-            SetLastError(E_OUTOFMEMORY);
-            ok = FALSE;
-            goto cleanup;
-          }
-        }
-
-        memmove(conn->decryptBuffer,
-                conn->decryptBuffer + (conn->decryptBufferUsed - inBuffers[1].cbBuffer),
-                inBuffers[1].cbBuffer);
-
-        conn->decryptBufferUsed = inBuffers[1].cbBuffer;
-
-        DEBUG_printf(("_sspiConnect: %d bytes of app data was bundled with handshake data",
-                      conn->decryptBufferUsed));
-      }
-      else
-        conn->decryptBufferUsed = 0;
-
-     /*
-      * Bail out to quit
-      */
-      break;
-    }
-
-   /*
-    * Check for fatal error.
-    */
-    if (FAILED(scRet))
-    {
-      DEBUG_printf(("_sspiConnect: InitializeSecurityContext(2) failed: %x", scRet));
-      ok = FALSE;
-      break;
-    }
-
-   /*
-    * If InitializeSecurityContext returned SEC_I_INCOMPLETE_CREDENTIALS,
-    * then the server just requested client authentication.
-    */
-    if (scRet == SEC_I_INCOMPLETE_CREDENTIALS)
-    {
-     /*
-      * Unimplemented
-      */
-      DEBUG_printf(("_sspiConnect: server requested client credentials"));
-      ok = FALSE;
-      break;
-    }
-
-   /*
-    * Copy any leftover data from the "extra" buffer, and go around
-    * again.
-    */
-    if (inBuffers[1].BufferType == SECBUFFER_EXTRA)
-    {
-      memmove(conn->decryptBuffer,
-              conn->decryptBuffer + (conn->decryptBufferUsed - inBuffers[1].cbBuffer),
-              inBuffers[1].cbBuffer);
-
-      conn->decryptBufferUsed = inBuffers[1].cbBuffer;
-    }
-    else
-    {
-      conn->decryptBufferUsed = 0;
-    }
-  }
-
-  if (ok)
-  {
-    conn->contextInitialized = TRUE;
-
-   /*
-    * Get the server cert
-    */
-    scRet = QueryContextAttributes(&conn->context, SECPKG_ATTR_REMOTE_CERT_CONTEXT, (VOID*) &serverCert );
-
-    if (scRet != SEC_E_OK)
-    {
-      DEBUG_printf(("_sspiConnect: QueryContextAttributes failed(SECPKG_ATTR_REMOTE_CERT_CONTEXT): %x", scRet));
-      ok = FALSE;
-      goto cleanup;
-    }
-
-    scRet = sspi_verify_certificate(serverCert, hostname, conn->certFlags);
-
-    if (scRet != SEC_E_OK)
-    {
-      DEBUG_printf(("_sspiConnect: sspi_verify_certificate failed: %x", scRet));
-      ok = FALSE;
-      goto cleanup;
-    }
-
-   /*
-    * Find out how big the header/trailer will be:
-    */
-    scRet = QueryContextAttributes(&conn->context, SECPKG_ATTR_STREAM_SIZES, &conn->streamSizes);
-
-    if (scRet != SEC_E_OK)
-    {
-      DEBUG_printf(("_sspiConnect: QueryContextAttributes failed(SECPKG_ATTR_STREAM_SIZES): %x", scRet));
-      ok = FALSE;
-    }
-  }
-
-cleanup:
-
-  if (serverCert)
-    CertFreeCertificateContext(serverCert);
-
-  return (ok);
-}
-
-
-/*
- * '_sspiAccept()' - Accept an SSL/TLS connection
- */
-BOOL                                   /* O - 1 on success, 0 on failure */
-_sspiAccept(_sspi_struct_t *conn)      /* I  - Client connection */
-{
-  DWORD                        dwSSPIFlags;    /* SSL connection attributes we want */
-  DWORD                        dwSSPIOutFlags; /* SSL connection attributes we got */
-  TimeStamp            tsExpiry;       /* Time stamp */
-  SECURITY_STATUS      scRet;          /* SSPI Status */
-  SecBufferDesc                inBuffer;       /* Array of SecBuffer structs */
-  SecBuffer            inBuffers[2];   /* Security package buffer */
-  SecBufferDesc                outBuffer;      /* Array of SecBuffer structs */
-  SecBuffer            outBuffers[1];  /* Security package buffer */
-  DWORD                        num = 0;        /* 32 bit status value */
-  BOOL                 fInitContext = TRUE;
-                                       /* Has the context been init'd? */
-  BOOL                 ok = TRUE;      /* Return value */
-
-  if (!conn)
-    return (FALSE);
-
-  dwSSPIFlags = ASC_REQ_SEQUENCE_DETECT  |
-                ASC_REQ_REPLAY_DETECT    |
-                ASC_REQ_CONFIDENTIALITY  |
-                ASC_REQ_EXTENDED_ERROR   |
-                ASC_REQ_ALLOCATE_MEMORY  |
-                ASC_REQ_STREAM;
-
-  conn->decryptBufferUsed = 0;
-
- /*
-  * Set OutBuffer for AcceptSecurityContext call
-  */
-  outBuffer.cBuffers = 1;
-  outBuffer.pBuffers = outBuffers;
-  outBuffer.ulVersion = SECBUFFER_VERSION;
-
-  scRet = SEC_I_CONTINUE_NEEDED;
-
-  while (scRet == SEC_I_CONTINUE_NEEDED    ||
-         scRet == SEC_E_INCOMPLETE_MESSAGE ||
-         scRet == SEC_I_INCOMPLETE_CREDENTIALS)
-  {
-    if ((conn->decryptBufferUsed == 0) || (scRet == SEC_E_INCOMPLETE_MESSAGE))
-    {
-      if (conn->decryptBufferLength <= conn->decryptBufferUsed)
-      {
-        conn->decryptBufferLength += 4096;
-        conn->decryptBuffer = (BYTE*) realloc(conn->decryptBuffer,
-                                              conn->decryptBufferLength);
-
-        if (!conn->decryptBuffer)
-        {
-          DEBUG_printf(("_sspiAccept: unable to allocate %d byte decrypt buffer",
-                        conn->decryptBufferLength));
-          ok = FALSE;
-          goto cleanup;
-        }
-      }
-
-      for (;;)
-      {
-        num = recv(conn->sock,
-                   conn->decryptBuffer + conn->decryptBufferUsed,
-                   (int)(conn->decryptBufferLength - conn->decryptBufferUsed),
-                   0);
-
-        if ((num == SOCKET_ERROR) && (WSAGetLastError() == WSAEWOULDBLOCK))
-          Sleep(1);
-        else
-          break;
-      }
-
-      if (num == SOCKET_ERROR)
-      {
-        DEBUG_printf(("_sspiAccept: recv failed: %d", WSAGetLastError()));
-        ok = FALSE;
-        goto cleanup;
-      }
-      else if (num == 0)
-      {
-        DEBUG_printf(("_sspiAccept: client disconnected"));
-        ok = FALSE;
-        goto cleanup;
-      }
-
-      DEBUG_printf(("_sspiAccept: received %d (handshake) bytes from client",
-                    num));
-      conn->decryptBufferUsed += num;
-    }
-
-   /*
-    * InBuffers[1] is for getting extra data that
-    * SSPI/SCHANNEL doesn't proccess on this
-    * run around the loop.
-    */
-    inBuffers[0].pvBuffer   = conn->decryptBuffer;
-    inBuffers[0].cbBuffer   = (unsigned long) conn->decryptBufferUsed;
-    inBuffers[0].BufferType = SECBUFFER_TOKEN;
-
-    inBuffers[1].pvBuffer   = NULL;
-    inBuffers[1].cbBuffer   = 0;
-    inBuffers[1].BufferType = SECBUFFER_EMPTY;
-
-    inBuffer.cBuffers       = 2;
-    inBuffer.pBuffers       = inBuffers;
-    inBuffer.ulVersion      = SECBUFFER_VERSION;
-
-   /*
-    * Initialize these so if we fail, pvBuffer contains NULL,
-    * so we don't try to free random garbage at the quit
-    */
-    outBuffers[0].pvBuffer   = NULL;
-    outBuffers[0].BufferType = SECBUFFER_TOKEN;
-    outBuffers[0].cbBuffer   = 0;
-
-    scRet = AcceptSecurityContext(&conn->creds, (fInitContext?NULL:&conn->context),
-                                  &inBuffer, dwSSPIFlags, SECURITY_NATIVE_DREP,
-                                  (fInitContext?&conn->context:NULL), &outBuffer,
-                                  &dwSSPIOutFlags, &tsExpiry);
-
-    fInitContext = FALSE;
-
-    if (scRet == SEC_E_OK              ||
-        scRet == SEC_I_CONTINUE_NEEDED ||
-        (FAILED(scRet) && ((dwSSPIOutFlags & ISC_RET_EXTENDED_ERROR) != 0)))
-    {
-      if (outBuffers[0].cbBuffer && outBuffers[0].pvBuffer)
-      {
-       /*
-        * Send response to server if there is one
-        */
-        num = send(conn->sock, outBuffers[0].pvBuffer, outBuffers[0].cbBuffer, 0);
-
-        if ((num == SOCKET_ERROR) || (num == 0))
-        {
-          DEBUG_printf(("_sspiAccept: handshake send failed: %d", WSAGetLastError()));
-          ok = FALSE;
-          goto cleanup;
-        }
-
-        DEBUG_printf(("_sspiAccept: send %d handshake bytes to client",
-                     outBuffers[0].cbBuffer));
-
-        FreeContextBuffer(outBuffers[0].pvBuffer);
-        outBuffers[0].pvBuffer = NULL;
-      }
-    }
-
-    if (scRet == SEC_E_OK)
-    {
-     /*
-      * If there's extra data then save it for
-      * next time we go to decrypt
-      */
-      if (inBuffers[1].BufferType == SECBUFFER_EXTRA)
-      {
-        memcpy(conn->decryptBuffer,
-               (LPBYTE) (conn->decryptBuffer + (conn->decryptBufferUsed - inBuffers[1].cbBuffer)),
-               inBuffers[1].cbBuffer);
-        conn->decryptBufferUsed = inBuffers[1].cbBuffer;
-      }
-      else
-      {
-        conn->decryptBufferUsed = 0;
-      }
-
-      ok = TRUE;
-      break;
-    }
-    else if (FAILED(scRet) && (scRet != SEC_E_INCOMPLETE_MESSAGE))
-    {
-      DEBUG_printf(("_sspiAccept: AcceptSecurityContext failed: %x", scRet));
-      ok = FALSE;
-      break;
-    }
-
-    if (scRet != SEC_E_INCOMPLETE_MESSAGE &&
-        scRet != SEC_I_INCOMPLETE_CREDENTIALS)
-    {
-      if (inBuffers[1].BufferType == SECBUFFER_EXTRA)
-      {
-        memcpy(conn->decryptBuffer,
-               (LPBYTE) (conn->decryptBuffer + (conn->decryptBufferUsed - inBuffers[1].cbBuffer)),
-               inBuffers[1].cbBuffer);
-        conn->decryptBufferUsed = inBuffers[1].cbBuffer;
-      }
-      else
-      {
-        conn->decryptBufferUsed = 0;
-      }
-    }
-  }
-
-  if (ok)
-  {
-    conn->contextInitialized = TRUE;
-
-   /*
-    * Find out how big the header will be:
-    */
-    scRet = QueryContextAttributes(&conn->context, SECPKG_ATTR_STREAM_SIZES, &conn->streamSizes);
-
-    if (scRet != SEC_E_OK)
-    {
-      DEBUG_printf(("_sspiAccept: QueryContextAttributes failed: %x", scRet));
-      ok = FALSE;
-    }
-  }
-
-cleanup:
-
-  return (ok);
-}
-
-
-/*
- * '_sspiSetAllowsAnyRoot()' - Set the client cert policy for untrusted root certs
- */
-void
-_sspiSetAllowsAnyRoot(_sspi_struct_t *conn,
-                                       /* I  - Client connection */
-                      BOOL           allow)
-                                       /* I  - Allow any root */
-{
-  conn->certFlags = (allow) ? conn->certFlags | SECURITY_FLAG_IGNORE_UNKNOWN_CA :
-                              conn->certFlags & ~SECURITY_FLAG_IGNORE_UNKNOWN_CA;
-}
-
-
-/*
- * '_sspiSetAllowsExpiredCerts()' - Set the client cert policy for expired root certs
- */
-void
-_sspiSetAllowsExpiredCerts(_sspi_struct_t *conn,
-                                       /* I  - Client connection */
-                           BOOL           allow)
-                                       /* I  - Allow expired certs */
-{
-  conn->certFlags = (allow) ? conn->certFlags | SECURITY_FLAG_IGNORE_CERT_DATE_INVALID :
-                              conn->certFlags & ~SECURITY_FLAG_IGNORE_CERT_DATE_INVALID;
-}
-
-
-/*
- * '_sspiWrite()' - Write a buffer to an ssl socket
- */
-int                                    /* O  - Bytes written or SOCKET_ERROR */
-_sspiWrite(_sspi_struct_t *conn,       /* I  - Client connection */
-           void           *buf,                /* I  - Buffer */
-           size_t         len)         /* I  - Buffer length */
-{
-  SecBufferDesc        message;                /* Array of SecBuffer struct */
-  SecBuffer    buffers[4] = { 0 };     /* Security package buffer */
-  BYTE         *buffer = NULL;         /* Scratch buffer */
-  int          bufferLen;              /* Buffer length */
-  size_t       bytesLeft;              /* Bytes left to write */
-  int          index = 0;              /* Index into buffer */
-  int          num = 0;                /* Return value */
-
-  if (!conn || !buf || !len)
-  {
-    WSASetLastError(WSAEINVAL);
-    num = SOCKET_ERROR;
-    goto cleanup;
-  }
-
-  bufferLen = conn->streamSizes.cbMaximumMessage +
-              conn->streamSizes.cbHeader +
-              conn->streamSizes.cbTrailer;
-
-  buffer = (BYTE*) malloc(bufferLen);
-
-  if (!buffer)
-  {
-    DEBUG_printf(("_sspiWrite: buffer alloc of %d bytes failed", bufferLen));
-    WSASetLastError(E_OUTOFMEMORY);
-    num = SOCKET_ERROR;
-    goto cleanup;
-  }
-
-  bytesLeft = len;
-
-  while (bytesLeft)
-  {
-    size_t chunk = min(conn->streamSizes.cbMaximumMessage,     /* Size of data to write */
-                       bytesLeft);
-    SECURITY_STATUS scRet;                                     /* SSPI status */
-
-   /*
-    * Copy user data into the buffer, starting
-    * just past the header
-    */
-    memcpy(buffer + conn->streamSizes.cbHeader,
-           ((BYTE*) buf) + index,
-           chunk);
-
-   /*
-    * Setup the SSPI buffers
-    */
-    message.ulVersion = SECBUFFER_VERSION;
-    message.cBuffers = 4;
-    message.pBuffers = buffers;
-    buffers[0].pvBuffer = buffer;
-    buffers[0].cbBuffer = conn->streamSizes.cbHeader;
-    buffers[0].BufferType = SECBUFFER_STREAM_HEADER;
-    buffers[1].pvBuffer = buffer + conn->streamSizes.cbHeader;
-    buffers[1].cbBuffer = (unsigned long) chunk;
-    buffers[1].BufferType = SECBUFFER_DATA;
-    buffers[2].pvBuffer = buffer + conn->streamSizes.cbHeader + chunk;
-    buffers[2].cbBuffer = conn->streamSizes.cbTrailer;
-    buffers[2].BufferType = SECBUFFER_STREAM_TRAILER;
-    buffers[3].BufferType = SECBUFFER_EMPTY;
-
-   /*
-    * Encrypt the data
-    */
-    scRet = EncryptMessage(&conn->context, 0, &message, 0);
-
-    if (FAILED(scRet))
-    {
-      DEBUG_printf(("_sspiWrite: EncryptMessage failed: %x", scRet));
-      WSASetLastError(WSASYSCALLFAILURE);
-      num = SOCKET_ERROR;
-      goto cleanup;
-    }
-
-   /*
-    * Send the data. Remember the size of
-    * the total data to send is the size
-    * of the header, the size of the data
-    * the caller passed in and the size
-    * of the trailer
-    */
-    num = send(conn->sock,
-               buffer,
-               buffers[0].cbBuffer + buffers[1].cbBuffer + buffers[2].cbBuffer,
-               0);
-
-    if ((num == SOCKET_ERROR) || (num == 0))
-    {
-      DEBUG_printf(("_sspiWrite: send failed: %ld", WSAGetLastError()));
-      goto cleanup;
-    }
-
-    bytesLeft -= (int) chunk;
-    index += (int) chunk;
-  }
-
-  num = (int) len;
-
-cleanup:
-
-  if (buffer)
-    free(buffer);
-
-  return (num);
-}
-
-
-/*
- * '_sspiRead()' - Read a buffer from an ssl socket
- */
-int                                    /* O  - Bytes read or SOCKET_ERROR */
-_sspiRead(_sspi_struct_t *conn,                /* I  - Client connection */
-          void           *buf,         /* I  - Buffer */
-          size_t         len)          /* I  - Buffer length */
-{
-  SecBufferDesc        message;                /* Array of SecBuffer struct */
-  SecBuffer    buffers[4] = { 0 };     /* Security package buffer */
-  int          num = 0;                /* Return value */
-
-  if (!conn)
-  {
-    WSASetLastError(WSAEINVAL);
-    num = SOCKET_ERROR;
-    goto cleanup;
-  }
-
- /*
-  * If there are bytes that have already been
-  * decrypted and have not yet been read, return
-  * those
-  */
-  if (buf && (conn->readBufferUsed > 0))
-  {
-    int bytesToCopy = (int) min(conn->readBufferUsed, len);    /* Amount of bytes to copy */
-                                                               /* from read buffer */
-
-    memcpy(buf, conn->readBuffer, bytesToCopy);
-    conn->readBufferUsed -= bytesToCopy;
-
-    if (conn->readBufferUsed > 0)
-     /*
-      * If the caller didn't request all the bytes
-      * we have in the buffer, then move the unread
-      * bytes down
-      */
-      memmove(conn->readBuffer,
-              conn->readBuffer + bytesToCopy,
-              conn->readBufferUsed);
-
-    num = bytesToCopy;
-  }
-  else
-  {
-    PSecBuffer         pDataBuffer;    /* Data buffer */
-    PSecBuffer         pExtraBuffer;   /* Excess data buffer */
-    SECURITY_STATUS    scRet;          /* SSPI status */
-    int                        i;              /* Loop control variable */
-
-   /*
-    * Initialize security buffer structs
-    */
-    message.ulVersion = SECBUFFER_VERSION;
-    message.cBuffers = 4;
-    message.pBuffers = buffers;
-
-    do
-    {
-     /*
-      * If there is not enough space in the
-      * buffer, then increase it's size
-      */
-      if (conn->decryptBufferLength <= conn->decryptBufferUsed)
-      {
-        conn->decryptBufferLength += 4096;
-        conn->decryptBuffer = (BYTE*) realloc(conn->decryptBuffer,
-                                              conn->decryptBufferLength);
-
-        if (!conn->decryptBuffer)
-        {
-          DEBUG_printf(("_sspiRead: unable to allocate %d byte buffer",
-                        conn->decryptBufferLength));
-          WSASetLastError(E_OUTOFMEMORY);
-          num = SOCKET_ERROR;
-          goto cleanup;
-        }
-      }
-
-      buffers[0].pvBuffer      = conn->decryptBuffer;
-      buffers[0].cbBuffer      = (unsigned long) conn->decryptBufferUsed;
-      buffers[0].BufferType    = SECBUFFER_DATA;
-      buffers[1].BufferType    = SECBUFFER_EMPTY;
-      buffers[2].BufferType    = SECBUFFER_EMPTY;
-      buffers[3].BufferType    = SECBUFFER_EMPTY;
-
-      scRet = DecryptMessage(&conn->context, &message, 0, NULL);
-
-      if (scRet == SEC_E_INCOMPLETE_MESSAGE)
-      {
-        if (buf)
-        {
-          num = recv(conn->sock,
-                     conn->decryptBuffer + conn->decryptBufferUsed,
-                     (int)(conn->decryptBufferLength - conn->decryptBufferUsed),
-                     0);
-          if (num == SOCKET_ERROR)
-          {
-            DEBUG_printf(("_sspiRead: recv failed: %d", WSAGetLastError()));
-            goto cleanup;
-          }
-          else if (num == 0)
-          {
-            DEBUG_printf(("_sspiRead: server disconnected"));
-            goto cleanup;
-          }
-
-          conn->decryptBufferUsed += num;
-        }
-        else
-        {
-          num = (int) conn->readBufferUsed;
-          goto cleanup;
-        }
-      }
-    }
-    while (scRet == SEC_E_INCOMPLETE_MESSAGE);
-
-    if (scRet == SEC_I_CONTEXT_EXPIRED)
-    {
-      DEBUG_printf(("_sspiRead: context expired"));
-      WSASetLastError(WSAECONNRESET);
-      num = SOCKET_ERROR;
-      goto cleanup;
-    }
-    else if (scRet != SEC_E_OK)
-    {
-      DEBUG_printf(("_sspiRead: DecryptMessage failed: %lx", scRet));
-      WSASetLastError(WSASYSCALLFAILURE);
-      num = SOCKET_ERROR;
-      goto cleanup;
-    }
-
-   /*
-    * The decryption worked.  Now, locate data buffer.
-    */
-    pDataBuffer  = NULL;
-    pExtraBuffer = NULL;
-    for (i = 1; i < 4; i++)
-    {
-      if (buffers[i].BufferType == SECBUFFER_DATA)
-        pDataBuffer = &buffers[i];
-      else if (!pExtraBuffer && (buffers[i].BufferType == SECBUFFER_EXTRA))
-        pExtraBuffer = &buffers[i];
-    }
-
-   /*
-    * If a data buffer is found, then copy
-    * the decrypted bytes to the passed-in
-    * buffer
-    */
-    if (pDataBuffer)
-    {
-      int bytesToCopy = min(pDataBuffer->cbBuffer, (int) len);
-                                       /* Number of bytes to copy into buf */
-      int bytesToSave = pDataBuffer->cbBuffer - bytesToCopy;
-                                       /* Number of bytes to save in our read buffer */
-
-      if (bytesToCopy)
-        memcpy(buf, pDataBuffer->pvBuffer, bytesToCopy);
-
-     /*
-      * If there are more decrypted bytes than can be
-      * copied to the passed in buffer, then save them
-      */
-      if (bytesToSave)
-      {
-        if ((int)(conn->readBufferLength - conn->readBufferUsed) < bytesToSave)
-        {
-          conn->readBufferLength = conn->readBufferUsed + bytesToSave;
-          conn->readBuffer = realloc(conn->readBuffer,
-                                     conn->readBufferLength);
-
-          if (!conn->readBuffer)
-          {
-            DEBUG_printf(("_sspiRead: unable to allocate %d bytes", conn->readBufferLength));
-            WSASetLastError(E_OUTOFMEMORY);
-            num = SOCKET_ERROR;
-            goto cleanup;
-          }
-        }
-
-        memcpy(((BYTE*) conn->readBuffer) + conn->readBufferUsed,
-               ((BYTE*) pDataBuffer->pvBuffer) + bytesToCopy,
-               bytesToSave);
-
-        conn->readBufferUsed += bytesToSave;
-      }
-
-      num = (buf) ? bytesToCopy : (int) conn->readBufferUsed;
-    }
-    else
-    {
-      DEBUG_printf(("_sspiRead: unable to find data buffer"));
-      WSASetLastError(WSASYSCALLFAILURE);
-      num = SOCKET_ERROR;
-      goto cleanup;
-    }
-
-   /*
-    * If the decryption process left extra bytes,
-    * then save those back in decryptBuffer. They will
-    * be processed the next time through the loop.
-    */
-    if (pExtraBuffer)
-    {
-      memmove(conn->decryptBuffer, pExtraBuffer->pvBuffer, pExtraBuffer->cbBuffer);
-      conn->decryptBufferUsed = pExtraBuffer->cbBuffer;
-    }
-    else
-    {
-      conn->decryptBufferUsed = 0;
-    }
-  }
-
-cleanup:
-
-  return (num);
-}
-
-
-/*
- * '_sspiPending()' - Returns the number of available bytes
- */
-int                                    /* O  - Number of available bytes */
-_sspiPending(_sspi_struct_t *conn)     /* I  - Client connection */
-{
-  return (_sspiRead(conn, NULL, 0));
-}
-
-
-/*
- * '_sspiFree()' - Close a connection and free resources
- */
-void
-_sspiFree(_sspi_struct_t *conn)                /* I  - Client connection */
-{
-  if (!conn)
-    return;
-
-  if (conn->contextInitialized)
-  {
-    SecBufferDesc      message;        /* Array of SecBuffer struct */
-    SecBuffer          buffers[1] = { 0 };
-                                       /* Security package buffer */
-    DWORD              dwType;         /* Type */
-    DWORD              status;         /* Status */
-
-  /*
-   * Notify schannel that we are about to close the connection.
-   */
-   dwType = SCHANNEL_SHUTDOWN;
-
-   buffers[0].pvBuffer   = &dwType;
-   buffers[0].BufferType = SECBUFFER_TOKEN;
-   buffers[0].cbBuffer   = sizeof(dwType);
-
-   message.cBuffers  = 1;
-   message.pBuffers  = buffers;
-   message.ulVersion = SECBUFFER_VERSION;
-
-   status = ApplyControlToken(&conn->context, &message);
-
-   if (SUCCEEDED(status))
-   {
-     PBYTE     pbMessage;              /* Message buffer */
-     DWORD     cbMessage;              /* Message buffer count */
-     DWORD     cbData;                 /* Data count */
-     DWORD     dwSSPIFlags;            /* SSL attributes we requested */
-     DWORD     dwSSPIOutFlags;         /* SSL attributes we received */
-     TimeStamp tsExpiry;               /* Time stamp */
-
-     dwSSPIFlags = ASC_REQ_SEQUENCE_DETECT     |
-                   ASC_REQ_REPLAY_DETECT       |
-                   ASC_REQ_CONFIDENTIALITY     |
-                   ASC_REQ_EXTENDED_ERROR      |
-                   ASC_REQ_ALLOCATE_MEMORY     |
-                   ASC_REQ_STREAM;
-
-     buffers[0].pvBuffer   = NULL;
-     buffers[0].BufferType = SECBUFFER_TOKEN;
-     buffers[0].cbBuffer   = 0;
-
-     message.cBuffers  = 1;
-     message.pBuffers  = buffers;
-     message.ulVersion = SECBUFFER_VERSION;
-
-     status = AcceptSecurityContext(&conn->creds, &conn->context, NULL,
-                                    dwSSPIFlags, SECURITY_NATIVE_DREP, NULL,
-                                    &message, &dwSSPIOutFlags, &tsExpiry);
-
-      if (SUCCEEDED(status))
-      {
-        pbMessage = buffers[0].pvBuffer;
-        cbMessage = buffers[0].cbBuffer;
-
-       /*
-        * Send the close notify message to the client.
-        */
-        if (pbMessage && cbMessage)
-        {
-          cbData = send(conn->sock, pbMessage, cbMessage, 0);
-          if ((cbData == SOCKET_ERROR) || (cbData == 0))
-          {
-            status = WSAGetLastError();
-            DEBUG_printf(("_sspiFree: sending close notify failed: %d", status));
-          }
-          else
-          {
-            FreeContextBuffer(pbMessage);
-          }
-        }
-      }
-      else
-      {
-        DEBUG_printf(("_sspiFree: AcceptSecurityContext failed: %x", status));
-      }
-    }
-    else
-    {
-      DEBUG_printf(("_sspiFree: ApplyControlToken failed: %x", status));
-    }
-
-    DeleteSecurityContext(&conn->context);
-    conn->contextInitialized = FALSE;
-  }
-
-  if (conn->decryptBuffer)
-  {
-    free(conn->decryptBuffer);
-    conn->decryptBuffer = NULL;
-  }
-
-  if (conn->readBuffer)
-  {
-    free(conn->readBuffer);
-    conn->readBuffer = NULL;
-  }
-
-  if (conn->sock != INVALID_SOCKET)
-  {
-    closesocket(conn->sock);
-    conn->sock = INVALID_SOCKET;
-  }
-
-  free(conn);
-}
-
-
-/*
- * 'sspi_verify_certificate()' - Verify a server certificate
- */
-static DWORD                           /* 0  - Error code (0 == No error) */
-sspi_verify_certificate(PCCERT_CONTEXT  serverCert,
-                                       /* I  - Server certificate */
-                        const CHAR      *serverName,
-                                       /* I  - Server name */
-                        DWORD           dwCertFlags)
-                                       /* I  - Verification flags */
-{
-  HTTPSPolicyCallbackData      httpsPolicy;
-                                       /* HTTPS Policy Struct */
-  CERT_CHAIN_POLICY_PARA       policyPara;
-                                       /* Cert chain policy parameters */
-  CERT_CHAIN_POLICY_STATUS     policyStatus;
-                                       /* Cert chain policy status */
-  CERT_CHAIN_PARA              chainPara;
-                                       /* Used for searching and matching criteria */
-  PCCERT_CHAIN_CONTEXT         chainContext = NULL;
-                                       /* Certificate chain */
-  PWSTR                                serverNameUnicode = NULL;
-                                       /* Unicode server name */
-  LPSTR                                rgszUsages[] = { szOID_PKIX_KP_SERVER_AUTH,
-                                                 szOID_SERVER_GATED_CRYPTO,
-                                                 szOID_SGC_NETSCAPE };
-                                       /* How are we using this certificate? */
-  DWORD                                cUsages = sizeof(rgszUsages) / sizeof(LPSTR);
-                                       /* Number of ites in rgszUsages */
-  DWORD                                count;  /* 32 bit count variable */
-  DWORD                                status; /* Return value */
-
-  if (!serverCert)
-  {
-    status = SEC_E_WRONG_PRINCIPAL;
-    goto cleanup;
-  }
-
- /*
-  *  Convert server name to unicode.
-  */
-  if (!serverName || (strlen(serverName) == 0))
-  {
-    status = SEC_E_WRONG_PRINCIPAL;
-    goto cleanup;
-  }
-
-  count = MultiByteToWideChar(CP_ACP, 0, serverName, -1, NULL, 0);
-  serverNameUnicode = LocalAlloc(LMEM_FIXED, count * sizeof(WCHAR));
-  if (!serverNameUnicode)
-  {
-    status = SEC_E_INSUFFICIENT_MEMORY;
-    goto cleanup;
-  }
-  count = MultiByteToWideChar(CP_ACP, 0, serverName, -1, serverNameUnicode, count);
-  if (count == 0)
-  {
-    status = SEC_E_WRONG_PRINCIPAL;
-    goto cleanup;
-  }
-
- /*
-  * Build certificate chain.
-  */
-  ZeroMemory(&chainPara, sizeof(chainPara));
-  chainPara.cbSize                                     = sizeof(chainPara);
-  chainPara.RequestedUsage.dwType                      = USAGE_MATCH_TYPE_OR;
-  chainPara.RequestedUsage.Usage.cUsageIdentifier      = cUsages;
-  chainPara.RequestedUsage.Usage.rgpszUsageIdentifier  = rgszUsages;
-
-  if (!CertGetCertificateChain(NULL, serverCert, NULL, serverCert->hCertStore,
-                               &chainPara, 0, NULL, &chainContext))
-  {
-    status = GetLastError();
-    DEBUG_printf(("CertGetCertificateChain returned 0x%x\n", status));
-    goto cleanup;
-  }
-
- /*
-  * Validate certificate chain.
-  */
-  ZeroMemory(&httpsPolicy, sizeof(HTTPSPolicyCallbackData));
-  httpsPolicy.cbStruct         = sizeof(HTTPSPolicyCallbackData);
-  httpsPolicy.dwAuthType       = AUTHTYPE_SERVER;
-  httpsPolicy.fdwChecks                = dwCertFlags;
-  httpsPolicy.pwszServerName   = serverNameUnicode;
-
-  memset(&policyPara, 0, sizeof(policyPara));
-  policyPara.cbSize            = sizeof(policyPara);
-  policyPara.pvExtraPolicyPara = &httpsPolicy;
-
-  memset(&policyStatus, 0, sizeof(policyStatus));
-  policyStatus.cbSize = sizeof(policyStatus);
-
-  if (!CertVerifyCertificateChainPolicy(CERT_CHAIN_POLICY_SSL, chainContext,
-                                        &policyPara, &policyStatus))
-  {
-    status = GetLastError();
-    DEBUG_printf(("CertVerifyCertificateChainPolicy returned %d", status));
-    goto cleanup;
-  }
-
-  if (policyStatus.dwError)
-  {
-    status = policyStatus.dwError;
-    goto cleanup;
-  }
-
-  status = SEC_E_OK;
-
-cleanup:
-
-  if (chainContext)
-    CertFreeCertificateChain(chainContext);
-
-  if (serverNameUnicode)
-    LocalFree(serverNameUnicode);
-
-  return (status);
-}
-
-
-/*
- * End of "$Id: sspi.c 11760 2014-03-28 12:58:24Z msweet $".
- */
index 1b3a863883d69f54b1c0b5ee9bed799d378bc455..7bb77fc5c0c6d4379dfa14274f8100bd9c7ede3c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: string-private.h 11890 2014-05-22 13:59:21Z msweet $"
+ * "$Id: string-private.h 11889 2014-05-22 13:54:15Z msweet $"
  *
  * Private string definitions for CUPS.
  *
@@ -218,5 +218,5 @@ extern char *_cupsStrDate(char *buf, size_t bufsize, time_t timeval);
 #endif /* !_CUPS_STRING_H_ */
 
 /*
- * End of "$Id: string-private.h 11890 2014-05-22 13:59:21Z msweet $".
+ * End of "$Id: string-private.h 11889 2014-05-22 13:54:15Z msweet $".
  */
index f66d59810c3aa7892f64c25891bf1a3b3d46ad7d..9f99494479abf979bab3bfc841f50d97be4d8369 100644 (file)
@@ -1,35 +1,18 @@
 /*
- * "$Id: string.c 11890 2014-05-22 13:59:21Z msweet $"
+ * "$Id: string.c 11889 2014-05-22 13:54:15Z msweet $"
  *
- *   String functions for CUPS.
+ * String functions for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   _cupsStrAlloc()      - Allocate/reference a string.
- *   _cupsStrFlush()      - Flush the string pool.
- *   _cupsStrFormatd()    - Format a floating-point number.
- *   _cupsStrFree()       - Free/dereference a string.
- *   _cupsStrRetain()     - Increment the reference count of a string.
- *   _cupsStrScand()      - Scan a string for a floating-point number.
- *   _cupsStrStatistics() - Return allocation statistics for string pool.
- *   _cups_strcpy()       - Copy a string allowing for overlapping strings.
- *   _cups_strdup()       - Duplicate a string.
- *   _cups_strcasecmp()   - Do a case-insensitive comparison.
- *   _cups_strncasecmp()  - Do a case-insensitive comparison on up to N chars.
- *   _cups_strlcat()      - Safely concatenate two strings.
- *   _cups_strlcpy()      - Safely copy two strings.
- *   compare_sp_items()   - Compare two string pool items...
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -290,7 +273,7 @@ _cupsStrFormatd(char         *buf,  /* I - String */
   }
   else
   {
-    strlcpy(buf, temp, bufend - buf + 1);
+    strlcpy(buf, temp, (size_t)(bufend - buf + 1));
     bufptr = buf + strlen(buf);
   }
 
@@ -466,7 +449,7 @@ _cupsStrScand(const char   *buf,    /* I - Pointer to number */
 
     if (loc && loc->decimal_point)
     {
-      strlcpy(tempptr, loc->decimal_point, sizeof(temp) - (tempptr - temp));
+      strlcpy(tempptr, loc->decimal_point, sizeof(temp) - (size_t)(tempptr - temp));
       tempptr += strlen(tempptr);
     }
     else if (tempptr < (temp + sizeof(temp) - 1))
@@ -576,7 +559,7 @@ _cupsStrStatistics(size_t *alloc_bytes,     /* O - Allocated bytes */
     */
 
     count  += item->ref_count;
-    len    = (strlen(item->str) + 8) & ~7;
+    len    = (strlen(item->str) + 8) & (size_t)~7;
     abytes += sizeof(_cups_sp_item_t) + len;
     tbytes += item->ref_count * len;
   }
@@ -732,7 +715,7 @@ _cups_strlcat(char       *dst,              /* O - Destination string */
   if (srclen > size)
     srclen = size;
 
-  memcpy(dst + dstlen, src, srclen);
+  memmove(dst + dstlen, src, srclen);
   dst[dstlen + srclen] = '\0';
 
   return (dstlen + srclen);
@@ -768,7 +751,7 @@ _cups_strlcpy(char       *dst,              /* O - Destination string */
   if (srclen > size)
     srclen = size;
 
-  memcpy(dst, src, srclen);
+  memmove(dst, src, srclen);
   dst[srclen] = '\0';
 
   return (srclen);
@@ -789,5 +772,5 @@ compare_sp_items(_cups_sp_item_t *a,        /* I - First item */
 
 
 /*
- * End of "$Id: string.c 11890 2014-05-22 13:59:21Z msweet $".
+ * End of "$Id: string.c 11889 2014-05-22 13:54:15Z msweet $".
  */
index 6973702c1eb9c5df389ca3d3d7adc4c163de9257..72eb963405786f0e5a01adb167fd9a0af9c03642 100644 (file)
@@ -1,24 +1,18 @@
 /*
- * "$Id: tempfile.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: tempfile.c 12073 2014-07-31 00:58:00Z msweet $"
  *
- *   Temp file utilities for CUPS.
+ * Temp file utilities for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   cupsTempFd()    - Creates a temporary file.
- *   cupsTempFile()  - Generates a temporary filename.
- *   cupsTempFile2() - Creates a temporary CUPS file.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -103,8 +97,7 @@ cupsTempFd(char *filename,           /* I - Pointer to buffer */
     * Format a string using the hex time values...
     */
 
-    snprintf(filename, len - 1, "%s/%05lx%08lx", tmpdir,
-             GetCurrentProcessId(), curtime);
+    snprintf(filename, (size_t)len - 1, "%s/%05lx%08lx", tmpdir, GetCurrentProcessId(), curtime);
 #else
    /*
     * Get the current time of day...
@@ -116,8 +109,7 @@ cupsTempFd(char *filename,          /* I - Pointer to buffer */
     * Format a string using the hex time values...
     */
 
-    snprintf(filename, len - 1, "%s/%05x%08x", tmpdir, (unsigned)getpid(),
-             (unsigned)(curtime.tv_sec + curtime.tv_usec + tries));
+    snprintf(filename, (size_t)len - 1, "%s/%05x%08x", tmpdir, (unsigned)getpid(), (unsigned)(curtime.tv_sec + curtime.tv_usec + tries));
 #endif /* WIN32 */
 
    /*
@@ -153,8 +145,8 @@ cupsTempFd(char *filename,          /* I - Pointer to buffer */
  * 'cupsTempFile()' - Generates a temporary filename.
  *
  * The temporary filename is returned in the filename buffer.
- * This function is deprecated - use @link cupsTempFd@ or
- * @link cupsTempFile2@ instead.
+ * This function is deprecated and will no longer generate a temporary
+ * filename - use @link cupsTempFd@ or @link cupsTempFile2@ instead.
  *
  * @deprecated@
  */
@@ -163,38 +155,12 @@ char *                                    /* O - Filename or @code NULL@ on error */
 cupsTempFile(char *filename,           /* I - Pointer to buffer */
              int  len)                 /* I - Size of buffer */
 {
-  int          fd;                     /* File descriptor for temp file */
-  _cups_globals_t *cg = _cupsGlobals();        /* Pointer to library globals */
-
-
- /*
-  * See if a filename was specified...
-  */
-
-  if (filename == NULL)
-  {
-    filename = cg->tempfile;
-    len      = sizeof(cg->tempfile);
-  }
-
- /*
-  * Create the temporary file...
-  */
-
-  if ((fd = cupsTempFd(filename, len)) < 0)
-    return (NULL);
+  (void)len;
 
- /*
-  * Close the temp file - it'll be reopened later as needed...
-  */
-
-  close(fd);
-
- /*
-  * Return the temp filename...
-  */
+  if (filename)
+    *filename = '\0';
 
-  return (filename);
+  return (NULL);
 }
 
 
@@ -229,5 +195,5 @@ cupsTempFile2(char *filename,               /* I - Pointer to buffer */
 
 
 /*
- * End of "$Id: tempfile.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: tempfile.c 12073 2014-07-31 00:58:00Z msweet $".
  */
index 8003dfc310669b1309e7d47a22ba0d155245669e..7003331ffad32b170fe4afad0a5b39d83ab7e07a 100644 (file)
@@ -1,24 +1,18 @@
 /*
- * "$Id: testarray.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: testarray.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Array test program for CUPS.
+ * Array test program for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 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()        - Main entry.
- *   get_seconds() - Get the current time in seconds...
- *   load_words()  - Load words from a file.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -44,8 +38,7 @@ static int    load_words(const char *filename, cups_array_t *array);
  */
 
 int                                    /* O - Exit status */
-main(int  argc,                                /* I - Number of command-line arguments */
-     char *argv[])                     /* I - Command-line arguments */
+main(void)
 {
   int          i;                      /* Looping var */
   cups_array_t *array,                 /* Test array */
@@ -296,7 +289,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
   {
     while ((dent = cupsDirRead(dir)) != NULL)
     {
-      i = strlen(dent->filename) - 2;
+      i = (int)strlen(dent->filename) - 2;
 
       if (i > 0 && dent->filename[i] == '.' &&
           (dent->filename[i + 1] == 'c' ||
@@ -558,5 +551,5 @@ load_words(const char   *filename,  /* I - File to load */
 
 
 /*
- * End of "$Id: testarray.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: testarray.c 11558 2014-02-06 18:33:34Z msweet $".
  */
diff --git a/cups/testcache.c b/cups/testcache.c
new file mode 100644 (file)
index 0000000..0051f81
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+ * "$Id: testcache.c 11832 2014-04-24 15:04:00Z msweet $"
+ *
+ * PPD cache testing program for CUPS.
+ *
+ * Copyright 2009-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.
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include "ppd-private.h"
+#include "file-private.h"
+
+
+/*
+ * 'main()' - Main entry.
+ */
+
+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           *ppdfile = NULL;/* PPD filename */
+  ppd_file_t           *ppd;           /* PPD file */
+  int                  num_options = 0;/* Number of options */
+  cups_option_t                *options = NULL;/* Options */
+  _ppd_cache_t         *pc;            /* PPD cache and PWG mapping data */
+  int                  num_finishings, /* Number of finishing options */
+                       finishings[20]; /* Finishing options */
+  ppd_choice_t         *ppd_bin;       /* OutputBin value */
+  const char           *output_bin;    /* output-bin value */
+
+  if (argc < 2)
+  {
+    puts("Usage: ./testcache filename.ppd [name=value ... name=value]");
+    return (1);
+  }
+
+  ppdfile = argv[1];
+  if ((ppd = ppdOpenFile(ppdfile)) == NULL)
+  {
+    ppd_status_t err;                  /* Last error in file */
+    int                line;                   /* Line number in file */
+
+
+    err = ppdLastError(&line);
+
+    fprintf(stderr, "Unable to open \"%s\": %s on line %d\n", ppdfile, ppdErrorString(err), line);
+    return (1);
+  }
+
+  if ((pc = _ppdCacheCreateWithPPD(ppd)) == NULL)
+  {
+    fprintf(stderr, "Unable to create PPD cache from \"%s\".\n", ppdfile);
+    return (1);
+  }
+
+  for (i = 2; i < argc; i ++)
+    num_options = cupsParseOptions(argv[i], num_options, &options);
+
+  ppdMarkDefaults(ppd);
+  cupsMarkOptions(ppd, num_options, options);
+
+  num_finishings = _ppdCacheGetFinishingValues(pc, num_options, options, (int)sizeof(finishings) / sizeof(finishings[0]), finishings);
+
+  if (num_finishings > 0)
+  {
+    fputs("finishings=", stdout);
+    for (i = 0; i < num_finishings; i ++)
+      if (i)
+       printf(",%d", finishings[i]);
+      else
+       printf("%d", finishings[i]);
+    fputs("\n", stdout);
+  }
+
+  if ((ppd_bin = ppdFindMarkedChoice(ppd, "OutputBin")) != NULL &&
+      (output_bin = _ppdCacheGetBin(pc, ppd_bin->choice)) != NULL)
+    printf("output-bin=\"%s\"\n", output_bin);
+
+  return (0);
+}
+
+
+/*
+ * End of "$Id: testcache.c 11832 2014-04-24 15:04:00Z msweet $".
+ */
index 0f6c24e75925fb285f2f7d039c0dceb88dd0377c..690d93742d0e8b3d22cbe0affbe635817af6b705 100644 (file)
@@ -1,23 +1,18 @@
 /*
- * "$Id: testcups.c 11205 2013-07-31 18:06:15Z msweet $"
+ * "$Id: testcups.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   CUPS API test program for CUPS.
+ * CUPS API test program for CUPS.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 2007 by Easy Software Products.
+ * Copyright 2007-2014 by Apple Inc.
+ * Copyright 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()        - Main entry.
- *   dests_equal() - Determine whether two destinations are equal.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -227,15 +222,14 @@ main(int  argc,                           /* I - Number of command-line arguments */
       {
        printf("Writing %d bytes...\n", (int)bytes);
 
-       if (cupsWriteRequestData(CUPS_HTTP_DEFAULT, buffer,
-                                bytes) != HTTP_STATUS_CONTINUE)
+       if (cupsWriteRequestData(CUPS_HTTP_DEFAULT, buffer, (size_t)bytes) != HTTP_STATUS_CONTINUE)
        {
          puts("Unable to write bytes!");
          return (1);
        }
 
         if (interval > 0)
-         sleep(interval);
+         sleep((unsigned)interval);
       }
 
       cupsFileClose(fp);
@@ -532,6 +526,8 @@ enum_cb(void        *user_data,             /* I - User data (unused) */
   cups_option_t        *option;                /* Current option */
 
 
+  (void)user_data;
+
   if (flags & CUPS_DEST_FLAGS_REMOVED)
     printf("Removed '%s':\n", dest->name);
   else
@@ -589,5 +585,5 @@ show_diffs(cups_dest_t *a,          /* I - First destination */
 
 
 /*
- * End of "$Id: testcups.c 11205 2013-07-31 18:06:15Z msweet $".
+ * End of "$Id: testcups.c 11558 2014-02-06 18:33:34Z msweet $".
  */
diff --git a/cups/testdest.c b/cups/testdest.c
new file mode 100644 (file)
index 0000000..c760719
--- /dev/null
@@ -0,0 +1,460 @@
+/*
+ * "$Id: testdest.c 11884 2014-05-16 21:54:22Z msweet $"
+ *
+ * CUPS destination API test program 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/".
+ *
+ * This file is subject to the Apple OS-Developed Software exception.
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include <stdio.h>
+#include "cups.h"
+
+
+/*
+ * Local functions...
+ */
+
+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);
+static void    show_default(http_t *http, cups_dest_t *dest, cups_dinfo_t *dinfo, const char *option);
+static void    show_media(http_t *http, cups_dest_t *dest, cups_dinfo_t *dinfo, unsigned flags, const char *name);
+static void    show_supported(http_t *http, cups_dest_t *dest, cups_dinfo_t *dinfo, const char *option, const char *value);
+static void    usage(const char *arg) __attribute__((noreturn));
+
+
+/*
+ * '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;                  /* Connection to destination */
+  cups_dest_t  *dest = NULL;           /* Destination */
+  cups_dinfo_t *dinfo;                 /* Destination info */
+
+
+  if (argc < 2)
+    usage(NULL);
+
+  if (!strcmp(argv[1], "--enum"))
+  {
+    return (0);
+  }
+  else if (!strncmp(argv[1], "ipp://", 6) || !strncmp(argv[1], "ipps://", 7))
+    dest = cupsGetDestWithURI(NULL, argv[1]);
+  else
+    dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, argv[1], NULL);
+
+  if (!dest)
+  {
+    printf("testdest: Unable to get destination \"%s\": %s\n", argv[1], cupsLastErrorString());
+    return (1);
+  }
+
+  if ((http = cupsConnectDest(dest, CUPS_DEST_FLAGS_NONE, 30000, NULL, NULL, 0, NULL, NULL)) == NULL)
+  {
+    printf("testdest: Unable to connect to destination \"%s\": %s\n", argv[1], cupsLastErrorString());
+    return (1);
+  }
+
+  if ((dinfo = cupsCopyDestInfo(http, dest)) == NULL)
+  {
+    printf("testdest: Unable to get information for destination \"%s\": %s\n", argv[1], cupsLastErrorString());
+    return (1);
+  }
+
+  if (argc == 2 || (!strcmp(argv[2], "supported") && argc < 6))
+  {
+    if (argc > 3)
+      show_supported(http, dest, dinfo, argv[3], argv[4]);
+    else if (argc > 2)
+      show_supported(http, dest, dinfo, argv[3], NULL);
+    else
+      show_supported(http, dest, dinfo, NULL, NULL);
+  }
+  else if (!strcmp(argv[2], "conflicts") && argc > 3)
+  {
+    int                        i,              /* Looping var */
+                       num_options = 0;/* Number of options */
+    cups_option_t      *options = NULL;/* Options */
+
+    for (i = 3; i < argc; i ++)
+      num_options = cupsParseOptions(argv[i], num_options, &options);
+
+    show_conflicts(http, dest, dinfo, num_options, options);
+  }
+  else if (!strcmp(argv[2], "default") && argc == 4)
+  {
+    show_default(http, dest, dinfo, argv[3]);
+  }
+  else if (!strcmp(argv[2], "localize") && argc > 3 && argc < 6)
+  {
+    localize(http, dest, dinfo, argv[3], argv[4]);
+  }
+  else if (!strcmp(argv[2], "media"))
+  {
+    int                i;                      /* Looping var */
+    const char *name = NULL;           /* Media name, if any */
+    unsigned   flags = CUPS_MEDIA_FLAGS_DEFAULT;
+                                       /* Media selection flags */
+
+    for (i = 3; i < argc; i ++)
+    {
+      if (!strcmp(argv[i], "borderless"))
+       flags = CUPS_MEDIA_FLAGS_BORDERLESS;
+      else if (!strcmp(argv[i], "duplex"))
+       flags = CUPS_MEDIA_FLAGS_DUPLEX;
+      else if (!strcmp(argv[i], "exact"))
+       flags = CUPS_MEDIA_FLAGS_EXACT;
+      else if (!strcmp(argv[i], "ready"))
+       flags = CUPS_MEDIA_FLAGS_READY;
+      else if (name)
+        usage(argv[i]);
+      else
+        name = argv[i];
+    }
+
+    show_media(http, dest, dinfo, flags, name);
+  }
+  else if (!strcmp(argv[2], "print") && argc > 3)
+  {
+    int                        i,              /* Looping var */
+                       num_options = 0;/* Number of options */
+    cups_option_t      *options = NULL;/* Options */
+
+    for (i = 4; i < argc; i ++)
+      num_options = cupsParseOptions(argv[i], num_options, &options);
+
+    print_file(http, dest, dinfo, argv[3], num_options, options);
+  }
+  else
+    usage(argv[2]);
+
+  return (0);
+}
+
+
+/*
+ * 'localize()' - Localize an option and value.
+ */
+
+static void
+localize(http_t       *http,           /* I - Connection to destination */
+         cups_dest_t  *dest,           /* I - Destination */
+        cups_dinfo_t *dinfo,           /* I - Destination information */
+         const char   *option,         /* I - Option */
+        const char   *value)           /* I - Value, if any */
+{
+  (void)http;
+  (void)dest;
+  (void)dinfo;
+  (void)option;
+  (void)value;
+}
+
+
+/*
+ * 'print_file()' - Print a file.
+ */
+
+static void
+print_file(http_t        *http,                /* I - Connection to destination */
+           cups_dest_t   *dest,                /* I - Destination */
+          cups_dinfo_t  *dinfo,        /* I - Destination information */
+           const char    *filename,    /* I - File to print */
+          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;
+}
+
+
+/*
+ * 'show_conflicts()' - Show conflicts for selected options.
+ */
+
+static void
+show_conflicts(
+    http_t        *http,               /* I - Connection to destination */
+    cups_dest_t   *dest,               /* I - Destination */
+    cups_dinfo_t  *dinfo,              /* I - Destination information */
+    int           num_options,         /* I - Number of options */
+    cups_option_t *options)            /* I - Options */
+{
+  (void)http;
+  (void)dest;
+  (void)dinfo;
+  (void)num_options;
+  (void)options;
+}
+
+
+/*
+ * 'show_default()' - Show default value for option.
+ */
+
+static void
+show_default(http_t       *http,       /* I - Connection to destination */
+            cups_dest_t  *dest,        /* I - Destination */
+            cups_dinfo_t *dinfo,       /* I - Destination information */
+            const char  *option)       /* I - Option */
+{
+  (void)http;
+  (void)dest;
+  (void)dinfo;
+  (void)option;
+}
+
+
+/*
+ * 'show_media()' - Show available media.
+ */
+
+static void
+show_media(http_t       *http,         /* I - Connection to destination */
+          cups_dest_t  *dest,          /* I - Destination */
+          cups_dinfo_t *dinfo,         /* I - Destination information */
+          unsigned     flags,          /* I - Media flags */
+          const char   *name)          /* I - Size name */
+{
+  int          i,                      /* Looping var */
+               count;                  /* Number of sizes */
+  cups_size_t  size;                   /* Media size info */
+
+
+  if (name)
+  {
+    double     dw, dl;                 /* Width and length from name */
+    char       units[32];              /* Units */
+    int                width,                  /* Width in 100ths of millimeters */
+               length;                 /* Length in 100ths of millimeters */
+
+
+    if (sscanf(name, "%lfx%lf%31s", &dw, &dl, units) == 3)
+    {
+      if (!strcmp(units, "in"))
+      {
+        width  = (int)(dw * 2540.0);
+       length = (int)(dl * 2540.0);
+      }
+      else if (!strcmp(units, "mm"))
+      {
+        width  = (int)(dw * 100.0);
+        length = (int)(dl * 100.0);
+      }
+      else
+      {
+        puts("  bad units in size");
+       return;
+      }
+
+      if (cupsGetDestMediaBySize(http, dest, dinfo, width, length, flags, &size))
+      {
+       printf("  %s (%s) %dx%d B%d L%d R%d T%d\n", size.media, cupsLocalizeDestMedia(http, dest, dinfo, flags, &size), size.width, size.length, size.bottom, size.left, size.right, size.top);
+      }
+      else
+      {
+       puts("  not supported");
+      }
+    }
+    else if (cupsGetDestMediaByName(http, dest, dinfo, name, flags, &size))
+    {
+      printf("  %s (%s) %dx%d B%d L%d R%d T%d\n", size.media, cupsLocalizeDestMedia(http, dest, dinfo, flags, &size), size.width, size.length, size.bottom, size.left, size.right, size.top);
+    }
+    else
+    {
+      puts("  not supported");
+    }
+  }
+  else
+  {
+    count = cupsGetDestMediaCount(http, dest, dinfo, flags);
+    printf("%d size%s:\n", count, count == 1 ? "" : "s");
+
+    for (i = 0; i < count; i ++)
+    {
+      if (cupsGetDestMediaByIndex(http, dest, dinfo, i, flags, &size))
+        printf("  %s (%s) %dx%d B%d L%d R%d T%d\n", size.media, cupsLocalizeDestMedia(http, dest, dinfo, flags, &size), size.width, size.length, size.bottom, size.left, size.right, size.top);
+      else
+        puts("  error");
+    }
+  }
+}
+
+
+/*
+ * 'show_supported()' - Show supported options, values, etc.
+ */
+
+static void
+show_supported(http_t       *http,     /* I - Connection to destination */
+              cups_dest_t  *dest,      /* I - Destination */
+              cups_dinfo_t *dinfo,     /* I - Destination information */
+              const char   *option,    /* I - Option, if any */
+              const char   *value)     /* I - Value, if any */
+{
+  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 ++)
+        show_supported(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))
+         show_supported(http, dest, dinfo, options[i], NULL);
+    }
+  }
+  else if (!value)
+  {
+    puts(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_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\n", 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 if (cupsCheckDestSupported(http, dest, dinfo, option, value))
+    puts("YES");
+  else
+    puts("NO");
+
+}
+
+
+/*
+ * 'usage()' - Show program usage.
+ */
+
+static void
+usage(const char *arg)                 /* I - Argument for usage message */
+{
+  if (arg)
+    printf("testdest: Unknown option \"%s\".\n", arg);
+
+  puts("Usage:");
+  puts("  ./testdest name [operation ...]");
+  puts("  ./testdest ipp://... [operation ...]");
+  puts("  ./testdest ipps://... [operation ...]");
+  puts("  ./testdest --enum [grayscale] [color] [duplex] [staple] [small]\n"
+       "                    [medium] [large]");
+  puts("");
+  puts("Operations:");
+  puts("  conflicts options");
+  puts("  default option");
+  puts("  localize option [value]");
+  puts("  media [borderless] [duplex] [exact] [ready] [name or size]");
+  puts("  print filename [options]");
+  puts("  supported [option [value]]");
+
+  exit(arg != NULL);
+}
+
+
+/*
+ * End of "$Id: testdest.c 11884 2014-05-16 21:54:22Z msweet $".
+ */
index 2c86d821daca58a7c2cc173a64e3348aa4992232..6543e0a2f9e6ee5e016e1b984edc4ce128ba9b46 100644 (file)
@@ -1,25 +1,18 @@
 /*
- * "$Id: testfile.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: testfile.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   File test program for CUPS.
+ * File test program for CUPS.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   main()             - Main entry.
- *   count_lines()      - Count the number of lines in a file.
- *   random_tests()     - Do random access tests.
- *   read_write_tests() - Perform read/write tests.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -266,8 +259,8 @@ random_tests(void)
                count,                  /* Number of records read */
                record,                 /* Current record */
                num_records;            /* Number of records */
-  ssize_t      pos,                    /* Position in file */
-               expected;               /* Expected position in file */
+  off_t                pos;                    /* Position in file */
+  ssize_t      expected;               /* Expected position in file */
   cups_file_t  *fp;                    /* File */
   char         buffer[512];            /* Data buffer */
 
@@ -298,10 +291,10 @@ random_tests(void)
     * cupsFileTell()
     */
 
-    expected = 256 * sizeof(buffer) * pass;
+    expected = 256 * (ssize_t)sizeof(buffer) * pass;
 
     fputs("cupsFileTell(): ", stdout);
-    if ((pos = cupsFileTell(fp)) != expected)
+    if ((pos = cupsFileTell(fp)) != (off_t)expected)
     {
       printf("FAIL (" CUPS_LLFMT " instead of " CUPS_LLFMT ")\n",
             CUPS_LLCAST pos, CUPS_LLCAST expected);
@@ -319,7 +312,7 @@ random_tests(void)
     for (record = 0; record < 256; record ++)
     {
       memset(buffer, record, sizeof(buffer));
-      if (cupsFileWrite(fp, buffer, sizeof(buffer)) < sizeof(buffer))
+      if (cupsFileWrite(fp, buffer, sizeof(buffer)) < (ssize_t)sizeof(buffer))
         break;
     }
 
@@ -336,10 +329,10 @@ random_tests(void)
     * cupsFileTell()
     */
 
-    expected += 256 * sizeof(buffer);
+    expected += 256 * (ssize_t)sizeof(buffer);
 
     fputs("cupsFileTell(): ", stdout);
-    if ((pos = cupsFileTell(fp)) != expected)
+    if ((pos = cupsFileTell(fp)) != (off_t)expected)
     {
       printf("FAIL (" CUPS_LLFMT " instead of " CUPS_LLFMT ")\n",
              CUPS_LLCAST pos, CUPS_LLCAST expected);
@@ -372,11 +365,9 @@ random_tests(void)
 
     fputs("cupsFileSeek(), cupsFileRead(): ", stdout);
 
-    for (num_records = (pass + 1) * 256, count = (pass + 1) * 256,
-             record = CUPS_RAND() % num_records;
+    for (num_records = (pass + 1) * 256, count = (pass + 1) * 256, record = ((int)CUPS_RAND() & 65535) % num_records;
          count > 0;
-        count --, record = (record + (CUPS_RAND() & 31) - 16 + num_records) %
-                           num_records)
+        count --, record = (record + ((int)CUPS_RAND() & 31) - 16 + num_records) % num_records)
     {
      /*
       * The last record is always the first...
@@ -390,7 +381,7 @@ random_tests(void)
       * contents...
       */
 
-      expected = sizeof(buffer) * record;
+      expected = (ssize_t)sizeof(buffer) * record;
 
       if ((pos = cupsFileSeek(fp, expected)) != expected)
       {
@@ -454,6 +445,7 @@ read_write_tests(int compression)   /* I - Use compression? */
   unsigned char        readbuf[8192],          /* Read buffer */
                writebuf[8192];         /* Write buffer */
   int          byte;                   /* Byte from file */
+  ssize_t      bytes;                  /* Number of bytes read/written */
   off_t                length;                 /* Length of file */
   static const char *partial_line = "partial line";
                                        /* Partial line */
@@ -472,7 +464,7 @@ read_write_tests(int compression)   /* I - Use compression? */
   CUPS_SRAND((unsigned)time(NULL));
 
   for (i = 0; i < (int)sizeof(writebuf); i ++)
-    writebuf[i] = CUPS_RAND();
+    writebuf[i] = (unsigned char)CUPS_RAND();
 
  /*
   * cupsFileOpen(write)
@@ -673,7 +665,7 @@ read_write_tests(int compression)   /* I - Use compression? */
 
     fputs("cupsFileGetConf(): ", stdout);
 
-    for (i = 0; i < 1000; i ++)
+    for (i = 0, value = NULL; i < 1000; i ++)
       if (!cupsFileGetConf(fp, line, sizeof(line), &value, &linenum))
         break;
       else if (_cups_strcasecmp(line, "TestLine") || !value || atoi(value) != i ||
@@ -700,7 +692,7 @@ read_write_tests(int compression)   /* I - Use compression? */
 
     fputs("cupsFileGetChar(): ", stdout);
 
-    for (i = 0; i < 256; i ++)
+    for (i = 0, byte = 0; i < 256; i ++)
       if ((byte = cupsFileGetChar(fp)) != i)
         break;
 
@@ -723,15 +715,15 @@ read_write_tests(int compression) /* I - Use compression? */
 
     fputs("cupsFileRead(): ", stdout);
 
-    for (i = 0; i < 10000; i ++)
-      if ((byte = cupsFileRead(fp, (char *)readbuf, sizeof(readbuf))) < 0)
+    for (i = 0, bytes = 0; i < 10000; i ++)
+      if ((bytes = cupsFileRead(fp, (char *)readbuf, sizeof(readbuf))) < 0)
         break;
       else if (memcmp(readbuf, writebuf, sizeof(readbuf)))
         break;
 
     if (i >= 10000)
       puts("PASS");
-    else if (byte > 0)
+    else if (bytes > 0)
     {
       printf("FAIL (Pass %d, ", i);
 
@@ -817,5 +809,5 @@ read_write_tests(int compression)   /* I - Use compression? */
 
 
 /*
- * End of "$Id: testfile.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: testfile.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 71fe4df84b1f88454db923adc4b03cfa6a316063..cd8cb5e374d5727eaacbe659bd8752ba64830e42 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: testhttp.c 11445 2013-12-05 19:57:43Z msweet $"
+ * "$Id: testhttp.c 12028 2014-07-15 14:01:27Z msweet $"
  *
  * HTTP test program for CUPS.
  *
- * Copyright 2007-2013 by Apple Inc.
+ * Copyright 2007-2014 by Apple Inc.
  * Copyright 1997-2006 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -35,8 +35,8 @@ typedef struct uri_test_s             /**** URI test cases ****/
                        *hostname,      /* Hostname string */
                        *resource;      /* Resource string */
   int                  port,           /* Port number */
-                       assemble_port,  /* Port number for httpAssembleURI() */
-                       assemble_coding;/* Coding for httpAssembleURI() */
+                       assemble_port;  /* Port number for httpAssembleURI() */
+  http_uri_coding_t    assemble_coding;/* Coding for httpAssembleURI() */
 } uri_test_t;
 
 
@@ -109,7 +109,7 @@ static uri_test_t   uri_tests[] =   /* URI test data */
                            HTTP_URI_CODING_MOST  },
                          { HTTP_URI_STATUS_OK, "ipp://username:password@[fe80::200:1234:5678:9abc%25eth0]:999/ipp",
                            "ipp", "username:password", "fe80::200:1234:5678:9abc%eth0", "/ipp", 999, 999,
-                           HTTP_URI_CODING_MOST | HTTP_URI_CODING_RFC6874 },
+                           (http_uri_coding_t)(HTTP_URI_CODING_MOST | HTTP_URI_CODING_RFC6874) },
                          { HTTP_URI_STATUS_OK, "http://server/admin?DEVICE_URI=usb://HP/Photosmart%25202600%2520series?serial=MY53OK70V10400",
                            "http", "", "server", "/admin?DEVICE_URI=usb://HP/Photosmart%25202600%2520series?serial=MY53OK70V10400", 80, 0,
                            HTTP_URI_CODING_MOST  },
@@ -613,13 +613,67 @@ main(int  argc,                           /* I - Number of command-line arguments */
     else
       encryption = HTTP_ENCRYPTION_IF_REQUESTED;
 
-    http = httpConnect2(hostname, port, NULL, AF_UNSPEC, encryption, 1, 30000,
-                        NULL);
+    http = httpConnect2(hostname, port, NULL, AF_UNSPEC, encryption, 1, 30000, NULL);
     if (http == NULL)
     {
       perror(hostname);
       continue;
     }
+
+    if (httpIsEncrypted(http))
+    {
+      cups_array_t *creds;
+      char info[1024];
+      static const char *trusts[] = { "OK", "Invalid", "Changed", "Expired", "Renewed", "Unknown" };
+      if (!httpCopyCredentials(http, &creds))
+      {
+       cups_array_t *lcreds;
+        http_trust_t trust = httpCredentialsGetTrust(creds, hostname);
+
+        httpCredentialsString(creds, info, sizeof(info));
+
+       printf("Count: %d\n", cupsArrayCount(creds));
+        printf("Trust: %s\n", trusts[trust]);
+        printf("Expiration: %s\n", httpGetDateString(httpCredentialsGetExpiration(creds)));
+        printf("IsValidName: %d\n", httpCredentialsAreValidForName(creds, hostname));
+        printf("String: \"%s\"\n", info);
+
+       printf("LoadCredentials: %d\n", httpLoadCredentials(NULL, &lcreds, hostname));
+       httpCredentialsString(lcreds, info, sizeof(info));
+       printf("    Count: %d\n", cupsArrayCount(lcreds));
+       printf("    String: \"%s\"\n", info);
+
+        if (lcreds && cupsArrayCount(creds) == cupsArrayCount(lcreds))
+        {
+          int                  i;
+          http_credential_t    *cred, *lcred;
+
+          for (i = 1, cred = (http_credential_t *)cupsArrayFirst(creds), lcred = (http_credential_t *)cupsArrayFirst(lcreds);
+               cred && lcred;
+               i ++, cred = (http_credential_t *)cupsArrayNext(creds), lcred = (http_credential_t *)cupsArrayNext(lcreds))
+          {
+            if (cred->datalen != lcred->datalen)
+              printf("    Credential #%d: Different lengths (saved=%d, current=%d)\n", i, (int)cred->datalen, (int)lcred->datalen);
+            else if (memcmp(cred->data, lcred->data, cred->datalen))
+              printf("    Credential #%d: Different data\n", i);
+            else
+              printf("    Credential #%d: Matches\n", i);
+          }
+        }
+
+        if (trust != HTTP_TRUST_OK)
+       {
+         printf("SaveCredentials: %d\n", httpSaveCredentials(NULL, creds, hostname));
+         trust = httpCredentialsGetTrust(creds, hostname);
+         printf("New Trust: %s\n", trusts[trust]);
+       }
+
+        httpFreeCredentials(creds);
+      }
+      else
+        puts("No credentials!");
+    }
+
     printf("Checking file \"%s\"...\n", resource);
 
     do
@@ -807,11 +861,13 @@ main(int  argc,                           /* I - Number of command-line arguments */
     while ((bytes = httpRead2(http, buffer, sizeof(buffer))) > 0)
     {
       total += bytes;
-      fwrite(buffer, bytes, 1, out);
+      fwrite(buffer, (size_t)bytes, 1, out);
       if (out != stdout)
       {
         current = time(NULL);
-        if (current == start) current ++;
+        if (current == start)
+          current ++;
+
         printf("\r" CUPS_LLFMT "/" CUPS_LLFMT " bytes ("
               CUPS_LLFMT " bytes/sec)      ", CUPS_LLCAST total,
               CUPS_LLCAST length, CUPS_LLCAST (total / (current - start)));
@@ -820,6 +876,9 @@ main(int  argc,                             /* I - Number of command-line arguments */
     }
   }
 
+  if (out != stdout)
+    putchar('\n');
+
   puts("Closing connection to server...");
   httpClose(http);
 
@@ -831,5 +890,5 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
 
 /*
- * End of "$Id: testhttp.c 11445 2013-12-05 19:57:43Z msweet $".
+ * End of "$Id: testhttp.c 12028 2014-07-15 14:01:27Z msweet $".
  */
index e5d3b8c10540456d9e2fe1446faf8ec7dc3ba929..490c938cad8e19d6f340f57c49f2c31231c5c33c 100644 (file)
@@ -1,23 +1,18 @@
 /*
- * "$Id: testi18n.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: testi18n.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Internationalization test for CUPS.
+ * Internationalization test for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 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()       - Main entry for internationalization test module.
- *   print_utf8() - Print UTF-8 string with (optional) message.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -285,14 +280,14 @@ main(int  argc,                           /* I - Argument Count */
   strlcpy(legsrc, legdest, sizeof(legsrc));
 
   len = cupsCharsetToUTF8(utf8dest, legsrc, 1024, CUPS_ISO8859_1);
-  if (len != strlen((char *)utf8latin))
+  if ((size_t)len != strlen((char *)utf8latin))
   {
     printf("FAIL (len=%d, expected %d)\n", len, (int)strlen((char *)utf8latin));
     print_utf8("    utf8latin", utf8latin);
     print_utf8("    utf8dest", utf8dest);
     errors ++;
   }
-  else if (memcmp(utf8latin, utf8dest, len))
+  else if (memcmp(utf8latin, utf8dest, (size_t)len))
   {
     puts("FAIL (results do not match)");
     print_utf8("    utf8latin", utf8latin);
@@ -336,14 +331,14 @@ main(int  argc,                           /* I - Argument Count */
   strlcpy(legsrc, legdest, sizeof(legsrc));
 
   len = cupsCharsetToUTF8(utf8dest, legsrc, 1024, CUPS_ISO8859_7);
-  if (len != strlen((char *)utf8greek))
+  if ((size_t)len != strlen((char *)utf8greek))
   {
     printf("FAIL (len=%d, expected %d)\n", len, (int)strlen((char *)utf8greek));
     print_utf8("    utf8greek", utf8greek);
     print_utf8("    utf8dest", utf8dest);
     errors ++;
   }
-  else if (memcmp(utf8greek, utf8dest, len))
+  else if (memcmp(utf8greek, utf8dest, (size_t)len))
   {
     puts("FAIL (results do not match)");
     print_utf8("    utf8greek", utf8greek);
@@ -382,14 +377,14 @@ main(int  argc,                           /* I - Argument Count */
   strlcpy(legsrc, legdest, sizeof(legsrc));
 
   len = cupsCharsetToUTF8(utf8dest, legsrc, 1024, CUPS_WINDOWS_932);
-  if (len != strlen((char *)utf8japan))
+  if ((size_t)len != strlen((char *)utf8japan))
   {
     printf("FAIL (len=%d, expected %d)\n", len, (int)strlen((char *)utf8japan));
     print_utf8("    utf8japan", utf8japan);
     print_utf8("    utf8dest", utf8dest);
     errors ++;
   }
-  else if (memcmp(utf8japan, utf8dest, len))
+  else if (memcmp(utf8japan, utf8dest, (size_t)len))
   {
     puts("FAIL (results do not match)");
     print_utf8("    utf8japan", utf8japan);
@@ -429,14 +424,14 @@ main(int  argc,                           /* I - Argument Count */
   strlcpy(legsrc, legdest, sizeof(legsrc));
 
   len = cupsCharsetToUTF8(utf8dest, legsrc, 1024, CUPS_EUC_JP);
-  if (len != strlen((char *)utf8japan))
+  if ((size_t)len != strlen((char *)utf8japan))
   {
     printf("FAIL (len=%d, expected %d)\n", len, (int)strlen((char *)utf8japan));
     print_utf8("    utf8japan", utf8japan);
     print_utf8("    utf8dest", utf8dest);
     errors ++;
   }
-  else if (memcmp(utf8japan, utf8dest, len))
+  else if (memcmp(utf8japan, utf8dest, (size_t)len))
   {
     puts("FAIL (results do not match)");
     print_utf8("    utf8japan", utf8japan);
@@ -476,14 +471,14 @@ main(int  argc,                           /* I - Argument Count */
   strlcpy(legsrc, legdest, sizeof(legsrc));
 
   len = cupsCharsetToUTF8(utf8dest, legsrc, 1024, CUPS_WINDOWS_950);
-  if (len != strlen((char *)utf8taiwan))
+  if ((size_t)len != strlen((char *)utf8taiwan))
   {
     printf("FAIL (len=%d, expected %d)\n", len, (int)strlen((char *)utf8taiwan));
     print_utf8("    utf8taiwan", utf8taiwan);
     print_utf8("    utf8dest", utf8dest);
     errors ++;
   }
-  else if (memcmp(utf8taiwan, utf8dest, len))
+  else if (memcmp(utf8taiwan, utf8dest, (size_t)len))
   {
     puts("FAIL (results do not match)");
     print_utf8("    utf8taiwan", utf8taiwan);
@@ -522,14 +517,14 @@ main(int  argc,                           /* I - Argument Count */
   strlcpy(legsrc, legdest, sizeof(legsrc));
 
   len = cupsCharsetToUTF8(utf8dest, legsrc, 1024, CUPS_EUC_TW);
-  if (len != strlen((char *)utf8taiwan))
+  if ((size_t)len != strlen((char *)utf8taiwan))
   {
     printf("FAIL (len=%d, expected %d)\n", len, (int)strlen((char *)utf8taiwan));
     print_utf8("    utf8taiwan", utf8taiwan);
     print_utf8("    utf8dest", utf8dest);
     errors ++;
   }
-  else if (memcmp(utf8taiwan, utf8dest, len))
+  else if (memcmp(utf8taiwan, utf8dest, (size_t)len))
   {
     puts("FAIL (results do not match)");
     print_utf8("    utf8taiwan", utf8taiwan);
@@ -553,7 +548,7 @@ main(int  argc,                             /* I - Argument Count */
     print_utf8(" utf8good ", utf8good);
     print_utf32(" utf32dest", utf32dest);
   }
-  memcpy (utf32src, utf32dest, (len + 1) * sizeof(cups_utf32_t));
+  memcpy(utf32src, utf32dest, (len + 1) * sizeof(cups_utf32_t));
   len = cupsUTF32ToUTF8(utf8dest, utf32src, 1024);
   if (len < 0)
     return (1);
@@ -615,5 +610,5 @@ print_utf8(const char            *msg,      /* I - Message String */
 
 
 /*
- * End of "$Id: testi18n.c 10996 2013-05-29 11:51:34Z msweet $"
+ * End of "$Id: testi18n.c 11558 2014-02-06 18:33:34Z msweet $"
  */
index d4cf5b42500fddf5a537ab32ac7fbfda4781d237..96a431b6f7fd054962fa4758943edab57c7da990 100644 (file)
@@ -1,26 +1,18 @@
 /*
- * "$Id: testipp.c 11890 2014-05-22 13:59:21Z msweet $"
+ * "$Id: testipp.c 11889 2014-05-22 13:54:15Z msweet $"
  *
- *   IPP test program for CUPS.
+ * IPP test program for CUPS.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 1997-2005 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   main()             - Main entry.
- *   hex_dump()         - Produce a hex dump of a buffer.
- *   print_attributes() - Print the attributes in a request...
- *   read_cb()          - Read data from a buffer.
- *   write_cb()         - Write data into a buffer.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -55,7 +47,7 @@ typedef struct _ippdata_t
  * Local globals...
  */
 
-ipp_uchar_t    collection[] =          /* Collection buffer */
+static ipp_uchar_t collection[] =      /* Collection buffer */
                {
                  0x01, 0x01,           /* IPP version */
                  0x00, 0x02,           /* Print-Job operation */
@@ -205,7 +197,7 @@ ipp_uchar_t collection[] =          /* Collection buffer */
                  IPP_TAG_END           /* end tag */
                };
 
-ipp_uchar_t    mixed[] =               /* Mixed value buffer */
+static ipp_uchar_t mixed[] =           /* Mixed value buffer */
                {
                  0x01, 0x01,           /* IPP version */
                  0x00, 0x02,           /* Print-Job operation */
@@ -236,7 +228,7 @@ ipp_uchar_t mixed[] =               /* Mixed value buffer */
  * Local functions...
  */
 
-void   hex_dump(const char *title, ipp_uchar_t *buffer, int bytes);
+void   hex_dump(const char *title, ipp_uchar_t *buffer, size_t bytes);
 void   print_attributes(ipp_t *ipp, int indent);
 ssize_t        read_cb(_ippdata_t *data, ipp_uchar_t *buffer, size_t bytes);
 ssize_t        write_cb(_ippdata_t *data, ipp_uchar_t *buffer, size_t bytes);
@@ -259,9 +251,9 @@ main(int  argc,                     /* I - Number of command-line arguments */
                *media_size,    /* media-size attribute */
                *attr;          /* Other attribute */
   ipp_state_t  state;          /* State */
-  int          length;         /* Length of data */
+  size_t       length;         /* Length of data */
   cups_file_t  *fp;            /* File pointer */
-  int          i;              /* Looping var */
+  size_t       i;              /* Looping var */
   int          status;         /* Status of tests (0 = success, 1 = fail) */
 #ifdef DEBUG
   const char   *name;          /* Option name */
@@ -322,7 +314,7 @@ main(int  argc,                     /* I - Number of command-line arguments */
     if (length != sizeof(collection))
     {
       printf("FAIL - wrong ippLength(), %d instead of %d bytes!\n",
-             length, (int)sizeof(collection));
+             (int)length, (int)sizeof(collection));
       status = 1;
     }
     else
@@ -362,7 +354,7 @@ main(int  argc,                     /* I - Number of command-line arguments */
         if (data.wbuffer[i] != collection[i])
          break;
 
-      printf("FAIL - output does not match baseline at 0x%04x!\n", i);
+      printf("FAIL - output does not match baseline at 0x%04x!\n", (unsigned)i);
       hex_dump("Bytes Written", data.wbuffer, data.wused);
       hex_dump("Baseline", collection, sizeof(collection));
       status = 1;
@@ -403,7 +395,7 @@ main(int  argc,                     /* I - Number of command-line arguments */
     else if (length != sizeof(collection))
     {
       printf("FAIL - wrong ippLength(), %d instead of %d bytes!\n",
-             length, (int)sizeof(collection));
+             (int)length, (int)sizeof(collection));
       print_attributes(request, 8);
       status = 1;
     }
@@ -550,6 +542,53 @@ main(int  argc,                    /* I - Number of command-line arguments */
       }
     }
 
+   /*
+    * Test hierarchical find...
+    */
+
+    fputs("ippFindAttribute(media-col/media-size/x-dimension): ", stdout);
+    if ((attr = ippFindAttribute(request, "media-col/media-size/x-dimension", IPP_TAG_INTEGER)) != NULL)
+    {
+      if (ippGetInteger(attr, 0) != 21590)
+      {
+        printf("FAIL (wrong value for x-dimension - %d)\n", ippGetInteger(attr, 0));
+        status = 1;
+      }
+      else
+        puts("PASS");
+    }
+    else
+    {
+      puts("FAIL (not found)");
+      status = 1;
+    }
+
+    fputs("ippFindNextAttribute(media-col/media-size/x-dimension): ", stdout);
+    if ((attr = ippFindNextAttribute(request, "media-col/media-size/x-dimension", IPP_TAG_INTEGER)) != NULL)
+    {
+      if (ippGetInteger(attr, 0) != 21000)
+      {
+        printf("FAIL (wrong value for x-dimension - %d)\n", ippGetInteger(attr, 0));
+        status = 1;
+      }
+      else
+        puts("PASS");
+    }
+    else
+    {
+      puts("FAIL (not found)");
+      status = 1;
+    }
+
+    fputs("ippFindNextAttribute(media-col/media-size/x-dimension) again: ", stdout);
+    if ((attr = ippFindNextAttribute(request, "media-col/media-size/x-dimension", IPP_TAG_INTEGER)) != NULL)
+    {
+      printf("FAIL (got %d, expected nothing)\n", ippGetInteger(attr, 0));
+      status = 1;
+    }
+    else
+      puts("PASS");
+
     ippDelete(request);
 
    /*
@@ -587,7 +626,7 @@ main(int  argc,                     /* I - Number of command-line arguments */
     else if (length != (sizeof(mixed) + 4))
     {
       printf("FAIL - wrong ippLength(), %d instead of %d bytes!\n",
-             length, (int)sizeof(mixed) + 4);
+             (int)length, (int)sizeof(mixed) + 4);
       print_attributes(request, 8);
       status = 1;
     }
@@ -673,7 +712,7 @@ main(int  argc,                     /* I - Number of command-line arguments */
     * Read IPP files...
     */
 
-    for (i = 1; i < argc; i ++)
+    for (i = 1; i < (size_t)argc; i ++)
     {
       if ((fp = cupsFileOpen(argv[i], "r")) == NULL)
       {
@@ -713,10 +752,10 @@ main(int  argc,                   /* I - Number of command-line arguments */
 void
 hex_dump(const char  *title,           /* I - Title */
          ipp_uchar_t *buffer,          /* I - Buffer to dump */
-         int         bytes)            /* I - Number of bytes */
+         size_t      bytes)            /* I - Number of bytes */
 {
-  int  i, j;                           /* Looping vars */
-  int  ch;                             /* Current ASCII char */
+  size_t       i, j;                   /* Looping vars */
+  int          ch;                     /* Current ASCII char */
 
 
  /*
@@ -731,7 +770,7 @@ hex_dump(const char  *title,                /* I - Title */
     * Show the offset...
     */
 
-    printf("    %04x ", i);
+    printf("    %04x ", (unsigned)i);
 
    /*
     * Then up to 16 bytes in hex...
@@ -977,7 +1016,7 @@ read_cb(_ippdata_t   *data,                /* I - Data */
   * Return the number of bytes read...
   */
 
-  return (count);
+  return ((ssize_t)count);
 }
 
 
@@ -1007,10 +1046,10 @@ write_cb(_ippdata_t   *data,            /* I - Data */
   * Return the number of bytes written...
   */
 
-  return (count);
+  return ((ssize_t)count);
 }
 
 
 /*
- * End of "$Id: testipp.c 11890 2014-05-22 13:59:21Z msweet $".
+ * End of "$Id: testipp.c 11889 2014-05-22 13:54:15Z msweet $".
  */
index 640c4801f634d4b2c3b6e5740bcc5fae59d2058c..65183dbf6bd5d70cf47618e7fad1715979c16d62 100644 (file)
@@ -1,22 +1,18 @@
 /*
- * "$Id: testppd.c 11060 2013-06-25 15:02:18Z msweet $"
+ * "$Id: testppd.c 11594 2014-02-14 20:09:01Z msweet $"
  *
- *   PPD test program for CUPS.
+ * PPD test program for CUPS.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 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() - Main entry.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -32,6 +28,7 @@
 #  include <unistd.h>
 #  include <fcntl.h>
 #endif /* WIN32 */
+#include <math.h>
 
 
 /*
@@ -394,10 +391,10 @@ main(int  argc,                           /* I - Number of command-line arguments */
     fputs("ppdPageSizeLimits: ", stdout);
     if (ppdPageSizeLimits(ppd, &minsize, &maxsize))
     {
-      if (minsize.width != 36 || minsize.length != 36 ||
-          maxsize.width != 1080 || maxsize.length != 86400)
+      if (fabs(minsize.width - 36.0) > 0.001 || fabs(minsize.length - 36.0) > 0.001 ||
+          fabs(maxsize.width - 1080.0) > 0.001 || fabs(maxsize.length - 86400.0) > 0.001)
       {
-        printf("FAIL (got min=%.0fx%.0f, max=%.0fx%.0f, "
+        printf("FAIL (got min=%.3fx%.3f, max=%.3fx%.3f, "
               "expected min=36x36, max=1080x86400)\n", minsize.width,
               minsize.length, maxsize.width, maxsize.length);
         status ++;
@@ -483,7 +480,8 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
     size = ppdPageSize(ppd, NULL);
     if (!size || strcmp(size->name, "Custom") ||
-        size->width != 576 || size->length != 720)
+        fabs(size->width - 576.0) > 0.001 ||
+        fabs(size->length - 720.0) > 0.001)
     {
       printf("FAIL (%s - %gx%g)\n", size ? size->name : "unknown",
              size ? size->width : 0.0, size ? size->length : 0.0);
@@ -772,8 +770,8 @@ main(int  argc,                             /* I - Number of command-line arguments */
     fputs("ppdPageSizeLimits(default): ", stdout);
     if (ppdPageSizeLimits(ppd, &minsize, &maxsize))
     {
-      if (minsize.width != 36 || minsize.length != 36 ||
-          maxsize.width != 1080 || maxsize.length != 86400)
+      if (fabs(minsize.width - 36.0) > 0.001 || fabs(minsize.length - 36.0) > 0.001 ||
+          fabs(maxsize.width - 1080.0) > 0.001 || fabs(maxsize.length - 86400.0) > 0.001)
       {
         printf("FAIL (got min=%.0fx%.0f, max=%.0fx%.0f, "
               "expected min=36x36, max=1080x86400)\n", minsize.width,
@@ -794,8 +792,8 @@ main(int  argc,                             /* I - Number of command-line arguments */
     fputs("ppdPageSizeLimits(InputSlot=Manual): ", stdout);
     if (ppdPageSizeLimits(ppd, &minsize, &maxsize))
     {
-      if (minsize.width != 100 || minsize.length != 100 ||
-          maxsize.width != 1000 || maxsize.length != 1000)
+      if (fabs(minsize.width - 100.0) > 0.001 || fabs(minsize.length - 100.0) > 0.001 ||
+          fabs(maxsize.width - 1000.0) > 0.001 || fabs(maxsize.length - 1000.0) > 0.001)
       {
         printf("FAIL (got min=%.0fx%.0f, max=%.0fx%.0f, "
               "expected min=100x100, max=1000x1000)\n", minsize.width,
@@ -816,8 +814,8 @@ main(int  argc,                             /* I - Number of command-line arguments */
     fputs("ppdPageSizeLimits(Quality=Photo): ", stdout);
     if (ppdPageSizeLimits(ppd, &minsize, &maxsize))
     {
-      if (minsize.width != 200 || minsize.length != 200 ||
-          maxsize.width != 1000 || maxsize.length != 1000)
+      if (fabs(minsize.width - 200.0) > 0.001 || fabs(minsize.length - 200.0) > 0.001 ||
+          fabs(maxsize.width - 1000.0) > 0.001 || fabs(maxsize.length - 1000.0) > 0.001)
       {
         printf("FAIL (got min=%.0fx%.0f, max=%.0fx%.0f, "
               "expected min=200x200, max=1000x1000)\n", minsize.width,
@@ -838,8 +836,8 @@ main(int  argc,                             /* I - Number of command-line arguments */
     fputs("ppdPageSizeLimits(Quality=Photo): ", stdout);
     if (ppdPageSizeLimits(ppd, &minsize, &maxsize))
     {
-      if (minsize.width != 300 || minsize.length != 300 ||
-          maxsize.width != 1080 || maxsize.length != 86400)
+      if (fabs(minsize.width - 300.0) > 0.001 || fabs(minsize.length - 300.0) > 0.001 ||
+          fabs(maxsize.width - 1080.0) > 0.001 || fabs(maxsize.length - 86400.0) > 0.001)
       {
         printf("FAIL (got min=%.0fx%.0f, max=%.0fx%.0f, "
               "expected min=300x300, max=1080x86400)\n", minsize.width,
@@ -1109,5 +1107,5 @@ main(int  argc,                           /* I - Number of command-line arguments */
 
 
 /*
- * End of "$Id: testppd.c 11060 2013-06-25 15:02:18Z msweet $".
+ * End of "$Id: testppd.c 11594 2014-02-14 20:09:01Z msweet $".
  */
index c054accb62a73cb5ac652ab5ecd650c13b221de3..3dcbc34d762489fae174633e1d0584778b60fdd5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: testpwg.c 11240 2013-08-14 20:33:55Z msweet $"
+ * "$Id: testpwg.c 11239 2013-08-14 20:33:42Z msweet $"
  *
  *   PWG test program for CUPS.
  *
@@ -566,5 +566,5 @@ test_ppd_cache(_ppd_cache_t *pc,    /* I - PWG mapping data */
 
 
 /*
- * End of "$Id: testpwg.c 11240 2013-08-14 20:33:55Z msweet $".
+ * End of "$Id: testpwg.c 11239 2013-08-14 20:33:42Z msweet $".
  */
index b60c2b795dc37420e7f2f95252b800867cc5878d..d5e38569ac2e91cc60848b0ae25d0639d5925eca 100644 (file)
@@ -1,24 +1,17 @@
 /*
- * "$Id: testsnmp.c 3411 2011-09-07 22:31:27Z msweet $"
+ * "$Id: testsnmp.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   SNMP test program for CUPS.
+ * SNMP test program for CUPS.
  *
- *   Copyright 2008-2010 by Apple Inc.
+ * Copyright 2008-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/".
+ * These coded instructions, statements, and computer programs 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.
- *   scan_oid() - Scan an OID value.
- *   show_oid() - Show the specified OID.
- *   usage()    - Show program usage and exit.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -132,8 +125,8 @@ static void
 print_packet(cups_snmp_t *packet,      /* I - SNMP response packet */
              void        *data)                /* I - User data pointer (not used) */
 {
-  int  i;                              /* Looping var */
-  char temp[1024];                     /* Temporary OID string */
+  unsigned     i;                      /* Looping var */
+  char         temp[1024];             /* Temporary OID string */
 
 
   (void)data;
@@ -300,5 +293,5 @@ usage(void)
 
 
 /*
- * End of "$Id: testsnmp.c 3411 2011-09-07 22:31:27Z msweet $".
+ * End of "$Id: testsnmp.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index ae1b86a6ba64775cdd7a3023b2b437a394739d37..dadc034a3e97fa25fedd759f454c660820d269b3 100644 (file)
@@ -1,17 +1,17 @@
 /*
- * "$Id: thread-private.h 11642 2014-02-27 15:57:59Z msweet $"
+ * "$Id: thread-private.h 11627 2014-02-20 16:15:09Z msweet $"
  *
- *   Private threading definitions for CUPS.
+ * Private threading definitions for CUPS.
  *
- *   Copyright 2009-2012 by Apple Inc.
+ * Copyright 2009-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/".
+ * These coded instructions, statements, and computer programs 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_THREAD_PRIVATE_H_
@@ -41,7 +41,7 @@ typedef pthread_rwlock_t _cups_rwlock_t;
 typedef pthread_key_t  _cups_threadkey_t;
 #    define _CUPS_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
 #    define _CUPS_RWLOCK_INITIALIZER PTHREAD_RWLOCK_INITIALIZER
-#    define _CUPS_THREADKEY_INITIALIZER -1
+#    define _CUPS_THREADKEY_INITIALIZER 0
 #    define _cupsThreadGetData(k) pthread_getspecific(k)
 #    define _cupsThreadSetData(k,p) pthread_setspecific(k,p)
 
@@ -96,5 +96,5 @@ extern int    _cupsThreadCreate(_cups_thread_func_t func, void *arg);
 #endif /* !_CUPS_THREAD_PRIVATE_H_ */
 
 /*
- * End of "$Id: thread-private.h 11642 2014-02-27 15:57:59Z msweet $".
+ * End of "$Id: thread-private.h 11627 2014-02-20 16:15:09Z msweet $".
  */
index 8c45252219d9514a67315db76e3f92b02aa5d2ef..ea49f1d9ca0213b60643fc2227a7122a2210c0be 100644 (file)
@@ -1,28 +1,17 @@
 /*
- * "$Id: thread.c 11642 2014-02-27 15:57:59Z msweet $"
+ * "$Id: thread.c 11627 2014-02-20 16:15:09Z msweet $"
  *
- *   Threading primitives for CUPS.
+ * Threading primitives for CUPS.
  *
- *   Copyright 2009-2012 by Apple Inc.
+ * Copyright 2009-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/".
+ * These coded instructions, statements, and computer programs 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:
- *
- *   _cupsMutexInit()    - Initialize a mutex.
- *   _cupsMutexLock()    - Lock a mutex.
- *   _cupsMutexUnlock()  - Unlock a mutex.
- *   _cupsRWInit()       - Initialize a reader/writer lock.
- *   _cupsRWLockRead()   - Acquire a reader/writer lock for reading.
- *   _cupsRWLockWrite()  - Acquire a reader/writer lock for writing.
- *   _cupsRWUnlock()     - Release a reader/writer lock.
- *   _cupsThreadCreate() - Create a thread.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -334,5 +323,5 @@ _cupsThreadCreate(
 
 
 /*
- * End of "$Id: thread.c 11642 2014-02-27 15:57:59Z msweet $".
+ * End of "$Id: thread.c 11627 2014-02-20 16:15:09Z msweet $".
  */
diff --git a/cups/tls-darwin.c b/cups/tls-darwin.c
new file mode 100644 (file)
index 0000000..9fa0465
--- /dev/null
@@ -0,0 +1,1664 @@
+/*
+ * "$Id: tls-darwin.c 12029 2014-07-15 18:59:26Z msweet $"
+ *
+ * TLS support code for CUPS on OS X.
+ *
+ * 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/".
+ *
+ * This file is subject to the Apple OS-Developed Software exception.
+ */
+
+/**** This file is included from http.c ****/
+
+/*
+ * Include necessary headers...
+ */
+
+#include <spawn.h>
+
+extern char **environ;
+
+
+/*
+ * 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 */
+static SecKeychainRef  tls_keychain = NULL;
+                                       /* Server cert keychain */
+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 */
+
+
+/*
+ * 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);
+static const char      *http_cdsa_default_path(char *buffer, size_t bufsize);
+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);
+
+
+/*
+ * 'cupsMakeServerCredentials()' - Make a self-signed certificate and private key pair.
+ *
+ * @since CUPS 2.0@
+ */
+
+int                                    /* O - 1 on success, 0 on failure */
+cupsMakeServerCredentials(
+    const char *path,                  /* I - Keychain path or @code NULL@ for default */
+    const char *common_name,           /* I - Common name */
+    int        num_alt_names,          /* I - Number of subject alternate names */
+    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 */
+  int                  status = 0;     /* Return status */
+  OSStatus             err;            /* Error code (if any) */
+  CFStringRef          cfcommon_name = NULL;
+                                       /* CF string for server name */
+  SecIdentityRef       ident = NULL;   /* Identity */
+  SecKeyRef            publicKey = NULL,
+                                       /* Public key */
+                       privateKey = NULL;
+                                       /* Private key */
+  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)num_alt_names;
+  (void)alt_names;
+  (void)expiration_date;
+
+  if (!path)
+    path = http_cdsa_default_path(filename, sizeof(filename));
+
+  cfcommon_name = CFStringCreateWithCString(kCFAllocatorDefault, common_name, kCFStringEncodingUTF8);
+  if (!cfcommon_name)
+    goto cleanup;
+
+ /*
+  * Create a public/private key pair...
+  */
+
+  keyParams = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
+  if (!keyParams)
+    goto cleanup;
+
+  CFDictionaryAddValue(keyParams, kSecAttrKeyType, kSecAttrKeyTypeRSA);
+  CFDictionaryAddValue(keyParams, kSecAttrKeySizeInBits, CFSTR("2048"));
+  CFDictionaryAddValue(keyParams, kSecAttrLabel, CFSTR("CUPS Self-Signed Certificate"));
+
+  err = SecKeyGeneratePair(keyParams, &publicKey, &privateKey);
+  if (err != noErr)
+    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);
+  CFRelease(usage);
+
+  const void   *ca_o[] = { kSecOidOrganization, CFSTR("") };
+  const void   *ca_cn[] = { kSecOidCommonName, cfcommon_name };
+  CFArrayRef   ca_o_dn = CFArrayCreate(kCFAllocatorDefault, ca_o, 2, NULL);
+  CFArrayRef   ca_cn_dn = CFArrayCreate(kCFAllocatorDefault, ca_cn, 2, NULL);
+  const void   *ca_dn_array[2];
+
+  ca_dn_array[0] = CFArrayCreate(kCFAllocatorDefault, (const void **)&ca_o_dn, 1, NULL);
+  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);
+  CFRelease(subject);
+  CFRelease(certParams);
+
+  if (!cert)
+    goto cleanup;
+
+  ident = SecIdentityCreate(kCFAllocatorDefault, cert, privateKey);
+
+  if (ident)
+    status = 1;
+
+  /*
+   * Cleanup and return...
+   */
+
+cleanup:
+
+  if (cfcommon_name)
+    CFRelease(cfcommon_name);
+
+  if (keyParams)
+    CFRelease(keyParams);
+
+  if (ident)
+    CFRelease(ident);
+
+  if (cert)
+    CFRelease(cert);
+
+  if (publicKey)
+    CFRelease(publicKey);
+
+  if (privateKey)
+    CFRelease(publicKey);
+
+  return (status);
+
+#else /* !(HAVE_SECGENERATESELFSIGNEDCERTIFICATE && HAVE_SECKEYCHAINOPEN) */
+  int          pid,                    /* Process ID of command */
+               status,                 /* Status of command */
+               i;                      /* Looping var */
+  char         command[1024],          /* Command */
+               *argv[4],               /* Command-line arguments */
+               *envp[1000],            /* Environment variables */
+               days[32],               /* CERTTOOL_EXPIRATION_DAYS env var */
+               keychain[1024],         /* Keychain argument */
+               infofile[1024],         /* Type-in information for cert */
+               filename[1024];         /* Default keychain path */
+  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));
+
+  (void)num_alt_names;
+  (void)alt_names;
+
+  if (!path)
+    path = http_cdsa_default_path(filename, sizeof(filename));
+
+ /*
+  * Run the "certtool" command to generate a self-signed certificate...
+  */
+
+  if (!cupsFileFind("certtool", getenv("PATH"), 1, command, sizeof(command)))
+    return (-1);
+
+ /*
+  * Create a file with the certificate information fields...
+  *
+  * Note: This assumes that the default questions are asked by the certtool
+  * command...
+  */
+
+ if ((fp = cupsTempFile2(infofile, sizeof(infofile))) == NULL)
+    return (-1);
+
+  cupsFilePrintf(fp,
+                 "CUPS Self-Signed Certificate\n"
+                                       /* Enter key and certificate label */
+                 "r\n"                 /* Generate RSA key pair */
+                 "2048\n"              /* Key size in bits */
+                 "y\n"                 /* OK (y = yes) */
+                 "b\n"                 /* Usage (b=signing/encryption) */
+                 "s\n"                 /* Sign with SHA1 */
+                 "y\n"                 /* OK (y = yes) */
+                 "%s\n"                        /* Common name */
+                 "\n"                  /* Country (default) */
+                 "\n"                  /* Organization (default) */
+                 "\n"                  /* Organizational unit (default) */
+                 "\n"                  /* State/Province (default) */
+                 "\n"                  /* Email address */
+                 "y\n",                        /* OK (y = yes) */
+                common_name);
+  cupsFileClose(fp);
+
+  snprintf(keychain, sizeof(keychain), "k=%s", path);
+
+  argv[0] = "certtool";
+  argv[1] = "c";
+  argv[2] = keychain;
+  argv[3] = NULL;
+
+  snprintf(days, sizeof(days), "CERTTOOL_EXPIRATION_DAYS=%d", (int)((expiration_date - time(NULL) + 86399) / 86400));
+  envp[0] = days;
+  for (i = 0; i < (int)(sizeof(envp) / sizeof(envp[0]) - 2) && environ[i]; i ++)
+    envp[i + 1] = environ[i];
+  envp[i] = NULL;
+
+  posix_spawn_file_actions_t actions;  /* File actions */
+
+  posix_spawn_file_actions_init(&actions);
+  posix_spawn_file_actions_addclose(&actions, 0);
+  posix_spawn_file_actions_addopen(&actions, 0, infofile, O_RDONLY, 0);
+  posix_spawn_file_actions_addclose(&actions, 1);
+  posix_spawn_file_actions_addopen(&actions, 1, "/dev/null", O_WRONLY, 0);
+  posix_spawn_file_actions_addclose(&actions, 2);
+  posix_spawn_file_actions_addopen(&actions, 2, "/dev/null", O_WRONLY, 0);
+
+  if (posix_spawn(&pid, command, &actions, NULL, argv, envp))
+  {
+    unlink(infofile);
+    return (-1);
+  }
+
+  posix_spawn_file_actions_destroy(&actions);
+
+  unlink(infofile);
+
+  while (waitpid(pid, &status, 0) < 0)
+    if (errno != EINTR)
+    {
+      status = -1;
+      break;
+    }
+
+  return (!status);
+#endif /* HAVE_SECGENERATESELFSIGNEDCERTIFICATE && HAVE_SECKEYCHAINOPEN */
+}
+
+
+/*
+ * 'cupsSetServerCredentials()' - Set the default server credentials.
+ *
+ * Note: The server credentials are used by all threads in the running process.
+ * This function is threadsafe.
+ *
+ * @since CUPS 2.0@
+ */
+
+int                                    /* O - 1 on success, 0 on failure */
+cupsSetServerCredentials(
+    const char *path,                  /* I - Keychain path or @code NULL@ for default */
+    const char *common_name,           /* I - Default common name for server */
+    int        auto_create)            /* I - 1 = automatically create self-signed certificates */
+{
+  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 */
+
+
+  if (!path)
+    path = http_cdsa_default_path(filename, sizeof(filename));
+
+  if (SecKeychainOpen(path, &keychain) != noErr)
+  {
+    /* TODO: Set cups last error string */
+    DEBUG_puts("1cupsSetServerCredentials: Unable to open keychain, returning 0.");
+    return (0);
+  }
+
+  _cupsMutexLock(&tls_mutex);
+
+ /*
+  * Close any keychain that is currently open...
+  */
+
+  if (tls_keychain)
+    CFRelease(tls_keychain);
+
+  if (tls_keypath)
+    _cupsStrFree(tls_keypath);
+
+  if (tls_common_name)
+    _cupsStrFree(tls_common_name);
+
+ /*
+  * Save the new keychain...
+  */
+
+  tls_keychain    = keychain;
+  tls_keypath     = _cupsStrAlloc(path);
+  tls_auto_create = auto_create;
+  tls_common_name = _cupsStrAlloc(common_name);
+
+  _cupsMutexUnlock(&tls_mutex);
+
+  DEBUG_puts("1cupsSetServerCredentials: Opened keychain, returning 1.");
+  return (1);
+
+#else
+  DEBUG_puts("1cupsSetServerCredentials: No keychain support compiled in, returning 0.");
+  return (0);
+#endif /* HAVE_SECKEYCHAINOPEN */
+}
+
+
+/*
+ * 'httpCopyCredentials()' - Copy the credentials associated with the peer in
+ *                           an encrypted connection.
+ *
+ * @since CUPS 1.5/OS X 10.7@
+ */
+
+int                                    /* O - Status of call (0 = success) */
+httpCopyCredentials(
+    http_t      *http,                 /* I - Connection to server */
+    cups_array_t **credentials)                /* O - Array of credentials */
+{
+  OSStatus             error;          /* Error code */
+  SecTrustRef          peerTrust;      /* Peer trust reference */
+  CFIndex              count;          /* Number of credentials */
+  SecCertificateRef    secCert;        /* Certificate reference */
+  CFDataRef            data;           /* Certificate data */
+  int                  i;              /* Looping var */
+
+
+  DEBUG_printf(("httpCopyCredentials(http=%p, credentials=%p)", http, credentials));
+
+  if (credentials)
+    *credentials = NULL;
+
+  if (!http || !http->tls || !credentials)
+    return (-1);
+
+  if (!(error = SSLCopyPeerTrust(http->tls, &peerTrust)) && peerTrust)
+  {
+    DEBUG_printf(("2httpCopyCredentials: Peer provided %d certificates.", (int)SecTrustGetCertificateCount(peerTrust)));
+
+    if ((*credentials = cupsArrayNew(NULL, NULL)) != NULL)
+    {
+      count = SecTrustGetCertificateCount(peerTrust);
+
+      for (i = 0; i < count; i ++)
+      {
+       secCert = SecTrustGetCertificateAtIndex(peerTrust, i);
+
+#ifdef DEBUG
+        CFStringRef cf_name = SecCertificateCopySubjectSummary(secCert);
+       char name[1024];
+       if (cf_name)
+         CFStringGetCString(cf_name, name, sizeof(name), kCFStringEncodingUTF8);
+       else
+         strlcpy(name, "unknown", sizeof(name));
+
+       DEBUG_printf(("2httpCopyCredentials: Certificate %d name is \"%s\".", i, name));
+#endif /* DEBUG */
+
+       if ((data = SecCertificateCopyData(secCert)) != NULL)
+       {
+         DEBUG_printf(("2httpCopyCredentials: Adding %d byte certificate blob.", (int)CFDataGetLength(data)));
+
+         httpAddCredential(*credentials, CFDataGetBytePtr(data), (size_t)CFDataGetLength(data));
+         CFRelease(data);
+       }
+      }
+    }
+
+    CFRelease(peerTrust);
+  }
+
+  return (error);
+}
+
+
+/*
+ * '_httpCreateCredentials()' - Create credentials in the internal format.
+ */
+
+http_tls_credentials_t                 /* O - Internal credentials */
+_httpCreateCredentials(
+    cups_array_t *credentials)         /* I - Array of credentials */
+{
+  CFMutableArrayRef    peerCerts;      /* Peer credentials reference */
+  SecCertificateRef    secCert;        /* Certificate reference */
+  http_credential_t    *credential;    /* Credential data */
+
+
+  if (!credentials)
+    return (NULL);
+
+  if ((peerCerts = CFArrayCreateMutable(kCFAllocatorDefault,
+                                       cupsArrayCount(credentials),
+                                       &kCFTypeArrayCallBacks)) == NULL)
+    return (NULL);
+
+  for (credential = (http_credential_t *)cupsArrayFirst(credentials);
+       credential;
+       credential = (http_credential_t *)cupsArrayNext(credentials))
+  {
+    if ((secCert = http_cdsa_create_credential(credential)) != NULL)
+    {
+      CFArrayAppendValue(peerCerts, secCert);
+      CFRelease(secCert);
+    }
+  }
+
+  return (peerCerts);
+}
+
+
+/*
+ * 'httpCredentialsAreValidForName()' - Return whether the credentials are valid for the given name.
+ *
+ * @since CUPS 2.0@
+ */
+
+int                                    /* O - 1 if valid, 0 otherwise */
+httpCredentialsAreValidForName(
+    cups_array_t *credentials,         /* I - Credentials */
+    const char   *common_name)         /* I - Name to check */
+{
+  SecCertificateRef    secCert;        /* Certificate reference */
+  CFStringRef          cfcert_name = NULL;
+                                       /* Certificate's common name (CF string) */
+  char                 cert_name[256]; /* Certificate's common name (C string) */
+  int                  valid = 1;      /* Valid name? */
+
+
+  if ((secCert = http_cdsa_create_credential((http_credential_t *)cupsArrayFirst(credentials))) == NULL)
+    return (0);
+
+ /*
+  * Compare the common names...
+  */
+
+  if ((cfcert_name = SecCertificateCopySubjectSummary(secCert)) == NULL)
+  {
+   /*
+    * Can't get common name, cannot be valid...
+    */
+
+    valid = 0;
+  }
+  else if (CFStringGetCString(cfcert_name, cert_name, sizeof(cert_name), kCFStringEncodingUTF8) &&
+           _cups_strcasecmp(common_name, cert_name))
+  {
+   /*
+    * Not an exact match for the common name, check for wildcard certs...
+    */
+
+    const char *domain = strchr(common_name, '.');
+                                       /* Domain in common name */
+
+    if (strncmp(cert_name, "*.", 2) || !domain || _cups_strcasecmp(domain, cert_name + 1))
+    {
+     /*
+      * Not a wildcard match.
+      */
+
+      /* TODO: Check subject alternate names */
+      valid = 0;
+    }
+  }
+
+  if (cfcert_name)
+    CFRelease(cfcert_name);
+
+  CFRelease(secCert);
+
+  return (valid);
+}
+
+
+/*
+ * 'httpCredentialsGetTrust()' - Return the trust of credentials.
+ *
+ * @since CUPS 2.0@
+ */
+
+http_trust_t                           /* O - Level of trust */
+httpCredentialsGetTrust(
+    cups_array_t *credentials,         /* I - Credentials */
+    const char   *common_name)         /* I - Common name for trust lookup */
+{
+  SecCertificateRef    secCert;        /* Certificate reference */
+  http_trust_t         trust = HTTP_TRUST_OK;
+                                       /* Trusted? */
+  cups_array_t         *tcreds = NULL; /* Trusted credentials */
+  _cups_globals_t      *cg = _cupsGlobals();
+                                       /* Per-thread globals */
+
+
+  if (!common_name)
+    return (HTTP_TRUST_UNKNOWN);
+
+  if ((secCert = http_cdsa_create_credential((http_credential_t *)cupsArrayFirst(credentials))) == NULL)
+    return (HTTP_TRUST_UNKNOWN);
+
+ /*
+  * Look this common name up in the default keychains...
+  */
+
+  httpLoadCredentials(NULL, &tcreds, common_name);
+
+  if (tcreds)
+  {
+    char       credentials_str[1024],  /* String for incoming credentials */
+               tcreds_str[1024];       /* String for saved credentials */
+
+    httpCredentialsString(credentials, credentials_str, sizeof(credentials_str));
+    httpCredentialsString(tcreds, tcreds_str, sizeof(tcreds_str));
+
+    if (strcmp(credentials_str, tcreds_str))
+    {
+     /*
+      * Credentials don't match, let's look at the expiration date of the new
+      * credentials and allow if the new ones have a later expiration...
+      */
+
+      if (httpCredentialsGetExpiration(credentials) <= httpCredentialsGetExpiration(tcreds) ||
+          !httpCredentialsAreValidForName(credentials, common_name))
+      {
+       /*
+        * Either the new credentials are not newly issued, or the common name
+       * does not match the issued certificate...
+       */
+
+        trust = HTTP_TRUST_INVALID;
+      }
+      else if (httpCredentialsGetExpiration(tcreds) < time(NULL))
+      {
+       /*
+        * Save the renewed credentials...
+       */
+
+       trust = HTTP_TRUST_RENEWED;
+
+        httpSaveCredentials(NULL, credentials, common_name);
+      }
+    }
+
+    httpFreeCredentials(tcreds);
+  }
+  else if (cg->validate_certs && !httpCredentialsAreValidForName(credentials, common_name))
+    trust = HTTP_TRUST_INVALID;
+
+  if (!cg->expired_certs && !SecCertificateIsValid(secCert, CFAbsoluteTimeGetCurrent()))
+    trust = HTTP_TRUST_EXPIRED;
+  else if (!cg->any_root && cupsArrayCount(credentials) == 1)
+    trust = HTTP_TRUST_INVALID;
+
+  CFRelease(secCert);
+
+  return (trust);
+}
+
+
+/*
+ * 'httpCredentialsGetExpiration()' - Return the expiration date of the credentials.
+ *
+ * @since CUPS 2.0@
+ */
+
+time_t                                 /* O - Expiration date of credentials */
+httpCredentialsGetExpiration(
+    cups_array_t *credentials)         /* I - Credentials */
+{
+  SecCertificateRef    secCert;        /* Certificate reference */
+  time_t               expiration;     /* Expiration date */
+
+
+  if ((secCert = http_cdsa_create_credential((http_credential_t *)cupsArrayFirst(credentials))) == NULL)
+    return (0);
+
+  expiration = (time_t)(SecCertificateNotValidAfter(secCert) + kCFAbsoluteTimeIntervalSince1970);
+
+  CFRelease(secCert);
+
+  return (expiration);
+}
+
+
+/*
+ * 'httpCredentialsString()' - Return a string representing the credentials.
+ *
+ * @since CUPS 2.0@
+ */
+
+size_t                                 /* O - Total size of credentials string */
+httpCredentialsString(
+    cups_array_t *credentials,         /* I - Credentials */
+    char         *buffer,              /* I - Buffer or @code NULL@ */
+    size_t       bufsize)              /* I - Size of buffer */
+{
+  http_credential_t    *first;         /* First certificate */
+  SecCertificateRef    secCert;        /* Certificate reference */
+
+
+  DEBUG_printf(("httpCredentialsString(credentials=%p, buffer=%p, bufsize=" CUPS_LLFMT ")", credentials, buffer, CUPS_LLCAST bufsize));
+
+  if (!buffer)
+    return (0);
+
+  if (buffer && bufsize > 0)
+    *buffer = '\0';
+
+  if ((first = (http_credential_t *)cupsArrayFirst(credentials)) != NULL &&
+      (secCert = http_cdsa_create_credential(first)) != NULL)
+  {
+    CFStringRef                cf_name;        /* CF common name string */
+    char               name[256];      /* Common name associated with cert */
+    time_t             expiration;     /* Expiration date of cert */
+    _cups_md5_state_t  md5_state;      /* MD5 state */
+    unsigned char      md5_digest[16]; /* MD5 result */
+
+    if ((cf_name = SecCertificateCopySubjectSummary(secCert)) != NULL)
+    {
+      CFStringGetCString(cf_name, name, (CFIndex)sizeof(name), kCFStringEncodingUTF8);
+      CFRelease(cf_name);
+    }
+    else
+      strlcpy(name, "unknown", sizeof(name));
+
+    expiration = (time_t)(SecCertificateNotValidAfter(secCert) + kCFAbsoluteTimeIntervalSince1970);
+
+    _cupsMD5Init(&md5_state);
+    _cupsMD5Append(&md5_state, first->data, (int)first->datalen);
+    _cupsMD5Finish(&md5_state, md5_digest);
+
+    snprintf(buffer, bufsize, "%s / %s / %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", name, httpGetDateString(expiration), md5_digest[0], md5_digest[1], md5_digest[2], md5_digest[3], md5_digest[4], md5_digest[5], md5_digest[6], md5_digest[7], md5_digest[8], md5_digest[9], md5_digest[10], md5_digest[11], md5_digest[12], md5_digest[13], md5_digest[14], md5_digest[15]);
+
+    CFRelease(secCert);
+  }
+
+  DEBUG_printf(("1httpCredentialsString: Returning \"%s\".", buffer));
+
+  return (strlen(buffer));
+}
+
+
+/*
+ * '_httpFreeCredentials()' - Free internal credentials.
+ */
+
+void
+_httpFreeCredentials(
+    http_tls_credentials_t credentials)        /* I - Internal credentials */
+{
+  if (!credentials)
+    return;
+
+  CFRelease(credentials);
+}
+
+
+/*
+ * 'httpLoadCredentials()' - Load X.509 credentials from a keychain file.
+ *
+ * @since CUPS 2.0@
+ */
+
+int                                    /* O - 0 on success, -1 on error */
+httpLoadCredentials(
+    const char   *path,                        /* I  - Keychain path or @code NULL@ for default */
+    cups_array_t **credentials,                /* IO - Credentials */
+    const char   *common_name)         /* I  - Common name for credentials */
+{
+#ifdef HAVE_SECKEYCHAINOPEN
+  OSStatus             err;            /* Error info */
+  char                 filename[1024]; /* Filename for keychain */
+  SecKeychainRef       keychain = NULL;/* Keychain reference */
+  SecIdentitySearchRef search = NULL;  /* Search reference */
+  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));
+
+  if (!credentials)
+    return (-1);
+
+  *credentials = NULL;
+
+  if (!path)
+    path = http_cdsa_default_path(filename, sizeof(filename));
+
+  if ((err = SecKeychainOpen(path, &keychain)) != noErr)
+    goto cleanup;
+
+  cfcommon_name = CFStringCreateWithCString(kCFAllocatorDefault, common_name, kCFStringEncodingUTF8);
+
+  policy = SecPolicyCreateSSL(1, cfcommon_name);
+
+  if (cfcommon_name)
+    CFRelease(cfcommon_name);
+
+  if (!policy)
+    goto cleanup;
+
+  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);
+
+  CFRelease(list);
+
+  err = SecItemCopyMatching(query, (CFTypeRef *)&cert);
+
+  if (err)
+    goto cleanup;
+
+  if (CFGetTypeID(cert) != SecCertificateGetTypeID())
+    goto cleanup;
+
+  if ((data = SecCertificateCopyData(cert)) != NULL)
+  {
+    DEBUG_printf(("1httpLoadCredentials: Adding %d byte certificate blob.", (int)CFDataGetLength(data)));
+
+    *credentials = cupsArrayNew(NULL, NULL);
+    httpAddCredential(*credentials, CFDataGetBytePtr(data), (size_t)CFDataGetLength(data));
+    CFRelease(data);
+  }
+
+  cleanup :
+
+  if (keychain)
+    CFRelease(keychain);
+  if (search)
+    CFRelease(search);
+  if (cert)
+    CFRelease(cert);
+  if (policy)
+    CFRelease(policy);
+  if (query)
+    CFRelease(query);
+
+  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 */
+}
+
+
+/*
+ * 'httpSaveCredentials()' - Save X.509 credentials to a keychain file.
+ *
+ * @since CUPS 2.0@
+ */
+
+int                                    /* O - -1 on error, 0 on success */
+httpSaveCredentials(
+    const char   *path,                        /* I - Keychain path or @code NULL@ for default */
+    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 */
+  char                 filename[1024]; /* Filename for keychain */
+  SecKeychainRef       keychain = NULL;/* Keychain reference */
+  SecIdentitySearchRef search = NULL;  /* Search reference */
+  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));
+  if (!credentials)
+    goto cleanup;
+
+  if (!httpCredentialsAreValidForName(credentials, common_name))
+  {
+    DEBUG_puts("1httpSaveCredentials: Common name does not match.");
+    return (-1);
+  }
+
+  if ((cert = http_cdsa_create_credential((http_credential_t *)cupsArrayFirst(credentials))) == NULL)
+  {
+    DEBUG_puts("1httpSaveCredentials: Unable to create certificate.");
+    goto cleanup;
+  }
+
+  if (!path)
+    path = http_cdsa_default_path(filename, sizeof(filename));
+
+  if ((err = SecKeychainOpen(path, &keychain)) != noErr)
+  {
+    DEBUG_printf(("1httpSaveCredentials: SecKeychainOpen returned %d.", (int)err));
+    goto cleanup;
+  }
+
+  if ((list = CFArrayCreate(kCFAllocatorDefault, (const void **)&keychain, 1, &kCFTypeArrayCallBacks)) == NULL)
+  {
+    DEBUG_puts("1httpSaveCredentials: Unable to create list of keychains.");
+    goto cleanup;
+  }
+
+  if ((attrs = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks)) == NULL)
+  {
+    DEBUG_puts("1httpSaveCredentials: Unable to create dictionary.");
+    goto cleanup;
+  }
+
+  CFDictionaryAddValue(attrs, kSecClass, kSecClassCertificate);
+  CFDictionaryAddValue(attrs, kSecValueRef, cert);
+  CFDictionaryAddValue(attrs, kSecMatchSearchList, list);
+
+  /* Note: SecItemAdd consumes "attrs"... */
+  err = SecItemAdd(attrs, NULL);
+  DEBUG_printf(("1httpSaveCredentials: SecItemAdd returned %d.", (int)err));
+
+  cleanup :
+
+  if (list)
+    CFRelease(list);
+  if (keychain)
+    CFRelease(keychain);
+  if (search)
+    CFRelease(search);
+  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 */
+}
+
+
+/*
+ * '_httpTLSInitialize()' - Initialize the TLS stack.
+ */
+
+void
+_httpTLSInitialize(void)
+{
+ /*
+  * Nothing to do...
+  */
+}
+
+
+/*
+ * '_httpTLSPending()' - Return the number of pending TLS-encrypted bytes.
+ */
+
+size_t
+_httpTLSPending(http_t *http)          /* I - HTTP connection */
+{
+  size_t bytes;                                /* Bytes that are available */
+
+
+  if (!SSLGetBufferedReadSize(http->tls, &bytes))
+    return (bytes);
+
+  return (0);
+}
+
+
+/*
+ * '_httpTLSRead()' - Read from a SSL/TLS connection.
+ */
+
+int                                    /* O - Bytes read */
+_httpTLSRead(http_t *http,             /* I - HTTP connection */
+             char   *buf,              /* I - Buffer to store data */
+             int    len)               /* I - Length of buffer */
+{
+  int          result;                 /* Return value */
+  OSStatus     error;                  /* Error info */
+  size_t       processed;              /* Number of bytes processed */
+
+
+  error = SSLRead(http->tls, buf, (size_t)len, &processed);
+  DEBUG_printf(("6_httpTLSRead: error=%d, processed=%d", (int)error,
+                (int)processed));
+  switch (error)
+  {
+    case 0 :
+       result = (int)processed;
+       break;
+
+    case errSSLWouldBlock :
+       if (processed)
+         result = (int)processed;
+       else
+       {
+         result = -1;
+         errno  = EINTR;
+       }
+       break;
+
+    case errSSLClosedGraceful :
+    default :
+       if (processed)
+         result = (int)processed;
+       else
+       {
+         result = -1;
+         errno  = EPIPE;
+       }
+       break;
+  }
+
+  return (result);
+}
+
+
+/*
+ * '_httpTLSStart()' - Set up SSL/TLS support on a connection.
+ */
+
+int                                    /* O - 0 on success, -1 on failure */
+_httpTLSStart(http_t *http)            /* I - HTTP connection */
+{
+  char                 hostname[256],  /* Hostname */
+                       *hostptr;       /* Pointer into hostname */
+  _cups_globals_t      *cg = _cupsGlobals();
+                                       /* Pointer to library globals */
+  OSStatus             error;          /* Error code */
+  const char           *message = NULL;/* Error message */
+  cups_array_t         *credentials;   /* Credentials array */
+  cups_array_t         *names;         /* CUPS distinguished names */
+  CFArrayRef           dn_array;       /* CF distinguished names array */
+  CFIndex              count;          /* Number of credentials */
+  CFDataRef            data;           /* Certificate data */
+  int                  i;              /* Looping var */
+  http_credential_t    *credential;    /* Credential data */
+
+
+  DEBUG_printf(("7_httpTLSStart(http=%p)", http));
+
+#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;
+    http->status = HTTP_STATUS_ERROR;
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Server credentials not set."), 1);
+
+    return (-1);
+  }
+
+  if ((http->tls = SSLCreateContext(kCFAllocatorDefault, http->mode == _HTTP_MODE_CLIENT ? kSSLClientSide : kSSLServerSide, kSSLStreamType)) == NULL)
+  {
+    DEBUG_puts("4_httpTLSStart: SSLCreateContext failed.");
+    http->error  = errno = ENOMEM;
+    http->status = HTTP_STATUS_ERROR;
+    _cupsSetHTTPError(HTTP_STATUS_ERROR);
+
+    return (-1);
+  }
+
+  error = SSLSetConnection(http->tls, http);
+  DEBUG_printf(("4_httpTLSStart: SSLSetConnection, error=%d", (int)error));
+
+  if (!error)
+  {
+    error = SSLSetIOFuncs(http->tls, http_cdsa_read, http_cdsa_write);
+    DEBUG_printf(("4_httpTLSStart: SSLSetIOFuncs, error=%d", (int)error));
+  }
+
+  if (!error)
+  {
+    error = SSLSetSessionOption(http->tls, kSSLSessionOptionBreakOnServerAuth,
+                                true);
+    DEBUG_printf(("4_httpTLSStart: SSLSetSessionOption, error=%d",
+                  (int)error));
+  }
+
+  if (!error && http->mode == _HTTP_MODE_CLIENT)
+  {
+   /*
+    * Client: set client-side credentials, if any...
+    */
+
+    if (cg->client_cert_cb)
+    {
+      error = SSLSetSessionOption(http->tls,
+                                 kSSLSessionOptionBreakOnCertRequested, true);
+      DEBUG_printf(("4_httpTLSStart: kSSLSessionOptionBreakOnCertRequested, "
+                    "error=%d", (int)error));
+    }
+    else
+    {
+      error = http_cdsa_set_credentials(http);
+      DEBUG_printf(("4_httpTLSStart: http_cdsa_set_credentials, error=%d",
+                    (int)error));
+    }
+  }
+  else if (!error)
+  {
+   /*
+    * Server: find/create a certificate for TLS...
+    */
+
+    if (http->fields[HTTP_FIELD_HOST][0])
+    {
+     /*
+      * Use hostname for TLS upgrade...
+      */
+
+      strlcpy(hostname, http->fields[HTTP_FIELD_HOST], sizeof(hostname));
+    }
+    else
+    {
+     /*
+      * Resolve hostname from connection address...
+      */
+
+      http_addr_t      addr;           /* Connection address */
+      socklen_t                addrlen;        /* Length of address */
+
+      addrlen = sizeof(addr);
+      if (getsockname(http->fd, (struct sockaddr *)&addr, &addrlen))
+      {
+       DEBUG_printf(("4_httpTLSStart: Unable to get socket address: %s", strerror(errno)));
+       hostname[0] = '\0';
+      }
+      else if (httpAddrLocalhost(&addr))
+       hostname[0] = '\0';
+      else
+      {
+       httpAddrLookup(&addr, hostname, sizeof(hostname));
+        DEBUG_printf(("4_httpTLSStart: Resolved socket address to \"%s\".", hostname));
+      }
+    }
+
+#ifdef HAVE_SECKEYCHAINOPEN
+    if (isdigit(hostname[0] & 255) || hostname[0] == '[')
+      hostname[0] = '\0';              /* Don't allow numeric addresses */
+
+    if (hostname[0])
+      http->tls_credentials = http_cdsa_copy_server(hostname);
+    else if (tls_common_name)
+      http->tls_credentials = http_cdsa_copy_server(tls_common_name);
+
+    if (!http->tls_credentials && tls_auto_create && (hostname[0] || tls_common_name))
+    {
+      DEBUG_printf(("4_httpTLSStart: Auto-create credentials for \"%s\".", hostname[0] ? hostname : tls_common_name));
+
+      if (!cupsMakeServerCredentials(tls_keypath, hostname[0] ? hostname : tls_common_name, 0, NULL, time(NULL) + 365 * 86400))
+      {
+       DEBUG_puts("4_httpTLSStart: cupsMakeServerCredentials failed.");
+       http->error  = errno = EINVAL;
+       http->status = HTTP_STATUS_ERROR;
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unable to create server credentials."), 1);
+
+       return (-1);
+      }
+
+      http->tls_credentials = http_cdsa_copy_server(hostname[0] ? hostname : tls_common_name);
+    }
+#endif /* HAVE_SECKEYCHAINOPEN */
+
+    if (!http->tls_credentials)
+    {
+      DEBUG_puts("4_httpTLSStart: Unable to find server credentials.");
+      http->error  = errno = EINVAL;
+      http->status = HTTP_STATUS_ERROR;
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unable to find server credentials."), 1);
+
+      return (-1);
+    }
+
+    error = SSLSetCertificate(http->tls, http->tls_credentials);
+
+    DEBUG_printf(("4_httpTLSStart: SSLSetCertificate, error=%d", (int)error));
+  }
+
+  DEBUG_printf(("4_httpTLSStart: tls_credentials=%p", http->tls_credentials));
+
+ /*
+  * Let the server know which hostname/domain we are trying to connect to
+  * in case it wants to serve up a certificate with a matching common name.
+  */
+
+  if (!error && http->mode == _HTTP_MODE_CLIENT)
+  {
+   /*
+    * Client: get the hostname to use for TLS...
+    */
+
+    if (httpAddrLocalhost(http->hostaddr))
+    {
+      strlcpy(hostname, "localhost", sizeof(hostname));
+    }
+    else
+    {
+     /*
+      * Otherwise make sure the hostname we have does not end in a trailing dot.
+      */
+
+      strlcpy(hostname, http->hostname, sizeof(hostname));
+      if ((hostptr = hostname + strlen(hostname) - 1) >= hostname &&
+         *hostptr == '.')
+       *hostptr = '\0';
+    }
+
+    error = SSLSetPeerDomainName(http->tls, hostname, strlen(hostname));
+
+    DEBUG_printf(("4_httpTLSStart: SSLSetPeerDomainName, error=%d", (int)error));
+  }
+
+  if (!error)
+  {
+    int done = 0;                      /* Are we done yet? */
+
+    while (!error && !done)
+    {
+      error = SSLHandshake(http->tls);
+
+      DEBUG_printf(("4_httpTLSStart: SSLHandshake returned %d.", (int)error));
+
+      switch (error)
+      {
+       case noErr :
+           done = 1;
+           break;
+
+       case errSSLWouldBlock :
+           error = noErr;              /* Force a retry */
+           usleep(1000);               /* in 1 millisecond */
+           break;
+
+       case errSSLServerAuthCompleted :
+           error = 0;
+           if (cg->server_cert_cb)
+           {
+             error = httpCopyCredentials(http, &credentials);
+             if (!error)
+             {
+               error = (cg->server_cert_cb)(http, http->tls, credentials,
+                                            cg->server_cert_data);
+               httpFreeCredentials(credentials);
+             }
+
+             DEBUG_printf(("4_httpTLSStart: Server certificate callback "
+                           "returned %d.", (int)error));
+           }
+           break;
+
+       case errSSLClientCertRequested :
+           error = 0;
+
+           if (cg->client_cert_cb)
+           {
+             names = NULL;
+             if (!(error = SSLCopyDistinguishedNames(http->tls, &dn_array)) &&
+                 dn_array)
+             {
+               if ((names = cupsArrayNew(NULL, NULL)) != NULL)
+               {
+                 for (i = 0, count = CFArrayGetCount(dn_array); i < count; i++)
+                 {
+                   data = (CFDataRef)CFArrayGetValueAtIndex(dn_array, i);
+
+                   if ((credential = malloc(sizeof(*credential))) != NULL)
+                   {
+                     credential->datalen = (size_t)CFDataGetLength(data);
+                     if ((credential->data = malloc(credential->datalen)))
+                     {
+                       memcpy((void *)credential->data, CFDataGetBytePtr(data),
+                              credential->datalen);
+                       cupsArrayAdd(names, credential);
+                     }
+                     else
+                       free(credential);
+                   }
+                 }
+               }
+
+               CFRelease(dn_array);
+             }
+
+             if (!error)
+             {
+               error = (cg->client_cert_cb)(http, http->tls, names,
+                                            cg->client_cert_data);
+
+               DEBUG_printf(("4_httpTLSStart: Client certificate callback "
+                             "returned %d.", (int)error));
+             }
+
+             httpFreeCredentials(names);
+           }
+           break;
+
+       case errSSLUnknownRootCert :
+           message = _("Unable to establish a secure connection to host "
+                       "(untrusted certificate).");
+           break;
+
+       case errSSLNoRootCert :
+           message = _("Unable to establish a secure connection to host "
+                       "(self-signed certificate).");
+           break;
+
+       case errSSLCertExpired :
+           message = _("Unable to establish a secure connection to host "
+                       "(expired certificate).");
+           break;
+
+       case errSSLCertNotYetValid :
+           message = _("Unable to establish a secure connection to host "
+                       "(certificate not yet valid).");
+           break;
+
+       case errSSLHostNameMismatch :
+           message = _("Unable to establish a secure connection to host "
+                       "(host name mismatch).");
+           break;
+
+       case errSSLXCertChainInvalid :
+           message = _("Unable to establish a secure connection to host "
+                       "(certificate chain invalid).");
+           break;
+
+       case errSSLConnectionRefused :
+           message = _("Unable to establish a secure connection to host "
+                       "(peer dropped connection before responding).");
+           break;
+
+       default :
+           break;
+      }
+    }
+  }
+
+  if (error)
+  {
+    http->error  = error;
+    http->status = HTTP_STATUS_ERROR;
+    errno        = ECONNREFUSED;
+
+    CFRelease(http->tls);
+    http->tls = NULL;
+
+   /*
+    * If an error string wasn't set by the callbacks use a generic one...
+    */
+
+    if (!message)
+#ifdef HAVE_CSSMERRORSTRING
+      message = cssmErrorString(error);
+#else
+      message = _("Unable to establish a secure connection to host.");
+#endif /* HAVE_CSSMERRORSTRING */
+
+    _cupsSetError(IPP_STATUS_ERROR_CUPS_PKI, message, 1);
+
+    return (-1);
+  }
+
+  return (0);
+}
+
+
+/*
+ * '_httpTLSStop()' - Shut down SSL/TLS on a connection.
+ */
+
+void
+_httpTLSStop(http_t *http)             /* I - HTTP connection */
+{
+  while (SSLClose(http->tls) == errSSLWouldBlock)
+    usleep(1000);
+
+  CFRelease(http->tls);
+
+  if (http->tls_credentials)
+    CFRelease(http->tls_credentials);
+
+  http->tls             = NULL;
+  http->tls_credentials = NULL;
+}
+
+
+/*
+ * '_httpTLSWrite()' - Write to a SSL/TLS connection.
+ */
+
+int                                    /* O - Bytes written */
+_httpTLSWrite(http_t     *http,                /* I - HTTP connection */
+              const char *buf,         /* I - Buffer holding data */
+              int        len)          /* I - Length of buffer */
+{
+  ssize_t      result;                 /* Return value */
+  OSStatus     error;                  /* Error info */
+  size_t       processed;              /* Number of bytes processed */
+
+
+  DEBUG_printf(("2_httpTLSWrite(http=%p, buf=%p, len=%d)", http, buf, len));
+
+  error = SSLWrite(http->tls, buf, (size_t)len, &processed);
+
+  switch (error)
+  {
+    case 0 :
+       result = (int)processed;
+       break;
+
+    case errSSLWouldBlock :
+       if (processed)
+       {
+         result = (int)processed;
+       }
+       else
+       {
+         result = -1;
+         errno  = EINTR;
+       }
+       break;
+
+    case errSSLClosedGraceful :
+    default :
+       if (processed)
+       {
+         result = (int)processed;
+       }
+       else
+       {
+         result = -1;
+         errno  = EPIPE;
+       }
+       break;
+  }
+
+  DEBUG_printf(("3_httpTLSWrite: Returning %d.", (int)result));
+
+  return ((int)result);
+}
+
+
+#ifdef HAVE_SECKEYCHAINOPEN
+/*
+ * 'http_cdsa_copy_server()' - Find and copy server credentials from the keychain.
+ */
+
+static CFArrayRef                      /* O - Array of certificates or NULL */
+http_cdsa_copy_server(
+    const char *common_name)           /* I - Server's hostname */
+{
+  OSStatus             err;            /* Error info */
+  SecIdentitySearchRef search = NULL;  /* Search reference */
+  SecIdentityRef       identity = NULL;/* Identity */
+  CFArrayRef           certificates = NULL;
+                                       /* Certificate array */
+  SecPolicyRef         policy = NULL;  /* Policy ref */
+  CFStringRef          cfcommon_name = NULL;
+                                       /* Server name */
+  CFMutableDictionaryRef query = NULL; /* Query qualifiers */
+  CFArrayRef           list = NULL;    /* Keychain list */
+
+
+  cfcommon_name = CFStringCreateWithCString(kCFAllocatorDefault, common_name, kCFStringEncodingUTF8);
+
+  policy = SecPolicyCreateSSL(1, cfcommon_name);
+
+  if (cfcommon_name)
+    CFRelease(cfcommon_name);
+
+  if (!policy)
+    goto cleanup;
+
+  if (!(query = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks)))
+    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);
+
+  CFRelease(list);
+
+  err = SecItemCopyMatching(query, (CFTypeRef *)&identity);
+
+  _cupsMutexUnlock(&tls_mutex);
+
+  if (err)
+    goto cleanup;
+
+  if (CFGetTypeID(identity) != SecIdentityGetTypeID())
+    goto cleanup;
+
+  if ((certificates = CFArrayCreate(NULL, (const void **)&identity, 1, &kCFTypeArrayCallBacks)) == NULL)
+    goto cleanup;
+
+  cleanup :
+
+  if (search)
+    CFRelease(search);
+  if (identity)
+    CFRelease(identity);
+
+  if (policy)
+    CFRelease(policy);
+  if (query)
+    CFRelease(query);
+
+  return (certificates);
+}
+#endif /* HAVE_SECKEYCHAINOPEN */
+
+
+/*
+ * 'http_cdsa_create_credential()' - Create a single credential in the internal format.
+ */
+
+static SecCertificateRef                       /* O - Certificate */
+http_cdsa_create_credential(
+    http_credential_t *credential)             /* I - Credential */
+{
+  if (!credential)
+    return (NULL);
+
+  return (SecCertificateCreateWithBytes(kCFAllocatorDefault, credential->data, (CFIndex)credential->datalen));
+}
+
+
+/*
+ * 'http_cdsa_default_path()' - Get the default keychain path.
+ */
+
+static const char *                    /* O - Keychain path */
+http_cdsa_default_path(char   *buffer, /* I - Path buffer */
+                       size_t bufsize) /* I - Size of buffer */
+{
+  const char *home = getenv("HOME");   /* HOME environment variable */
+
+
+  if (getuid() && home)
+    snprintf(buffer, bufsize, "%s/Library/Keychains/login.keychain", home);
+  else
+    strlcpy(buffer, "/Library/Keychains/System.keychain", bufsize);
+
+  DEBUG_printf(("1http_cdsa_default_path: Using default path \"%s\".", buffer));
+
+  return (buffer);
+}
+
+
+/*
+ * 'http_cdsa_read()' - Read function for the CDSA library.
+ */
+
+static OSStatus                                /* O  - -1 on error, 0 on success */
+http_cdsa_read(
+    SSLConnectionRef connection,       /* I  - SSL/TLS connection */
+    void             *data,            /* I  - Data buffer */
+    size_t           *dataLength)      /* IO - Number of bytes */
+{
+  OSStatus     result;                 /* Return value */
+  ssize_t      bytes;                  /* Number of bytes read */
+  http_t       *http;                  /* HTTP connection */
+
+
+  http = (http_t *)connection;
+
+  if (!http->blocking)
+  {
+   /*
+    * Make sure we have data before we read...
+    */
+
+    while (!_httpWait(http, http->wait_value, 0))
+    {
+      if (http->timeout_cb && (*http->timeout_cb)(http, http->timeout_data))
+       continue;
+
+      http->error = ETIMEDOUT;
+      return (-1);
+    }
+  }
+
+  do
+  {
+    bytes = recv(http->fd, data, *dataLength, 0);
+  }
+  while (bytes == -1 && (errno == EINTR || errno == EAGAIN));
+
+  if ((size_t)bytes == *dataLength)
+  {
+    result = 0;
+  }
+  else if (bytes > 0)
+  {
+    *dataLength = (size_t)bytes;
+    result = errSSLWouldBlock;
+  }
+  else
+  {
+    *dataLength = 0;
+
+    if (bytes == 0)
+      result = errSSLClosedGraceful;
+    else if (errno == EAGAIN)
+      result = errSSLWouldBlock;
+    else
+      result = errSSLClosedAbort;
+  }
+
+  return (result);
+}
+
+
+/*
+ * 'http_cdsa_set_credentials()' - Set the TLS credentials.
+ */
+
+static int                             /* O - Status of connection */
+http_cdsa_set_credentials(http_t *http)        /* I - HTTP connection */
+{
+  _cups_globals_t *cg = _cupsGlobals();        /* Pointer to library globals */
+  OSStatus             error = 0;      /* Error code */
+  http_tls_credentials_t credentials = NULL;
+                                       /* TLS credentials */
+
+
+  DEBUG_printf(("7http_tls_set_credentials(%p)", http));
+
+ /*
+  * Prefer connection specific credentials...
+  */
+
+  if ((credentials = http->tls_credentials) == NULL)
+    credentials = cg->tls_credentials;
+
+  if (credentials)
+  {
+    error = SSLSetCertificate(http->tls, credentials);
+    DEBUG_printf(("4http_tls_set_credentials: SSLSetCertificate, error=%d",
+                 (int)error));
+  }
+  else
+    DEBUG_puts("4http_tls_set_credentials: No credentials to set.");
+
+  return (error);
+}
+
+
+/*
+ * 'http_cdsa_write()' - Write function for the CDSA library.
+ */
+
+static OSStatus                                /* O  - -1 on error, 0 on success */
+http_cdsa_write(
+    SSLConnectionRef connection,       /* I  - SSL/TLS connection */
+    const void       *data,            /* I  - Data buffer */
+    size_t           *dataLength)      /* IO - Number of bytes */
+{
+  OSStatus     result;                 /* Return value */
+  ssize_t      bytes;                  /* Number of bytes read */
+  http_t       *http;                  /* HTTP connection */
+
+
+  http = (http_t *)connection;
+
+  do
+  {
+    bytes = write(http->fd, data, *dataLength);
+  }
+  while (bytes == -1 && (errno == EINTR || errno == EAGAIN));
+
+  if ((size_t)bytes == *dataLength)
+  {
+    result = 0;
+  }
+  else if (bytes >= 0)
+  {
+    *dataLength = (size_t)bytes;
+    result = errSSLWouldBlock;
+  }
+  else
+  {
+    *dataLength = 0;
+
+    if (errno == EAGAIN)
+      result = errSSLWouldBlock;
+    else
+      result = errSSLClosedAbort;
+  }
+
+  return (result);
+}
+
+
+/*
+ * End of "$Id: tls-darwin.c 12029 2014-07-15 18:59:26Z msweet $".
+ */
diff --git a/cups/tls-gnutls.c b/cups/tls-gnutls.c
new file mode 100644 (file)
index 0000000..c693272
--- /dev/null
@@ -0,0 +1,1293 @@
+/*
+ * "$Id: tls-gnutls.c 12050 2014-07-18 16:51:12Z msweet $"
+ *
+ * TLS support code for CUPS using GNU TLS.
+ *
+ * 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/".
+ *
+ * This file is subject to the Apple OS-Developed Software exception.
+ */
+
+
+/*
+ * Include necessary headers...
+ */
+
+#include <sys/stat.h>
+
+
+/*
+ * Local globals...
+ */
+
+static int             tls_auto_create = 0;
+                                       /* Auto-create self-signed certs? */
+static char            *tls_common_name = NULL;
+                                       /* Default common name */
+static char            *tls_keypath = NULL;
+                                       /* Server cert keychain path */
+static _cups_mutex_t   tls_mutex = _CUPS_MUTEX_INITIALIZER;
+                                       /* Mutex for keychain/certs */
+
+
+/*
+ * Local functions...
+ */
+
+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 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);
+
+
+/*
+ * 'cupsMakeServerCredentials()' - Make a self-signed certificate and private key pair.
+ *
+ * @since CUPS 2.0@
+ */
+
+int                                    /* O - 1 on success, 0 on failure */
+cupsMakeServerCredentials(
+    const char *path,                  /* I - Path to keychain/directory */
+    const char *common_name,           /* I - Common name */
+    int        num_alt_names,          /* I - Number of subject alternate names */
+    const char **alt_names,            /* I - Subject Alternate Names */
+    time_t     expiration_date)                /* I - Expiration date */
+{
+  gnutls_x509_crt_t    crt;            /* Self-signed certificate */
+  gnutls_x509_privkey_t        key;            /* Encryption private key */
+  char                 temp[1024],     /* Temporary directory name */
+                       crtfile[1024],  /* Certificate filename */
+                       keyfile[1024];  /* Private key filename */
+  cups_lang_t          *language;      /* Default language info */
+  cups_file_t          *fp;            /* Key/cert file */
+  unsigned char                buffer[8192];   /* Buffer for x509 data */
+  size_t               bytes;          /* Number of bytes of data */
+  unsigned char                serial[4];      /* Serial number buffer */
+  time_t               curtime;        /* Current time */
+  int                  result;         /* Result of GNU TLS calls */
+
+
+  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));
+
+ /*
+  * Filenames...
+  */
+
+  if (!path)
+    path = http_gnutls_default_path(temp, sizeof(temp));
+
+  if (!path || !common_name)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
+    return (0);
+  }
+
+  http_gnutls_make_path(crtfile, sizeof(crtfile), path, common_name, "crt");
+  http_gnutls_make_path(keyfile, sizeof(keyfile), path, common_name, "key");
+
+ /*
+  * Create the encryption key...
+  */
+
+  DEBUG_puts("1cupsMakeServerCredentials: Creating key pair.");
+
+  gnutls_x509_privkey_init(&key);
+  gnutls_x509_privkey_generate(key, GNUTLS_PK_RSA, 2048, 0);
+
+  DEBUG_puts("1cupsMakeServerCredentials: Key pair created.");
+
+ /*
+  * Save it...
+  */
+
+  bytes = sizeof(buffer);
+
+  if ((result = gnutls_x509_privkey_export(key, GNUTLS_X509_FMT_PEM, buffer, &bytes)) < 0)
+  {
+    DEBUG_printf(("1cupsMakeServerCredentials: Unable to export private key: %s", gnutls_strerror(result)));
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, gnutls_strerror(result), 0);
+    gnutls_x509_privkey_deinit(key);
+    return (0);
+  }
+  else if ((fp = cupsFileOpen(keyfile, "w")) != NULL)
+  {
+    DEBUG_printf(("1cupsMakeServerCredentials: Writing private key to \"%s\".", keyfile));
+    cupsFileWrite(fp, (char *)buffer, bytes);
+    cupsFileClose(fp);
+  }
+  else
+  {
+    DEBUG_printf(("1cupsMakeServerCredentials: Unable to create private key file \"%s\": %s", keyfile, strerror(errno)));
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
+    gnutls_x509_privkey_deinit(key);
+    return (0);
+  }
+
+ /*
+  * Create the self-signed certificate...
+  */
+
+  DEBUG_puts("1cupsMakeServerCredentials: Generating self-signed X.509 certificate.");
+
+  language  = cupsLangDefault();
+  curtime   = time(NULL);
+  serial[0] = curtime >> 24;
+  serial[1] = curtime >> 16;
+  serial[2] = curtime >> 8;
+  serial[3] = curtime;
+
+  gnutls_x509_crt_init(&crt);
+  if (strlen(language->language) == 5)
+    gnutls_x509_crt_set_dn_by_oid(crt, GNUTLS_OID_X520_COUNTRY_NAME, 0,
+                                  language->language + 3, 2);
+  else
+    gnutls_x509_crt_set_dn_by_oid(crt, GNUTLS_OID_X520_COUNTRY_NAME, 0,
+                                  "US", 2);
+  gnutls_x509_crt_set_dn_by_oid(crt, GNUTLS_OID_X520_COMMON_NAME, 0,
+                                common_name, strlen(common_name));
+  gnutls_x509_crt_set_dn_by_oid(crt, GNUTLS_OID_X520_ORGANIZATION_NAME, 0,
+                                common_name, strlen(common_name));
+  gnutls_x509_crt_set_dn_by_oid(crt, GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME,
+                                0, "Unknown", 7);
+  gnutls_x509_crt_set_dn_by_oid(crt, GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME, 0,
+                                "Unknown", 7);
+  gnutls_x509_crt_set_dn_by_oid(crt, GNUTLS_OID_X520_LOCALITY_NAME, 0,
+                                "Unknown", 7);
+/*  gnutls_x509_crt_set_dn_by_oid(crt, GNUTLS_OID_PKCS9_EMAIL, 0,
+                                ServerAdmin, strlen(ServerAdmin));*/
+  gnutls_x509_crt_set_key(crt, key);
+  gnutls_x509_crt_set_serial(crt, serial, sizeof(serial));
+  gnutls_x509_crt_set_activation_time(crt, curtime);
+  gnutls_x509_crt_set_expiration_time(crt, curtime + 10 * 365 * 86400);
+  gnutls_x509_crt_set_ca_status(crt, 0);
+  if (num_alt_names > 0)
+    gnutls_x509_crt_set_subject_alternative_name(crt, GNUTLS_SAN_DNSNAME, alt_names[0]);
+  gnutls_x509_crt_set_key_purpose_oid(crt, GNUTLS_KP_TLS_WWW_SERVER, 0);
+  gnutls_x509_crt_set_key_usage(crt, GNUTLS_KEY_KEY_ENCIPHERMENT);
+  gnutls_x509_crt_set_version(crt, 3);
+
+  bytes = sizeof(buffer);
+  if (gnutls_x509_crt_get_key_id(crt, 0, buffer, &bytes) >= 0)
+    gnutls_x509_crt_set_subject_key_id(crt, buffer, bytes);
+
+  gnutls_x509_crt_sign(crt, crt, key);
+
+ /*
+  * Save it...
+  */
+
+  bytes = sizeof(buffer);
+  if ((result = gnutls_x509_crt_export(crt, GNUTLS_X509_FMT_PEM, buffer, &bytes)) < 0)
+  {
+    DEBUG_printf(("1cupsMakeServerCredentials: Unable to export public key and X.509 certificate: %s", gnutls_strerror(result)));
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, gnutls_strerror(result), 0);
+    gnutls_x509_crt_deinit(crt);
+    gnutls_x509_privkey_deinit(key);
+    return (0);
+  }
+  else if ((fp = cupsFileOpen(crtfile, "w")) != NULL)
+  {
+    DEBUG_printf(("1cupsMakeServerCredentials: Writing public key and X.509 certificate to \"%s\".", crtfile));
+    cupsFileWrite(fp, (char *)buffer, bytes);
+    cupsFileClose(fp);
+  }
+  else
+  {
+    DEBUG_printf(("1cupsMakeServerCredentials: Unable to create public key and X.509 certificate file \"%s\": %s", crtfile, strerror(errno)));
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0);
+    gnutls_x509_crt_deinit(crt);
+    gnutls_x509_privkey_deinit(key);
+    return (0);
+  }
+
+ /*
+  * Cleanup...
+  */
+
+  gnutls_x509_crt_deinit(crt);
+  gnutls_x509_privkey_deinit(key);
+
+  DEBUG_puts("1cupsMakeServerCredentials: Successfully created credentials.");
+
+  return (1);
+}
+
+
+/*
+ * 'cupsSetServerCredentials()' - Set the default server credentials.
+ *
+ * Note: The server credentials are used by all threads in the running process.
+ * This function is threadsafe.
+ *
+ * @since CUPS 2.0@
+ */
+
+int                                    /* O - 1 on success, 0 on failure */
+cupsSetServerCredentials(
+    const char *path,                  /* I - Path to keychain/directory */
+    const char *common_name,           /* I - Default common name for server */
+    int        auto_create)            /* I - 1 = automatically create self-signed certificates */
+{
+  char temp[1024];                     /* Default path buffer */
+
+
+  DEBUG_printf(("cupsSetServerCredentials(path=\"%s\", common_name=\"%s\", auto_create=%d)", path, common_name, auto_create));
+
+ /*
+  * Use defaults as needed...
+  */
+
+  if (!path)
+    path = http_gnutls_default_path(temp, sizeof(temp));
+
+ /*
+  * Range check input...
+  */
+
+  if (!path || !common_name)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
+    return (0);
+  }
+
+  _cupsMutexLock(&tls_mutex);
+
+ /*
+  * Free old values...
+  */
+
+  if (tls_keypath)
+    _cupsStrFree(tls_keypath);
+
+  if (tls_common_name)
+    _cupsStrFree(tls_common_name);
+
+ /*
+  * Save the new values...
+  */
+
+  tls_keypath     = _cupsStrAlloc(path);
+  tls_auto_create = auto_create;
+  tls_common_name = _cupsStrAlloc(common_name);
+
+  _cupsMutexUnlock(&tls_mutex);
+
+  return (1);
+}
+
+
+/*
+ * 'httpCopyCredentials()' - Copy the credentials associated with the peer in
+ *                           an encrypted connection.
+ *
+ * @since CUPS 1.5/OS X 10.7@
+ */
+
+int                                    /* O - Status of call (0 = success) */
+httpCopyCredentials(
+    http_t      *http,                 /* I - Connection to server */
+    cups_array_t **credentials)                /* O - Array of credentials */
+{
+  unsigned             count;          /* Number of certificates */
+  const gnutls_datum_t *certs;         /* Certificates */
+
+
+  DEBUG_printf(("httpCopyCredentials(http=%p, credentials=%p)", http, credentials));
+
+  if (credentials)
+    *credentials = NULL;
+
+  if (!http || !http->tls || !credentials)
+    return (-1);
+
+  *credentials = cupsArrayNew(NULL, NULL);
+  certs        = gnutls_certificate_get_peers(http->tls, &count);
+
+  DEBUG_printf(("1httpCopyCredentials: certs=%p, count=%u", certs, count));
+
+  if (certs && count)
+  {
+    while (count > 0)
+    {
+      httpAddCredential(*credentials, certs->data, certs->size);
+      certs ++;
+      count --;
+    }
+  }
+
+  return (0);
+}
+
+
+/*
+ * '_httpCreateCredentials()' - Create credentials in the internal format.
+ */
+
+http_tls_credentials_t                 /* O - Internal credentials */
+_httpCreateCredentials(
+    cups_array_t *credentials)         /* I - Array of credentials */
+{
+  (void)credentials;
+
+  return (NULL);
+}
+
+
+/*
+ * '_httpFreeCredentials()' - Free internal credentials.
+ */
+
+void
+_httpFreeCredentials(
+    http_tls_credentials_t credentials)        /* I - Internal credentials */
+{
+  (void)credentials;
+}
+
+
+/*
+ * 'httpCredentialsAreValidForName()' - Return whether the credentials are valid for the given name.
+ *
+ * @since CUPS 2.0@
+ */
+
+int                                    /* O - 1 if valid, 0 otherwise */
+httpCredentialsAreValidForName(
+    cups_array_t *credentials,         /* I - Credentials */
+    const char   *common_name)         /* I - Name to check */
+{
+  gnutls_x509_crt_t    cert;           /* Certificate */
+  int                  result = 0;     /* Result */
+
+
+  cert = http_gnutls_create_credential((http_credential_t *)cupsArrayFirst(credentials));
+  if (cert)
+  {
+    result = gnutls_x509_crt_check_hostname(cert, common_name) != 0;
+    gnutls_x509_crt_deinit(cert);
+  }
+
+  return (result);
+}
+
+
+/*
+ * 'httpCredentialsGetTrust()' - Return the trust of credentials.
+ *
+ * @since CUPS 2.0@
+ */
+
+http_trust_t                           /* O - Level of trust */
+httpCredentialsGetTrust(
+    cups_array_t *credentials,         /* I - Credentials */
+    const char   *common_name)         /* I - Common name for trust lookup */
+{
+  http_trust_t         trust = HTTP_TRUST_OK;
+                                       /* Trusted? */
+  gnutls_x509_crt_t    cert;           /* Certificate */
+  cups_array_t         *tcreds = NULL; /* Trusted credentials */
+  _cups_globals_t      *cg = _cupsGlobals();
+                                       /* Per-thread globals */
+
+
+  if (!common_name)
+    return (HTTP_TRUST_UNKNOWN);
+
+  if ((cert = http_gnutls_create_credential((http_credential_t *)cupsArrayFirst(credentials))) == NULL)
+    return (HTTP_TRUST_UNKNOWN);
+
+ /*
+  * Look this common name up in the default keychains...
+  */
+
+  httpLoadCredentials(NULL, &tcreds, common_name);
+
+  if (tcreds)
+  {
+    char       credentials_str[1024],  /* String for incoming credentials */
+               tcreds_str[1024];       /* String for saved credentials */
+
+    httpCredentialsString(credentials, credentials_str, sizeof(credentials_str));
+    httpCredentialsString(tcreds, tcreds_str, sizeof(tcreds_str));
+
+    if (strcmp(credentials_str, tcreds_str))
+    {
+     /*
+      * Credentials don't match, let's look at the expiration date of the new
+      * credentials and allow if the new ones have a later expiration...
+      */
+
+      if (httpCredentialsGetExpiration(credentials) <= httpCredentialsGetExpiration(tcreds) ||
+          !httpCredentialsAreValidForName(credentials, common_name))
+      {
+       /*
+        * Either the new credentials are not newly issued, or the common name
+       * does not match the issued certificate...
+       */
+
+        trust = HTTP_TRUST_INVALID;
+      }
+      else if (httpCredentialsGetExpiration(tcreds) < time(NULL))
+      {
+       /*
+        * Save the renewed credentials...
+       */
+
+       trust = HTTP_TRUST_RENEWED;
+
+        httpSaveCredentials(NULL, credentials, common_name);
+      }
+    }
+
+    httpFreeCredentials(tcreds);
+  }
+  else if (cg->validate_certs && !httpCredentialsAreValidForName(credentials, common_name))
+    trust = HTTP_TRUST_INVALID;
+
+  if (trust == HTTP_TRUST_OK && !cg->expired_certs)
+  {
+    time_t     curtime;                /* Current date/time */
+
+    time(&curtime);
+    if (curtime < gnutls_x509_crt_get_activation_time(cert) ||
+        curtime > gnutls_x509_crt_get_expiration_time(cert))
+      trust = HTTP_TRUST_EXPIRED;
+  }
+
+  if (trust == HTTP_TRUST_OK && !cg->any_root && cupsArrayCount(credentials) == 1)
+    trust = HTTP_TRUST_INVALID;
+
+  gnutls_x509_crt_deinit(cert);
+
+  return (trust);
+}
+
+
+/*
+ * 'httpCredentialsGetExpiration()' - Return the expiration date of the credentials.
+ *
+ * @since CUPS 2.0@
+ */
+
+time_t                                 /* O - Expiration date of credentials */
+httpCredentialsGetExpiration(
+    cups_array_t *credentials)         /* I - Credentials */
+{
+  gnutls_x509_crt_t    cert;           /* Certificate */
+  time_t               result = 0;     /* Result */
+
+
+  cert = http_gnutls_create_credential((http_credential_t *)cupsArrayFirst(credentials));
+  if (cert)
+  {
+    result = gnutls_x509_crt_get_expiration_time(cert);
+    gnutls_x509_crt_deinit(cert);
+  }
+
+  return (result);
+}
+
+
+/*
+ * 'httpCredentialsString()' - Return a string representing the credentials.
+ *
+ * @since CUPS 2.0@
+ */
+
+size_t                                 /* O - Total size of credentials string */
+httpCredentialsString(
+    cups_array_t *credentials,         /* I - Credentials */
+    char         *buffer,              /* I - Buffer or @code NULL@ */
+    size_t       bufsize)              /* I - Size of buffer */
+{
+  http_credential_t    *first;         /* First certificate */
+  gnutls_x509_crt_t    cert;           /* Certificate */
+
+
+  DEBUG_printf(("httpCredentialsString(credentials=%p, buffer=%p, bufsize=" CUPS_LLFMT ")", credentials, buffer, CUPS_LLCAST bufsize));
+
+  if (!buffer)
+    return (0);
+
+  if (buffer && bufsize > 0)
+    *buffer = '\0';
+
+  if ((first = (http_credential_t *)cupsArrayFirst(credentials)) != NULL &&
+      (cert = http_gnutls_create_credential(first)) != NULL)
+  {
+    char               name[256];      /* Common name associated with cert */
+    size_t             namelen;        /* Length of name */
+    time_t             expiration;     /* Expiration date of cert */
+    _cups_md5_state_t  md5_state;      /* MD5 state */
+    unsigned char      md5_digest[16]; /* MD5 result */
+
+    namelen = sizeof(name) - 1;
+    if (gnutls_x509_crt_get_dn_by_oid(cert, GNUTLS_OID_X520_COMMON_NAME, 0, 0, name, &namelen) >= 0)
+      name[namelen] = '\0';
+    else
+      strlcpy(name, "unknown", sizeof(name));
+
+    expiration = gnutls_x509_crt_get_expiration_time(cert);
+
+    _cupsMD5Init(&md5_state);
+    _cupsMD5Append(&md5_state, first->data, (int)first->datalen);
+    _cupsMD5Finish(&md5_state, md5_digest);
+
+    snprintf(buffer, bufsize, "%s / %s / %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", name, httpGetDateString(expiration), md5_digest[0], md5_digest[1], md5_digest[2], md5_digest[3], md5_digest[4], md5_digest[5], md5_digest[6], md5_digest[7], md5_digest[8], md5_digest[9], md5_digest[10], md5_digest[11], md5_digest[12], md5_digest[13], md5_digest[14], md5_digest[15]);
+
+    gnutls_x509_crt_deinit(cert);
+  }
+
+  DEBUG_printf(("1httpCredentialsString: Returning \"%s\".", buffer));
+
+  return (strlen(buffer));
+}
+
+
+/*
+ * 'httpLoadCredentials()' - Load X.509 credentials from a keychain file.
+ *
+ * @since CUPS 2.0@
+ */
+
+int                                    /* O - 0 on success, -1 on error */
+httpLoadCredentials(
+    const char   *path,                        /* I  - Keychain/PKCS#12 path */
+    cups_array_t **credentials,                /* IO - Credentials */
+    const char   *common_name)         /* I  - Common name for credentials */
+{
+  cups_file_t          *fp;            /* Certificate file */
+  char                 filename[1024], /* filename.crt */
+                       temp[1024],     /* Temporary string */
+                       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 */
+
+
+  if (!credentials || !common_name)
+    return (-1);
+
+  if (!path)
+    path = http_gnutls_default_path(temp, sizeof(temp));
+  if (!path)
+    return (-1);
+
+  http_gnutls_make_path(filename, sizeof(filename), path, common_name, "crt");
+
+  if ((fp = cupsFileOpen(filename, "r")) == NULL)
+    return (-1);
+
+  while (cupsFileGets(fp, line, sizeof(line)))
+  {
+    if (!strcmp(line, "-----BEGIN CERTIFICATE-----"))
+    {
+      if (num_data)
+      {
+       /*
+       * Missing END CERTIFICATE...
+       */
+
+        httpFreeCredentials(*credentials);
+       *credentials = NULL;
+        break;
+      }
+    }
+    else if (!strcmp(line, "-----END CERTIFICATE-----"))
+    {
+      if (!num_data)
+      {
+       /*
+       * Missing data...
+       */
+
+        httpFreeCredentials(*credentials);
+       *credentials = NULL;
+        break;
+      }
+
+      if (!*credentials)
+        *credentials = cupsArrayNew(NULL, NULL);
+
+      if (httpAddCredential(*credentials, data, num_data))
+      {
+        httpFreeCredentials(*credentials);
+       *credentials = NULL;
+        break;
+      }
+
+      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)
+       {
+         httpFreeCredentials(*credentials);
+         *credentials = NULL;
+         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 (num_data)
+  {
+   /*
+    * Missing END CERTIFICATE...
+    */
+
+    httpFreeCredentials(*credentials);
+    *credentials = NULL;
+  }
+
+  if (data)
+    free(data);
+
+  return (*credentials ? 0 : -1);
+}
+
+
+/*
+ * 'httpSaveCredentials()' - Save X.509 credentials to a keychain file.
+ *
+ * @since CUPS 2.0@
+ */
+
+int                                    /* O - -1 on error, 0 on success */
+httpSaveCredentials(
+    const char   *path,                        /* I - Keychain/PKCS#12 path */
+    cups_array_t *credentials,         /* I - Credentials */
+    const char   *common_name)         /* I - Common name for credentials */
+{
+  cups_file_t          *fp;            /* Certificate file */
+  char                 filename[1024], /* filename.crt */
+                       nfilename[1024],/* filename.crt.N */
+                       temp[1024],     /* Temporary string */
+                       line[256];      /* Base64-encoded line */
+  const unsigned char  *ptr;           /* Pointer into certificate */
+  ssize_t              remaining;      /* Bytes left */
+  http_credential_t    *cred;          /* Current credential */
+
+
+  if (!credentials || !common_name)
+    return (-1);
+
+  if (!path)
+    path = http_gnutls_default_path(temp, sizeof(temp));
+  if (!path)
+    return (-1);
+
+  http_gnutls_make_path(filename, sizeof(filename), path, common_name, "crt");
+  snprintf(nfilename, sizeof(nfilename), "%s.N", filename);
+
+  if ((fp = cupsFileOpen(nfilename, "w")) == NULL)
+    return (-1);
+
+  fchmod(cupsFileNumber(fp), 0600);
+
+  for (cred = (http_credential_t *)cupsArrayFirst(credentials);
+       cred;
+       cred = (http_credential_t *)cupsArrayNext(credentials))
+  {
+    cupsFilePuts(fp, "-----BEGIN CERTIFICATE-----\n");
+    for (ptr = cred->data, remaining = (ssize_t)cred->datalen; remaining > 0; remaining -= 45, ptr += 45)
+    {
+      httpEncode64_2(line, sizeof(line), (char *)ptr, remaining > 45 ? 45 : remaining);
+      cupsFilePrintf(fp, "%s\n", line);
+    }
+    cupsFilePuts(fp, "-----END CERTIFICATE-----\n");
+  }
+
+  cupsFileClose(fp);
+
+  return (rename(nfilename, filename));
+}
+
+
+/*
+ * 'http_gnutls_create_credential()' - Create a single credential in the internal format.
+ */
+
+static gnutls_x509_crt_t                       /* O - Certificate */
+http_gnutls_create_credential(
+    http_credential_t *credential)             /* I - Credential */
+{
+  int                  result;                 /* Result from GNU TLS */
+  gnutls_x509_crt_t    cert;                   /* Certificate */
+  gnutls_datum_t       datum;                  /* Data record */
+
+
+  DEBUG_printf(("3http_gnutls_create_credential(credential=%p)", credential));
+
+  if (!credential)
+    return (NULL);
+
+  if ((result = gnutls_x509_crt_init(&cert)) < 0)
+  {
+    DEBUG_printf(("4http_gnutls_create_credential: init error: %s", gnutls_strerror(result)));
+    return (NULL);
+  }
+
+  datum.data = credential->data;
+  datum.size = credential->datalen;
+
+  if ((result = gnutls_x509_crt_import(cert, &datum, GNUTLS_X509_FMT_DER)) < 0)
+  {
+    DEBUG_printf(("4http_gnutls_create_credential: import error: %s", gnutls_strerror(result)));
+
+    gnutls_x509_crt_deinit(cert);
+    return (NULL);
+  }
+
+  return (cert);
+}
+
+
+/*
+ * 'http_gnutls_default_path()' - Get the default credential store path.
+ */
+
+static const char *                    /* O - Path or NULL on error */
+http_gnutls_default_path(char   *buffer,/* I - Path buffer */
+                         size_t bufsize)/* I - Size of path buffer */
+{
+  const char *home = getenv("HOME");   /* HOME environment variable */
+
+
+  if (getuid() && home)
+  {
+    snprintf(buffer, bufsize, "%s/.cups", home);
+    if (access(buffer, 0))
+    {
+      DEBUG_printf(("1http_gnutls_default_path: Making directory \"%s\".", buffer));
+      if (mkdir(buffer, 0700))
+      {
+        DEBUG_printf(("1http_gnutls_default_path: Failed to make directory: %s", strerror(errno)));
+        return (NULL);
+      }
+    }
+
+    snprintf(buffer, bufsize, "%s/.cups/ssl", home);
+    if (access(buffer, 0))
+    {
+      DEBUG_printf(("1http_gnutls_default_path: Making directory \"%s\".", buffer));
+      if (mkdir(buffer, 0700))
+      {
+        DEBUG_printf(("1http_gnutls_default_path: Failed to make directory: %s", strerror(errno)));
+        return (NULL);
+      }
+    }
+  }
+  else
+    strlcpy(buffer, CUPS_SERVERROOT "/ssl", bufsize);
+
+  DEBUG_printf(("1http_gnutls_default_path: Using default path \"%s\".", buffer));
+
+  return (buffer);
+}
+
+
+/*
+ * 'http_gnutls_make_path()' - Format a filename for a certificate or key file.
+ */
+
+static const char *                    /* O - Filename */
+http_gnutls_make_path(
+    char       *buffer,                        /* I - Filename buffer */
+    size_t     bufsize,                        /* I - Size of buffer */
+    const char *dirname,               /* I - Directory */
+    const char *filename,              /* I - Filename (usually hostname) */
+    const char *ext)                   /* I - Extension */
+{
+  char *bufptr,                        /* Pointer into buffer */
+       *bufend = buffer + bufsize - 1; /* End of buffer */
+
+
+  snprintf(buffer, bufsize, "%s/", dirname);
+  bufptr = buffer + strlen(buffer);
+
+  while (*filename && bufptr < bufend)
+  {
+    if (_cups_isalnum(*filename) || *filename == '-' || *filename == '.')
+      *bufptr++ = *filename;
+    else
+      *bufptr++ = '_';
+
+    filename ++;
+  }
+
+  if (bufptr < bufend)
+    *bufptr++ = '.';
+
+  strlcpy(bufptr, ext, (size_t)(bufend - bufptr + 1));
+
+  return (buffer);
+}
+
+
+/*
+ * 'http_gnutls_read()' - Read function for the GNU TLS library.
+ */
+
+static ssize_t                         /* O - Number of bytes read or -1 on error */
+http_gnutls_read(
+    gnutls_transport_ptr_t ptr,                /* I - Connection to server */
+    void                   *data,      /* I - Buffer */
+    size_t                 length)     /* I - Number of bytes to read */
+{
+  http_t       *http;                  /* HTTP connection */
+  ssize_t      bytes;                  /* Bytes read */
+
+
+  DEBUG_printf(("6http_gnutls_read(ptr=%p, data=%p, length=%d)", ptr, data, (int)length));
+
+  http = (http_t *)ptr;
+
+  if (!http->blocking)
+  {
+   /*
+    * Make sure we have data before we read...
+    */
+
+    while (!_httpWait(http, http->wait_value, 0))
+    {
+      if (http->timeout_cb && (*http->timeout_cb)(http, http->timeout_data))
+       continue;
+
+      http->error = ETIMEDOUT;
+      return (-1);
+    }
+  }
+
+  bytes = recv(http->fd, data, length, 0);
+  DEBUG_printf(("6http_gnutls_read: bytes=%d", (int)bytes));
+  return (bytes);
+}
+
+
+/*
+ * 'http_gnutls_write()' - Write function for the GNU TLS library.
+ */
+
+static ssize_t                         /* O - Number of bytes written or -1 on error */
+http_gnutls_write(
+    gnutls_transport_ptr_t ptr,                /* I - Connection to server */
+    const void             *data,      /* I - Data buffer */
+    size_t                 length)     /* I - Number of bytes to write */
+{
+  ssize_t bytes;                       /* Bytes written */
+
+
+  DEBUG_printf(("6http_gnutls_write(ptr=%p, data=%p, length=%d)", ptr, data,
+                (int)length));
+  bytes = send(((http_t *)ptr)->fd, data, length, 0);
+  DEBUG_printf(("http_gnutls_write: bytes=%d", (int)bytes));
+
+  return (bytes);
+}
+
+
+/*
+ * '_httpTLSInitialize()' - Initialize the TLS stack.
+ */
+
+void
+_httpTLSInitialize(void)
+{
+ /*
+  * Initialize GNU TLS...
+  */
+
+  gnutls_global_init();
+}
+
+
+/*
+ * '_httpTLSPending()' - Return the number of pending TLS-encrypted bytes.
+ */
+
+size_t                                 /* O - Bytes available */
+_httpTLSPending(http_t *http)          /* I - HTTP connection */
+{
+  return (gnutls_record_check_pending(http->tls));
+}
+
+
+/*
+ * '_httpTLSRead()' - Read from a SSL/TLS connection.
+ */
+
+int                                    /* O - Bytes read */
+_httpTLSRead(http_t *http,             /* I - Connection to server */
+            char   *buf,               /* I - Buffer to store data */
+            int    len)                /* I - Length of buffer */
+{
+  ssize_t      result;                 /* Return value */
+
+
+  result = gnutls_record_recv(http->tls, buf, (size_t)len);
+
+  if (result < 0 && !errno)
+  {
+   /*
+    * Convert GNU TLS error to errno value...
+    */
+
+    switch (result)
+    {
+      case GNUTLS_E_INTERRUPTED :
+         errno = EINTR;
+         break;
+
+      case GNUTLS_E_AGAIN :
+          errno = EAGAIN;
+          break;
+
+      default :
+          errno = EPIPE;
+          break;
+    }
+
+    result = -1;
+  }
+
+  return ((int)result);
+}
+
+
+/*
+ * '_httpTLSSetCredentials()' - Set the TLS credentials.
+ */
+
+int                                    /* O - Status of connection */
+_httpTLSSetCredentials(http_t *http)   /* I - Connection to server */
+{
+  (void)http;
+
+  return (0);
+}
+
+
+/*
+ * '_httpTLSStart()' - Set up SSL/TLS support on a connection.
+ */
+
+int                                    /* O - 0 on success, -1 on failure */
+_httpTLSStart(http_t *http)            /* I - Connection to server */
+{
+  char                 hostname[256],  /* Hostname */
+                       *hostptr;       /* Pointer into hostname */
+  int                  status;         /* Status of handshake */
+  gnutls_certificate_credentials_t *credentials;
+                                       /* TLS credentials */
+
+
+  DEBUG_printf(("7_httpTLSStart(http=%p)", http));
+
+  if (http->mode == _HTTP_MODE_SERVER && !tls_keypath)
+  {
+    DEBUG_puts("4_httpTLSStart: cupsSetServerCredentials not called.");
+    http->error  = errno = EINVAL;
+    http->status = HTTP_STATUS_ERROR;
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Server credentials not set."), 1);
+
+    return (-1);
+  }
+
+  credentials = (gnutls_certificate_credentials_t *)
+                    malloc(sizeof(gnutls_certificate_credentials_t));
+  if (credentials == NULL)
+  {
+    DEBUG_printf(("8_httpStartTLS: Unable to allocate credentials: %s",
+                  strerror(errno)));
+    http->error  = errno;
+    http->status = HTTP_STATUS_ERROR;
+    _cupsSetHTTPError(HTTP_STATUS_ERROR);
+
+    return (-1);
+  }
+
+  gnutls_certificate_allocate_credentials(credentials);
+  status = gnutls_init(&http->tls, http->mode == _HTTP_MODE_CLIENT ? GNUTLS_CLIENT : GNUTLS_SERVER);
+  if (!status)
+    status = gnutls_set_default_priority(http->tls);
+
+  if (status)
+  {
+    http->error  = EIO;
+    http->status = HTTP_STATUS_ERROR;
+
+    DEBUG_printf(("4_httpTLSStart: Unable to initialize common TLS parameters: %s", gnutls_strerror(status)));
+    _cupsSetError(IPP_STATUS_ERROR_CUPS_PKI, gnutls_strerror(status), 0);
+
+    gnutls_deinit(http->tls);
+    gnutls_certificate_free_credentials(*credentials);
+    free(credentials);
+    http->tls = NULL;
+
+    return (-1);
+  }
+
+  if (http->mode == _HTTP_MODE_CLIENT)
+  {
+   /*
+    * Client: get the hostname to use for TLS...
+    */
+
+    if (httpAddrLocalhost(http->hostaddr))
+    {
+      strlcpy(hostname, "localhost", sizeof(hostname));
+    }
+    else
+    {
+     /*
+      * Otherwise make sure the hostname we have does not end in a trailing dot.
+      */
+
+      strlcpy(hostname, http->hostname, sizeof(hostname));
+      if ((hostptr = hostname + strlen(hostname) - 1) >= hostname &&
+         *hostptr == '.')
+       *hostptr = '\0';
+    }
+
+    status = gnutls_server_name_set(http->tls, GNUTLS_NAME_DNS, hostname, strlen(hostname));
+  }
+  else
+  {
+   /*
+    * Server: get certificate and private key...
+    */
+
+    char       crtfile[1024],          /* Certificate file */
+               keyfile[1024];          /* Private key file */
+    int                have_creds = 0;         /* Have credentials? */
+
+
+    if (http->fields[HTTP_FIELD_HOST][0])
+    {
+     /*
+      * Use hostname for TLS upgrade...
+      */
+
+      strlcpy(hostname, http->fields[HTTP_FIELD_HOST], sizeof(hostname));
+    }
+    else
+    {
+     /*
+      * Resolve hostname from connection address...
+      */
+
+      http_addr_t      addr;           /* Connection address */
+      socklen_t                addrlen;        /* Length of address */
+
+      addrlen = sizeof(addr);
+      if (getsockname(http->fd, (struct sockaddr *)&addr, &addrlen))
+      {
+       DEBUG_printf(("4_httpTLSStart: Unable to get socket address: %s", strerror(errno)));
+       hostname[0] = '\0';
+      }
+      else if (httpAddrLocalhost(&addr))
+       hostname[0] = '\0';
+      else
+      {
+       httpAddrLookup(&addr, hostname, sizeof(hostname));
+        DEBUG_printf(("4_httpTLSStart: Resolved socket address to \"%s\".", hostname));
+      }
+    }
+
+    if (isdigit(hostname[0] & 255) || hostname[0] == '[')
+      hostname[0] = '\0';              /* Don't allow numeric addresses */
+
+    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");
+
+      have_creds = !access(crtfile, 0) && !access(keyfile, 0);
+    }
+    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");
+
+      have_creds = !access(crtfile, 0) && !access(keyfile, 0);
+    }
+
+    if (!have_creds && tls_auto_create && (hostname[0] || tls_common_name))
+    {
+      DEBUG_printf(("4_httpTLSStart: Auto-create credentials for \"%s\".", hostname[0] ? hostname : tls_common_name));
+
+      if (!cupsMakeServerCredentials(tls_keypath, hostname[0] ? hostname : tls_common_name, 0, NULL, time(NULL) + 365 * 86400))
+      {
+       DEBUG_puts("4_httpTLSStart: cupsMakeServerCredentials failed.");
+       http->error  = errno = EINVAL;
+       http->status = HTTP_STATUS_ERROR;
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unable to create server credentials."), 1);
+
+       return (-1);
+      }
+    }
+
+    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_credentials_set(http->tls, GNUTLS_CRD_CERTIFICATE, *credentials);
+
+  if (status)
+  {
+    http->error  = EIO;
+    http->status = HTTP_STATUS_ERROR;
+
+    DEBUG_printf(("4_httpTLSStart: Unable to complete client/server setup: %s", gnutls_strerror(status)));
+    _cupsSetError(IPP_STATUS_ERROR_CUPS_PKI, gnutls_strerror(status), 0);
+
+    gnutls_deinit(http->tls);
+    gnutls_certificate_free_credentials(*credentials);
+    free(credentials);
+    http->tls = NULL;
+
+    return (-1);
+  }
+
+  gnutls_transport_set_ptr(http->tls, (gnutls_transport_ptr_t)http);
+  gnutls_transport_set_pull_function(http->tls, http_gnutls_read);
+  gnutls_transport_set_pull_timeout_function(http->tls, (gnutls_pull_timeout_func)httpWait);
+  gnutls_transport_set_push_function(http->tls, http_gnutls_write);
+
+  while ((status = gnutls_handshake(http->tls)) != GNUTLS_E_SUCCESS)
+  {
+    DEBUG_printf(("5_httpStartTLS: gnutls_handshake returned %d (%s)",
+                  status, gnutls_strerror(status)));
+
+    if (gnutls_error_is_fatal(status))
+    {
+      http->error  = EIO;
+      http->status = HTTP_STATUS_ERROR;
+
+      _cupsSetError(IPP_STATUS_ERROR_CUPS_PKI, gnutls_strerror(status), 0);
+
+      gnutls_deinit(http->tls);
+      gnutls_certificate_free_credentials(*credentials);
+      free(credentials);
+      http->tls = NULL;
+
+      return (-1);
+    }
+  }
+
+  http->tls_credentials = credentials;
+
+  return (0);
+}
+
+
+/*
+ * '_httpTLSStop()' - Shut down SSL/TLS on a connection.
+ */
+
+void
+_httpTLSStop(http_t *http)             /* I - Connection to server */
+{
+  int  error;                          /* Error code */
+
+
+  error = gnutls_bye(http->tls, http->mode == _HTTP_MODE_CLIENT ? GNUTLS_SHUT_RDWR : GNUTLS_SHUT_WR);
+  if (error != GNUTLS_E_SUCCESS)
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, gnutls_strerror(errno), 0);
+
+  gnutls_deinit(http->tls);
+  http->tls = NULL;
+
+  if (http->tls_credentials)
+  {
+    gnutls_certificate_free_credentials(*(http->tls_credentials));
+    free(http->tls_credentials);
+    http->tls_credentials = NULL;
+  }
+}
+
+
+/*
+ * '_httpTLSWrite()' - Write to a SSL/TLS connection.
+ */
+
+int                                    /* O - Bytes written */
+_httpTLSWrite(http_t     *http,                /* I - Connection to server */
+             const char *buf,          /* I - Buffer holding data */
+             int        len)           /* I - Length of buffer */
+{
+  ssize_t      result;                 /* Return value */
+
+
+  DEBUG_printf(("2http_write_ssl(http=%p, buf=%p, len=%d)", http, buf, len));
+
+  result = gnutls_record_send(http->tls, buf, (size_t)len);
+
+  if (result < 0 && !errno)
+  {
+   /*
+    * Convert GNU TLS error to errno value...
+    */
+
+    switch (result)
+    {
+      case GNUTLS_E_INTERRUPTED :
+         errno = EINTR;
+         break;
+
+      case GNUTLS_E_AGAIN :
+          errno = EAGAIN;
+          break;
+
+      default :
+          errno = EPIPE;
+          break;
+    }
+
+    result = -1;
+  }
+
+  DEBUG_printf(("3http_write_ssl: Returning %d.", (int)result));
+
+  return ((int)result);
+}
+
+
+/*
+ * End of "$Id: tls-gnutls.c 12050 2014-07-18 16:51:12Z msweet $".
+ */
diff --git a/cups/tls-sspi.c b/cups/tls-sspi.c
new file mode 100644 (file)
index 0000000..868e602
--- /dev/null
@@ -0,0 +1,2363 @@
+/*
+ * "$Id: tls-sspi.c 12047 2014-07-18 13:53:34Z msweet $"
+ *
+ * TLS support for CUPS on Windows using SSPI.
+ *
+ * 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.
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include "debug-private.h"
+
+
+/*
+ * Include necessary libraries...
+ */
+
+#pragma comment(lib, "Crypt32.lib")
+#pragma comment(lib, "Secur32.lib")
+#pragma comment(lib, "Ws2_32.lib")
+
+
+/*
+ * Constants...
+ */
+
+#ifndef SECURITY_FLAG_IGNORE_UNKNOWN_CA
+#  define SECURITY_FLAG_IGNORE_UNKNOWN_CA         0x00000100 /* Untrusted root */
+#endif /* SECURITY_FLAG_IGNORE_UNKNOWN_CA */
+
+#ifndef SECURITY_FLAG_IGNORE_CERT_CN_INVALID
+#  define SECURITY_FLAG_IGNORE_CERT_CN_INVALID   0x00001000 /* Common name does not match */
+#endif /* !SECURITY_FLAG_IGNORE_CERT_CN_INVALID */
+
+#ifndef SECURITY_FLAG_IGNORE_CERT_DATE_INVALID
+#  define SECURITY_FLAG_IGNORE_CERT_DATE_INVALID  0x00002000 /* Expired X509 Cert. */
+#endif /* !SECURITY_FLAG_IGNORE_CERT_DATE_INVALID */
+
+/*
+ * Local functions...
+ */
+
+static _http_sspi_t *http_sspi_alloc(void);
+static int     http_sspi_client(http_t *http, const char *hostname);
+static PCCERT_CONTEXT http_sspi_create_credential(http_credential_t *cred);
+static BOOL    http_sspi_find_credentials(http_t *http, const LPWSTR containerName, const char *common_name);
+static void    http_sspi_free(_http_sspi_t *sspi);
+static BOOL    http_sspi_make_credentials(_http_sspi_t *sspi, const LPWSTR containerName, const char *common_name, _http_mode_t mode, int years);
+static int     http_sspi_server(http_t *http, const char *hostname);
+static void    http_sspi_set_allows_any_root(_http_sspi_t *sspi, BOOL allow);
+static void    http_sspi_set_allows_expired_certs(_http_sspi_t *sspi, BOOL allow);
+static const char *http_sspi_strerror(char *buffer, size_t bufsize, DWORD code);
+static DWORD   http_sspi_verify(PCCERT_CONTEXT cert, const char *common_name, DWORD dwCertFlags);
+
+
+/*
+ * 'cupsMakeServerCredentials()' - Make a self-signed certificate and private key pair.
+ *
+ * @since CUPS 2.0@
+ */
+
+int                                    /* O - 1 on success, 0 on failure */
+cupsMakeServerCredentials(
+    const char *path,                  /* I - Keychain path or @code NULL@ for default */
+    const char *common_name,           /* I - Common name */
+    int        num_alt_names,          /* I - Number of subject alternate names */
+    const char **alt_names,            /* I - Subject Alternate Names */
+    time_t     expiration_date)                /* I - Expiration date */
+{
+  _http_sspi_t *sspi;                  /* SSPI data */
+  int          ret;                    /* Return value */
+
+
+  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;
+
+  sspi = http_sspi_alloc();
+  ret  = http_sspi_make_credentials(sspi, L"ServerContainer", common_name, _HTTP_MODE_SERVER, (int)((expiration_date - time(NULL) + 86399) / 86400 / 365));
+
+  http_sspi_free(sspi);
+
+  return (ret);
+}
+
+
+/*
+ * 'cupsSetServerCredentials()' - Set the default server credentials.
+ *
+ * Note: The server credentials are used by all threads in the running process.
+ * This function is threadsafe.
+ *
+ * @since CUPS 2.0@
+ */
+
+int                                    /* O - 1 on success, 0 on failure */
+cupsSetServerCredentials(
+    const char *path,                  /* I - Keychain path or @code NULL@ for default */
+    const char *common_name,           /* I - Default common name for server */
+    int        auto_create)            /* I - 1 = automatically create self-signed certificates */
+{
+  DEBUG_printf(("cupsSetServerCredentials(path=\"%s\", common_name=\"%s\", auto_create=%d)", path, common_name, auto_create));
+
+  (void)path;
+  (void)common_name;
+  (void)auto_create;
+
+  return (0);
+}
+
+
+/*
+ * 'httpCopyCredentials()' - Copy the credentials associated with the peer in
+ *                           an encrypted connection.
+ *
+ * @since CUPS 1.5/OS X 10.7@
+ */
+
+int                                    /* O - Status of call (0 = success) */
+httpCopyCredentials(
+    http_t      *http,                 /* I - Connection to server */
+    cups_array_t **credentials)                /* O - Array of credentials */
+{
+  DEBUG_printf(("httpCopyCredentials(http=%p, credentials=%p)", http, credentials));
+
+  if (!http || !http->tls || !http->tls->remoteCert || !credentials)
+  {
+    if (credentials)
+      *credentials = NULL;
+
+    return (-1);
+  }
+
+  *credentials = cupsArrayNew(NULL, NULL);
+  httpAddCredential(*credentials, http->tls->remoteCert->pbCertEncoded, http->tls->remoteCert->cbCertEncoded);
+
+  return (0);
+}
+
+
+/*
+ * '_httpCreateCredentials()' - Create credentials in the internal format.
+ */
+
+http_tls_credentials_t                 /* O - Internal credentials */
+_httpCreateCredentials(
+    cups_array_t *credentials)         /* I - Array of credentials */
+{
+  return (http_sspi_create_credential((http_credential_t *)cupsArrayFirst(credentials)));
+}
+
+
+/*
+ * 'httpCredentialsAreValidForName()' - Return whether the credentials are valid for the given name.
+ *
+ * @since CUPS 2.0@
+ */
+
+int                                    /* O - 1 if valid, 0 otherwise */
+httpCredentialsAreValidForName(
+    cups_array_t *credentials,         /* I - Credentials */
+    const char   *common_name)         /* I - Name to check */
+{
+  int          valid = 1;              /* Valid name? */
+  PCCERT_CONTEXT cert = http_sspi_create_credential((http_credential_t *)cupsArrayFirst(credentials));
+                                       /* Certificate */
+  char         cert_name[1024];        /* Name from certificate */
+
+
+  if (cert)
+  {
+    if (CertNameToStr(X509_ASN_ENCODING, &(cert->pCertInfo->Subject), CERT_SIMPLE_NAME_STR, cert_name, sizeof(cert_name)))
+    {
+     /*
+      * Extract common name at end...
+      */
+
+      char  *ptr = strrchr(cert_name, ',');
+      if (ptr && ptr[1])
+        _cups_strcpy(cert_name, ptr + 2);
+    }
+    else
+      strlcpy(cert_name, "unknown", sizeof(cert_name));
+
+    CertFreeCertificateContext(cert);
+  }
+  else
+    strlcpy(cert_name, "unknown", sizeof(cert_name));
+
+ /*
+  * Compare the common names...
+  */
+
+  if (_cups_strcasecmp(common_name, cert_name))
+  {
+   /*
+    * Not an exact match for the common name, check for wildcard certs...
+    */
+
+    const char *domain = strchr(common_name, '.');
+                                       /* Domain in common name */
+
+    if (strncmp(cert_name, "*.", 2) || !domain || _cups_strcasecmp(domain, cert_name + 1))
+    {
+     /*
+      * Not a wildcard match.
+      */
+
+      /* TODO: Check subject alternate names */
+      valid = 0;
+    }
+  }
+
+  return (valid);
+}
+
+
+/*
+ * 'httpCredentialsGetTrust()' - Return the trust of credentials.
+ *
+ * @since CUPS 2.0@
+ */
+
+http_trust_t                           /* O - Level of trust */
+httpCredentialsGetTrust(
+    cups_array_t *credentials,         /* I - Credentials */
+    const char   *common_name)         /* I - Common name for trust lookup */
+{
+  http_trust_t trust = HTTP_TRUST_OK;  /* Level of trust */
+  PCCERT_CONTEXT cert = NULL;          /* Certificate to validate */
+  DWORD                certFlags = 0;          /* Cert verification flags */
+  _cups_globals_t *cg = _cupsGlobals();        /* Per-thread global data */
+
+
+  if (!common_name)
+    return (HTTP_TRUST_UNKNOWN);
+
+  cert = http_sspi_create_credential((http_credential_t *)cupsArrayFirst(credentials));
+  if (!cert)
+    return (HTTP_TRUST_UNKNOWN);
+
+  if (cg->any_root)
+    certFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;
+
+  if (cg->expired_certs)
+    certFlags |= SECURITY_FLAG_IGNORE_CERT_DATE_INVALID;
+
+  if (!cg->validate_certs)
+    certFlags |= SECURITY_FLAG_IGNORE_CERT_CN_INVALID;
+
+  if (http_sspi_verify(cert, common_name, certFlags) != SEC_E_OK)
+    trust = HTTP_TRUST_INVALID;
+
+  CertFreeCertificateContext(cert);
+
+  return (trust);
+}
+
+
+/*
+ * 'httpCredentialsGetExpiration()' - Return the expiration date of the credentials.
+ *
+ * @since CUPS 2.0@
+ */
+
+time_t                                 /* O - Expiration date of credentials */
+httpCredentialsGetExpiration(
+    cups_array_t *credentials)         /* I - Credentials */
+{
+  time_t       expiration_date = 0;    /* Expiration data of credentials */
+  PCCERT_CONTEXT cert = http_sspi_create_credential((http_credential_t *)cupsArrayFirst(credentials));
+                                       /* Certificate */
+
+  if (cert)
+  {
+    SYSTEMTIME systime;                /* System time */
+    struct tm  tm;                     /* UNIX date/time */
+
+    FileTimeToSystemTime(&(cert->pCertInfo->NotAfter), &systime);
+
+    tm.tm_year = systime.wYear - 1900;
+    tm.tm_mon  = systime.wMonth - 1;
+    tm.tm_mday = systime.wDay;
+    tm.tm_hour = systime.wHour;
+    tm.tm_min  = systime.wMinute;
+    tm.tm_sec  = systime.wSecond;
+
+    expiration_date = mktime(&tm);
+
+    CertFreeCertificateContext(cert);
+  }
+
+  return (expiration_date);
+}
+
+
+/*
+ * 'httpCredentialsString()' - Return a string representing the credentials.
+ *
+ * @since CUPS 2.0@
+ */
+
+size_t                                 /* O - Total size of credentials string */
+httpCredentialsString(
+    cups_array_t *credentials,         /* I - Credentials */
+    char         *buffer,              /* I - Buffer or @code NULL@ */
+    size_t       bufsize)              /* I - Size of buffer */
+{
+  http_credential_t    *first = (http_credential_t *)cupsArrayFirst(credentials);
+                                       /* First certificate */
+  PCCERT_CONTEXT       cert;           /* Certificate */
+
+
+  DEBUG_printf(("httpCredentialsString(credentials=%p, buffer=%p, bufsize=" CUPS_LLFMT ")", credentials, buffer, CUPS_LLCAST bufsize));
+
+  if (!buffer)
+    return (0);
+
+  if (buffer && bufsize > 0)
+    *buffer = '\0';
+
+  cert = http_sspi_create_credential(first);
+
+  if (cert)
+  {
+    char               cert_name[256]; /* Common name */
+    SYSTEMTIME         systime;        /* System time */
+    struct tm          tm;             /* UNIX date/time */
+    time_t             expiration;     /* Expiration date of cert */
+    _cups_md5_state_t  md5_state;      /* MD5 state */
+    unsigned char      md5_digest[16]; /* MD5 result */
+
+    FileTimeToSystemTime(&(cert->pCertInfo->NotAfter), &systime);
+
+    tm.tm_year = systime.wYear - 1900;
+    tm.tm_mon  = systime.wMonth - 1;
+    tm.tm_mday = systime.wDay;
+    tm.tm_hour = systime.wHour;
+    tm.tm_min  = systime.wMinute;
+    tm.tm_sec  = systime.wSecond;
+
+    expiration = mktime(&tm);
+
+    if (CertNameToStr(X509_ASN_ENCODING, &(cert->pCertInfo->Subject), CERT_SIMPLE_NAME_STR, cert_name, sizeof(cert_name)))
+    {
+     /*
+      * Extract common name at end...
+      */
+
+      char  *ptr = strrchr(cert_name, ',');
+      if (ptr && ptr[1])
+        _cups_strcpy(cert_name, ptr + 2);
+    }
+    else
+      strlcpy(cert_name, "unknown", sizeof(cert_name));
+
+    _cupsMD5Init(&md5_state);
+    _cupsMD5Append(&md5_state, first->data, (int)first->datalen);
+    _cupsMD5Finish(&md5_state, md5_digest);
+
+    snprintf(buffer, bufsize, "%s / %s / %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", cert_name, httpGetDateString(expiration), md5_digest[0], md5_digest[1], md5_digest[2], md5_digest[3], md5_digest[4], md5_digest[5], md5_digest[6], md5_digest[7], md5_digest[8], md5_digest[9], md5_digest[10], md5_digest[11], md5_digest[12], md5_digest[13], md5_digest[14], md5_digest[15]);
+
+    CertFreeCertificateContext(cert);
+  }
+
+  DEBUG_printf(("1httpCredentialsString: Returning \"%s\".", buffer));
+
+  return (strlen(buffer));
+}
+
+
+/*
+ * '_httpFreeCredentials()' - Free internal credentials.
+ */
+
+void
+_httpFreeCredentials(
+    http_tls_credentials_t credentials)        /* I - Internal credentials */
+{
+  if (!credentials)
+    return;
+
+  CertFreeCertificateContext(credentials);
+}
+
+
+/*
+ * 'httpLoadCredentials()' - Load X.509 credentials from a keychain file.
+ *
+ * @since CUPS 2.0@
+ */
+
+int                                    /* O - 0 on success, -1 on error */
+httpLoadCredentials(
+    const char   *path,                        /* I  - Keychain path or @code NULL@ for default */
+    cups_array_t **credentials,                /* IO - Credentials */
+    const char   *common_name)         /* I  - Common name for credentials */
+{
+  HCERTSTORE   store = NULL;           /* Certificate store */
+  PCCERT_CONTEXT storedContext = NULL; /* Context created from the store */
+  DWORD                dwSize = 0;             /* 32 bit size */
+  PBYTE                p = NULL;               /* Temporary storage */
+  HCRYPTPROV   hProv = (HCRYPTPROV)NULL;
+                                       /* Handle to a CSP */
+  CERT_NAME_BLOB sib;                  /* Arbitrary array of bytes */
+#ifdef DEBUG
+  char         error[1024];            /* Error message buffer */
+#endif /* DEBUG */
+
+
+  DEBUG_printf(("httpLoadCredentials(path=\"%s\", credentials=%p, common_name=\"%s\")", path, credentials, common_name));
+
+  (void)path;
+
+  if (credentials)
+  {
+    *credentials = NULL;
+  }
+  else
+  {
+    DEBUG_puts("1httpLoadCredentials: NULL credentials pointer, returning -1.");
+    return (-1);
+  }
+
+  if (!common_name)
+  {
+    DEBUG_puts("1httpLoadCredentials: Bad common name, returning -1.");
+    return (-1);
+  }
+
+  if (!CryptAcquireContextW(&hProv, L"RememberedContainer", MS_DEF_PROV_W, PROV_RSA_FULL, CRYPT_NEWKEYSET | CRYPT_MACHINE_KEYSET))
+  {
+    if (GetLastError() == NTE_EXISTS)
+    {
+      if (!CryptAcquireContextW(&hProv, L"RememberedContainer", MS_DEF_PROV_W, PROV_RSA_FULL, CRYPT_MACHINE_KEYSET))
+      {
+        DEBUG_printf(("1httpLoadCredentials: CryptAcquireContext failed: %s", http_sspi_strerror(error, sizeof(error), GetLastError())));
+        goto cleanup;
+      }
+    }
+  }
+
+  store = CertOpenStore(CERT_STORE_PROV_SYSTEM, X509_ASN_ENCODING|PKCS_7_ASN_ENCODING, hProv, CERT_SYSTEM_STORE_LOCAL_MACHINE | CERT_STORE_NO_CRYPT_RELEASE_FLAG | CERT_STORE_OPEN_EXISTING_FLAG, L"MY");
+
+  if (!store)
+  {
+    DEBUG_printf(("1httpLoadCredentials: CertOpenSystemStore failed: %s", http_sspi_strerror(error, sizeof(error), GetLastError())));
+    goto cleanup;
+  }
+
+  dwSize = 0;
+
+  if (!CertStrToName(X509_ASN_ENCODING, common_name, CERT_OID_NAME_STR, NULL, NULL, &dwSize, NULL))
+  {
+    DEBUG_printf(("1httpLoadCredentials: CertStrToName failed: %s", http_sspi_strerror(error, sizeof(error), GetLastError())));
+    goto cleanup;
+  }
+
+  p = (PBYTE)malloc(dwSize);
+
+  if (!p)
+  {
+    DEBUG_printf(("1httpLoadCredentials: malloc failed for %d bytes.", dwSize));
+    goto cleanup;
+  }
+
+  if (!CertStrToName(X509_ASN_ENCODING, common_name, CERT_OID_NAME_STR, NULL, p, &dwSize, NULL))
+  {
+    DEBUG_printf(("1httpLoadCredentials: CertStrToName failed: %s", http_sspi_strerror(error, sizeof(error), GetLastError())));
+    goto cleanup;
+  }
+
+  sib.cbData = dwSize;
+  sib.pbData = p;
+
+  storedContext = CertFindCertificateInStore(store, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 0, CERT_FIND_SUBJECT_NAME, &sib, NULL);
+
+  if (!storedContext)
+  {
+    DEBUG_printf(("1httpLoadCredentials: Unable to find credentials for \"%s\".", common_name));
+    goto cleanup;
+  }
+
+  *credentials = cupsArrayNew(NULL, NULL);
+  httpAddCredential(*credentials, storedContext->pbCertEncoded, storedContext->cbCertEncoded);
+
+cleanup:
+
+ /*
+  * Cleanup
+  */
+
+  if (storedContext)
+    CertFreeCertificateContext(storedContext);
+
+  if (p)
+    free(p);
+
+  if (store)
+    CertCloseStore(store, 0);
+
+  if (hProv)
+    CryptReleaseContext(hProv, 0);
+
+  DEBUG_printf(("1httpLoadCredentials: Returning %d.", *credentials ? 0 : -1));
+
+  return (*credentials ? 0 : -1);
+}
+
+
+/*
+ * 'httpSaveCredentials()' - Save X.509 credentials to a keychain file.
+ *
+ * @since CUPS 2.0@
+ */
+
+int                                    /* O - -1 on error, 0 on success */
+httpSaveCredentials(
+    const char   *path,                        /* I - Keychain path or @code NULL@ for default */
+    cups_array_t *credentials,         /* I - Credentials */
+    const char   *common_name)         /* I - Common name for credentials */
+{
+  HCERTSTORE   store = NULL;           /* Certificate store */
+  PCCERT_CONTEXT storedContext = NULL; /* Context created from the store */
+  PCCERT_CONTEXT createdContext = NULL;        /* Context created by us */
+  DWORD                dwSize = 0;             /* 32 bit size */
+  PBYTE                p = NULL;               /* Temporary storage */
+  HCRYPTPROV   hProv = (HCRYPTPROV)NULL;
+                                       /* Handle to a CSP */
+  CRYPT_KEY_PROV_INFO ckp;             /* Handle to crypto key */
+  int          ret = -1;               /* Return value */
+#ifdef DEBUG
+  char         error[1024];            /* Error message buffer */
+#endif /* DEBUG */
+
+
+  DEBUG_printf(("httpSaveCredentials(path=\"%s\", credentials=%p, common_name=\"%s\")", path, credentials, common_name));
+
+  (void)path;
+
+  if (!common_name)
+  {
+    DEBUG_puts("1httpSaveCredentials: Bad common name, returning -1.");
+    return (-1);
+  }
+
+  createdContext = http_sspi_create_credential((http_credential_t *)cupsArrayFirst(credentials));
+  if (!createdContext)
+  {
+    DEBUG_puts("1httpSaveCredentials: Bad credentials, returning -1.");
+    return (-1);
+  }
+
+  if (!CryptAcquireContextW(&hProv, L"RememberedContainer", MS_DEF_PROV_W, PROV_RSA_FULL, CRYPT_NEWKEYSET | CRYPT_MACHINE_KEYSET))
+  {
+    if (GetLastError() == NTE_EXISTS)
+    {
+      if (!CryptAcquireContextW(&hProv, L"RememberedContainer", MS_DEF_PROV_W, PROV_RSA_FULL, CRYPT_MACHINE_KEYSET))
+      {
+        DEBUG_printf(("1httpSaveCredentials: CryptAcquireContext failed: %s", http_sspi_strerror(error, sizeof(error), GetLastError())));
+        goto cleanup;
+      }
+    }
+  }
+
+  store = CertOpenStore(CERT_STORE_PROV_SYSTEM, X509_ASN_ENCODING|PKCS_7_ASN_ENCODING, hProv, CERT_SYSTEM_STORE_LOCAL_MACHINE | CERT_STORE_NO_CRYPT_RELEASE_FLAG | CERT_STORE_OPEN_EXISTING_FLAG, L"MY");
+
+  if (!store)
+  {
+    DEBUG_printf(("1httpSaveCredentials: CertOpenSystemStore failed: %s", http_sspi_strerror(error, sizeof(error), GetLastError())));
+    goto cleanup;
+  }
+
+  dwSize = 0;
+
+  if (!CertStrToName(X509_ASN_ENCODING, common_name, CERT_OID_NAME_STR, NULL, NULL, &dwSize, NULL))
+  {
+    DEBUG_printf(("1httpSaveCredentials: CertStrToName failed: %s", http_sspi_strerror(error, sizeof(error), GetLastError())));
+    goto cleanup;
+  }
+
+  p = (PBYTE)malloc(dwSize);
+
+  if (!p)
+  {
+    DEBUG_printf(("1httpSaveCredentials: malloc failed for %d bytes.", dwSize));
+    goto cleanup;
+  }
+
+  if (!CertStrToName(X509_ASN_ENCODING, common_name, CERT_OID_NAME_STR, NULL, p, &dwSize, NULL))
+  {
+    DEBUG_printf(("1httpSaveCredentials: CertStrToName failed: %s", http_sspi_strerror(error, sizeof(error), GetLastError())));
+    goto cleanup;
+  }
+
+ /*
+  * Add the created context to the named store, and associate it with the named
+  * container...
+  */
+
+  if (!CertAddCertificateContextToStore(store, createdContext, CERT_STORE_ADD_REPLACE_EXISTING, &storedContext))
+  {
+    DEBUG_printf(("1httpSaveCredentials: CertAddCertificateContextToStore failed: %s", http_sspi_strerror(error, sizeof(error), GetLastError())));
+    goto cleanup;
+  }
+
+  ZeroMemory(&ckp, sizeof(ckp));
+  ckp.pwszContainerName = L"RememberedContainer";
+  ckp.pwszProvName      = MS_DEF_PROV_W;
+  ckp.dwProvType        = PROV_RSA_FULL;
+  ckp.dwFlags           = CRYPT_MACHINE_KEYSET;
+  ckp.dwKeySpec         = AT_KEYEXCHANGE;
+
+  if (!CertSetCertificateContextProperty(storedContext, CERT_KEY_PROV_INFO_PROP_ID, 0, &ckp))
+  {
+    DEBUG_printf(("1httpSaveCredentials: CertSetCertificateContextProperty failed: %s", http_sspi_strerror(error, sizeof(error), GetLastError())));
+    goto cleanup;
+  }
+
+  ret = 0;
+
+cleanup:
+
+ /*
+  * Cleanup
+  */
+
+  if (createdContext)
+    CertFreeCertificateContext(createdContext);
+
+  if (storedContext)
+    CertFreeCertificateContext(storedContext);
+
+  if (p)
+    free(p);
+
+  if (store)
+    CertCloseStore(store, 0);
+
+  if (hProv)
+    CryptReleaseContext(hProv, 0);
+
+  DEBUG_printf(("1httpSaveCredentials: Returning %d.", ret));
+  return (ret);
+}
+
+
+/*
+ * '_httpTLSInitialize()' - Initialize the TLS stack.
+ */
+
+void
+_httpTLSInitialize(void)
+{
+ /*
+  * Nothing to do...
+  */
+}
+
+
+/*
+ * '_httpTLSPending()' - Return the number of pending TLS-encrypted bytes.
+ */
+
+size_t                                 /* O - Bytes available */
+_httpTLSPending(http_t *http)          /* I - HTTP connection */
+{
+  if (http->tls)
+    return (http->tls->readBufferUsed);
+  else
+    return (0);
+}
+
+
+/*
+ * '_httpTLSRead()' - Read from a SSL/TLS connection.
+ */
+
+int                                    /* O - Bytes read */
+_httpTLSRead(http_t *http,             /* I - HTTP connection */
+            char   *buf,               /* I - Buffer to store data */
+            int    len)                /* I - Length of buffer */
+{
+  int          i;                      /* Looping var */
+  _http_sspi_t *sspi = http->tls;      /* SSPI data */
+  SecBufferDesc        message;                /* Array of SecBuffer struct */
+  SecBuffer    buffers[4] = { 0 };     /* Security package buffer */
+  int          num = 0;                /* Return value */
+  PSecBuffer   pDataBuffer;            /* Data buffer */
+  PSecBuffer   pExtraBuffer;           /* Excess data buffer */
+  SECURITY_STATUS scRet;               /* SSPI status */
+
+
+  DEBUG_printf(("4_httpTLSRead(http=%p, buf=%p, len=%d)", http, buf, len));
+
+ /*
+  * If there are bytes that have already been decrypted and have not yet been
+  * read, return those...
+  */
+
+  if (sspi->readBufferUsed > 0)
+  {
+    int bytesToCopy = min(sspi->readBufferUsed, len);
+                                       /* Number of bytes to copy */
+
+    memcpy(buf, sspi->readBuffer, bytesToCopy);
+    sspi->readBufferUsed -= bytesToCopy;
+
+    if (sspi->readBufferUsed > 0)
+      memmove(sspi->readBuffer, sspi->readBuffer + bytesToCopy, sspi->readBufferUsed);
+
+    DEBUG_printf(("5_httpTLSRead: Returning %d bytes previously decrypted.", bytesToCopy));
+
+    return (bytesToCopy);
+  }
+
+ /*
+  * Initialize security buffer structs
+  */
+
+  message.ulVersion = SECBUFFER_VERSION;
+  message.cBuffers  = 4;
+  message.pBuffers  = buffers;
+
+  do
+  {
+   /*
+    * If there is not enough space in the buffer, then increase its size...
+    */
+
+    if (sspi->decryptBufferLength <= sspi->decryptBufferUsed)
+    {
+      BYTE *temp;                      /* New buffer */
+
+      if (sspi->decryptBufferLength >= 262144)
+      {
+       WSASetLastError(E_OUTOFMEMORY);
+        DEBUG_puts("_httpTLSRead: Decryption buffer too large (>256k)");
+       return (-1);
+      }
+
+      if ((temp = realloc(sspi->decryptBuffer, sspi->decryptBufferLength + 4096)) == NULL)
+      {
+       DEBUG_printf(("_httpTLSRead: Unable to allocate %d byte decryption buffer.", sspi->decryptBufferLength + 4096));
+       WSASetLastError(E_OUTOFMEMORY);
+       return (-1);
+      }
+
+      sspi->decryptBufferLength += 4096;
+      sspi->decryptBuffer       = temp;
+
+      DEBUG_printf(("_httpTLSRead: Resized decryption buffer to %d bytes.", sspi->decryptBufferLength));
+    }
+
+    buffers[0].pvBuffer          = sspi->decryptBuffer;
+    buffers[0].cbBuffer          = (unsigned long)sspi->decryptBufferUsed;
+    buffers[0].BufferType = SECBUFFER_DATA;
+    buffers[1].BufferType = SECBUFFER_EMPTY;
+    buffers[2].BufferType = SECBUFFER_EMPTY;
+    buffers[3].BufferType = SECBUFFER_EMPTY;
+
+    DEBUG_printf(("5_httpTLSRead: decryptBufferUsed=%d", sspi->decryptBufferUsed));
+
+    scRet = DecryptMessage(&sspi->context, &message, 0, NULL);
+
+    if (scRet == SEC_E_INCOMPLETE_MESSAGE)
+    {
+      num = recv(http->fd, sspi->decryptBuffer + sspi->decryptBufferUsed, (int)(sspi->decryptBufferLength - sspi->decryptBufferUsed), 0);
+      if (num < 0)
+      {
+       DEBUG_printf(("5_httpTLSRead: recv failed: %d", WSAGetLastError()));
+       return (-1);
+      }
+      else if (num == 0)
+      {
+       DEBUG_puts("5_httpTLSRead: Server disconnected.");
+       return (0);
+      }
+
+      DEBUG_printf(("5_httpTLSRead: Read %d bytes into decryption buffer.", num));
+
+      sspi->decryptBufferUsed += num;
+    }
+  }
+  while (scRet == SEC_E_INCOMPLETE_MESSAGE);
+
+  if (scRet == SEC_I_CONTEXT_EXPIRED)
+  {
+    DEBUG_puts("5_httpTLSRead: Context expired.");
+    WSASetLastError(WSAECONNRESET);
+    return (-1);
+  }
+  else if (scRet != SEC_E_OK)
+  {
+    DEBUG_printf(("5_httpTLSRead: DecryptMessage failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), scRet)));
+    WSASetLastError(WSASYSCALLFAILURE);
+    return (-1);
+  }
+
+ /*
+  * The decryption worked.  Now, locate data buffer.
+  */
+
+  pDataBuffer  = NULL;
+  pExtraBuffer = NULL;
+
+  for (i = 1; i < 4; i++)
+  {
+    if (buffers[i].BufferType == SECBUFFER_DATA)
+      pDataBuffer = &buffers[i];
+    else if (!pExtraBuffer && (buffers[i].BufferType == SECBUFFER_EXTRA))
+      pExtraBuffer = &buffers[i];
+  }
+
+ /*
+  * If a data buffer is found, then copy the decrypted bytes to the passed-in
+  * buffer...
+  */
+
+  if (pDataBuffer)
+  {
+    int bytesToCopy = min((int)pDataBuffer->cbBuffer, len);
+                                     /* Number of bytes to copy into buf */
+    int bytesToSave = pDataBuffer->cbBuffer - bytesToCopy;
+                                     /* Number of bytes to save in our read buffer */
+
+    if (bytesToCopy)
+      memcpy(buf, pDataBuffer->pvBuffer, bytesToCopy);
+
+   /*
+    * If there are more decrypted bytes than can be copied to the passed in
+    * buffer, then save them...
+    */
+
+    if (bytesToSave)
+    {
+      if ((sspi->readBufferLength - sspi->readBufferUsed) < bytesToSave)
+      {
+        BYTE *temp;                    /* New buffer pointer */
+
+        if ((temp = realloc(sspi->readBuffer, sspi->readBufferUsed + bytesToSave)) == NULL)
+       {
+         DEBUG_printf(("_httpTLSRead: Unable to allocate %d bytes.", sspi->readBufferUsed + bytesToSave));
+         WSASetLastError(E_OUTOFMEMORY);
+         return (-1);
+       }
+
+       sspi->readBufferLength = sspi->readBufferUsed + bytesToSave;
+       sspi->readBuffer       = temp;
+      }
+
+      memcpy(((BYTE *)sspi->readBuffer) + sspi->readBufferUsed, ((BYTE *)pDataBuffer->pvBuffer) + bytesToCopy, bytesToSave);
+
+      sspi->readBufferUsed += bytesToSave;
+    }
+
+    num = bytesToCopy;
+  }
+  else
+  {
+    DEBUG_puts("_httpTLSRead: Unable to find data buffer.");
+    WSASetLastError(WSASYSCALLFAILURE);
+    return (-1);
+  }
+
+ /*
+  * If the decryption process left extra bytes, then save those back in
+  * decryptBuffer.  They will be processed the next time through the loop.
+  */
+
+  if (pExtraBuffer)
+  {
+    memmove(sspi->decryptBuffer, pExtraBuffer->pvBuffer, pExtraBuffer->cbBuffer);
+    sspi->decryptBufferUsed = pExtraBuffer->cbBuffer;
+  }
+  else
+  {
+    sspi->decryptBufferUsed = 0;
+  }
+
+  return (num);
+}
+
+
+/*
+ * '_httpTLSStart()' - Set up SSL/TLS support on a connection.
+ */
+
+int                                    /* O - 0 on success, -1 on failure */
+_httpTLSStart(http_t *http)            /* I - HTTP connection */
+{
+  char hostname[256],                  /* Hostname */
+       *hostptr;                       /* Pointer into hostname */
+
+
+  DEBUG_printf(("7_httpTLSStart(http=%p)", http));
+
+  if ((http->tls = http_sspi_alloc()) == NULL)
+    return (-1);
+
+  if (http->mode == _HTTP_MODE_CLIENT)
+  {
+   /*
+    * Client: determine hostname...
+    */
+
+    if (httpAddrLocalhost(http->hostaddr))
+    {
+      strlcpy(hostname, "localhost", sizeof(hostname));
+    }
+    else
+    {
+     /*
+      * Otherwise make sure the hostname we have does not end in a trailing dot.
+      */
+
+      strlcpy(hostname, http->hostname, sizeof(hostname));
+      if ((hostptr = hostname + strlen(hostname) - 1) >= hostname &&
+         *hostptr == '.')
+       *hostptr = '\0';
+    }
+
+    return (http_sspi_client(http, hostname));
+  }
+  else
+  {
+   /*
+    * Server: determine hostname to use...
+    */
+
+    if (http->fields[HTTP_FIELD_HOST][0])
+    {
+     /*
+      * Use hostname for TLS upgrade...
+      */
+
+      strlcpy(hostname, http->fields[HTTP_FIELD_HOST], sizeof(hostname));
+    }
+    else
+    {
+     /*
+      * Resolve hostname from connection address...
+      */
+
+      http_addr_t      addr;           /* Connection address */
+      socklen_t                addrlen;        /* Length of address */
+
+      addrlen = sizeof(addr);
+      if (getsockname(http->fd, (struct sockaddr *)&addr, &addrlen))
+      {
+       DEBUG_printf(("4_httpTLSStart: Unable to get socket address: %s", strerror(errno)));
+       hostname[0] = '\0';
+      }
+      else if (httpAddrLocalhost(&addr))
+       hostname[0] = '\0';
+      else
+      {
+       httpAddrLookup(&addr, hostname, sizeof(hostname));
+        DEBUG_printf(("4_httpTLSStart: Resolved socket address to \"%s\".", hostname));
+      }
+    }
+
+    return (http_sspi_server(http, hostname));
+  }
+}
+
+
+/*
+ * '_httpTLSStop()' - Shut down SSL/TLS on a connection.
+ */
+
+void
+_httpTLSStop(http_t *http)             /* I - HTTP connection */
+{
+  _http_sspi_t *sspi = http->tls;      /* SSPI data */
+
+
+  if (sspi->contextInitialized && http->fd >= 0)
+  {
+    SecBufferDesc      message;        /* Array of SecBuffer struct */
+    SecBuffer          buffers[1] = { 0 };
+                                       /* Security package buffer */
+    DWORD              dwType;         /* Type */
+    DWORD              status;         /* Status */
+
+  /*
+   * Notify schannel that we are about to close the connection.
+   */
+
+   dwType = SCHANNEL_SHUTDOWN;
+
+   buffers[0].pvBuffer   = &dwType;
+   buffers[0].BufferType = SECBUFFER_TOKEN;
+   buffers[0].cbBuffer   = sizeof(dwType);
+
+   message.cBuffers  = 1;
+   message.pBuffers  = buffers;
+   message.ulVersion = SECBUFFER_VERSION;
+
+   status = ApplyControlToken(&sspi->context, &message);
+
+   if (SUCCEEDED(status))
+   {
+     PBYTE     pbMessage;              /* Message buffer */
+     DWORD     cbMessage;              /* Message buffer count */
+     DWORD     cbData;                 /* Data count */
+     DWORD     dwSSPIFlags;            /* SSL attributes we requested */
+     DWORD     dwSSPIOutFlags;         /* SSL attributes we received */
+     TimeStamp tsExpiry;               /* Time stamp */
+
+     dwSSPIFlags = ASC_REQ_SEQUENCE_DETECT     |
+                   ASC_REQ_REPLAY_DETECT       |
+                   ASC_REQ_CONFIDENTIALITY     |
+                   ASC_REQ_EXTENDED_ERROR      |
+                   ASC_REQ_ALLOCATE_MEMORY     |
+                   ASC_REQ_STREAM;
+
+     buffers[0].pvBuffer   = NULL;
+     buffers[0].BufferType = SECBUFFER_TOKEN;
+     buffers[0].cbBuffer   = 0;
+
+     message.cBuffers  = 1;
+     message.pBuffers  = buffers;
+     message.ulVersion = SECBUFFER_VERSION;
+
+     status = AcceptSecurityContext(&sspi->creds, &sspi->context, NULL,
+                                    dwSSPIFlags, SECURITY_NATIVE_DREP, NULL,
+                                    &message, &dwSSPIOutFlags, &tsExpiry);
+
+      if (SUCCEEDED(status))
+      {
+        pbMessage = buffers[0].pvBuffer;
+        cbMessage = buffers[0].cbBuffer;
+
+       /*
+        * Send the close notify message to the client.
+        */
+
+        if (pbMessage && cbMessage)
+        {
+          cbData = send(http->fd, pbMessage, cbMessage, 0);
+          if ((cbData == SOCKET_ERROR) || (cbData == 0))
+          {
+            status = WSAGetLastError();
+            DEBUG_printf(("_httpTLSStop: sending close notify failed: %d", status));
+          }
+          else
+          {
+            FreeContextBuffer(pbMessage);
+          }
+        }
+      }
+      else
+      {
+        DEBUG_printf(("_httpTLSStop: AcceptSecurityContext failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), status)));
+      }
+    }
+    else
+    {
+      DEBUG_printf(("_httpTLSStop: ApplyControlToken failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), status)));
+    }
+  }
+
+  http_sspi_free(sspi);
+
+  http->tls = NULL;
+}
+
+
+/*
+ * '_httpTLSWrite()' - Write to a SSL/TLS connection.
+ */
+
+int                                    /* O - Bytes written */
+_httpTLSWrite(http_t     *http,                /* I - HTTP connection */
+             const char *buf,          /* I - Buffer holding data */
+             int        len)           /* I - Length of buffer */
+{
+  _http_sspi_t *sspi = http->tls;      /* SSPI data */
+  SecBufferDesc        message;                /* Array of SecBuffer struct */
+  SecBuffer    buffers[4] = { 0 };     /* Security package buffer */
+  int          bufferLen;              /* Buffer length */
+  int          bytesLeft;              /* Bytes left to write */
+  const char   *bufptr;                /* Pointer into buffer */
+  int          num = 0;                /* Return value */
+
+
+  bufferLen = sspi->streamSizes.cbMaximumMessage + sspi->streamSizes.cbHeader + sspi->streamSizes.cbTrailer;
+
+  if (bufferLen > sspi->writeBufferLength)
+  {
+    BYTE *temp;                                /* New buffer pointer */
+
+    if ((temp = (BYTE *)realloc(sspi->writeBuffer, bufferLen)) == NULL)
+    {
+      DEBUG_printf(("_httpTLSWrite: Unable to allocate buffer of %d bytes.", bufferLen));
+      WSASetLastError(E_OUTOFMEMORY);
+      return (-1);
+    }
+
+    sspi->writeBuffer       = temp;
+    sspi->writeBufferLength = bufferLen;
+  }
+
+  bytesLeft = len;
+  bufptr    = buf;
+
+  while (bytesLeft)
+  {
+    int chunk = min((int)sspi->streamSizes.cbMaximumMessage, bytesLeft);
+                                       /* Size of data to write */
+    SECURITY_STATUS scRet;             /* SSPI status */
+
+   /*
+    * Copy user data into the buffer, starting just past the header...
+    */
+
+    memcpy(sspi->writeBuffer + sspi->streamSizes.cbHeader, bufptr, chunk);
+
+   /*
+    * Setup the SSPI buffers
+    */
+
+    message.ulVersion = SECBUFFER_VERSION;
+    message.cBuffers  = 4;
+    message.pBuffers  = buffers;
+
+    buffers[0].pvBuffer   = sspi->writeBuffer;
+    buffers[0].cbBuffer   = sspi->streamSizes.cbHeader;
+    buffers[0].BufferType = SECBUFFER_STREAM_HEADER;
+    buffers[1].pvBuffer   = sspi->writeBuffer + sspi->streamSizes.cbHeader;
+    buffers[1].cbBuffer   = (unsigned long) chunk;
+    buffers[1].BufferType = SECBUFFER_DATA;
+    buffers[2].pvBuffer   = sspi->writeBuffer + sspi->streamSizes.cbHeader + chunk;
+    buffers[2].cbBuffer   = sspi->streamSizes.cbTrailer;
+    buffers[2].BufferType = SECBUFFER_STREAM_TRAILER;
+    buffers[3].BufferType = SECBUFFER_EMPTY;
+
+   /*
+    * Encrypt the data
+    */
+
+    scRet = EncryptMessage(&sspi->context, 0, &message, 0);
+
+    if (FAILED(scRet))
+    {
+      DEBUG_printf(("_httpTLSWrite: EncryptMessage failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), scRet)));
+      WSASetLastError(WSASYSCALLFAILURE);
+      return (-1);
+    }
+
+   /*
+    * Send the data. Remember the size of the total data to send is the size
+    * of the header, the size of the data the caller passed in and the size
+    * of the trailer...
+    */
+
+    num = send(http->fd, sspi->writeBuffer, buffers[0].cbBuffer + buffers[1].cbBuffer + buffers[2].cbBuffer, 0);
+
+    if (num <= 0)
+    {
+      DEBUG_printf(("_httpTLSWrite: send failed: %ld", WSAGetLastError()));
+      return (num);
+    }
+
+    bytesLeft -= chunk;
+    bufptr    += chunk;
+  }
+
+  return (len);
+}
+
+
+#if 0
+/*
+ * 'http_setup_ssl()' - Set up SSL/TLS support on a connection.
+ */
+
+static int                             /* O - 0 on success, -1 on failure */
+http_setup_ssl(http_t *http)           /* I - Connection to server */
+{
+  char                 hostname[256],  /* Hostname */
+                       *hostptr;       /* Pointer into hostname */
+
+  TCHAR                        username[256];  /* Username returned from GetUserName() */
+  TCHAR                        commonName[256];/* Common name for certificate */
+  DWORD                        dwSize;         /* 32 bit size */
+
+
+  DEBUG_printf(("7http_setup_ssl(http=%p)", http));
+
+ /*
+  * Get the hostname to use for SSL...
+  */
+
+  if (httpAddrLocalhost(http->hostaddr))
+  {
+    strlcpy(hostname, "localhost", sizeof(hostname));
+  }
+  else
+  {
+   /*
+    * Otherwise make sure the hostname we have does not end in a trailing dot.
+    */
+
+    strlcpy(hostname, http->hostname, sizeof(hostname));
+    if ((hostptr = hostname + strlen(hostname) - 1) >= hostname &&
+        *hostptr == '.')
+      *hostptr = '\0';
+  }
+
+  http->tls = http_sspi_alloc();
+
+  if (!http->tls)
+  {
+    _cupsSetHTTPError(HTTP_STATUS_ERROR);
+    return (-1);
+  }
+
+  dwSize          = sizeof(username) / sizeof(TCHAR);
+  GetUserName(username, &dwSize);
+  _sntprintf_s(commonName, sizeof(commonName) / sizeof(TCHAR),
+               sizeof(commonName) / sizeof(TCHAR), TEXT("CN=%s"), username);
+
+  if (!_sspiGetCredentials(http->tls, L"ClientContainer",
+                           commonName, FALSE))
+  {
+    _sspiFree(http->tls);
+    http->tls = NULL;
+
+    http->error  = EIO;
+    http->status = HTTP_STATUS_ERROR;
+
+    _cupsSetError(IPP_STATUS_ERROR_CUPS_PKI,
+                  _("Unable to establish a secure connection to host."), 1);
+
+    return (-1);
+  }
+
+  _sspiSetAllowsAnyRoot(http->tls, TRUE);
+  _sspiSetAllowsExpiredCerts(http->tls, TRUE);
+
+  if (!_sspiConnect(http->tls, hostname))
+  {
+    _sspiFree(http->tls);
+    http->tls = NULL;
+
+    http->error  = EIO;
+    http->status = HTTP_STATUS_ERROR;
+
+    _cupsSetError(IPP_STATUS_ERROR_CUPS_PKI,
+                  _("Unable to establish a secure connection to host."), 1);
+
+    return (-1);
+  }
+
+  return (0);
+}
+#endif // 0
+
+
+/*
+ * 'http_sspi_alloc()' - Allocate SSPI object.
+ */
+
+static _http_sspi_t *                  /* O  - New SSPI/SSL object */
+http_sspi_alloc(void)
+{
+  return ((_http_sspi_t *)calloc(sizeof(_http_sspi_t), 1));
+}
+
+
+/*
+ * 'http_sspi_client()' - Negotiate a TLS connection as a client.
+ */
+
+static int                             /* O - 0 on success, -1 on failure */
+http_sspi_client(http_t     *http,     /* I - Client connection */
+                 const char *hostname) /* I - Server hostname */
+{
+  _http_sspi_t *sspi = http->tls;      /* SSPI data */
+  DWORD                dwSize;                 /* Size for buffer */
+  DWORD                dwSSPIFlags;            /* SSL connection attributes we want */
+  DWORD                dwSSPIOutFlags;         /* SSL connection attributes we got */
+  TimeStamp    tsExpiry;               /* Time stamp */
+  SECURITY_STATUS scRet;               /* Status */
+  int          cbData;                 /* Data count */
+  SecBufferDesc        inBuffer;               /* Array of SecBuffer structs */
+  SecBuffer    inBuffers[2];           /* Security package buffer */
+  SecBufferDesc        outBuffer;              /* Array of SecBuffer structs */
+  SecBuffer    outBuffers[1];          /* Security package buffer */
+  int          ret = 0;                /* Return value */
+  char         username[1024],         /* Current username */
+               common_name[1024];      /* CN=username */
+
+
+  DEBUG_printf(("4http_sspi_client(http=%p, hostname=\"%s\")", http, hostname));
+
+  dwSSPIFlags = ISC_REQ_SEQUENCE_DETECT   |
+                ISC_REQ_REPLAY_DETECT     |
+                ISC_REQ_CONFIDENTIALITY   |
+                ISC_RET_EXTENDED_ERROR    |
+                ISC_REQ_ALLOCATE_MEMORY   |
+                ISC_REQ_STREAM;
+
+ /*
+  * Lookup the client certificate...
+  */
+
+  dwSize = sizeof(username);
+  GetUserName(username, &dwSize);
+  snprintf(common_name, sizeof(common_name), "CN=%s", username);
+
+  if (!http_sspi_find_credentials(http, L"ClientContainer", common_name))
+    if (!http_sspi_make_credentials(http->tls, L"ClientContainer", common_name, _HTTP_MODE_CLIENT, 10))
+    {
+      DEBUG_puts("5http_sspi_client: Unable to get client credentials.");
+      return (-1);
+    }
+
+ /*
+  * Initiate a ClientHello message and generate a token.
+  */
+
+  outBuffers[0].pvBuffer   = NULL;
+  outBuffers[0].BufferType = SECBUFFER_TOKEN;
+  outBuffers[0].cbBuffer   = 0;
+
+  outBuffer.cBuffers  = 1;
+  outBuffer.pBuffers  = outBuffers;
+  outBuffer.ulVersion = SECBUFFER_VERSION;
+
+  scRet = InitializeSecurityContext(&sspi->creds, NULL, TEXT(""), dwSSPIFlags, 0, SECURITY_NATIVE_DREP, NULL, 0, &sspi->context, &outBuffer, &dwSSPIOutFlags, &tsExpiry);
+
+  if (scRet != SEC_I_CONTINUE_NEEDED)
+  {
+    DEBUG_printf(("5http_sspi_client: InitializeSecurityContext(1) failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), scRet)));
+    return (-1);
+  }
+
+ /*
+  * Send response to server if there is one.
+  */
+
+  if (outBuffers[0].cbBuffer && outBuffers[0].pvBuffer)
+  {
+    if ((cbData = send(http->fd, outBuffers[0].pvBuffer, outBuffers[0].cbBuffer, 0)) <= 0)
+    {
+      DEBUG_printf(("5http_sspi_client: send failed: %d", WSAGetLastError()));
+      FreeContextBuffer(outBuffers[0].pvBuffer);
+      DeleteSecurityContext(&sspi->context);
+      return (-1);
+    }
+
+    DEBUG_printf(("5http_sspi_client: %d bytes of handshake data sent.", cbData));
+
+    FreeContextBuffer(outBuffers[0].pvBuffer);
+    outBuffers[0].pvBuffer = NULL;
+  }
+
+  dwSSPIFlags = ISC_REQ_MANUAL_CRED_VALIDATION |
+               ISC_REQ_SEQUENCE_DETECT        |
+                ISC_REQ_REPLAY_DETECT          |
+                ISC_REQ_CONFIDENTIALITY        |
+                ISC_RET_EXTENDED_ERROR         |
+                ISC_REQ_ALLOCATE_MEMORY        |
+                ISC_REQ_STREAM;
+
+  sspi->decryptBufferUsed = 0;
+
+ /*
+  * Loop until the handshake is finished or an error occurs.
+  */
+
+  scRet = SEC_I_CONTINUE_NEEDED;
+
+  while(scRet == SEC_I_CONTINUE_NEEDED        ||
+        scRet == SEC_E_INCOMPLETE_MESSAGE     ||
+        scRet == SEC_I_INCOMPLETE_CREDENTIALS)
+  {
+    if (sspi->decryptBufferUsed == 0 || scRet == SEC_E_INCOMPLETE_MESSAGE)
+    {
+      if (sspi->decryptBufferLength <= sspi->decryptBufferUsed)
+      {
+       BYTE *temp;                     /* New buffer */
+
+       if (sspi->decryptBufferLength >= 262144)
+       {
+         WSASetLastError(E_OUTOFMEMORY);
+         DEBUG_puts("5http_sspi_client: Decryption buffer too large (>256k)");
+         return (-1);
+       }
+
+       if ((temp = realloc(sspi->decryptBuffer, sspi->decryptBufferLength + 4096)) == NULL)
+       {
+         DEBUG_printf(("5http_sspi_client: Unable to allocate %d byte buffer.", sspi->decryptBufferLength + 4096));
+         WSASetLastError(E_OUTOFMEMORY);
+         return (-1);
+       }
+
+       sspi->decryptBufferLength += 4096;
+       sspi->decryptBuffer       = temp;
+      }
+
+      cbData = recv(http->fd, sspi->decryptBuffer + sspi->decryptBufferUsed, (int)(sspi->decryptBufferLength - sspi->decryptBufferUsed), 0);
+
+      if (cbData < 0)
+      {
+        DEBUG_printf(("5http_sspi_client: recv failed: %d", WSAGetLastError()));
+        return (-1);
+      }
+      else if (cbData == 0)
+      {
+        DEBUG_printf(("5http_sspi_client: Server unexpectedly disconnected."));
+        return (-1);
+      }
+
+      DEBUG_printf(("5http_sspi_client: %d bytes of handshake data received", cbData));
+
+      sspi->decryptBufferUsed += cbData;
+    }
+
+   /*
+    * Set up the input buffers. Buffer 0 is used to pass in data received from
+    * the server.  Schannel will consume some or all of this.  Leftover data
+    * (if any) will be placed in buffer 1 and given a buffer type of
+    * SECBUFFER_EXTRA.
+    */
+
+    inBuffers[0].pvBuffer   = sspi->decryptBuffer;
+    inBuffers[0].cbBuffer   = (unsigned long)sspi->decryptBufferUsed;
+    inBuffers[0].BufferType = SECBUFFER_TOKEN;
+
+    inBuffers[1].pvBuffer   = NULL;
+    inBuffers[1].cbBuffer   = 0;
+    inBuffers[1].BufferType = SECBUFFER_EMPTY;
+
+    inBuffer.cBuffers       = 2;
+    inBuffer.pBuffers       = inBuffers;
+    inBuffer.ulVersion      = SECBUFFER_VERSION;
+
+   /*
+    * Set up the output buffers. These are initialized to NULL so as to make it
+    * less likely we'll attempt to free random garbage later.
+    */
+
+    outBuffers[0].pvBuffer   = NULL;
+    outBuffers[0].BufferType = SECBUFFER_TOKEN;
+    outBuffers[0].cbBuffer   = 0;
+
+    outBuffer.cBuffers       = 1;
+    outBuffer.pBuffers       = outBuffers;
+    outBuffer.ulVersion      = SECBUFFER_VERSION;
+
+   /*
+    * Call InitializeSecurityContext.
+    */
+
+    scRet = InitializeSecurityContext(&sspi->creds, &sspi->context, NULL, dwSSPIFlags, 0, SECURITY_NATIVE_DREP, &inBuffer, 0, NULL, &outBuffer, &dwSSPIOutFlags, &tsExpiry);
+
+   /*
+    * If InitializeSecurityContext was successful (or if the error was one of
+    * the special extended ones), send the contents of the output buffer to the
+    * server.
+    */
+
+    if (scRet == SEC_E_OK                ||
+        scRet == SEC_I_CONTINUE_NEEDED   ||
+        FAILED(scRet) && (dwSSPIOutFlags & ISC_RET_EXTENDED_ERROR))
+    {
+      if (outBuffers[0].cbBuffer && outBuffers[0].pvBuffer)
+      {
+        cbData = send(http->fd, outBuffers[0].pvBuffer, outBuffers[0].cbBuffer, 0);
+
+        if (cbData <= 0)
+        {
+          DEBUG_printf(("5http_sspi_client: send failed: %d", WSAGetLastError()));
+          FreeContextBuffer(outBuffers[0].pvBuffer);
+          DeleteSecurityContext(&sspi->context);
+          return (-1);
+        }
+
+        DEBUG_printf(("5http_sspi_client: %d bytes of handshake data sent.", cbData));
+
+       /*
+        * Free output buffer.
+        */
+
+        FreeContextBuffer(outBuffers[0].pvBuffer);
+        outBuffers[0].pvBuffer = NULL;
+      }
+    }
+
+   /*
+    * If InitializeSecurityContext returned SEC_E_INCOMPLETE_MESSAGE, then we
+    * need to read more data from the server and try again.
+    */
+
+    if (scRet == SEC_E_INCOMPLETE_MESSAGE)
+      continue;
+
+   /*
+    * If InitializeSecurityContext returned SEC_E_OK, then the handshake
+    * completed successfully.
+    */
+
+    if (scRet == SEC_E_OK)
+    {
+     /*
+      * If the "extra" buffer contains data, this is encrypted application
+      * protocol layer stuff. It needs to be saved. The application layer will
+      * later decrypt it with DecryptMessage.
+      */
+
+      DEBUG_puts("5http_sspi_client: Handshake was successful.");
+
+      if (inBuffers[1].BufferType == SECBUFFER_EXTRA)
+      {
+        memmove(sspi->decryptBuffer, sspi->decryptBuffer + sspi->decryptBufferUsed - inBuffers[1].cbBuffer, inBuffers[1].cbBuffer);
+
+        sspi->decryptBufferUsed = inBuffers[1].cbBuffer;
+
+        DEBUG_printf(("5http_sspi_client: %d bytes of app data was bundled with handshake data", sspi->decryptBufferUsed));
+      }
+      else
+        sspi->decryptBufferUsed = 0;
+
+     /*
+      * Bail out to quit
+      */
+
+      break;
+    }
+
+   /*
+    * Check for fatal error.
+    */
+
+    if (FAILED(scRet))
+    {
+      DEBUG_printf(("5http_sspi_client: InitializeSecurityContext(2) failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), scRet)));
+      ret = -1;
+      break;
+    }
+
+   /*
+    * If InitializeSecurityContext returned SEC_I_INCOMPLETE_CREDENTIALS,
+    * then the server just requested client authentication.
+    */
+
+    if (scRet == SEC_I_INCOMPLETE_CREDENTIALS)
+    {
+     /*
+      * Unimplemented
+      */
+
+      DEBUG_printf(("5http_sspi_client: server requested client credentials."));
+      ret = -1;
+      break;
+    }
+
+   /*
+    * Copy any leftover data from the "extra" buffer, and go around again.
+    */
+
+    if (inBuffers[1].BufferType == SECBUFFER_EXTRA)
+    {
+      memmove(sspi->decryptBuffer, sspi->decryptBuffer + sspi->decryptBufferUsed - inBuffers[1].cbBuffer, inBuffers[1].cbBuffer);
+
+      sspi->decryptBufferUsed = inBuffers[1].cbBuffer;
+    }
+    else
+    {
+      sspi->decryptBufferUsed = 0;
+    }
+  }
+
+  if (!ret)
+  {
+   /*
+    * Success!  Get the server cert
+    */
+
+    sspi->contextInitialized = TRUE;
+
+    scRet = QueryContextAttributes(&sspi->context, SECPKG_ATTR_REMOTE_CERT_CONTEXT, (VOID *)&(sspi->remoteCert));
+
+    if (scRet != SEC_E_OK)
+    {
+      DEBUG_printf(("5http_sspi_client: QueryContextAttributes failed(SECPKG_ATTR_REMOTE_CERT_CONTEXT): %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), scRet)));
+      return (-1);
+    }
+
+   /*
+    * Find out how big the header/trailer will be:
+    */
+
+    scRet = QueryContextAttributes(&sspi->context, SECPKG_ATTR_STREAM_SIZES, &sspi->streamSizes);
+
+    if (scRet != SEC_E_OK)
+    {
+      DEBUG_printf(("5http_sspi_client: QueryContextAttributes failed(SECPKG_ATTR_STREAM_SIZES): %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), scRet)));
+      ret = -1;
+    }
+  }
+
+  return (ret);
+}
+
+
+/*
+ * 'http_sspi_create_credential()' - Create an SSPI certificate context.
+ */
+
+static PCCERT_CONTEXT                  /* O - Certificate context */
+http_sspi_create_credential(
+    http_credential_t *cred)           /* I - Credential */
+{
+  if (cred)
+    return (CertCreateCertificateContext(X509_ASN_ENCODING, cred->data, cred->datalen));
+  else
+    return (NULL);
+}
+
+
+/*
+ * 'http_sspi_find_credentials()' - Retrieve a TLS certificate from the system store.
+ */
+
+static BOOL                            /* O - 1 on success, 0 on failure */
+http_sspi_find_credentials(
+    http_t       *http,                        /* I - HTTP connection */
+    const LPWSTR container,            /* I - Cert container name */
+    const char   *common_name)         /* I - Common name of certificate */
+{
+  _http_sspi_t *sspi = http->tls;      /* SSPI data */
+  HCERTSTORE   store = NULL;           /* Certificate store */
+  PCCERT_CONTEXT storedContext = NULL; /* Context created from the store */
+  DWORD                dwSize = 0;             /* 32 bit size */
+  PBYTE                p = NULL;               /* Temporary storage */
+  HCRYPTPROV   hProv = (HCRYPTPROV)NULL;
+                                       /* Handle to a CSP */
+  CERT_NAME_BLOB sib;                  /* Arbitrary array of bytes */
+  SCHANNEL_CRED        SchannelCred;           /* Schannel credential data */
+  TimeStamp    tsExpiry;               /* Time stamp */
+  SECURITY_STATUS Status;              /* Status */
+  BOOL         ok = TRUE;              /* Return value */
+
+
+  if (!CryptAcquireContextW(&hProv, (LPWSTR)container, MS_DEF_PROV_W, PROV_RSA_FULL, CRYPT_NEWKEYSET | CRYPT_MACHINE_KEYSET))
+  {
+    if (GetLastError() == NTE_EXISTS)
+    {
+      if (!CryptAcquireContextW(&hProv, (LPWSTR)container, MS_DEF_PROV_W, PROV_RSA_FULL, CRYPT_MACHINE_KEYSET))
+      {
+        DEBUG_printf(("5http_sspi_find_credentials: CryptAcquireContext failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), GetLastError())));
+        ok = FALSE;
+        goto cleanup;
+      }
+    }
+  }
+
+  store = CertOpenStore(CERT_STORE_PROV_SYSTEM, X509_ASN_ENCODING|PKCS_7_ASN_ENCODING, hProv, CERT_SYSTEM_STORE_LOCAL_MACHINE | CERT_STORE_NO_CRYPT_RELEASE_FLAG | CERT_STORE_OPEN_EXISTING_FLAG, L"MY");
+
+  if (!store)
+  {
+    DEBUG_printf(("5http_sspi_find_credentials: CertOpenSystemStore failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), GetLastError())));
+    ok = FALSE;
+    goto cleanup;
+  }
+
+  dwSize = 0;
+
+  if (!CertStrToName(X509_ASN_ENCODING, common_name, CERT_OID_NAME_STR, NULL, NULL, &dwSize, NULL))
+  {
+    DEBUG_printf(("5http_sspi_find_credentials: CertStrToName failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), GetLastError())));
+    ok = FALSE;
+    goto cleanup;
+  }
+
+  p = (PBYTE)malloc(dwSize);
+
+  if (!p)
+  {
+    DEBUG_printf(("5http_sspi_find_credentials: malloc failed for %d bytes.", dwSize));
+    ok = FALSE;
+    goto cleanup;
+  }
+
+  if (!CertStrToName(X509_ASN_ENCODING, common_name, CERT_OID_NAME_STR, NULL, p, &dwSize, NULL))
+  {
+    DEBUG_printf(("5http_sspi_find_credentials: CertStrToName failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), GetLastError())));
+    ok = FALSE;
+    goto cleanup;
+  }
+
+  sib.cbData = dwSize;
+  sib.pbData = p;
+
+  storedContext = CertFindCertificateInStore(store, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 0, CERT_FIND_SUBJECT_NAME, &sib, NULL);
+
+  if (!storedContext)
+  {
+    DEBUG_printf(("5http_sspi_find_credentials: Unable to find credentials for \"%s\".", common_name));
+    ok = FALSE;
+    goto cleanup;
+  }
+
+  ZeroMemory(&SchannelCred, sizeof(SchannelCred));
+
+  SchannelCred.dwVersion = SCHANNEL_CRED_VERSION;
+  SchannelCred.cCreds    = 1;
+  SchannelCred.paCred    = &storedContext;
+
+ /*
+  * SSPI doesn't seem to like it if grbitEnabledProtocols is set for a client.
+  */
+
+  if (http->mode == _HTTP_MODE_SERVER)
+    SchannelCred.grbitEnabledProtocols = SP_PROT_SSL3TLS1;
+
+ /*
+  * Create an SSPI credential.
+  */
+
+  Status = AcquireCredentialsHandle(NULL, UNISP_NAME, http->mode == _HTTP_MODE_SERVER ? SECPKG_CRED_INBOUND : SECPKG_CRED_OUTBOUND, NULL, &SchannelCred, NULL, NULL, &sspi->creds, &tsExpiry);
+  if (Status != SEC_E_OK)
+  {
+    DEBUG_printf(("5http_sspi_find_credentials: AcquireCredentialsHandle failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), Status)));
+    ok = FALSE;
+    goto cleanup;
+  }
+
+cleanup:
+
+ /*
+  * Cleanup
+  */
+
+  if (storedContext)
+    CertFreeCertificateContext(storedContext);
+
+  if (p)
+    free(p);
+
+  if (store)
+    CertCloseStore(store, 0);
+
+  if (hProv)
+    CryptReleaseContext(hProv, 0);
+
+  return (ok);
+}
+
+
+/*
+ * 'http_sspi_free()' - Close a connection and free resources.
+ */
+
+static void
+http_sspi_free(_http_sspi_t *sspi)     /* I - SSPI data */
+{
+  if (!sspi)
+    return;
+
+  if (sspi->contextInitialized)
+    DeleteSecurityContext(&sspi->context);
+
+  if (sspi->decryptBuffer)
+    free(sspi->decryptBuffer);
+
+  if (sspi->readBuffer)
+    free(sspi->readBuffer);
+
+  if (sspi->writeBuffer)
+    free(sspi->writeBuffer);
+
+  if (sspi->localCert)
+    CertFreeCertificateContext(sspi->localCert);
+
+  if (sspi->remoteCert)
+    CertFreeCertificateContext(sspi->remoteCert);
+
+  free(sspi);
+}
+
+
+/*
+ * 'http_sspi_make_credentials()' - Create a TLS certificate in the system store.
+ */
+
+static BOOL                            /* O - 1 on success, 0 on failure */
+http_sspi_make_credentials(
+    _http_sspi_t *sspi,                        /* I - SSPI data */
+    const LPWSTR container,            /* I - Cert container name */
+    const char   *common_name,         /* I - Common name of certificate */
+    _http_mode_t mode,                 /* I - Client or server? */
+    int          years)                        /* I - Years until expiration */
+{
+  HCERTSTORE   store = NULL;           /* Certificate store */
+  PCCERT_CONTEXT storedContext = NULL; /* Context created from the store */
+  PCCERT_CONTEXT createdContext = NULL;        /* Context created by us */
+  DWORD                dwSize = 0;             /* 32 bit size */
+  PBYTE                p = NULL;               /* Temporary storage */
+  HCRYPTPROV   hProv = (HCRYPTPROV)NULL;
+                                       /* Handle to a CSP */
+  CERT_NAME_BLOB sib;                  /* Arbitrary array of bytes */
+  SCHANNEL_CRED        SchannelCred;           /* Schannel credential data */
+  TimeStamp    tsExpiry;               /* Time stamp */
+  SECURITY_STATUS Status;              /* Status */
+  HCRYPTKEY    hKey = (HCRYPTKEY)NULL; /* Handle to crypto key */
+  CRYPT_KEY_PROV_INFO kpi;             /* Key container info */
+  SYSTEMTIME   et;                     /* System time */
+  CERT_EXTENSIONS exts;                        /* Array of cert extensions */
+  CRYPT_KEY_PROV_INFO ckp;             /* Handle to crypto key */
+  BOOL         ok = TRUE;              /* Return value */
+
+
+  DEBUG_printf(("4http_sspi_make_credentials(sspi=%p, container=%p, common_name=\"%s\", mode=%d, years=%d)", sspi, container, common_name, mode, years));
+
+  if (!CryptAcquireContextW(&hProv, (LPWSTR)container, MS_DEF_PROV_W, PROV_RSA_FULL, CRYPT_NEWKEYSET | CRYPT_MACHINE_KEYSET))
+  {
+    if (GetLastError() == NTE_EXISTS)
+    {
+      if (!CryptAcquireContextW(&hProv, (LPWSTR)container, MS_DEF_PROV_W, PROV_RSA_FULL, CRYPT_MACHINE_KEYSET))
+      {
+        DEBUG_printf(("5http_sspi_make_credentials: CryptAcquireContext failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), GetLastError())));
+        ok = FALSE;
+        goto cleanup;
+      }
+    }
+  }
+
+  store = CertOpenStore(CERT_STORE_PROV_SYSTEM, X509_ASN_ENCODING|PKCS_7_ASN_ENCODING, hProv, CERT_SYSTEM_STORE_LOCAL_MACHINE | CERT_STORE_NO_CRYPT_RELEASE_FLAG | CERT_STORE_OPEN_EXISTING_FLAG, L"MY");
+
+  if (!store)
+  {
+    DEBUG_printf(("5http_sspi_make_credentials: CertOpenSystemStore failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), GetLastError())));
+    ok = FALSE;
+    goto cleanup;
+  }
+
+  dwSize = 0;
+
+  if (!CertStrToName(X509_ASN_ENCODING, common_name, CERT_OID_NAME_STR, NULL, NULL, &dwSize, NULL))
+  {
+    DEBUG_printf(("5http_sspi_make_credentials: CertStrToName failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), GetLastError())));
+    ok = FALSE;
+    goto cleanup;
+  }
+
+  p = (PBYTE)malloc(dwSize);
+
+  if (!p)
+  {
+    DEBUG_printf(("5http_sspi_make_credentials: malloc failed for %d bytes", dwSize));
+    ok = FALSE;
+    goto cleanup;
+  }
+
+  if (!CertStrToName(X509_ASN_ENCODING, common_name, CERT_OID_NAME_STR, NULL, p, &dwSize, NULL))
+  {
+    DEBUG_printf(("5http_sspi_make_credentials: CertStrToName failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), GetLastError())));
+    ok = FALSE;
+    goto cleanup;
+  }
+
+ /*
+  * Create a private key and self-signed certificate...
+  */
+
+  if (!CryptGenKey(hProv, AT_KEYEXCHANGE, CRYPT_EXPORTABLE, &hKey))
+  {
+    DEBUG_printf(("5http_sspi_make_credentials: CryptGenKey failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), GetLastError())));
+    ok = FALSE;
+    goto cleanup;
+  }
+
+  ZeroMemory(&kpi, sizeof(kpi));
+  kpi.pwszContainerName = (LPWSTR)container;
+  kpi.pwszProvName      = MS_DEF_PROV_W;
+  kpi.dwProvType        = PROV_RSA_FULL;
+  kpi.dwFlags           = CERT_SET_KEY_CONTEXT_PROP_ID;
+  kpi.dwKeySpec         = AT_KEYEXCHANGE;
+
+  GetSystemTime(&et);
+  et.wYear += years;
+
+  ZeroMemory(&exts, sizeof(exts));
+
+  createdContext = CertCreateSelfSignCertificate(hProv, &sib, 0, &kpi, NULL, NULL, &et, &exts);
+
+  if (!createdContext)
+  {
+    DEBUG_printf(("5http_sspi_make_credentials: CertCreateSelfSignCertificate failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), GetLastError())));
+    ok = FALSE;
+    goto cleanup;
+  }
+
+ /*
+  * Add the created context to the named store, and associate it with the named
+  * container...
+  */
+
+  if (!CertAddCertificateContextToStore(store, createdContext, CERT_STORE_ADD_REPLACE_EXISTING, &storedContext))
+  {
+    DEBUG_printf(("5http_sspi_make_credentials: CertAddCertificateContextToStore failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), GetLastError())));
+    ok = FALSE;
+    goto cleanup;
+  }
+
+  ZeroMemory(&ckp, sizeof(ckp));
+  ckp.pwszContainerName = (LPWSTR) container;
+  ckp.pwszProvName      = MS_DEF_PROV_W;
+  ckp.dwProvType        = PROV_RSA_FULL;
+  ckp.dwFlags           = CRYPT_MACHINE_KEYSET;
+  ckp.dwKeySpec         = AT_KEYEXCHANGE;
+
+  if (!CertSetCertificateContextProperty(storedContext, CERT_KEY_PROV_INFO_PROP_ID, 0, &ckp))
+  {
+    DEBUG_printf(("5http_sspi_make_credentials: CertSetCertificateContextProperty failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), GetLastError())));
+    ok = FALSE;
+    goto cleanup;
+  }
+
+ /*
+  * Get a handle to use the certificate...
+  */
+
+  ZeroMemory(&SchannelCred, sizeof(SchannelCred));
+
+  SchannelCred.dwVersion = SCHANNEL_CRED_VERSION;
+  SchannelCred.cCreds    = 1;
+  SchannelCred.paCred    = &storedContext;
+
+ /*
+  * SSPI doesn't seem to like it if grbitEnabledProtocols is set for a client.
+  */
+
+  if (mode == _HTTP_MODE_SERVER)
+    SchannelCred.grbitEnabledProtocols = SP_PROT_SSL3TLS1;
+
+ /*
+  * Create an SSPI credential.
+  */
+
+  Status = AcquireCredentialsHandle(NULL, UNISP_NAME, mode == _HTTP_MODE_SERVER ? SECPKG_CRED_INBOUND : SECPKG_CRED_OUTBOUND, NULL, &SchannelCred, NULL, NULL, &sspi->creds, &tsExpiry);
+  if (Status != SEC_E_OK)
+  {
+    DEBUG_printf(("5http_sspi_make_credentials: AcquireCredentialsHandle failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), Status)));
+    ok = FALSE;
+    goto cleanup;
+  }
+
+cleanup:
+
+ /*
+  * Cleanup
+  */
+
+  if (hKey)
+    CryptDestroyKey(hKey);
+
+  if (createdContext)
+    CertFreeCertificateContext(createdContext);
+
+  if (storedContext)
+    CertFreeCertificateContext(storedContext);
+
+  if (p)
+    free(p);
+
+  if (store)
+    CertCloseStore(store, 0);
+
+  if (hProv)
+    CryptReleaseContext(hProv, 0);
+
+  return (ok);
+}
+
+
+/*
+ * 'http_sspi_server()' - Negotiate a TLS connection as a server.
+ */
+
+static int                             /* O - 0 on success, -1 on failure */
+http_sspi_server(http_t     *http,     /* I - HTTP connection */
+                 const char *hostname) /* I - Hostname of server */
+{
+  _http_sspi_t *sspi = http->tls;      /* I - SSPI data */
+  char         common_name[512];       /* Common name for cert */
+  DWORD                dwSSPIFlags;            /* SSL connection attributes we want */
+  DWORD                dwSSPIOutFlags;         /* SSL connection attributes we got */
+  TimeStamp    tsExpiry;               /* Time stamp */
+  SECURITY_STATUS scRet;               /* SSPI Status */
+  SecBufferDesc        inBuffer;               /* Array of SecBuffer structs */
+  SecBuffer    inBuffers[2];           /* Security package buffer */
+  SecBufferDesc        outBuffer;              /* Array of SecBuffer structs */
+  SecBuffer    outBuffers[1];          /* Security package buffer */
+  int          num = 0;                /* 32 bit status value */
+  BOOL         fInitContext = TRUE;    /* Has the context been init'd? */
+  int          ret = 0;                /* Return value */
+
+
+  DEBUG_printf(("4http_sspi_server(http=%p, hostname=\"%s\")", http, hostname));
+
+  dwSSPIFlags = ASC_REQ_SEQUENCE_DETECT  |
+                ASC_REQ_REPLAY_DETECT    |
+                ASC_REQ_CONFIDENTIALITY  |
+                ASC_REQ_EXTENDED_ERROR   |
+                ASC_REQ_ALLOCATE_MEMORY  |
+                ASC_REQ_STREAM;
+
+  sspi->decryptBufferUsed = 0;
+
+ /*
+  * Lookup the server certificate...
+  */
+
+  snprintf(common_name, sizeof(common_name), "CN=%s", hostname);
+
+  if (!http_sspi_find_credentials(http, L"ServerContainer", common_name))
+    if (!http_sspi_make_credentials(http->tls, L"ServerContainer", common_name, _HTTP_MODE_SERVER, 10))
+    {
+      DEBUG_puts("5http_sspi_server: Unable to get server credentials.");
+      return (-1);
+    }
+
+ /*
+  * Set OutBuffer for AcceptSecurityContext call
+  */
+
+  outBuffer.cBuffers  = 1;
+  outBuffer.pBuffers  = outBuffers;
+  outBuffer.ulVersion = SECBUFFER_VERSION;
+
+  scRet = SEC_I_CONTINUE_NEEDED;
+
+  while (scRet == SEC_I_CONTINUE_NEEDED    ||
+         scRet == SEC_E_INCOMPLETE_MESSAGE ||
+         scRet == SEC_I_INCOMPLETE_CREDENTIALS)
+  {
+    if (sspi->decryptBufferUsed == 0 || scRet == SEC_E_INCOMPLETE_MESSAGE)
+    {
+      if (sspi->decryptBufferLength <= sspi->decryptBufferUsed)
+      {
+       BYTE *temp;                     /* New buffer */
+
+       if (sspi->decryptBufferLength >= 262144)
+       {
+         WSASetLastError(E_OUTOFMEMORY);
+         DEBUG_puts("5http_sspi_server: Decryption buffer too large (>256k)");
+         return (-1);
+       }
+
+       if ((temp = realloc(sspi->decryptBuffer, sspi->decryptBufferLength + 4096)) == NULL)
+       {
+         DEBUG_printf(("5http_sspi_server: Unable to allocate %d byte buffer.", sspi->decryptBufferLength + 4096));
+         WSASetLastError(E_OUTOFMEMORY);
+         return (-1);
+       }
+
+       sspi->decryptBufferLength += 4096;
+       sspi->decryptBuffer       = temp;
+      }
+
+      for (;;)
+      {
+        num = recv(http->fd, sspi->decryptBuffer + sspi->decryptBufferUsed, (int)(sspi->decryptBufferLength - sspi->decryptBufferUsed), 0);
+
+        if (num == -1 && WSAGetLastError() == WSAEWOULDBLOCK)
+          Sleep(1);
+        else
+          break;
+      }
+
+      if (num < 0)
+      {
+        DEBUG_printf(("5http_sspi_server: recv failed: %d", WSAGetLastError()));
+        return (-1);
+      }
+      else if (num == 0)
+      {
+        DEBUG_puts("5http_sspi_server: client disconnected");
+        return (-1);
+      }
+
+      DEBUG_printf(("5http_sspi_server: received %d (handshake) bytes from client.", num));
+      sspi->decryptBufferUsed += num;
+    }
+
+   /*
+    * InBuffers[1] is for getting extra data that SSPI/SCHANNEL doesn't process
+    * on this run around the loop.
+    */
+
+    inBuffers[0].pvBuffer   = sspi->decryptBuffer;
+    inBuffers[0].cbBuffer   = (unsigned long)sspi->decryptBufferUsed;
+    inBuffers[0].BufferType = SECBUFFER_TOKEN;
+
+    inBuffers[1].pvBuffer   = NULL;
+    inBuffers[1].cbBuffer   = 0;
+    inBuffers[1].BufferType = SECBUFFER_EMPTY;
+
+    inBuffer.cBuffers       = 2;
+    inBuffer.pBuffers       = inBuffers;
+    inBuffer.ulVersion      = SECBUFFER_VERSION;
+
+   /*
+    * Initialize these so if we fail, pvBuffer contains NULL, so we don't try to
+    * free random garbage at the quit.
+    */
+
+    outBuffers[0].pvBuffer   = NULL;
+    outBuffers[0].BufferType = SECBUFFER_TOKEN;
+    outBuffers[0].cbBuffer   = 0;
+
+    scRet = AcceptSecurityContext(&sspi->creds, (fInitContext?NULL:&sspi->context), &inBuffer, dwSSPIFlags, SECURITY_NATIVE_DREP, (fInitContext?&sspi->context:NULL), &outBuffer, &dwSSPIOutFlags, &tsExpiry);
+
+    fInitContext = FALSE;
+
+    if (scRet == SEC_E_OK              ||
+        scRet == SEC_I_CONTINUE_NEEDED ||
+        (FAILED(scRet) && ((dwSSPIOutFlags & ISC_RET_EXTENDED_ERROR) != 0)))
+    {
+      if (outBuffers[0].cbBuffer && outBuffers[0].pvBuffer)
+      {
+       /*
+        * Send response to server if there is one.
+        */
+
+        num = send(http->fd, outBuffers[0].pvBuffer, outBuffers[0].cbBuffer, 0);
+
+        if (num <= 0)
+        {
+          DEBUG_printf(("5http_sspi_server: handshake send failed: %d", WSAGetLastError()));
+         return (-1);
+        }
+
+        DEBUG_printf(("5http_sspi_server: sent %d handshake bytes to client.", outBuffers[0].cbBuffer));
+
+        FreeContextBuffer(outBuffers[0].pvBuffer);
+        outBuffers[0].pvBuffer = NULL;
+      }
+    }
+
+    if (scRet == SEC_E_OK)
+    {
+     /*
+      * If there's extra data then save it for next time we go to decrypt.
+      */
+
+      if (inBuffers[1].BufferType == SECBUFFER_EXTRA)
+      {
+        memcpy(sspi->decryptBuffer, (LPBYTE)(sspi->decryptBuffer + sspi->decryptBufferUsed - inBuffers[1].cbBuffer), inBuffers[1].cbBuffer);
+        sspi->decryptBufferUsed = inBuffers[1].cbBuffer;
+      }
+      else
+      {
+        sspi->decryptBufferUsed = 0;
+      }
+      break;
+    }
+    else if (FAILED(scRet) && scRet != SEC_E_INCOMPLETE_MESSAGE)
+    {
+      DEBUG_printf(("5http_sspi_server: AcceptSecurityContext failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), scRet)));
+      ret = -1;
+      break;
+    }
+
+    if (scRet != SEC_E_INCOMPLETE_MESSAGE &&
+        scRet != SEC_I_INCOMPLETE_CREDENTIALS)
+    {
+      if (inBuffers[1].BufferType == SECBUFFER_EXTRA)
+      {
+        memcpy(sspi->decryptBuffer, (LPBYTE)(sspi->decryptBuffer + sspi->decryptBufferUsed - inBuffers[1].cbBuffer), inBuffers[1].cbBuffer);
+        sspi->decryptBufferUsed = inBuffers[1].cbBuffer;
+      }
+      else
+      {
+        sspi->decryptBufferUsed = 0;
+      }
+    }
+  }
+
+  if (!ret)
+  {
+    sspi->contextInitialized = TRUE;
+
+   /*
+    * Find out how big the header will be:
+    */
+
+    scRet = QueryContextAttributes(&sspi->context, SECPKG_ATTR_STREAM_SIZES, &sspi->streamSizes);
+
+    if (scRet != SEC_E_OK)
+    {
+      DEBUG_printf(("5http_sspi_server: QueryContextAttributes failed: %s", http_sspi_strerror(sspi->error, sizeof(sspi->error), scRet)));
+      ret = -1;
+    }
+  }
+
+  return (ret);
+}
+
+
+/*
+ * 'http_sspi_strerror()' - Return a string for the specified error code.
+ */
+
+static const char *                    /* O - String for error */
+http_sspi_strerror(char   *buffer,     /* I - Error message buffer */
+                   size_t bufsize,     /* I - Size of buffer */
+                   DWORD  code)                /* I - Error code */
+{
+  if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, code, 0, buffer, bufsize, NULL))
+  {
+   /*
+    * Strip trailing CR + LF...
+    */
+
+    char       *ptr;                   /* Pointer into error message */
+
+    for (ptr = buffer + strlen(buffer) - 1; ptr >= buffer; ptr --)
+      if (*ptr == '\n' || *ptr == '\r')
+        *ptr = '\0';
+      else
+        break;
+  }
+  else
+    snprintf(buffer, bufsize, "Unknown error %x", code);
+
+  return (buffer);
+}
+
+
+/*
+ * 'http_sspi_verify()' - Verify a certificate.
+ */
+
+static DWORD                           /* O - Error code (0 == No error) */
+http_sspi_verify(
+    PCCERT_CONTEXT cert,               /* I - Server certificate */
+    const char     *common_name,       /* I - Common name */
+    DWORD          dwCertFlags)                /* I - Verification flags */
+{
+  HTTPSPolicyCallbackData httpsPolicy; /* HTTPS Policy Struct */
+  CERT_CHAIN_POLICY_PARA policyPara;   /* Cert chain policy parameters */
+  CERT_CHAIN_POLICY_STATUS policyStatus;/* Cert chain policy status */
+  CERT_CHAIN_PARA      chainPara;      /* Used for searching and matching criteria */
+  PCCERT_CHAIN_CONTEXT chainContext = NULL;
+                                       /* Certificate chain */
+  PWSTR                        commonNameUnicode = NULL;
+                                       /* Unicode common name */
+  LPSTR                        rgszUsages[] = { szOID_PKIX_KP_SERVER_AUTH,
+                                         szOID_SERVER_GATED_CRYPTO,
+                                         szOID_SGC_NETSCAPE };
+                                       /* How are we using this certificate? */
+  DWORD                        cUsages = sizeof(rgszUsages) / sizeof(LPSTR);
+                                       /* Number of ites in rgszUsages */
+  DWORD                        count;          /* 32 bit count variable */
+  DWORD                        status;         /* Return value */
+#ifdef DEBUG
+  char                 error[1024];    /* Error message string */
+#endif /* DEBUG */
+
+
+  if (!cert)
+    return (SEC_E_WRONG_PRINCIPAL);
+
+ /*
+  * Convert common name to Unicode.
+  */
+
+  if (!common_name || !*common_name)
+    return (SEC_E_WRONG_PRINCIPAL);
+
+  count             = MultiByteToWideChar(CP_ACP, 0, common_name, -1, NULL, 0);
+  commonNameUnicode = LocalAlloc(LMEM_FIXED, count * sizeof(WCHAR));
+  if (!commonNameUnicode)
+    return (SEC_E_INSUFFICIENT_MEMORY);
+
+  if (!MultiByteToWideChar(CP_ACP, 0, common_name, -1, commonNameUnicode, count))
+  {
+    LocalFree(commonNameUnicode);
+    return (SEC_E_WRONG_PRINCIPAL);
+  }
+
+ /*
+  * Build certificate chain.
+  */
+
+  ZeroMemory(&chainPara, sizeof(chainPara));
+
+  chainPara.cbSize                                     = sizeof(chainPara);
+  chainPara.RequestedUsage.dwType                      = USAGE_MATCH_TYPE_OR;
+  chainPara.RequestedUsage.Usage.cUsageIdentifier      = cUsages;
+  chainPara.RequestedUsage.Usage.rgpszUsageIdentifier  = rgszUsages;
+
+  if (!CertGetCertificateChain(NULL, cert, NULL, cert->hCertStore, &chainPara, 0, NULL, &chainContext))
+  {
+    status = GetLastError();
+
+    DEBUG_printf(("CertGetCertificateChain returned: %s", http_sspi_strerror(error, sizeof(error), status)));
+
+    LocalFree(commonNameUnicode);
+    return (status);
+  }
+
+ /*
+  * Validate certificate chain.
+  */
+
+  ZeroMemory(&httpsPolicy, sizeof(HTTPSPolicyCallbackData));
+  httpsPolicy.cbStruct         = sizeof(HTTPSPolicyCallbackData);
+  httpsPolicy.dwAuthType       = AUTHTYPE_SERVER;
+  httpsPolicy.fdwChecks                = dwCertFlags;
+  httpsPolicy.pwszServerName   = commonNameUnicode;
+
+  memset(&policyPara, 0, sizeof(policyPara));
+  policyPara.cbSize            = sizeof(policyPara);
+  policyPara.pvExtraPolicyPara = &httpsPolicy;
+
+  memset(&policyStatus, 0, sizeof(policyStatus));
+  policyStatus.cbSize = sizeof(policyStatus);
+
+  if (!CertVerifyCertificateChainPolicy(CERT_CHAIN_POLICY_SSL, chainContext, &policyPara, &policyStatus))
+  {
+    status = GetLastError();
+
+    DEBUG_printf(("CertVerifyCertificateChainPolicy returned %s", http_sspi_strerror(error, sizeof(error), status)));
+  }
+  else if (policyStatus.dwError)
+    status = policyStatus.dwError;
+  else
+    status = SEC_E_OK;
+
+  if (chainContext)
+    CertFreeCertificateChain(chainContext);
+
+  if (commonNameUnicode)
+    LocalFree(commonNameUnicode);
+
+  return (status);
+}
+
+
+/*
+ * End of "$Id: tls-sspi.c 12047 2014-07-18 13:53:34Z msweet $".
+ */
diff --git a/cups/tls.c b/cups/tls.c
new file mode 100644 (file)
index 0000000..e7937a0
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * "$Id: tls.c 11841 2014-04-29 16:39:25Z msweet $"
+ *
+ * TLS routines for CUPS.
+ *
+ * Copyright 2007-2014 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products, all rights reserved.
+ *
+ * This file contains Kerberos support code, copyright 2006 by
+ * Jelmer Vernooij.
+ *
+ * These coded instructions, statements, and computer programs 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 <fcntl.h>
+#include <math.h>
+#ifdef WIN32
+#  include <tchar.h>
+#else
+#  include <signal.h>
+#  include <sys/time.h>
+#  include <sys/resource.h>
+#endif /* WIN32 */
+#ifdef HAVE_POLL
+#  include <poll.h>
+#endif /* HAVE_POLL */
+
+
+/*
+ * Local functions...
+ */
+
+#ifdef HAVE_SSL
+#  ifdef HAVE_GNUTLS
+#    include "tls-gnutls.c"
+#  elif defined(HAVE_CDSASSL)
+#    include "tls-darwin.c"
+#  else
+#    include "tls-sspi.c"
+#  endif /* HAVE_GNUTLS */
+#endif /* HAVE_SSL */
+
+
+/*
+ * End of "$Id: tls.c 11841 2014-04-29 16:39:25Z msweet $".
+ */
index 131b0741cb6a806fddd514d11f7f371ab950b25d..e3e7c83479b52074268bf4ee39b7135a361b8ccf 100644 (file)
@@ -1,26 +1,18 @@
 /*
- * "$Id: transcode.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: transcode.c 11594 2014-02-14 20:09:01Z msweet $"
  *
- *   Transcoding support for CUPS.
+ * Transcoding support for CUPS.
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   _cupsCharmapFlush() - Flush all character set maps out of cache.
- *   cupsCharsetToUTF8() - Convert legacy character set to UTF-8.
- *   cupsUTF8ToCharset() - Convert UTF-8 to legacy character set.
- *   cupsUTF8ToUTF32()   - Convert UTF-8 to UTF-32.
- *   cupsUTF32ToUTF8()   - Convert UTF-32 to UTF-8.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -117,7 +109,7 @@ cupsCharsetToUTF8(
   if (encoding == CUPS_UTF8 || encoding <= CUPS_US_ASCII ||
       encoding >= CUPS_ENCODING_VBCS_END)
   {
-    strlcpy((char *)dest, src, maxout);
+    strlcpy((char *)dest, src, (size_t)maxout);
     return ((int)strlen((char *)dest));
   }
 
@@ -141,11 +133,11 @@ cupsCharsetToUTF8(
 
       if (ch & 128)
       {
-       *destptr++ = 0xc0 | (ch >> 6);
-       *destptr++ = 0x80 | (ch & 0x3f);
+       *destptr++ = (cups_utf8_t)(0xc0 | (ch >> 6));
+       *destptr++ = (cups_utf8_t)(0x80 | (ch & 0x3f));
       }
       else
-       *destptr++ = ch;
+       *destptr++ = (cups_utf8_t)ch;
     }
 
     *destptr = '\0';
@@ -174,7 +166,7 @@ cupsCharsetToUTF8(
     char *altdestptr = (char *)dest;   /* Silence bogus GCC type-punned */
 
     srclen       = strlen(src);
-    outBytesLeft = maxout - 1;
+    outBytesLeft = (size_t)maxout - 1;
 
     iconv(map_to_utf8, (char **)&src, &srclen, &altdestptr, &outBytesLeft);
     *altdestptr = '\0';
@@ -234,7 +226,7 @@ cupsUTF8ToCharset(
   if (encoding == CUPS_UTF8 ||
       encoding >= CUPS_ENCODING_VBCS_END)
   {
-    strlcpy(dest, (char *)src, maxout);
+    strlcpy(dest, (char *)src, (size_t)maxout);
     return ((int)strlen(dest));
   }
 
@@ -262,7 +254,7 @@ cupsUTF8ToCharset(
        ch = ((ch & 0x1f) << 6) | (*src++ & 0x3f);
 
        if (ch < maxch)
-          *destptr++ = ch;
+          *destptr++ = (char)ch;
        else
           *destptr++ = '?';
       }
@@ -270,7 +262,7 @@ cupsUTF8ToCharset(
                (ch & 0xf8) == 0xf0)
         *destptr++ = '?';
       else if (!(ch & 0x80))
-       *destptr++ = ch;
+       *destptr++ = (char)ch;
     }
 
     *destptr = '\0';
@@ -299,7 +291,7 @@ cupsUTF8ToCharset(
     char *altsrc = (char *)src;                /* Silence bogus GCC type-punned */
 
     srclen       = strlen((char *)src);
-    outBytesLeft = maxout - 1;
+    outBytesLeft = (size_t)maxout - 1;
 
     iconv(map_from_utf8, &altsrc, &srclen, &destptr, &outBytesLeft);
     *destptr = '\0';
@@ -404,7 +396,7 @@ cupsUTF8ToUTF32(
        return (-1);
       }
 
-      ch32 = ((ch & 0x1f) << 6) | (next & 0x3f);
+      ch32 = (cups_utf32_t)((ch & 0x1f) << 6) | (cups_utf32_t)(next & 0x3f);
 
      /*
       * Check for non-shortest form (invalid UTF-8)...
@@ -436,7 +428,7 @@ cupsUTF8ToUTF32(
        return (-1);
       }
 
-      ch32 = ((ch & 0x0f) << 6) | (next & 0x3f);
+      ch32 = (cups_utf32_t)((ch & 0x0f) << 6) | (cups_utf32_t)(next & 0x3f);
 
       next = *src++;
       if ((next & 0xc0) != 0x80)
@@ -446,7 +438,7 @@ cupsUTF8ToUTF32(
        return (-1);
       }
 
-      ch32 = (ch32 << 6) | (next & 0x3f);
+      ch32 = (ch32 << 6) | (cups_utf32_t)(next & 0x3f);
 
      /*
       * Check for non-shortest form (invalid UTF-8)...
@@ -478,7 +470,7 @@ cupsUTF8ToUTF32(
        return (-1);
       }
 
-      ch32 = ((ch & 0x07) << 6) | (next & 0x3f);
+      ch32 = (cups_utf32_t)((ch & 0x07) << 6) | (cups_utf32_t)(next & 0x3f);
 
       next = *src++;
       if ((next & 0xc0) != 0x80)
@@ -488,7 +480,7 @@ cupsUTF8ToUTF32(
        return (-1);
       }
 
-      ch32 = (ch32 << 6) | (next & 0x3f);
+      ch32 = (ch32 << 6) | (cups_utf32_t)(next & 0x3f);
 
       next = *src++;
       if ((next & 0xc0) != 0x80)
@@ -498,7 +490,7 @@ cupsUTF8ToUTF32(
        return (-1);
       }
 
-      ch32 = (ch32 << 6) | (next & 0x3f);
+      ch32 = (ch32 << 6) | (cups_utf32_t)(next & 0x3f);
 
      /*
       * Check for non-shortest form (invalid UTF-8)...
@@ -716,5 +708,5 @@ cupsUTF32ToUTF8(
 
 
 /*
- * End of "$Id: transcode.c 10996 2013-05-29 11:51:34Z msweet $"
+ * End of "$Id: transcode.c 11594 2014-02-14 20:09:01Z msweet $"
  */
index a5b2c93caa5cdc1d958ec04589e82d150a054361..eef1b311e0b3812c9a0b74ff439c2cc132bf2c18 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: usersys.c 11909 2014-06-09 18:58:16Z msweet $"
+ * "$Id: usersys.c 11908 2014-06-09 18:57:44Z msweet $"
  *
  * User, system, and password routines for CUPS.
  *
@@ -51,8 +51,8 @@ static void   cups_read_client_conf(cups_file_t *fp,
                                       const char *cups_gssservicename,
 #endif /* HAVE_GSSAPI */
                                      const char *cups_anyroot,
-                                     const char *cups_expiredroot,
-                                     const char *cups_expiredcerts);
+                                     const char *cups_expiredcerts,
+                                     const char *cups_validatecerts);
 
 
 /*
@@ -678,7 +678,7 @@ _cupsGetPassword(const char *prompt)        /* I - Prompt string */
   }
 
   noecho = original;
-  noecho.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
+  noecho.c_lflag &= (tcflag_t)~(ICANON | ECHO | ECHOE | ISIG);
 
   if (tcsetattr(tty, TCSAFLUSH, &noecho))
   {
@@ -831,8 +831,8 @@ _cupsSetDefaults(void)
                *cups_gssservicename,   /* CUPS_GSSSERVICENAME env var */
 #endif /* HAVE_GSSAPI */
                *cups_anyroot,          /* CUPS_ANYROOT env var */
-               *cups_expiredroot,      /* CUPS_EXPIREDROOT env var */
-               *cups_expiredcerts;     /* CUPS_EXPIREDCERTS env var */
+               *cups_expiredcerts,     /* CUPS_EXPIREDCERTS env var */
+               *cups_validatecerts;    /* CUPS_VALIDATECERTS env var */
   char         filename[1024];         /* Filename */
   _cups_globals_t *cg = _cupsGlobals();        /* Pointer to library globals */
 
@@ -849,9 +849,9 @@ _cupsSetDefaults(void)
   cups_gssservicename = getenv("CUPS_GSSSERVICENAME");
 #endif /* HAVE_GSSAPI */
   cups_anyroot       = getenv("CUPS_ANYROOT");
-  cups_expiredroot    = getenv("CUPS_EXPIREDROOT");
   cups_expiredcerts   = getenv("CUPS_EXPIREDCERTS");
   cups_user           = getenv("CUPS_USER");
+  cups_validatecerts  = getenv("CUPS_VALIDATECERTS");
 
  /*
   * Then, if needed, read the ~/.cups/client.conf or /etc/cups/client.conf
@@ -899,8 +899,7 @@ _cupsSetDefaults(void)
 #ifdef HAVE_GSSAPI
                          cups_gssservicename,
 #endif /* HAVE_GSSAPI */
-                         cups_anyroot, cups_expiredroot,
-                         cups_expiredcerts);
+                         cups_anyroot, cups_expiredcerts, cups_validatecerts);
     cupsFileClose(fp);
   }
 }
@@ -922,8 +921,8 @@ cups_read_client_conf(
                                        /* I - CUPS_GSSSERVICENAME env var */
 #endif /* HAVE_GSSAPI */
     const char     *cups_anyroot,      /* I - CUPS_ANYROOT env var */
-    const char     *cups_expiredroot,  /* I - CUPS_EXPIREDROOT env var */
-    const char     *cups_expiredcerts) /* I - CUPS_EXPIREDCERTS env var */
+    const char     *cups_expiredcerts, /* I - CUPS_EXPIREDCERTS env var */
+    const char      *cups_validatecerts)/* I - CUPS_VALIDATECERTS env var */
 {
   int  linenum;                        /* Current line number */
   char line[1024],                     /* Line from file */
@@ -934,8 +933,8 @@ cups_read_client_conf(
 #endif /* !__APPLE__ */
        user[256],                      /* User value */
        any_root[1024],                 /* AllowAnyRoot value */
-       expired_root[1024],             /* AllowExpiredRoot value */
-       expired_certs[1024];            /* AllowExpiredCerts value */
+       expired_certs[1024],            /* AllowExpiredCerts value */
+       validate_certs[1024];           /* ValidateCerts value */
 #ifdef HAVE_GSSAPI
   char gss_service_name[32];           /* GSSServiceName value */
 #endif /* HAVE_GSSAPI */
@@ -976,18 +975,17 @@ cups_read_client_conf(
       strlcpy(any_root, value, sizeof(any_root));
       cups_anyroot = any_root;
     }
-    else if (!cups_expiredroot && !_cups_strcasecmp(line, "AllowExpiredRoot") &&
-             value)
-    {
-      strlcpy(expired_root, value, sizeof(expired_root));
-      cups_expiredroot = expired_root;
-    }
     else if (!cups_expiredcerts && !_cups_strcasecmp(line, "AllowExpiredCerts") &&
              value)
     {
       strlcpy(expired_certs, value, sizeof(expired_certs));
       cups_expiredcerts = expired_certs;
     }
+    else if (!cups_validatecerts && !_cups_strcasecmp(line, "ValidateCerts") && value)
+    {
+      strlcpy(validate_certs, value, sizeof(validate_certs));
+      cups_validatecerts = validate_certs;
+    }
 #ifdef HAVE_GSSAPI
     else if (!cups_gssservicename && !_cups_strcasecmp(line, "GSSServiceName") &&
              value)
@@ -1116,18 +1114,18 @@ cups_read_client_conf(
                   !_cups_strcasecmp(cups_anyroot, "on")  ||
                   !_cups_strcasecmp(cups_anyroot, "true");
 
-  if (cups_expiredroot)
-    cg->expired_root  = !_cups_strcasecmp(cups_expiredroot, "yes") ||
-                       !_cups_strcasecmp(cups_expiredroot, "on")  ||
-                       !_cups_strcasecmp(cups_expiredroot, "true");
-
   if (cups_expiredcerts)
     cg->expired_certs = !_cups_strcasecmp(cups_expiredcerts, "yes") ||
                        !_cups_strcasecmp(cups_expiredcerts, "on")  ||
                        !_cups_strcasecmp(cups_expiredcerts, "true");
+
+  if (cups_validatecerts)
+    cg->validate_certs = !_cups_strcasecmp(cups_validatecerts, "yes") ||
+                        !_cups_strcasecmp(cups_validatecerts, "on")  ||
+                        !_cups_strcasecmp(cups_validatecerts, "true");
 }
 
 
 /*
- * End of "$Id: usersys.c 11909 2014-06-09 18:58:16Z msweet $".
+ * End of "$Id: usersys.c 11908 2014-06-09 18:57:44Z msweet $".
  */
index 602b6b683869befc3437bdc79324bbb24ca2348a..753fbbccc7a50d56ac278f27c0c9e1b8696478f1 100644 (file)
@@ -1,54 +1,18 @@
 /*
- * "$Id: util.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: util.c 12073 2014-07-31 00:58:00Z msweet $"
  *
- *   Printing utilities for CUPS.
+ * Printing utilities for CUPS.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   cupsCancelJob()        - Cancel a print job on the default server.
- *   cupsCancelJob2()       - Cancel or purge a print job.
- *   cupsCreateJob()        - Create an empty job for streaming.
- *   cupsFinishDocument()   - Finish sending a document.
- *   cupsFreeJobs()         - Free memory used by job data.
- *   cupsGetClasses()       - Get a list of printer classes from the default
- *                            server.
- *   cupsGetDefault()       - Get the default printer or class for the default
- *                            server.
- *   cupsGetDefault2()      - Get the default printer or class for the specified
- *                            server.
- *   cupsGetJobs()          - Get the jobs from the default server.
- *   cupsGetJobs2()         - Get the jobs from the specified server.
- *   cupsGetPPD()           - Get the PPD file for a printer on the default
- *                            server.
- *   cupsGetPPD2()          - Get the PPD file for a printer from the specified
- *                            server.
- *   cupsGetPPD3()          - Get the PPD file for a printer on the specified
- *                            server if it has changed.
- *   cupsGetPrinters()      - Get a list of printers from the default server.
- *   cupsGetServerPPD()     - Get an available PPD file from the server.
- *   cupsPrintFile()        - Print a file to a printer or class on the default
- *                            server.
- *   cupsPrintFile2()       - Print a file to a printer or class on the
- *                            specified server.
- *   cupsPrintFiles()       - Print one or more files to a printer or class on
- *                            the default server.
- *   cupsPrintFiles2()      - Print one or more files to a printer or class on
- *                            the specified server.
- *   cupsStartDocument()    - Add a document to a job created with
- *                            cupsCreateJob().
- *   cups_get_printer_uri() - Get the printer-uri-supported attribute for the
- *                            first printer in a class.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -324,7 +288,8 @@ cupsFreeJobs(int        num_jobs,   /* I - Number of jobs */
 /*
  * 'cupsGetClasses()' - Get a list of printer classes from the default server.
  *
- * This function is deprecated - use @link cupsGetDests@ instead.
+ * This function is deprecated and no longer returns a list of printer
+ * classes - use @link cupsGetDests@ instead.
  *
  * @deprecated@
  */
@@ -332,84 +297,10 @@ cupsFreeJobs(int        num_jobs, /* I - Number of jobs */
 int                                    /* O - Number of classes */
 cupsGetClasses(char ***classes)                /* O - Classes */
 {
-  int          n;                      /* Number of classes */
-  ipp_t                *request,               /* IPP Request */
-               *response;              /* IPP Response */
-  ipp_attribute_t *attr;               /* Current attribute */
-  char         **temp;                 /* Temporary pointer */
-  http_t       *http;                  /* Connection to server */
-
-
-  if (!classes)
-  {
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
-
-    return (0);
-  }
-
-  *classes = NULL;
-
-  if ((http = _cupsConnect()) == NULL)
-    return (0);
-
- /*
-  * Build a CUPS_GET_CLASSES request, which requires the following
-  * attributes:
-  *
-  *    attributes-charset
-  *    attributes-natural-language
-  *    requested-attributes
-  */
-
-  request = ippNewRequest(IPP_OP_CUPS_GET_CLASSES);
-
-  ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
-               "requested-attributes", NULL, "printer-name");
-
- /*
-  * Do the request and get back a response...
-  */
-
-  n = 0;
+  if (classes)
+    *classes = NULL;
 
-  if ((response = cupsDoRequest(http, request, "/")) != NULL)
-  {
-    for (attr = response->attrs; attr != NULL; attr = attr->next)
-      if (attr->name != NULL &&
-          _cups_strcasecmp(attr->name, "printer-name") == 0 &&
-          attr->value_tag == IPP_TAG_NAME)
-      {
-        if (n == 0)
-         temp = malloc(sizeof(char *));
-       else
-         temp = realloc(*classes, sizeof(char *) * (n + 1));
-
-       if (temp == NULL)
-       {
-        /*
-         * Ran out of memory!
-         */
-
-          while (n > 0)
-         {
-           n --;
-           free((*classes)[n]);
-         }
-
-         free(*classes);
-         ippDelete(response);
-         return (0);
-       }
-
-        *classes = temp;
-        temp[n]  = strdup(attr->values[0].string.text);
-       n ++;
-      }
-
-    ippDelete(response);
-  }
-
-  return (n);
+  return (0);
 }
 
 
@@ -748,7 +639,7 @@ cupsGetJobs2(http_t     *http,              /* I - Connection to server or @code CUPS_HTTP_D
       if (n == 0)
         temp = malloc(sizeof(cups_job_t));
       else
-       temp = realloc(*jobs, sizeof(cups_job_t) * (n + 1));
+       temp = realloc(*jobs, sizeof(cups_job_t) * (size_t)(n + 1));
 
       if (!temp)
       {
@@ -1059,6 +950,18 @@ cupsGetPPD3(http_t     *http,             /* I  - HTTP connection or @code CUPS_HTTP_DEFAUL
   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...
   */
@@ -1170,7 +1073,8 @@ cupsGetPPD3(http_t     *http,             /* I  - HTTP connection or @code CUPS_HTTP_DEFAUL
 /*
  * 'cupsGetPrinters()' - Get a list of printers from the default server.
  *
- * This function is deprecated - use @link cupsGetDests@ instead.
+ * This function is deprecated and no longer returns a list of printers - use
+ * @link cupsGetDests@ instead.
  *
  * @deprecated@
  */
@@ -1178,98 +1082,10 @@ cupsGetPPD3(http_t     *http,           /* I  - HTTP connection or @code CUPS_HTTP_DEFAUL
 int                                    /* O - Number of printers */
 cupsGetPrinters(char ***printers)      /* O - Printers */
 {
-  int          n;                      /* Number of printers */
-  ipp_t                *request,               /* IPP Request */
-               *response;              /* IPP Response */
-  ipp_attribute_t *attr;               /* Current attribute */
-  char         **temp;                 /* Temporary pointer */
-  http_t       *http;                  /* Connection to server */
+  if (printers)
+    *printers = NULL;
 
-
- /*
-  * Range check input...
-  */
-
-  if (!printers)
-  {
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
-
-    return (0);
-  }
-
-  *printers = NULL;
-
- /*
-  * Try to connect to the server...
-  */
-
-  if ((http = _cupsConnect()) == NULL)
-    return (0);
-
- /*
-  * Build a CUPS_GET_PRINTERS request, which requires the following
-  * attributes:
-  *
-  *    attributes-charset
-  *    attributes-natural-language
-  *    requested-attributes
-  */
-
-  request = ippNewRequest(IPP_OP_CUPS_GET_PRINTERS);
-
-  ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
-               "requested-attributes", NULL, "printer-name");
-
-  ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_ENUM,
-                "printer-type", 0);
-
-  ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_ENUM,
-                "printer-type-mask", CUPS_PRINTER_CLASS);
-
- /*
-  * Do the request and get back a response...
-  */
-
-  n = 0;
-
-  if ((response = cupsDoRequest(http, request, "/")) != NULL)
-  {
-    for (attr = response->attrs; attr != NULL; attr = attr->next)
-      if (attr->name != NULL &&
-          _cups_strcasecmp(attr->name, "printer-name") == 0 &&
-          attr->value_tag == IPP_TAG_NAME)
-      {
-        if (n == 0)
-         temp = malloc(sizeof(char *));
-       else
-         temp = realloc(*printers, sizeof(char *) * (n + 1));
-
-       if (temp == NULL)
-       {
-        /*
-         * Ran out of memory!
-         */
-
-         while (n > 0)
-         {
-           n --;
-           free((*printers)[n]);
-         }
-
-         free(*printers);
-         ippDelete(response);
-         return (0);
-       }
-
-        *printers = temp;
-        temp[n]   = strdup(attr->values[0].string.text);
-       n ++;
-      }
-
-    ippDelete(response);
-  }
-
-  return (n);
+  return (0);
 }
 
 
@@ -1510,7 +1326,7 @@ cupsPrintFiles2(
 
     while (status == HTTP_STATUS_CONTINUE &&
           (bytes = cupsFileRead(fp, buffer, sizeof(buffer))) > 0)
-      status = cupsWriteRequestData(http, buffer, bytes);
+      status = cupsWriteRequestData(http, buffer, (size_t)bytes);
 
     cupsFileClose(fp);
 
@@ -1601,7 +1417,7 @@ cupsStartDocument(
   if (format)
     ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE,
                  "document-format", NULL, format);
-  ippAddBoolean(request, IPP_TAG_OPERATION, "last-document", last_document);
+  ippAddBoolean(request, IPP_TAG_OPERATION, "last-document", (char)last_document);
 
  /*
   * Send and delete the request, then return the status...
@@ -1652,20 +1468,15 @@ cups_get_printer_uri(
                };
 
 
-  DEBUG_printf(("7cups_get_printer_uri(http=%p, name=\"%s\", host=%p, "
-                "hostsize=%d, resource=%p, resourcesize=%d, depth=%d)",
-               http, name, host, hostsize, resource, resourcesize, depth));
+  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)
+  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);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unable to create printer-uri"), 1);
 
     *host     = '\0';
     *resource = '\0';
@@ -1673,7 +1484,7 @@ cups_get_printer_uri(
     return (0);
   }
 
-  DEBUG_printf(("9cups_get_printer_uri: printer-uri=\"%s\"", uri));
+  DEBUG_printf(("5cups_get_printer_uri: printer-uri=\"%s\"", uri));
 
  /*
   * Get the hostname and port number we are connected to...
@@ -1682,6 +1493,8 @@ cups_get_printer_uri(
   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:
@@ -1694,27 +1507,25 @@ cups_get_printer_uri(
 
   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_URI, "printer-uri", NULL, uri);
 
-  ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
-                "requested-attributes",
-               sizeof(requested_attrs) / sizeof(requested_attrs[0]),
-               NULL, requested_attrs);
+  ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requested-attributes", sizeof(requested_attrs) / sizeof(requested_attrs[0]), NULL, requested_attrs);
 
  /*
   * Do the request and get back a response...
   */
 
-  snprintf(resource, resourcesize, "/printers/%s", name);
+  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)
+    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) ||
@@ -1727,27 +1538,25 @@ cups_get_printer_uri(
       * 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);
+      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)
+    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 ++)
       {
-       httpSeparateURI(HTTP_URI_CODING_ALL, attr->values[i].string.text,
-                       scheme, sizeof(scheme), username, sizeof(username),
-                       host, hostsize, port, resource, resourcesize);
+        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))
        {
         /*
@@ -1756,6 +1565,7 @@ cups_get_printer_uri(
 
           ippDelete(response);
 
+         DEBUG_printf(("5cups_get_printer_uri: Found printer member with host=\"%s\", port=%d, resource=\"%s\"", host, *port, resource));
          return (1);
        }
       }
@@ -1780,9 +1590,7 @@ cups_get_printer_uri(
 
            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)
+           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");
 
@@ -1811,25 +1619,21 @@ cups_get_printer_uri(
        }
       }
     }
-    else if ((attr = ippFindAttribute(response, "printer-uri-supported",
-                                      IPP_TAG_URI)) != NULL)
+    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);
+      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);
+        _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);
       }
 
@@ -1845,10 +1649,11 @@ cups_get_printer_uri(
   *host     = '\0';
   *resource = '\0';
 
+  DEBUG_puts("5cups_get_printer_uri: Printer URI not found.");
   return (0);
 }
 
 
 /*
- * End of "$Id: util.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: util.c 12073 2014-07-31 00:58:00Z msweet $".
  */
index fe2e30bf7acfca1c4b0d492633db2d42be73a792..7f61f6d18e547f0eec3c091cf44eb4587a26c75c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: versioning.h 11056 2013-06-25 14:27:30Z msweet $"
+ * "$Id: versioning.h 11232 2013-08-12 19:33:47Z msweet $"
  *
  *   API versioning definitions for CUPS.
  *
@@ -21,9 +21,9 @@
  * This header defines several constants - _CUPS_DEPRECATED,
  * _CUPS_DEPRECATED_MSG, _CUPS_INTERNAL_MSG, _CUPS_API_1_1, _CUPS_API_1_1_19,
  * _CUPS_API_1_1_20, _CUPS_API_1_1_21, _CUPS_API_1_2, _CUPS_API_1_3,
- * _CUPS_API_1_4, _CUPS_API_1_5, _CUPS_API_1_6, and _CUPS_API_1_7 - which add
- * compiler-specific attributes that flag functions that are deprecated, added
- * in particular releases, or internal to CUPS.
+ * _CUPS_API_1_4, _CUPS_API_1_5, _CUPS_API_1_6, _CUPS_API_1_7, and
+ * _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
  * the MAC_OS_X_VERSION_MIN_ALLOWED and MAC_OS_X_VERSION_MAX_ALLOWED constants
@@ -62,6 +62,7 @@
 #    define _CUPS_API_1_5 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
 #    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
 #  else
 #    define _CUPS_API_1_1_19
 #    define _CUPS_API_1_1_20
@@ -72,6 +73,7 @@
 #    define _CUPS_API_1_5
 #    define _CUPS_API_1_6
 #    define _CUPS_API_1_7
+#    define _CUPS_API_2_0
 #  endif /* __APPLE__ && !_CUPS_SOURCE */
 
 /*
 #endif /* !_CUPS_VERSIONING_H_ */
 
 /*
- * End of "$Id: versioning.h 11056 2013-06-25 14:27:30Z msweet $".
+ * End of "$Id: versioning.h 11232 2013-08-12 19:33:47Z msweet $".
  */
index 2587543a4519d81289a519890673ad845822c2d2..2d521fa2f2a69481d1c6b87e74d79bfec14a1a4e 100644 (file)
@@ -33,8 +33,6 @@ 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 0db512cc0015368b26ed09cf752507c9f2e96717..a6ba24d508858c198e6f1e6fd8a811a1e7798f94 100644 (file)
@@ -1,16 +1,16 @@
 #
-# "$Id: Makefile 11109 2013-07-08 21:15:13Z msweet $"
+# "$Id: Makefile 11930 2014-06-16 15:33:00Z msweet $"
 #
-#   Documentation makefile for CUPS.
+# Documentation makefile for CUPS.
 #
-#   Copyright 2007-2012 by Apple Inc.
-#   Copyright 1997-2007 by Easy Software Products.
+# Copyright 2007-2014 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/".
 #
 
 include ../Makedefs
@@ -20,6 +20,7 @@ include ../Makedefs
 #
 
 WEBPAGES       =       \
+                       apple-touch-icon.png \
                        cups.css \
                        cups-printable.css \
                        index.html \
@@ -61,14 +62,21 @@ HELPFILES   =       \
                        help/glossary.html \
                        help/kerberos.html \
                        help/license.html \
-                       help/man-cupsaccept.html \
                        help/man-backend.html \
                        help/man-cancel.html \
+                       help/man-classes.conf.html \
+                       help/man-client.conf.html \
+                       help/man-cups.html \
                        help/man-cups-config.html \
+                       help/man-cups-files.conf.html \
                        help/man-cups-lpd.html \
                        help/man-cups-snmp.html \
+                       help/man-cupsaccept.html \
                        help/man-cupsaddsmb.html \
+                       help/man-cupsd.conf.html \
                        help/man-cupsd.html \
+                       help/man-cupsd-helper.html \
+                       help/man-cupsd-logs.html \
                        help/man-cupsenable.html \
                        help/man-cupstestdsc.html \
                        help/man-cupstestppd.html \
@@ -81,7 +89,6 @@ HELPFILES     =       \
                        help/man-lpinfo.html \
                        help/man-lpmove.html \
                        help/man-lpoptions.html \
-                       help/man-lppasswd.html \
                        help/man-lpq.html \
                        help/man-lpr.html \
                        help/man-lprm.html \
@@ -94,6 +101,8 @@ HELPFILES    =       \
                        help/man-ppdi.html \
                        help/man-ppdmerge.html \
                        help/man-ppdpo.html \
+                       help/man-printers.conf.html \
+                       help/man-subscriptions.conf.html \
                        help/network.html \
                        help/options.html \
                        help/overview.html \
@@ -101,18 +110,7 @@ HELPFILES  =       \
                        help/postscript-driver.html \
                        help/ppd-compiler.html \
                        help/raster-driver.html \
-                       help/ref-access_log.html \
-                       help/ref-classes-conf.html \
-                       help/ref-client-conf.html \
-                       help/ref-cupsd-conf.html \
-                       help/ref-cups-files-conf.html \
-                       help/ref-error_log.html \
-                       help/ref-mailto-conf.html \
-                       help/ref-page_log.html \
                        help/ref-ppdcfile.html \
-                       help/ref-printers-conf.html \
-                       help/ref-snmp-conf.html \
-                       help/ref-subscriptions-conf.html \
                        help/security.html \
                        help/sharing.html \
                        help/spec-banner.html \
@@ -125,8 +123,7 @@ HELPFILES   =       \
                        help/spec-ppd.html \
                        help/spec-raster.html \
                        help/spec-stp.html \
-                       help/translation.html \
-                       help/whatsnew.html
+                       help/translation.html
 
 
 #
diff --git a/doc/apple-touch-icon.opacity b/doc/apple-touch-icon.opacity
new file mode 100644 (file)
index 0000000..a1d742d
Binary files /dev/null and b/doc/apple-touch-icon.opacity differ
diff --git a/doc/apple-touch-icon.png b/doc/apple-touch-icon.png
new file mode 100644 (file)
index 0000000..e4d8f81
Binary files /dev/null and b/doc/apple-touch-icon.png differ
diff --git a/doc/ca/index.html.in b/doc/ca/index.html.in
deleted file mode 100644 (file)
index 87d18e5..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-<!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>Inici - 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;Inici&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;Administració&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;en&nbsp;línia&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;Tasques&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;Impressores&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-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 és el sistema d'impressió de codi obert i basat en estandards desenvolupat per
-<A HREF="http://www.apple.com/">Apple Inc.</A> per OS<SUP>&reg;</SUP> X and
-altres sistemes operatius basats en 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 per usuaris</H2>
-
-<P><A HREF="help/overview.html">Descripció general del CUPS</A></P>
-
-<P><A HREF="help/options.html">Impresió i opcions en linia de comandes</A></P>
-
-<P><A HREF="help/whatsnew.html">Novetats del CUPS 1.4</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Fòrum d'usuaris</A></P>
-
-</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
-
-<H2>CUPS per Administradors</H2>
-
-<P><A HREF="admin">Afegir impressores i classes</A></P>
-
-<P><A HREF="help/policies.html">Gestió de les polítiques de treball</A></P>
-
-<P><A HREF="help/accounting.html">Bàsic de comptes d'impressió</A></P>
-
-<P><A HREF="help/security.html">Seguritat del servidor</A></P>
-
-<P><A HREF="help/kerberos.html">Ús d'autenticació amb el Kerberos</A></P>
-
-<P><A HREF="help/network.html">Ús d'impressores en xarxa</A></P>
-
-<P><A HREF="help/ref-cupsd-conf.html">Referència del cupsd.conf</A></P>
-
-</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
-
-<H2>CUPS per desenvolupadors</H2>
-
-<P><A HREF="help/api-overview.html">Introducció a la programació amb CUPS</A></P>
-
-<P><A HREF="help/api-cups.html">La API de CUPS</A></P>
-
-<P><A HREF="help/api-filter.html">Programació de filtres i rerefons</A></P>
-
-<P><A HREF="help/api-httpipp.html">APIs per HTTP i IPP</A></P>
-
-<P><A HREF="help/api-ppd.html">API per PPD</A></P>
-
-<P><A HREF="help/api-raster.html">API per Raster</A></P>
-
-<P><A HREF="help/ref-ppdcfile.html">Referència del fitxer d'inf. del compilador del controlador per PPD</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Fòrum de desenvolupadors</A></P>
-
-</TD></TR>
-</TABLE>
-
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS i el seu logotip són marques registrades de
-<A HREF="http://www.apple.com">Apple Inc.</A> CUPS té copyright 2007-2014 d'Apple
-Inc. Tots els drets reservats.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/doc/cs/index.html.in b/doc/cs/index.html.in
deleted file mode 100644 (file)
index 5d2a8d0..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-<!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>Hlavní strana - 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;Hlavní strana&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;Administrace&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/classes/">&nbsp;&nbsp;Třídy tiskáren&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/help/">&nbsp;&nbsp;Nápověda&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;Úlohy&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;Tiskárny&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Hledat"
-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 je na bázi standardů otevřený zdrojový kód tiskového systému vyvinutý
-společností <A HREF="http://www.apple.com/">Apple Inc.</A> pro Mac OS<SUP>&reg;</SUP>
-X a jiné UNIX<SUP>&reg;</SUP>ové operační systémy.</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 pro uživatele</H2>
-
-<P><A HREF="help/overview.html">Popis CUPS</A></P>
-
-<P><A HREF="help/options.html">Příkazová řádka tisku a Možnosti</A></P>
-
-<P><A HREF="help/whatsnew.html">Co je nového v CUPS 1.6</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Uživatelské fórum</A></P>
-
-</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
-
-<H2>CUPS pro administrátory</H2>
-
-<P><A HREF="admin">Přidání tiskáren a tříd</A></P>
-
-<P><A HREF="help/policies.html">Správa politik</A></P>
-
-<P><A HREF="help/accounting.html">Základní účtování tiskáren</A></P>
-
-<P><A HREF="help/security.html">Zabezpečení serveru</A></P>
-
-<P><A HREF="help/kerberos.html">Použití ověřování pomocí protokolu Kerberos</A></P>
-
-<P><A HREF="help/network.html">Použití síťových tiskáren</A></P>
-
-<P><A HREF="help/ref-cupsd-conf.html">Konfigurační soubor cupsd.conf</A></P>
-
-</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
-
-<H2>CUPS pro vývojáře</H2>
-
-<P><A HREF="help/api-overview.html">Úvod do CUPS programování</A></P>
-
-<P><A HREF="help/api-cups.html">CUPS API knihovny</A></P>
-
-<P><A HREF="help/api-filter.html">Programování filtrů a backendů</A></P>
-
-<P><A HREF="help/api-httpipp.html">HTTP a IPP API knihovny</A></P>
-
-<P><A HREF="help/api-ppd.html">PPD API knihovny</A></P>
-
-<P><A HREF="help/api-raster.html">Raster API knihovny</A></P>
-
-<P><A HREF="help/ref-ppdcfile.html">PPD kompilátor Driver Information File Reference</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Vývojářské fórum</A></P>
-
-</TD></TR>
-</TABLE>
-
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS a logo CUPS jsou ochranné známky společnosti
-<A HREF="http://www.apple.com">Apple Inc.</A> CUPS je chráněn autorskými
-právy 2007-2014 Apple Inc. Všechna práva vyhrazena.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
index 42ea2bee15c2918ca0a145015673741266f826da..262e625f4d8e2f43e4501bef798e5e070caa618e 100644 (file)
@@ -29,7 +29,19 @@ 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;
@@ -68,7 +80,7 @@ A:link:hover IMG {
 }
 
 A:link, A:visited {
-  font-weight: normal;
+  font-weight: inherit;
   text-decoration: none;
 }
 
index 815c193c3f53431333a209a580c7bf3fc57193ae..da6ac1594e8d5b3886cfd0b2b5ea8d0ae452993c 100644 (file)
@@ -1,7 +1,109 @@
+/* Layout CSS */
+.header {
+  background: rgba(46,46,46,.9);
+  box-shadow: 0px 2px 5px rgba(0,0,0,0.25);
+  color: white;
+  left: 0;
+  margin-bottom: 20px;
+  padding: 0px;
+  position: fixed;
+  right: 0;
+  top: 0;
+  width: 100%;
+}
+.header ul {
+  list-style: none;
+  margin: 0px;
+  -webkit-margin-before: 0;
+  -webkit-margin-after: 0;
+  -webkit-margin-start: 0;
+  -webkit-margin-end: 5px;
+  -webkit-padding-start: 0;
+}
+.header ul li {
+  float: left;
+}
+.header a {
+  display: block;
+  padding: 5px 10px !important;
+}
+.header a:link, .header a:visited {
+  color: white !important;
+  text-decoration: none !important;
+}
+.header a:hover {
+  background: #cccccc !important;
+  color: #333333 !important;
+  text-decoration: none !important;
+}
+.header a.active {
+  background: white !important;
+  box-shadow: rgba(0,0,0,0.1) 0px 0px 10px 0px inset;
+  color: black !important;
+  text-decoration: none !important;
+}
+
+.body {
+  padding: 40px 20px;
+}
+
+.footer {
+  background: rgba(46,46,46,.9);
+  bottom: 0;
+  box-shadow: 0px -2px 5px rgba(0,0,0,0.25);
+  color: #cccccc;
+  font-size: 10px;
+  height: 20px;
+  left: 0;
+  padding: 10px 10px 3px;
+  position: fixed;
+  width: 100%;
+}
+.footer a:link, footer a:hover, .footer a:visited {
+  color: white !important;
+  text-decoration: none !important;
+}
+
+.row {
+  width: 100%;
+  *zoom: 1;
+}
+.row:after {
+  clear: both;
+}
+
+.row .thirds {
+  float: left;
+  margin-left: 0.5%;
+  margin-right: 0;
+  width: 33%;
+}
+.row .thirds:first-child {
+  margin-left: 0;
+}
+
+.row .halves {
+  float: left;
+  margin-left: 0.5%;
+  margin-right: 0;
+  width: 49.75%;
+}
+.row .halves:first-child {
+  margin-left: 0;
+}
+.mobile {
+  display: none;
+}
+.no-mobile {
+  display: inherit;
+}
+
+/* Appearance CSS */
 BODY {
   background: white;
   color: black;
   font-family: lucida grande, geneva, helvetica, arial, sans-serif;
+  margin: 0;
 }
 
 H1, H2, H3, H4, H5, H6, P, TD, TH {
@@ -31,6 +133,18 @@ P.example {
   margin-left: 36pt;
 }
 
+DL.man DD {
+  margin-left: 5em;
+}
+
+DL.man DT {
+  margin-left: 0;
+}
+
+PRE.man {
+  margin: 0;
+}
+
 PRE.example {
   background: white;
   border: dotted thin #999999;
@@ -255,7 +369,7 @@ H2.title, H3.title {
   border-bottom: solid 1pt #999999;
 }
 
-DIV.indent, TABLE.indent {
+TABLE.indent {
   margin-top: 2em;
   margin-left: auto;
   margin-right: auto;
@@ -460,3 +574,69 @@ div.body dt {
 div.body dd {
   margin-bottom: 0.5em;
 }
+/* iPhone/iPod touch overrides */
+@media only screen and (min-device-width: 320px) and (max-device-width: 480px),
+       only screen and (min-device-width: 320px) and (max-device-width: 568px) {
+  .mobile {
+    display: inherit;
+  }
+  .no-mobile {
+    display: none;
+  }
+
+  .header {
+    margin: 0;
+    position: relative;
+  }
+  .header ul li {
+    float: none;
+  }
+
+  .body {
+    paddng: 0px;
+  }
+
+  .footer {
+    font-size: 10px;
+    height: auto;
+    position: relative;
+  }
+
+  .row .thirds, .row .halves {
+    float: none;
+    margin: 0;
+    width: 100%;
+  }
+
+  DIV.sidebar {
+    float: none;
+    margin-left: 0;
+    max-width: 100%;
+    min-width: 100%;
+    width: 100%;
+  }
+
+  BLOCKQUOTE {
+    margin: 0;
+  }
+
+  P.example {
+    margin-left: 0;
+  }
+
+  PRE.command, PRE.example, PRE.man {
+    margin-left: 0;
+    white-space: pre-wrap;
+  }
+}
+
+/* iPad overrides */
+@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) {
+
+  .mobile {
+    display: inherit;
+  }
+  .no-mobile {
+    display: none;
+  }
+}
diff --git a/doc/de/index.html.in b/doc/de/index.html.in
deleted file mode 100644 (file)
index 5dd6e2d..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-<!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;Startseite&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;Verwaltung&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/classes/">&nbsp;&nbsp;Klassen&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/help/">&nbsp;&nbsp;Online-&nbsp;Hilfe&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;Aufträge&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;Drucker&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-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 ist das auf Standards basierte, Opensource-Drucksystem, welches von
-<A HREF="http://www.apple.com/">Apple Inc.</A> für Mac OS<SUP>&reg;</SUP> X und
-andere UNIX<SUP>&reg;</SUP>-ähnliche Betriebssysteme entwickelt wird.</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 für Benutzer</H2>
-
-<P><A HREF="help/overview.html">CUPS Übersicht</A></P>
-
-<P><A HREF="help/options.html">Kommandozeilendruck und Einstellungen</A></P>
-
-<P><A HREF="help/whatsnew.html">Neues in CUPS 1.7</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Benutzerforum</A></P>
-
-</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
-
-<H2>CUPS für Administratoren</H2>
-
-<P><A HREF="admin">Drucker und Klassen hinzufügen</A></P>
-
-<P><A HREF="help/policies.html">Betriebsrichtlinien verwalten</A></P>
-
-<P><A HREF="help/accounting.html">Basiswissen Druckabrechnung</A></P>
-
-<P><A HREF="help/security.html">Sicherheit des Servers</A></P>
-
-<P><A HREF="help/kerberos.html">Verwenden der Kerberos Authentifizierung</A></P>
-
-<P><A HREF="help/network.html">Benutzen von Netzwerkdruckern</A></P>
-
-<P><A HREF="help/ref-cupsd-conf.html">cupsd.conf Referenz</A></P>
-
-</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
-
-<H2>CUPS für Entwickler</H2>
-
-<P><A HREF="help/api-overview.html">Einführung in die CUPS-Programmierung</A></P>
-
-<P><A HREF="help/api-cups.html">CUPS-API</A></P>
-
-<P><A HREF="help/api-filter.html">Filter- und Backend-Programmierung</A></P>
-
-<P><A HREF="help/api-httpipp.html">HTTP- und IPP-APIs</A></P>
-
-<P><A HREF="help/api-ppd.html">PPD-API</A></P>
-
-<P><A HREF="help/api-raster.html">Raster-API</A></P>
-
-<P><A HREF="help/ref-ppdcfile.html">PPD Compiler Treiber Dateireferenz</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Entwicklerforum</A></P>
-
-</TD></TR>
-</TABLE>
-
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS und das CUPS Logo sind
-eingetragene Warenzeichen der <A HREF="http://www.apple.com">Apple Inc.</A>
-CUPS ist urheberrechtlich geschützt 2007-2014 von Apple Inc, alle Rechte vorbehalten.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/doc/es/index.html.in b/doc/es/index.html.in
deleted file mode 100644 (file)
index e7dc3a5..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-<!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>Inicio - 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;Inicio&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;Administraci&oacute;n&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/classes/">&nbsp;&nbsp;Clases&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/help/">&nbsp;&nbsp;Ayuda&nbsp;en&nbsp;l&iacute;nea&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;Trabajos&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;Impresoras&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-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 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<SUP>&reg;</SUP> X y otros sistemas operativos tipo 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 usuarios</H2>
-
-<P><A HREF="help/overview.html">Descripci&oacute;n de CUPS</A></P>
-
-<P><A HREF="help/options.html">Impresi&oacute;n desde la l&iacute;nea de comandos y opciones</A></P>
-
-<P><A HREF="help/whatsnew.html">Qu&eacute; hay de nuevo en CUPS 1.6</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Foro de usuarios</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">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/accounting.html">Contabilidad b&aacute;sica de impresora</A></P>
-
-<P><A HREF="help/security.html">Seguridad del servidor</A></P>
-
-<P><A HREF="help/kerberos.html">Usando autentificaci&oacute;n Kerberos</A></P>
-
-<P><A HREF="help/network.html">Usando impresoras de red</A></P>
-
-<P><A HREF="help/ref-cupsd-conf.html">Referencia de cupsd.conf</A></P>
-
-</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
-
-<H2>CUPS para desarrolladores</H2>
-
-<P><A HREF="help/api-overview.html">Introducci&oacute;n a la programaci&oacute;n de CUPS</A></P>
-
-<P><A HREF="help/api-cups.html">La API de CUPS</A></P>
-
-<P><A HREF="help/api-filter.html">Programaci&oacute;n de filtros y programas de conexi&oacute;n</A></P>
-
-<P><A HREF="help/api-httpipp.html">Las APIs HTTP e IPP</A></P>
-
-<P><A HREF="help/api-ppd.html">La API PPD</A></P>
-
-<P><A HREF="help/api-raster.html">La API Raster</A></P>
-
-<P><A HREF="help/ref-ppdcfile.html">Referencia del archivo de informaci&oacute;n del compilador de controladores PPD</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Foro de desarrollo</A></P>
-
-</TD></TR>
-</TABLE>
-
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS y el logo de CUPS son
-marcas registradas de <A HREF="http://www.apple.com">Apple Inc.</A> Los derechos
-de copia de CUPS 2007-2014 son de Apple Inc. Todos los derechos reservados.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/doc/fr/index.html.in b/doc/fr/index.html.in
deleted file mode 100644 (file)
index 73d5458..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-<!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>Accueil - 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;Accueil&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;Administration&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;Aide&nbsp;En&nbsp;Ligne&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;T&acirc;ches&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;Imprimantes&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-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 est le syst&egrave;me d'impression Open Source, bas&eacute; sur des standards, d&eacute;velopp&eacute; par
-<A HREF="http://www.apple.com/">Apple Inc.</A> pour Mac OS<SUP>&reg;</SUP> X et
-les autres OS UNIX<SUP>&reg;</SUP>-like.</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 pour les utilisateurs</H2>
-
-<P><A HREF="help/overview.html">Pr&eacute;sentation de CUPS</A></P>
-
-<P><A HREF="help/options.html">Impression en ligne de commande et options</A></P>
-
-<P><A HREF="help/whatsnew.html">Quoi de neuf dans CUPS 1.6</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Forum utilisateur</A></P>
-
-</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
-
-<H2>CUPS pour les administrateurs</H2>
-
-<P><A HREF="admin">Ajout d'imprimantes et de classes</A></P>
-
-<P><A HREF="help/policies.html">G&eacute;rer les politiques</A></P>
-
-<P><A HREF="help/accounting.html">Printer Accounting Basics</A></P>
-
-<P><A HREF="help/security.html">S&eacute;curit&eacute; du serveur</A></P>
-
-<P><A HREF="help/kerberos.html">Utiliser l'authentification Kerberos</A></P>
-
-<P><A HREF="help/network.html">Utiliser des imprimantes r&eacute;seaux</A></P>
-
-<P><A HREF="help/ref-cupsd-conf.html">R&eacute;f&eacute;rences sur cupsd.conf</A></P>
-
-</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
-
-<H2>CUPS pour les d&eacute;veloppeurs</H2>
-
-<P><A HREF="help/api-overview.html">Introduction &agrave; la programmation CUPS</A></P>
-
-<P><A HREF="help/api-cups.html">L'API CUPS</A></P>
-
-<P><A HREF="help/api-filter.html">Programmation de filtres et de backends</A></P>
-
-<P><A HREF="help/api-httpipp.html">Les API HTTP et IPP</A></P>
-
-<P><A HREF="help/api-ppd.html">L'API PPD</A></P>
-
-<P><A HREF="help/api-raster.html">L'API Raster</A></P>
-
-<P><A HREF="help/ref-ppdcfile.html">PPD Compiler Driver Information File Reference</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Forum d&eacute;veloppeurs</A></P>
-
-</TD></TR>
-</TABLE>
-
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS et le logo CUPS sont des marques d&eacute;pos&eacute;es de
-<A HREF="http://www.apple.com">Apple Inc.</A> CUPS est sous copyright 2007-2014 Apple
-Inc. Tous droits r&eacute;serv&eacute;s.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
index 0c1998ee3371223dd04ca0f4b0a89a8a5d66de6a..220c0f1cb0eddce2f0baaad444022fcb3041ecfd 100644 (file)
@@ -38,7 +38,19 @@ 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;
@@ -77,7 +89,7 @@ A:link:hover IMG {
 }
 
 A:link, A:visited {
-  font-weight: normal;
+  font-weight: inherit;
   text-decoration: none;
 }
 
index 82c740a86b8bba9743f945a9136964ee132482a2..63eb9ca6d029b40911680e6aad513d65d1f78722 100644 (file)
@@ -38,7 +38,19 @@ 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;
@@ -77,7 +89,7 @@ A:link:hover IMG {
 }
 
 A:link, A:visited {
-  font-weight: normal;
+  font-weight: inherit;
   text-decoration: none;
 }
 
index b355e108bc35d45855068cb64e17d8b4a3a1994b..dd9a4fb12d9e7e4a42369c7b6f2a076a133a0325 100644 (file)
@@ -38,7 +38,19 @@ 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;
@@ -77,7 +89,7 @@ A:link:hover IMG {
 }
 
 A:link, A:visited {
-  font-weight: normal;
+  font-weight: inherit;
   text-decoration: none;
 }
 
@@ -436,6 +448,7 @@ specific size.">cupsGetDestMediaByIndex</a></li>
        <li><a href="#cupsGetDestMediaCount" title="Get the number of sizes supported by a
 destination.">cupsGetDestMediaCount</a></li>
        <li><a href="#cupsGetDestMediaDefault" title="Get the default size for a destination.">cupsGetDestMediaDefault</a></li>
+       <li><a href="#cupsGetDestWithURI" title="Get a destination associated with a URI.">cupsGetDestWithURI</a></li>
        <li><a href="#cupsGetDests" title="Get the list of destinations from the default server.">cupsGetDests</a></li>
        <li><a href="#cupsGetDests2" title="Get the list of destinations from the specified server.">cupsGetDests2</a></li>
        <li><a href="#cupsGetJobs" title="Get the jobs from the default server.">cupsGetJobs</a></li>
@@ -457,6 +470,8 @@ for the given language.">cupsLangEncoding</a></li>
        <li><a href="#cupsLangFlush" title="Flush all language data out of the cache.">cupsLangFlush</a></li>
        <li><a href="#cupsLangFree" title="Free language data.">cupsLangFree</a></li>
        <li><a href="#cupsLangGet" title="Get a language.">cupsLangGet</a></li>
+       <li><a href="#cupsLocalizeDestMedia" title="Get the localized string for a destination media
+size.">cupsLocalizeDestMedia</a></li>
        <li><a href="#cupsLocalizeDestOption" title="Get the localized string for a destination
 option.">cupsLocalizeDestOption</a></li>
        <li><a href="#cupsLocalizeDestValue" title="Get the localized string for a destination
@@ -1830,7 +1845,8 @@ int cupsGetClasses (<br>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Number of classes</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">This function is deprecated - use <a href="#cupsGetDests"><code>cupsGetDests</code></a> instead.
+<p class="discussion">This function is deprecated and no longer returns a list of printer
+classes - use <a href="#cupsGetDests"><code>cupsGetDests</code></a> instead.
 
 </p>
 <h3 class="function"><a name="cupsGetDefault">cupsGetDefault</a></h3>
@@ -2080,6 +2096,29 @@ int cupsGetDestMediaDefault (<br>
 example, passing <code>CUPS_MEDIA_FLAGS_BORDERLESS</code> will return the default
 borderless size, typically US Letter or A4, but sometimes 4x6 photo media.
 
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0&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>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *uri<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>name</dt>
+<dd class="description">Desired printer name or <code>NULL</code></dd>
+<dt>uri</dt>
+<dd class="description">URI for the printer</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Destination or <code>NULL</code></p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">&quot;name&quot; is the desired name for the printer. If <code>NULL</code>, a name will be
+created using the URI.<br>
+<br>
+&quot;uri&quot; is the &quot;ipp&quot; or &quot;ipps&quot; URI for the printer.
+
 </p>
 <h3 class="function"><a name="cupsGetDests">cupsGetDests</a></h3>
 <p class="description">Get the list of destinations from the default server.</p>
@@ -2405,7 +2444,8 @@ int cupsGetPrinters (<br>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Number of printers</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">This function is deprecated - use <a href="#cupsGetDests"><code>cupsGetDests</code></a> instead.
+<p class="discussion">This function is deprecated and no longer returns a list of printers - use
+<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>
@@ -2485,6 +2525,37 @@ 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&nbsp;</span><a name="cupsLocalizeDestMedia">cupsLocalizeDestMedia</a></h3>
+<p class="description">Get the localized string for a destination media
+size.</p>
+<p class="code">
+const char *cupsLocalizeDestMedia (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;http_t *http,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_dest_t">cups_dest_t</a> *dest,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;unsigned flags,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_size_t">cups_size_t</a> *size<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">Connection to destination</dd>
+<dt>dest</dt>
+<dd class="description">Destination</dd>
+<dt>dinfo</dt>
+<dd class="description">Destination information</dd>
+<dt>flags</dt>
+<dd class="description">Media flags</dd>
+<dt>size</dt>
+<dd class="description">Media size</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Localized string</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The returned string is stored in the destination information and will become
+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>
 <p class="description">Get the localized string for a destination
 option.</p>
@@ -3156,8 +3227,8 @@ char *cupsTempFile (<br>
 <p class="description">Filename or <code>NULL</code> on error</p>
 <h4 class="discussion">Discussion</h4>
 <p class="discussion">The temporary filename is returned in the filename buffer.
-This function is deprecated - use <a href="#cupsTempFd"><code>cupsTempFd</code></a> or
-<a href="#cupsTempFile2"><code>cupsTempFile2</code></a> instead.
+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>
index fc7b72a40238f81886f28fe4202c5a0599afb1b8..309d09daae8fb0e69700bcb0e4c29c598f320382 100644 (file)
@@ -38,7 +38,19 @@ 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;
@@ -77,7 +89,7 @@ A:link:hover IMG {
 }
 
 A:link, A:visited {
-  font-weight: normal;
+  font-weight: inherit;
   text-decoration: none;
 }
 
index 566bc149df0576e3433f5a2312aed887cac970ef..416e2fbab410f8258dae27c095fc06895c99b373 100644 (file)
@@ -38,7 +38,19 @@ 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;
@@ -77,7 +89,7 @@ A:link:hover IMG {
 }
 
 A:link, A:visited {
-  font-weight: normal;
+  font-weight: inherit;
   text-decoration: none;
 }
 
index 9023f0e980a0c10487004ff658189ddf92d07243..083794489d2317921996092109aef3bac387b772 100644 (file)
@@ -38,7 +38,19 @@ 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;
@@ -77,7 +89,7 @@ A:link:hover IMG {
 }
 
 A:link, A:visited {
-  font-weight: normal;
+  font-weight: inherit;
   text-decoration: none;
 }
 
@@ -408,7 +420,10 @@ current thread.">cupsLastErrorString</a></li>
 specified listening socket.">httpAcceptConnection</a></li>
        <li><a href="#httpAddCredential" title="Allocates and adds a single credential to an array.">httpAddCredential</a></li>
        <li><a href="#httpAddrAny" title="Check for the &quot;any&quot; address.">httpAddrAny</a></li>
+       <li><a href="#httpAddrClose" title="Close a socket created by httpAddrConnect or
+httpAddrListen.">httpAddrClose</a></li>
        <li><a href="#httpAddrEqual" title="Compare two addresses.">httpAddrEqual</a></li>
+       <li><a href="#httpAddrFamily" title="Get the address family of an address.">httpAddrFamily</a></li>
        <li><a href="#httpAddrLength" title="Return the length of the address in bytes.">httpAddrLength</a></li>
        <li><a href="#httpAddrListen" title="Create a listening socket bound to the specified
 address and port.">httpAddrListen</a></li>
@@ -426,11 +441,10 @@ components with a formatted resource.">httpAssembleURIf</a></li>
        <li><a href="#httpClearCookie" title="Clear the cookie value(s).">httpClearCookie</a></li>
        <li><a href="#httpClearFields" title="Clear HTTP request fields.">httpClearFields</a></li>
        <li><a href="#httpClose" title="Close an HTTP connection.">httpClose</a></li>
+       <li><a href="#httpCompareCredentials" title="Compare two sets of X.509 credentials.">httpCompareCredentials</a></li>
        <li><a href="#httpConnect" title="Connect to a HTTP server.">httpConnect</a></li>
        <li><a href="#httpConnect2" title="Connect to a HTTP server.">httpConnect2</a></li>
        <li><a href="#httpConnectEncrypt" title="Connect to a HTTP server using encryption.">httpConnectEncrypt</a></li>
-       <li><a href="#httpCopyCredentials" title="Copy the credentials associated with an encrypted
-connection.">httpCopyCredentials</a></li>
        <li><a href="#httpDecode64" title="Base64-decode a string.">httpDecode64</a></li>
        <li><a href="#httpDecode64_2" title="Base64-decode a string.">httpDecode64_2</a></li>
        <li><a href="#httpDelete" title="Send a DELETE request to the server.">httpDelete</a></li>
@@ -438,10 +452,14 @@ connection.">httpCopyCredentials</a></li>
        <li><a href="#httpEncode64_2" title="Base64-encode a string.">httpEncode64_2</a></li>
        <li><a href="#httpEncryption" title="Set the required encryption on the link.">httpEncryption</a></li>
        <li><a href="#httpError" title="Get the last error on a connection.">httpError</a></li>
+       <li><a href="#httpFieldValue" title="Return the HTTP field enumeration value for a field
+name.">httpFieldValue</a></li>
        <li><a href="#httpFlush" title="Flush data from a HTTP connection.">httpFlush</a></li>
        <li><a href="#httpFlushWrite" title="Flush data in write buffer.">httpFlushWrite</a></li>
        <li><a href="#httpFreeCredentials" title="Free an array of credentials.">httpFreeCredentials</a></li>
        <li><a href="#httpGet" title="Send a GET request to the server.">httpGet</a></li>
+       <li><a href="#httpGetActivity" title="Get the most recent activity for a connection.">httpGetActivity</a></li>
+       <li><a href="#httpGetAddress" title="Get the address of the connected peer of a connection.">httpGetAddress</a></li>
        <li><a href="#httpGetAuthString" title="Get the current authorization string.">httpGetAuthString</a></li>
        <li><a href="#httpGetBlocking" title="Get the blocking/non-block state of a connection.">httpGetBlocking</a></li>
        <li><a href="#httpGetContentEncoding" title="Get a common content encoding, if any, between
@@ -450,16 +468,22 @@ the client and server.">httpGetContentEncoding</a></li>
        <li><a href="#httpGetDateString" title="Get a formatted date/time string from a time value.">httpGetDateString</a></li>
        <li><a href="#httpGetDateString2" title="Get a formatted date/time string from a time value.">httpGetDateString2</a></li>
        <li><a href="#httpGetDateTime" title="Get a time value from a formatted date/time string.">httpGetDateTime</a></li>
+       <li><a href="#httpGetEncryption" title="Get the current encryption mode of a connection.">httpGetEncryption</a></li>
        <li><a href="#httpGetExpect" title="Get the value of the Expect header, if any.">httpGetExpect</a></li>
        <li><a href="#httpGetFd" title="Get the file descriptor associated with a connection.">httpGetFd</a></li>
        <li><a href="#httpGetField" title="Get a field value from a request/response.">httpGetField</a></li>
        <li><a href="#httpGetHostByName" title="Lookup a hostname or IPv4 address, and return
 address records for the specified name.">httpGetHostByName</a></li>
        <li><a href="#httpGetHostname" title="Get the FQDN for the connection or local system.">httpGetHostname</a></li>
+       <li><a href="#httpGetKeepAlive" title="Get the current Keep-Alive state of the connection.">httpGetKeepAlive</a></li>
        <li><a href="#httpGetLength" title="Get the amount of data remaining from the
 content-length or transfer-encoding fields.">httpGetLength</a></li>
        <li><a href="#httpGetLength2" title="Get the amount of data remaining from the
 content-length or transfer-encoding fields.">httpGetLength2</a></li>
+       <li><a href="#httpGetPending" title="Get the number of bytes that are buffered for writing.">httpGetPending</a></li>
+       <li><a href="#httpGetReady" title="Get the number of bytes that can be read without blocking.">httpGetReady</a></li>
+       <li><a href="#httpGetRemaining" title="Get the number of remaining bytes in the message
+body or current chunk.">httpGetRemaining</a></li>
        <li><a href="#httpGetState" title="Get the current state of the HTTP request.">httpGetState</a></li>
        <li><a href="#httpGetStatus" title="Get the status of the last HTTP request.">httpGetStatus</a></li>
        <li><a href="#httpGetSubField" title="Get a sub-field value.">httpGetSubField</a></li>
@@ -469,6 +493,8 @@ content-length or transfer-encoding fields.">httpGetLength2</a></li>
        <li><a href="#httpHead" title="Send a HEAD request to the server.">httpHead</a></li>
        <li><a href="#httpInitialize" title="Initialize the HTTP interface library and set the
 default HTTP proxy (if any).">httpInitialize</a></li>
+       <li><a href="#httpIsChunked" title="Report whether a message body is chunked.">httpIsChunked</a></li>
+       <li><a href="#httpIsEncrypted" title="Report whether a connection is encrypted.">httpIsEncrypted</a></li>
        <li><a href="#httpMD5" title="Compute the MD5 sum of the username:group:password.">httpMD5</a></li>
        <li><a href="#httpMD5Final" title="Combine the MD5 sum of the username, group, and password
 with the server-supplied nonce value, method, and
@@ -484,6 +510,8 @@ request-uri.">httpMD5Final</a></li>
        <li><a href="#httpReconnect" title="Reconnect to a HTTP server.">httpReconnect</a></li>
        <li><a href="#httpReconnect2" title="Reconnect to a HTTP server with timeout and optional
 cancel.">httpReconnect2</a></li>
+       <li><a href="#httpResolveHostname" title="Resolve the hostname of the HTTP connection
+address.">httpResolveHostname</a></li>
        <li><a href="#httpSeparate" title="Separate a Universal Resource Identifier into its
 components.">httpSeparate</a></li>
        <li><a href="#httpSeparate2" title="Separate a Universal Resource Identifier into its
@@ -497,10 +525,14 @@ connection.">httpSetCredentials</a></li>
        <li><a href="#httpSetDefaultField" title="Set the default value of an HTTP header.">httpSetDefaultField</a></li>
        <li><a href="#httpSetExpect" title="Set the Expect: header in a request.">httpSetExpect</a></li>
        <li><a href="#httpSetField" title="Set the value of an HTTP header.">httpSetField</a></li>
+       <li><a href="#httpSetKeepAlive" title="Set the current Keep-Alive state of a connection.">httpSetKeepAlive</a></li>
        <li><a href="#httpSetLength" title="Set the content-length and content-encoding.">httpSetLength</a></li>
        <li><a href="#httpSetTimeout" title="Set read/write timeouts and an optional callback.">httpSetTimeout</a></li>
+       <li><a href="#httpShutdown" title="Shutdown one side of an HTTP connection.">httpShutdown</a></li>
+       <li><a href="#httpStateString" title="Return the string describing a HTTP state value.">httpStateString</a></li>
        <li><a href="#httpStatus" title="Return a short string describing a HTTP status code.">httpStatus</a></li>
        <li><a href="#httpTrace" title="Send an TRACE request to the server.">httpTrace</a></li>
+       <li><a href="#httpURIStatusString" title="Return a string describing a URI status code.">httpURIStatusString</a></li>
        <li><a href="#httpUpdate" title="Update the current HTTP state for incoming data.">httpUpdate</a></li>
        <li><a href="#httpWait" title="Wait for data available on a connection.">httpWait</a></li>
        <li><a href="#httpWrite" title="Write data to a HTTP connection.">httpWrite</a></li>
@@ -592,6 +624,7 @@ in seconds.">ippDateToTime</a></li>
        <li><a href="#ippSetStringfv" title="Set a formatted string value of an attribute.">ippSetStringfv</a></li>
        <li><a href="#ippSetValueTag" title="Set the value tag of an attribute.">ippSetValueTag</a></li>
        <li><a href="#ippSetVersion" title="Set the version number in an IPP message.">ippSetVersion</a></li>
+       <li><a href="#ippStateString" title="Return the name corresponding to a state value.">ippStateString</a></li>
        <li><a href="#ippTagString" title="Return the tag name corresponding to a tag value.">ippTagString</a></li>
        <li><a href="#ippTagValue" title="Return the tag value corresponding to a tag name.">ippTagValue</a></li>
        <li><a href="#ippTimeToDate" title="Convert from UNIX time to RFC 1903 format.">ippTimeToDate</a></li>
@@ -621,6 +654,7 @@ with a hostname. ">http_addrlist_t</a></li>
 are server-oriented...">http_state_t</a></li>
        <li><a href="#http_t" title="HTTP connection type">http_t</a></li>
        <li><a href="#http_timeout_cb_t" title="HTTP timeout callback ">http_timeout_cb_t</a></li>
+       <li><a href="#http_trust_t" title="Level of trust for credentials ">http_trust_t</a></li>
        <li><a href="#http_uri_coding_t" title="URI en/decode flags">http_uri_coding_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>
@@ -658,6 +692,7 @@ with a hostname. ">http_addrlist_s</a></li>
        <li><a href="#http_state_e" title="HTTP state values; states
 are server-oriented...">http_state_e</a></li>
        <li><a href="#http_status_e" title="HTTP status codes">http_status_e</a></li>
+       <li><a href="#http_trust_e" title="Level of trust for credentials ">http_trust_e</a></li>
        <li><a href="#http_uri_coding_e" title="URI en/decode flags">http_uri_coding_e</a></li>
        <li><a href="#http_uri_status_e" title="URI separation status ">http_uri_status_e</a></li>
        <li><a href="#http_version_e" title="HTTP version numbers">http_version_e</a></li>
@@ -1455,6 +1490,29 @@ int httpAddrAny (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 if &quot;any&quot;, 0 otherwise</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0&nbsp;</span><a name="httpAddrClose">httpAddrClose</a></h3>
+<p class="description">Close a socket created by <a href="#httpAddrConnect"><code>httpAddrConnect</code></a> or
+<a href="#httpAddrListen"><code>httpAddrListen</code></a>.</p>
+<p class="code">
+int httpAddrClose (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_addr_t">http_addr_t</a> *addr,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int fd<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>addr</dt>
+<dd class="description">Listen address or <code>NULL</code></dd>
+<dt>fd</dt>
+<dd class="description">Socket file descriptor</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">0 on success, -1 on failure</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">Pass <code>NULL</code> for sockets created with <a href="#httpAddrConnect"><code>httpAddrConnect</code></a> and the
+listen address for sockets created with <a href="#httpAddrListen"><code>httpAddrListen</code></a>. This will
+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>
 <p class="description">Compare two addresses.</p>
 <p class="code">
@@ -1471,6 +1529,19 @@ int httpAddrEqual (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 if equal, 0 if not</p>
+<h3 class="function"><a name="httpAddrFamily">httpAddrFamily</a></h3>
+<p class="description">Get the address family of an address.</p>
+<p class="code">
+int httpAddrFamily (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_addr_t">http_addr_t</a> *addr<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>addr</dt>
+<dd class="description">Address</dd>
+</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>
 <p class="description">Return the length of the address in bytes.</p>
 <p class="code">
@@ -1699,7 +1770,7 @@ void httpBlocking (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>b</dt>
 <dd class="description">1 = blocking, 0 = non-blocking</dd>
 </dl>
@@ -1712,7 +1783,7 @@ int httpCheck (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">0 = no data, 1 = data available</p>
@@ -1725,7 +1796,7 @@ void httpClearCookie (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 </dl>
 <h3 class="function"><a name="httpClearFields">httpClearFields</a></h3>
 <p class="description">Clear HTTP request fields.</p>
@@ -1736,7 +1807,7 @@ void httpClearFields (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 </dl>
 <h3 class="function"><a name="httpClose">httpClose</a></h3>
 <p class="description">Close an HTTP connection.</p>
@@ -1747,8 +1818,24 @@ void httpClose (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0&nbsp;</span><a name="httpCompareCredentials">httpCompareCredentials</a></h3>
+<p class="description">Compare two sets of X.509 credentials.</p>
+<p class="code">
+int httpCompareCredentials (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cups_array_t *cred1,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cups_array_t *cred2<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>cred1</dt>
+<dd class="description">First set of X.509 credentials</dd>
+<dt>cred2</dt>
+<dd class="description">Second set of X.509 credentials</dd>
 </dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">1 if they match, 0 if they do not</p>
 <h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="httpConnect">httpConnect</a></h3>
 <p class="description">Connect to a HTTP server.</p>
 <p class="code">
@@ -1827,23 +1914,6 @@ void httpClose (<br>
 instead.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span><a name="httpCopyCredentials">httpCopyCredentials</a></h3>
-<p class="description">Copy the credentials associated with an encrypted
-connection.</p>
-<p class="code">
-int httpCopyCredentials (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;cups_array_t **credentials<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>http</dt>
-<dd class="description">Connection to server</dd>
-<dt>credentials</dt>
-<dd class="description">Array of credentials</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Status of call (0 = success)</p>
 <h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="httpDecode64">httpDecode64</a></h3>
 <p class="description">Base64-decode a string.</p>
 <p class="code">
@@ -1894,7 +1964,7 @@ int httpDelete (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>uri</dt>
 <dd class="description">URI to delete</dd>
 </dl>
@@ -1953,7 +2023,7 @@ int httpEncryption (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>e</dt>
 <dd class="description">New encryption preference</dd>
 </dl>
@@ -1968,10 +2038,24 @@ int httpError (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Error code (errno) value</p>
+<h3 class="function"><a name="httpFieldValue">httpFieldValue</a></h3>
+<p class="description">Return the HTTP field enumeration value for a field
+name.</p>
+<p class="code">
+<a href="#http_field_t">http_field_t</a> httpFieldValue (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *name<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>name</dt>
+<dd class="description">String name</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Field index</p>
 <h3 class="function"><a name="httpFlush">httpFlush</a></h3>
 <p class="description">Flush data from a HTTP connection.</p>
 <p class="code">
@@ -1981,7 +2065,7 @@ void httpFlush (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<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>
 <p class="description">Flush data in write buffer.</p>
@@ -1992,7 +2076,7 @@ int httpFlushWrite (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Bytes written or -1 on error</p>
@@ -2017,12 +2101,46 @@ int httpGet (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>uri</dt>
 <dd class="description">URI to get</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Status of call (0 = success)</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0&nbsp;</span><a name="httpGetActivity">httpGetActivity</a></h3>
+<p class="description">Get the most recent activity for a connection.</p>
+<p class="code">
+time_t httpGetActivity (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Time of last read or write</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The return value is the UNIX time of the last read or write.
+
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0&nbsp;</span><a name="httpGetAddress">httpGetAddress</a></h3>
+<p class="description">Get the address of the connected peer of a connection.</p>
+<p class="code">
+<a href="#http_addr_t">http_addr_t</a> *httpGetAddress (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Connected address or <code>NULL</code></p>
+<h4 class="discussion">Discussion</h4>
+<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>
 <p class="description">Get the current authorization string.</p>
 <p class="code">
@@ -2032,7 +2150,7 @@ char *httpGetAuthString (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Authorization string</p>
@@ -2052,7 +2170,7 @@ int httpGetBlocking (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 if blocking, 0 if non-blocking</p>
@@ -2066,7 +2184,7 @@ const char *httpGetContentEncoding (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to client/server</dd>
+<dd class="description">HTTP connection</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Content-Coding value or
@@ -2137,6 +2255,25 @@ time_t httpGetDateTime (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">UNIX time</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0&nbsp;</span><a name="httpGetEncryption">httpGetEncryption</a></h3>
+<p class="description">Get the current encryption mode of a connection.</p>
+<p class="code">
+<a href="#http_encryption_t">http_encryption_t</a> httpGetEncryption (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Current encryption mode</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function returns the encryption mode for the connection. Use the
+<a href="#httpIsEncrypted"><code>httpIsEncrypted</code></a> function to determine whether a TLS session has
+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>
 <p class="description">Get the value of the Expect header, if any.</p>
 <p class="code">
@@ -2146,7 +2283,7 @@ http_status_t httpGetExpect (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to client</dd>
+<dd class="description">HTTP connection</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Expect: status, if any</p>
@@ -2164,7 +2301,7 @@ int httpGetFd (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">File descriptor or -1 if none</p>
@@ -2178,7 +2315,7 @@ const char *httpGetField (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>field</dt>
 <dd class="description">Field to get</dd>
 </dl>
@@ -2219,11 +2356,25 @@ const char *httpGetHostname (<br>
 <p class="description">FQDN for connection or system</p>
 <h4 class="discussion">Discussion</h4>
 <p class="discussion">When &quot;http&quot; points to a connected socket, return the hostname or
-address that was used in the call to httpConnect() or httpConnectEncrypt().
+address that was used in the call to httpConnect() or httpConnectEncrypt(),
+or the address of the client for the connection from httpAcceptConnection().
 Otherwise, return the FQDN for the local system using both gethostname()
 and gethostbyname() to get the local hostname with domain.
 
 </p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0&nbsp;</span><a name="httpGetKeepAlive">httpGetKeepAlive</a></h3>
+<p class="description">Get the current Keep-Alive state of the connection.</p>
+<p class="code">
+<a href="#http_keepalive_t">http_keepalive_t</a> httpGetKeepAlive (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Keep-Alive state</p>
 <h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="httpGetLength">httpGetLength</a></h3>
 <p class="description">Get the amount of data remaining from the
 content-length or transfer-encoding fields.</p>
@@ -2234,7 +2385,7 @@ int httpGetLength (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Content length</p>
@@ -2253,7 +2404,7 @@ off_t httpGetLength2 (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Content length</p>
@@ -2261,6 +2412,51 @@ off_t httpGetLength2 (<br>
 <p class="discussion">This function returns the complete content length, even for
 content larger than 2^31 - 1.
 
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0&nbsp;</span><a name="httpGetPending">httpGetPending</a></h3>
+<p class="description">Get the number of bytes that are buffered for writing.</p>
+<p class="code">
+size_t httpGetPending (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Number of bytes buffered</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0&nbsp;</span><a name="httpGetReady">httpGetReady</a></h3>
+<p class="description">Get the number of bytes that can be read without blocking.</p>
+<p class="code">
+size_t httpGetReady (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Number of bytes available</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0&nbsp;</span><a name="httpGetRemaining">httpGetRemaining</a></h3>
+<p class="description">Get the number of remaining bytes in the message
+body or current chunk.</p>
+<p class="code">
+size_t httpGetRemaining (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Remaining bytes</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The <a href="#httpIsChunked"><code>httpIsChunked</code></a> function can be used to determine whether the
+message body is chunked or fixed-length.
+
 </p>
 <h3 class="function"><a name="httpGetState">httpGetState</a></h3>
 <p class="description">Get the current state of the HTTP request.</p>
@@ -2271,7 +2467,7 @@ content larger than 2^31 - 1.
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">HTTP state</p>
@@ -2284,7 +2480,7 @@ http_status_t httpGetStatus (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">HTTP status</p>
@@ -2300,7 +2496,7 @@ char *httpGetSubField (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>field</dt>
 <dd class="description">Field index</dd>
 <dt>name</dt>
@@ -2323,7 +2519,7 @@ char *httpGetSubField2 (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>field</dt>
 <dd class="description">Field index</dd>
 <dt>name</dt>
@@ -2344,7 +2540,7 @@ char *httpGetSubField2 (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Version number</p>
@@ -2363,7 +2559,7 @@ char *httpGets (<br>
 <dt>length</dt>
 <dd class="description">Max length of buffer</dd>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Line or NULL</p>
@@ -2377,7 +2573,7 @@ int httpHead (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>uri</dt>
 <dd class="description">URI for head</dd>
 </dl>
@@ -2388,6 +2584,41 @@ int httpHead (<br>
 default HTTP proxy (if any).</p>
 <p class="code">
 void httpInitialize (void);</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0&nbsp;</span><a name="httpIsChunked">httpIsChunked</a></h3>
+<p class="description">Report whether a message body is chunked.</p>
+<p class="code">
+int httpIsChunked (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">1 if chunked, 0 if not</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function returns non-zero if the message body is composed of
+variable-length chunks.
+
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0&nbsp;</span><a name="httpIsEncrypted">httpIsEncrypted</a></h3>
+<p class="description">Report whether a connection is encrypted.</p>
+<p class="code">
+int httpIsEncrypted (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">1 if encrypted, 0 if not</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function returns non-zero if the connection is currently encrypted.
+
+</p>
 <h3 class="function"><a name="httpMD5">httpMD5</a></h3>
 <p class="description">Compute the MD5 sum of the username:group:password.</p>
 <p class="code">
@@ -2460,7 +2691,7 @@ int httpOptions (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>uri</dt>
 <dd class="description">URI for options</dd>
 </dl>
@@ -2477,7 +2708,7 @@ ssize_t httpPeek (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>buffer</dt>
 <dd class="description">Buffer for data</dd>
 <dt>length</dt>
@@ -2503,7 +2734,7 @@ int httpPost (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>uri</dt>
 <dd class="description">URI for post</dd>
 </dl>
@@ -2519,7 +2750,7 @@ int httpPut (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>uri</dt>
 <dd class="description">URI to put</dd>
 </dl>
@@ -2536,7 +2767,7 @@ int httpRead (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>buffer</dt>
 <dd class="description">Buffer for data</dd>
 <dt>length</dt>
@@ -2560,7 +2791,7 @@ ssize_t httpRead2 (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>buffer</dt>
 <dd class="description">Buffer for data</dd>
 <dt>length</dt>
@@ -2596,7 +2827,7 @@ int httpReconnect (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">0 on success, non-zero on failure</p>
@@ -2617,7 +2848,7 @@ int httpReconnect2 (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>msec</dt>
 <dd class="description">Timeout in milliseconds</dd>
 <dt>cancel</dt>
@@ -2625,6 +2856,26 @@ int httpReconnect2 (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">0 on success, non-zero on failure</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0&nbsp;</span><a name="httpResolveHostname">httpResolveHostname</a></h3>
+<p class="description">Resolve the hostname of the HTTP connection
+address.</p>
+<p class="code">
+const char *httpResolveHostname (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<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</dd>
+<dt>buffer</dt>
+<dd class="description">Hostname buffer</dd>
+<dt>bufsize</dt>
+<dd class="description">Size of buffer</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Resolved hostname or <code>NULL</code></p>
 <h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="httpSeparate">httpSeparate</a></h3>
 <p class="description">Separate a Universal Resource Identifier into its
 components.</p>
@@ -2755,7 +3006,7 @@ void httpSetAuthString (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>scheme</dt>
 <dd class="description">Auth scheme (NULL to clear it)</dd>
 <dt>data</dt>
@@ -2793,7 +3044,7 @@ int httpSetCredentials (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>credentials</dt>
 <dd class="description">Array of credentials</dd>
 </dl>
@@ -2810,7 +3061,7 @@ void httpSetDefaultField (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>field</dt>
 <dd class="description">Field index</dd>
 <dt>value</dt>
@@ -2831,7 +3082,7 @@ void httpSetExpect (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>expect</dt>
 <dd class="description">HTTP status to expect
 (<code>HTTP_STATUS_CONTINUE</code>)</dd>
@@ -2852,12 +3103,26 @@ void httpSetField (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>field</dt>
 <dd class="description">Field index</dd>
 <dt>value</dt>
 <dd class="description">Value</dd>
 </dl>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0&nbsp;</span><a name="httpSetKeepAlive">httpSetKeepAlive</a></h3>
+<p class="description">Set the current Keep-Alive state of a connection.</p>
+<p class="code">
+void httpSetKeepAlive (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_keepalive_t">http_keepalive_t</a> keep_alive<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+<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>
 <p class="description">Set the content-length and content-encoding.</p>
 <p class="code">
@@ -2868,7 +3133,7 @@ void httpSetLength (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>length</dt>
 <dd class="description">Length (0 for chunked)</dd>
 </dl>
@@ -2884,7 +3149,7 @@ void httpSetTimeout (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>timeout</dt>
 <dd class="description">Number of seconds for timeout,
 must be greater than 0</dd>
@@ -2898,6 +3163,30 @@ must be greater than 0</dd>
 data pointer and must return 1 to continue or 0 to error (time) out.
 
 </p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0&nbsp;</span><a name="httpShutdown">httpShutdown</a></h3>
+<p class="description">Shutdown one side of an HTTP connection.</p>
+<p class="code">
+void httpShutdown (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0&nbsp;</span><a name="httpStateString">httpStateString</a></h3>
+<p class="description">Return the string describing a HTTP state value.</p>
+<p class="code">
+const char *httpStateString (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_state_t">http_state_t</a> state<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>state</dt>
+<dd class="description">HTTP state value</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">State string</p>
 <h3 class="function"><a name="httpStatus">httpStatus</a></h3>
 <p class="description">Return a short string describing a HTTP status code.</p>
 <p class="code">
@@ -2924,12 +3213,25 @@ int httpTrace (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>uri</dt>
 <dd class="description">URI for trace</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Status of call (0 = success)</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0&nbsp;</span><a name="httpURIStatusString">httpURIStatusString</a></h3>
+<p class="description">Return a string describing a URI status code.</p>
+<p class="code">
+const char *httpURIStatusString (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_uri_status_t">http_uri_status_t</a> status<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>status</dt>
+<dd class="description">URI status code</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Localized status string</p>
 <h3 class="function"><a name="httpUpdate">httpUpdate</a></h3>
 <p class="description">Update the current HTTP state for incoming data.</p>
 <p class="code">
@@ -2939,7 +3241,7 @@ http_status_t httpUpdate (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">HTTP status</p>
@@ -2953,7 +3255,7 @@ int httpWait (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>msec</dt>
 <dd class="description">Milliseconds to wait</dd>
 </dl>
@@ -2970,7 +3272,7 @@ int httpWrite (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>buffer</dt>
 <dd class="description">Buffer for data</dd>
 <dt>length</dt>
@@ -2994,7 +3296,7 @@ ssize_t httpWrite2 (<br>
 <h4 class="parameters">Parameters</h4>
 <dl>
 <dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
 <dt>buffer</dt>
 <dd class="description">Buffer for data</dd>
 <dt>length</dt>
@@ -4025,6 +4327,10 @@ ipp_status_t ippErrorValue (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Matching attribute</p>
+<h4 class="discussion">Discussion</h4>
+<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"><a name="ippFindNextAttribute">ippFindNextAttribute</a></h3>
 <p class="description">Find the next named attribute in a request.</p>
 <p class="code">
@@ -4044,6 +4350,10 @@ ipp_status_t ippErrorValue (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Matching attribute</p>
+<h4 class="discussion">Discussion</h4>
+<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>
 <p class="description">Return the first attribute in the message.</p>
 <p class="code">
@@ -4072,7 +4382,7 @@ int ippGetBoolean (<br>
 <dd class="description">Value number (0-based)</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
-<p class="description">Boolean value or -1 on error</p>
+<p class="description">Boolean value or 0 on error</p>
 <h4 class="discussion">Discussion</h4>
 <p class="discussion">The <code>element</code> parameter specifies which value to get from 0 to
 <a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a> - 1.
@@ -4111,7 +4421,7 @@ int ippGetCount (<br>
 <dd class="description">IPP attribute</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
-<p class="description">Number of values or -1 on error</p>
+<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>
 <p class="description">Get a date value for an attribute.</p>
 <p class="code">
@@ -4161,7 +4471,7 @@ int ippGetInteger (<br>
 <dd class="description">Value number (0-based)</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
-<p class="description">Value or -1 on error</p>
+<p class="description">Value or 0 on error</p>
 <h4 class="discussion">Discussion</h4>
 <p class="discussion">The <code>element</code> parameter specifies which value to get from 0 to
 <a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a> - 1.
@@ -4216,7 +4526,7 @@ ipp_op_t ippGetOperation (<br>
 <dd class="description">IPP request message</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
-<p class="description">Operation ID or -1 on error</p>
+<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>
 <p class="description">Get a rangeOfInteger value from an attribute.</p>
 <p class="code">
@@ -4235,7 +4545,7 @@ int ippGetRange (<br>
 <dd class="description">Upper value of range</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
-<p class="description">Lower value of range or -1</p>
+<p class="description">Lower value of range or 0</p>
 <h4 class="discussion">Discussion</h4>
 <p class="discussion">The <code>element</code> parameter specifies which value to get from 0 to
 <a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a> - 1.
@@ -4253,7 +4563,7 @@ int ippGetRequestId (<br>
 <dd class="description">IPP message</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
-<p class="description">Request ID or -1 on error</p>
+<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>
 <p class="description">Get a resolution value for an attribute.</p>
 <p class="code">
@@ -4275,7 +4585,7 @@ int ippGetResolution (<br>
 <dd class="description">Units for resolution</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
-<p class="description">Horizontal/cross feed resolution or -1</p>
+<p class="description">Horizontal/cross feed resolution or 0</p>
 <h4 class="discussion">Discussion</h4>
 <p class="discussion">The <code>element</code> parameter specifies which value to get from 0 to
 <a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a> - 1.
@@ -4358,7 +4668,7 @@ int ippGetVersion (<br>
 <dd class="description">Minor version number or <code>NULL</code></dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
-<p class="description">Major version number or -1 on error</p>
+<p class="description">Major version number or 0 on error</p>
 <h3 class="function"><a name="ippLength">ippLength</a></h3>
 <p class="description">Compute the length of an IPP message.</p>
 <p class="code">
@@ -5083,6 +5393,19 @@ the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ip
 The valid version numbers are currently 1.0, 1.1, 2.0, 2.1, and 2.2.
 
 </p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0&nbsp;</span><a name="ippStateString">ippStateString</a></h3>
+<p class="description">Return the name corresponding to a state value.</p>
+<p class="code">
+const char *ippStateString (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_state_t">ipp_state_t</a> state<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>state</dt>
+<dd class="description">State value</dd>
+</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>
 <p class="description">Return the tag name corresponding to a tag value.</p>
 <p class="code">
@@ -5293,6 +5616,11 @@ typedef struct _http_s http_t;
 <p class="code">
 typedef int (*http_timeout_cb_t)(<a href="#http_t">http_t</a> *http, void *user_data);
 </p>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 2.0&nbsp;</span><a name="http_trust_t">http_trust_t</a></h3>
+<p class="description">Level of trust for credentials </p>
+<p class="code">
+typedef enum <a href="#http_trust_e">http_trust_e</a> http_trust_t;
+</p>
 <h3 class="typedef"><a name="http_uri_coding_t">http_uri_coding_t</a></h3>
 <p class="description">URI en/decode flags</p>
 <p class="code">
@@ -5690,6 +6018,23 @@ are server-oriented...</p>
 <dt>HTTP_STATUS_USE_PROXY </dt>
 <dd class="description">Must use a proxy to access this URI</dd>
 </dl>
+<h3 class="enumeration"><span class="info">&nbsp;CUPS 2.0&nbsp;</span><a name="http_trust_e">http_trust_e</a></h3>
+<p class="description">Level of trust for credentials </p>
+<h4 class="constants">Constants</h4>
+<dl>
+<dt>HTTP_TRUST_CHANGED </dt>
+<dd class="description">Credentials have changed</dd>
+<dt>HTTP_TRUST_EXPIRED </dt>
+<dd class="description">Credentials are expired</dd>
+<dt>HTTP_TRUST_INVALID </dt>
+<dd class="description">Credentials are invalid</dd>
+<dt>HTTP_TRUST_OK </dt>
+<dd class="description">Credentials are OK/trusted</dd>
+<dt>HTTP_TRUST_RENEWED </dt>
+<dd class="description">Credentials have been renewed</dd>
+<dt>HTTP_TRUST_UNKNOWN </dt>
+<dd class="description">Credentials are unknown/new</dd>
+</dl>
 <h3 class="enumeration"><a name="http_uri_coding_e">http_uri_coding_e</a></h3>
 <p class="description">URI en/decode flags</p>
 <h4 class="constants">Constants</h4>
@@ -5784,6 +6129,8 @@ are server-oriented...</p>
 <dd class="description">Bind on top</dd>
 <dt>IPP_FINISHINGS_BOOKLET_MAKER </dt>
 <dd class="description">Fold to make booklet</dd>
+<dt>IPP_FINISHINGS_COAT </dt>
+<dd class="description">Apply protective liquid or powder coating</dd>
 <dt>IPP_FINISHINGS_COVER </dt>
 <dd class="description">Add cover</dd>
 <dt>IPP_FINISHINGS_CUPS_FOLD_ACCORDIAN </dt>
@@ -5876,6 +6223,8 @@ are server-oriented...</p>
 <dd class="description">Fold the paper vertically into three sections, forming a Z</dd>
 <dt>IPP_FINISHINGS_JOG_OFFSET </dt>
 <dd class="description">Offset for binding (any type)</dd>
+<dt>IPP_FINISHINGS_LAMINATE </dt>
+<dd class="description">Apply protective (solid) material</dd>
 <dt>IPP_FINISHINGS_NONE </dt>
 <dd class="description">No finishing</dd>
 <dt>IPP_FINISHINGS_PUNCH </dt>
@@ -5932,6 +6281,14 @@ are server-oriented...</p>
 <dd class="description">Staple top left corner</dd>
 <dt>IPP_FINISHINGS_STAPLE_TOP_RIGHT </dt>
 <dd class="description">Staple top right corner</dd>
+<dt>IPP_FINISHINGS_STAPLE_TRIPLE_BOTTOM </dt>
+<dd class="description">Three staples on bottom</dd>
+<dt>IPP_FINISHINGS_STAPLE_TRIPLE_LEFT </dt>
+<dd class="description">Three staples on left</dd>
+<dt>IPP_FINISHINGS_STAPLE_TRIPLE_RIGHT </dt>
+<dd class="description">Three staples on right</dd>
+<dt>IPP_FINISHINGS_STAPLE_TRIPLE_TOP </dt>
+<dd class="description">Three staples on top</dd>
 <dt>IPP_FINISHINGS_TRIM </dt>
 <dd class="description">Trim (any type)</dd>
 <dt>IPP_FINISHINGS_TRIM_AFTER_COPIES </dt>
@@ -6073,6 +6430,8 @@ are server-oriented...</p>
 <dl>
 <dt>IPP_ORIENT_LANDSCAPE </dt>
 <dd class="description">90 degrees counter-clockwise</dd>
+<dt>IPP_ORIENT_NONE </dt>
+<dd class="description">No rotation</dd>
 <dt>IPP_ORIENT_PORTRAIT </dt>
 <dd class="description">No rotation</dd>
 <dt>IPP_ORIENT_REVERSE_LANDSCAPE </dt>
@@ -6134,6 +6493,14 @@ are server-oriented...</p>
 <dd class="description">Invalid status name for <a href="#ippErrorValue"><code>ippErrorValue</code></a></dd>
 <dt>IPP_STATUS_CUPS_SEE_OTHER </dt>
 <dd class="description">cups-see-other</dd>
+<dt>IPP_STATUS_ERROR_ACCOUNT_AUTHORIZATION_FAILED </dt>
+<dd class="description">client-error-account-authorization-failed</dd>
+<dt>IPP_STATUS_ERROR_ACCOUNT_CLOSED </dt>
+<dd class="description">client-error-account-closed</dd>
+<dt>IPP_STATUS_ERROR_ACCOUNT_INFO_NEEDED </dt>
+<dd class="description">client-error-account-info-needed</dd>
+<dt>IPP_STATUS_ERROR_ACCOUNT_LIMIT_REACHED </dt>
+<dd class="description">client-error-account-limit-reached</dd>
 <dt>IPP_STATUS_ERROR_ATTRIBUTES_NOT_SETTABLE </dt>
 <dd class="description">client-error-attributes-not-settable</dd>
 <dt>IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES </dt>
@@ -6150,13 +6517,13 @@ are server-oriented...</p>
 <dd class="description">client-error-compression-not-supported</dd>
 <dt>IPP_STATUS_ERROR_CONFLICTING </dt>
 <dd class="description">client-error-conflicting-attributes</dd>
-<dt>IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED <span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span></dt>
+<dt>IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED <span class="info">&nbsp;DEPRECATED&nbsp;</span></dt>
 <dd class="description">cups-error-account-authorization-failed </dd>
-<dt>IPP_STATUS_ERROR_CUPS_ACCOUNT_CLOSED <span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span></dt>
-<dd class="description">cups-error-account-closed </dd>
-<dt>IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED <span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span></dt>
+<dt>IPP_STATUS_ERROR_CUPS_ACCOUNT_CLOSED </dt>
+<dd class="description">cups-error-account-closed @deprecate@</dd>
+<dt>IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED <span class="info">&nbsp;DEPRECATED&nbsp;</span></dt>
 <dd class="description">cups-error-account-info-needed </dd>
-<dt>IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED <span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span></dt>
+<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>
 <dd class="description">cups-authentication-canceled - Authentication canceled by user </dd>
index 226992780dd69bc3c50c204f0776dc356de98610..d95734299579f12700985f8ec94a645f01deef58 100644 (file)
@@ -38,7 +38,19 @@ 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;
@@ -77,7 +89,7 @@ A:link:hover IMG {
 }
 
 A:link, A:visited {
-  font-weight: normal;
+  font-weight: inherit;
   text-decoration: none;
 }
 
index a310f6e1617cd2944d740a51baaf9fda472587cc..01a041493cf6a33e225dd25e7b8e37dab3cac65e 100644 (file)
@@ -38,7 +38,19 @@ 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;
@@ -77,7 +89,7 @@ A:link:hover IMG {
 }
 
 A:link, A:visited {
-  font-weight: normal;
+  font-weight: inherit;
   text-decoration: none;
 }
 
index 6530d4b9f0507cd72bff82e9f046d62aea561154..5121b65944dfa3d2d3a44991c083333a822f8bb6 100644 (file)
@@ -38,7 +38,19 @@ 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;
@@ -77,7 +89,7 @@ A:link:hover IMG {
 }
 
 A:link, A:visited {
-  font-weight: normal;
+  font-weight: inherit;
   text-decoration: none;
 }
 
index 484288e688c1332f737d9ce8fba834ff8b791f1a..df321357543b487ce0e31b11c8f70e8f0cc711c4 100644 (file)
@@ -38,7 +38,19 @@ 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;
@@ -77,7 +89,7 @@ A:link:hover IMG {
 }
 
 A:link, A:visited {
-  font-weight: normal;
+  font-weight: inherit;
   text-decoration: none;
 }
 
index f2dade43cdaf8f8d6335262165587cd72786fb74..9acda474fd21123701dc5f0978a48978f36db4d7 100644 (file)
@@ -38,7 +38,19 @@ 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;
@@ -77,7 +89,7 @@ A:link:hover IMG {
 }
 
 A:link, A:visited {
-  font-weight: normal;
+  font-weight: inherit;
   text-decoration: none;
 }
 
index 9bbc729edf19a661e4b73921482ad58acb9618e8..005662183e4d4318896090925b3693541d105e4c 100644 (file)
@@ -8,7 +8,7 @@
 
 <H1 CLASS="title">Software License Agreement</H1>
 
-<P ALIGN="CENTER">Copyright 2007-2012 by Apple Inc.<BR>
+<P ALIGN="CENTER">Copyright 2007-2013 by Apple Inc.<BR>
 1 Infinite Loop<BR>
 Cupertino, CA 95014 USA<BR>
 <BR>
@@ -16,10 +16,7 @@ WWW: <A HREF="http://www.cups.org/">http://www.cups.org/</A>
 
 <H2 CLASS="title"><A NAME="INTRO">Introduction</A></H2>
 
-<P>CUPS<SUP>TM</SUP> 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.</P>
+<P>CUPS<SUP>TM</SUP> is provided under the GNU General Public License ("GPL") and GNU Library General Public License ("LGPL"), Version 2, with an exception for Apple operating systems. A copy of the exception and licenses follow this introduction.</P>
 
 <P>The GNU LGPL applies to the CUPS and CUPS Imaging libraries located in the
 "cups" and "filter" subdirectories of the CUPS source distribution and the files
@@ -59,7 +56,7 @@ for your application, driver, or filter.</P>
 <H2 CLASS="title"><A NAME="EXCEPTIONS">License Exceptions</A></H2>
 
 <P>In addition, as the copyright holder of CUPS, Apple Inc. grants
-the following special exceptions:</P>
+the following special exception:</P>
 
 <OL>
 
@@ -111,20 +108,9 @@ the following special exceptions:</P>
 
        </OL>
 
-       <LI><B>OpenSSL Toolkit License Exception</B>;
-
-       <OL TYPE="a">
-
-               <LI>Apple Inc. explicitly allows the
-               compilation and distribution of the CUPS
-               software with the OpenSSL Toolkit.</LI>
-
-       </OL>
-
 </OL>
 
-<P>No developer is required to provide these exceptions in a
-derived work.</P>
+<P>No developer is required to provide this exception in a derived work.</P>
 
 
 <H2 CLASS="title"><A NAME="KERBEROS">Kerberos Support Code</A></H2>
index 5f41e34cdf5f92eb888a8a7250b33671a9d9a01e..e60bc53b193b6ba395f4162732bbe69ddd152db4 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: Man Pages -->
 <head>
 </head>
 <body>
 <h1 class="title">backend(7)</h1>
-
 <h2 class="title"><a name="NAME">Name</a></h2>
 backend - cups backend transmission interfaces
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>backend
-</b><br>
-<b>backend
-</b>job user title num-copies options [
-<i>filename
-</i>]
+<b>backend</b>
+<br>
+<b>backend</b>
+<i>job</i>
+<i>user</i>
+<i>title</i>
+<i>num-copies</i>
+<i>options</i>
+[
+<i>filename</i>
+]
+<pre class="man">
+
+<b>#include &lt;cups/cups.h></b>
+
+<b>const char *cupsBackendDeviceURI</b>(<b>char **</b><i>argv</i>);
+
+<b>void cupsBackendReport</b>(<b>const char *</b><i>device_scheme</i>,
+                       <b>const char *</b><i>device_uri</i>,
+                       <b>const char *</b><i>device_make_and_model</i>,
+                       <b>const char *</b><i>device_info</i>,
+                       <b>const char *</b><i>device_id</i>,
+                       <b>const char *</b><i>device_location</i>);
+
+<b>ssize_t cupsBackChannelWrite</b>(<b>const char *</b><i>buffer</i>,
+                             <b>size_t </b><i>bytes</i>, <b>double </b><i>timeout</i>);
+
+<b>int cupsSideChannelRead</b>(<b>cups_sc_command_t *</b><i>command</i>,
+                        <b>cups_sc_status_t *</b><i>status</i>, <b>char *</b><i>data</i>,
+                        <b>int *</b><i>datalen</i>, <b>double </b><i>timeout</i>);
+
+<b>int cupsSideChannelWrite</b>(<b>cups_sc_command_t </b><i>command</i>,
+                         <b>cups_sc_status_t </b><i>status</i>, <b>const char *</b><i>data</i>,
+                         <b>int </b><i>datalen</i>, <b>double </b><i>timeout</i>);
+</pre>
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-Backends are a special type of <a href='man-filter.html?TOPIC=Man+Pages'>filter(7)</a> which is used to send print data
-to and discover different devices on the system.
-<p>Like filters, backends must be capable of reading from a filename on the
-command-line or from the standard input, copying the standard input to a
-temporary file as required by the physical interface.
-<p>The command name (argv[0]) is set to the device URI of the destination printer.
-Starting with CUPS 1.1.22, any authentication information in argv[0] is removed,
-so backend developers are urged to use the DEVICE_URI environment variable
-whenever authentication information is required. The CUPS API includes a
-<i>cupsBackendDeviceURI</i> function for retrieving the correct device URI.
-<p>Back-channel data from the device should be relayed to the job
-filters by writing to file descriptor 3. The CUPS API includes
-the <i>cupsBackChannelWrite</i> function for this purpose.
-<h2 class="title"><a name="WARNING">Warning</a></h2>
-CUPS backends are not generally design to be run directly by the user. Aside
-from the device URI issue (argv[0] and 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.
-<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'>lp(1)</a> or <a href='man-lpr.html?TOPIC=Man+Pages'>lpr(1)</a> programs to send
-a print job or <a href='man-lpinfo.html?TOPIC=Man+Pages'>lpinfo(8)</a> program to query for available printers using the
-backend. The one exception is the SNMP backend - see <i>snmpbackend(8)</i> for
-more information.
-<h2 class="title"><a name="DEVICE_DISCOVERY">Device Discovery</a></h2>
-When run with no arguments, the backend should list the devices and schemes it
-supports or is advertising to stdout. The output consists of zero or more lines
-consisting of any of the following forms:
+Backends are a special type of
+<a href="man-filter.html?TOPIC=Man+Pages"><b>filter</b>(7)</a>
+which is used to send print data to and discover different devices on the system.
+<p>Like filters, backends must be capable of reading from a filename on the command-line or from the standard input, copying the standard input to a temporary file as required by the physical interface.
+<p>The command name (<i>argv[0]</i>) is set to the device URI of the destination printer. Authentication information in
+<i>argv[0]</i>
+is removed, so backend developers are urged to use the
+<b>DEVICE_URI</b>
+environment variable whenever authentication information is required. The
+<b>cupsBackendDeviceURI</b>()
+function may be used to retrieve the correct device URI.
+<p>Back-channel data from the device should be relayed to the job filters using the <i>cupsBackChannelWrite</i> function.
+<p>Backends are responsible for reading side-channel requests using the
+<b>cupsSideChannelRead</b>()
+function and responding with the
+<b>cupsSideChannelWrite()</b>
+function. The
+<b>CUPS_SC_FD</b>
+constant defines the file descriptor that should be monitored for incoming requests.
+<h3><a name="DEVICE_DISCOVERY">Device Discovery</a></h3>
+When run with no arguments, the backend should list the devices and schemes it supports or is advertising to the standard output. The output consists of zero or more lines consisting of any of the following forms:
+<pre class="man">
 
-<pre>
     device-class scheme "Unknown" "device-info"
     device-class device-uri "device-make-and-model" "device-info"
     device-class device-uri "device-make-and-model" "device-info" "device-id"
     device-class device-uri "device-make-and-model" "device-info" "device-id" "device-location"
 </pre>
-<p>The <i>device-class</i> field is one of the following values:
-<dl>
-<dt>direct
-</dt>
-<dd></dd>
-<dd>The device-uri refers to a specific direct-access device with no options, such
-as a parallel, USB, or SCSI device.
-</dd>
-<dt>file
-</dt>
-<dd></dd>
-<dd>The device-uri refers to a file on disk.
-</dd>
-<dt>network
-</dt>
-<dd></dd>
-<dd>The device-uri refers to a networked device and conforms to the general form for
+<p>The
+<b>cupsBackendReport</b>()
+function can be used to generate these lines and handle any necessary escaping of characters in the various strings.
+<p>The
+<i>device-class</i>
+field is one of the following values:
+<dl class="man">
+<dt><b>direct</b>
+<dd style="margin-left: 5.0em">The device-uri refers to a specific direct-access device with no options, such as a parallel, USB, or SCSI device.
+<dt><b>file</b>
+<dd style="margin-left: 5.0em">The device-uri refers to a file on disk.
+<dt><b>network</b>
+<dd style="margin-left: 5.0em">The device-uri refers to a networked device and conforms to the general form for
 network URIs.
-</dd>
-<dt>serial
-</dt>
-<dd></dd>
-<dd>The device-uri refers to a serial device with configurable baud rate and other
-options. If the device-uri contains a baud value, it represents the maximum baud
-rate supported by the device.
-</dd>
+<dt><b>serial</b>
+<dd style="margin-left: 5.0em">The device-uri refers to a serial device with configurable baud rate and other options. If the device-uri contains a baud value, it represents the maximum baud rate supported by the device.
 </dl>
-<p>The <i>scheme</i> field provides the URI scheme that is supported by the backend.
-Backends should use this form only when the backend supports any URI using that
-scheme. The <i>device-uri</i> field specifies the full URI to use when
-communicating with the device.
-<p>The <i>device-make-and-model</i> field specifies the make and model of the
-device, e.g. "Example Foojet 2000". If the make and model is not known, you must
-report "Unknown".
-<p>The <i>device-info</i> field specifies additional information about the device.
-Typically this includes the make and model along with the port number or network
-address, e.g. "Example Foojet 2000 USB #1".
-<p>The optional <i>device-id</i> field specifies the IEEE-1284 device ID string for
-the device, which is used to select a matching driver.
-<p>The optional <i>device-location</i> field specifies the physical location of
-the device, which is often used to pre-populate the printer-location attribute
-when adding a printer.
-<h2 class="title"><a name="PERMISSIONS">Permissions</a></h2>
-Backends without world execute permissions are run as the root user. Otherwise,
-the backend is run using an unprivileged user account, typically "lp".
-<h2 class="title"><a name="EXIT_CODES">Exit Codes</a></h2>
-The following exit codes are defined for backends; C API constants defined in
-the &lt;cups/backend.h> header file are defined in parenthesis:
-<dl>
-<dt>0 (CUPS_BACKEND_OK)
-</dt>
-<dd></dd>
-<dd>The print file was successfully transmitted to the device or remote server.
-</dd>
-<dt>1 (CUPS_BACKEND_FAILED)
-</dt>
-<dd></dd>
-<dd>The print file was not successfully transmitted to the device or remote server.
-The scheduler will respond to this by canceling the job, retrying the job, or
-stopping the queue depending on the state of the error-policy attribute.
-</dd>
-<dt>2 (CUPS_BACKEND_AUTH_REQUIRED)
-</dt>
-<dd></dd>
-<dd>The print file was not successfully transmitted because valid authentication
-information is required. The scheduler will respond to this by holding the job
-and adding the "cups-held-for-authentication" keyword to the "job-reasons"
+<p>The 
+<i>scheme</i>
+field provides the URI scheme that is supported by the backend. Backends should use this form only when the backend supports any URI using that scheme. The
+<i>device-uri</i>
+field specifies the full URI to use when communicating with the device.
+<p>The
+<i>device-make-and-model</i>
+field specifies the make and model of the device, e.g. "Example Foojet 2000". If the make and model is not known, you must report "Unknown".
+<p>The
+<i>device-info</i>
+field specifies additional information about the device. Typically this includes the make and model along with the port number or network address, e.g. "Example Foojet 2000 USB #1".
+<p>The optional
+<i>device-id</i>
+field specifies the IEEE-1284 device ID string for the device, which is used to select a matching driver.
+<p>The optional
+<i>device-location</i>
+field specifies the physical location of the device, which is often used to pre-populate the printer-location attribute when adding a printer.
+<h3><a name="PERMISSIONS">Permissions</a></h3>
+Backends without world read and execute permissions are run as the root user. Otherwise, the backend is run using an unprivileged user account, typically "lp".
+<h2 class="title"><a name="EXIT_STATUS">Exit Status</a></h2>
+The following exit codes are defined for backends:
+<dl class="man">
+<dt><b>CUPS_BACKEND_OK</b>
+<dd style="margin-left: 5.0em">The print file was successfully transmitted to the device or remote server.
+<dt><b>CUPS_BACKEND_FAILED</b>
+<dd style="margin-left: 5.0em"><br>
+The print file was not successfully transmitted to the device or remote server. The scheduler will respond to this by canceling the job, retrying the job, or stopping the queue depending on the state of the
+<i>printer-error-policy</i>
 attribute.
-</dd>
-<dt>3 (CUPS_BACKEND_HOLD)
-</dt>
-<dd></dd>
-<dd>The print file was not successfully transmitted because it cannot be printed at
-this time. The scheduler will respond to this by holding the job.
-</dd>
-<dt>4 (CUPS_BACKEND_STOP)
-</dt>
-<dd></dd>
-<dd>The print file was not successfully transmitted because it cannot be printed at
-this time. The scheduler will respond to this by stopping the queue.
-</dd>
-<dt>5 (CUPS_BACKEND_CANCEL)
-</dt>
-<dd></dd>
-<dd>The print file was not successfully transmitted because one or more attributes
-are not supported or the job was canceled at the printer. The scheduler will
-respond to this by canceling the job.
-</dd>
-<dt>6 (CUPS_BACKEND_RETRY)
-</dt>
-<dd></dd>
-<dd>The print file was not successfully transmitted because of a temporary issue.
-The scheduler will retry the job at a future time - other jobs may print before
-this one.
-</dd>
-<dt>7 (CUPS_BACKEND_RETRY_CURRENT)
-</dt>
-<dd></dd>
-<dd>The print file was not successfully transmitted because of a temporary issue.
-The scheduler will retry the job immediately without allowing intervening jobs.
-</dd>
+<dt><b>CUPS_BACKEND_AUTH_REQUIRED</b>
+<dd style="margin-left: 5.0em">The print file was not successfully transmitted because valid authentication information is required. The scheduler will respond to this by holding the job and adding the 'cups-held-for-authentication' keyword to the "job-reasons" Job Description attribute.
+<dt><b>CUPS_BACKEND_HOLD</b>
+<dd style="margin-left: 5.0em">The print file was not successfully transmitted because it cannot be printed at this time. The scheduler will respond to this by holding the job.
+<dt><b>CUPS_BACKEND_STOP</b>
+<dd style="margin-left: 5.0em">The print file was not successfully transmitted because it cannot be printed at this time. The scheduler will respond to this by stopping the queue.
+<dt><b>CUPS_BACKEND_CANCEL</b>
+<dd style="margin-left: 5.0em">The print file was not successfully transmitted because one or more attributes are not supported or the job was canceled at the printer. The scheduler will respond to this by canceling the job.
+<dt><b>CUPS_BACKEND_RETRY</b>
+<dd style="margin-left: 5.0em">The print file was not successfully transmitted because of a temporary issue. The scheduler will retry the job at a future time - other jobs may print before this one.
+<dt><b>CUPS_BACKEND_RETRY_CURRENT</b>
+<dd style="margin-left: 5.0em">The print file was not successfully transmitted because of a temporary issue. The scheduler will retry the job immediately without allowing intervening jobs.
 </dl>
 <p>All other exit code values are reserved.
+<h2 class="title"><a name="ENVIRONMENT">Environment</a></h2>
+In addition to the environment variables listed in
+<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1)</a>
+and
+<a href="man-filter.html?TOPIC=Man+Pages"><b>filter</b>(7),</a>
+CUPS backends can expect the following environment variable:
+<dl class="man">
+<dt><b>DEVICE_URI</b>
+<dd style="margin-left: 5.0em">The device URI associated with the printer.
+</dl>
+<h2 class="title"><a name="FILES">Files</a></h2>
+<i>/etc/cups/cups-files.conf</i>
+<h2 class="title"><a name="NOTES">Notes</a></h2>
+CUPS backends are not generally design to be run directly by the user. Aside from the device URI issue (
+<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.
+<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
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1)</a>
+programs to send print jobs or
+<a href="man-lpinfo.html?TOPIC=Man+Pages"><b>lpinfo</b>(8)</a>
+to query for available printers using the backend. The one exception is the SNMP backend - see
+<a href="man-cups-snmp.html?TOPIC=Man+Pages"><b>cups-snmp</b>(8)</a>
+for more information.
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cups-snmp.html?TOPIC=Man+Pages'>cups-snmp(8)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>, <a href='man-filter.html?TOPIC=Man+Pages'>filter(7)</a>,
-<a href='man-lpinfo.html?TOPIC=Man+Pages'>lpinfo(8)</a>,
+<i>cups</i>(1),
+<i>cups-files.conf</i>(5),
+<i>cups-snmp</i>(8),
+<i>cupsd</i>(8),
+<i>filter</i>(7),
+<i>lp</i>(1),
+<i>lpinfo</i>(8),
+<i>lpr</i>(1),
 <br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index 96a24c33958e98b0b25efac999548aecd170f2f5..40b3bf218d50962cd8eb91923d05dcee72f4657c 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 cancel - cancel jobs
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cancel
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -a ] [ -h
-<i>hostname[:port]
-</i>] [ -u
-<i>username
-</i>] [ -x ] [
-<i>id
-</i>] [
-<i>destination
-</i>] [
-<i>destination-id
-</i>]
+<b>cancel</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-a</b>
+] [
+<b>-h</b>
+<i>hostname[:port]</i>
+] [
+<b>-u</b>
+<i>username</i>
+] [
+<b>-x</b>
+] [
+<i>id</i>
+] [
+<i>destination</i>
+] [
+<i>destination-id</i>
+]
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cancel</i> cancels existing print jobs. The <i>-a</i> option will remove
-all jobs from the specified destination.
+The <b>cancel</b> command cancels print jobs.
+If no <i>destination</i> or <i>id</i> is specified, the currently printing job on the default destination is canceled.
 <h2 class="title"><a name="OPTIONS">Options</a></h2>
-The following options are recognized by <i>cancel</i>:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Forces encryption when connecting to the server.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Specifies the username to use when connecting to the server.
-</dd>
-<dt>-a
-</dt>
-<dd></dd>
-<dd>Cancel all jobs on the named destination, or all jobs on all
+The following options are recognized by <b>cancel</b>:
+<dl class="man">
+<dt><b>-a</b>
+<dd style="margin-left: 5.0em">Cancel all jobs on the named destination, or all jobs on all
 destinations if none is provided.
-</dd>
-<dt>-h hostname[:port]
-</dt>
-<dd></dd>
-<dd>Chooses an alternate server.
-</dd>
-<dt>-u username
-</dt>
-<dd></dd>
-<dd>Cancels jobs owned by <i>username</i>.
-</dd>
-<dt>-x
-</dt>
-<dd></dd>
-<dd>Deletes job data files in addition to canceling.
-</dd>
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Forces encryption when connecting to the server.
+<dt><b>-h </b><i>hostname</i>[<i>:port</i>]
+<dd style="margin-left: 5.0em">Specifies an alternate server.
+<dt><b>-U </b><i>username</i>
+<dd style="margin-left: 5.0em">Specifies the username to use when connecting to the server.
+<dt><b>-u </b><i>username</i>
+<dd style="margin-left: 5.0em">Cancels jobs owned by <i>username</i>.
+<dt><b>-x</b>
+<dd style="margin-left: 5.0em">Deletes job data files in addition to canceling.
 </dl>
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-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 <i>not</i> case-sensitive.
+<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 "#". Also, printer and class names are <i>not</i> case-sensitive.
+<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+Cancel the current print job:
+<pre class="man">
+
+    cancel
+
+</pre>
+Cancel job "myprinter-42":
+<pre class="man">
+
+    cancel myprinter-42
+
+</pre>
+Cancel all jobs:
+<pre class="man">
+
+    cancel -a
+</pre>
 <h2 class="title"><a name="NOTES">Notes</a></h2>
-Administrators wishing to prevent unauthorized cancellation of
-jobs via the <i>-u</i> option should require authentication for
-Cancel-Jobs operations in <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>.
+Administrators wishing to prevent unauthorized cancellation of jobs via the <i>-u</i> option should require authentication for Cancel-Jobs operations in
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5).</a>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>, <a href='man-lpmove.html?TOPIC=Man+Pages'>lpmove(8)</a>, <a href='man-lpstat.html?TOPIC=Man+Pages'>lpstat(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpmove.html?TOPIC=Man+Pages"><b>lpmove</b>(8),</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index db767c275938346f43d5d60a811d4669c5b0fdba..76e7c0b80bb7b563bf0aa7069ba562ef575fe9ea 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 classes.conf - class configuration file for cups
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <i>classes.conf</i> file defines the local printer classes that are
-available. It is normally located in the <i>/etc/cups</i> directory and
-is generated automatically by the <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a> program when printer
-classes are added or deleted.
-<p>Each line in the file can be a configuration directive, a blank line,
-or a comment. Comment lines start with the # character.
-<h2 class="title"><a name="DIRECTIVES">Directives</a></h2>
-<dl>
-<dt>&lt;Class name> ... &lt;/Class>
-</dt>
-<dd></dd>
-<dd>Defines a specific printer class.
-</dd>
-<dt>&lt;DefaultClass name> ... &lt;/Class>
-</dt>
-<dd></dd>
-<dd>Defines a default printer class.
-</dd>
-<dt>Accepting Yes
-</dt>
-<dd></dd>
-<dt>Accepting No
-</dt>
-<dd></dd>
-<dd>Specifies whether the printer is accepting new jobs.
-</dd>
-<dt>AllowUser [ user @group ... ]
-</dt>
-<dd></dd>
-<dd>Allows specific users and groups to print to the printer.
-</dd>
-<dt>DenyUser [ user @group ... ]
-</dt>
-<dd></dd>
-<dd>Prevents specific users and groups from printing to the printer.
-</dd>
-<dt>Info text
-</dt>
-<dd></dd>
-<dd>Specifies human-readable text describing the printer.
-</dd>
-<dt>JobSheets banner banner
-</dt>
-<dd></dd>
-<dd>Specifies the banner pages to use for the printer.
-</dd>
-<dt>KLimit number
-</dt>
-<dd></dd>
-<dd>Specifies the job-k-limit value for the printer.
-</dd>
-<dt>Location text
-</dt>
-<dd></dd>
-<dd>Specifies human-readable text describing the location of the printer.
-</dd>
-<dt>OpPolicy name
-</dt>
-<dd></dd>
-<dd>Specifies the operation policy for the printer.
-</dd>
-<dt>PageLimit number
-</dt>
-<dd></dd>
-<dd>Specifies the job-page-limit value for the printer.
-</dd>
-<dt>Printer
-</dt>
-<dd></dd>
-<dd>Specifies a printer that is a member of the printer class.
-</dd>
-<dt>QuotaPeriod seconds
-</dt>
-<dd></dd>
-<dd>Specifies the job-quota-period value for the printer.
-</dd>
-<dt>Shared Yes
-</dt>
-<dd></dd>
-<dt>Shared No
-</dt>
-<dd></dd>
-<dd>Specifies whether the printer is shared.
-</dd>
-<dt>State idle
-</dt>
-<dd></dd>
-<dt>State stopped
-</dt>
-<dd></dd>
-<dd>Specifies the initial state of the printer (Idle or Stopped)
-</dd>
-<dt>StateMessage text
-</dt>
-<dd></dd>
-<dd>Specifies the message associated with the state.
-</dd>
-<dt>StateTime seconds
-</dt>
-<dd></dd>
-<dd>Specifies the date/time associated with the state.
-</dd>
-</dl>
+The <b>classes.conf</b> file defines the local printer classes that are available. It is normally located in the <i>/etc/cups</i> directory and is maintained by the
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8)</a>
+program. This file is not intended to be edited or managed manually.
+<h2 class="title"><a name="NOTES">Notes</a></h2>
+The name, location, and format of this file are an implementation detail that will change in future releases of CUPS.
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>, <a href='man-mime.convs.html?TOPIC=Man+Pages'>mime.convs(5)</a>,
-<a href='man-mime.types.html?TOPIC=Man+Pages'>mime.types(5)</a>, <a href='man-printers.conf.html?TOPIC=Man+Pages'>printers.conf(5)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-mime.convs.html?TOPIC=Man+Pages"><b>mime.convs</b>(5),</a>
+<a href="man-mime.types.html?TOPIC=Man+Pages"><b>mime.types</b>(5),</a>
+<a href="man-printers.conf.html?TOPIC=Man+Pages"><b>printers.conf</b>(5),</a>
+<a href="man-subscriptions.conf.html?TOPIC=Man+Pages"><b>subscriptions.conf</b>(5),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index a18e8dca20f498eda25e4d2e660c20e6b2bae8fe..a25435927cbec4879baf9efff5a80e137d804c1c 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: Man Pages -->
 <head>
@@ -8,62 +8,50 @@
 <body>
 <h1 class="title">client.conf(5)</h1>
 <h2 class="title"><a name="NAME">Name</a></h2>
-client.conf - client configuration file for cups
+client.conf - client configuration file for cups (deprecated)
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <i>client.conf</i> file configures the CUPS client and is
-normally located in the <i>/etc/cups</i> or <i>~/.cups</i>
-directory. Each line in the file can be a configuration
-directive, a blank line, or a comment. Comment lines start with
-the # character.
-<h2 class="title"><a name="DIRECTIVES">Directives</a></h2>
-The following directives are understood by the client. Consult the
-on-line help for detailed descriptions:
-<dl>
-<dt>Encryption IfRequested
-</dt>
-<dd></dd>
-<dt>Encryption Never
-</dt>
-<dd></dd>
-<dt>Encryption Required
-</dt>
-<dd></dd>
-<dd>Specifies the level of encryption that is required for a particular
-location.
-</dd>
-<dt>GSSServiceName name
-</dt>
-<dd>Specifies the Kerberos service name that is used for authentication, typically
-"host", "http", or "ipp". CUPS adds the remote hostname
-("name@server.example.com") for you. The default name is
-"http".
-</dd>
-<dt>ServerName hostname-or-ip-address[:port]
-</dt>
-<dd></dd>
-<dt>ServerName /domain/socket
-</dt>
-<dd></dd>
-<dd>Specifies the address and optionally the port to use when connecting to the
-server. <b>Note: Not supported on OS X 10.7 or later.</b>
-</dd>
-<dt>ServerName hostname-or-ip-address[:port]/version=1.1
-</dt>
-<dd></dd>
-<dd>Specifies the address and optionally the port to use when connecting to a
-server running CUPS 1.3.12 and earlier. <b>Note: Not supported on OS X 10.7 or
-later.</b>
-</dd>
-<dt>User name
-</dt>
-<dd></dd>
-<dd>Specifies the default user name to use for requests.
-</dd>
+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.
+The <b>ServerName</b> directive is not supported on OS X at all.
+<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">
+<dt><b>AllowAnyRoot Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>AllowAnyRoot No</b>
+<dd style="margin-left: 5.0em">Specifies whether to allow TLS with certificates that have not been signed by a trusted Certificate Authority.
+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".
+<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>
+<dd style="margin-left: 5.0em">Specifies the level of encryption that should be used.
+<dt><b>GSSServiceName </b><i>name</i>
+<dd style="margin-left: 5.0em">Specifies the Kerberos service name that is used for authentication, typically "host", "http", or "ipp".
+CUPS adds the remote hostname ("name@server.example.com") for you. The default name is "http".
+<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>
+<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>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>
+<dd style="margin-left: 5.0em"><dt><b>ValidateCerts No</b>
+<dd style="margin-left: 5.0em">Specifies whether to only allow TLS with certificates whose common name matches the hostname.
+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.
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index 2bae394a9503be009a43227760e100119c85e0eb..389c08110a56c8f4f322602abb0122e6875e437e 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 cups-config - get cups api, compiler, directory, and link information.
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cups-config
-</b>--api-version
+<b>cups-config</b>
+<i>--api-version</i>
 <br>
-<b>cups-config
-</b>--build
+<b>cups-config</b>
+<i>--build</i>
 <br>
-<b>cups-config
-</b>--cflags
+<b>cups-config</b>
+<i>--cflags</i>
 <br>
-<b>cups-config
-</b>--datadir
+<b>cups-config</b>
+<i>--datadir</i>
 <br>
-<b>cups-config
-</b>--help
+<b>cups-config</b>
+<i>--help</i>
 <br>
-<b>cups-config
-</b>--ldflags
+<b>cups-config</b>
+<i>--ldflags</i>
 <br>
-<b>cups-config
-</b>[
-<i>--image
-</i>] [
-<i>--static
-</i>] --libs
+<b>cups-config</b>
+[
+<i>--image</i>
+] [
+<i>--static</i>
+]
+<i>--libs</i>
 <br>
-<b>cups-config
-</b>--serverbin
+<b>cups-config</b>
+<i>--serverbin</i>
 <br>
-<b>cups-config
-</b>--serverroot
+<b>cups-config</b>
+<i>--serverroot</i>
 <br>
-<b>cups-config
-</b>--version
+<b>cups-config</b>
+<i>--version</i>
 <br>
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<b>cups-config</b> is the CUPS program configuration utility. It should be
-used by application developers to determine the necessary command-line
-options for the compiler and linker, as well as determining installation
-directories for filters, configuration files, and drivers.
+The <b>cups-config</b> command allows application developers to determine the necessary command-line options for the compiler and linker, as well as the installation directories for filters, configuration files, and drivers.
+All values are reported to the standard output.
 <h2 class="title"><a name="OPTIONS">Options</a></h2>
-<dl>
-<dt>--api-version
-</dt>
-<dd></dd>
-<dd>Displays the current API version (major.minor).
-</dd>
-<dt>--build
-</dt>
-<dd></dd>
-<dd>Displays a system-specific build number.
-</dd>
-<dt>--cflags
-</dt>
-<dd></dd>
-<dd>Displays the necessary compiler options.
-</dd>
-<dt>--datadir
-</dt>
-<dd></dd>
-<dd>Displays the default CUPS data directory.
-</dd>
-<dt>--help
-</dt>
-<dd></dd>
-<dd>Displays the program usage message.
-</dd>
-<dt>--image
-</dt>
-<dd></dd>
-<dd>When used with <i>--libs</i>, adds the CUPS imaging library to the
-list of displayed libraries.
-</dd>
-<dt>--ldflags
-</dt>
-<dd></dd>
-<dd>Displays the necessary linker options.
-</dd>
-<dt>--libs
-</dt>
-<dd></dd>
-<dd>Displays the necessary librarys to link to.
-</dd>
-<dt>--serverbin
-</dt>
-<dd></dd>
-<dd>Displays the default CUPS binary directory,
-where filters and backends are stored.
-</dd>
-<dt>--serverroot
-</dt>
-<dd></dd>
-<dd>Displays the default CUPS configuration file directory.
-</dd>
-<dt>--static
-</dt>
-<dd></dd>
-<dd>When used with <i>--libs</i>, shows the static libraries instead
-of the default (shared) libraries.
-</dd>
-<dt>--version
-</dt>
-<dd></dd>
-<dd>Displays the full version number of the CUPS installation
-(major.minor.patch).
-</dd>
+The <b>cups-config</b> command accepts the following command-line options:
+<dl class="man">
+<dt><b>--api-version</b>
+<dd style="margin-left: 5.0em">Reports the current API version (major.minor).
+<dt><b>--build</b>
+<dd style="margin-left: 5.0em">Reports a system-specific build number.
+<dt><b>--cflags</b>
+<dd style="margin-left: 5.0em">Reports the necessary compiler options.
+<dt><b>--datadir</b>
+<dd style="margin-left: 5.0em">Reports the default CUPS data directory.
+<dt><b>--help</b>
+<dd style="margin-left: 5.0em">Reports the program usage message.
+<dt><b>--image</b>
+<dd style="margin-left: 5.0em">When used with <i>--libs</i>, adds the CUPS imaging library to the
+list of libraries.
+<dt><b>--ldflags</b>
+<dd style="margin-left: 5.0em">Reports the necessary linker options.
+<dt><b>--libs</b>
+<dd style="margin-left: 5.0em">Reports the necessary libraries to link to.
+<dt><b>--serverbin</b>
+<dd style="margin-left: 5.0em">Reports the default CUPS binary directory, where filters and backends are stored.
+<dt><b>--serverroot</b>
+<dd style="margin-left: 5.0em">Reports the default CUPS configuration file directory.
+<dt><b>--static</b>
+<dd style="margin-left: 5.0em">When used with <i>--libs</i>, reports the static libraries instead of the default (shared) libraries.
+<dt><b>--version</b>
+<dd style="margin-left: 5.0em">Reports the full version number of the CUPS installation (major.minor.patch).
 </dl>
+<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+Show the currently installed version of CUPS:
+<pre class="man">
+
+    cups-config --version
+
+</pre>
+Compile a simple one-file CUPS filter:
+<pre class="man">
+
+    cc `cups-config --cflags --ldflags` -o filter filter.c \
+        `cups-config --libs`
+</pre>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
diff --git a/doc/help/man-cups-deviced.html b/doc/help/man-cups-deviced.html
deleted file mode 100644 (file)
index df25250..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<!-- SECTION: Man Pages -->
-<head>
-       <link rel="stylesheet" type="text/css" href="../cups-printable.css">
-       <title>cups-deviced(8)</title>
-</head>
-<body>
-<h1 class="title">cups-deviced(8)</h1>
-<h2 class="title"><a name="NAME">Name</a></h2>
-cups-deviced - cups device daemon
-<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cups-deviced
-</b><i>request-id limit user-id options
-</i><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cups-deviced</i> polls the backends in
-<i>/usr/lib/cups/backend</i> or <i>/usr/libexec/cups/backend</i> (OS X) for a
-list of available devices. It is run by <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a> in response to a
-<i>CUPS-Get-Devices</i> request. The output format is an IPP
-response message. The <i>request-id</i> argument is the request ID
-from the original IPP request, typically 1. The <i>limit</i>
-argument is the limit value from the original IPP request - 0
-means no limit. The <i>user-id</i> argument is the
-requesting-user-name value from the original IPP request.
-Finally, the <i>options</i> argument is a space-delimited list of
-attributes ("name=value name=value ...") that were passed in
-with the request. Currently <i>cups-deviced</i> looks for the
-<i>requested-attributes</i> attribute and tailors the output
-accordingly.
-<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-backend(7), cupsd(8), cupsd.conf(5),
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
-<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
-
-</body>
-</html>
diff --git a/doc/help/man-cups-driverd.html b/doc/help/man-cups-driverd.html
deleted file mode 100644 (file)
index 0fc9183..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<!-- SECTION: Man Pages -->
-<head>
-       <link rel="stylesheet" type="text/css" href="../cups-printable.css">
-       <title>cups-driverd(8)</title>
-</head>
-<body>
-<h1 class="title">cups-driverd(8)</h1>
-<h2 class="title"><a name="NAME">Name</a></h2>
-cups-driverd - cups driver daemon
-<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cups-driverd
-</b>cat
-<i>ppd-name
-</i><br>
-<b>cups-driverd
-</b>list
-<i>request_id limit options
-</i><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cups-driverd</i> shows or lists PPD files. It is run in
-response to CUPS-Add-Modify-Printer or CUPS-Get-Devices requests.
-The first form ("cups-driverd cat ppd-name") writes the named PPD
-file to stdout. The output format is an uncompressed PPD file.
-<p>The second form lists the available manufacturers or PPD files to
-stdout as indicated by the <i>options</i> argument. The output
-format is an IPP response message. The <i>request_id</i> argument
-is the request ID from the original IPP request, typically 1. The
-<i>limit</i> argument is the limit value from the original IPP
-request - 0 means no limit. Finally, the <i>options</i> argument
-is a space-delimited list of attributes ("name=value name=value
-...") that were passed in with the request. Currently
-<i>cups-driverd</i> looks for the <i>ppd-make</i> and
-<i>requested-attributes</i> attributes and tailors the output
-accordingly.
-<h2 class="title"><a name="DRIVERS">Drivers</a></h2>
-Drivers can be static PPD files under the
-<i>/usr/share/cups/model</i> directory or programs under the
-<i>/usr/lib/cups/driver</i> or <i>/usr/libexec/cups/driver</i> (OS X) directories.
-Static PPD files must conform to the Adobe PPD File Format Specification version
-4.3 and may be compressed using the <i>gzip(1)</i> program. Driver
-programs must implement the command-line interface shown in the
-next section.
-<h3><a name="DRIVER_PROGRAMS">Driver Programs</a></h3>
-Driver programs provide a  interface to dynamically-generated PPD
-files. The following arguments are currently defined:
-<dl>
-<dt>drivername list
-</dt>
-<dd></dd>
-<dd>Lists the supported PPD files to stdout.
-</dd>
-<dt>drivername cat ppdname
-</dt>
-<dd></dd>
-<dd>Writes the named PPD file to stdout.
-</dd>
-</dl>
-<p>Driver programs MUST NOT query hardware or make other long-term operations that
-would delay the return of a driver list. See the NOTES section below for
-specific recommendations.
-<h3><a name="LISTING_FILES_(drivername_list)">Listing Files (drivername list)</a></h3>
-When run with the single argument "list", the program must list
-the available PPD files it can generate to stdout using the
-following format:
-<pre>
-    "drivername:ppdname" language "make" "make and model"
-    "drivername:ppdname" language "make" "make and model" "1284 device id"
-    "drivername:ppdname" language "make" "make and model" "1284 device id" "(PPD product)"
-    "drivername:ppdname" language "make" "make and model" "1284 device id" "(PPD product)" "PostScript version"
-    "drivername:ppdname" language "make" "make and model" "1284 device id" "(PPD product)" "PostScript version" "type"
-</pre>
-<p><i>Drivername</i> is the name of the driver program. <i>Ppdname</i>
-is the name used to select the given driver. <i>Language</i> is
-the locale associated with the default language of the PPD file,
-typically "en". <i>Make</i> is the Manufacturer name from the PPD
-file. <i>Make and model</i> is the NickName name from the PPD
-file. <i>1284 device id</i> is the 1284DeviceId from the PPD file,
-if any. <i>(PPD product)</i> is the Product string as it would appear in the PPD
-file or from a PostScript query. <i>PostScript version</i> is the PSVersion
-string as it would appear in the PPD file or from a PostScript query. <i>Type</i>
-is "postscript" for PostScript printers, "pdf" for PDF printers, "raster" for
-raster printers, or "fax" for facsimile devices.
-<h3><a name="WRITING_FILES_(drivername_cat_ppdname)">Writing Files (drivername cat ppdname)</a></h3>
-When the driver program is run with the "cat ppdname" arguments,
-it must write the named PPD file to stdout, uncompressed. If the
-named PPD file does not exist, the driver program must not write
-any output to stdout and report the error to stderr instead.
-<h3><a name="DRIVER_ERROR_MESSAGES">Driver Error Messages</a></h3>
-Error messages can be relayed back to <i>cupsd</i> by writing them
-to stderr. The following prefixes are recognized:
-<dl>
-<dt>DEBUG: [drivername]
-</dt>
-<dd></dd>
-<dd>Debugging messages
-</dd>
-<dt>ERROR: [drivername]
-</dt>
-<dd></dd>
-<dd>Error messages
-</dd>
-<dt>INFO: [drivername]
-</dt>
-<dd></dd>
-<dd>Informational messages
-</dd>
-</dl>
-<h2 class="title"><a name="NOTES">Notes</a></h2>
-Due to performance considerations, driver programs have been officially
-deprecated and should not be used for new development. Currently only the
-CUPS web interface and <a href='man-lpinfo.html?TOPIC=Man+Pages'>lpinfo(8)</a> command will request lists from all
-driver programs.
-<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-cupsd(8), cupsd.conf(5), cupstestppd(1), lpinfo(8),
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
-<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
-
-</body>
-</html>
index 3e30a9d98d5a47b35105bae38aeeebf3db1e48e8..2c3caa2c1260ce49bf9281cbd3a551ab93d5ea32 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 cups-files.conf - file and directory configuration file for cups
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <i>cups-files.conf</i> file configures the files and directories used by the
-CUPS scheduler, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>.  It is normally located in the
-<i>/etc/cups</i> directory.
-<p>Each line in the file can be a configuration directive, a blank line,
-or a comment. Comment lines start with the # character.
-<h2 class="title"><a name="DIRECTIVES">Directives</a></h2>
-The following directives are understood by <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>. Consult the
-on-line help for detailed descriptions:
-<dl>
-<dt>AccessLog filename
-</dt>
-<dd></dd>
-<dt>AccessLog syslog
-</dt>
-<dd></dd>
-<dd>Defines the access log filename.
-</dd>
-<dt>ConfigFilePerm mode
-</dt>
-<dd></dd>
-<dd>Specifies the permissions for all configuration files that the scheduler
-writes.
-</dd>
-<dt>DataDir path
-</dt>
-<dd></dd>
-<dd>Specified the directory where data files can be found.
-</dd>
-<dt>DocumentRoot directory
-</dt>
-<dd></dd>
-<dd>Specifies the root directory for the internal web server documents.
-</dd>
-<dt>ErrorLog filename
-</dt>
-<dd></dd>
-<dt>ErrorLog syslog
-</dt>
-<dd></dd>
-<dd>Specifies the error log filename.
-</dd>
-<dt>FatalErrors none
-</dt>
-<dd></dd>
-<dt>FatalErrors all -kind [... -kind]
-</dt>
-<dd></dd>
-<dt>FatalErrors kind [... kind]
-</dt>
-<dd></dd>
-<dd>Specifies which errors are fatal, causing the scheduler to exit. "Kind" is
-"browse", "config", "listen", "log", or "permissions".
-</dd>
-<dt>FileDevice Yes
-</dt>
-<dd></dd>
-<dt>FileDevice No
-</dt>
-<dd></dd>
-<dd>Specifies whether the file pseudo-device can be used for new
-printer queues.
-</dd>
-<dt>FontPath directory[:directory:...]
-</dt>
-<dd></dd>
-<dd>Specifies the search path for fonts.
-</dd>
-<dt>Group group-name-or-number
-</dt>
-<dd></dd>
-<dd>Specifies the group name or ID that will be used when executing
-external programs.
-</dd>
-<dt>LogFilePerm mode
-</dt>
-<dd></dd>
-<dd>Specifies the permissions for all log files that the scheduler writes.
-</dd>
-<dt>PageLog filename
-</dt>
-<dd></dd>
-<dt>PageLog syslog
-</dt>
-<dd></dd>
-<dd>Specifies the page log filename.
-</dd>
-<dt>Printcap
-</dt>
-<dd></dd>
-<dt>Printcap filename
-</dt>
-<dd></dd>
-<dd>Specifies the filename for a printcap file that is updated
-automatically with a list of available printers (needed for
-legacy applications); specifying Printcap with no filename
-disables printcap generation.
-</dd>
-<dt>RemoteRoot user-name
-</dt>
-<dd></dd>
-<dd>Specifies the username that is associated with unauthenticated root
-accesses.
-</dd>
-<dt>RequestRoot directory
-</dt>
-<dd></dd>
-<dd>Specifies the directory to store print jobs and other HTTP request
-data.
-</dd>
-<dt>ServerBin directory
-</dt>
-<dd></dd>
-<dd>Specifies the directory where backends, CGIs, daemons, and filters may
-be found.
-</dd>
-<dt>ServerCertificate filename
-</dt>
-<dd></dd>
-<dd>Specifies the encryption certificate to use.
-</dd>
-<dt>ServerKey filename
-</dt>
-<dd></dd>
-<dd>Specifies the encryption key to use.
-</dd>
-<dt>ServerRoot directory
-</dt>
-<dd></dd>
-<dd>Specifies the directory where the server configuration files can be found.
-</dd>
-<dt>SyncOnClose Yes
-</dt>
-<dd></dd>
-<dt>SyncOnClose No
-</dt>
-<dd>Specifies whether the scheduler calls <i>fsync(2)</i> after writing configuration
-or state files. The default is No.
-</dd>
-<dt>SystemGroup group-name [group-name ...]
-</dt>
-<dd></dd>
-<dd>Specifies the group(s) to use for System class authentication.
-</dd>
-<dt>TempDir directory
-</dt>
-<dd></dd>
-<dd>Specifies the directory where temporary files are stored.
-</dd>
-<dt>User user-name
-</dt>
-<dd></dd>
-<dd>Specifies the user name or ID that is used when running external programs.
-</dd>
+The <b>cups-files.conf</b> file configures the files and directories used by the CUPS scheduler,
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8).</a>
+It is normally located in the <i>/etc/cups</i> directory.
+<p>Each line in the file can be a configuration directive, a blank line, or a comment.
+Configuration directives typically consist of a name and zero or more values separated by whitespace.
+The configuration directive name and values are case-insensitive.
+Comment lines start with the # character.
+<h3><a name="DIRECTIVES">Directives</a></h3>
+The following directives are understood by
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8):</a>
+<dl class="man">
+<dt><b>AccessLog</b>
+<dd style="margin-left: 5.0em"><dt><b>AccessLog </b><i>filename</i>
+<dd style="margin-left: 5.0em"><dt><b>AccessLog syslog</b>
+<dd style="margin-left: 5.0em">Defines the access log filename.
+Specifying a blank filename disables access log generation.
+The value "syslog" causes log entries to be sent to the system log daemon.
+The server name may be included in filenames using the string "%s", for example:
+<pre class="man">
+
+    AccessLog /var/log/cups/%s-access_log
+
+</pre>
+The default is "/var/log/cups/access_log".
+<dt><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.
+</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.
+There is no way to disable this security feature.
+<dl class="man">
+<dt><b>DataDir </b><i>path</i>
+<dd style="margin-left: 5.0em">Specifies the directory where data files can be found.
+The default is usually "/usr/share/cups".
+<dt><b>DocumentRoot </b><i>directory</i>
+<dd style="margin-left: 5.0em">Specifies the root directory for the CUPS web interface content.
+The default is usually "/usr/share/doc/cups".
+<dt><b>ErrorLog</b>
+<dd style="margin-left: 5.0em"><dt><b>ErrorLog </b><i>filename</i>
+<dd style="margin-left: 5.0em"><dt><b>ErrorLog syslog</b>
+<dd style="margin-left: 5.0em">Defines the error log filename.
+Specifying a blank filename disables error log generation.
+The value "syslog" causes log entries to be sent to the system log daemon.
+The server name may be included in filenames using the string "%s", for example:
+<pre class="man">
+
+    ErrorLog /var/log/cups/%s-error_log
+
+</pre>
+The default is "/var/log/cups/error_log".
+<dt><b>FatalErrors none</b>
+<dd style="margin-left: 5.0em"><dt><b>FatalErrors all </b><i>-kind </i>[ ... <i>-kind </i>]
+<dd style="margin-left: 5.0em"><dt><b>FatalErrors </b><i>kind </i>[ ... <i>kind </i>]
+<dd style="margin-left: 5.0em">Specifies which errors are fatal, causing the scheduler to exit.
+The default is "config".
+The <i>kind</i> strings are:
+<div style="margin-left: 0.0em;">
+<dl class="man">
+<dt><b>none</b>
+<dd style="margin-left: 5.0em">No errors are fatal.
+<dt><b>all</b>
+<dd style="margin-left: 5.0em">All of the errors below are fatal.
+<dt><b>browse</b>
+<dd style="margin-left: 5.0em">Browsing initialization errors are fatal, for example failed connections to the DNS-SD daemon.
+<dt><b>config</b>
+<dd style="margin-left: 5.0em">Configuration file syntax errors are fatal.
+<dt><b>listen</b>
+<dd style="margin-left: 5.0em">Listen or Port errors are fatal, except for IPv6 failures on the loopback or "any" addresses.
+<dt><b>log</b>
+<dd style="margin-left: 5.0em">Log file creation or write errors are fatal.
+<dt><b>permissions</b>
+<dd style="margin-left: 5.0em">Bad startup file permissions are fatal, for example shared TLS certificate and key files with world-read permissions.
+</div>
+<dt><b>FileDevice Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>FileDevice No</b>
+<dd style="margin-left: 5.0em">Specifies whether the file pseudo-device can be used for new printer queues.
+The URI "file:///dev/null" is always allowed.
+<dt><b>Group </b><i>group-name-or-number</i>
+<dd style="margin-left: 5.0em">Specifies the group name or ID that will be used when executing external programs.
+The default group is operating system specific but is usually "lp" or "nobody".
+<dt><b>LogFilePerm </b><i>mode</i>
+<dd style="margin-left: 5.0em">Specifies the permissions of all log files that the scheduler writes.
+The default is "0644".
+<dt><b>PageLog </b>[ <i>filename</i> ]
+<dd style="margin-left: 5.0em"><dt><b>PageLog syslog</b>
+<dd style="margin-left: 5.0em">Defines the page log filename.
+The value "syslog" causes log entries to be sent to the system log daemon.
+Specifying a blank filename disables page log generation.
+The server name may be included in filenames using the string "%s", for example:
+<pre class="man">
+
+    PageLog /var/log/cups/%s-page_log
+
+</pre>
+The default is "/var/log/cups/page_log".
+<dt><b>RemoteRoot </b><i>username</i>
+<dd style="margin-left: 5.0em">Specifies the username that is associated with unauthenticated accesses by clients claiming to be the root user.
+The default is "remroot".
+<dt><b>RequestRoot </b><i>directory</i>
+<dd style="margin-left: 5.0em">Specifies the directory that contains print jobs and other HTTP request data.
+The default is "/var/spool/cups".
+<dt><b>Sandboxing off</b>
+<dd style="margin-left: 5.0em"><dt><b>Sandboxing relaxed</b>
+<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.
+<dt><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><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.
+<dt><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".
+<dt><b>SyncOnClose Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>SyncOnClose No</b>
+<dd style="margin-left: 5.0em">Specifies whether the scheduler calls
+<b>fsync</b>(2)
+after writing configuration or state files.
+The default is "No".
+<dt><b>SystemGroup </b><i>group-name </i>[ ... <i>group-name</i> ]
+<dd style="margin-left: 5.0em">Specifies the group(s) to use for <i>@SYSTEM</i> group authentication.
+The default contains "admin", "lpadmin", "root", "sys", and/or "system".
+<dt><b>TempDir </b><i>directory</i>
+<dd style="margin-left: 5.0em">Specifies the directory where temporary files are stored.
+The default is "/var/spool/cups/tmp".
+<dt><b>User </b><i>username</i>
+<dd style="margin-left: 5.0em">Specifies the user name or ID that is used when running external programs.
+The default is "lp".
 </dl>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-classes.conf.html?TOPIC=Man+Pages'>classes.conf(5)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>, <a href='man-mime.convs.html?TOPIC=Man+Pages'>mime.convs(5)</a>,
-<a href='man-mime.types.html?TOPIC=Man+Pages'>mime.types(5)</a>, <a href='man-printers.conf.html?TOPIC=Man+Pages'>printers.conf(5)</a>,
-<a href='man-subscriptions.conf.html?TOPIC=Man+Pages'>subscriptions.conf(5)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-classes.conf.html?TOPIC=Man+Pages"><b>classes.conf</b>(5),</a>
+<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-mime.convs.html?TOPIC=Man+Pages"><b>mime.convs</b>(5),</a>
+<a href="man-mime.types.html?TOPIC=Man+Pages"><b>mime.types</b>(5),</a>
+<a href="man-printers.conf.html?TOPIC=Man+Pages"><b>printers.conf</b>(5),</a>
+<a href="man-subscriptions.conf.html?TOPIC=Man+Pages"><b>subscriptions.conf</b>(5),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index fc891605ab6a20e19432fb3a063575a90b8a5ac7..b4f1184e04148f7fc66e2b13d7cc406075c17a82 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 cups-lpd - receive print jobs and report printer status to lpd clients
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cups-lpd
-</b>[ -h
-<i>hostname[:port]
-</i>] [ -n ] [ -o
-<i>option=value
-</i>]
+<b>cups-lpd</b>
+[
+<b>-h </b><i>hostname</i>[<b>:</b><i>port</i>]
+] [
+<b>-n</b>
+] [
+<b>-o</b>
+<i>option=value</i>
+]
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cups-lpd</i> is the CUPS Line Printer Daemon ("LPD")
-mini-server that supports legacy client systems that use the LPD
-protocol. <i>cups-lpd</i> does not act as a standalone network
-daemon but instead operates using the Internet "super-server"
-<i>inetd(8)</i> or <i>xinetd(8)</i>. If you are using <i>inetd</i>,
+<b>cups-lpd</b>
+is the CUPS Line Printer Daemon ("LPD") mini-server that supports legacy client systems that use the LPD protocol.
+<b>cups-lpd</b>
+does not act as a standalone network daemon but instead operates using any of the Internet "super-servers" such as
+<b>inetd</b>(8),
+<b>launchd</b>(8),
+and
+<b>systemd</b>(8).
+<h2 class="title"><a name="OPTIONS">Options</a></h2>
+<dl class="man">
+<dt><b>-h </b><i>hostname</i>[<b>:</b><i>port</i>]
+<dd style="margin-left: 5.0em">Sets the CUPS server (and port) to use.
+<dt><b>-n</b>
+<dd style="margin-left: 5.0em">Disables reverse address lookups; normally
+<b>cups-lpd</b>
+will try to discover the hostname of the client via a reverse DNS lookup.
+<dt><b>-o </b><i>name=value</i>
+<dd style="margin-left: 5.0em">Inserts options for all print queues. Most often this is used to disable the "l" filter so that remote print jobs are filtered as needed for printing; the
+<b>inetd</b>(8)
+example below sets the "document-format" option to "application/octet-stream" which forces autodetection of the print file format.
+</dl>
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+<b>cups-lpd</b>
+does not enforce the restricted source port number specified in RFC 1179, as using restricted ports does not prevent users from submitting print jobs.
+While this behavior is different than standard Berkeley LPD implementations, it should not affect normal client operations.
+<p>The output of the status requests follows RFC 2569, Mapping between LPD and IPP Protocols. Since many LPD implementations stray from this definition, remote status reporting to LPD clients may be unreliable.
+<h2 class="title"><a name="ERRORS">Errors</a></h2>
+Errors are sent to the system log.
+<h2 class="title"><a name="FILES">Files</a></h2>
+<pre class="man">
+<i>/etc/inetd.conf</i>
+<i>/etc/xinetd.d/cups-lpd</i>
+<i>/System/Library/LaunchDaemons/org.cups.cups-lpd.plist</i>
+</pre>
+<h2 class="title"><a name="NOTES">Notes</a></h2>
+<h3><a name="PERFORMANCE">Performance</a></h3>
+<b>cups-lpd</b>
+performs well with small numbers of clients and printers.
+However, since a new process is created for each connection and since each process must query the printing system before each job submission, it does not scale to larger configurations.
+We highly recommend that large configurations use the native IPP support provided by CUPS instead.
+<h3><a name="SECURITY">Security</a></h3>
+<b>cups-lpd</b>
+currently does not perform any access control based on the settings in <i>cupsd.conf(5)</i> or in the <i>hosts.allow(5)</i> or <i>hosts.deny(5)</i> files used by TCP wrappers.
+Therefore, running
+<b>cups-lpd</b>
+on your server will allow any computer on your network (and perhaps the entire
+Internet) to print to your server.
+<p>While
+<b>xinetd</b>(8)
+has built-in access control support, you should use the TCP wrappers package with
+<b>inetd</b>(8)
+to limit access to only those computers that should be able to print through your server.
+<p><b>cups-lpd</b>
+is not enabled by the standard CUPS distribution.
+Please consult with your operating system vendor to determine whether it is enabled by default on your system.
+<h2 class="title"><a name="EXAMPLE">Example</a></h2>
+If you are using
+<b>inetd</b>(8),
 add the following line to the <i>inetd.conf</i> file to enable the
-<i>cups-lpd</i> mini-server:
-<br>
-<pre>
+<b>cups-lpd</b>
+mini-server:
+<pre class="man">
 
     printer stream tcp nowait lp /usr/lib/cups/daemon/cups-lpd cups-lpd \
         -o document-format=application/octet-stream
-</pre>
-<p><p><b>Note:</b> If you are using Solaris 10 or higher, you must run
-the <i>inetdconv(1m)</i> program to register the changes to the
-inetd.conf file.
-<p>If you are using the newer <i>xinetd(8)</i> daemon, create a file
-named <i>/etc/xinetd.d/cups</i> containing the following lines:
-<br>
-<pre>
 
-    service printer
-    {
-        socket_type = stream
-        protocol = tcp
-        wait = no
-        user = lp
-       group = sys
-       passenv =
-        server = /usr/lib/cups/daemon/cups-lpd
-       server_args = -o document-format=application/octet-stream
-    }
 </pre>
-<h2 class="title"><a name="OPTIONS">Options</a></h2>
-<dl>
-<dt>-h hostname[:port]
-</dt>
-<dd></dd>
-<dd>Sets the CUPS server (and port) to use.
-</dd>
-<dt>-n
-</dt>
-<dd></dd>
-<dd>Disables reverse address lookups; normally <i>cups-lpd</i> will
-try to discover the hostname of the client via a reverse DNS
-lookup.
-</dd>
-<dt>-o name=value
-</dt>
-<dd></dd>
-<dd>Inserts options for all print queues. Most often this is used to
-disable the "l" filter so that remote print jobs are filtered as
-needed for printing; the examples in the previous section set the
-"document-format" option to "application/octet-stream" which
-forces autodetection of the print file format.
-</dd>
-</dl>
-<h2 class="title"><a name="PERFORMANCE">Performance</a></h2>
-<i>cups-lpd</i> performs well with small numbers of clients and
-printers. However, since a new process is created for each
-connection and since each process must query the printing system
-before each job submission, it does not scale to larger
-configurations. We highly recommend that large configurations
-use the native IPP support provided by CUPS instead.
-<h2 class="title"><a name="SECURITY">Security</a></h2>
-<i>cups-lpd</i> currently does not perform any access control
-based on the settings in <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a> or in the
-<i>hosts.allow(5)</i> or <i>hosts.deny(5)</i> files used by TCP
-wrappers. Therefore, running <i>cups-lpd</i> on your server will
-allow any computer on your network (and perhaps the entire
-Internet) to print to your server.
-<p>While <i>xinetd</i> has built-in access control support, you
-should use the TCP wrappers package with <i>inetd</i> to limit
-access to only those computers that should be able to print
-through your server.
-<p><i>cups-lpd</i> is not enabled by the standard CUPS distribution.
-Please consult with your operating system vendor to determine
-whether it is enabled on your system.
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-<i>cups-lpd</i> does not enforce the restricted source port
-number specified in RFC 1179, as using restricted ports does not
-prevent users from submitting print jobs. While this behavior is
-different than standard Berkeley LPD implementations, it should
-not affect normal client operations.
-<p>The output of the status requests follows RFC 2569, Mapping
-between LPD and IPP Protocols. Since many LPD implementations
-stray from this definition, remote status reporting to LPD
-clients may be unreliable.
+<p><i>Note:</i> If you are using Solaris 10 or higher, you must run the
+<b>inetdconv</b>(1m)
+program to register the changes to the <i>inetd.conf</i> file.
+<p>CUPS includes configuration files for
+<b>launchd</b>(8),
+<b>systemd</b>(8),
+and
+<b>xinetd(8).</b>
+Simply enable the
+<b>cups-lpd</b>
+service using the corresponding control program.
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<i>cups(1)</i>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <i>inetconv(1m)</i>,
-<i>inetd(8)</i>, <i>xinetd(8)</i>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<b>inetconv</b>(1m),
+<b>inetd</b>(8),
+<b>launchd</b>(8),
+<b>xinetd</b>(8),
+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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index 130ef3cf8c9a12da5ae4b0e45bea8a7f2e18a817..fb8c88925f33935eb1b98ae006737a3c2c15b7fc 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: Man Pages -->
 <head>
@@ -7,76 +7,49 @@
 </head>
 <body>
 <h1 class="title">snmp.conf(5)</h1>
-
 <h2 class="title"><a name="NAME">Name</a></h2>
 snmp.conf - snmp configuration file for cups
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <i>snmp.conf</i> file configures how the standard CUPS network backends
-(http, https, ipp, ipps, lpd, snmp, and socket) access printer information using
-SNMPv1 and is normally located in the <i>/etc/cups</i> directory. Each line in
-the file can be a configuration directive, a blank line, or a comment. Comment
-lines start with the # character.
-<p>The Community and DebugLevel directives are used by all backends. The remainder
-apply only to the SNMP backend (<a href='man-cups-snmp.html?TOPIC=Man+Pages'>cups-snmp(8)</a>).
+The
+<b>snmp.conf</b>
+file configures how the standard CUPS network backends (http, https, ipp, ipps, lpd, snmp, and socket) access printer information using SNMPv1 and is normally located in the <i>/etc/cups</i> directory.
+Each line in the file can be a configuration directive, a blank line, or a comment. Comment lines start with the # character.
+<p>The Community and DebugLevel directives are used by all backends. The remainder apply only to the SNMP backend -
+<a href="man-cups-snmp.html?TOPIC=Man+Pages"><b>cups-snmp</b>(8).</a>
 <h2 class="title"><a name="DIRECTIVES">Directives</a></h2>
-The following directives are understood by the CUPS network backends. Consult
-the on-line help for detailed descriptions:
-<dl>
-<dt>Address @IF(<i>name</i>)
-</dt>
-<dd></dd>
-<dt>Address @LOCAL
-</dt>
-<dd></dd>
-<dt>Address <i>address</i>
-</dt>
-<dd></dd>
-<dd>Sends SNMP broadcast queries to the specified address(es). There is no default
-for the broadcast address.
-</dd>
-<dt>Community <i>name</i>
-</dt>
-<dd></dd>
-<dd>Specifies the community name to use. Only a single community name may be
-specified. The default community name is "public".
-</dd>
-<dt>DebugLevel number
-</dt>
-<dd></dd>
-<dd>Specifies the logging level from 0 (none) to 3 (everything). Typically only used
-for debugging (thus the name). The default debug level is 0.
-</dd>
-<dt>DeviceURI "regular expression" device-uri [... device-uri]
-</dt>
-<dd></dd>
-<dd>Specifies one or more device URIs that should be used for a given make and model
-string. The regular expression is used to match the detected make and model, and
-the device URI strings must be of the form "scheme://%s[:port]/[path]", where
-"%s" represents the detected address or hostname. There are no default device
-URI matching rules.
-</dd>
-<dt>HostNameLookups on
-</dt>
-<dd></dd>
-<dt>HostNameLookups off
-</dt>
-<dd></dd>
-<dd>Specifies whether the addresses of printers should be converted to hostnames or
-left as numeric IP addresses. The default is "off".
-</dd>
-<dt>MaxRunTime <i>seconds</i>
-</dt>
-<dd></dd>
-<dd>Specifies the maximum number of seconds that the SNMP backend will scan the
-network for printers. The default is 120 seconds (2 minutes).
-</dd>
+The following directives are understood by the CUPS network backends:
+<dl class="man">
+<dt><b>Address @IF(</b><i>name</i><b>)</b>
+<dd style="margin-left: 5.0em"><dt><b>Address @LOCAL</b>
+<dd style="margin-left: 5.0em"><dt><b>Address </b><i>address</i>
+<dd style="margin-left: 5.0em">Sends SNMP broadcast queries (for discovery) to the specified address(es).
+There is no default for the broadcast address.
+<dt><b>Community </b><i>name</i>
+<dd style="margin-left: 5.0em">Specifies the community name to use.
+Only a single community name may be specified.
+The default community name is "public".
+<dt><b>DebugLevel </b><i>number</i>
+<dd style="margin-left: 5.0em">Specifies the logging level from 0 (none) to 3 (everything).
+Typically only used for debugging (thus the name).
+The default debug level is 0.
+<dt><b>DeviceURI "</b><i>regular expression</i><b>" </b><i>device-uri </i>[... <i>device-uri</i>]
+<dd style="margin-left: 5.0em">Specifies one or more device URIs that should be used for a given make and model string.
+The regular expression is used to match the detected make and model, and the device URI strings must be of the form "scheme://%s[:port]/[path]", where "%s" represents the detected address or hostname.
+There are no default device URI matching rules.
+<dt><b>HostNameLookups on</b>
+<dd style="margin-left: 5.0em"><dt><b>HostNameLookups off</b>
+<dd style="margin-left: 5.0em">Specifies whether the addresses of printers should be converted to hostnames or left as numeric IP addresses.
+The default is "off".
+<dt><b>MaxRunTime </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies the maximum number of seconds that the SNMP backend will scan the
+network for printers.
+The default is 120 seconds (2 minutes).
 </dl>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-cups-snmp(8),
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index d3d1a6a7a51ebce702ee5af415d30aeb6e929c35..06a48133fff7ad7c208abdce8b061774a72f35fd 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 snmp - cups snmp backend
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>/usr/lib/cups/backend/snmp
-</b><i>ip-address-or-hostname
-</i><br>
-<b>/usr/libexec/cups/backend/snmp
-</b><i>ip-address-or-hostname
-</i><br>
-<b>lpinfo -v --include-schemes snmp
-</b><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The CUPS SNMP backend provides legacy discovery and identification of network
-printers using SNMPv1. When used for discovery through the scheduler, the
-backend will list all printers that respond to a broadcast SNMPv1 query with the
-"public" community name. Additional queries are then sent to printers that
-respond in order to determine the correct device URI, make and model, and other
-information needed for printing.
-<p>In the first form, the SNMP backend is run directly by the user to look up the
-device URI and other information when you have an IP address or hostname. This
-can be used for programs that need to configure print queues where the user has
-supplied an address but nothing else.
-<p>In the second form, the SNMP backend is run indirectly using the <a href='man-lpinfo.html?TOPIC=Man+Pages'>lpinfo(8)</a>
-command. The output provides all printers detected via SNMP on the configured
-broadcast addresses. <b>Note</b>: no broadcast addresses are configured by
-default.
-<h2 class="title"><a name="MIBS">Mibs</a></h2>
-The CUPS SNMP backend uses the information from the Host, Printer, and Port
-Monitor MIBs along with some vendor private MIBs and intelligent port probes to
-determine the correct device URI and make and model for each printer.
-<h2 class="title"><a name="CONFIGURATION">Configuration</a></h2>
-The SNMP backend reads the /etc/cups/snmp.conf configuration file, if
+<b>/usr/lib/cups/backend/snmp</b>
+<i>ip-address-or-hostname</i>
+<br>
+<b>/usr/libexec/cups/backend/snmp</b>
+<i>ip-address-or-hostname</i>
+<br>
+<b>lpinfo</b>
+<b>-v</b>
+<b>--include-schemes</b>
+snmp
+<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
+The CUPS SNMP backend provides legacy discovery and identification of network printers using SNMPv1.
+When used for discovery through the scheduler, the backend will list all printers that respond to a broadcast SNMPv1 query with the "public" community name.
+Additional queries are then sent to printers that respond in order to determine the correct device URI, make and model, and other information needed for printing.
+<p>In the first form, the SNMP backend is run directly by the user to look up the device URI and other information when you have an IP address or hostname.
+This can be used for programs that need to configure print queues where the user has supplied an address but nothing else.
+<p>In the second form, the SNMP backend is run indirectly using the
+<a href="man-lpinfo.html?TOPIC=Man+Pages"><b>lpinfo</b>(8)</a>
+command.
+The output provides all printers detected via SNMP on the configured
+broadcast addresses.
+<i>Note: no broadcast addresses are configured by default.</i>
+<h2 class="title"><a name="ENVIRONMENT">Environment</a></h2>
+The DebugLevel value can be overridden using the CUPS_DEBUG_LEVEL environment variable.
+The MaxRunTime value can be overridden using the CUPS_MAX_RUN_TIME environment variable.
+<h2 class="title"><a name="FILES">Files</a></h2>
+The SNMP backend reads the <i>/etc/cups/snmp.conf</i> configuration file, if
 present, to set the default broadcast address, community name, and logging
-level. The configuration file is documented in <a href='man-cups-snmp.conf.html?TOPIC=Man+Pages'>cups-snmp.conf(5)</a>. The
-DebugLevel value can be overridden using the CUPS_DEBUG_LEVEL environment
-variable and the MaxRunTime value can be overridden using the CUPS_MAX_RUN_TIME
-environment variable.
+level.
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+The CUPS SNMP backend uses the information from the Host, Printer, and Port Monitor MIBs along with some vendor private MIBs and intelligent port probes to determine the correct device URI and make and model for each printer.
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-backend.html?TOPIC=Man+Pages'>backend(7)</a>, <a href='man-cups-snmp.conf.html?TOPIC=Man+Pages'>cups-snmp.conf(5)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>,
-<a href='man-filter.html?TOPIC=Man+Pages'>filter(7)</a>, <a href='man-lpinfo.html?TOPIC=Man+Pages'>lpinfo(8)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-backend.html?TOPIC=Man+Pages"><b>backend</b>(7),</a>
+<a href="man-cups-snmp.conf.html?TOPIC=Man+Pages"><b>cups-snmp.conf</b>(5),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
diff --git a/doc/help/man-cups.html b/doc/help/man-cups.html
new file mode 100644 (file)
index 0000000..016056e
--- /dev/null
@@ -0,0 +1,119 @@
+<!DOCTYPE HTML>
+<html>
+<!-- SECTION: Man Pages -->
+<head>
+       <link rel="stylesheet" type="text/css" href="../cups-printable.css">
+       <title>cups(1)</title>
+</head>
+<body>
+<h1 class="title">cups(1)</h1>
+<h2 class="title"><a name="NAME">Name</a></h2>
+cups - a standards-based, open source printing system
+<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
+<b>CUPS</b>
+is the software you use to print from applications like word processors, email readers, photo editors, and web browsers. It converts the page descriptions produced by your application (put a paragraph here, draw a line there, and so forth) into something your printer can understand and then sends the information to the printer for printing.
+<p>Now, since every printer manufacturer does things differently, printing can be very complicated.
+<b>CUPS</b>
+does its best to hide this from you and your application so that you can concentrate on printing and less on how to print. Generally, the only time you need to know anything about your printer is when you use it for the first time, and even then
+<b>CUPS</b>
+can often figure things out on its own.
+<h3><a name="HOW_DOES_IT_WORK_">How Does It Work?</a></h3>
+The first time you print to a printer,
+<b>CUPS</b>
+creates a queue to keep track of the current status of the printer (everything OK, out of paper, etc.) and any pages you have printed. Most of the time the queue points to a printer connected directly to your computer via a USB port, however it can also point to a printer on your network, a printer on the Internet, or multiple printers depending on the configuration. Regardless of where the queue points, it will look like any other printer to you and your applications.
+<p>Every time you print something,
+<b>CUPS</b>
+creates a job which contains the queue you are sending the print to, the name of the document you are printing, and the page descriptions. Job are numbered (queue-1, queue-2, and so forth) so you can monitor the job as it is printed or cancel it if you see a mistake. When
+<b>CUPS</b>
+gets a job for printing, it determines the best programs (filters, printer drivers, port monitors, and backends) to convert the pages into a printable format and then runs them to actually print the job.
+<p>When the print job is completely printed,
+<b>CUPS</b>
+removes the job from the queue and moves on to any other jobs you have submitted. You can also be notified when the job is finished, or if there are any errors during printing, in several different ways.
+<h3><a name="WHERE_DO_I_BEGIN_">Where Do I Begin?</a></h3>
+The easiest way to start is by using the web interface to configure your printer. Go to "<a href="http://localhost:631"">http://localhost:631"</a> and choose the Administration tab at the top of the page. Click/press on the Add Printer button and follow the prompts.
+<p>When you are asked for a username and password, enter your login username and password or the "root" username and password.
+<p>After the printer is added you will be asked to set the default printer options (paper size, output mode, etc.) for the printer. Make any changes as needed and then click/press on the Set Default Options button to save them. Some printers also support auto-configuration - click/press on the Query Printer for Default Options button to update the options automatically.
+<p>Once you have added the printer, you can print to it from any application. You can also choose Print Test Page from the maintenance menu to print a simple test page and verify that everything is working properly.
+<p>You can also use the
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8)</a>
+and
+<a href="man-lpinfo.html?TOPIC=Man+Pages"><b>lpinfo</b>(8)</a>
+commands to add printers to
+<b>CUPS</b>.
+Additionally, your operating system may include graphical user interfaces or automatically create printer queues when you connect a printer to your computer.
+<h3><a name="HOW_DO_I_GET_HELP_">How Do I Get Help?</a></h3>
+The
+<b>CUPS</b>
+web site (<a href="http://www.CUPS.org">http://www.CUPS.org</a>) provides access to the
+<i>cups</i>
+and
+<i>cups-devel</i>
+mailing lists, additional documentation and resources, and a bug report database. Most vendors also provide online discussion forums to ask printing questions for your operating system of choice.
+<h2 class="title"><a name="ENVIRONMENT">Environment</a></h2>
+<b>CUPS</b>
+commands use the following environment variables to override the default locations of files and so forth. For security reasons, these environment variables are ignored for setuid programs:
+<dl class="man">
+<dt><b>CUPS_ANYROOT</b>
+<dd style="margin-left: 5.0em">Whether to allow any X.509 certificate root (Y or N).
+<dt><b>CUPS_CACHEDIR</b>
+<dd style="margin-left: 5.0em">The directory where semi-persistent cache files can be found.
+<dt><b>CUPS_DATADIR</b>
+<dd style="margin-left: 5.0em">The directory where data files can be found.
+<dt><b>CUPS_ENCRYPTION</b>
+<dd style="margin-left: 5.0em">The default level of encryption (Always, IfRequested, Never, Required).
+<dt><b>CUPS_EXPIREDCERTS</b>
+<dd style="margin-left: 5.0em">Whether to allow expired X.509 certificates (Y or N).
+<dt><b>CUPS_GSSSERVICENAME</b>
+<dd style="margin-left: 5.0em">The Kerberos service name used for authentication.
+<dt><b>CUPS_SERVER</b>
+<dd style="margin-left: 5.0em">The hostname/IP address and port number of the CUPS scheduler (hostname:port or ipaddress:port).
+<dt><b>CUPS_SERVERBIN</b>
+<dd style="margin-left: 5.0em">The directory where server helper programs, filters, backend, etc. can be found.
+<dt><b>CUPS_SERVERROOT</b>
+<dd style="margin-left: 5.0em">The root directory of the server.
+<dt><b>CUPS_STATEDIR</b>
+<dd style="margin-left: 5.0em">The directory where state files can be found.
+<dt><b>CUPS_USER</b>
+<dd style="margin-left: 5.0em">Specifies the name of the user for print requests.
+<dt><b>HOME</b>
+<dd style="margin-left: 5.0em">Specifies the home directory of the current user.
+<dt><b>IPP_PORT</b>
+<dd style="margin-left: 5.0em">Specifies the default port number for IPP requests.
+<dt><b>LOCALEDIR</b>
+<dd style="margin-left: 5.0em">Specifies the location of localization files.
+<dt><b>LPDEST</b>
+<dd style="margin-left: 5.0em">Specifies the default print queue (System V standard).
+<dt><b>PRINTER</b>
+<dd style="margin-left: 5.0em">Specifies the default print queue (Berkeley standard).
+<dt><b>TMPDIR</b>
+<dd style="margin-left: 5.0em">Specifies the location of temporary files.
+</dl>
+<h2 class="title"><a name="FILES">Files</a></h2>
+<pre class="man">
+<i>~/.cups/client.conf</i>
+<i>~/.cups/lpoptions</i>
+</pre>
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+<b>CUPS</b>
+conforms to the Internet Printing Protocol version 2.1 and implements the Berkeley and System V UNIX print commands.
+<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-client.conf.html?TOPIC=Man+Pages"><b>client.conf</b>(7),</a>
+<a href="man-cupsctl.html?TOPIC=Man+Pages"><b>cupsctl</b>(8),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8),</a>
+<a href="man-lpinfo.html?TOPIC=Man+Pages"><b>lpinfo</b>(8),</a>
+<a href="man-lpoptions.html?TOPIC=Man+Pages"><b>lpoptions</b>(1),</a>
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1),</a>
+<a href="man-lprm.html?TOPIC=Man+Pages"><b>lprm</b>(1),</a>
+<a href="man-lpq.html?TOPIC=Man+Pages"><b>lpq</b>(1),</a>
+<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>,
+CUPS Web Site (<a href="http://www.CUPS.org)">http://www.CUPS.org)</a>,
+PWG Internet Printing Protocol Workgroup (<a href="http://www.pwg.org/ipp">http://www.pwg.org/ipp</a>)
+<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
+Copyright &copy; 2007-2014 by Apple Inc.
+
+</body>
+</html>
index 6624bf9791bfdddc2467de2c72df309e6c22264f..739d615f006a2c7e597df220171fc7f32190e87b 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 cupsaccept/cupsreject - accept/reject jobs sent to a destination
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cupsaccept
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -h
-<i>hostname[:port]
-</i>] destination(s)
+<b>cupsaccept</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h</b>
+<i>hostname[:port]</i>
+]
+<i>destination(s)</i>
 <br>
-<b>cupsreject
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -h
-<i>hostname[:port]
-</i>] [ -r
-<i>reason
-</i>] destination(s)
+<b>cupsreject</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h</b>
+<i>hostname[:port]</i>
+] [
+<b>-r</b>
+<i>reason</i>
+]
+<i>destination(s)</i>
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cupsaccept</i> instructs the printing system to accept print jobs to the
+The
+<b>cupsaccept</b>
+command instructs the printing system to accept print jobs to the specified destinations.
+<p>The
+<b>cupsreject</b>
+command instructs the printing system to reject print jobs to the
 specified destinations.
-<p><i>cupsreject</i> instructs the printing system to reject print jobs to the
-specified destinations. The <i>-r</i> option sets the reason for rejecting
-print jobs. If not specified the reason defaults to "Reason Unknown".
+The <i>-r</i> option sets the reason for rejecting print jobs. If not specified, the reason defaults to "Reason Unknown".
 <h2 class="title"><a name="OPTIONS">Options</a></h2>
-The following options are supported by both <i>cupsaccept</i> and
-<i>cupsreject</i>:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Forces encryption when connecting to the server.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Sets the username that is sent when connecting to the server.
-</dd>
-<dt>-h hostname[:port]
-</dt>
-<dd></dd>
-<dd>Chooses an alternate server.
-</dd>
-<dt>-r "reason"
-</dt>
-<dd></dd>
-<dd>Sets the reason string that is shown for a printer that is
-rejecting jobs.
-</dd>
+The following options are supported by both
+<b>cupsaccept</b>
+and
+<b>cupsreject</b>:
+<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 that is sent when connecting to the server.
+<dt><b>-h </b><i>hostname[:port]</i>
+<dd style="margin-left: 5.0em">Chooses an alternate server.
+<dt><b>-r </b>"<i>reason</i>"
+<dd style="margin-left: 5.0em">Sets the reason string that is shown for a printer that is rejecting jobs.
 </dl>
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-Unlike the System V printing system, CUPS allows printer names to
-contain any printable character except SPACE, TAB, "/", or "#".
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+The
+<b>cupsaccept</b>
+and
+<b>cupsreject</b>
+commands correspond to the System V printing system commands "accept" and "reject", respectively.
+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 <i>not</i> case-sensitive.
-<p>The CUPS versions of <i>accept</i> and <i>reject</i> may ask the
-user for an access password depending on the printing system
-configuration. This differs from the System V versions which
-require the root user to execute these commands.
+<p>Finally, the CUPS versions may ask the user for an access password depending on the printing system configuration.
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cancel.html?TOPIC=Man+Pages'>cancel(1)</a>, <a href='man-cupsenable.html?TOPIC=Man+Pages'>cupsenable(8)</a>, <a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>,
-<a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a>, <a href='man-lpstat.html?TOPIC=Man+Pages'>lpstat(1)</a>,
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-cupsenable.html?TOPIC=Man+Pages"><b>cupsenable</b>(8),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8),</a>
+<a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
 <br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index cc4e46e6c945360c4eb301504fe0de460eb7a3cf..622d30a7d2ea8e177b9e024a0212708ddf7a541c 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: Man Pages -->
 <head>
 cupsaddsmb - export printers to samba for windows clients
 
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cupsaddsmb
-</b>[ -H
-<i>samba-server
-</i>] [ -U
-<i>samba-user[%samba-password]
-</i>] [ -h
-<i>cups-server[:port]
-</i>] [ -v ] -a
+<b>cupsaddsmb</b>
+[
+<b>-H</b>
+<i>samba-server</i>
+] [
+<b>-U</b>
+<i>samba-user[%samba-password]</i>
+] [
+<b>-h</b>
+<i>cups-server[:port]</i>
+] [
+<b>-v</b>
+]
+<b>-a</b>
 <br>
-<b>cupsaddsmb
-</b>[ -H
-<i>samba-server
-</i>] [ -U
-<i>samba-user[%samba-password]
-</i>] [ -h
-<i>cups-server[:port]
-</i>] [ -v ] printer [ ... printer ]
-
+<b>cupsaddsmb</b>
+[
+<b>-H</b>
+<i>samba-server</i>
+] [
+<b>-U</b>
+<i>samba-user[%samba-password]</i>
+] [
+<b>-h</b>
+<i>cups-server[:port]</i>
+] [
+<b>-v</b>
+]
+<i>printer</i>
+[ ...
+<i>printer</i>
+]
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cupsaddsmb</i> exports printers to the SAMBA software (version
-2.2.0 or higher) for use with Windows clients. Depending on the
-SAMBA configuration, you may need to provide a password to
-export the printers. This program requires the Windows printer
-driver files described below.
-
-<h2 class="title"><a name="OPTIONS">Options</a></h2>
-<i>cupsaddsmb</i> supports the following options:
-<dl>
-<dt>-H samba-server
-</dt>
-<dd></dd>
-<dd>Specifies the SAMBA server which defaults to the CUPS server.
-</dd>
-<dt>-U samba-user[%samba-password]
-</dt>
-<dd></dd>
-<dd>Specifies the SAMBA print admin username which defaults to your
-current username. If the username contains a percent (%)
-character, then the text following the percent is treated as the
-SAMBA password to use.
-</dd>
-<dt>-a
-</dt>
-<dd></dd>
-<dd>Exports all known printers. Otherwise only the named printers are
-exported.
-</dd>
-<dt>-h cups-server[:port]
-</dt>
-<dd></dd>
-<dd>Specifies a different CUPS server to use.
-</dd>
-<dt>-v
-</dt>
-<dd></dd>
-<dd>Specifies that verbose information should be shown. This is
-useful for debugging SAMBA configuration problems.
-
-</dd>
-</dl>
-<h2 class="title"><a name="SAMBA_CONFIGURATION">Samba Configuration</a></h2>
-<i>cupsaddsmb</i> uses the new RPC-based printing support in
-SAMBA 2.2.x to provide printer drivers and PPD files to Windows
-client machines. In order to use this functionality, you must
-first configure the SAMBA <i>smb.conf(5)</i> file to support
-printing through CUPS and provide a printer driver download
+The <b>cupsaddsmb</b> program exports printers to the SAMBA software (version 2.2.0 or higher) for use with Windows clients.
+Depending on the SAMBA configuration, you may need to provide a password to export the printers.
+This program requires the Windows printer driver files described below.
+<h3><a name="SAMBA_CONFIGURATION">Samba Configuration</a></h3>
+<b>cupsaddsmb</b> uses the RPC-based printing support in SAMBA to provide printer drivers and PPD files to Windows client machines.
+In order to use this functionality, you must first configure the SAMBA
+<b>smb.conf</b>(5)
+file to support printing through CUPS and provide a printer driver download
 share, as follows:
-<pre>
+<pre class="man">
 
     [global]
        load printers = yes
@@ -101,70 +76,46 @@ share, as follows:
        guest ok = no
        read only = yes
        write list = root
-</pre>
-<p>This configuration assumes a FHS-compliant installation of
-SAMBA; adjust the [printers] and [print$] share paths
-accordingly on your system as needed.
 
-<h2 class="title"><a name="MICROSOFT_POSTSCRIPT_DRIVERS_FOR_WINDOWS">Microsoft Postscript Drivers For Windows</a></h2>
-The base driver for Windows 2000 and higher is the Microsoft
-PostScript driver, which is available on any system running
-Windows 2000 or higher in the
-%WINDIR%\SYSTEM32\SPOOL\DRIVERS\W32X86\3 folder for 32-bit
-drivers and
-%WINDIR%\SYSTEM32\SPOOL\DRIVERS\X64\3 folder for 64-bit
-drivers.
-<p>However, currently only Windows 2000 and higher is supported by the Microsoft
-driver, so you will also need to get the Adobe driver to support
-Windows 95, 98, and Me clients. The Adobe and Microsoft drivers
-for Windows 2000 are identical.
-<p>Once you have extracted the driver files, copy the 32-bit drivers
-to the <i>/usr/share/cups/drivers</i> directory and the 64-bit
-drivers to the <i>/usr/share/cups/drivers/x64</i> directory exactly
-as named below:
-<pre>
+</pre>
+This configuration assumes a FHS-compliant installation of SAMBA; adjust the [printers] and [print$] share paths accordingly on your system as needed.
+<h3><a name="MICROSOFT_POSTSCRIPT_DRIVERS_FOR_WINDOWS">Microsoft Postscript Drivers For Windows</a></h3>
+The base driver for Windows 2000 and higher is the Microsoft PostScript driver, which is available on any system running Windows 2000 or higher in the %WINDIR%\SYSTEM32\SPOOL\DRIVERS\W32X86\3 folder for 32-bit drivers and %WINDIR%\SYSTEM32\SPOOL\DRIVERS\X64\3 folder for 64-bit drivers.
+<p>Copy the 32-bit drivers to the <i>/usr/share/cups/drivers</i> directory and the 64-bit drivers to the <i>/usr/share/cups/drivers/x64</i> directory exactly as named below:
+<pre class="man">
 
-    [Windows 2000 and higher]
     ps5ui.dll
     pscript.hlp
     pscript.ntf
     pscript5.dll
-</pre>
-<p><b>Note:</b> Unlike Windows, case is significant - make sure that
-you use the lowercase filenames shown above, otherwise
-<i>cupsaddsmb</i> will fail to export the drivers.
-
-<h2 class="title"><a name="ADOBE_POSTSCRIPT_DRIVERS_FOR_WINDOWS_95,_98,_AND_ME">Adobe Postscript Drivers For Windows 95, 98, And Me</a></h2>
-<i>cupsaddsmb</i> can use the Adobe PostScript printer driver for
-Windows 95, 98, and ME, which are available for download from the
-Adobe web site (<a href='http://www.adobe.com).'>http://www.adobe.com).</a>
-<p>The Adobe driver does not support the page-label, job-billing, or
-job-hold-until options.
-<p>Once you have installed the driver on a Windows system, copy the
-following files to the <i>/usr/share/cups/drivers</i> directory
-exactly as named below:
-<pre>
 
-    [Windows 95, 98, and Me]
-    ADFONTS.MFM
-    ADOBEPS4.DRV
-    ADOBEPS4.HLP
-    ICONLIB.DLL
-    PSMON.DLL
 </pre>
-<p><b>Note:</b> Unlike Windows, case is significant - make sure that
-you use the UPPERCASE filenames shown above, otherwise
-<i>cupsaddsmb</i> will fail to export the drivers.
-
-<h2 class="title"><a name="KNOWN_ISSUES">Known Issues</a></h2>
-Getting the full set of Windows driver files should be easier.
-
+<b>Note:</b> Unlike Windows, case is significant - make sure that you use the lowercase filenames shown above, otherwise <b>cupsaddsmb</b> will fail to export the drivers.
+<h2 class="title"><a name="OPTIONS">Options</a></h2>
+<b>cupsaddsmb</b> supports the following options:
+<dl class="man">
+<dt><b>-H </b><i>samba-server</i>
+<dd style="margin-left: 5.0em">Specifies the SAMBA server which defaults to the CUPS server.
+<dt><b>-U </b><i>samba-user</i>[<b>%</b><i>samba-password</i>]
+<dd style="margin-left: 5.0em">Specifies the SAMBA print admin username which defaults to your current username.
+If the username contains a percent (%) character, then the text following the percent is treated as the SAMBA password to use.
+<dt><b>-a</b>
+<dd style="margin-left: 5.0em">Exports all known printers.
+Otherwise only the named printers are exported.
+<dt><b>-h </b><i>cups-server</i>[<b>:</b><i>port</i>]
+<dd style="margin-left: 5.0em">Specifies a different CUPS server to use.
+<dt><b>-v</b>
+<dd style="margin-left: 5.0em">Specifies that verbose information should be shown.
+This is useful for debugging SAMBA configuration problems.
+</dl>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<i>smbd(8)</i>, <i>smb.conf(5)</i>,
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
-
+<b>rpcclient</b>(1),
+<b>smbclient</b>(1),
+<b>smbd</b>(8),
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index 1434321bf4314b979d95c71b79367e91b3557140..7fe7fe99c6466c0e44eeb16e1428002169aaddba 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 cupsctl - configure cupsd.conf options
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cupsctl
-</b>[ -E ] [-U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] [ --[no-]debug-logging ] [ --[no-]remote-admin ] [ --[no-]remote-any ]
-[ --[no-]share-printers ] [ --[no-]user-cancel-any ]
+<b>cupsctl</b>
 [
-<i>name=value
-</i>]
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h</b>
+<i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>--</b>[<b>no-</b>]<b>debug-logging</b>
+] [
+<b>--</b>[<b>no-</b>]<b>remote-admin</b>
+] [
+<b>--</b>[<b>no-</b>]<b>remote-any</b>
+] [
+<b>--</b>[<b>no-</b>]<b>share-printers</b>
+] [
+<b>--</b>[<b>no-</b>]<b>user-cancel-any</b>
+] [
+<i>name=value</i>
+]
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cupsctl</i> updates or queries the <b>cupsd.conf</b> file for a server. When
+<b>cupsctl</b> updates or queries the <i>cupsd.conf</i> file for a server. When
 no changes are requested, the current configuration values are written to the
 standard output in the format "name=value", one per line.
 <h2 class="title"><a name="OPTIONS">Options</a></h2>
 The following options are recognized:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Enables encryption on the connection to the scheduler.
-</dd>
-<dt>-U <i>username</i>
-</dt>
-<dd></dd>
-<dd>Specifies an alternate username to use when authenticating with the scheduler.
-</dd>
-<dt>-h <i>server[:port]</i>
-</dt>
-<dd></dd>
-<dd>Specifies the server address.
-</dd>
-<dt>--[no-]debug-logging
-</dt>
-<dd></dd>
-<dd>Enables or disables debug logging in the <b>error_log</b> file.
-</dd>
-<dt>--[no-]remote-admin
-</dt>
-<dd></dd>
-<dd>Enables or disables remote administration.
-</dd>
-<dt>--[no-]remote-any
-</dt>
-<dd></dd>
-<dd>Enables or disables printing from any address, e.g. the Internet.
-</dd>
-<dt>--[no-]share-printers
-</dt>
-<dd></dd>
-<dd>Enables or disables sharing of local printers with other computers.
-</dd>
-<dt>--[no-]user-cancel-any
-</dt>
-<dd></dd>
-<dd>Allows or prevents users from canceling jobs owned by others.
-</dd>
+<dl class="man">
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Enables encryption on the connection to the scheduler.
+<dt><b>-U </b><i>username</i>
+<dd style="margin-left: 5.0em">Specifies an alternate username to use when authenticating with the scheduler.
+<dt><b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+<dd style="margin-left: 5.0em">Specifies the server address.
+<dt><b>--fR[fBno-fR]fBdebug-logging</b>
+<dd style="margin-left: 5.0em">Enables (disables) debug logging to the <i>error_log</i> file.
+<dt><b>--fR[fBno-fR]fBremote-admin</b>
+<dd style="margin-left: 5.0em">Enables (disables) remote administration.
+<dt><b>--fR[fBno-fR]fBremote-any</b>
+<dd style="margin-left: 5.0em">Enables (disables) printing from any address, e.g., the Internet.
+<dt><b>--fR[fBno-fR]fBshare-printers</b>
+<dd style="margin-left: 5.0em">Enables (disables) sharing of local printers with other computers.
+<dt><b>--fR[fBno-fR]fBuser-cancel-any</b>
+<dd style="margin-left: 5.0em">Allows (prevents) users to cancel jobs owned by others.
 </dl>
 <h2 class="title"><a name="EXAMPLES">Examples</a></h2>
 Display the current settings:
-<pre>
+<pre class="man">
+
     cupsctl
+
 </pre>
-<p>Enable debug logging:
-<pre>
+Enable debug logging:
+<pre class="man">
+
     cupsctl --debug-logging
+
 </pre>
-<p>Get the current debug logging state:
-<pre>
+Get the current debug logging state:
+<pre class="man">
+
     cupsctl | grep '^_debug_logging' | awk -F= '{print $2}'
+
 </pre>
-<p>Disable printer sharing:
-<pre>
+Disable printer sharing:
+<pre class="man">
+
     cupsctl --no-share-printers
 </pre>
 <h2 class="title"><a name="KNOWN_ISSUES">Known Issues</a></h2>
-You cannot set the Listen or Port directives using <i>cupsctl</i>.
+You cannot set the Listen or Port directives using <b>cupsctl</b>.
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>,
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
 <br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
diff --git a/doc/help/man-cupsd-helper.html b/doc/help/man-cupsd-helper.html
new file mode 100644 (file)
index 0000000..ecdb2ac
--- /dev/null
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML>
+<html>
+<!-- SECTION: Man Pages -->
+<head>
+       <link rel="stylesheet" type="text/css" href="../cups-printable.css">
+       <title>cupsd-helper(8)</title>
+</head>
+<body>
+<h1 class="title">cupsd-helper(8)</h1>
+<h2 class="title"><a name="NAME">Name</a></h2>
+cupsd-helper - cupsd helper programs
+<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
+<b>cups-deviced</b>
+<i>request-id</i>
+<i>limit</i>
+<i>user-id</i>
+<i>options</i>
+<br>
+<b>cups-driverd</b>
+<b>cat</b>
+<i>ppd-name</i>
+<br>
+<b>cups-driverd</b>
+<b>list</b>
+<i>request_id</i>
+<i>limit</i>
+<i>options</i>
+<br>
+<b>cups-exec</b>
+<i>sandbox-profile</i>
+[
+<i>-g</i>
+<i>group-id</i>
+] [
+<i>-n</i>
+<i>nice-value</i>
+] [
+<i>-u</i>
+<i>user-id</i>
+]
+<i>/path/to/program</i>
+<i>argv0</i>
+<i>...</i>
+<i>argvN</i>
+<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
+The <b>cupsd-helper</b> programs perform long-running operations on behalf of the scheduler,
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8).</a>
+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.
+<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">
+
+    <i>/Library/Printers</i>
+    <i>/opt/share/ppd</i>
+    <i>/System/Library/Printers</i>
+    <i>/usr/local/share/ppd</i>
+    <i>/usr/share/cups/drv</i>
+    <i>/usr/share/cups/model</i>
+    <i>/usr/share/ppd</i>
+</pre>
+<p>PPD files can be compressed using the
+<b>gzip</b>(1)
+program or placed in compressed
+<b>tar</b>(1)
+archives to further reduce their size.
+<p>Driver information files must conform to the format defined in
+<a href="man-ppdcfile.html?TOPIC=Man+Pages"><b>ppdcfile</b>(5).</a>
+<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
+<a href="man-backend.html?TOPIC=Man+Pages"><b>backend</b>(7),</a>
+<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-filter.html?TOPIC=Man+Pages"><b>filter</b>(7),</a>
+<a href="man-ppdcfile.html?TOPIC=Man+Pages"><b>ppdcfile</b>(5),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
+<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
+Copyright &copy; 2007-2014 by Apple Inc.
+
+</body>
+</html>
diff --git a/doc/help/man-cupsd-logs.html b/doc/help/man-cupsd-logs.html
new file mode 100644 (file)
index 0000000..aa1a77b
--- /dev/null
@@ -0,0 +1,194 @@
+<!DOCTYPE HTML>
+<html>
+<!-- SECTION: Man Pages -->
+<head>
+       <link rel="stylesheet" type="text/css" href="../cups-printable.css">
+       <title>cupsd-logs(5)</title>
+</head>
+<body>
+<h1 class="title">cupsd-logs(5)</h1>
+<h2 class="title"><a name="NAME">Name</a></h2>
+cupsd-logs - cupsd log files (access_log, error_log, and page_log)
+<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8)</a>
+normally maintains three log files: <i>access_log</i> to track requests that are submitted to the scheduler, <i>error_log</i> to track progress and errors, and <i>page_log</i> to track pages that are printed.
+Configuration directives in
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5)</a>
+and
+<a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5)</a>
+control what information is logged and where it is stored.
+<h3><a name="ACCESS_LOG_FILE_FORMAT">Access Log File Format</a></h3>
+The <i>access_log</i> file lists each HTTP resource that is accessed by a web browser or client.
+Each line is in an extended version of the so-called "Common Log Format" used by many web servers and web reporting tools:
+<pre class="man">
+
+    <i>host group user date-time </i>"<i>method resource version</i>" <i>status bytes
+      ipp-operation ipp-status</i>
+
+</pre>
+For example:
+<pre class="man">
+
+    10.0.1.2 - - [01/Dec/2005:21:50:28 +0000] "POST / HTTP/1.1" 200 317
+      CUPS-Get-Printers successful-ok-ignored-or-substituted-attributes
+    localhost - - [01/Dec/2005:21:50:32 +0000] "GET /admin HTTP/1.1"
+      200 0 - -
+    localhost - - [01/Dec/2005:21:50:32 +0000] "POST / HTTP/1.1"
+      200 157 CUPS-Get-Printers
+      successful-ok-ignored-or-substituted-attributes
+    localhost - - [01/Dec/2005:21:50:32 +0000] "POST / HTTP/1.1"
+      200 1411 CUPS-Get-Devices -
+    localhost - - [01/Dec/2005:21:50:32 +0000] "GET /admin HTTP/1.1"
+      200 6667 - -
+
+</pre>
+The <i>host</i> field will normally only be an IP address unless you have enabled the HostNameLookups directive in the <i>cupsd.conf</i> file or if the IP address corresponds to your local machine.
+<p>The <i>group</i> field always contains "-".
+<p>The <i>user</i> field is the authenticated username of the requesting user.
+If no username and password is supplied for the request then this field contains "-".
+<p>The <i>date-time</i> field is the date and time of the request in local time and is in the format "[DD/MON/YYYY:HH:MM:SS +ZZZZ]".
+<p>The <i>method</i> field is the HTTP method used: "GET", "HEAD", "OPTIONS", "POST", or "PUT".
+"GET" requests are used to get files from the server, both for the web interface and to get configuration and log files.
+"HEAD" requests are used to get information about a resource prior to a "GET".
+"OPTIONS" requests are used to upgrade connections to TLS encryption.
+"POST" requests are used for web interface forms and IPP requests.
+"PUT" requests are used to upload configuration files.
+<p>The <i>resource</i> field is the filename of the requested resource.
+<p>The <i>version</i> field is the HTTP specification version used by the client.
+For CUPS clients this will always be "HTTP/1.1".
+<p>The <i>status</i> field contains the HTTP result status of the request, as follows:
+<div style="margin-left: 5.0em;">
+<dl class="man">
+<dt>200
+<dd style="margin-left: 5.0em">Successful operation.
+<dt>201
+<dd style="margin-left: 5.0em">File created/modified successfully.
+<dt>304
+<dd style="margin-left: 5.0em">The requested file has not changed.
+<dt>400
+<dd style="margin-left: 5.0em">Bad HTTP request; typically this means that you have a malicious program trying to access your server.
+<dt>401
+<dd style="margin-left: 5.0em">Unauthorized, authentication (username + password) is required.
+<dt>403
+<dd style="margin-left: 5.0em">Access is forbidden; typically this means that a client tried to access a file or resource they do not have permission to access.
+<dt>404
+<dd style="margin-left: 5.0em">The file or resource does not exist.
+<dt>405
+<dd style="margin-left: 5.0em">URL access method is not allowed; typically this means you have a web browser using your server as a proxy.
+<dt>413
+<dd style="margin-left: 5.0em">Request too large; typically this means that a client tried to print a file larger than the MaxRequestSize allows.
+<dt>426
+<dd style="margin-left: 5.0em">Upgrading to TLS-encrypted connection.
+<dt>500
+<dd style="margin-left: 5.0em">Server error; typically this happens when the server is unable to open/create a file - consult the error_log file for details.
+<dt>501
+<dd style="margin-left: 5.0em">The client requested encryption but encryption support is not enabled/compiled in.
+<dt>505
+<dd style="margin-left: 5.0em">HTTP version number not supported; typically this means that you have a malicious program trying to access your server.
+</div>
+</dl>
+<p>The <i>bytes</i> field contains the number of bytes in the request.
+For POST requests the bytes field contains the number of bytes of non-IPP data that is received from the client.
+<p>The <i>ipp-operation</i> field contains either "-" for non-IPP requests or the IPP operation name for POST requests containing an IPP request.
+<p>The <i>ipp-status</i> field contains either "-" for non-IPP requests or the IPP status code name for POST requests containing an IPP response.
+<h3><a name="ERROR_LOG_FILE_FORMAT">Error Log File Format</a></h3>
+The <i>error_log</i> file lists messages from the scheduler - errors, warnings, etc. The LogLevel directive in the
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5)</a>
+file controls which messages are logged:
+<pre class="man">
+
+    level date-time message
+
+</pre>
+For example:
+<pre class="man">
+
+    I [20/May/1999:19:18:28 +0000] [Job 1] Queued on 'DeskJet' by 'mike'.
+    D [20/May/1999:19:18:28 +0000] [Job 1] argv[0]="DeskJet"
+    D [20/May/1999:19:18:28 +0000] [Job 1] argv[1]="1"
+    D [20/May/1999:19:18:28 +0000] [Job 1] argv[2]="mike"
+    D [20/May/1999:19:18:28 +0000] [Job 1] argv[3]="myjob"
+    D [20/May/1999:19:18:28 +0000] [Job 1] argv[4]="1"
+    D [20/May/1999:19:18:28 +0000] [Job 1] argv[5]="media=
+      na_letter_8.5x11in sides=one-sided"
+    D [20/May/1999:19:18:28 +0000] [Job 1] argv[6]="/var/spool/cups/
+      d000001-001"
+    I [20/May/1999:19:21:02 +0000] [Job 2] Queued on 'DeskJet' by 'mike'.
+    I [20/May/1999:19:22:24 +0000] [Job 2] Canceled by 'mike'.
+
+</pre>
+The <i>level</i> field contains the type of message:
+<dl class="man">
+<dt>A
+<dd style="margin-left: 5.0em">Alert message (LogLevel alert)
+<dt>C
+<dd style="margin-left: 5.0em">Critical error message (LogLevel crit)
+<dt>D
+<dd style="margin-left: 5.0em">Debugging message (LogLevel debug)
+<dt>d
+<dd style="margin-left: 5.0em">Detailed debugging message (LogLevel debug2)
+<dt>E
+<dd style="margin-left: 5.0em">Normal error message (LogLevel error)
+<dt>I
+<dd style="margin-left: 5.0em">Informational message (LogLevel info)
+<dt>N
+<dd style="margin-left: 5.0em">Notice message (LogLevel notice)
+<dt>W
+<dd style="margin-left: 5.0em">Warning message (LogLevel warn)
+<dt>X
+<dd style="margin-left: 5.0em">Emergency error message (LogLevel emerg)
+</dl>
+<p>The <i>date-time</i> field contains the date and time of when the page started printing. The format of this field is identical to the data-time field in the <i>access_log</i> file.
+<p>The <i>message</i> field contains a free-form textual message.
+Messages from job filters are prefixed with "[Job NNN]" where "NNN" is the job ID.
+<h3><a name="PAGE_LOG_FILE_FORMAT">Page Log File Format</a></h3>
+The <i>page_log</i> file lists each page or group of pages that are sent to a printer.
+By default, each line contains the following information:
+<pre class="man">
+
+    <i>printer user job-id date-time page-number num-copies job-billing
+      job-originating-host-name job-name media sides</i>
+
+    <i>printer user job-id date-time </i><b>total </b><i>num-impressions job-billing
+      job-originating-host-name job-name media sides</i>
+
+</pre>
+For example the entries for a two page job called "myjob" might look like:
+<pre class="man">
+
+    DeskJet root 1 [20/May/1999:19:21:05 +0000] 1 1 acme-123
+      localhost myjob na_letter_8.5x11in one-sided
+    DeskJet root 1 [20/May/1999:19:21:05 +0000] 2 1 acme-123
+      localhost myjob na_letter_8.5x11in one-sided
+
+    DeskJet root 1 [20/May/1999:19:21:06 +0000] total 2 acme-123
+      localhost myjob na_letter_8.5x11in one-sided
+
+</pre>
+The PageLogFormat directive in the
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5)</a>
+file can be used to change this information.
+<p>The <i>printer</i> field contains the name of the printer that printed the page.
+If you send a job to a printer class, this field will contain the name of the printer that was assigned the job.
+<p>The <i>user</i> field contains the name of the user (the IPP requesting-user-name attribute) that submitted this file for printing.
+<p>The <i>job-id</i> field contains the job number of the page being printed.
+<p>The <i>date-time</i> field contains the date and time of when the page started printing.
+The format of this field is identical to the data-time field in the <i>access_log</i> file.
+<p>The <i>page-number</i> and <i>num-copies</i> fields contain the page number and number of copies being printed of that page.
+For printers that cannot produce copies on their own, the num-copies field will always be 1.
+<p>Lines containing the keyword "total" have a <i>num-impressions</i> field instead which provides the total number of impressions (sides) that have been printed on for the job.
+<p>The <i>job-billing</i> field contains a copy of the job-billing or job-account-id attributes provided with the IPP Create-Job or Print-Job requests or "-" if neither was provided.
+<p>The <i>job-originating-host-name</i> field contains the hostname or IP address of the client that printed the job.
+<p>The <i>job-name</i> field contains a copy of the job-name attribute provided with the IPP Create-Job or Print-Job requests or "-" if none was provided.
+<p>The <i>media</i> field contains a copy of the media or media-col/media-size attribute provided with the IPP Create-Job or Print-Job requests or "-" if none was provided.
+<p>The <i>sides</i> field contains a copy of the sides attribute provided with the IPP Create-Job or Print-Job requests or "-" if none was provided.
+<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
+<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
+Copyright &copy; 2007-2014 by Apple Inc.
+
+</body>
+</html>
index 542d9c1593334508ae4be44de05d989921d79ed7..c627824a712097b3db2274b0c23091398e0c9707 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 cupsd.conf - server configuration file for cups
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <i>cupsd.conf</i> file configures the CUPS scheduler, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>.  It
-is normally located in the <i>/etc/cups</i> directory. <b>Note:</b>
-File, directory, and user configuration directives that used to be allowed in
-the <i>cupsd.conf</i> file are now stored in the <a href='man-cups-files.conf.html?TOPIC=Man+Pages'>cups-files.conf(5)</a> instead
-in order to prevent certain types of privilege escalation attacks.
-<p>Each line in the file can be a configuration directive, a blank line,
-or a comment. Comment lines start with the # character. The
-configuration directives are intentionally similar to those used by the
-popular Apache web server software and are described below.
-<h2 class="title"><a name="DIRECTIVES">Directives</a></h2>
-The following directives are understood by <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>. Consult the
-on-line help for detailed descriptions:
-<dl>
-<dt>AccessLogLevel config
-</dt>
-<dd></dd>
-<dt>AccessLogLevel actions
-</dt>
-<dd></dd>
-<dt>AccessLogLevel all
-</dt>
-<dd></dd>
-<dd>Specifies the logging level for the AccessLog file.
-</dd>
-<dt>Allow all
-</dt>
-<dd></dd>
-<dt>Allow none
-</dt>
-<dd></dd>
-<dt>Allow host.domain.com
-</dt>
-<dd></dd>
-<dt>Allow *.domain.com
-</dt>
-<dd></dd>
-<dt>Allow ip-address
-</dt>
-<dd></dd>
-<dt>Allow ip-address/netmask
-</dt>
-<dd></dd>
-<dt>Allow ip-address/mm
-</dt>
-<dd></dd>
-<dt>Allow @IF(name)
-</dt>
-<dd></dd>
-<dt>Allow @LOCAL
-</dt>
-<dd></dd>
-<dd>Allows access from the named hosts or addresses.
-</dd>
-<dt>AuthType None
-</dt>
-<dd></dd>
-<dt>AuthType Basic
-</dt>
-<dd></dd>
-<dt>AuthType BasicDigest
-</dt>
-<dd></dd>
-<dt>AuthType Digest
-</dt>
-<dd></dd>
-<dt>AuthType Negotiate
-</dt>
-<dd></dd>
-<dd>Specifies the authentication type (None, Basic, BasicDigest, Digest, Negotiate)
-</dd>
-<dt>AutoPurgeJobs Yes
-</dt>
-<dd></dd>
-<dt>AutoPurgeJobs No
-</dt>
-<dd></dd>
-<dd>Specifies whether to purge job history data automatically when
-it is no longer required for quotas.
-</dd>
-<dt>BrowseLocalProtocols [All] [DNSSD]
-</dt>
-<dd></dd>
-<dd>Specifies the protocols to use for local printer sharing.
-</dd>
-<dt>BrowseWebIF Yes
-</dt>
-<dd></dd>
-<dt>BrowseWebIF No
-</dt>
-<dd></dd>
-<dd>Specifies whether the CUPS web interface is advertised via DNS-SD.
-</dd>
-<dt>Browsing Yes
-</dt>
-<dd></dd>
-<dt>Browsing No
-</dt>
-<dd></dd>
-<dd>Specifies whether or not shared printers should be advertised.
-</dd>
-<dt>Classification banner
-</dt>
-<dd></dd>
-<dd>Specifies the security classification of the server.
-</dd>
-<dt>ClassifyOverride Yes
-</dt>
-<dd></dd>
-<dt>ClassifyOverride No
-</dt>
-<dd></dd>
-<dd>Specifies whether to allow users to override the classification
-of individual print jobs.
-</dd>
-<dt>DefaultAuthType Basic
-</dt>
-<dd></dd>
-<dt>DefaultAuthType BasicDigest
-</dt>
-<dd></dd>
-<dt>DefaultAuthType Digest
-</dt>
-<dd></dd>
-<dt>DefaultAuthType Negotiate
-</dt>
-<dd></dd>
-<dd>Specifies the default type of authentication to use.
-</dd>
-<dt>DefaultEncryption Never
-</dt>
-<dd></dd>
-<dt>DefaultEncryption IfRequested
-</dt>
-<dd></dd>
-<dt>DefaultEncryption Required
-</dt>
-<dd></dd>
-<dd>Specifies the type of encryption to use for authenticated requests.
-</dd>
-<dt>DefaultLanguage locale
-</dt>
-<dd></dd>
-<dd>Specifies the default language to use for text and web content.
-</dd>
-<dt>DefaultPaperSize Auto
-</dt>
-<dd></dd>
-<dt>DefaultPaperSize None
-</dt>
-<dd></dd>
-<dt>DefaultPaperSize sizename
-</dt>
-<dd></dd>
-<dd>Specifies the default paper size for new print queues. "Auto" uses a locale-
-specific default, while "None" specifies there is no default paper size.
-</dd>
-<dt>DefaultPolicy policy-name
-</dt>
-<dd></dd>
-<dd>Specifies the default access policy to use.
-</dd>
-<dt>DefaultShared Yes
-</dt>
-<dd></dd>
-<dt>DefaultShared No
-</dt>
-<dd></dd>
-<dd>Specifies whether local printers are shared by default.
-</dd>
-<dt>Deny all
-</dt>
-<dd></dd>
-<dt>Deny none
-</dt>
-<dd></dd>
-<dt>Deny host.domain.com
-</dt>
-<dd></dd>
-<dt>Deny *.domain.com
-</dt>
-<dd></dd>
-<dt>Deny ip-address
-</dt>
-<dd></dd>
-<dt>Deny ip-address/netmask
-</dt>
-<dd></dd>
-<dt>Deny ip-address/mm
-</dt>
-<dd></dd>
-<dt>Deny @IF(name)
-</dt>
-<dd></dd>
-<dt>Deny @LOCAL
-</dt>
-<dd></dd>
-<dd>Denies access to the named host or address.
-</dd>
-<dt>DirtyCleanInterval seconds
-</dt>
-<dd></dd>
-<dd>Specifies the delay for updating of configuration and state files. A value of 0
-causes the update to happen as soon as possible, typically within a few
-milliseconds.
-</dd>
-<dt>Encryption IfRequested
-</dt>
-<dd></dd>
-<dt>Encryption Never
-</dt>
-<dd></dd>
-<dt>Encryption Required
-</dt>
-<dd></dd>
-<dd>Specifies the level of encryption that is required for a particular
-location.
-</dd>
-<dt>ErrorPolicy abort-job
-</dt>
-<dd>Specifies that a failed print job should be aborted (discarded) unless otherwise specified for the printer.
-</dd>
-<dt>ErrorPolicy retry-job
-</dt>
-<dd>Specifies that a failed print job should be retried at a later time unless otherwise specified for the printer.
-</dd>
-<dt>ErrorPolicy retry-this-job
-</dt>
-<dd>Specifies that a failed print job should be retried immediately unless otherwise specified for the printer.
-</dd>
-<dt>ErrorPolicy stop-printer
-</dt>
-<dd>Specifies that a failed print job should stop the printer unless otherwise specified for the printer. The 'stop-printer' error policy is the default.
-</dd>
-<dt>FilterLimit limit
-</dt>
-<dd></dd>
-<dd>Specifies the maximum cost of filters that are run concurrently.
-</dd>
-<dt>FilterNice nice-value
-</dt>
-<dd></dd>
-<dd>Specifies the scheduling priority ("nice" value) of filters that
-are run to print a job.
-</dd>
-<dt>GSSServiceName name
-</dt>
-<dd></dd>
-<dd>Specifies the service name when using Kerberos authentication. The default
-service name is "http".
-</dd>
-<dt>HostNameLookups On
-</dt>
-<dd></dd>
-<dt>HostNameLookups Off
-</dt>
-<dd></dd>
-<dt>HostNameLookups Double
-</dt>
-<dd></dd>
-<dd>Specifies whether or not to do reverse lookups on client addresses.
-</dd>
-<dt>Include filename
-</dt>
-<dd></dd>
-<dd>Includes the named file.
-</dd>
-<dt>JobKillDelay seconds
-</dt>
-<dd></dd>
-<dd>Specifies the number of seconds to wait before killing the filters and backend
-associated with a canceled or held job.
-</dd>
-<dt>JobPrivateAccess all
-</dt>
-<dd></dd>
-<dt>JobPrivateAccess default
-</dt>
-<dd></dd>
-<dt>JobPrivateAccess {user|@group|@ACL|@OWNER|@SYSTEM}+
-</dt>
-<dd></dd>
-<dd>Specifies an access list for a job's private values. The "default" access list
-is "@OWNER @SYSTEM". "@ACL" maps to the printer's requesting-user-name-allowed
-or requesting-user-name-denied values.
-</dd>
-<dt>JobPrivateValues all
-</dt>
-<dd></dd>
-<dt>JobPrivateValues default
-</dt>
-<dd></dd>
-<dt>JobPrivateValues none
-</dt>
-<dd></dd>
-<dt>JobPrivateValues attribute-name-1 [ ... attribute-name-N ]
-</dt>
-<dd>Specifies the list of job values to make private. The "default" values are
-"job-name", "job-originating-host-name", and "job-originating-user-name".
-</dd>
-<dt>JobRetryInterval seconds
-</dt>
-<dd></dd>
-<dd>Specifies the interval between retries of jobs in seconds.
-</dd>
-<dt>JobRetryLimit count
-</dt>
-<dd></dd>
-<dd>Specifies the number of retries that are done for jobs.
-</dd>
-<dt>KeepAlive Yes
-</dt>
-<dd></dd>
-<dt>KeepAlive No
-</dt>
-<dd></dd>
-<dd>Specifies whether to support HTTP keep-alive connections.
-</dd>
-<dt>KeepAliveTimeout seconds
-</dt>
-<dd></dd>
-<dd>Specifies the amount of time that connections are kept alive.
-</dd>
-<dt>&lt;Limit operations> ... &lt;/Limit>
-</dt>
-<dd></dd>
-<dd>Specifies the IPP operations that are being limited inside a policy.
-</dd>
-<dt>&lt;Limit methods> ... &lt;/Limit>
-</dt>
-<dd></dd>
-<dt>&lt;LimitExcept methods> ... &lt;/LimitExcept>
-</dt>
-<dd></dd>
-<dd>Specifies the HTTP methods that are being limited inside a location.
-</dd>
-<dt>LimitRequestBody
-</dt>
-<dd></dd>
-<dd>Specifies the maximum size of any print job request.
-</dd>
-<dt>Listen ip-address:port
-</dt>
-<dd></dd>
-<dt>Listen *:port
-</dt>
-<dd></dd>
-<dt>Listen /path/to/domain/socket
-</dt>
-<dd></dd>
-<dd>Listens to the specified address and port or domain socket path.
-</dd>
-<dt>&lt;Location /path> ... &lt;/Location>
-</dt>
-<dd></dd>
-<dd>Specifies access control for the named location.
-</dd>
-<dt>LogDebugHistory #-messages
-</dt>
-<dd></dd>
-<dd>Specifies the number of debugging messages that are logged when an error
-occurs in a print job.
-</dd>
-<dt>LogLevel alert
-</dt>
-<dd></dd>
-<dt>LogLevel crit
-</dt>
-<dd></dd>
-<dt>LogLevel debug2
-</dt>
-<dd></dd>
-<dt>LogLevel debug
-</dt>
-<dd></dd>
-<dt>LogLevel emerg
-</dt>
-<dd></dd>
-<dt>LogLevel error
-</dt>
-<dd></dd>
-<dt>LogLevel info
-</dt>
-<dd></dd>
-<dt>LogLevel none
-</dt>
-<dd></dd>
-<dt>LogLevel notice
-</dt>
-<dd></dd>
-<dt>LogLevel warn
-</dt>
-<dd></dd>
-<dd>Specifies the logging level for the ErrorLog file.
-</dd>
-<dt>LogTimeFormat standard
-</dt>
-<dd></dd>
-<dt>LogTimeFormat usecs
-</dt>
-<dd></dd>
-<dd>Specifies the format of the date and time in the log files.
-</dd>
-<dt>MaxClients number
-</dt>
-<dd></dd>
-<dd>Specifies the maximum number of simultaneous clients to support.
-</dd>
-<dt>MaxClientsPerHost number
-</dt>
-<dd></dd>
-<dd>Specifies the maximum number of simultaneous clients to support from a
+The
+<i>cupsd.conf</i>
+file configures the CUPS scheduler,
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8).</a>
+It is normally located in the
+<i>/etc/cups</i>
+directory.
+<b>Note:</b> File, directory, and user configuration directives that used to be allowed in the <b>cupsd.conf</b> file are now stored in the
+<a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5)</a>
+file instead in order to prevent certain types of privilege escalation attacks.
+<p>Each line in the file can be a configuration directive, a blank line, or a comment.
+Configuration directives typically consist of a name and zero or more values separated by whitespace.
+The configuration directive name and values are case-insensitive.
+Comment lines start with the # character.
+<h3><a name="TOP_LEVEL_DIRECTIVES">Top-level Directives</a></h3>
+The following top-level directives are understood by
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8):</a>
+<dl class="man">
+<dt><b>AccessLogLevel config</b>
+<dd style="margin-left: 5.0em"><dt><b>AccessLogLevel actions</b>
+<dd style="margin-left: 5.0em"><dt><b>AccessLogLevel all</b>
+<dd style="margin-left: 5.0em">Specifies the logging level for the AccessLog file.
+The "config" level logs when printers and classes are added, deleted, or modified and when configuration files are accessed or updated.
+The "actions" level logs when print jobs are submitted, held, released, modified, or canceled, and any of the conditions for "config".
+The "all" level logs all requests.
+The default access log level is "actions".
+<dt><b>AutoPurgeJobs Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>AutoPurgeJobs No</b>
+<dd style="margin-left: 5.0em"><br>
+Specifies whether to purge job history data automatically when it is no longer required for quotas.
+The default is "No".
+<dt><b>BrowseLocalProtocols all</b>
+<dd style="margin-left: 5.0em"><dt><b>BrowseLocalProtocols dnssd</b>
+<dd style="margin-left: 5.0em"><dt><b>BrowseLocalProtocols none</b>
+<dd style="margin-left: 5.0em">Specifies which protocols to use for local printer sharing.
+The default is "dnssd" on systems that support Bonjour and "none" otherwise.
+<dt><b>BrowseWebIF Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>BrowseWebIF No</b>
+<dd style="margin-left: 5.0em"><br>
+Specifies whether the CUPS web interface is advertised.
+The default is "No".
+<dt><b>Browsing Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>Browsing No</b>
+<dd style="margin-left: 5.0em"><br>
+Specifies whether shared printers are advertised.
+The default is "No".
+<dt><b>Classification </b><i>banner</i>
+<dd style="margin-left: 5.0em"><br>
+Specifies the security classification of the server.
+Any valid banner name can be used, including "classified", "confidential", "secret", "topsecret", and "unclassified", or the banner can be omitted to disable secure printing functions.
+The default is no classification banner.
+<dt><b>ClassifyOverride Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>ClassifyOverride No</b>
+<dd style="margin-left: 5.0em"><br>
+Specifies whether users may override the classification (cover page) of individual print jobs using the "job-sheets" option.
+The default is "No".
+<dt><b>DefaultAuthType Basic</b>
+<dd style="margin-left: 5.0em"><dt><b>DefaultAuthType Negotiate</b>
+<dd style="margin-left: 5.0em"><br>
+Specifies the default type of authentication to use.
+The default is "Basic".
+<dt><b>DefaultEncryption Never</b>
+<dd style="margin-left: 5.0em"><dt><b>DefaultEncryption IfRequested</b>
+<dd style="margin-left: 5.0em"><dt><b>DefaultEncryption Required</b>
+<dd style="margin-left: 5.0em">Specifies whether encryption will be used for authenticated requests.
+The default is "Required".
+<dt><b>DefaultLanguage </b><i>locale</i>
+<dd style="margin-left: 5.0em">Specifies the default language to use for text and web content.
+The default is "en".
+<dt><b>DefaultPaperSize Auto</b>
+<dd style="margin-left: 5.0em"><dt><b>DefaultPaperSize None</b>
+<dd style="margin-left: 5.0em"><dt><b>DefaultPaperSize </b><i>sizename</i>
+<dd style="margin-left: 5.0em">Specifies the default paper size for new print queues. "Auto" uses a locale-specific default, while "None" specifies there is no default paper size.
+Specific size names are typically "Letter" or "A4".
+The default is "Auto".
+<dt><b>DefaultPolicy </b><i>policy-name</i>
+<dd style="margin-left: 5.0em">Specifies the default access policy to use.
+The default access policy is "default".
+<dt><b>DefaultShared Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>DefaultShared No</b>
+<dd style="margin-left: 5.0em">Specifies whether local printers are shared by default.
+The default is "Yes".
+<dt><b>DirtyCleanInterval </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies the delay for updating of configuration and state files.
+A value of 0 causes the update to happen as soon as possible, typically within a few milliseconds.
+The default value is "30".
+<dt><b>ErrorPolicy abort-job</b>
+<dd style="margin-left: 5.0em">Specifies that a failed print job should be aborted (discarded) unless otherwise specified for the printer.
+<dt><b>ErrorPolicy retry-job</b>
+<dd style="margin-left: 5.0em">Specifies that a failed print job should be retried at a later time unless otherwise specified for the printer.
+<dt><b>ErrorPolicy retry-this-job</b>
+<dd style="margin-left: 5.0em">Specifies that a failed print job should be retried immediately unless otherwise specified for the printer.
+<dt><b>ErrorPolicy stop-printer</b>
+<dd style="margin-left: 5.0em">Specifies that a failed print job should stop the printer unless otherwise specified for the printer. The 'stop-printer' error policy is the default.
+<dt><b>FilterLimit </b><i>limit</i>
+<dd style="margin-left: 5.0em">Specifies the maximum cost of filters that are run concurrently, which can be used to minimize disk, memory, and CPU resource problems.
+A limit of 0 disables filter limiting.
+An average print to a non-PostScript printer needs a filter limit of about 200.
+A PostScript printer needs about half that (100).
+Setting the limit below these thresholds will effectively limit the scheduler to printing a single job at any time.
+The default limit is "0".
+<dt><b>FilterNice </b><i>nice-value</i>
+<dd style="margin-left: 5.0em">Specifies the scheduling priority (
+<b>nice</b>(8)
+value) of filters that are run to print a job.
+The nice value ranges from 0, the highest priority, to 19, the lowest priority.
+The default is 0.
+<dt><b>GSSServiceName </b><i>name</i>
+<dd style="margin-left: 5.0em">Specifies the service name when using Kerberos authentication.
+The default service name is "http."
+<dt><b>HostNameLookups On</b>
+<dd style="margin-left: 5.0em"><dt><b>HostNameLookups Off</b>
+<dd style="margin-left: 5.0em"><dt><b>HostNameLookups Double</b>
+<dd style="margin-left: 5.0em">Specifies whether to do reverse lookups on connecting clients.
+The "Double" setting causes
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8)</a>
+to verify that the hostname resolved from the address matches one of the addresses returned for that hostname.
+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><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".
+<dt><b>JobRetryInterval </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies the interval between retries of jobs in seconds.
+This is typically used for fax queues but can also be used with normal print queues whose error policy is "retry-job" or "retry-current-job".
+The default is "30".
+<dt><b>JobRetryLimit </b><i>count</i>
+<dd style="margin-left: 5.0em">Specifies the number of retries that are done for jobs.
+This is typically used for fax queues but can also be used with normal print queues whose error policy is "retry-job" or "retry-current-job".
+The default is "5".
+<dt><b>KeepAlive Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>KeepAlive No</b>
+<dd style="margin-left: 5.0em">Specifies whether to support HTTP keep-alive connections.
+The default is "Yes".
+<dt><b>KeepAliveTimeout </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies how long an idle client connection remains open.
+The default is "30".
+<dt><b>&lt;Limit </b><i>operation </i>...<b>> </b>... <b>&lt;/Limit></b>
+<dd style="margin-left: 5.0em">Specifies the IPP operations that are being limited inside a Policy section. IPP operation names are listed below in the section "IPP OPERATIONS".
+<dt><b>&lt;Limit </b><i>method </i>...<b>> </b>... <b>&lt;/Limit></b>
+<dd style="margin-left: 5.0em"><dt><b>&lt;LimitExcept </b><i>method </i>...<b>> </b>... <b>&lt;/LimitExcept></b>
+<dd style="margin-left: 5.0em">Specifies the HTTP methods that are being limited inside a Location section. HTTP method names are listed below in the section "HTTP METHODS".
+<dt><b>LimitRequestBody </b><i>size</i>
+<dd style="margin-left: 5.0em">Specifies the maximum size of print files, IPP requests, and HTML form data.
+The default is "0" which disables the limit check.
+<dt><b>Listen </b><i>ipv4-address</i><b>:</b><i>port</i>
+<dd style="margin-left: 5.0em"><dt><b>Listen [</b><i>ipv6-address</i><b>]:</b><i>port</i>
+<dd style="margin-left: 5.0em"><dt><b>Listen *:</b><i>port</i>
+<dd style="margin-left: 5.0em"><dt><b>Listen </b><i>/path/to/domain/socket</i>
+<dd style="margin-left: 5.0em">Listens to the specified address and port or domain socket path for connections.
+Multiple Listen directives can be provided to listen on multiple addresses.
+The Listen directive is similar to the Port directive but allows you to restrict access to specific interfaces or networks.
+<dt><b>ListenBackLog </b><i>number</i>
+<dd style="margin-left: 5.0em">Specifies the number of pending connections that will be allowed.
+This normally only affects very busy servers that have reached the MaxClients limit, but can also be triggered by large numbers of simultaneous connections.
+When the limit is reached, the operating system will refuse additional connections until the scheduler can accept the pending ones.
+The default is the OS-defined default limit, typically either "5" for older operating systems or "128" for newer operating systems.
+<dt><b>&lt;Location </b><i>/path</i><b>> </b>... <b>&lt;/Location></b>
+<dd style="margin-left: 5.0em">Specifies access control for the named location.
+Paths are documented below in the section "LOCATION PATHS".
+<dt><b>LogDebugHistory </b><i>number</i>
+<dd style="margin-left: 5.0em">Specifies the number of debugging messages that are retained for logging if an error occurs in a print job. Debug messages are logged regardless of the LogLevel setting.
+<dt><b>LogLevel </b>none
+<dd style="margin-left: 5.0em"><dt><b>LogLevel </b>emerg
+<dd style="margin-left: 5.0em"><dt><b>LogLevel </b>alert
+<dd style="margin-left: 5.0em"><dt><b>LogLevel </b>crit
+<dd style="margin-left: 5.0em"><dt><b>LogLevel </b>error
+<dd style="margin-left: 5.0em"><dt><b>LogLevel </b>warn
+<dd style="margin-left: 5.0em"><dt><b>LogLevel </b>notice
+<dd style="margin-left: 5.0em"><dt><b>LogLevel </b>info
+<dd style="margin-left: 5.0em"><dt><b>LogLevel </b>debug
+<dd style="margin-left: 5.0em"><dt><b>LogLevel </b>debug2
+<dd style="margin-left: 5.0em">Specifies the level of logging for the ErrorLog file.
+The value "none" stops all logging while "debug2" logs everything.
+The default is "warn".
+<dt><b>LogTimeFormat </b>standard
+<dd style="margin-left: 5.0em"><dt><b>LogTimeFormat </b>usecs
+<dd style="margin-left: 5.0em">Specifies the format of the date and time in the log files.
+The value "standard" is the default and logs whole seconds while "usecs" logs microseconds.
+<dt><b>MaxClients </b><i>number</i>
+<dd style="margin-left: 5.0em">Specifies the maximum number of simultaneous clients that are allowed by the scheduler.
+The default is "100".
+<dt><b>MaxClientsPerHost </b><i>number</i>
+<dd style="margin-left: 5.0em">Specifies the maximum number of simultaneous clients that are allowed from a
 single address.
-</dd>
-<dt>MaxCopies number
-</dt>
-<dd></dd>
-<dd>Specifies the maximum number of copies that a user can print of each job.
-</dd>
-<dt>MaxHoldTime seconds
-</dt>
-<dd></dd>
-<dd>Specifies the maximum time a job may remain in the "indefinite" hold state
-before it is canceled. Set to 0 to disable cancellation of held jobs.
-</dd>
-<dt>MaxJobs number
-</dt>
-<dd></dd>
-<dd>Specifies the maximum number of simultaneous jobs to support.
-</dd>
-<dt>MaxJobsPerPrinter number
-</dt>
-<dd></dd>
-<dd>Specifies the maximum number of simultaneous jobs per printer to support.
-</dd>
-<dt>MaxJobsPerUser number
-</dt>
-<dd></dd>
-<dd>Specifies the maximum number of simultaneous jobs per user to support.
-</dd>
-<dt>MaxJobTime seconds
-</dt>
-<dd></dd>
-<dd>Specifies the maximum time a job may take to print before it is canceled. The
-default is 10800 seconds (3 hours). Set to 0 to disable cancellation of "stuck"
-jobs.
-</dd>
-<dt>MaxLogSize number-bytes
-</dt>
-<dd></dd>
-<dd>Specifies the maximum size of the log files before they are
-rotated (0 to disable rotation)
-</dd>
-<dt>MaxRequestSize number-bytes
-</dt>
-<dd></dd>
-<dd>Specifies the maximum request/file size in bytes (0 for no limit)
-</dd>
-<dt>MultipleOperationTimeout seconds
-</dt>
-<dd></dd>
-<dd>Specifies the maximum amount of time to allow between files in a multiple file
-print job.
-</dd>
-<dt>Order allow,deny
-</dt>
-<dd></dd>
-<dt>Order deny,allow
-</dt>
-<dd></dd>
-<dd>Specifies the order of HTTP access control (allow,deny or deny,allow)
-</dd>
-<dt>PageLogFormat format string
-</dt>
-<dd></dd>
-<dd>Specifies the format of page log lines.
-</dd>
-<dt>PassEnv variable [... variable]
-</dt>
-<dd></dd>
-<dd>Passes the specified environment variable(s) to child processes.
-</dd>
-<dt>&lt;Policy name> ... &lt;/Policy>
-</dt>
-<dd></dd>
-<dd>Specifies access control for the named policy.
-</dd>
-<dt>Port number
-</dt>
-<dd></dd>
-<dd>Specifies a port number to listen to for HTTP requests.
-</dd>
-<dt>PreserveJobFiles Yes
-</dt>
-<dd></dd>
-<dt>PreserveJobFiles No
-</dt>
-<dd></dd>
-<dd>Specifies whether or not to preserve job files after they are printed.
-</dd>
-<dt>PreserveJobHistory Yes
-</dt>
-<dd></dd>
-<dt>PreserveJobHistory No
-</dt>
-<dd></dd>
-<dd>Specifies whether or not to preserve the job history after they are
-printed.
-</dd>
-<dt>PrintcapFormat bsd
-</dt>
-<dd></dd>
-<dt>PrintcapFormat plist
-</dt>
-<dd></dd>
-<dt>PrintcapFormat solaris
-</dt>
-<dd></dd>
-<dd>Specifies the format of the printcap file.
-</dd>
-<dt>ReloadTimeout seconds
-</dt>
-<dd></dd>
-<dd>Specifies the amount of time to wait for job completion before
-restarting the scheduler.
-</dd>
-<dt>Require group group-name-list
-</dt>
-<dd></dd>
-<dt>Require user user-name-list
-</dt>
-<dd></dd>
-<dt>Require valid-user
-</dt>
-<dd></dd>
-<dd>Specifies that user or group authentication is required.
-</dd>
-<dt>RIPCache bytes
-</dt>
-<dd></dd>
-<dd>Specifies the maximum amount of memory to use when converting images
-and PostScript files to bitmaps for a printer.
-</dd>
-<dt>Satisfy all
-</dt>
-<dd></dd>
-<dt>Satisfy any
-</dt>
-<dd></dd>
-<dd>Specifies whether all or any limits set for a Location must be
-satisfied to allow access.
-</dd>
-<dt>ServerAdmin user@domain.com
-</dt>
-<dd></dd>
-<dd>Specifies the email address of the server administrator.
-</dd>
-<dt>ServerAlias hostname [... hostname]
-</dt>
-<dd></dd>
-<dt>ServerAlias *
-</dt>
-<dd></dd>
-<dd>Specifies an alternate name that the server is known by. The special name "*"
-allows any name to be used.
-</dd>
-<dt>ServerName hostname-or-ip-address
-</dt>
-<dd></dd>
-<dd>Specifies the fully-qualified hostname of the server.
-</dd>
-<dt>ServerTokens Full
-</dt>
-<dd></dd>
-<dt>ServerTokens Major
-</dt>
-<dd></dd>
-<dt>ServerTokens Minimal
-</dt>
-<dd></dd>
-<dt>ServerTokens Minor
-</dt>
-<dd></dd>
-<dt>ServerTokens None
-</dt>
-<dd></dd>
-<dt>ServerTokens OS
-</dt>
-<dd></dd>
-<dt>ServerTokens ProductOnly
-</dt>
-<dd></dd>
-<dd>Specifies what information is included in the Server header of HTTP
-responses.
-</dd>
-<dt>SetEnv variable value
-</dt>
-<dd></dd>
-<dd>Set the specified environment variable to be passed to child processes.
-</dd>
-<dt>SSLListen
-</dt>
-<dd></dd>
-<dd>Listens on the specified address and port for encrypted connections.
-</dd>
-<dt>SSLOptions None
-</dt>
-<dd></dd>
-<dt>SSLOptions NoEmptyFragments
-</dt>
-<dd></dd>
-<dd>Sets SSL/TLS protocol options for encrypted connections.
-</dd>
-<dt>SSLPort
-</dt>
-<dd></dd>
-<dd>Listens on the specified port for encrypted connections.
-</dd>
-<dt>StrictConformance Yes
-</dt>
-<dd></dd>
-<dt>StrictConformance No
-</dt>
-<dd></dd>
-<dd>Specifies whether the scheduler requires clients to strictly adhere to the IPP
-specifications. The default is No.
-</dd>
-<dt>SubscriptionPrivateAccess all
-</dt>
-<dd></dd>
-<dt>SubscriptionPrivateAccess default
-</dt>
-<dd></dd>
-<dt>SubscriptionPrivateAccess {user|@group|@ACL|@OWNER|@SYSTEM}+
-</dt>
-<dd></dd>
-<dd>Specifies an access list for a subscription's private values. The "default"
-access list is "@OWNER @SYSTEM". "@ACL" maps to the printer's
-requesting-user-name-allowed or requesting-user-name-denied values.
-</dd>
-<dt>SubscriptionPrivateValues all
-</dt>
-<dd></dd>
-<dt>SubscriptionPrivateValues default
-</dt>
-<dd></dd>
-<dt>SubscriptionPrivateValues none
-</dt>
-<dd></dd>
-<dt>SubscriptionPrivateValues attribute-name-1 [ ... attribute-name-N ]
-</dt>
-<dd>Specifies the list of job values to make private. The "default" values are
-"notify-events", "notify-pull-method", "notify-recipient-uri",
-"notify-subscriber-user-name", and "notify-user-data".
-</dd>
-<dt>Timeout seconds
-</dt>
-<dd></dd>
-<dd>Specifies the HTTP request timeout in seconds.
-</dd>
-<dt>WebInterface yes
-</dt>
-<dd></dd>
-<dt>WebInterface no
-</dt>
-<dd>Specifies whether the web interface is enabled.
-</dd>
+The default is the MaxClients value.
+<dt><b>MaxCopies </b><i>number</i>
+<dd style="margin-left: 5.0em">Specifies the maximum number of copies that a user can print of each job.
+The default is "9999".
+<dt><b>MaxHoldTime </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies the maximum time a job may remain in the "indefinite" hold state before it is canceled.
+The default is "0" which disables cancellation of held jobs.
+<dt><b>MaxJobs </b><i>number</i>
+<dd style="margin-left: 5.0em">Specifies the maximum number of simultaneous jobs that are allowed.
+Set to "0" to allow an unlimited number of jobs.
+The default is "500".
+<dt><b>MaxJobsPerPrinter </b><i>number</i>
+<dd style="margin-left: 5.0em">Specifies the maximum number of simultaneous jobs that are allowed per printer.
+The default is "0" which allows up to MaxJobs jobs per printer.
+<dt><b>MaxJobsPerUser </b><i>number</i>
+<dd style="margin-left: 5.0em">Specifies the maximum number of simultaneous jobs that are allowed per user.
+The default is "0" which allows up to MaxJobs jobs per user.
+<dt><b>MaxJobTime </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies the maximum time a job may take to print before it is canceled.
+Set to "0" to disable cancellation of "stuck" jobs.
+The default is "10800" (3 hours).
+<dt><b>MaxLogSize </b><i>size</i>
+<dd style="margin-left: 5.0em">Specifies the maximum size of the log files before they are rotated.
+The value "0" disables log rotation.
+The default is "1048576" (1MB).
+<dt><b>MultipleOperationTimeout </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies the maximum amount of time to allow between files in a multiple file print job.
+The default is "300" (5 minutes).
+<dt><b>PageLogFormat </b><i>format-string</i>
+<dd style="margin-left: 5.0em">Specifies the format of PageLog lines.
+Sequences beginning with percent (%) characters are replaced with the corresponding information, while all other characters are copied literally.
+The following percent sequences are recognized:
+<pre class="man">
+
+    "%%" inserts a single percent character.
+    "%{name}" inserts the value of the specified IPP attribute.
+    "%C" inserts the number of copies for the current page.
+    "%P" inserts the current page number.
+    "%T" inserts the current date and time in common log format.
+    "%j" inserts the job ID.
+    "%p" inserts the printer name.
+    "%u" inserts the username.
+
+</pre>
+The default is "%p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}".
+<dt><b>PassEnv </b><i>variable </i>[ ... <i>variable </i>]
+<dd style="margin-left: 5.0em">Passes the specified environment variable(s) to child processes.
+<dt><b>&lt;Policy </b><i>name</i><b>> </b>... <b>&lt;/Policy></b>
+<dd style="margin-left: 5.0em">Specifies access control for the named policy.
+<dt><b>Port </b><i>number</i>
+<dd style="margin-left: 5.0em">Listens to the specified port number for connections.
+<dt><b>PreserveJobFiles Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>PreserveJobFiles No</b>
+<dd style="margin-left: 5.0em"><dt><b>PreserveJobFiles </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies whether job files (documents) are preserved after a job is printed.
+If a numeric value is specified, job files are preserved for the indicated number of seconds after printing.
+The default is "86400" (preserve 1 day).
+<dt><b>PreserveJobHistory Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>PreserveJobHistory No</b>
+<dd style="margin-left: 5.0em"><dt><b>PreserveJobHistory </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies whether the job history is preserved after a job is printed.
+If a numeric value is specified, the job history is preserved for the indicated number of seconds after printing.
+If "Yes", the job history is preserved until the MaxJobs limit is reached.
+The default is "Yes".
+<dt><b>ReloadTimeout </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies the amount of time to wait for job completion before restarting the scheduler.
+The default is "30".
+<dt><b>RIPCache </b><i>size</i>
+<dd style="margin-left: 5.0em">Specifies the maximum amount of memory to use when converting documents into bitmaps for a printer.
+The default is "128m".
+<dt><b>ServerAdmin </b><i>email-address</i>
+<dd style="margin-left: 5.0em">Specifies the email address of the server administrator.
+The default value is "root@ServerName".
+<dt><b>ServerAlias </b><i>hostname </i>[ ... <i>hostname </i>]
+<dd style="margin-left: 5.0em"><dt><b>ServerAlias *</b>
+<dd style="margin-left: 5.0em">The ServerAlias directive is used for HTTP Host header validation when clients connect to the scheduler from external interfaces.
+Using the special name "*" can expose your system to known browser-based DNS rebinding attacks, even when accessing sites through a firewall.
+If the auto-discovery of alternate names does not work, we recommend listing each alternate name with a ServerAlias directive instead of using "*".
+<dt><b>ServerName </b><i>hostname</i>
+<dd style="margin-left: 5.0em">Specifies the fully-qualified hostname of the server.
+The default is the value reported by the
+<b>hostname</b>(1)
+command.
+<dt><b>ServerTokens None</b>
+<dd style="margin-left: 5.0em"><dt><b>ServerTokens ProductOnly</b>
+<dd style="margin-left: 5.0em"><dt><b>ServerTokens Major</b>
+<dd style="margin-left: 5.0em"><dt><b>ServerTokens Minor</b>
+<dd style="margin-left: 5.0em"><dt><b>ServerTokens Minimal</b>
+<dd style="margin-left: 5.0em"><dt><b>ServerTokens OS</b>
+<dd style="margin-left: 5.0em"><dt><b>ServerTokens Full</b>
+<dd style="margin-left: 5.0em">Specifies what information is included in the Server header of HTTP responses.
+"None" disables the Server header.
+"ProductOnly" reports "CUPS".
+"Major" reports "CUPS 2".
+"Minor" reports "CUPS 2.0".
+"Minimal" reports "CUPS 2.0.0".
+"OS" reports "CUPS 2.0.0 (UNAME)" where UNAME is the output of the
+<b>uname</b>(1)
+command.
+"Full" reports "CUPS 2.0.0 (UNAME) IPP/2.0".
+The default is "Minimal".
+<dt><b>SetEnv </b><i>variable value</i>
+<dd style="margin-left: 5.0em">Set the specified environment variable to be passed to child processes.
+<dt><dt><b>SSLListen </b><i>ipv4-address</i><b>:</b><i>port</i>
+<dd style="margin-left: 5.0em"><dt><b>SSLListen [</b><i>ipv6-address</i><b>]:</b><i>port</i>
+<dd style="margin-left: 5.0em"><dt><b>SSLListen *:</b><i>port</i>
+<dd style="margin-left: 5.0em">Listens on the specified address and port for encrypted connections.
+<dt><b>SSLPort </b><i>port</i>
+<dd style="margin-left: 5.0em">Listens on the specified port for encrypted connections.
+<dt><b>StrictConformance Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>StrictConformance No</b>
+<dd style="margin-left: 5.0em">Specifies whether the scheduler requires clients to strictly adhere to the IPP specifications.
+The default is "No".
+<dt><b>Timeout </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies the HTTP request timeout.
+The default is "300" (5 minutes).
+<dt><b>WebInterface yes</b>
+<dd style="margin-left: 5.0em"><dt><b>WebInterface no</b>
+<dd style="margin-left: 5.0em">Specifies whether the web interface is enabled.
+The default is "No".
+</dl>
+<h3><a name="HTTP_METHOD_NAMES">Http Method Names</a></h3>
+The following HTTP methods are supported by
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8):</a>
+<dl class="man">
+<dt>GET
+<dd style="margin-left: 5.0em">Used by a client to download icons and other printer resources and to access the CUPS web interface.
+<dt>HEAD
+<dd style="margin-left: 5.0em">Used by a client to get the type, size, and modification date of resources.
+<dt>OPTIONS
+<dd style="margin-left: 5.0em">Used by a client to establish a secure (SSL/TLS) connection.
+<dt>POST
+<dd style="margin-left: 5.0em">Used by a client to submit IPP requests and HTML forms from the CUPS web interface.
+<dt>PUT
+<dd style="margin-left: 5.0em">Used by a client to upload configuration files.
+</dl>
+<h3><a name="IPP_OPERATION_NAMES">Ipp Operation Names</a></h3>
+The following IPP operations are supported by
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8):</a>
+<dl class="man">
+<dt>CUPS-Accept-Jobs
+<dd style="margin-left: 5.0em">Allows a printer to accept new jobs.
+<dt>CUPS-Add-Modify-Class
+<dd style="margin-left: 5.0em">Adds or modifies a printer class.
+<dt>CUPS-Add-Modify-Printer
+<dd style="margin-left: 5.0em">Adds or modifies a printer.
+<dt>CUPS-Authenticate-Job
+<dd style="margin-left: 5.0em">Releases a job that is held for authentication.
+<dt>CUPS-Delete-Class
+<dd style="margin-left: 5.0em">Deletes a printer class.
+<dt>CUPS-Delete-Printer
+<dd style="margin-left: 5.0em">Deletes a printer.
+<dt>CUPS-Get-Classes
+<dd style="margin-left: 5.0em">Gets a list of printer classes.
+<dt>CUPS-Get-Default
+<dd style="margin-left: 5.0em">Gets the server default printer or printer class.
+<dt>CUPS-Get-Devices
+<dd style="margin-left: 5.0em">Gets a list of devices that are currently available.
+<dt>CUPS-Get-Document
+<dd style="margin-left: 5.0em">Gets a document file for a job.
+<dt>CUPS-Get-PPD
+<dd style="margin-left: 5.0em">Gets a PPD file.
+<dt>CUPS-Get-PPDs
+<dd style="margin-left: 5.0em">Gets a list of installed PPD files.
+<dt>CUPS-Get-Printers
+<dd style="margin-left: 5.0em">Gets a list of printers.
+<dt>CUPS-Move-Job
+<dd style="margin-left: 5.0em">Moves a job.
+<dt>CUPS-Reject-Jobs
+<dd style="margin-left: 5.0em">Prevents a printer from accepting new jobs.
+<dt>CUPS-Set-Default
+<dd style="margin-left: 5.0em">Sets the server default printer or printer class.
+<dt>Cancel-Job
+<dd style="margin-left: 5.0em">Cancels a job.
+<dt>Cancel-Jobs
+<dd style="margin-left: 5.0em">Cancels one or more jobs.
+<dt>Cancel-My-Jobs
+<dd style="margin-left: 5.0em">Cancels one or more jobs creates by a user.
+<dt>Cancel-Subscription
+<dd style="margin-left: 5.0em">Cancels a subscription.
+<dt>Close-Job
+<dd style="margin-left: 5.0em">Closes a job that is waiting for more documents.
+<dt>Create-Job
+<dd style="margin-left: 5.0em">Creates a new job with no documents.
+<dt>Create-Job-Subscriptions
+<dd style="margin-left: 5.0em">Creates a subscription for job events.
+<dt>Create-Printer-Subscriptions
+<dd style="margin-left: 5.0em">Creates a subscription for printer events.
+<dt>Get-Job-Attributes
+<dd style="margin-left: 5.0em">Gets information about a job.
+<dt>Get-Jobs
+<dd style="margin-left: 5.0em">Gets a list of jobs.
+<dt>Get-Notifications
+<dd style="margin-left: 5.0em">Gets a list of event notifications for a subscription.
+<dt>Get-Printer-Attributes
+<dd style="margin-left: 5.0em">Gets information about a printer or printer class.
+<dt>Get-Subscription-Attributes
+<dd style="margin-left: 5.0em">Gets information about a subscription.
+<dt>Get-Subscriptions
+<dd style="margin-left: 5.0em">Gets a list of subscriptions.
+<dt>Hold-Job
+<dd style="margin-left: 5.0em">Holds a job from printing.
+<dt>Hold-New-Jobs
+<dd style="margin-left: 5.0em">Holds all new jobs from printing.
+<dt>Pause-Printer
+<dd style="margin-left: 5.0em">Stops processing of jobs by a printer or printer class.
+<dt>Pause-Printer-After-Current-Job
+<dd style="margin-left: 5.0em">Stops processing of jobs by a printer or printer class after the current job is finished.
+<dt>Print-Job
+<dd style="margin-left: 5.0em">Creates a new job with a single document.
+<dt>Purge-Jobs
+<dd style="margin-left: 5.0em">Cancels one or more jobs and deletes the job history.
+<dt>Release-Held-New-Jobs
+<dd style="margin-left: 5.0em">Allows previously held jobs to print.
+<dt>Release-Job
+<dd style="margin-left: 5.0em">Allows a job to print.
+<dt>Renew-Subscription
+<dd style="margin-left: 5.0em">Renews a subscription.
+<dt>Restart-Job
+<dd style="margin-left: 5.0em">Reprints a job, if possible.
+<dt>Send-Document
+<dd style="margin-left: 5.0em">Adds a document to a job.
+<dt>Set-Job-Attributes
+<dd style="margin-left: 5.0em">Changes job information.
+<dt>Set-Printer-Attributes
+<dd style="margin-left: 5.0em">Changes printer or printer class information.
+<dt>Validate-Job
+<dd style="margin-left: 5.0em">Validates options for a new job.
+</dl>
+<h3><a name="LOCATION_PATHS">Location Paths</a></h3>
+The following paths are commonly used when configuring
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8):</a>
+<dl class="man">
+<dt>/
+<dd style="margin-left: 5.0em">The path for all get operations (get-printers, get-jobs, etc.)
+<dt>/admin
+<dd style="margin-left: 5.0em">The path for all administration operations (add-printer, delete-printer, start-printer, etc.)
+<dt>/admin/conf
+<dd style="margin-left: 5.0em">The path for access to the CUPS configuration files (cupsd.conf, client.conf, etc.)
+<dt>/admin/log
+<dd style="margin-left: 5.0em">The path for access to the CUPS log files (access_log, error_log, page_log)
+<dt>/classes
+<dd style="margin-left: 5.0em">The path for all printer classes
+<dt>/classes/name
+<dd style="margin-left: 5.0em">The resource for the named printer class
+<dt>/jobs
+<dd style="margin-left: 5.0em">The path for all jobs (hold-job, release-job, etc.)
+<dt>/jobs/id
+<dd style="margin-left: 5.0em">The path for the specified job.
+<dt>/printers
+<dd style="margin-left: 5.0em">The path for all printers
+<dt>/printers/name
+<dd style="margin-left: 5.0em">The path for the named printer
+<dt>/printers/name.png
+<dd style="margin-left: 5.0em">The icon file path for the named printer
+<dt>/printers/name.ppd
+<dd style="margin-left: 5.0em">The PPD file path for the named printer
 </dl>
+<h3><a name="DIRECTIVES_VALID_WITHIN_LOCATION_AND_LIMIT_SECTIONS">Directives Valid Within Location And Limit Sections</a></h3>
+The following directives may be placed inside Location and Limit sections in the <b>cupsd.conf</b> file:
+<dl class="man">
+<dt><b>Allow all</b>
+<dd style="margin-left: 5.0em"><dt><b>Allow none</b>
+<dd style="margin-left: 5.0em"><dt><b>Allow </b><i>host.domain.com</i>
+<dd style="margin-left: 5.0em"><dt><b>Allow *.</b><i>domain.com</i>
+<dd style="margin-left: 5.0em"><dt><b>Allow </b><i>ipv4-address</i>
+<dd style="margin-left: 5.0em"><dt><b>Allow </b><i>ipv4-address</i><b>/</b><i>netmask</i>
+<dd style="margin-left: 5.0em"><dt><b>Allow </b><i>ipv4-address</i><b>/</b><i>mm</i>
+<dd style="margin-left: 5.0em"><dt><b>Allow [</b><i>ipv6-address</i><b>]</b>
+<dd style="margin-left: 5.0em"><dt><b>Allow [</b><i>ipv6-address</i><b>]/</b><i>mm</i>
+<dd style="margin-left: 5.0em"><dt><b>Allow @IF(</b><i>name</i><b>)</b>
+<dd style="margin-left: 5.0em"><dt><b>Allow @LOCAL</b>
+<dd style="margin-left: 5.0em">Allows access from the named hosts, domains, addresses, or interfaces.
+The Order directive controls whether Allow lines are evaluated before or after Deny lines.
+<dt><b>AuthType None</b>
+<dd style="margin-left: 5.0em"><dt><b>AuthType Basic</b>
+<dd style="margin-left: 5.0em"><dt><b>AuthType Default</b>
+<dd style="margin-left: 5.0em"><dt><b>AuthType Negotiate</b>
+<dd style="margin-left: 5.0em">Specifies the type of authentication required.
+The value "Default" corresponds to the DefaultAuthType value.
+<dt><b>Deny all</b>
+<dd style="margin-left: 5.0em"><dt><b>Deny none</b>
+<dd style="margin-left: 5.0em"><dt><b>Deny </b><i>host.domain.com</i>
+<dd style="margin-left: 5.0em"><dt><b>Deny *.</b><i>domain.com</i>
+<dd style="margin-left: 5.0em"><dt><b>Deny </b><i>ipv4-address</i>
+<dd style="margin-left: 5.0em"><dt><b>Deny </b><i>ipv4-address</i><b>/</b><i>netmask</i>
+<dd style="margin-left: 5.0em"><dt><b>Deny </b><i>ipv4-address</i><b>/</b><i>mm</i>
+<dd style="margin-left: 5.0em"><dt><b>Deny [</b><i>ipv6-address</i><b>]</b>
+<dd style="margin-left: 5.0em"><dt><b>Deny [</b><i>ipv6-address</i><b>]/</b><i>mm</i>
+<dd style="margin-left: 5.0em"><dt><b>Deny @IF(</b><i>name</i><b>)</b>
+<dd style="margin-left: 5.0em"><dt><b>Deny @LOCAL</b>
+<dd style="margin-left: 5.0em">Denies access from the named hosts, domains, addresses, or interfaces.
+The Order directive controls whether Deny lines are evaluated before or after Allow lines.
+<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>
+<dd style="margin-left: 5.0em">Specifies the level of encryption that is required for a particular location.
+The default value is "IfRequested".
+<dt><b>Order allow,deny</b>
+<dd style="margin-left: 5.0em">Specifies that access is denied by default. Allow lines are then processed followed by Deny lines to determine whether a client may access a particular resource.
+<dt><b>Order deny,allow</b>
+<dd style="margin-left: 5.0em">Specifies that access is allowed by default. Deny lines are then processed followed by Allow lines to determine whether a client may access a particular resource.
+<dt><b>Require group </b><i>group-name </i>[ <i>group-name </i>... ]
+<dd style="margin-left: 5.0em">Specifies that an authenticated user must be a member of one of the named groups.
+<dt><b>Require user {</b><i>user-name</i>|<b>@</b><i>group-name</i>} ...
+<dd style="margin-left: 5.0em">Specifies that an authenticated user must match one of the named users or be a member of one of the named groups.
+The group name "@SYSTEM" corresponds to the list of groups defined by the SystemGroup directive in the
+<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.
+<dt><b>Require valid-user</b>
+<dd style="margin-left: 5.0em">Specifies that any authenticated user is acceptable.
+<dt><b>Satisfy all</b>
+<dd style="margin-left: 5.0em">Specifies that all Allow, AuthType, Deny, Order, and Require conditions must be satisfied to allow access.
+<dt><b>Satisfy any</b>
+<dd style="margin-left: 5.0em">Specifies that any a client may access a resource if either the authentication (AuthType/Require) or address (Allow/Deny/Order) conditions are satisfied.
+For example, this can be used to require authentication only for remote accesses.
+</dl>
+<h3><a name="DIRECTIVES_VALID_WITHIN_POLICY_SECTIONS">Directives Valid Within Policy Sections</a></h3>
+The following directives may be placed inside Policy sections in the <b>cupsd.conf</b> file:
+<dl class="man">
+<dt><b>JobPrivateAccess all</b>
+<dd style="margin-left: 5.0em"><dt><b>JobPrivateAccess default</b>
+<dd style="margin-left: 5.0em"><dt><b>JobPrivateAccess </b>{<i>user</i>|<b>@</b><i>group</i>|<b>@ACL</b>|<b>@OWNER</b>|<b>@SYSTEM</b>} ...
+<dd style="margin-left: 5.0em">Specifies an access list for a job's private values.
+The "default" access list is "@OWNER @SYSTEM".
+"@ACL" maps to the printer's requesting-user-name-allowed or requesting-user-name-denied values.
+"@OWNER" maps to the job's owner.
+"@SYSTEM" maps to the groups listed for the SystemGroup directive in the
+<a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5)</a>
+file.
+<dt><b>JobPrivateValues all</b>
+<dd style="margin-left: 5.0em"><dt><b>JobPrivateValues default</b>
+<dd style="margin-left: 5.0em"><dt><b>JobPrivateValues none</b>
+<dd style="margin-left: 5.0em"><dt><b>JobPrivateValues </b><i>attribute-name </i>[ ... <i>attribute-name </i>]
+<dd style="margin-left: 5.0em">Specifies the list of job values to make private.
+The "default" values are "job-name", "job-originating-host-name", "job-originating-user-name", and "phone".
+<dt><b>SubscriptionPrivateAccess all</b>
+<dd style="margin-left: 5.0em"><dt><b>SubscriptionPrivateAccess default</b>
+<dd style="margin-left: 5.0em"><dt><b>SubscriptionPrivateAccess </b>{<i>user</i>|<b>@</b><i>group</i>|<b>@ACL</b>|<b>@OWNER</b>|<b>@SYSTEM</b>} ...
+<dd style="margin-left: 5.0em">Specifies an access list for a subscription's private values.
+The "default" access list is "@OWNER @SYSTEM".
+"@ACL" maps to the printer's requesting-user-name-allowed or requesting-user-name-denied values.
+"@OWNER" maps to the job's owner.
+"@SYSTEM" maps to the groups listed for the SystemGroup directive in the
+<a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5)</a>
+file.
+<dt><b>SubscriptionPrivateValues all</b>
+<dd style="margin-left: 5.0em"><dt><b>SubscriptionPrivateValues default</b>
+<dd style="margin-left: 5.0em"><dt><b>SubscriptionPrivateValues none</b>
+<dd style="margin-left: 5.0em"><dt><b>SubscriptionPrivateValues </b><i>attribute-name </i>[ ... <i>attribute-name </i>]
+<dd style="margin-left: 5.0em">Specifies the list of subscription values to make private.
+The "default" values are "notify-events", "notify-pull-method", "notify-recipient-uri", "notify-subscriber-user-name", and "notify-user-data".
+</dl>
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+The <b>cupsd.conf</b> file format is based on the Apache HTTP Server configuration file format.
+<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+Log everything with a maximum log file size of 32 megabytes:
+<pre class="man">
+
+    AccessLogLevel all
+    LogLevel debug2
+    MaxLogSize 32m
+
+</pre>
+Require authentication for accesses from outside the 10. network:
+<pre class="man">
+
+    &lt;Location />
+    Order allow,deny
+    Allow from 10./8
+    AuthType Basic
+    Require valid-user
+    Satisfy any
+    &lt;/Location>
+</pre>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-classes.conf.html?TOPIC=Man+Pages'>classes.conf(5)</a>, <a href='man-cups-files.conf.html?TOPIC=Man+Pages'>cups-files.conf(5)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>,
-<a href='man-mime.convs.html?TOPIC=Man+Pages'>mime.convs(5)</a>, <a href='man-mime.types.html?TOPIC=Man+Pages'>mime.types(5)</a>, <a href='man-printers.conf.html?TOPIC=Man+Pages'>printers.conf(5)</a>,
-<a href='man-subscriptions.conf.html?TOPIC=Man+Pages'>subscriptions.conf(5)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-classes.conf.html?TOPIC=Man+Pages"><b>classes.conf</b>(5),</a>
+<a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-mime.convs.html?TOPIC=Man+Pages"><b>mime.convs</b>(5),</a>
+<a href="man-mime.types.html?TOPIC=Man+Pages"><b>mime.types</b>(5),</a>
+<a href="man-printers.conf.html?TOPIC=Man+Pages"><b>printers.conf</b>(5),</a>
+<a href="man-subscriptions.conf.html?TOPIC=Man+Pages"><b>subscriptions.conf</b>(5),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index b292cba208da054d3d1d2f68fffaa7a755d5c5c0..8f90f447c43057876f58865bbc48051979f3e0b8 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 cupsd - cups scheduler
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cupsd
-</b>[ -c
-<i>config-file
-</i>] [ -f ] [ -F ] [ -h ] [ -l ] [ -t ]
+<b>cupsd</b>
+[
+<b>-c</b>
+<i>config-file</i>
+] [ 
+<b>-f</b>
+] [
+<b>-F</b>
+] [
+<b>-h</b>
+] [
+<b>-l</b>
+] [
+<b>-t</b>
+]
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cupsd</i> is the scheduler for CUPS. It implements a printing system based
-upon the Internet Printing Protocol, version 2.1.  If no options are specified
-on the command-line then the default configuration file
-<i>/etc/cups/cupsd.conf</i> will be used.
+<b>cupsd</b>
+is the scheduler for CUPS. It implements a printing system based upon the Internet Printing Protocol, version 2.1. If no options are specified on the command-line then the default configuration file
+<i>/etc/cups/cupsd.conf</i>
+will be used.
 <h2 class="title"><a name="OPTIONS">Options</a></h2>
-<dl>
-<dt>-c config-file
-</dt>
-<dd></dd>
-<dd>Uses the named configuration file.
-</dd>
-<dt>-f
-</dt>
-<dd></dd>
-<dd>Run <i>cupsd</i> in the foreground; the default is to run in the
-background as a "daemon".
-</dd>
-<dt>-F
-</dt>
-<dd></dd>
-<dd>Run <i>cupsd</i> in the foreground but detach the process from the
-controlling terminal and current directory. This is useful for
-running <i>cupsd</i> from <i>init(8)</i>.
-</dd>
-<dt>-h
-</dt>
-<dd></dd>
-<dd>Shows the program usage.
-</dd>
-<dt>-l
-</dt>
-<dd></dd>
-<dd>This option is passed to <i>cupsd</i> when it is run from
-<i>launchd(8)</i>.
-</dd>
-<dt>-t
-</dt>
-<dd></dd>
-<dd>Test the configuration file for syntax errors.
-</dd>
+<dl class="man">
+<dt><b>-c</b><i> config-file</i>
+<dd style="margin-left: 5.0em">Uses the named configuration file.
+<dt><b>-f</b>
+<dd style="margin-left: 5.0em">Run
+<b>cupsd</b>
+in the foreground; the default is to run in the background as a "daemon".
+<dt><b>-F</b>
+<dd style="margin-left: 5.0em">Run
+<b>cupsd</b>
+in the foreground but detach the process from the controlling terminal and current directory. This is useful for running
+<b>cupsd</b>
+from
+<b>init</b>(8).
+<dt><b>-h</b>
+<dd style="margin-left: 5.0em">Shows the program usage.
+<dt><b>-l</b>
+<dd style="margin-left: 5.0em">This option is passed to
+<b>cupsd</b>
+when it is run from
+<b>launchd</b>(8)
+or
+<b>systemd</b>(8).
+<dt><b>-t</b>
+<dd style="margin-left: 5.0em">Test the configuration file for syntax errors.
 </dl>
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-<i>cupsd</i> implements all of the required IPP/2.1 attributes and
-operations. It also implements several CUPS-specific administration
-operations.
+<h2 class="title"><a name="FILES">Files</a></h2>
+<pre class="man">
+<i>/etc/cups/classes.conf</i>
+<i>/etc/cups/cups-files.conf</i>
+<i>/etc/cups/cupsd.conf</i>
+<i>/usr/share/cups/mime/mime.convs</i>
+<i>/usr/share/cups/mime/mime.types</i>
+<i>/etc/cups/printers.conf</i>
+<i>/etc/cups/subscriptions.conf</i>
+</pre>
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+<b>cupsd</b>
+implements all of the required IPP/2.1 attributes and operations. It also implements several CUPS-specific administrative operations.
+<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+Run
+<b>cupsd</b>
+in the background with the default configuration file:
+<pre class="man">
+
+    cupsd
+
+</pre>
+Test a configuration file called
+<i>test.conf</i>:
+<pre class="man">
+
+    cupsd -t -c test.conf
+
+</pre>
+Run
+<b>cupsd</b>
+in the foreground with a test configuration file called
+<i>test.conf</i>:
+<pre class="man">
+
+    cupsd -f -c test.conf
+
+</pre>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-backend.html?TOPIC=Man+Pages'>backend(7)</a>, <a href='man-classes.conf.html?TOPIC=Man+Pages'>classes.conf(5)</a>, <a href='man-cups-deviced.html?TOPIC=Man+Pages'>cups-deviced(8)</a>,
-<a href='man-cups-driverd.html?TOPIC=Man+Pages'>cups-driverd(8)</a>, <a href='man-cups-lpd.html?TOPIC=Man+Pages'>cups-lpd(8)</a>, <i>cups-polld(8)</i>,
-<a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>, <a href='man-filter.html?TOPIC=Man+Pages'>filter(7)</a>, <i>launchd(8)</i>,
-<a href='man-mime.convs.html?TOPIC=Man+Pages'>mime.convs(5)</a>, <a href='man-mime.types.html?TOPIC=Man+Pages'>mime.types(5)</a>, <a href='man-printers.conf.html?TOPIC=Man+Pages'>printers.conf(5)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-backend.html?TOPIC=Man+Pages"><b>backend</b>(7),</a>
+<a href="man-classes.conf.html?TOPIC=Man+Pages"><b>classes.conf</b>(5),</a>
+<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1),</a>
+<a href="man-cups-lpd.html?TOPIC=Man+Pages"><b>cups-lpd</b>(8),</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-cupsd-helper.html?TOPIC=Man+Pages"><b>cupsd-helper</b>(8),</a>
+<a href="man-cupsd-logs.html?TOPIC=Man+Pages"><b>cupsd-logs</b>(8),</a>
+<a href="man-filter.html?TOPIC=Man+Pages"><b>filter</b>(7),</a>
+<b>launchd</b>(8),
+<a href="man-mime.convs.html?TOPIC=Man+Pages"><b>mime.convs</b>(5),</a>
+<a href="man-mime.types.html?TOPIC=Man+Pages"><b>mime.types</b>(5),</a>
+<a href="man-printers.conf.html?TOPIC=Man+Pages"><b>printers.conf</b>(5),</a>
+<b>systemd</b>(8),
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index b0cf74bfe4494c3ceb12780a7480cd121a95e3f8..dbd8ab6e20651987cbaedbb97c97d12753080a1a 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 cupsdisable, cupsenable - stop/start printers and classes
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cupsdisable
-</b>[ -E ] [-U
-<i>username
-</i>] [ -c ] [ -h
-<i>server[:port]
-</i>] [ -r
-<i>reason
-</i>] [ --hold ] destination(s)
+<b>cupsdisable</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-c</b>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>-r</b>
+<i>reason</i>
+] [
+<b>--hold</b>
+]
+<i>destination(s)</i>
 <br>
-<b>cupsenable
-</b>[ -E ] [-U
-<i>username
-</i>] [ -c ] [ -h
-<i>server[:port]
-</i>] [ --release ] destination(s)
+<b>cupsenable</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-c</b>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>--release</b>
+]
+<i>destination(s)</i>
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cupsenable</i> starts the named printers or classes.
-<p><i>cupsdisable</i> stops the named printers or classes.  The
-following options may be used:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Forces encryption of the connection to the server.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Uses the specified username when connecting to the server.
-</dd>
-<dt>-c
-</dt>
-<dd></dd>
-<dd>Cancels all jobs on the named destination.
-</dd>
-<dt>-h server[:port]
-</dt>
-<dd></dd>
-<dd>Uses the specified server and port.
-</dd>
-<dt>--hold
-</dt>
-<dd></dd>
-<dd>Holds remaining jobs on the named printer.  Useful for allowing the current
-job to complete before performing maintenance.
-</dd>
-<dt>-r "reason"
-</dt>
-<dd></dd>
-<dd>Sets the message associated with the stopped state. If no reason is specified
-then the message is set to "Reason Unknown".
-</dd>
-<dt>--release
-</dt>
-<dd></dd>
-<dd>Releases pending jobs for printing. Use after running <i>cupsdisable</i> with
-the <i>--hold</i> option to resume printing.
-</dd>
+<b>cupsenable</b>
+starts the named printers or classes while
+<b>cupsdisable</b>
+stops the named printers or classes.
+<h2 class="title"><a name="OPTIONS">Options</a></h2>
+The following options may be used:
+<dl class="man">
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Forces encryption of the connection to the server.
+<dt><b>-U </b><i>username</i>
+<dd style="margin-left: 5.0em">Uses the specified username when connecting to the server.
+<dt><b>-c</b>
+<dd style="margin-left: 5.0em">Cancels all jobs on the named destination.
+<dt><b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+<dd style="margin-left: 5.0em">Uses the specified server and port.
+<dt><b>--hold</b>
+<dd style="margin-left: 5.0em">Holds remaining jobs on the named printer.
+Useful for allowing the current job to complete before performing maintenance.
+<dt><b>-r "</b><i>reason</i><b>"</b>
+<dd style="margin-left: 5.0em">Sets the message associated with the stopped state.
+If no reason is specified then the message is set to "Reason Unknown".
+<dt><b>--release</b>
+<dd style="margin-left: 5.0em">Releases pending jobs for printing.
+Use after running <b>cupsdisable</b> with the <i>--hold</i> option to resume printing.
 </dl>
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-Unlike the System V printing system, CUPS allows printer names to
-contain any printable character except SPACE, TAB, "/", or "#".
+<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 "#".
 Also, printer and class names are <i>not</i> case-sensitive.
-<p>The System V versions of these commands are <i>disable</i> and
-<i>enable</i>. They have been renamed to avoid conflicts with the
-<i>bash(1)</i> build-in commands of the same name.
-<p>The CUPS versions of <i>disable</i> and <i>enable</i> may ask the
-user for an access password depending on the printing system
-configuration.  This differs from the System V versions which
-require the root user to execute these commands.
+<p>The System V versions of these commands are <b>disable</b> and <b>enable</b>, respectively.
+They have been renamed to avoid conflicts with the
+<b>bash</b>(1)
+build-in commands of the same names.
+<p>The CUPS versions of <b>disable</b> and <b>enable</b> may ask the user for an access password depending on the printing system configuration.
+This differs from the System V versions which require the root user to execute these commands.
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cupsaccept.html?TOPIC=Man+Pages'>cupsaccept(8)</a>, <i>cupsreject(8)</i>, <a href='man-cancel.html?TOPIC=Man+Pages'>cancel(1)</a>, <a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>,
-<a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a>, <a href='man-lpstat.html?TOPIC=Man+Pages'>lpstat(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cupsaccept.html?TOPIC=Man+Pages"><b>cupsaccept</b>(8),</a>
+<b>cupsreject</b>(8),
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8),</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 
 </body>
index 5ff9c340495d80b7356ecc0e66c73f9e0927b13d..4053c6e9c000ced29f9c57a696584d4e5ccbfd27 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 cupsfilter - convert a file to another format using cups filters
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cupsfilter
-</b>[ -D ] [ -U
-<i>user
-</i>] [ -c
-<i>config-file
-</i>] [ -d
-<i>printer
-</i>] [ -e ] [ -i
-<i>mime/type
-</i>] [ -j
-<i>job-id[,N]
-</i>] [ -m
-<i>mime/type
-</i>] [ -n
-<i>copies
-</i>] [ -o
-<i>name=value
-</i>] [ -p
-<i>filename.ppd
-</i>] [ -t
-<i>title
-</i>] [ -u ]
-<i>filename
-</i><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cupsfilter</i> is a front-end to the CUPS filter subsystem which allows you
-to convert a file to a specific format, just as if you had printed the file
-through CUPS. By default, <i>cupsfilter</i> generates a PDF file. The converted
-file is sent to the standard output.
+<b>cupsfilter</b>
+[
+<b>--list-filters</b>
+] [
+<b>-D</b>
+] [
+<b>-U</b>
+<i>user</i>
+] [
+<b>-c</b>
+<i>config-file</i>
+] [
+<b>-d</b>
+<i>printer</i>
+] [
+<b>-e</b>
+] [
+<b>-i</b>
+<i>mime/type</i>
+] [
+<b>-j</b>
+<i>job-id[,N]</i>
+] [
+<b>-m</b>
+<i>mime/type</i>
+] [
+<b>-n</b>
+<i>copies</i>
+] [
+<b>-o</b>
+<i>name=value</i>
+] [
+<b>-p</b>
+<i>filename.ppd</i>
+] [
+<b>-t</b>
+<i>title</i>
+] [
+<b>-u</b>
+]
+<i>filename</i>
+<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
+<b>cupsfilter</b>
+is a front-end to the CUPS filter subsystem which allows you to convert a file to a specific format, just as if you had printed the file through CUPS. By default,
+<b>cupsfilter</b>
+generates a PDF file. The converted file is sent to the standard output.
 <h2 class="title"><a name="OPTIONS">Options</a></h2>
-<dl>
-<dt>-D
-</dt>
-<dd></dd>
-<dd>Delete the input file after conversion.
-</dd>
-<dt>-U user
-</dt>
-<dd></dd>
-<dd>Specifies the username passed to the filters. The default is the name of the current user.
-</dd>
-<dt>-c config-file
-</dt>
-<dd></dd>
-<dd>Uses the named cups-files.conf configuration file.
-</dd>
-<dt>-d printer
-</dt>
-<dd>Uses information from the named printer.
-</dd>
-<dt>-e
-</dt>
-<dd></dd>
-<dd>Use every filter from the PPD file.
-</dd>
-<dt>-i mime/type
-</dt>
-<dd></dd>
-<dd>Specifies the source file type. The default file type is guessed using the
-filename and contents of the file.
-</dd>
-<dt>-j job-id[,N]
-</dt>
-<dd></dd>
-<dd>Converts document N from the specified job. If N is omitted, document 1 is
-converted.
-</dd>
-<dt>-m mime/type
-</dt>
-<dd></dd>
-<dd>Specifies the destination file type. The default file type is application/pdf.
-Use printer/foo to convert to the printer format defined by the filters in the
-PPD file.
-</dd>
-<dt>-n copies
-</dt>
-<dd></dd>
-<dd>Specifies the number of copies to generate.
-</dd>
-<dt>-o name=value
-</dt>
-<dd></dd>
-<dd>Specifies options to pass to the CUPS filters.
-</dd>
-<dt>-p filename.ppd
-</dt>
-<dd></dd>
-<dd>Specifies the PPD file to use.
-</dd>
-<dt>-t title
-</dt>
-<dd></dd>
-<dd>Specifies the document title.
-</dd>
-<dt>-u
-</dt>
-<dd></dd>
-<dd>Delete the PPD file after conversion.
-</dd>
+<dl class="man">
+<dt><b>--list-filters</b>
+<dd style="margin-left: 5.0em">Do not actually run the filters, just print the filters used to stdout.
+<dt><b>-D</b>
+<dd style="margin-left: 5.0em">Delete the input file after conversion.
+<dt><b>-U </b><i>user</i>
+<dd style="margin-left: 5.0em">Specifies the username passed to the filters. The default is the name of the current user.
+<dt><b>-c </b><i>config-file</i>
+<dd style="margin-left: 5.0em">Uses the named cups-files.conf configuration file.
+<dt><b>-d </b><i>printer</i>
+<dd style="margin-left: 5.0em">Uses information from the named printer.
+<dt><b>-e</b>
+<dd style="margin-left: 5.0em">Use every filter from the PPD file.
+<dt><b>-i </b><i>mime/type</i>
+<dd style="margin-left: 5.0em">Specifies the source file type. The default file type is guessed using the filename and contents of the file.
+<dt><b>-j </b><i>job-id[,N]</i>
+<dd style="margin-left: 5.0em">Converts document N from the specified job. If N is omitted, document 1 is converted.
+<dt><b>-m </b><i>mime/type</i>
+<dd style="margin-left: 5.0em">Specifies the destination file type. The default file type is application/pdf. Use printer/foo to convert to the printer format defined by the filters in the PPD file.
+<dt><b>-n </b><i>copies</i>
+<dd style="margin-left: 5.0em">Specifies the number of copies to generate.
+<dt><b>-o </b><i>name=value</i>
+<dd style="margin-left: 5.0em">Specifies options to pass to the CUPS filters.
+<dt><b>-p </b><i>filename.ppd</i>
+<dd style="margin-left: 5.0em">Specifies the PPD file to use.
+<dt><b>-t </b><i>title</i>
+<dd style="margin-left: 5.0em">Specifies the document title.
+<dt><b>-u</b>
+<dd style="margin-left: 5.0em">Delete the PPD file after conversion.
 </dl>
+<h2 class="title"><a name="EXIT_STATUS">Exit Status</a></h2>
+<b>cupsfilter</b>
+returns a non-zero exit status on any error.
+<h2 class="title"><a name="ENVIRONMENT">Environment</a></h2>
+All of the standard
+<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1)</a>
+environment variables affect the operation of
+<b>cupsfilter</b>.
+<h2 class="title"><a name="FILES">Files</a></h2>
+<pre class="man">
+/etc/cups/cups-files.conf
+/etc/cups/*.convs
+/etc/cups/*.types
+/usr/share/cups/mime/*.convs
+/usr/share/cups/mime/*.types
+<h2 class="title"><a name="NOTES">Notes</a></h2>
+Unlike when printing, filters run using the
+<b>cupsfilter</b>
+command use the current user and security session. This may result in different output or unexpected behavior.
+<h2 class="title"><a name="EXAMPLE">Example</a></h2>
+The following command will generate a PDF preview of job 42 for a printer named "myprinter" and save it to a file named "preview.pdf":
+<pre class="man">
+
+    cupsfilter -m application/pdf -d myprinter -j 42 >preview.pdf
+</pre>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cups-files.conf.html?TOPIC=Man+Pages'>cups-files.conf(5)</a>
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1),</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<b>filter(7),</b>
+<a href="man-mime.convs.html?TOPIC=Man+Pages"><b>mime.convs</b>(7),</a>
+<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 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index aa83e00dd3082c33691a28d58d9ee0870bf7ffe2..74f42efcfdd1cfcd4b88b90eeb99c831e015a6d8 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: Man Pages -->
 <head>
@@ -8,37 +8,37 @@
 <body>
 <h1 class="title">cupstestdsc(1)</h1>
 <h2 class="title"><a name="NAME">Name</a></h2>
-cupstestdsc - test conformance of postscript files
+cupstestdsc - test conformance of postscript files (deprecated)
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cupstestdsc
-</b>[ -h ] filename.ps [ ...
-<i>filenameN.ps
-</i>]
+<b>cupstestdsc</b>
+[
+<b>-h</b>
+]
+<i>filename.ps</i>
+[ ...
+<i>filenameN.ps</i>
+]
 <br>
-<b>cupstestdsc
-</b>[ -h ] -
+<b>cupstestdsc</b>
+[
+<b>-h</b>
+]
+<b>-</b>
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cupstestdsc</i> tests the conformance of PostScript files to
-the Adobe PostScript Language Document Structuring Conventions
-Specification version 3.0. The results of testing and any other
-output are sent to the standard output. The second form of the
-command reads PostScript from the standard input.
-<h2 class="title"><a name="LIMITATIONS">Limitations</a></h2>
-<i>cupstestdsc</i> only validates the DSC comments in a PostScript
-file and does not attempt to validate the PostScript code itself.
-Developers must ensure that the PostScript they generate follows
-the rules defined by Adobe. Specifically, all pages must be
-independent of each other, code outside page descriptions may not
-affect the graphics state (current font, color, transform matrix,
-etc.), and device-specific commands such as setpagedevice should
-not be used.
+<b>cupstestdsc</b> tests the conformance of PostScript files to the Adobe PostScript Language Document Structuring Conventions Specification version 3.0.
+The results of testing and any other output are sent to the standard output.
+The second form of the command reads PostScript from the standard input.
+<h2 class="title"><a name="NOTES">Notes</a></h2>
+<i>This program is deprecated and will be removed in a future release of CUPS.</i>
+<p><b>cupstestdsc</b> only validates the DSC comments in a PostScript file and does not attempt to validate the PostScript code itself.
+Developers must ensure that the PostScript they generate follows the rules defined by Adobe.
+Specifically, all pages must be independent of each other, code outside page descriptions may not affect the graphics state (current font, color, transform matrix, etc.), and device-specific commands such as setpagedevice should not be used.
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
-<br>
+CUPS Online Help (<a href="http://localhost:631/help)">http://localhost:631/help)</a>,
 Adobe PostScript Language Document Structuring Conventions
 Specification, Version 3.0.
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index 21e23570f9ea2e1756c01326dd685fac1a082b2e..549426da005229777160df39aef9a52ab2c80214 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 cupstestppd - test conformance of ppd files
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cupstestppd
-</b>[ -I
-<i>category
-</i>] [ -R
-<i>rootdir
-</i>] [ -W
-<i>category
-</i>] [ -q ] [-r] [ -v[v] ] filename.ppd[.gz] [ ... filenameN.ppd[.gz] ]
+<b>cupstestppd</b>
+[
+<b>-I</b>
+<i>category</i>
+] [
+<b>-R</b>
+<i>rootdir</i>
+] [
+<b>-W</b>
+<i>category</i>
+] [
+<b>-q</b>
+] [
+<b>-r</b>
+] [
+<b>-v</b>[<b>v</b>]
+]
+<i>filename.ppd[.gz]</i>
+[ ...
+<i>filename.ppd[.gz]</i>
+]
 <br>
-<b>cupstestppd
-</b>[ -R
-<i>rootdir
-</i>] [ -W
-<i>category
-</i>] [ -q ] [-r] [ -v[v] ] -
+<b>cupstestppd</b>
+[
+<b>-R</b>
+<i>rootdir</i>
+] [
+<b>-W</b>
+<i>category</i>
+] [
+<b>-q</b>
+] [
+<b>-r</b>
+] [
+<b>-v</b>[<b>v</b>]
+]
+<b>-</b>
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cupstestppd</i> tests the conformance of PPD files to the
-Adobe PostScript Printer Description file format specification
-version 4.3. It can also be used to list the supported options
-and available fonts in a PPD file. The results of testing and
-any other output are sent to the standard output.
-<p>The first form of <i>cupstestppd</i> tests one or more PPD files
-on the command-line. The second form tests the PPD file provided
-on the standard input.
+<b>cupstestppd</b> tests the conformance of PPD files to the Adobe PostScript Printer Description file format specification version 4.3.
+It can also be used to list the supported options and available fonts in a PPD file.
+The results of testing and any other output are sent to the standard output.
+<p>The first form of <b>cupstestppd</b> tests one or more PPD files on the command-line.
+The second form tests the PPD file provided on the standard input.
 <h2 class="title"><a name="OPTIONS">Options</a></h2>
-<i>cupstestppd</i> supports the following options:
-<dl>
-<dt>-I filename
-</dt>
-<dd></dd>
-<dd>Ignores all PCFileName warnings.
-</dd>
-<dt>-I filters
-</dt>
-<dd></dd>
-<dd>Ignores all filter errors.
-</dd>
-<dt>-I profiles
-</dt>
-<dd></dd>
-<dd>Ignores all profile errors.
-</dd>
-<dt>-R rootdir
-</dt>
-<dd></dd>
-<dd>Specifies an alternate root directory for the filter, pre-filter,
-and other support file checks.
-</dd>
-<dt>-W constraints
-</dt>
-<dd></dd>
-<dd>Report all UIConstraint errors as warnings.
-</dd>
-<dt>-W defaults
-</dt>
-<dd></dd>
-<dd>Except for size-related options, report all default option errors as warnings.
-</dd>
-<dt>-W filters
-</dt>
-<dd></dd>
-<dd>Report all filter errors as warnings.
-</dd>
-<dt>-W profiles
-</dt>
-<dd></dd>
-<dd>Report all profile errors as warnings.
-</dd>
-<dt>-W sizes
-</dt>
-<dd></dd>
-<dd>Report all media size errors as warnings.
-</dd>
-<dt>-W translations
-</dt>
-<dd></dd>
-<dd>Report all translation errors as warnings.
-</dd>
-<dt>-W all
-</dt>
-<dd></dd>
-<dd>Report all of the previous errors as warnings.
-</dd>
-<dt>-W none
-</dt>
-<dd></dd>
-<dd>Report all of the previous errors as errors.
-</dd>
-<dt>-q
-</dt>
-<dd></dd>
-<dd>Specifies that no information should be displayed.
-</dd>
-<dt>-r
-</dt>
-<dd></dd>
-<dd>Relaxes the PPD conformance requirements so that common
-whitespace, control character, and formatting problems are not
-treated as hard errors.
-</dd>
-<dt>-v
-</dt>
-<dd></dd>
-<dd>Specifies that detailed conformance testing results should be
-displayed rather than the concise PASS/FAIL/ERROR status.
-</dd>
-<dt>-vv
-</dt>
-<dd></dd>
-<dd>Specifies that all information in the PPD file should be
-displayed in addition to the detailed conformance testing
-results.
-</dd>
+<b>cupstestppd</b> supports the following options:
+<dl class="man">
+<dt><b>-I filename</b>
+<dd style="margin-left: 5.0em">Ignores all PCFileName warnings.
+<dt><b>-I filters</b>
+<dd style="margin-left: 5.0em">Ignores all filter errors.
+<dt><b>-I profiles</b>
+<dd style="margin-left: 5.0em">Ignores all profile errors.
+<dt><b>-R </b><i>rootdir</i>
+<dd style="margin-left: 5.0em">Specifies an alternate root directory for the filter, pre-filter, and other support file checks.
+<dt><b>-W constraints</b>
+<dd style="margin-left: 5.0em">Report all UIConstraint errors as warnings.
+<dt><b>-W defaults</b>
+<dd style="margin-left: 5.0em">Except for size-related options, report all default option errors as warnings.
+<dt><b>-W filters</b>
+<dd style="margin-left: 5.0em">Report all filter errors as warnings.
+<dt><b>-W profiles</b>
+<dd style="margin-left: 5.0em">Report all profile errors as warnings.
+<dt><b>-W sizes</b>
+<dd style="margin-left: 5.0em">Report all media size errors as warnings.
+<dt><b>-W translations</b>
+<dd style="margin-left: 5.0em">Report all translation errors as warnings.
+<dt><b>-W all</b>
+<dd style="margin-left: 5.0em">Report all of the previous errors as warnings.
+<dt><b>-W none</b>
+<dd style="margin-left: 5.0em">Report all of the previous errors as errors.
+<dt><b>-q</b>
+<dd style="margin-left: 5.0em">Specifies that no information should be displayed.
+<dt><b>-r</b>
+<dd style="margin-left: 5.0em">Relaxes the PPD conformance requirements so that common whitespace, control character, and formatting problems are not treated as hard errors.
+<dt><b>-v</b>
+<dd style="margin-left: 5.0em">Specifies that detailed conformance testing results should be displayed rather than the concise PASS/FAIL/ERROR status.
+<dt><b>-vv</b>
+<dd style="margin-left: 5.0em">Specifies that all information in the PPD file should be displayed in addition to the detailed conformance testing results.
 </dl>
 <p>The <i>-q</i>, <i>-v</i>, and <i>-vv</i> options are mutually exclusive.
 <h2 class="title"><a name="EXIT_STATUS">Exit Status</a></h2>
-<i>cupstestppd</i> returns zero on success and non-zero on error. The
-error codes are as follows:
-<dl>
+<b>cupstestppd</b> returns zero on success and non-zero on error.
+The error codes are as follows:
+<dl class="man">
 <dt>1
-</dt>
-<dd></dd>
-<dd>Bad command-line arguments or missing PPD filename.
-</dd>
+<dd style="margin-left: 5.0em">Bad command-line arguments or missing PPD filename.
 <dt>2
-</dt>
-<dd></dd>
-<dd>Unable to open or read PPD file.
-</dd>
+<dd style="margin-left: 5.0em">Unable to open or read PPD file.
 <dt>3
-</dt>
-<dd></dd>
-<dd>The PPD file contains format errors that cannot be skipped.
-</dd>
+<dd style="margin-left: 5.0em">The PPD file contains format errors that cannot be skipped.
 <dt>4
-</dt>
-<dd></dd>
-<dd>The PPD file does not conform to the Adobe PPD specification.
-</dd>
+<dd style="margin-left: 5.0em">The PPD file does not conform to the Adobe PPD specification.
 </dl>
 <h2 class="title"><a name="EXAMPLES">Examples</a></h2>
-The following command will test all PPD files under the current
-directory and print the names of each file that does not
-conform:
-<pre>
+The following command will test all PPD files under the current directory and print the names of each file that does not conform:
+<pre class="man">
 
     find . -name \*.ppd \! -exec cupstestppd -q '{}' \; -print
 
 </pre>
-The next command tests all PPD files under the current directory
-and print detailed conformance testing results for the files
-that do not conform:
-<pre>
+The next command tests all PPD files under the current directory and print detailed conformance testing results for the files that do not conform:
+<pre class="man">
 
     find . -name \*.ppd \! -exec cupstestppd -q '{}' \; \
         -exec cupstestppd -v '{}' \;
-
 </pre>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
-<br>
+<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>,
 Adobe PostScript Printer Description File Format Specification, Version 4.3.
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index b4ca60975de9580f740276e34ce6e8fe7fcca89e..1ed2a9595a511e17d3f6e8152db1724a652e48c0 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 filter - cups file conversion filter interface
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>filter
-</b>job user title num-copies options [
-<i>filename
-</i>]
+<b>filter</b>
+<i>job</i>
+<i>user</i>
+<i>title</i>
+<i>num-copies</i>
+<i>options</i>
+[
+<i>filename</i>
+]
+<pre class="man">
+
+<b>#include &lt;cups/cups.h></b>
+
+<b>ssize_t cupsBackChannelRead</b>(<b>char *</b><i>buffer</i>, <b>size_t </b><i>bytes</i>,
+                            <b>double </b><i>timeout</i>);
+
+<b>cups_sc_status_t cupsSideChannelDoRequest</b>(<b>cups_sc_command_t </b><i>command</i>,
+                                          <b>char *</b><i>data</i>, <b>int *</b><i>datalen</i>,
+                                          <b>double </b><i>timeout</i>);
+
+<b>#include &lt;cups/ppd.h></b>
+
+<b>const char *cupsGetOption</b>(<b>const char *</b><i>name</i>, <b>int </b><i>num_options</i>,
+                 <b>cups_option_t *</b><i>options</i>);
+
+<b>int cupsMarkOptions</b>(<b>ppd_file_t *</b><i>ppd</i>, <b>int </b><i>num_options</i>,
+                    <b>cups_option_t *</b><i>options</i>);
+
+<b>int cupsParseOptions</b>(<b>const char *</b><i>arg</i>, <b>int </b><i>num_options</i>,
+                     <b>cups_option_t **</b><i>options</i>);
+
+<b>ppd_choice_t *ppdFindMarkedChoice</b>(<b>ppd_file_t *</b><i>ppd</i>, <b>const char *</b><i>keyword</i>);
+
+<b>void ppdMarkDefaults</b>(<b>ppd_file_t *</b><i>ppd</i>);
+
+<b>ppd_file_t *ppdOpenFile</b>(<b>const char *</b><i>filename</i>);
+</pre>
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The CUPS filter interface provides a standard method for adding support for
-new document types to CUPS. Each filter is capable of converting from one
-or more input formats to another format that can either be printed directly
-or piped into another filter to get it to a printable format.
-<p>Filters <b>must</b> be capable of reading from a filename on the command-line
-or from the standard input, copying the standard input to a temporary
-file as required by the file format. All output <b>must</b> be sent to the
-standard output.
-<p>The command name (argv[0]) is set to the name of the destination printer but is
-also available in the PRINTER environment variable.
-<h2 class="title"><a name="WARNING">Warning</a></h2>
-CUPS filters are not meant to be run directly by the user. Aside from the legacy
-System V interface issues (argv[0] 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. 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'>cupsfilter(8)</a> program to use the
-appropriate filters to do the conversions you need.
-<h2 class="title"><a name="OPTIONS">Options</a></h2>
-Options passed on the command-line typically do not include the default choices
-the printer's PPD file. In addition, some options may be specified in multiple
-ways - "landscape" is a synonym for "orientation-requested=4", "media" is a
-synonym for "PageSize", "PageRegion", "InputSlot", and "MediaType", and "sides"
-is a synonym for the various "Duplex" options. Non-raster filters <b>must</b>
-support both explicit and implicit specification of PPD options - use the
-ppdMarkDefaults and cupsMarkOptions functions in the CUPS library to use the
-correct mapping, and ppdFindMarkedChoice to get the user-selected choice.
-<p>Raster filters should use option choices set through the raster page header, as
-those reflect the options in effect for a given page. Options specified on the
-command-line determine the default values for the entire job, which can be
-overridden on a per-page basis.
+The CUPS filter interface provides a standard method for adding support for new document types or printers to CUPS.
+Each filter is capable of converting from one or more input formats to another format that can either be printed directly or piped into another filter to get it to a printable format.
+<p>Filters <b>MUST</b> be capable of reading from a filename on the command-line or from the standard input, copying the standard input to a temporary file as required by the file format.
+All output <b>MUST</b> be sent to the standard output.
+Filters <b>MUST NOT</b> attempt to communicate directly with the printer, other processes, or other services.
+<p>The command name (<i>argv[0]</i>) is set to the name of the destination printer but is also available in the <b>PRINTER</b><i> environment variable.
+</i><h2 class="title"><a name="OPTIONS">Options</a></h2>
+Options are passed in <i>argv[5]</i> and are encoded from the corresponding IPP attributes used when the job was submitted. Use the
+<b>cupsParseOptions</b>()
+function to load the options into a <b>cups_option_t</b> array and the
+<b>cupsGetOption</b>()
+function to get the value of a specific attribute.
+Be careful to look for common aliases of IPP attributes such as "lansdscape" for the IPP "orientation-requested" attribute.
+<p>Options passed on the command-line typically do not include the default choices the printer's PPD file. Use the
+<b>ppdMarkDefaults</b>()
+and
+<b>cupsMarkOptions</b>()
+functions in the CUPS library to apply the options to the PPD defaults and map any IPP attributes to the corresponding PPD options.
+Use
+<b>ppdFindMarkedChoice</b>()
+to get the user-selected choice for a PPD option. For example, a filter might use the following code to determine the current value of the <b>Duplex</b> PPD option:
+<pre class="man">
+
+    ppd_file_t *ppd = ppdOpenFile(getenv("PPD"));
+    cups_option_t *options = NULL;
+    int num_options = cupsParseOptions(argv[5], 0, &amp;options);
+
+    ppdMarkDefaults(ppd);
+    cupsMarkOptions(ppd, num_options, options);
+
+    ppd_choice_t *choice = ppdFindMarkedChoice(ppd, "Duplex");
+</pre>
+<p>Raster filters should use option choices set through the raster page header, as those reflect the options in effect for a given page.
+Options specified on the command-line determine the default values for the entire job, which can be overridden on a per-page basis.
 <h2 class="title"><a name="LOG_MESSAGES">Log Messages</a></h2>
-Messages sent to stderr are generally logged to
-printer-state-message attribute and the current <i>ErrorLog</i>.
+Messages sent to the standard error are generally stored in the printer's "printer-state-message" attribute and the current <b>ErrorLog</b> file.
 Each line begins with a standard prefix:
-<dl>
-<dt>ALERT: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "alert" log level.
-</dd>
-<dt>ATTR: attribute=value [attribute=value]
-</dt>
-<dd></dd>
-<dd>Sets the named job or printer attribute(s). The following job attributes can be
-set: "job-media-progress". The following printer attributes can be set:
+<dl class="man">
+<dt><b>ALERT: </b><i>message</i>
+<dd style="margin-left: 5.0em">Sets the "printer-state-message" attribute and adds the specified message to the current <b>ErrorLog</b> using the "alert" log level.
+<dt><b>ATTR: </b><i>attribute=value </i>[ <i>... attribute=value</i>]
+<dd style="margin-left: 5.0em">Sets the named job or printer attribute(s). The following job attributes can be set: "job-media-progress". The following printer attributes can be set:
 "auth-info-required", "marker-colors", "marker-high-levels", "marker-levels",
 "marker-low-levels", "marker-message", "marker-names", "marker-types",
 "printer-alert", and "printer-alert-description".
-</dd>
-<dt>CRIT: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "critical" log level.
-</dd>
-<dt>DEBUG: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "debug" log level.
-</dd>
-<dt>DEBUG2: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "debug2" log level.
-</dd>
-<dt>EMERG: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "emergency" log level.
-</dd>
-<dt>ERROR: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "error" log level.
-</dd>
-<dt>INFO: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute. If the current <i>LogLevel</i>
-is set to "debug2", also adds the specified message to the
-current <i>ErrorLog</i> using the "info" log level.
-</dd>
-<dt>NOTICE: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "notice" log level.
-</dd>
-<dt>PAGE: page-number #-copies
-</dt>
-<dd></dd>
-<dt>PAGE: total #-pages
-</dt>
-<dd></dd>
-<dd>Adds an entry to the current <i>PageLog</i>. The first form adds
-#-copies to the job-media-sheets-completed attribute. The second
-form sets the job-media-sheets-completed attribute to #-pages.
-</dd>
-<dt>PPD: Keyword=Value ... KeywordN=Value
-</dt>
-<dd></dd>
-<dd>Sets the named keywords in the printer's PPD file. This is typically
-used to update default option keywords such as DefaultPageSize and
-the various installable options in the PPD file.
-</dd>
-<dt>STATE: printer-state-reason [printer-state-reason ...]
-</dt>
-<dd></dd>
-<dt>STATE: + printer-state-reason [printer-state-reason ...]
-</dt>
-<dd></dd>
-<dt>STATE: - printer-state-reason [printer-state-reason ...]
-</dt>
-<dd></dd>
-<dd>Sets, adds, or removes printer-state-reason keywords to the
-current queue. Typically this is used to indicate media, ink, and
-toner conditions on a printer.
-</dd>
-<dt>WARNING: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "warning" log level.
-</dd>
+<dt><b>CRIT: </b><i>message</i>
+<dd style="margin-left: 5.0em">Sets the "printer-state-message" attribute and adds the specified message to the current <b>ErrorLog</b> using the "critical" log level.
+<dt><b>DEBUG: </b><i>message</i>
+<dd style="margin-left: 5.0em">Adds the specified message to the current <b>ErrorLog</b> using the "debug" log level.
+<b>DEBUG</b> messages are never stored in the "printer-state-message" attribute.
+<dt><b>DEBUG2: </b><i>message</i>
+<dd style="margin-left: 5.0em"><br>
+Adds the specified message to the current <b>ErrorLog</b> using the "debug2" log level.
+<b>DEBUG2</b> messages are never stored in the "printer-state-message" attribute.
+<dt><b>EMERG: </b><i>message</i>
+<dd style="margin-left: 5.0em">Sets the "printer-state-message" attribute and adds the specified message to the current <b>ErrorLog</b> using the "emergency" log level.
+<dt><b>ERROR:</b><i> message</i>
+<dd style="margin-left: 5.0em">Sets the "printer-state-message" attribute and adds the specified message to the current <b>ErrorLog</b> using the "error" log level.
+<dt><b>INFO:</b><i> message</i>
+<dd style="margin-left: 5.0em">Sets the "printer-state-message" attribute. If the current <b>LogLevel</b> is set to "debug2", also adds the specified message to the current <b>ErrorLog</b> using the "info" log level.
+<dt><b>NOTICE:</b><i> message</i>
+<dd style="margin-left: 5.0em">Sets the "printer-state-message" attribute and adds the specified message to the current <b>ErrorLog</b> using the "notice" log level.
+<dt><b>PAGE:</b><i> page-number #-copies</i>
+<dd style="margin-left: 5.0em"><dt><b>PAGE:</b><i> total #-pages</i>
+<dd style="margin-left: 5.0em">Adds an entry to the current <b>PageLog</b>. The first form adds <i>#-copies</i> to the "job-media-sheets-completed" attribute. The second form sets the "job-media-sheets-completed" attribute to <i>#-pages</i>.
+<dt><b>PPD:</b><i> Keyword=Value</i> [ <i>... KeywordN=Value</i> ]
+<dd style="margin-left: 5.0em">Sets the named keywords in the printer's PPD file. This is typically used to update default option keywords such as <b>DefaultPageSize</b> and the various installable options in the PPD file.
+<dt><b>STATE:</b><i> printer-state-reason </i>[ <i>... printer-state-reason</i> ]
+<dd style="margin-left: 5.0em"><dt><b>STATE: +</b><i> printer-state-reason </i>[ <i>... printer-state-reason</i> ]
+<dd style="margin-left: 5.0em"><dt><b>STATE: -</b><i> printer-state-reason </i>[ <i>... printer-state-reason</i> ]
+<dd style="margin-left: 5.0em">Sets, adds, or removes "printer-state-reason" keywords for the current queue. Typically this is used to indicate media, ink, and toner conditions on a printer.
+<dt><b>WARNING:</b><i> message</i>
+<dd style="margin-left: 5.0em">Sets the "printer-state-message" attribute and adds the specified message to the current <b>ErrorLog</b> using the "warning" log level.
 </dl>
 <h2 class="title"><a name="ENVIRONMENT_VARIABLES">Environment Variables</a></h2>
 The following environment variables are defined by the CUPS
 server when executing the filter:
-<dl>
-<dt>CHARSET
-</dt>
-<dd></dd>
-<dd>The default text character set, typically utf-8.
-</dd>
-<dt>CLASS
-</dt>
-<dd></dd>
-<dd>When a job is submitted to a printer class, contains the name of
-the destination printer class. Otherwise this environment
-variable will not be set.
-</dd>
-<dt>CONTENT_TYPE
-</dt>
-<dd></dd>
-<dd>The MIME type associated with the file (e.g.
-application/postscript).
-</dd>
-<dt>CUPS_CACHEDIR
-</dt>
-<dd></dd>
-<dd>The directory for semi-persistent cache files can be found.
-</dd>
-<dt>CUPS_DATADIR
-</dt>
-<dd></dd>
-<dd>The directory where data files can be found.
-</dd>
-<dt>CUPS_FILETYPE
-</dt>
-<dd></dd>
-<dd>The type of file being printed: "job-sheet" for a banner page and "document"
+<dl class="man">
+<dt><b>CHARSET</b>
+<dd style="margin-left: 5.0em">The default text character set, typically "utf-8".
+<dt><b>CLASS</b>
+<dd style="margin-left: 5.0em">When a job is submitted to a printer class, contains the name of the destination printer class. Otherwise this environment variable will not be set.
+<dt><b>CONTENT_TYPE</b>
+<dd style="margin-left: 5.0em">The MIME media type associated with the submitted job file, for example "application/postscript".
+<dt><b>CUPS_CACHEDIR</b>
+<dd style="margin-left: 5.0em">The directory where semi-persistent cache files can be found and stored.
+<dt><b>CUPS_DATADIR</b>
+<dd style="margin-left: 5.0em">The directory where data files can be found.
+<dt><b>CUPS_FILETYPE</b>
+<dd style="margin-left: 5.0em">The type of file being printed: "job-sheet" for a banner page and "document"
 for a regular print file.
-</dd>
-<dt>CUPS_MAX_MESSAGE
-</dt>
-<dd></dd>
-<dd>The maximum size of a message sent to stderr, including any leading prefix and
-the trailing newline.
-</dd>
-<dt>CUPS_SERVERROOT
-</dt>
-<dd></dd>
-<dd>The root directory of the server.
-</dd>
-<dt>DEVICE_URI
-</dt>
-<dd></dd>
-<dd>The device-uri associated with the printer.
-</dd>
-<dt>FINAL_CONTENT_TYPE
-</dt>
-<dd></dd>
-<dd>The MIME type associated with the printer (e.g.
-application/vnd.cups-postscript).
-</dd>
-<dt>LANG
-</dt>
-<dd></dd>
-<dd>The default language locale (typically C or en).
-</dd>
-<dt>PATH
-</dt>
-<dd></dd>
-<dd>The standard execution path for external programs that may be run by
-the filter.
-</dd>
-<dt>PPD
-</dt>
-<dd></dd>
-<dd>The full pathname of the PostScript Printer Description (PPD)
-file for this printer.
-</dd>
-<dt>PRINTER
-</dt>
-<dd></dd>
-<dd>The name of the printer.
-</dd>
-<dt>RIP_CACHE
-</dt>
-<dd></dd>
-<dd>The recommended amount of memory to use for Raster Image
-Processors (RIPs).
-</dd>
-<dt>SOFTWARE
-</dt>
-<dd></dd>
-<dd>The name and version number of the server (typically CUPS/1.2).
-</dd>
-<dt>TZ
-</dt>
-<dd></dd>
-<dd>The timezone of the server.
-</dd>
-<dt>USER
-</dt>
-<dd></dd>
-<dd>The user executing the filter, typically "lp" or "root"; consult the
-<a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a> file for the current setting.
-</dd>
+<dt><b>CUPS_MAX_MESSAGE</b>
+<dd style="margin-left: 5.0em">The maximum size of a message sent to <i>stderr</i>, including any leading prefix and the trailing newline.
+<dt><b>CUPS_SERVERROOT</b>
+<dd style="margin-left: 5.0em">The root directory of the server.
+<dt><b>FINAL_CONTENT_TYPE</b>
+<dd style="margin-left: 5.0em">The MIME media type associated with the output destined for the printer, for example "application/vnd.cups-postscript".
+<dt><b>LANG</b>
+<dd style="margin-left: 5.0em">The default language locale (typically C or en).
+<dt><b>PATH</b>
+<dd style="margin-left: 5.0em">The standard execution path for external programs that may be run by the filter.
+<dt><b>PPD</b>
+<dd style="margin-left: 5.0em">The full pathname of the PostScript Printer Description (PPD) file for this printer.
+<dt><b>PRINTER</b>
+<dd style="margin-left: 5.0em">The name of the printer.
+<dt><b>RIP_CACHE</b>
+<dd style="margin-left: 5.0em">The recommended amount of memory to use for Raster Image Processors (RIPs).
+<dt><b>SOFTWARE</b>
+<dd style="margin-left: 5.0em">The name and version number of the server (typically CUPS/<i>major.minor</i>).
+<dt><b>TZ</b>
+<dd style="margin-left: 5.0em">The timezone of the server.
+<dt><b>USER</b>
+<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="COMPATIBILITY">Compatibility</a></h2>
+<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
-<a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a> command using the <i>-i</i> option.
+<i>lpadmin(8)</i> command using the <i>-i</i> option.
+<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.
+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>
+program to use the appropriate filters to do the conversions you need.
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-backend.html?TOPIC=Man+Pages'>backend(7)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-cupsfilter.html?TOPIC=Man+Pages'>cupsfilter(8)</a>,
+<a href="man-backend.html?TOPIC=Man+Pages"><b>backend</b>(7),</a>
+<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1),</a>
+<a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-cupsfilter.html?TOPIC=Man+Pages"><b>cupsfilter</b>(8),</a>
 <br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index e614ad4dadeb671d8e6346b04d97fd2252bc5365..b946c987ed986aedea3a7c43b240a20f2996c486 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 ippfind - find internet printing protocol printers
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>ippfind
-</b>[
-<i>options
-</i>] regtype[,subtype][.domain.] ... [
-<i>expression ...
-</i>]
-<b>ippfind
-</b>[
-<i>options
-</i>] name[.regtype[.domain.]] ... [
-<i>expression ...
-</i>]
-<b>ippfind
-</b>--help
-<b>ippfind
-</b>--version
-<h2 class="title"><a name="OPTIONS">Options</a></h2>
-<dl>
-<dt>--help
-</dt>
-<dd>Show program help
-</dd>
-<dt>--version
-</dt>
-<dd>Show program version
-</dd>
-<dt>-4
-</dt>
-<dd>Use IPv4 when listing
-</dd>
-<dt>-6
-</dt>
-<dd>Use IPv6 when listing
-</dd>
-<dt>-T seconds
-</dt>
-<dd>Specify find timeout in seconds. If 1 or less, <i>ippfind</i> stops as soon as it thinks it has found everything. The default is 1 second.
-</dd>
-<dt>-V version
-</dt>
-<dd>Specifies the IPP version when listing. Supported values are 1.1, 2.0, 2.1, and 2.2.
-
-</dd>
-</dl>
+<b>ippfind</b>
+[
+<i>options</i>
+] <i>regtype</i>[<b>,</b><i>subtype</i>][<b>.</b><i>domain</i><b>.</b>] ... [
+<i>expression</i>
+ ... ]
+<br>
+<b>ippfind</b>
+[
+<i>options</i>
+] <i>name</i>[<b>.</b><i>regtype</i>[<b>.</b><i>domain</i><b>.</b>]] ... [
+<i>expression</i>
+ ... ]
+<br>
+<b>ippfind</b>
+<b>--help</b>
+<br>
+<b>ippfind</b>
+<b>--version</b>
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>ippfind</i> finds services registered with a DNS server or available through local devices. Its primary purpose is to find IPP printers and show their URIs, show their current status, or run commands. For example, to show the status of all registered IPP printers on your network, run:
-<pre>
-    ippfind --ls
-</pre>
-Similarly, to send a PostScript test page to every PostScript printer, run:
-<pre>
-    ippfind --txt-pdl application/postscript --exec ipptool \
-        -f onepage-letter.ps '{}' print-job.test \;
-</pre>
-
-<h2 class="title"><a name="REGISTRATION_TYPES">Registration Types</a></h2>
-<i>ippfind</i> supports the following registration types:
-<dl>
+<b>ippfind</b> finds services registered with a DNS server or available through local devices.
+Its primary purpose is to find IPP printers and show their URIs, show their current status, or run commands.
+<h3><a name="REGISTRATION_TYPES">Registration Types</a></h3>
+<b>ippfind</b> supports the following registration types:
+<dl class="man">
 <dt>_http._tcp
-</dt>
-<dd>HyperText Transport Protocol (HTTP, RFC 2616)
-</dd>
+<dd style="margin-left: 5.0em">HyperText Transport Protocol (HTTP, RFC 2616)
 <dt>_https._tcp
-</dt>
-<dd>Secure HyperText Transport Protocol (HTTPS, RFC 2818)
-</dd>
+<dd style="margin-left: 5.0em">Secure HyperText Transport Protocol (HTTPS, RFC 2818)
 <dt>_ipp._tcp
-</dt>
-<dd>Internet Printing Protocol (IPP, RFC 2911)
-</dd>
+<dd style="margin-left: 5.0em">Internet Printing Protocol (IPP, RFC 2911)
 <dt>_ipps._tcp
-</dt>
-<dd>Secure Internet Printing Protocol (IPPS, draft)
-</dd>
+<dd style="margin-left: 5.0em">Secure Internet Printing Protocol (IPPS, draft)
 <dt>_printer._tcp
-</dt>
-<dd>Line Printer Daemon (LPD, RFC 1179)
-
-</dd>
+<dd style="margin-left: 5.0em">Line Printer Daemon (LPD, RFC 1179)
 </dl>
-<h2 class="title"><a name="EXPRESSIONS">Expressions</a></h2>
-<i>ippfind</i> supports expressions much like the <i>find(1)</i> utility. However, unlike <i>find</i>, <i>ippfind</i> uses POSIX regular expressions instead of shell filename matching patterns. If --exec, -l, --ls, -p, --print, --print-name, -q, --quiet, -s, or -x is not specified, <i>ippfind</i> adds --print to print the service URI of anything it finds. The following expressions are supported:
-<dl>
-<dt>-d regex
-</dt>
-<dd></dd>
-<dt>--domain regex
-</dt>
-<dd>True if the domain matches the given regular expression.
-</dd>
-<dt>--false
-</dt>
-<dd>Always false.
-</dd>
-<dt>-h regex
-</dt>
-<dd></dd>
-<dt>--host regex
-</dt>
-<dd>True is the hostname matches the given regular expression.
-</dd>
-<dt>-l
-</dt>
-<dd></dd>
-<dt>--ls
-</dt>
-<dd>Lists attributes returned by Get-Printer-Attributes for IPP printers and traditional <i>find</i> "-ls" output for HTTP URLs. The result is true if the URI is accessible, false otherwise.
-</dd>
-<dt>--local
-</dt>
-<dd>True if the service is local to this computer.
-</dd>
-<dt>-n regex
-</dt>
-<dd></dd>
-<dt>--name regex
-</dt>
-<dd>True if the service instance name matches the given regular expression.
-</dd>
-<dt>--path regex
-</dt>
-<dd>True if the URI resource path matches the given regular expression.
-</dd>
-<dt>-P number[-number]
-</dt>
-<dd></dd>
-<dt>--port number[-number]
-</dt>
-<dd>True if the port matches the given number or range.
-</dd>
-<dt>-p
-</dt>
-<dd></dd>
-<dt>--print
-</dt>
-<dd>Prints the URI if the result of previous expressions is true. The result is always true.
-</dd>
-<dt>-q
-</dt>
-<dd></dd>
-<dt>--quiet
-</dt>
-<dd>Quiet mode - just returns the exit codes below.
-</dd>
-<dt>-r
-</dt>
-<dd></dd>
-<dt>--remote
-</dt>
-<dd>True if the service is not local to this computer.
-</dd>
-<dt>-s
-</dt>
-<dd></dd>
-<dt>--print-name
-</dt>
-<dd>Prints the service instance name if the result of previous expressions is true. The result is always true.
-</dd>
-<dt>--true
-</dt>
-<dd>Always true.
-</dd>
-<dt>-t key
-</dt>
-<dd></dd>
-<dt>--txt key
-</dt>
-<dd>True if the TXT record contains the named key.
-</dd>
-<dt>--txt-<i>key</i> regex
-</dt>
-<dd>True if the TXT record contains the named key and matches the given regular
-expression.
-</dd>
-<dt>-u regex
-</dt>
-<dd></dd>
-<dt>--uri regex
-</dt>
-<dd>True if the URI matches the given regular expression.
-</dd>
-<dt>-x utility [argument ...] ;
-</dt>
-<dd></dd>
-<dt>--exec utility [argument ...] ;
-</dt>
-<dd>Executes the specified program if the current result is true. "{foo}" arguments are replaced with the corresponding value - see SUBSTITUTIONS below.
-</dd>
+<h3><a name="EXPRESSIONS">Expressions</a></h3>
+<b>ippfind</b> supports expressions much like the
+<b>find</b>(1)
+utility.
+However, unlike
+<b>find</b>(1),
+<b>ippfind</b> uses POSIX regular expressions instead of shell filename matching patterns.
+If <i>--exec</i>, <i>-l</i>, <i>--ls</i>, <i>-p</i>, <i>--print</i>, <i>--print-name</i>, <i>-q</i>, <i>--quiet</i>, <i>-s</i>, or <i>-x</i> is not specified, <b>ippfind</b> adds <i>--print</i> to print the service URI of anything it finds.
+The following expressions are supported:
+<dl class="man">
+<dt><b>-d </b><i>regex</i>
+<dd style="margin-left: 5.0em"><dt><b>--domain </b><i>regex</i>
+<dd style="margin-left: 5.0em">True if the domain matches the given regular expression.
+<dt><b>--false</b>
+<dd style="margin-left: 5.0em">Always false.
+<dt><b>-h </b><i>regex</i>
+<dd style="margin-left: 5.0em"><dt><b>--host </b><i>regex</i>
+<dd style="margin-left: 5.0em">True is the hostname matches the given regular expression.
+<dt><b>-l</b>
+<dd style="margin-left: 5.0em"><dt><b>--ls</b>
+<dd style="margin-left: 5.0em">Lists attributes returned by Get-Printer-Attributes for IPP printers and traditional <i>find</i> "-ls" output for HTTP URLs.
+The result is true if the URI is accessible, false otherwise.
+<dt><b>--local</b>
+<dd style="margin-left: 5.0em">True if the service is local to this computer.
+<dt><b>-n </b><i>regex</i>
+<dd style="margin-left: 5.0em"><dt><b>--name </b><i>regex</i>
+<dd style="margin-left: 5.0em">True if the service instance name matches the given regular expression.
+<dt><b>--path </b><i>regex</i>
+<dd style="margin-left: 5.0em">True if the URI resource path matches the given regular expression.
+<dt><b>-P </b><i>number</i>[<b>-</b><i>number</i>]
+<dd style="margin-left: 5.0em"><dt><b>--port </b><i>number</i>[<b>-</b><i>number</i>]
+<dd style="margin-left: 5.0em">True if the port matches the given number or range.
+<dt><b>-p</b>
+<dd style="margin-left: 5.0em"><dt><b>--print</b>
+<dd style="margin-left: 5.0em">Prints the URI if the result of previous expressions is true.
+The result is always true.
+<dt><b>-q</b>
+<dd style="margin-left: 5.0em"><dt><b>--quiet</b>
+<dd style="margin-left: 5.0em">Quiet mode - just returns the exit codes below.
+<dt><b>-r</b>
+<dd style="margin-left: 5.0em"><dt><b>--remote</b>
+<dd style="margin-left: 5.0em">True if the service is not local to this computer.
+<dt><b>-s</b>
+<dd style="margin-left: 5.0em"><dt><b>--print-name</b>
+<dd style="margin-left: 5.0em">Prints the service instance name if the result of previous expressions is true.
+The result is always true.
+<dt><b>--true</b>
+<dd style="margin-left: 5.0em">Always true.
+<dt><b>-t </b><i>key</i>
+<dd style="margin-left: 5.0em"><dt><b>--txt </b><i>key</i>
+<dd style="margin-left: 5.0em">True if the TXT record contains the named key.
+<dt><b>--txt-</b><i>key regex</i>
+<dd style="margin-left: 5.0em">True if the TXT record contains the named key and matches the given regular expression.
+<dt><b>-u </b><i>regex</i>
+<dd style="margin-left: 5.0em"><dt><b>--uri </b><i>regex</i>
+<dd style="margin-left: 5.0em">True if the URI matches the given regular expression.
+<dt><b>-x </b><i>utility </i>[ <i>argument </i>... ] <b>;</b>
+<dd style="margin-left: 5.0em"><dt><b>--exec </b><i>utility </i>[ <i>argument </i>... ] <b>;</b>
+<dd style="margin-left: 5.0em">Executes the specified program if the current result is true.
+"{foo}" arguments are replaced with the corresponding value - see SUBSTITUTIONS below.
 </dl>
 <p>Expressions may also contain modifiers:
-<dl>
-<dt>( expression )
-</dt>
-<dd>Group the result of expressions.
-</dd>
-<dt>! expression
-</dt>
-<dd></dd>
-<dt>--not expression
-</dt>
-<dd>Unary NOT of the expression.
-</dd>
-<dt>expression expression
-</dt>
-<dd></dd>
-<dt>expression --and expression
-</dt>
-<dd>Logical AND of expressions.
-</dd>
-<dt>expression --or expression
-</dt>
-<dd>Logical OR of expressions.
-
-</dd>
+<dl class="man">
+<dt><b>( </b><i>expression </i><b>)</b>
+<dd style="margin-left: 5.0em">Group the result of expressions.
+<dt><b>! </b><i>expression</i>
+<dd style="margin-left: 5.0em"><dt><b>--not </b><i>expression</i>
+<dd style="margin-left: 5.0em">Unary NOT of the expression.
+<dt><i>expression expression</i>
+<dd style="margin-left: 5.0em"><dt><i>expression </i><b>--and </b><i>expression</i>
+<dd style="margin-left: 5.0em">Logical AND of expressions.
+<dt><i>expression </i><b>--or </b><i>expression</i>
+<dd style="margin-left: 5.0em">Logical OR of expressions.
 </dl>
-<h2 class="title"><a name="SUBSTITUTIONS">Substitutions</a></h2>
-The substitutions for "{foo}" in -e and --exec are:
-<dl>
-<dt>{}
-</dt>
-<dd>URI
-</dd>
-<dt>{service_domain}
-</dt>
-<dd>Domain name, e.g., "example.com.", "local.", etc.
-</dd>
-<dt>{service_hostname}
-</dt>
-<dd>Fully-qualified domain name, e.g., "printer.example.com.", "printer.local.", etc.
-</dd>
-<dt>{service_name}
-</dt>
-<dd>Service instance name, e.g., "My Fine Printer".
-</dd>
-<dt>{service_port}
-</dt>
-<dd>Port number for server, typically 631 for IPP and 80 for HTTP.
-</dd>
-<dt>{service_regtype}
-</dt>
-<dd>DNS-SD registration type, e.g., "_ipp._tcp", "_http._tcp", etc.
-</dd>
-<dt>{service_scheme}
-</dt>
-<dd>URI scheme for DNS-SD registration type, e.g., "ipp", "http", etc.
-</dd>
-<dt>{service_uri}
-</dt>
-<dd>URI for service, e.g., "ipp://printer.local./ipp/print", "<a href='http://printer.local./",'>http://printer.local./",</a> etc.
-</dd>
-<dt>{txt_<i>key</i>}
-</dt>
-<dd>Value of TXT record <i>key</i> (lowercase).
-
-</dd>
+<h3><a name="SUBSTITUTIONS">Substitutions</a></h3>
+The substitutions for "{foo}" in <i>-e</i> and <i>--exec</i> are:
+<dl class="man">
+<dt><b>{service_domain}</b>
+<dd style="margin-left: 5.0em">Domain name, e.g., "example.com.", "local.", etc.
+<dt><b>{service_hostname}</b>
+<dd style="margin-left: 5.0em">Fully-qualified domain name, e.g., "printer.example.com.", "printer.local.", etc.
+<dt><b>{service_name}</b>
+<dd style="margin-left: 5.0em">Service instance name, e.g., "My Fine Printer".
+<dt><b>{service_port}</b>
+<dd style="margin-left: 5.0em">Port number for server, typically 631 for IPP and 80 for HTTP.
+<dt><b>{service_regtype}</b>
+<dd style="margin-left: 5.0em">DNS-SD registration type, e.g., "_ipp._tcp", "_http._tcp", etc.
+<dt><b>{service_scheme}</b>
+<dd style="margin-left: 5.0em">URI scheme for DNS-SD registration type, e.g., "ipp", "http", etc.
+<dt><b>{}</b>
+<dd style="margin-left: 5.0em"><dt><b>{service_uri}</b>
+<dd style="margin-left: 5.0em">URI for service, e.g., "ipp://printer.local./ipp/print", "<a href="http://printer.local./"">http://printer.local./"</a>, etc.
+<dt><b>{txt_</b><i>key</i><b>}</b>
+<dd style="margin-left: 5.0em">Value of TXT record <i>key</i> (lowercase).
 </dl>
-<h2 class="title"><a name="ENVIRONMENT_VARIABLES">Environment Variables</a></h2>
-When executing a program, <i>ippfind</i> sets the following environment variables for the matching service registration:
-<dl>
-<dt>IPPFIND_SERVICE_DOMAIN
-</dt>
-<dd>Domain name, e.g., "example.com.", "local.", etc.
-</dd>
-<dt>IPPFIND_SERVICE_HOSTNAME
-</dt>
-<dd>Fully-qualified domain name, e.g., "printer.example.com.", "printer.local.", etc.
-</dd>
-<dt>IPPFIND_SERVICE_NAME
-</dt>
-<dd>Service instance name, e.g., "My Fine Printer".
-</dd>
-<dt>IPPFIND_SERVICE_PORT
-</dt>
-<dd>Port number for server, typically 631 for IPP and 80 for HTTP.
-</dd>
-<dt>IPPFIND_SERVICE_REGTYPE
-</dt>
-<dd>DNS-SD registration type, e.g., "_ipp._tcp", "_http._tcp", etc.
-</dd>
-<dt>IPPFIND_SERVICE_SCHEME
-</dt>
-<dd>URI scheme for DNS-SD registration type, e.g., "ipp", "http", etc.
-</dd>
-<dt>IPPFIND_SERVICE_URI
-</dt>
-<dd>URI for service, e.g., "ipp://printer.local./ipp/print", "<a href='http://printer.local./",'>http://printer.local./",</a> etc.
-</dd>
-<dt>IPPFIND_TXT_<i>KEY</i>
-</dt>
-<dd>Values of TXT record <i>KEY</i> (uppercase).
-
-</dd>
+<h2 class="title"><a name="OPTIONS">Options</a></h2>
+<b>ippfind</b> supports the following options:
+<dl class="man">
+<dt><b>--help</b>
+<dd style="margin-left: 5.0em">Show program help.
+<dt><b>--version</b>
+<dd style="margin-left: 5.0em">Show program version.
+<dt><b>-4</b>
+<dd style="margin-left: 5.0em">Use IPv4 when listing.
+<dt><b>-6</b>
+<dd style="margin-left: 5.0em">Use IPv6 when listing.
+<dt><b>-T </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specify find timeout in seconds.
+If 1 or less, <b>ippfind</b> stops as soon as it thinks it has found everything.
+The default timeout is 1 second.
+<dt><b>-V </b><i>version</i>
+<dd style="margin-left: 5.0em">Specifies the IPP version when listing.
+Supported values are "1.1", "2.0", "2.1", and "2.2".
+</dl>
+<h2 class="title"><a name="EXIT_STATUS">Exit Status</a></h2>
+<b>ippfind</b> returns 0 if the result for all processed expressions is true, 1 if the result of any processed expression is false, 2 if browsing or any query or resolution failed, 3 if an undefined option or invalid expression was specified, and 4 if it ran out of memory.
+<h2 class="title"><a name="ENVIRONMENT">Environment</a></h2>
+When executing a program, <b>ippfind</b> sets the following environment variables for the matching service registration:
+<dl class="man">
+<dt><b>IPPFIND_SERVICE_DOMAIN</b>
+<dd style="margin-left: 5.0em">Domain name, e.g., "example.com.", "local.", etc.
+<dt><b>IPPFIND_SERVICE_HOSTNAME</b>
+<dd style="margin-left: 5.0em">Fully-qualified domain name, e.g., "printer.example.com.", "printer.local.", etc.
+<dt><b>IPPFIND_SERVICE_NAME</b>
+<dd style="margin-left: 5.0em">Service instance name, e.g., "My Fine Printer".
+<dt><b>IPPFIND_SERVICE_PORT</b>
+<dd style="margin-left: 5.0em">Port number for server, typically 631 for IPP and 80 for HTTP.
+<dt><b>IPPFIND_SERVICE_REGTYPE</b>
+<dd style="margin-left: 5.0em">DNS-SD registration type, e.g., "_ipp._tcp", "_http._tcp", etc.
+<dt><b>IPPFIND_SERVICE_SCHEME</b>
+<dd style="margin-left: 5.0em">URI scheme for DNS-SD registration type, e.g., "ipp", "http", etc.
+<dt><b>IPPFIND_SERVICE_URI</b>
+<dd style="margin-left: 5.0em">URI for service, e.g., "ipp://printer.local./ipp/print", "<a href="http://printer.local./"">http://printer.local./"</a>, etc.
+<dt><b>IPPFIND_TXT_fIKEYfR</b>
+<dd style="margin-left: 5.0em">Values of TXT record <i>KEY</i> (uppercase).
 </dl>
-<h2 class="title"><a name="EXIT_CODES">Exit Codes</a></h2>
-<i>ippfind</i> returns 0 if the result for all processed expressions is true, 1 if the result of any processed expression is false, 2 if browsing or any query or resolution failed, 3 if an undefined option or invalid expression was specified, and 4 if it ran out of memory.
+<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+To show the status of all registered IPP printers on your network, run:
+<pre class="man">
 
-<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-ipptool.html?TOPIC=Man+Pages'>ipptool(1)</a>
+    ippfind --ls
 
+</pre>
+Similarly, to send a PostScript test page to every PostScript printer, run:
+<pre class="man">
+
+    ippfind --txt-pdl application/postscript --exec ipptool
+      -f onepage-letter.ps '{}' print-job.test \;
+</pre>
+<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(1)</a>
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2013 by Apple Inc.
+Copyright &copy; 2013-2014 by Apple Inc.
 
 </body>
 </html>
index 5d3b5bea2a3986b95d8717b7304438c2fee6a9dd..fc6ac1b7028017f3ff34930491b955499af2b073 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 ipptool - perform internet printing protocol requests
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>ipptool
-</b>[ --help ] [ --stop-after-include-error ] [ --version ]
-[ -4 ] [ -6 ] [ -C ] [ -E ] [ -I ] [ -L ] [ -S ] [ -T
-<i>seconds
-</i>] [ -V
-<i>version
-</i>] [ -X ] [ -c ] [ -d
-<i>name=value
-</i>] [ -f
-<i>filename
-</i>] [ -i
-<i>seconds
-</i>] [ -n
-<i>repeat-count
-</i>] [ -q ] [ -t ] [ -v ]
-<i>URI
-</i><i>filename
-</i>[
-<i>... filenameN
-</i>]
+<b>ipptool</b>
+[
+<b>--help</b>
+] [
+<b>--stop-after-include-error</b>
+] [
+<b>--version</b>
+] [
+<b>-4</b>
+] [
+<b>-6</b>
+] [
+<b>-C</b>
+] [
+<b>-E</b>
+] [
+<b>-I</b>
+] [
+<b>-L</b>
+] [
+<b>-P</b>
+<i>filename.plist</i>
+] [
+<b>-S</b>
+] [
+<b>-T</b>
+<i>seconds</i>
+] [
+<b>-V</b>
+<i>version</i>
+] [
+<b>-X</b>
+] [
+<b>-c</b>
+] [
+<b>-d</b>
+<i>name=value</i>
+] [
+<b>-f</b>
+<i>filename</i>
+] [
+<b>-i</b>
+<i>seconds</i>
+] [
+<b>-n</b>
+<i>repeat-count</i>
+] [
+<b>-q</b>
+] [
+<b>-t</b>
+] [
+<b>-v</b><b>]</b>
+<i>printer-uri</i>
+<i>testfile</i>
+[ ...
+<i>testfile</i>
+]
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>ipptool</i> sends IPP requests to the specified URI and tests and/or displays the results. Each named file defines one or more requests, including the expected response status, attributes, and values. Output is either a plain text, formatted text, CSV, or XML report on the standard output, with a non-zero exit status indicating that one or more tests have failed. The file format is described in <a href='man-ipptoolfile.html?TOPIC=Man+Pages'>ipptoolfile(5)</a>.
+<b>ipptool</b>
+sends IPP requests to the specified
+<i>printer-uri</i>
+and tests and/or displays the results. Each named
+<i>testfile</i>
+defines one or more requests, including the expected response status, attributes, and values. Output is either a plain text, formatted text, CSV, or XML report on the standard output, with a non-zero exit status indicating that one or more tests have failed. The
+<i>testfile</i>
+format is described in
+<a href="man-ipptoolfile.html?TOPIC=Man+Pages"><b>ipptoolfile</b>(5).</a>
 <h2 class="title"><a name="OPTIONS">Options</a></h2>
-The following options are recognized by <i>ipptool</i>:
-<dl>
-<dt>--help
-</dt>
-<dd>Shows program help.
-</dd>
-<dt>--stop-after-include-error
-</dt>
-<dd>Tells <i>ipptool</i> to stop if an error occurs in an included file. Normally <i>ipptool</i> will continue with subsequent tests after the INCLUDE directive.
-</dd>
-<dt>--version
-</dt>
-<dd>Shows the version of <i>ipptool</i> being used.
-</dd>
-<dt>-4
-</dt>
-<dd>Specifies that <i>ipptool</i> must connect to the printer or server using IPv4.
-</dd>
-<dt>-6
-</dt>
-<dd>Specifies that <i>ipptool</i> must connect to the printer or server using IPv6.
-</dd>
-<dt>-C
-</dt>
-<dd>Specifies that requests should be sent using the HTTP/1.1 "Transfer-Encoding: chunked" header, which is required for conformance by all versions of IPP. The default is to use "Transfer-Encoding: chunked" for requests with attached files and "Content-Length:" for requests without attached files.
-</dd>
-<dt>-E
-</dt>
-<dd>Forces TLS encryption when connecting to the server using the HTTP "Upgrade" header.
-</dd>
-<dt>-I
-</dt>
-<dd>Specifies that <i>ipptool</i> will continue past errors.
-</dd>
-<dt>-L
-</dt>
-<dd>Specifies that requests should be sent using the HTTP/1.0 "Content-Length:" header, which is required for conformance by all versions of IPP. The default is to use "Transfer-Encoding: chunked" for requests with attached files and "Content-Length:" for requests without attached files.
-</dd>
-<dt>-S
-</dt>
-<dd>Forces (dedicated) SSL encryption when connecting to the server.
-</dd>
-<dt>-T seconds
-</dt>
-<dd>Specifies a timeout for IPP requests in seconds.
-</dd>
-<dt>-V version
-</dt>
-<dd>Specifies the default IPP version to use: 1.0, 1.1, 2.0, 2.1, or 2.2. If not specified, version 1.1 is used.
-</dd>
-<dt>-X
-</dt>
-<dd>Specifies that XML (Apple plist) output is desired instead of the plain text report. This option is incompatible with the <i>-i</i> (interval) and <i>-n</i> (repeat-count) options.
-</dd>
-<dt>-c
-</dt>
-<dd>Specifies that CSV (comma-separated values) output is desired instead of the plain text output.
-</dd>
-<dt>-d name=value
-</dt>
-<dd>Defines the named variable.
-</dd>
-<dt>-f filename
-</dt>
-<dd>Defines the default request filename for tests.
-</dd>
-<dt>-i seconds
-</dt>
-<dd>Specifies that the (last) file should be repeated at the specified interval. This option is incompatible with the <i>-X</i> (XML plist output) option.
-</dd>
-<dt>-l
-</dt>
-<dd>Specifies that plain text output is desired.
-</dd>
-<dt>-n repeat-count
-</dt>
-<dd>Specifies that the (last) file should be repeated the specified number of times. This option is incompatible with the <i>-X</i> (XML plist output) option.
-</dd>
-<dt>-t
-</dt>
-<dd>Specifies that CUPS test report output is desired instead of the plain text output.
-</dd>
-<dt>-v
-</dt>
-<dd>Specifies that all request and response attributes should be output in CUPS test mode (<i>-t</i>). This is the default for XML output.
-</dd>
+The following options are recognized by
+<b>ipptool:</b>
+<dl class="man">
+<dt><b>--help</b>
+<dd style="margin-left: 5.0em">Shows program help.
+<dt><b>--stop-after-include-error</b>
+<dd style="margin-left: 5.0em">Tells
+<b>ipptool</b>
+to stop if an error occurs in an included file. Normally
+<b>ipptool</b>
+will continue with subsequent tests after the INCLUDE directive.
+<dt><b>--version</b>
+<dd style="margin-left: 5.0em">Shows the version of
+<b>ipptool</b>
+being used.
+<dt><b>-4</b>
+<dd style="margin-left: 5.0em">Specifies that
+<b>ipptool</b>
+must connect to the printer or server using IPv4.
+<dt><b>-6</b>
+<dd style="margin-left: 5.0em">Specifies that
+<b>ipptool</b>
+must connect to the printer or server using IPv6.
+<dt><b>-C</b>
+<dd style="margin-left: 5.0em">Specifies that requests should be sent using the HTTP/1.1 "Transfer-Encoding: chunked" header, which is required for conformance by all versions of IPP. The default is to use "Transfer-Encoding: chunked" for requests with attached files and "Content-Length:" for requests without attached files.
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Forces TLS encryption when connecting to the server using the HTTP "Upgrade" header.
+<dt><b>-I</b>
+<dd style="margin-left: 5.0em">Specifies that
+<b>ipptool</b>
+will continue past errors.
+<dt><b>-L</b>
+<dd style="margin-left: 5.0em">Specifies that requests should be sent using the HTTP/1.0 "Content-Length:" header, which is required for conformance by all versions of IPP. The default is to use "Transfer-Encoding: chunked" for requests with attached files and "Content-Length:" for requests without attached files.
+<dt><b>-P</b><i> filename.plist</i>
+<dd style="margin-left: 5.0em">Specifies that the test results should be written to the named XML (Apple plist) file in addition to the plain text report. This option is incompatible with the <b>-i</b> (interval) and <b>-n</b> (repeat-count) options.
+<dt><b>-S</b>
+<dd style="margin-left: 5.0em">Forces (dedicated) TLS encryption when connecting to the server.
+<dt><b>-T</b><i> seconds</i>
+<dd style="margin-left: 5.0em">Specifies a timeout for IPP requests in seconds.
+<dt><b>-V</b><i> version</i>
+<dd style="margin-left: 5.0em">Specifies the default IPP version to use: 1.0, 1.1, 2.0, 2.1, or 2.2. If not specified, version 1.1 is used.
+<dt><b>-X</b>
+<dd style="margin-left: 5.0em">Specifies that XML (Apple plist) output is desired instead of the plain text report. This option is incompatible with the <b>-i</b> (interval) and <b>-n</b> (repeat-count) options.
+<dt><b>-c</b>
+<dd style="margin-left: 5.0em">Specifies that CSV (comma-separated values) output is desired instead of the plain text output.
+<dt><b>-d</b><i> name=value</i>
+<dd style="margin-left: 5.0em">Defines the named variable.
+<dt><b>-f</b><i> filename</i>
+<dd style="margin-left: 5.0em">Defines the default request filename for tests.
+<dt><b>-i</b><i> seconds</i>
+<dd style="margin-left: 5.0em">Specifies that the (last)
+<i>testfile</i>
+should be repeated at the specified interval. This option is incompatible with the <b>-X</b> (XML plist output) option.
+<dt><b>-l</b>
+<dd style="margin-left: 5.0em">Specifies that plain text output is desired.
+<dt><b>-n</b><i> repeat-count</i>
+<dd style="margin-left: 5.0em">Specifies that the (last)
+<i>testfile</i>
+should be repeated the specified number of times. This option is incompatible with the <i>-X</i> (XML plist output) option.
+<dt><b>-t</b>
+<dd style="margin-left: 5.0em">Specifies that CUPS test report output is desired instead of the plain text output.
+<dt><b>-v</b>
+<dd style="margin-left: 5.0em">Specifies that all request and response attributes should be output in CUPS test mode (<b>-t</b>). This is the default for XML output.
 </dl>
-<h2 class="title"><a name="EXIT_CODE">Exit Code</a></h2>
-The <i>ipptool</i> program returns 0 if all tests were sucessful and 1 otherwise.
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-The <i>ipptool</i> program is unique to CUPS.
+<h2 class="title"><a name="EXIT_STATUS">Exit Status</a></h2>
+The
+<b>ipptool</b>
+program returns 0 if all tests were sucessful and 1 otherwise.
+<h2 class="title"><a name="FILES">Files</a></h2>
+The following standard files are available:
+<pre class="man">
+<i>color.jpg</i>
+<i>create-printer-subscription.test</i>
+<i>document-a4.pdf</i>
+<i>document-a4.ps</i>
+<i>document-letter.pdf</i>
+<i>document-letter.ps</i>
+<i>get-completed-jobs.test</i>
+<i>get-jobs.test</i>
+<i>get-notifications.test</i>
+<i>get-printer-attributes.test</i>
+<i>get-subscriptions.test</i>
+<i>gray.jpg</i>
+<i>ipp-1.1.test</i>
+<i>ipp-2.0.test</i>
+<i>ipp-2.1.test</i>
+<i>ipp-2.2.test</i>
+<i>ipp-everywhere.test</i>
+<i>onepage-a4.pdf</i>
+<i>onepage-a4.ps</i>
+<i>onepage-letter.pdf</i>
+<i>onepage-letter.ps</i>
+<i>print-job.test</i>
+<i>print-job-deflate.test</i>
+<i>print-job-gzip.test</i>
+<i>testfile.jpg</i>
+<i>testfile.pcl</i>
+<i>testfile.pdf</i>
+<i>testfile.ps</i>
+<i>testfile.txt</i>
+<i>validate-job.test</i>
+</pre>
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+The
+<b>ipptool</b>
+program is unique to CUPS and conforms to the Internet Printing Protocol up to version 2.2.
 <h2 class="title"><a name="EXAMPLES">Examples</a></h2>
 Get a list of completed jobs for "myprinter":
-<pre>
+<pre class="man">
+
     ipptool ipp://localhost/printers/myprinter get-completed-jobs.test
 </pre>
 <p>Send email notifications to "user@example.com" when "myprinter" changes:
-<pre>
-    ipptool -d recipient=mailto:user@example.com 
+<pre class="man">
+
+    ipptool -d recipient=mailto:user@example.com \
         ipp://localhost/printers/myprinter create-printer-subscription.test
 </pre>
-<h2 class="title"><a name="STANDARD_FILES">Standard Files</a></h2>
-The following standard files are available:
-<pre>
-    color.jpg
-    create-printer-subscription.test
-    document-a4.pdf
-    document-a4.ps
-    document-letter.pdf
-    document-letter.ps
-    get-completed-jobs.test
-    get-jobs.test
-    get-notifications.test
-    get-printer-attributes.test
-    get-subscriptions.test
-    gray.jpg
-    ipp-1.1.test
-    ipp-2.0.test
-    ipp-2.1.test
-    ipp-2.2.test
-    ipp-everywhere.test
-    onepage-a4.pdf
-    onepage-a4.ps
-    onepage-letter.pdf
-    onepage-letter.ps
-    print-job.test
-    print-job-deflate.test
-    print-job-gzip.test
-    testfile.jpg
-    testfile.pcl
-    testfile.pdf
-    testfile.ps
-    testfile.txt
-    validate-job.test
-</pre>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-ipptoolfile.html?TOPIC=Man+Pages'>ipptoolfile(5)</a>, RFC 2911,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
-<br>
-<a href='http://www.iana.org/assignments/ipp-registrations'>http://www.iana.org/assignments/ipp-registrations</a>
-<br>
-<a href='http://www.pwg.org/ipp'>http://www.pwg.org/ipp</a>
+<a href="man-ipptoolfile.html?TOPIC=Man+Pages"><b>ipptoolfile</b>(5),</a>
+CUPS Online Help (<a href="http://localhost:631/help)">http://localhost:631/help)</a>,
+IANA IPP Registry (<a href="http://www.iana.org/assignments/ipp\-registrations)">http://www.iana.org/assignments/ipp\-registrations)</a>,
+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 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index ce64e2550c089848fa9f49c362071d2f20f07498..3fffb25f11d85f8fe1c4c083a5dc4bf87c8c8721 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: Man Pages -->
 <head>
@@ -9,15 +9,16 @@
 <h1 class="title">ipptoolfile(5)</h1>
 <h2 class="title"><a name="NAME">Name</a></h2>
 ipptoolfile - ipptool file format
-
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <a href='man-ipptool.html?TOPIC=Man+Pages'>ipptool(1)</a> program accepts free-form plain text files that describe one or more IPP requests. Comments start with the "#" character and continue to the end of the line. Each request is enclosed by curly braces, for example:
-<pre>
+The
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(1)</a>
+program accepts free-form plain text files that describe one or more IPP requests. Comments start with the "#" character and continue to the end of the line. Each request is enclosed by curly braces, for example:
+<pre class="man">
 
     # This is a comment
     {
       # The name of the test
-      NAME "Print PostScript Job"
+      NAME "Print PostScript File"
 
       # The request to send
       OPERATION Print-Job
@@ -30,9 +31,7 @@ The <a href='man-ipptool.html?TOPIC=Man+Pages'>ipptool(1)</a> program accepts fr
 
       # The response to expect
       STATUS successful-ok
-      EXPECT attributes-charset OF-TYPE charset
-      EXPECT attributes-natural-language OF-TYPE naturalLanguage
-      EXPECT job-id OF-TYPE integer
+      EXPECT job-id OF-TYPE integer WITH-VALUE >0
       EXPECT job-uri OF-TYPE uri
     }
     {
@@ -50,462 +49,228 @@ The <a href='man-ipptool.html?TOPIC=Man+Pages'>ipptool(1)</a> program accepts fr
 
       # The response to expect
       STATUS successful-ok
-      EXPECT attributes-charset OF-TYPE charset
-      EXPECT attributes-natural-language OF-TYPE naturalLanguage
-      EXPECT job-id OF-TYPE integer
+      EXPECT job-id OF-TYPE integer WITH-VALUE $job-id
       EXPECT job-uri OF-TYPE uri
-      EXPECT job-state OF-TYPE enum
+      EXPECT job-state OF-TYPE enum WITH-VALUE 3,4,5,6,7,8,9
       EXPECT job-originating-user-name OF-TYPE name WITH-VALUE "$user"
     }
 </pre>
-
-<h2 class="title"><a name="TOP-LEVEL_DIRECTIVES">Top-level Directives</a></h2>
-The following directives can be used outside of a test:
-<dl>
-<dt>{ test }
-</dt>
-<dd>Defines a test.
-</dd>
-<dt>DEFINE variable-name value
-</dt>
-<dd>Defines the named variable to the given value. This is equivalent to specifying
-"-d variable-name=value" on the <i>ipptool</i> command-line.
-</dd>
-<dt>DEFINE-DEFAULT variable-name value
-</dt>
-<dd>Defines the named variable to the given value if it does not already have a
-value.
-</dd>
-<dt>FILE-ID "identifier"
-</dt>
-<dd>Specifies an identifier string for the current file.
-</dd>
-<dt>IGNORE-ERRORS yes
-</dt>
-<dd></dd>
-<dt>IGNORE-ERRORS no
-</dt>
-<dd>Specifies whether, by default, <i>ipptool</i> will ignore errors and continue with
-subsequent tests.
-</dd>
-<dt>INCLUDE "filename"
-</dt>
-<dd></dd>
-<dt>INCLUDE &lt;filename>
-</dt>
-<dd>Includes another test file. The first form includes a file relative to the
-current test file, while the second form includes a file from the <i>ipptool</i>
+<h3><a name="TOP_LEVEL_DIRECTIVES">Top-level Directives</a></h3>
+The following directives can be used outside of a <i>test</i>:
+<dl class="man">
+<dt><b>{ </b><i>test </i><b>}</b>
+<dd style="margin-left: 5.0em">Defines a test.
+<dt><b>DEFINE </b><i>variable-name value</i>
+<dd style="margin-left: 5.0em">Defines the named variable to the given value. This is equivalent to specifying <i>-d variable-name=value</i> on the
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+command-line.
+<dt><b>DEFINE-DEFAULT </b><i>variable-name value</i>
+<dd style="margin-left: 5.0em">Defines the named variable to the given value if it does not already have a value.
+<dt><b>FILE-ID "</b><i>identifier</i><b>"</b>
+<dd style="margin-left: 5.0em">Specifies an identifier string for the current file.
+<dt><b>IGNORE-ERRORS yes</b>
+<dd style="margin-left: 5.0em"><dt><b>IGNORE-ERRORS no</b>
+<dd style="margin-left: 5.0em">Specifies whether, by default,
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+will ignore errors and continue with subsequent tests.
+<dt><b>INCLUDE "</b><i>filename</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>INCLUDE &lt;</b><i>filename</i><b>></b>
+<dd style="margin-left: 5.0em">Includes another test file. The first form includes a file relative to the current test file, while the second form includes a file from the
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
 include directory.
-</dd>
-<dt>INCLUDE-IF-DEFINED name "filename"
-</dt>
-<dd></dd>
-<dt>INCLUDE-IF-DEFINED name &lt;filename>
-</dt>
-<dd>Includes another test file if the named variable is defined. The first form
-includes a file relative to the current test file, while the second form
-includes a file from the <i>ipptool</i> include directory.
-</dd>
-<dt>INCLUDE-IF-NOT-DEFINED name "filename"
-</dt>
-<dd></dd>
-<dt>INCLUDE-IF-NOT-DEFINED name &lt;filename>
-</dt>
-<dd>Includes another test file if the named variable is not defined. The first form
-includes a file relative to the current test file, while the second form
-includes a file from the <i>ipptool</i> include directory.
-</dd>
-<dt>SKIP-IF-DEFINED variable-name
-</dt>
-<dd></dd>
-<dt>SKIP-IF-NOT-DEFINED variable-name
-</dt>
-<dd>Specifies that the remainder of the test file should be skipped when the
-variable is or is not defined.
-</dd>
-<dt>STOP-AFTER-INCLUDE-ERROR no
-</dt>
-<dd></dd>
-<dt>STOP-AFTER-INCLUDE-ERROR yes
-</dt>
-<dd>Specifies whether tests will be stopped after an error in an included file.
-</dd>
-<dt>TRANSFER auto
-</dt>
-<dd>Specifies that tests will, by default, use "Transfer-Encoding: chunked" for
-requests with attached files and "Content-Length:" for requests without attached
-files.
-</dd>
-<dt>TRANSFER chunked
-</dt>
-<dd>Specifies that tests will, by default, use the HTTP/1.1 "Transfer-Encoding:
-chunked" header. This is the default and is equivalent to specifying "-c" on the
-<i>ipptool</i> command-line. Support for chunked requests is required for
-conformance with all versions of IPP.
-</dd>
-<dt>TRANSFER length
-</dt>
-<dd>Specifies that tests will, by default, use the HTTP/1.0 "Content-Length:"
-header. This is equivalent to specifying "-l" on the <i>ipptool</i> command-line.
-Support for content length requests is required for conformance with all
-versions of IPP.
-</dd>
-<dt>VERSION 1.0
-</dt>
-<dd></dd>
-<dt>VERSION 1.1
-</dt>
-<dd></dd>
-<dt>VERSION 2.0
-</dt>
-<dd></dd>
-<dt>VERSION 2.1
-</dt>
-<dd></dd>
-<dt>VERSION 2.2
-</dt>
-<dd>Specifies the default IPP version number to use for the tests that follow.
-
-</dd>
+<dt><b>INCLUDE-IF-DEFINED </b><i>name </i><b>"</b><i>filename</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>INCLUDE-IF-DEFINED </b><i>name </i><b>&lt;</b><i>filename</i><b>></b>
+<dd style="margin-left: 5.0em">Includes another test file if the named variable is defined. The first form includes a file relative to the current test file, while the second form includes a file from the
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+include directory.
+<dt><b>INCLUDE-IF-NOT-DEFINED </b><i>name </i><b>"</b><i>filename</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>INCLUDE-IF-NOT-DEFINED </b><i>name </i><b>&lt;</b><i>filename</i><b>></b>
+<dd style="margin-left: 5.0em">Includes another test file if the named variable is not defined. The first form includes a file relative to the current test file, while the second form includes a file from the
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+include directory.
+<dt><b>SKIP-IF-DEFINED </b><i>variable-name</i>
+<dd style="margin-left: 5.0em"><dt><b>SKIP-IF-NOT-DEFINED </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Specifies that the remainder of the test file should be skipped when the variable is or is not defined.
+<dt><b>STOP-AFTER-INCLUDE-ERROR no</b>
+<dd style="margin-left: 5.0em"><dt><b>STOP-AFTER-INCLUDE-ERROR yes</b>
+<dd style="margin-left: 5.0em">Specifies whether tests will be stopped after an error in an included file.
+<dt><b>TRANSFER auto</b>
+<dd style="margin-left: 5.0em">Specifies that tests will, by default, use "Transfer-Encoding: chunked" for requests with attached files and "Content-Length:" for requests without attached files.
+<dt><b>TRANSFER chunked</b>
+<dd style="margin-left: 5.0em">Specifies that tests will, by default, use the HTTP/1.1 "Transfer-Encoding: chunked" header. This is the default and is equivalent to specifying <i>-c</i> on the
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+command-line. Support for chunked requests is required for conformance with all versions of IPP.
+<dt><b>TRANSFER length</b>
+<dd style="margin-left: 5.0em">Specifies that tests will, by default, use the HTTP/1.0 "Content-Length:" header. This is equivalent to specifying <i>-l</i> on the
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+command-line. Support for content length requests is required for conformance with all versions of IPP.
+<dt><b>VERSION 1.0</b>
+<dd style="margin-left: 5.0em"><dt><b>VERSION 1.1</b>
+<dd style="margin-left: 5.0em"><dt><b>VERSION 2.0</b>
+<dd style="margin-left: 5.0em"><dt><b>VERSION 2.1</b>
+<dd style="margin-left: 5.0em"><dt><b>VERSION 2.2</b>
+<dd style="margin-left: 5.0em">Specifies the default IPP version number to use for the tests that follow.
 </dl>
-<h2 class="title"><a name="TEST_DIRECTIVES">Test Directives</a></h2>
-The following directives are understood in a test:
-<dl>
-<dt>ATTR tag attribute-name value(s)
-</dt>
-<dd>Adds an attribute to the test request. Values are separated by the comma (",")
-character - escape commas using the "" character. Common attributes and values are listed in the IANA IPP registry - see references below.
-</dd>
-<dt>ATTR collection attribute-name { MEMBER tag member-name value(s) ... } [ ... { ... } ]
-</dt>
-<dd>Adds a collection attribute to the test request. Member attributes follow the
-same syntax as regular attributes and can themselves be nested collections.
-Multiple collection values can be supplied as needed.
-</dd>
-<dt>COMPRESSION deflate
-</dt>
-<dd></dd>
-<dt>COMPRESSION gzip
-</dt>
-<dd></dd>
-<dt>COMPRESSION none
-</dt>
-<dd></dd>
-<dd>Uses the specified compression on the document data following the attributes in
-a Print-Job or Send-Document request.
-</dd>
-<dt>DELAY seconds
-</dt>
-<dd>Specifies a delay before this test will be run.
-</dd>
-<dt>DISPLAY attribute-name
-</dt>
-<dd>Specifies that value of the named attribute should be output as part of the
+<h3><a name="TEST_DIRECTIVES">Test Directives</a></h3>
+The following directives are understood within a <i>test</i>:
+<dl class="man">
+<dt><b>ATTR </b><i>tag attribute-name value(s)</i>
+<dd style="margin-left: 5.0em">Adds an attribute to the test request. Values are separated by the comma (",") character - escape commas using the "" character. Common attributes and values are listed in the IANA IPP registry - see references below.
+<dt><b>ATTR collection </b><i>attribute-name </i><b>{ MEMBER </b><i>tag member-name value(s) ... </i><b>}</b> [ <i>... </i><b>,{ </b><i>... </i><b>} </b>]
+<dd style="margin-left: 5.0em">Adds a collection attribute to the test request. Member attributes follow the same syntax as regular attributes and can themselves be nested collections. Multiple collection values can be supplied as needed, separated by commas.
+<dt><b>COMPRESSION deflate</b>
+<dd style="margin-left: 5.0em"><dt><b>COMPRESSION gzip</b>
+<dd style="margin-left: 5.0em"><dt><b>COMPRESSION none</b>
+<dd style="margin-left: 5.0em">Uses the specified compression on the document data following the attributes in a Print-Job or Send-Document request.
+<dt><b>DELAY </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies a delay before this test will be run.
+<dt><b>DISPLAY </b><i>attribute-name</i>
+<dd style="margin-left: 5.0em">Specifies that value of the named attribute should be output as part of the
 test report.
-</dd>
-<dt>EXPECT attribute-name [ predicate(s) ]
-</dt>
-<dd></dd>
-<dt>EXPECT ?attribute-name predicate(s)
-</dt>
-<dd></dd>
-<dt>EXPECT !attribute-name
-</dt>
-<dd>Specifies that the response must/may/must not include the named attribute.
-Additional requirements can be added as predicates - see the "EXPECT PREDICATES"
-section for more information on predicates.
-</dd>
-<dt>FILE filename
-</dt>
-<dd>Specifies a file to include at the end of the request. This is typically used
-when sending a test print file.
-</dd>
-<dt>GROUP tag
-</dt>
-<dd>Specifies the group tag for subsequent attributes in the request.
-</dd>
-<dt>IGNORE-ERRORS yes
-</dt>
-<dd></dd>
-<dt>IGNORE-ERRORS no
-</dt>
-<dd>Specifies whether <i>ipptool</i> will ignore errors and continue with subsequent
-tests.
-</dd>
-<dt>NAME "literal string"
-</dt>
-<dd>Specifies the human-readable name of the test.
-</dd>
-<dt>OPERATION operation-code
-</dt>
-<dd>Specifies the operation to be performed.
-</dd>
-<dt>REQUEST-ID number
-</dt>
-<dd></dd>
-<dt>REQUEST-ID random
-</dt>
-<dd>Specifies the request-id value to use in the request, either an integer or the
-word "random" to use a randomly generated value (the default).
-</dd>
-<dt>RESOURCE path
-</dt>
-<dd>Specifies an alternate resource path that is used for the HTTP POST request.
-The default is the resource from the URI provided to the <i>ipptool</i> program.
-</dd>
-<dt>SKIP-IF-DEFINED variable-name
-</dt>
-<dd></dd>
-<dt>SKIP-IF-NOT-DEFINED variable-name
-</dt>
-<dd>Specifies that the current test should be skipped when the variable is or is not
-defined.
-</dd>
-<dt>SKIP-PREVIOUS-ERROR yes
-</dt>
-<dd></dd>
-<dt>SKIP-PREVIOUS-ERROR no
-</dt>
-<dd>Specifies whether <i>ipptool</i> will skip the current test if the previous test
-resulted in an error/failure.
-</dd>
-<dt>STATUS status-code [ predicate ]
-</dt>
-<dd>Specifies an expected response status-code value. Additional requirements can be
-added as predicates - see the "STATUS PREDICATES" section for more information
-on predicates.
-</dd>
-<dt>TEST-ID "identifier"
-</dt>
-<dd>Specifies an identifier string for the current test.
-</dd>
-<dt>TRANSFER auto
-</dt>
-<dd>Specifies that this test will use "Transfer-Encoding: chunked" if it has an
-attached file or "Content-Length:" otherwise.
-</dd>
-<dt>TRANSFER chunked
-</dt>
-<dd>Specifies that this test will use the HTTP/1.1 "Transfer-Encoding: chunked"
-header.
-</dd>
-<dt>TRANSFER length
-</dt>
-<dd>Specifies that this test will use the HTTP/1.0 "Content-Length:" header.
-</dd>
-<dt>VERSION 1.0
-</dt>
-<dd></dd>
-<dt>VERSION 1.1
-</dt>
-<dd></dd>
-<dt>VERSION 2.0
-</dt>
-<dd></dd>
-<dt>VERSION 2.1
-</dt>
-<dd></dd>
-<dt>VERSION 2.2
-</dt>
-<dd>Specifies the IPP version number to use for this test.
-
-</dd>
+<dt><b>EXPECT </b><i>attribute-name </i>[ <i>predicate(s) </i>]
+<dd style="margin-left: 5.0em"><dt><b>EXPECT ?</b><i>attribute-name predicate(s)</i>
+<dd style="margin-left: 5.0em"><dt><b>EXPECT !</b><i>attribute-name</i>
+<dd style="margin-left: 5.0em">Specifies that the response must/may/must not include the named attribute. Additional requirements can be added as predicates - see the "EXPECT PREDICATES" section for more information on predicates. Attribute names can specify member attributes by separating the attribute and member names with the forward slash, for example "media-col/media-size/x-dimension".
+<dt><b>FILE filename</b>
+<dd style="margin-left: 5.0em">Specifies a file to include at the end of the request. This is typically used when sending a test print file.
+<dt><b>GROUP tag</b>
+<dd style="margin-left: 5.0em">Specifies the group tag for subsequent attributes in the request.
+<dt><b>IGNORE-ERRORS yes</b>
+<dd style="margin-left: 5.0em"><dt><b>IGNORE-ERRORS no</b>
+<dd style="margin-left: 5.0em">Specifies whether
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+will ignore errors and continue with subsequent tests.
+<dt><b>NAME "</b><i>literal string</i><b>"</b>
+<dd style="margin-left: 5.0em">Specifies the human-readable name of the test.
+<dt><b>OPERATION </b><i>operation-code</i>
+<dd style="margin-left: 5.0em">Specifies the operation to be performed.
+<dt><b>PAUSE "</b><i>message</i><b>"</b>
+<dd style="margin-left: 5.0em">Displays the provided message and waits for the user to press a key to continue.
+<dt><b>REQUEST-ID </b><i>number</i>
+<dd style="margin-left: 5.0em"><dt><b>REQUEST-ID random</b>
+<dd style="margin-left: 5.0em">Specifies the request-id value to use in the request, either an integer or the word "random" to use a randomly generated value (the default).
+<dt><b>RESOURCE </b><i>path</i>
+<dd style="margin-left: 5.0em">Specifies an alternate resource path that is used for the HTTP POST request. The default is the resource from the URI provided to the
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+program.
+<dt><b>SKIP-IF-DEFINED </b><i>variable-name</i>
+<dd style="margin-left: 5.0em"><dt><b>SKIP-IF-NOT-DEFINED </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Specifies that the current test should be skipped when the variable is or is not defined.
+<dt><b>SKIP-PREVIOUS-ERROR yes</b>
+<dd style="margin-left: 5.0em"><dt><b>SKIP-PREVIOUS-ERROR no</b>
+<dd style="margin-left: 5.0em">Specifies whether
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+will skip the current test if the previous test resulted in an error/failure.
+<dt><b>STATUS </b><i>status-code </i>[ <i>predicate</i> ]
+<dd style="margin-left: 5.0em">Specifies an expected response status-code value. Additional requirements can be added as predicates - see the "STATUS PREDICATES" section for more information on predicates.
+<dt><b>TEST-ID "</b><i>identifier</i>"
+<dd style="margin-left: 5.0em">Specifies an identifier string for the current test.
+<dt><b>TRANSFER auto</b>
+<dd style="margin-left: 5.0em">Specifies that this test will use "Transfer-Encoding: chunked" if it has an attached file or "Content-Length:" otherwise.
+<dt><b>TRANSFER chunked</b>
+<dd style="margin-left: 5.0em">Specifies that this test will use the HTTP/1.1 "Transfer-Encoding: chunked" header.
+<dt><b>TRANSFER length</b>
+<dd style="margin-left: 5.0em">Specifies that this test will use the HTTP/1.0 "Content-Length:" header.
+<dt><b>VERSION 1.0</b>
+<dd style="margin-left: 5.0em"><dt><b>VERSION 1.1</b>
+<dd style="margin-left: 5.0em"><dt><b>VERSION 2.0</b>
+<dd style="margin-left: 5.0em"><dt><b>VERSION 2.1</b>
+<dd style="margin-left: 5.0em"><dt><b>VERSION 2.2</b>
+<dd style="margin-left: 5.0em">Specifies the IPP version number to use for this test.
 </dl>
-<h2 class="title"><a name="EXPECT_PREDICATES">Expect Predicates</a></h2>
-The following predicates are understood following the EXPECT test directive:
-<dl>
-<dt>COUNT number
-</dt>
-<dd>Requires the EXPECT attribute to have the specified number of values.
-</dd>
-<dt>DEFINE-MATCH variable-name
-</dt>
-<dd>Defines the variable to "1" when the EXPECT condition matches. A side-effect of
-this predicate is that this EXPECT will never fail a test.
-</dd>
-<dt>DEFINE-NO-MATCH variable-name
-</dt>
-<dd>Defines the variable to "1" when the EXPECT condition does not match. A side-
-effect of this predicate is that this EXPECT will never fail a test.
-</dd>
-<dt>DEFINE-VALUE variable-name
-</dt>
-<dd>Defines the variable to the value of the attribute when the EXPECT condition
-matches. A side-effect of this predicate is that this EXPECT will never fail a test.
-</dd>
-<dt>IF-DEFINED variable-name
-</dt>
-<dd>Makes the EXPECT conditions apply only if the specified variable is defined.
-</dd>
-<dt>IF-NOT-DEFINED variable-name
-</dt>
-<dd>Makes the EXPECT conditions apply only if the specified variable is not
-defined.
-</dd>
-<dt>IN-GROUP tag
-</dt>
-<dd>Requires the EXPECT attribute to be in the specified group tag.
-</dd>
-<dt>OF-TYPE tag[,tag,...]
-</dt>
-<dd>Requires the EXPECT attribute to use the specified value tag(s).
-</dd>
-<dt>REPEAT-LIMIT number
-</dt>
-<dd></dd>
-<dd>Specifies the maximum number of times to repeat. The default value is 1000.
-</dd>
-<dt>REPEAT-MATCH
-</dt>
-<dd></dd>
-<dt>REPEAT-NO-MATCH
-</dt>
-<dd>Specifies that the current test should be repeated when the EXPECT condition
-matches or does not match.
-</dd>
-<dt>SAME-COUNT-AS attribute-name
-</dt>
-<dd>Requires the EXPECT attribute to have the same number of values as the specified
-parallel attribute.
-</dd>
-<dt>WITH-ALL-HOSTNAMES "literal string"
-</dt>
-<dd></dd>
-<dt>WITH-ALL-HOSTNAMES "/regular expression/"
-</dt>
-<dd>Requires that all URI values contain a matching hostname.
-</dd>
-<dt>WITH-ALL-RESOURCES "literal string"
-</dt>
-<dd></dd>
-<dt>WITH-ALL-RESOURCES "/regular expression/"
-</dt>
-<dd>Requires that all URI values contain a matching resource (including leading /).
-</dd>
-<dt>WITH-ALL-SCHEMES "literal string"
-</dt>
-<dd></dd>
-<dt>WITH-ALL-SCHEMES "/regular expression/"
-</dt>
-<dd>Requires that all URI values contain a matching scheme.
-</dd>
-<dt>WITH-ALL-VALUES "literal string"
-</dt>
-<dd>Requires that all values of the EXPECT attribute match the literal string. Comparisons are case-sensitive.
-</dd>
-<dt>WITH-ALL-VALUES &lt;number
-</dt>
-<dd></dd>
-<dt>WITH-ALL-VALUES =number
-</dt>
-<dd></dd>
-<dt>WITH-ALL-VALUES >number
-</dt>
-<dd></dd>
-<dt>WITH-ALL-VALUES number[,number,...]
-</dt>
-<dd>Requires that all values of the EXPECT attribute match the number(s) or numeric comparison. When comparing rangeOfInteger values, the "&lt;" and ">" operators only check the upper bound of the range.
-</dd>
-<dt>WITH-ALL-VALUES "false"
-</dt>
-<dd></dd>
-<dt>WITH-ALL-VALUES "true"
-</dt>
-<dd>Requires that all values of the EXPECT attribute match the boolean value given.
-</dd>
-<dt>WITH-ALL-VALUES "/regular expression/"
-</dt>
-<dd>Requires that all values of the EXPECT attribute match the regular expression, which must conform to the POSIX regular expression syntax. Comparisons are case-sensitive.
-</dd>
-<dt>WITH-HOSTNAME "literal string"
-</dt>
-<dd></dd>
-<dt>WITH-HOSTNAME "/regular expression/"
-</dt>
-<dd>Requires that at least one URI value contains a matching hostname.
-</dd>
-<dt>WITH-RESOURCE "literal string"
-</dt>
-<dd></dd>
-<dt>WITH-RESOURCE "/regular expression/"
-</dt>
-<dd>Requires that at least one URI value contains a matching resource (including leading /).
-</dd>
-<dt>WITH-SCHEME "literal string"
-</dt>
-<dd></dd>
-<dt>WITH-SCHEME "/regular expression/"
-</dt>
-<dd>Requires that at least one URI value contains a matching scheme.
-</dd>
-<dt>WITH-VALUE "literal string"
-</dt>
-<dd>Requires that at least one value of the EXPECT attribute matches the literal string. Comparisons are case-sensitive.
-</dd>
-<dt>WITH-VALUE &lt;number
-</dt>
-<dd></dd>
-<dt>WITH-VALUE =number
-</dt>
-<dd></dd>
-<dt>WITH-VALUE >number
-</dt>
-<dd></dd>
-<dt>WITH-VALUE number[,number,...]
-</dt>
-<dd>Requires that at least one value of the EXPECT attribute matches the number(s) or numeric comparison. When comparing rangeOfInteger values, the "&lt;" and ">" operators only check the upper bound of the range.
-</dd>
-<dt>WITH-VALUE "false"
-</dt>
-<dd></dd>
-<dt>WITH-VALUE "true"
-</dt>
-<dd>Requires that at least one value of the EXPECT attribute matches the boolean value given.
-</dd>
-<dt>WITH-VALUE "/regular expression/"
-</dt>
-<dd>Requires that at least one value of the EXPECT attribute matches the regular expression, which must conform to the POSIX regular expression syntax. Comparisons are case-sensitive.
-
-</dd>
+<h3><a name="EXPECT_PREDICATES">Expect Predicates</a></h3>
+The following predicates are understood following the <b>EXPECT</b> test directive:
+<dl class="man">
+<dt><b>COUNT </b><i>number</i>
+<dd style="margin-left: 5.0em">Requires the <b>EXPECT</b> attribute to have the specified number of values.
+<dt><b>DEFINE-MATCH </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Defines the variable to "1" when the <b>EXPECT</b> condition matches. A side-effect of this predicate is that this <b>EXPECT</b> will never fail a test.
+<dt><b>DEFINE-NO-MATCH </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Defines the variable to "1" when the <b>EXPECT</b> condition does not match. A side-effect of this predicate is that this <b>EXPECT</b> will never fail a test.
+<dt><b>DEFINE-VALUE </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Defines the variable to the value of the attribute when the <b>EXPECT</b> condition matches. A side-effect of this predicate is that this <b>EXPECT</b> will never fail a test.
+<dt><b>IF-DEFINED </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Makes the <b>EXPECT</b> conditions apply only if the specified variable is defined.
+<dt><b>IF-NOT-DEFINED </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Makes the <b>EXPECT</b> conditions apply only if the specified variable is not defined.
+<dt><b>IN-GROUP </b><i>tag</i>
+<dd style="margin-left: 5.0em">Requires the <b>EXPECT</b> attribute to be in the specified group tag.
+<dt><b>OF-TYPE </b><i>tag[,tag,...]</i>
+<dd style="margin-left: 5.0em">Requires the <b>EXPECT</b> attribute to use one of the specified value tag(s).
+<dt><b>REPEAT-LIMIT </b><i>number</i>
+<dd style="margin-left: 5.0em"><br>
+Specifies the maximum number of times to repeat if the <b>REPEAT-MATCH</b> or <b>REPEAT-NO-MATCH</b> predicate is specified. The default value is 1000.
+<dt><b>REPEAT-MATCH</b>
+<dd style="margin-left: 5.0em"><dt><b>REPEAT-NO-MATCH</b>
+<dd style="margin-left: 5.0em">Specifies that the current test should be repeated when the <b>EXPECT</b> condition matches or does not match.
+<dt><b>SAME-COUNT-AS </b><i>attribute-name</i>
+<dd style="margin-left: 5.0em">Requires the <b>EXPECT</b> attribute to have the same number of values as the specified parallel attribute.
+<dt><b>WITH-ALL-HOSTNAMES "</b><i>literal string</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>WITH-ALL-HOSTNAMES "/</b><i>regular expression</i><b>/"</b>
+<dd style="margin-left: 5.0em">Requires that all URI values contain a matching hostname.
+<dt><b>WITH-ALL-RESOURCES "</b><i>literal string</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>WITH-ALL-RESOURCES "/</b><i>regular expression</i><b>/"</b>
+<dd style="margin-left: 5.0em">Requires that all URI values contain a matching resource (including leading /).
+<dt><b>WITH-ALL-SCHEMES "</b><i>literal string</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>WITH-ALL-SCHEMES "/</b><i>regular expression</i><b>/"</b>
+<dd style="margin-left: 5.0em">Requires that all URI values contain a matching scheme.
+<dt><b>WITH-ALL-VALUES "</b><i>literal string</i><b>"</b>
+<dd style="margin-left: 5.0em">Requires that all values of the <b>EXPECT</b> attribute match the literal string. Comparisons are case-sensitive.
+<dt><b>WITH-ALL-VALUES &lt;</b><i>number</i>
+<dd style="margin-left: 5.0em"><dt><b>WITH-ALL-VALUES =</b><i>number</i>
+<dd style="margin-left: 5.0em"><dt><b>WITH-ALL-VALUES ></b><i>number</i>
+<dd style="margin-left: 5.0em"><dt><b>WITH-ALL-VALUES </b><i>number</i>[<i>,...,number</i>]
+<dd style="margin-left: 5.0em">Requires that all values of the <b>EXPECT</b> attribute match the number(s) or numeric comparison. When comparing rangeOfInteger values, the "&lt;" and ">" operators only check the upper bound of the range.
+<dt><b>WITH-ALL-VALUES "false"</b>
+<dd style="margin-left: 5.0em"><dt><b>WITH-ALL-VALUES "true"</b>
+<dd style="margin-left: 5.0em">Requires that all values of the <b>EXPECT</b> attribute match the boolean value given.
+<dt><b>WITH-ALL-VALUES "/</b><i>regular expression</i><b>/"</b>
+<dd style="margin-left: 5.0em">Requires that all values of the <b>EXPECT</b> attribute match the regular expression, which must conform to the POSIX regular expression syntax. Comparisons are case-sensitive.
+<dt><b>WITH-HOSTNAME "</b><i>literal string</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>WITH-HOSTNAME "/</b><i>regular expression</i><b>/"</b>
+<dd style="margin-left: 5.0em">Requires that at least one URI value contains a matching hostname.
+<dt><b>WITH-RESOURCE "</b><i>literal string</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>WITH-RESOURCE "/</b><i>regular expression</i><b>/"</b>
+<dd style="margin-left: 5.0em">Requires that at least one URI value contains a matching resource (including leading /).
+<dt><b>WITH-SCHEME "</b><i>literal string</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>WITH-SCHEME "/</b><i>regular expression</i><b>/"</b>
+<dd style="margin-left: 5.0em">Requires that at least one URI value contains a matching scheme.
+<dt><b>WITH-VALUE "</b><i>literal string</i><b>"</b>
+<dd style="margin-left: 5.0em">Requires that at least one value of the <b>EXPECT</b> attribute matches the literal string. Comparisons are case-sensitive.
+<dt><b>WITH-VALUE &lt;</b><i>number</i>
+<dd style="margin-left: 5.0em"><dt><b>WITH-VALUE =</b><i>number</i>
+<dd style="margin-left: 5.0em"><dt><b>WITH-VALUE ></b><i>number</i>
+<dd style="margin-left: 5.0em"><dt><b>WITH-VALUE </b><i>number</i>[<i>,...,number</i>]
+<dd style="margin-left: 5.0em">Requires that at least one value of the <b>EXPECT</b> attribute matches the number(s) or numeric comparison. When comparing rangeOfInteger values, the "&lt;" and ">" operators only check the upper bound of the range.
+<dt><b>WITH-VALUE "false"</b>
+<dd style="margin-left: 5.0em"><dt><b>WITH-VALUE "true"</b>
+<dd style="margin-left: 5.0em">Requires that at least one value of the <b>EXPECT</b> attribute matches the boolean value given.
+<dt><b>WITH-VALUE "/</b><i>regular expression</i><b>/"</b>
+<dd style="margin-left: 5.0em">Requires that at least one value of the <b>EXPECT</b> attribute matches the regular expression, which must conform to the POSIX regular expression syntax. Comparisons are case-sensitive.
 </dl>
-<h2 class="title"><a name="STATUS_PREDICATES">Status Predicates</a></h2>
-The following predicates are understood following the STATUS test directive:
-<dl>
-<dt>DEFINE-MATCH variable-name
-</dt>
-<dd>Defines the variable to "1" when the STATUS matches. A side-effect of this predicate is that this STATUS will never fail a test.
-</dd>
-<dt>DEFINE-NO-MATCH variable-name
-</dt>
-<dd>Defines the variable to "1" when the STATUS does not match. A side-effect of this predicate is that this STATUS will never fail a test.
-</dd>
-<dt>IF-DEFINED variable-name
-</dt>
-<dd>Makes the STATUS apply only if the specified variable is defined.
-</dd>
-<dt>IF-NOT-DEFINED variable-name
-</dt>
-<dd>Makes the STATUS apply only if the specified variable is not defined.
-</dd>
-<dt>REPEAT-LIMIT number
-</dt>
-<dd></dd>
-<dd>Specifies the maximum number of times to repeat. The default value is 1000.
-</dd>
-<dt>REPEAT-MATCH
-</dt>
-<dd></dd>
-<dt>REPEAT-NO-MATCH
-</dt>
-<dd>Specifies that the current test should be repeated when the response status-code
-matches or does not match the value specified by the STATUS directive.
-
-</dd>
+<h3><a name="STATUS_PREDICATES">Status Predicates</a></h3>
+The following predicates are understood following the <b>STATUS</b> test directive:
+<dl class="man">
+<dt><b>DEFINE-MATCH </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Defines the variable to "1" when the <b>STATUS</b> matches. A side-effect of this predicate is that this <b>STATUS</b> will never fail a test.
+<dt><b>DEFINE-NO-MATCH </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Defines the variable to "1" when the <b>STATUS</b> does not match. A side-effect of this predicate is that this <b>STATUS</b> will never fail a test.
+<dt><b>IF-DEFINED </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Makes the <b>STATUS</b> apply only if the specified variable is defined.
+<dt><b>IF-NOT-DEFINED </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Makes the <b>STATUS</b> apply only if the specified variable is not defined.
+<dt><b>REPEAT-LIMIT </b><i>number</i>
+<dd style="margin-left: 5.0em"><br>
+Specifies the maximum number of times to repeat. The default value is 1000.
+<dt><b>REPEAT-MATCH</b>
+<dd style="margin-left: 5.0em"><dt><b>REPEAT-NO-MATCH</b>
+<dd style="margin-left: 5.0em">Specifies that the current test should be repeated when the response status-code matches or does not match the value specified by the STATUS directive.
 </dl>
-<h2 class="title"><a name="OPERATION_CODES">Operation Codes</a></h2>
-Operation codes correspond to the hexadecimal numbers (0xHHHH) and names from
-RFC 2911 and other IPP extension specifications. Here is a complete list:
-<pre>
+<h3><a name="OPERATION_CODES">Operation Codes</a></h3>
+Operation codes correspond to the hexadecimal numbers (0xHHHH) and names from RFC 2911 and other IPP extension specifications. Here is a complete list of names supported by
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8):</a>
+<pre class="man">
+
     Activate-Printer
     CUPS-Accept-Jobs
     CUPS-Add-Modify-Class
@@ -574,11 +339,15 @@ RFC 2911 and other IPP extension specifications. Here is a complete list:
     Validate-Document
     Validate-Job
 </pre>
+<h3><a name="STATUS_CODES">Status Codes</a></h3>
+Status codes correspond to the hexadecimal numbers (0xHHHH) and names from RFC 2911 and other IPP extension specifications. Here is a complete list of the names supported by
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8):</a>
+<pre class="man">
 
-<h2 class="title"><a name="STATUS_CODES">Status Codes</a></h2>
-Status codes correspond to the hexadecimal numbers (0xHHHH) and names from RFC
-2911 and other IPP extension specifications. Here is a complete list:
-<pre>
+    client-error-account-authorization-failed
+    client-error-account-closed
+    client-error-account-info-needed
+    client-error-account-limit-reached
     client-error-attributes-not-settable
     client-error-attributes-or-values-not-supported
     client-error-bad-request
@@ -607,6 +376,10 @@ Status codes correspond to the hexadecimal numbers (0xHHHH) and names from RFC
     client-error-timeout
     client-error-too-many-subscriptions
     client-error-uri-scheme-not-supported
+    cups-error-account-authorization-failed
+    cups-error-account-closed
+    cups-error-account-info-needed
+    cups-error-account-limit-reached
     cups-see-other
     redirection-other-site
     server-error-busy
@@ -629,11 +402,11 @@ Status codes correspond to the hexadecimal numbers (0xHHHH) and names from RFC
     successful-ok-ignored-subscriptions
     successful-ok-too-many-events
 </pre>
+<h3><a name="TAGS">Tags</a></h3>
+Value and group tags correspond to the names from RFC 2911 and other IPP extension specifications. Here are the group tags:
+<pre class="man">
 
-<h2 class="title"><a name="TAGS">Tags</a></h2>
-Value and group tags correspond to the names from RFC 2911 and other IPP
-extension specifications. Here are the group tags:
-<pre>
+    document-attributes-tag
     event-notification-attributes-tag
     job-attributes-tag
     operation-attributes-tag
@@ -642,7 +415,8 @@ extension specifications. Here are the group tags:
     unsupported-attributes-tag
 </pre>
 <p>Here are the value tags:
-<pre>
+<pre class="man">
+
     admin-define
     boolean
     charset
@@ -669,81 +443,59 @@ extension specifications. Here are the group tags:
     uri
     uriScheme
 </pre>
-
-<h2 class="title"><a name="VARIABLES">Variables</a></h2>
-The <i>ipptool</i> program maintains a list of variables that can be used in any
-literal string or attribute value by specifying "$variable-name". Aside from
-variables defined using the "-d" option or "DEFINE" directive, the following
-pre-defined variables are available:
-<dl>
-<dt>$$
-</dt>
-<dd>Inserts a single "$" character.
-</dd>
-<dt>$ENV[name]
-</dt>
-<dd>Inserts the value of the named environment variable, or an empty string if the
-environment variable is not defined.
-</dd>
-<dt>$filename
-</dt>
-<dd>Inserts the filename provided to <i>ipptool</i> with the "-f" option.
-</dd>
-<dt>$hostname
-</dt>
-<dd>Inserts the hostname from the URI provided to <i>ipptool</i>.
-</dd>
-<dt>$job-id
-</dt>
-<dd>Inserts the last job-id value returned in a test response or 0 if no job-id has
-been seen.
-</dd>
-<dt>$job-uri
-</dt>
-<dd>Inserts the last job-uri value returned in a test response or an empty string if
-no job-uri has been seen.
-</dd>
-<dt>$scheme
-</dt>
-<dd>Inserts the scheme from the URI provided to <i>ipptool</i>.
-</dd>
-<dt>$notify-subscription-id
-</dt>
-<dd>Inserts the last notify-subscription-id value returned in a test response or 0 if
-no notify-subscription-id has been seen.
-</dd>
-<dt>$port
-</dt>
-<dd>Inserts the port number from the URI provided to <i>ipptool</i>.
-</dd>
-<dt>$resource
-</dt>
-<dd>Inserts the resource path from the URI provided to <i>ipptool</i>.
-</dd>
-<dt>$uri
-</dt>
-<dd>Inserts the URI provided to <i>ipptool</i>.
-</dd>
-<dt>$user
-</dt>
-<dd>Inserts the current user's login name.
-</dd>
-<dt>$username
-</dt>
-<dd>Inserts the username from the URI provided to <i>ipptool</i>, if any.
-
-</dd>
+<h3><a name="VARIABLES">Variables</a></h3>
+The
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+program maintains a list of variables that can be used in any literal string or attribute value by specifying "<i>$variable-name</i>". Aside from variables defined using the <i>-d</i> option or <b>DEFINE</b> directive, the following pre-defined variables are available:
+<dl class="man">
+<dt><b>$$</b>
+<dd style="margin-left: 5.0em">Inserts a single "$" character.
+<dt><b>$ENV[</b><i>name</i><b>]</b>
+<dd style="margin-left: 5.0em">Inserts the value of the named environment variable, or an empty string if the environment variable is not defined.
+<dt><b>$filename</b>
+<dd style="margin-left: 5.0em">Inserts the filename provided to
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+with the <i>-f</i> option.
+<dt><b>$filetype</b>
+<dd style="margin-left: 5.0em">Inserts the MIME media type for the filename provided to
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+with the <i>-f</i> option.
+<dt><b>$hostname</b>
+<dd style="margin-left: 5.0em">Inserts the hostname from the URI provided to
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8).</a>
+<dt><b>$job-id</b>
+<dd style="margin-left: 5.0em">Inserts the last "job-id" attribute value returned in a test response or 0 if no "job-id" attribute has been seen.
+<dt><b>$job-uri</b>
+<dd style="margin-left: 5.0em">Inserts the last "job-uri" attribute value returned in a test response or an empty string if no "job-uri" attribute has been seen.
+<dt><b>$notify-subscription-id</b>
+<dd style="margin-left: 5.0em">Inserts the last "notify-subscription-id" attribute value returned in a test response or 0 if no "notify-subscription-id" attribute has been seen.
+<dt><b>$port</b>
+<dd style="margin-left: 5.0em">Inserts the port number from the URI provided to
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8).</a>
+<dt><b>$resource</b>
+<dd style="margin-left: 5.0em">Inserts the resource path from the URI provided to
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8).</a>
+<dt><b>$scheme</b>
+<dd style="margin-left: 5.0em">Inserts the scheme from the URI provided to
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8).</a>
+<dt><b>$uri</b>
+<dd style="margin-left: 5.0em">Inserts the URI provided to
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8).</a>
+<dt><b>$uriuser</b>
+<dd style="margin-left: 5.0em">Inserts the username from the URI provided to
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8),</a>
+if any.
+<dt><b>$user</b>
+<dd style="margin-left: 5.0em">Inserts the current user's login name.
 </dl>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-ipptool.html?TOPIC=Man+Pages'>ipptool(1)</a>, RFC 2911,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
-<br>
-<a href='http://www.iana.org/assignments/ipp-registrations'>http://www.iana.org/assignments/ipp-registrations</a>
-<br>
-<a href='http://www.pwg.org/ipp'>http://www.pwg.org/ipp</a>
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(1),</a>
+CUPS Online Help (<a href="http://localhost:631/help)">http://localhost:631/help)</a>,
+IANA IPP Registry (<a href="http://www.iana.org/assignments/ipp-registrations)">http://www.iana.org/assignments/ipp-registrations)</a>,
+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 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index aceb569e34551ae09fe0fc3e1e2dd391e951ced8..0af3e0b5317e888aa7706dabd6af604a71f8d210 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 lp - print files
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lp
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -c ] [ -d
-<i>destination[/instance]
-</i>] [ -h
-<i>hostname[:port]
-</i>] [ -m ] [ -n
-<i>num-copies
-</i>] [ -o
-<i>option[=value]
-</i>] [ -q
-<i>priority
-</i>] [ -s ] [ -t
-<i>title
-</i>] [ -H
-<i>handling
-</i>] [ -P
-<i>page-list
-</i>] [ -- ] [
-<i>file(s)
-</i>]
+<b>lp</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-c</b>
+] [
+<b>-d </b><i>destination</i>[<b>/</b><i>instance</i>]
+] [
+<b>-h </b><i>hostname</i>[<b>:</b><i>port</i>]
+] [
+<b>-m</b>
+] [
+<b>-n</b>
+<i>num-copies</i>
+] [
+<b>-o </b><i>option</i>[<b>=</b><i>value</i>]
+] [
+<b>-q</b>
+<i>priority</i>
+] [
+<b>-s</b>
+] [
+<b>-t</b>
+<i>title</i>
+] [
+<b>-H</b>
+<i>handling</i>
+] [
+<b>-P</b>
+<i>page-list</i>
+] [
+<b>--</b>
+] [
+<i>file(s)</i>
+]
 <br>
-<b>lp
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -c ] [ -h
-<i>hostname[:port]
-</i>] [ -i
-<i>job-id
-</i>] [ -n
-<i>num-copies
-</i>] [ -o
-<i>option[=value]
-</i>] [ -q
-<i>priority
-</i>] [ -t
-<i>title
-</i>] [ -H
-<i>handling
-</i>] [ -P
-<i>page-list
-</i>]
+<b>lp</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-c</b>
+] [
+<b>-h </b><i>hostname</i>[<b>:</b><i>port</i>]
+] [
+<b>-i</b>
+<i>job-id</i>
+] [
+<b>-n</b>
+<i>num-copies</i>
+] [
+<b>-o </b><i>option</i>[<b>=</b><i>value</i>]
+] [
+<b>-q</b>
+<i>priority</i>
+] [
+<b>-t</b>
+<i>title</i>
+] [
+<b>-H</b>
+<i>handling</i>
+] [
+<b>-P</b>
+<i>page-list</i>
+]
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>lp</i> submits files for printing or alters a pending job. Use
-a filename of "-" to force printing from the standard input.
-<h2 class="title"><a name="THE_DEFAULT_DESTINATION">The Default Destination</a></h2>
-CUPS provides many ways to set the default destination. The "LPDEST" and
-"PRINTER" environment variables are consulted first. If neither are set,
-the current default set using the <a href='man-lpoptions.html?TOPIC=Man+Pages'>lpoptions(1)</a> command is used,
-followed by the default set using the <a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a> command.
+<b>lp</b> submits files for printing or alters a pending job.
+Use a filename of "-" to force printing from the standard input.
+<h3><a name="THE_DEFAULT_DESTINATION">The Default Destination</a></h3>
+CUPS provides many ways to set the default destination. The <b>LPDEST</b> and <b>PRINTER</b> environment variables are consulted first.
+If neither are set, the current default set using the
+<a href="man-lpoptions.html?TOPIC=Man+Pages"><b>lpoptions</b>(1)</a>
+command is used, followed by the default set using the
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8)</a>
+command.
 <h2 class="title"><a name="OPTIONS">Options</a></h2>
 The following options are recognized by <i>lp</i>:
-<dl>
-<dt>--
-</dt>
-<dd></dd>
-<dd>Marks the end of options; use this to print a file whose name
-begins with a dash (-).
-</dd>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Forces encryption when connecting to the server.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Specifies the username to use when connecting to the server.
-</dd>
-<dt>-c
-</dt>
-<dd></dd>
-<dd>This option is provided for backwards-compatibility only. On
-systems that support it, this option forces the print file to be
-copied to the spool directory before printing. In CUPS, print
-files are always sent to the scheduler via IPP which has the
-same effect.
-</dd>
-<dt>-d destination
-</dt>
-<dd></dd>
-<dd>Prints files to the named printer.
-</dd>
-<dt>-h hostname[:port]
-</dt>
-<dd></dd>
-<dd>Chooses an alternate server.
-</dd>
-<dt>-i job-id
-</dt>
-<dd></dd>
-<dd>Specifies an existing job to modify.
-</dd>
-<dt>-m
-</dt>
-<dd></dd>
-<dd>Sends an email when the job is completed.
-</dd>
-<dt>-n copies
-</dt>
-<dd></dd>
-<dd>Sets the number of copies to print from 1 to 100.
-</dd>
-<dt>-o "name=value [name=value ...]"
-</dt>
-<dd></dd>
-<dd>Sets one or more job options.
-</dd>
-<dt>-q priority
-</dt>
-<dd></dd>
-<dd>Sets the job priority from 1 (lowest) to 100 (highest). The
-default priority is 50.
-</dd>
-<dt>-s
-</dt>
-<dd></dd>
-<dd>Do not report the resulting job IDs (silent mode.)
-</dd>
-<dt>-t "name"
-</dt>
-<dd></dd>
-<dd>Sets the job name.
-</dd>
-<dt>-H hh:mm
-</dt>
-<dd></dd>
-<dt>-H hold
-</dt>
-<dd></dd>
-<dt>-H immediate
-</dt>
-<dd></dd>
-<dt>-H restart
-</dt>
-<dd></dd>
-<dt>-H resume
-</dt>
-<dd></dd>
-<dd>Specifies when the job should be printed. A value of <i>immediate</i> will print
-the file immediately, a value of <i>hold</i> will hold the job indefinitely, and
-a UTC time value (HH:MM) will hold the job until the specified UTC (not local)
-time. Use a value of <i>resume</i> with the <i>-i</i> option to resume a held job.
-Use a value of <i>restart</i> with the <i>-i</i> option to restart
-a completed job.
-</dd>
-<dt>-P page-list
-</dt>
-<dd></dd>
-<dd>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.
-</dd>
+<dl class="man">
+<dt><b>--</b>
+<dd style="margin-left: 5.0em">Marks the end of options; use this to print a file whose name begins with a dash (-).
+<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">Specifies the username to use when connecting to the server.
+<dt><b>-c</b>
+<dd style="margin-left: 5.0em">This option is provided for backwards-compatibility only. On systems that support it, this option forces the print file to be copied to the spool directory before printing.
+In CUPS, print files are always sent to the scheduler via IPP which has the same effect.
+<dt><b>-d </b><i>destination</i>
+<dd style="margin-left: 5.0em">Prints files to the named printer.
+<dt><b>-h </b><i>hostname</i>[<b>:</b><i>port</i>]
+<dd style="margin-left: 5.0em">Chooses an alternate server.
+<dt><b>-i </b><i>job-id</i>
+<dd style="margin-left: 5.0em">Specifies an existing job to modify.
+<dt><b>-m</b>
+<dd style="margin-left: 5.0em">Sends an email when the job is completed.
+<dt><b>-n </b><i>copies</i>
+<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.
+<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.
+<dt><b>-s</b>
+<dd style="margin-left: 5.0em">Do not report the resulting job IDs (silent mode.)
+<dt><b>-t "</b><i>name</i><b>"</b>
+<dd style="margin-left: 5.0em">Sets the job name.
+<dt><b>-H </b><i>hh:mm</i>
+<dd style="margin-left: 5.0em"><dt><b>-H hold</b>
+<dd style="margin-left: 5.0em"><dt><b>-H immediate</b>
+<dd style="margin-left: 5.0em"><dt><b>-H restart</b>
+<dd style="margin-left: 5.0em"><dt><b>-H resume</b>
+<dd style="margin-left: 5.0em">Specifies when the job should be printed.
+A value of <i>immediate</i> will print the file immediately, a value of <i>hold</i> will hold the job indefinitely, and a UTC time value (HH:MM) will hold the job until the specified UTC (not local) time.
+Use a value of <i>resume</i> with the <i>-i</i> option to resume a held job.
+Use a value of <i>restart</i> with the <i>-i</i> option to restart a completed job.
+<dt><b>-P </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.
 </dl>
-<h2 class="title"><a name="COMMON_JOB_OPTIONS">Common Job Options</a></h2>
+<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'>lpoptions(1)</a> command, the following generic options are
-available:
-<dl>
-<dt>-o media=size
-</dt>
-<dd></dd>
-<dd>Sets the page size to <i>size</i>. Most printers support at least
-the size names "a4", "letter", and "legal".
-</dd>
-<dt>-o landscape
-</dt>
-<dd></dd>
-<dt>-o orientation-requested=4
-</dt>
-<dd></dd>
-<dd>Prints the job in landscape (rotated 90 degrees).
-</dd>
-<dt>-o sides=one-sided
-</dt>
-<dd></dd>
-<dt>-o sides=two-sided-long-edge
-</dt>
-<dd></dd>
-<dt>-o sides=two-sided-short-edge
-</dt>
-<dd></dd>
-<dd>Prints on one or two sides of the paper. The value
-"two-sided-long-edge" is normally used when printing portrait
-(unrotated) pages, while "two-sided-short-edge" is used for
-landscape pages.
-</dd>
-<dt>-o fit-to-page
-</dt>
-<dd></dd>
-<dd>Scales the print file to fit on the page.
-</dd>
-<dt>-o number-up=2
-</dt>
-<dd></dd>
-<dt>-o number-up=4
-</dt>
-<dd></dd>
-<dt>-o number-up=6
-</dt>
-<dd></dd>
-<dt>-o number-up=9
-</dt>
-<dd></dd>
-<dt>-o number-up=16
-</dt>
-<dd></dd>
-<dd>Prints multiple document pages on each output page.
-</dd>
-<dt>-o cpi=N
-</dt>
-<dd></dd>
-<dd>Sets the number of characters per inch to use when printing a
-text file. The default is 10.
-</dd>
-<dt>-o lpi=N
-</dt>
-<dd></dd>
-<dd>Sets the number of lines per inch to use when printing a text
-file. The default is 6.
-</dd>
-<dt>-o page-bottom=N
-</dt>
-<dd></dd>
-<dt>-o page-left=N
-</dt>
-<dd></dd>
-<dt>-o page-right=N
-</dt>
-<dd></dd>
-<dt>-o page-top=N
-</dt>
-<dd></dd>
-<dd>Sets the page margins when printing text files. The values are in
-points - there are 72 points to the inch.
-</dd>
+<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 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 orientation-requested=4</b>
+<dd style="margin-left: 5.0em">Prints the job in landscape (rotated 90 degrees).
+<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 "#".
+Also, printer and class names are <i>not</i> case-sensitive.
+<p>The <i>-q</i> option accepts a different range of values than the Solaris lp command, matching the IPP job priority values (1-100, 100 is highest priority) instead of the Solaris values (0-39, 0 is highest priority).
 <h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+Print two copies of a document to the default printer:
+<pre class="man">
+
+    lp -n 2 filename
+
+</pre>
 Print a double-sided legal document to a printer called "foo":
-<pre>
+<pre class="man">
+
     lp -d foo -o media=legal -o sides=two-sided-long-edge filename
+
 </pre>
-<p>Print an image across 4 pages:
-<pre>
-    lp -d bar -o scaling=200 filename
-</pre>
-<p>Print a text file with 12 characters per inch, 8 lines per inch, and
-a 1 inch left margin:
-<pre>
-    lp -d bar -o cpi=12 -o lpi=8 -o page-left=72 filename
+Print a presentation document 2-up to a printer called "foo":
+<pre class="man">
+
+    lp -d foo -o number-up=2 filename
 </pre>
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-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 <i>not</i> case-sensitive.
-<p>The "q" option accepts a different range of values than the
-Solaris lp command, matching the IPP job priority values (1-100,
-100 is highest priority) instead of the Solaris values (0-39, 0
-is highest priority).
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cancel.html?TOPIC=Man+Pages'>cancel(1)</a>, <a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a>, <a href='man-lpmove.html?TOPIC=Man+Pages'>lpmove(8)</a>, <a href='man-lpoptions.html?TOPIC=Man+Pages'>lpoptions(1)</a>,
-<a href='man-lpstat.html?TOPIC=Man+Pages'>lpstat(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8),</a>
+<a href="man-lpoptions.html?TOPIC=Man+Pages"><b>lpoptions</b>(1),</a>
+<a href="man-lpq.html?TOPIC=Man+Pages"><b>lpq</b>(1),</a>
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1),</a>
+<a href="man-lprm.html?TOPIC=Man+Pages"><b>lprm</b>(1),</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index 236e71568ff91b8486b5584f41764f972cc2ca4c..1f8502991a06aed4aac715ef73232be26da6dc41 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 lpadmin - configure cups printers and classes
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lpadmin
-</b>[ -E ] [-U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] -d
-<i>destination
-</i><br>
-<b>lpadmin
-</b>[ -E ] [-U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] -p
-<i>destination
-</i>[ -R
-<i>name-default
-</i>]
-<i>option(s)
-</i><br>
-<b>lpadmin
-</b>[ -E ] [-U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] -x
-<i>destination
-</i><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>lpadmin</i> configures printer and class queues provided by
-CUPS. It can also be used to set the server default printer or
-class.
-<p>When specified before the <i>-d</i>, <i>-p</i>, or <i>-x</i>
-options, the <i>-E</i> option forces encryption when connecting to
-the server.
-<p>The first form of the command (<i>-d</i>) sets the default printer
-or class to <i>destination</i>.  Subsequent print jobs submitted
-via the <a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a> or <a href='man-lpr.html?TOPIC=Man+Pages'>lpr(1)</a> commands will use this
-destination unless the user specifies otherwise with the
-<a href='man-lpoptions.html?TOPIC=Man+Pages'>lpoptions(1)</a> command.
-<p>The second form of the command (<i>-p</i>) configures the named
-printer or class.  The additional options are described below.
-<p>The third form of the command (<i>-x</i>) deletes the printer or
-class <i>destination</i>. Any jobs that are pending for the
-destination will be removed and any job that is currently printed
-will be aborted.
-<h2 class="title"><a name="CONFIGURATION_OPTIONS">Configuration Options</a></h2>
-The following options are recognized when configuring a printer
-queue:
-<dl>
-<dt>-c class
-</dt>
-<dd></dd>
-<dd>Adds the named <i>printer</i> to <i>class</i>.  If <i>class</i> does
-not exist it is created automatically.
-</dd>
-<dt>-i interface
-</dt>
-<dd></dd>
-<dd>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.
-</dd>
-<dt>-m model
-</dt>
-<dd></dd>
-<dd>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. Use the <i>-m</i>
-option with the <a href='man-lpinfo.html?TOPIC=Man+Pages'>lpinfo(8)</a> command to get a list of supported models.
-</dd>
-<dt>-o cupsIPPSupplies=true
-</dt>
-<dd></dd>
-<dt>-o cupsIPPSupplies=false
-</dt>
-<dd></dd>
-<dd>Specifies whether IPP supply level values should be reported.
-</dd>
-<dt>-o cupsSNMPSupplies=true
-</dt>
-<dd></dd>
-<dt>-o cupsSNMPSupplies=false
-</dt>
-<dd></dd>
-<dd>Specifies whether SNMP supply level (RFC 3805) values should be reported.
-</dd>
-<dt>-o job-k-limit=value
-</dt>
-<dd></dd>
-<dd>Sets the kilobyte limit for per-user quotas. The value is an
-integer number of kilobytes; one kilobyte is 1024 bytes.
-</dd>
-<dt>-o job-page-limit=value
-</dt>
-<dd></dd>
-<dd>Sets the page limit for per-user quotas. The value is the integer
-number of pages that can be printed; double-sided pages are
-counted as two pages.
-</dd>
-<dt>-o job-quota-period=value
-</dt>
-<dd></dd>
-<dd>Sets the accounting period for per-user quotas. The value is an
-integer number of seconds; 86,400 seconds are in one day.
-</dd>
-<dt>-o job-sheets-default=banner
-</dt>
-<dd></dd>
-<dt>-o job-sheets-default=banner,banner
-</dt>
-<dd></dd>
-<dd>Sets the default banner page(s) to use for print jobs.
-</dd>
-<dt>-o name=value
-</dt>
-<dd></dd>
-<dd>Sets a PPD option for the printer. PPD options can be listed using the <i>-l</i>
-option with the <a href='man-lpoptions.html?TOPIC=Man+Pages'>lpoptions(1)</a> command.
-</dd>
-<dt>-o name-default=value
-</dt>
-<dd></dd>
-<dd>Sets a default server-side option for the destination. Any print-time
-option can be defaulted, e.g. "-o cpi-default=17" to set the default
-"cpi" option value to 17.
-</dd>
-<dt>-o port-monitor=name
-</dt>
-<dd></dd>
-<dd>Sets the binary communications program to use when printing,
-"none", "bcp", or "tbcp". The default program is "none". The
-specified port monitor must be listed in the printer's PPD file.
-</dd>
-<dt>-o printer-error-policy=name
-</dt>
-<dd></dd>
-<dd>Sets the error policy to be used when the printer backend is
-unable to send the job to the printer. The name must be one of
-"abort-job", "retry-job", "retry-current-job", or "stop-printer". The default
-error policy is "stop-printer" for printers and "retry-current-job" for
+<b>lpadmin</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+]
+<b>-d</b>
+<i>destination</i>
+<br>
+<b>lpadmin</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+]
+<b>-p</b>
+<i>destination</i>
+[
+<b>-R</b>
+<i>name-default</i>
+]
+<i>option(s)</i>
+<br>
+<b>lpadmin</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+]
+<b>-x</b>
+<i>destination</i>
+<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
+<b>lpadmin</b> configures printer and class queues provided by CUPS.
+It can also be used to set the server default printer or class.
+<p>When specified before the <i>-d</i>, <i>-p</i>, or <i>-x</i> options, the <i>-E</i> option forces encryption when connecting to the server.
+<p>The first form of the command (<i>-d</i>) sets the default printer or class to <i>destination</i>.
+Subsequent print jobs submitted via the
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1)</a>
+or
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1)</a>
+commands will use this destination unless the user specifies otherwise with the
+<a href="man-lpoptions.html?TOPIC=Man+Pages"><b>lpoptions</b>(1)</a>
+command.
+<p>The second form of the command (<i>-p</i>) configures the named printer or class.  The additional options are described below.
+<p>The third form of the command (<i>-x</i>) deletes the printer or class <i>destination</i>.
+Any jobs that are pending for the destination will be removed and any job that is currently printed will be aborted.
+<h2 class="title"><a name="OPTIONS">Options</a></h2>
+The following options are recognized when configuring a printer queue:
+<dl class="man">
+<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>-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.
+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.
+<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.
+<dt><b>-o cupsSNMPSupplies=true</b>
+<dd style="margin-left: 5.0em"><dt><b>-o cupsSNMPSupplies=false</b>
+<dd style="margin-left: 5.0em">Specifies whether SNMP supply level (RFC 3805) values should be reported.
+<dt><b>-o job-k-limit=</b><i>value</i>
+<dd style="margin-left: 5.0em">Sets the kilobyte limit for per-user quotas.
+The value is an integer number of kilobytes; one kilobyte is 1024 bytes.
+<dt><b>-o job-page-limit=</b><i>value</i>
+<dd style="margin-left: 5.0em">Sets the page limit for per-user quotas.
+The value is the integer number of pages that can be printed; double-sided pages are counted as two pages.
+<dt><b>-o job-quota-period=</b><i>value</i>
+<dd style="margin-left: 5.0em">Sets the accounting period for per-user quotas.
+The value is an integer number of seconds; 86,400 seconds are in one day.
+<dt><b>-o job-sheets-default=</b><i>banner</i>
+<dd style="margin-left: 5.0em"><dt><b>-o job-sheets-default=</b><i>banner</i><b>,</b><i>banner</i>
+<dd style="margin-left: 5.0em">Sets the default banner page(s) to use for print jobs.
+<dt><b>-o </b><i>name</i><b>=</b><i>value</i>
+<dd style="margin-left: 5.0em">Sets a PPD option for the printer.
+PPD options can be listed using the <i>-l</i> option with the
+<a href="man-lpoptions.html?TOPIC=Man+Pages"><b>lpoptions</b>(1)</a>
+command.
+<dt><b>-o </b><i>name</i><b>-default=</b><i>value</i>
+<dd style="margin-left: 5.0em">Sets a default server-side option for the destination.
+Any print-time option can be defaulted, e.g., "-o number-up-default=2" to set the default "number-up" option value to 2.
+<dt><b>-o port-monitor=</b><i>name</i>
+<dd style="margin-left: 5.0em">Sets the binary communications program to use when printing, "none", "bcp", or "tbcp".
+The default program is "none".
+The specified port monitor must be listed in the printer's PPD file.
+<dt><b>-o printer-error-policy=</b><i>name</i>
+<dd style="margin-left: 5.0em">Sets the error policy to be used when the printer backend is unable to send the job to the printer.
+The name must be one of "abort-job", "retry-job", "retry-current-job", or "stop-printer".
+The default error policy is "stop-printer" for printers and "retry-current-job" for
 classes.
-</dd>
-<dt>-o printer-is-shared=true/false
-</dt>
-<dd></dd>
-<dd>Sets the destination to shared/published or unshared/unpublished.
-Shared/published destinations are publicly announced by the server
-on the LAN based on the browsing configuration in
-<b>cupsd.conf</b>, while unshared/unpublished destinations are not
-announced. The default value is "true".
-</dd>
-<dt>-o printer-op-policy=name
-</dt>
-<dd></dd>
-<dd>Sets the IPP operation policy associated with the destination. The
-name must be defined in the <b>cupsd.conf</b> in a Policy section.
+<dt><b>-o printer-is-shared=true</b>
+<dd style="margin-left: 5.0em"><dt><b>-o printer-is-shared=false</b>
+<dd style="margin-left: 5.0em">Sets the destination to shared/published or unshared/unpublished.
+Shared/published destinations are publicly announced by the server on the LAN based on the browsing configuration in <i>cupsd.conf</i>, while unshared/unpublished destinations are not announced.
+The default value is "true".
+<dt><b>-o printer-op-policy=</b><i>name</i>
+<dd style="margin-left: 5.0em">Sets the IPP operation policy associated with the destination.
+The name must be defined in the <i>cupsd.conf</i> in a Policy section.
 The default operation policy is "default".
-</dd>
-<dt>-R name-default
-</dt>
-<dd></dd>
-<dd>Deletes the named option from <i>printer</i>.
-</dd>
-<dt>-r class
-</dt>
-<dd></dd>
-<dd>Removes the named <i>printer</i> from <i>class</i>.  If the
-resulting class becomes empty it is removed.
-</dd>
-<dt>-u allow:user,user,@group
-</dt>
-<dd></dd>
-<dt>-u deny:user,user,@group
-</dt>
-<dd></dd>
-<dt>-u allow:all
-</dt>
-<dd></dd>
-<dt>-u deny:none
-</dt>
-<dd></dd>
-<dd>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.
-</dd>
-<dt>-v "device-uri"
-</dt>
-<dd></dd>
-<dd>Sets the <i>device-uri</i> attribute of the printer queue. Use the <i>-v</i>
-option with the <a href='man-lpinfo.html?TOPIC=Man+Pages'>lpinfo(8)</a> command to get a list of supported device URIs
-and schemes.
-</dd>
-<dt>-D "info"
-</dt>
-<dd></dd>
-<dd>Provides a textual description of the destination.
-</dd>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Enables the destination and accepts jobs; this is the same as running the
-<a href='man-cupsaccept.html?TOPIC=Man+Pages'>cupsaccept(8)</a> and <a href='man-cupsenable.html?TOPIC=Man+Pages'>cupsenable(8)</a> programs on the destination.
-</dd>
-<dt>-L "location"
-</dt>
-<dd></dd>
-<dd>Provides a textual location of the destination.
-</dd>
-<dt>-P ppd-file
-</dt>
-<dd></dd>
-<dd>Specifies a PostScript Printer Description file to use with the
-printer. If specified, this option overrides the <i>-i</i> option
-(interface script).
-</dd>
+<dt><b>-R </b><i>name</i><b>-default</b>
+<dd style="margin-left: 5.0em">Deletes the named option from <i>printer</i>.
+<dt><b>-r </b><i>class</i>
+<dd style="margin-left: 5.0em">Removes the named <i>printer</i> from <i>class</i>.
+If the resulting class becomes empty it is removed.
+<dt><b>-u allow:</b>{<i>user</i>|<b>@</b><i>group</i>}{<b>,</b><i>user</i>|<b>,@</b><i>group</i>}*
+<dd style="margin-left: 5.0em"><dt><b>-u deny:</b>{<i>user</i>|<b>@</b><i>group</i>}{<b>,</b><i>user</i>|<b>,@</b><i>group</i>}*
+<dd style="margin-left: 5.0em"><dt><b>-u allow:all</b>
+<dd style="margin-left: 5.0em"><dt><b>-u deny:none</b>
+<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.
+<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
+<a href="man-lpinfo.html?TOPIC=Man+Pages"><b>lpinfo</b>(8)</a>
+command to get a list of supported device URIs and schemes.
+<dt><b>-D "</b><i>info</i><b>"</b>
+<dd style="margin-left: 5.0em">Provides a textual description of the destination.
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Enables the destination and accepts jobs; this is the same as running the
+<a href="man-cupsaccept.html?TOPIC=Man+Pages"><b>cupsaccept</b>(8)</a>
+and
+<a href="man-cupsenable.html?TOPIC=Man+Pages"><b>cupsenable</b>(8)</a>
+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="COMPATIBILITY">Compatibility</a></h2>
-Unlike the System V printing system, CUPS allows printer names to
-contain any printable character except SPACE, TAB, "/", or "#".
+<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 "#".
 Also, printer and class names are <i>not</i> case-sensitive.
-Finally, the CUPS version of <i>lpadmin</i> may ask the user for
-an access password depending on the printing system
-configuration. This differs from the System V version which
-requires the root user to execute this command.
-<h2 class="title"><a name="LIMITATIONS">Limitations</a></h2>
-The CUPS version of <i>lpadmin</i> does not support all of the
-System V or Solaris printing system configuration options.
+Finally, the CUPS version of <b>lpadmin</b> may ask the user for an access password depending on the printing system configuration.
+This differs from the System V version which requires the root user to execute this command.
+<h2 class="title"><a name="NOTES">Notes</a></h2>
+The CUPS version of <b>lpadmin</b> does not support all of the System V or Solaris printing system configuration options.
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cupsaccept.html?TOPIC=Man+Pages'>cupsaccept(8)</a>, <a href='man-cupsenable.html?TOPIC=Man+Pages'>cupsenable(8)</a>, <a href='man-lpinfo.html?TOPIC=Man+Pages'>lpinfo(8)</a>,
-<a href='man-lpoptions.html?TOPIC=Man+Pages'>lpoptions(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cupsaccept.html?TOPIC=Man+Pages"><b>cupsaccept</b>(8),</a>
+<a href="man-cupsenable.html?TOPIC=Man+Pages"><b>cupsenable</b>(8),</a>
+<a href="man-lpinfo.html?TOPIC=Man+Pages"><b>lpinfo</b>(8),</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index c322c9566a31ce83c15f160760e268fbbd973c54..c79e47061deb9924ded877661db3c9c60e710425 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 lpc - line printer control program
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lpc
-</b>[
-<i>command
-</i>[
-<i>parameter(s)
-</i>] ]
+<b>lpc</b>
+[
+<i>command</i>
+[
+<i>parameter(s)</i>
+] ]
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>lpc</i> provides limited control over printer and class queues
-provided by CUPS. It can also be used to query the state of
-queues.
-<p>If no command is specified on the command-line, lpc will
-display a prompt and accept commands from the standard input.
-<h2 class="title"><a name="COMMANDS">Commands</a></h2>
-The <i>lpc</i> program accepts a subset of commands accepted by
-the Berkeley <i>lpc</i> program of the same name:
-<dl>
-<dt>exit
-</dt>
-<dd></dd>
-<dd>Exits the command interpreter.
-</dd>
-<dt>help [command]
-</dt>
-<dd></dd>
-<dt>? [command]
-</dt>
-<dd></dd>
-<dd>Displays a short help message.
-</dd>
-<dt>quit
-</dt>
-<dd></dd>
-<dd>Exits the command interpreter.
-</dd>
-<dt>status [queue]
-</dt>
-<dd></dd>
-<dd>Displays the status of one or more printer or class queues.
-</dd>
+<b>lpc</b> provides limited control over printer and class queues provided by CUPS. It can also be used to query the state of queues.
+<p>If no command is specified on the command-line, <b>lpc</b> displays a prompt and accepts commands from the standard input.
+<h3><a name="COMMANDS">Commands</a></h3>
+The <b>lpc</b> program accepts a subset of commands accepted by the Berkeley <b>lpc</b> program of the same name:
+<dl class="man">
+<dt><b>exit</b>
+<dd style="margin-left: 5.0em">Exits the command interpreter.
+<dt><b>help </b>[<i>command</i>]
+<dd style="margin-left: 5.0em"><dt><b>? </b>[<i>command</i>]
+<dd style="margin-left: 5.0em">Displays a short help message.
+<dt><b>quit</b>
+<dd style="margin-left: 5.0em">Exits the command interpreter.
+<dt><b>status </b>[<i>queue</i>]
+<dd style="margin-left: 5.0em">Displays the status of one or more printer or class queues.
 </dl>
-<h2 class="title"><a name="LIMITATIONS">Limitations</a></h2>
-Since <i>lpc</i> is geared towards the Berkeley printing system,
-it is impossible to use <i>lpc</i> to configure printer or class
-queues provided by CUPS.  To configure printer or class queues
-you must use the <a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a> command or another
-CUPS-compatible client with that functionality.
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-The CUPS version of <i>lpc</i> does not implement all of the
-standard Berkeley or LPRng commands.
+<h2 class="title"><a name="NOTES">Notes</a></h2>
+Since <b>lpc</b> is geared towards the Berkeley printing system, it is impossible to use <b>lpc</b> to configure printer or class queues provided by CUPS.
+To configure printer or class queues you must use the
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8)</a>
+command or another CUPS-compatible client with that functionality.
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cancel.html?TOPIC=Man+Pages'>cancel(1)</a>, <a href='man-cupsaccept.html?TOPIC=Man+Pages'>cupsaccept(8)</a>, <a href='man-cupsenable.html?TOPIC=Man+Pages'>cupsenable(8)</a>,
-<a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>, <a href='man-lpr.html?TOPIC=Man+Pages'>lpr(1)</a>, <a href='man-lprm.html?TOPIC=Man+Pages'>lprm(1)</a>, <a href='man-lpstat.html?TOPIC=Man+Pages'>lpstat(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-cupsaccept.html?TOPIC=Man+Pages"><b>cupsaccept</b>(8),</a>
+<a href="man-cupsenable.html?TOPIC=Man+Pages"><b>cupsenable</b>(8),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8),</a>
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1),</a>
+<a href="man-lprm.html?TOPIC=Man+Pages"><b>lprm</b>(1),</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index cfa4eb63344f1211ab6091125a13b997a224280c..876e1f693fca39cb09ea00c065df6a1833570fc8 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 lpinfo - show available devices or drivers
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lpinfo
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] [ -l ] [ --device-id
-<i>device-id-string
-</i>] [ --exclude-schemes
-<i>scheme-list
-</i>] [ --include-schemes
-<i>scheme-list
-</i>] [ --language
-<i>locale
-</i>] [ --make-and-model
-<i>name
-</i>] [ --product
-<i>name
-</i>] -m
+<b>lpinfo</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>-l</b>
+] [
+<b>--device-id</b>
+<i>device-id-string</i>
+] [
+<b>--exclude-schemes</b>
+<i>scheme-list</i>
+] [
+<b>--include-schemes</b>
+<i>scheme-list</i>
+] [
+<b>--language</b>
+<i>locale</i>
+] [
+<b>--make-and-model</b>
+<i>name</i>
+] [
+<b>--product</b>
+<i>name</i>
+]
+<b>-m</b>
 <br>
-<b>lpinfo
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] [ -l ] [ --exclude-schemes
-<i>scheme-list
-</i>] [ --include-schemes
-<i>scheme-list
-</i>] [ --timeout
-<i>seconds
-</i>] -v
+<b>lpinfo</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>-l</b>
+] [
+<b>--exclude-schemes</b>
+<i>scheme-list</i>
+] [
+<b>--include-schemes</b>
+<i>scheme-list</i>
+] [
+<b>--timeout</b>
+<i>seconds</i>
+]
+<b>-v</b>
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>lpinfo</i> lists the available devices or drivers known to the
-CUPS server. The first form (<i>-m</i>) lists the available
-drivers, while the second form (<i>-v</i>) lists the available
-devices.
+<b>lpinfo</b> lists the available devices or drivers known to the CUPS server.
+The first form (<i>-m</i>) lists the available drivers, while the second form (<i>-v</i>) lists the available devices.
 <h2 class="title"><a name="OPTIONS">Options</a></h2>
-<i>lpinfo</i> accepts the following options:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Forces encryption when connecting to the server.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Sets the username to use when connecting to the server.
-</dd>
-<dt>-h server[:port]
-</dt>
-<dd></dd>
-<dd>Selects an alternate server.
-</dd>
-<dt>-l
-</dt>
-<dd></dd>
-<dd>Shows a "long" listing of devices or drivers.
-</dd>
-<dt>--device-id device-id-string
-</dt>
-<dd></dd>
-<dd>Specifies the IEEE-1284 device ID to match when listing drivers with the
-<i>-m</i> option.
-</dd>
-<dt>--exclude-schemes scheme-list
-</dt>
-<dd></dd>
-<dd>Specifies a comma-separated list of device or PPD schemes that should be
-excluded from the results. Static PPD files use the "file" scheme.
-</dd>
-<dt>--include-schemes scheme-list
-</dt>
-<dd></dd>
-<dd>Specifies a comma-separated list of device or PPD schemes that should be
-included in the results. Static PPD files use the "file" scheme.
-</dd>
-<dt>--language locale
-</dt>
-<dd></dd>
-<dd>Specifies the language to match when listing drivers with the <i>-m</i> option.
-</dd>
-<dt>--make-and-model name
-</dt>
-<dd></dd>
-<dd>Specifies the make and model to match when listing drivers with the <i>-m</i>
-option.
-</dd>
-<dt>--product name
-</dt>
-<dd></dd>
-<dd>Specifies the product to match when listing drivers with the <i>-m</i> option.
-</dd>
-<dt>--timeout seconds
-</dt>
-<dd></dd>
-<dd>Specifies the timeout when listing devices with the <i>-v</i> option.
-</dd>
+<b>lpinfo</b> accepts the following options:
+<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>
+<dd style="margin-left: 5.0em">Shows a "long" listing of devices or drivers.
+<dt><b>--device-id </b><i>device-id-string</i>
+<dd style="margin-left: 5.0em">Specifies the IEEE-1284 device ID to match when listing drivers with the <i>-m</i> option.
+<dt><b>--exclude-schemes </b><i>scheme-list</i>
+<dd style="margin-left: 5.0em">Specifies a comma-delimited list of device or PPD schemes that should be excluded from the results.
+Static PPD files use the "file" scheme.
+<dt><b>--include-schemes </b><i>scheme-list</i>
+<dd style="margin-left: 5.0em">Specifies a comma-delimited list of device or PPD schemes that should be included in the results.
+Static PPD files use the "file" scheme.
+<dt><b>--language </b><i>locale</i>
+<dd style="margin-left: 5.0em">Specifies the language to match when listing drivers with the <i>-m</i> option.
+<dt><b>--make-and-model </b><i>name</i>
+<dd style="margin-left: 5.0em">Specifies the make and model to match when listing drivers with the <i>-m</i> option.
+<dt><b>--product </b><i>name</i>
+<dd style="margin-left: 5.0em">Specifies the product to match when listing drivers with the <i>-m</i> option.
+<dt><b>--timeout </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies the timeout when listing devices with the <i>-v</i> option.
 </dl>
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
 The <i>lpinfo</i> command is unique to CUPS.
+<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+List all devices:
+<pre class="man">
+
+    lpinfo -v
+
+</pre>
+List all drivers:
+<pre class="man">
+
+    lpinfo -m
+
+</pre>
+List drivers matching "HP LaserJet":
+<pre class="man">
+
+    lpinfo --make-and-model "HP LaserJet" -m
+</pre>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index 968424b29133cdcbd22fb2b9ba5c8913d578966c..526c084e0d01c49b54fa42fb2047a1f7114001fb 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 lpmove - move a job or all jobs to a new destination
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lpmove
-</b>[ -E ] [ -h
-<i>server[:port]
-</i>] [ -U
-<i>username
-</i>]
-<i>job destination
-</i><br>
-<b>lpmove
-</b>[ -E ] [ -h
-<i>server[:port]
-</i>] [ -U
-<i>username
-</i>]
-<i>source destination
-</i><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<b>lpmove</b> moves the specified <i>job</i> or all jobs from
-<i>source</i> to <i>destination</i>. <i>job</i> can be the job ID
-number or the old destination and job ID:
+<b>lpmove</b>
+[
+<b>-E</b>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>-U</b>
+<i>username</i>
+]
+<i>job</i>
+<i>destination</i>
 <br>
-<pre>
-
-     lpmove 123 newprinter
-     lpmove oldprinter-123 newprinter
-</pre>
+<b>lpmove</b>
+[
+<b>-E</b>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>-U</b>
+<i>username</i>
+]
+<i>source</i>
+<i>destination</i>
+<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
+<b>lpmove</b> moves the specified <i>job</i> or all jobs from <i>source</i> to <i>destination</i>. <i>job</i> can be the job ID number or the old destination and job ID.
 <h2 class="title"><a name="OPTIONS">Options</a></h2>
-The <i>lpmove</i> command supports the following options:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Forces encryption when connecting to the server.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Specifies an alternate username.
-</dd>
-<dt>-h server[:port]
-</dt>
-<dd></dd>
-<dd>Specifies an alternate server.
-</dd>
+The <b>lpmove</b> command supports the following options:
+<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">Specifies an alternate username.
+<dt><b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+<dd style="margin-left: 5.0em">Specifies an alternate server.
 </dl>
+<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+Move job 123 from "oldprinter" to "newprinter":
+<pre class="man">
+
+    lpmove 123 newprinter
+
+            <i>or</i>
+
+    lpmove oldprinter-123 newprinter
+
+</pre>
+Move all jobs from "oldprinter" to "newprinter":
+<pre class="man">
+
+    lpmove oldprinter newprinter
+</pre>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cancel.html?TOPIC=Man+Pages'>cancel(1)</a>, <a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>,
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1),</a>
+<a href="man-lprm.html?TOPIC=Man+Pages"><b>lprm</b>(1),</a>
 <br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index c5c2fa7ca76f8fd4dff20d17b29010cdf5ba422a..2e171296b5da1ee3e39e265c4f0f623be512b7b1 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 lpoptions - display or set printer options and defaults
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lpoptions
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] -d
-<i>destination[/instance]
-</i>[ -o
-<i>option[=value]
-</i>] ... [ -o
-<i>option[=value]
-</i>]
+<b>lpoptions</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+]
+<b>-d </b><i>destination</i>[<b>/</b><i>instance</i>]
+[
+<b>-l</b>
+]
 <br>
-<b>lpoptions
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] [ -p
-<i>destination[/instance]
-</i>] -l
+<b>lpoptions</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>-p </b><i>destination</i>[<b>/</b><i>instance</i>]
+]
+<b>-o </b><i>option</i>[<b>=</b><i>value</i>] ...
 <br>
-<b>lpoptions
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] [ -o
-<i>option[=value]
-</i>] ... [ -o
-<i>option[=value]
-</i>] [ -p
-<i>destination[/instance]
-</i>] -r
-<i>option
-</i><br>
-<b>lpoptions
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] -x
-<i>destination[/instance]
-</i><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>lpoptions</i> displays or sets printer options and defaults.
-<i>lpoptions</i> shows the default printer options when run with no
-arguments. Other options include:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Enables encryption when communicating with the CUPS server.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Uses an alternate username.
-</dd>
-<dt>-d destination[/instance]
-</dt>
-<dd></dd>
-<dd>Sets the user default printer to <i>destination</i>. If <i>instance</i>
-is supplied then that particular instance is used. This option
-overrides the system default printer for the current user.
-</dd>
-<dt>-h server[:port]
-</dt>
-<dd></dd>
-<dd>Uses an alternate server.
-</dd>
-<dt>-l
-</dt>
-<dd></dd>
-<dd>Lists the printer specific options and their current settings.
-</dd>
-<dt>-o option[=value]
-</dt>
-<dd></dd>
-<dd>Specifies a new option for the named destination.
-</dd>
-<dt>-p destination[/instance]
-</dt>
-<dd></dd>
-<dd>Sets the destination and instance, if specified, for any options
-that follow. If the named instance does not exist then it is
-created.
-</dd>
-<dt>-r option
-</dt>
-<dd></dd>
-<dd>Removes the specified option for the named destination.
-</dd>
-<dt>-x destination[/instance]
-</dt>
-<dd></dd>
-<dd>Removes the options for the named destination and instance, if
-specified. If the named instance does not exist then this does
-nothing.
-</dd>
+<b>lpoptions</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>-p </b><i>destination</i>[<b>/</b><i>instance</i>]
+]
+<b>-r</b>
+<i>option</i>
+<br>
+<b>lpoptions</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+]
+<b>-x </b><i>destination</i>[<b>/</b><i>instance</i>]
+<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
+<b>lpoptions</b> displays or sets printer options and defaults.
+If no printer is specified using the <i>-p</i> option, the default printer is used as described in
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1).</a>
+<p>If no <i>-l</i>, <i>-o</i>, or <i>-r</i> options are specified, the current options are reported on the standard output.
+<p>Options set with the <b>lpoptions</b> command are used by the
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1)</a>
+and
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1)</a>
+commands when submitting jobs.
+<p>When run by the root user, <b>lpoptions</b> gets and sets default options and instances for all users in the <i>/etc/cups/lpoptions</i> file.
+Otherwise, the per-user defaults are managed in the <i>~/.cups/lpoptions</i> file.
+<h2 class="title"><a name="OPTIONS">Options</a></h2>
+<b>lpoptions</b> supports the following options:
+<dl class="man">
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Enables encryption when communicating with the CUPS server.
+<dt><b>-U </b><i>username</i>
+<dd style="margin-left: 5.0em">Uses an alternate username.
+<dt><b>-d </b><i>destination</i>[<b>/</b><i>instance</i>]
+<dd style="margin-left: 5.0em">Sets the user default printer to <i>destination</i>.
+If <i>instance</i> is supplied then that particular instance is used.
+This option overrides the system default printer for the current user.
+<dt><b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+<dd style="margin-left: 5.0em">Uses an alternate server.
+<dt><b>-l</b>
+<dd style="margin-left: 5.0em">Lists the printer specific options and their current settings.
+<dt><b>-o </b><i>option</i>[<b>=</b><i>value</i>]
+<dd style="margin-left: 5.0em">Specifies a new option for the named destination.
+<dt><b>-p </b><i>destination</i>[<b>/</b><i>instance</i>]
+<dd style="margin-left: 5.0em">Sets the destination and instance, if specified, for any options that follow.
+If the named instance does not exist then it is created.
+Destinations can only be created using the
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8)</a>
+program.
+<dt><b>-r </b><i>option</i>
+<dd style="margin-left: 5.0em">Removes the specified option from the named destination.
+<dt><b>-x </b><i>destination</i>[<b>/</b><i>instance</i>]
+<dd style="margin-left: 5.0em">Removes the options for the named destination and instance, if specified.
+If the named instance does not exist then this does nothing.
+Destinations can only be removed using the
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8)</a>
+command.
 </dl>
-<p>If no options are specified using the <i>-o</i> option, then the
-current options for the named printer are reported on the
-standard output.
-<p>Options set with the <i>lpoptions</i> command are used by the
-<a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a> and <a href='man-lpr.html?TOPIC=Man+Pages'>lpr(1)</a> commands when submitting jobs.
-<h2 class="title"><a name="ROOT_ACCOUNT_OPTIONS">Root Account Options</a></h2>
-When run by the root user, <i>lpoptions</i> gets and sets default
-options and instances for <i>all users</i> in the
-/etc/cups/lpoptions file.
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-The <i>lpoptions</i> command is unique to CUPS.
 <h2 class="title"><a name="FILES">Files</a></h2>
-~/.cups/lpoptions - user defaults and instances created by non-root
-users.
+<i>~/.cups/lpoptions</i> - user defaults and instances created by non-root users.
 <br>
-/etc/cups/lpoptions - system-wide defaults and instances
-created by the root user.
+<i>/etc/cups/lpoptions</i> - system-wide defaults and instances created by the root user.
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+The <b>lpoptions</b> command is unique to CUPS.
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cancel.html?TOPIC=Man+Pages'>cancel(1)</a>, <a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>, <a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a>, <a href='man-lpr.html?TOPIC=Man+Pages'>lpr(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8),</a>
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1),</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
diff --git a/doc/help/man-lppasswd.html b/doc/help/man-lppasswd.html
deleted file mode 100644 (file)
index a24bd20..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<!-- SECTION: Man Pages -->
-<head>
-       <link rel="stylesheet" type="text/css" href="../cups-printable.css">
-       <title>lppasswd(1)</title>
-</head>
-<body>
-<h1 class="title">lppasswd(1)</h1>
-<h2 class="title"><a name="NAME">Name</a></h2>
-lppasswd - add, change, or delete digest passwords.
-<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lppasswd
-</b>[
-<i>username
-</i>]
-<br>
-<b>lppasswd
-</b>-a [ -g
-<i>groupname
-</i>]
-<i>username
-</i><br>
-<b>lppasswd
-</b>-x
-<i>username
-</i><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>lppasswd</i> adds, changes, or deletes passwords in the CUPS
-digest password file, <i>passwd.md5</i>. When run by a normal
-user, <i>lppasswd</i> will prompt for the old and new passwords.
-When run by the super-user, <i>lppasswd</i> can add new accounts
-(<i>-a username</i>), change existing accounts (<i>username</i>),
-or delete accounts (<i>-x username</i>) in the digest password
-file. Digest usernames do not have to match local UNIX usernames.
-<h2 class="title"><a name="OPTIONS">Options</a></h2>
-<i>lppasswd</i> supports the following options:
-<dl>
-<dt>-g groupname
-</dt>
-<dd></dd>
-<dd>Specifies a group other than the default system group.
-</dd>
-</dl>
-<h2 class="title"><a name="SECURITY_ISSUES">Security Issues</a></h2>
-By default, the <i>lppasswd</i> program is not installed to allow ordinary
-users to change their passwords. To enable this, the <i>lppasswd</i> command
-must be made setuid to root with the command:
-<br>
-<pre>
-chmod u+s lppasswd
-</pre>
-<p>While every attempt has been made to make <i>lppasswd</i> secure against
-exploits that could grant super-user privileges to unprivileged users,
-paranoid system administrators may wish to use Basic authentication with
-accounts managed by PAM instead.
-<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>, <a href='man-lpr.html?TOPIC=Man+Pages'>lpr(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
-<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
-
-</body>
-</html>
index 0d1c5b1cbd137a0774374cd16b51d3000b27c6db..8eecc512dec09b179fd09fba42a953f469f5b300 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 lpq - show printer queue status
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lpq
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] [ -P
-<i>destination[/instance]
-</i>] [ -a ] [ -l ] [
-<i>+interval
-</i>]
+<b>lpq</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>-P </b><i>destination</i>[<b>/</b><i>instance</i>]
+] [
+<b>-a</b>
+] [
+<b>-l</b>
+] [
+<b>+</b><i>interval</i>
+]
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>lpq</i> shows the current print queue status on the named
-printer. Jobs queued on the default destination will be shown if
-no printer or class is specified on the command-line.
-<p>The <i>+interval</i> option allows you to continuously report the
-jobs in the queue until the queue is empty; the list of jobs is
-shown once every <i>interval</i> seconds.
+<b>lpq</b> shows the current print queue status on the named printer.
+Jobs queued on the default destination will be shown if no printer or class is specified on the command-line.
+<p>The <i>+interval</i> option allows you to continuously report the jobs in the queue until the queue is empty; the list of jobs is shown once every <i>interval</i> seconds.
 <h2 class="title"><a name="OPTIONS">Options</a></h2>
-<i>lpq</i> supports the following options:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Forces encryption when connecting to the server.
-</dd>
-<dt>-P destination[/instance]
-</dt>
-<dd></dd>
-<dd>Specifies an alternate printer or class name.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Specifies an alternate username.
-</dd>
-<dt>-a
-</dt>
-<dd></dd>
-<dd>Reports jobs on all printers.
-</dd>
-<dt>-h server[:port]
-</dt>
-<dd></dd>
-<dd>Specifies an alternate server.
-</dd>
-<dt>-l
-</dt>
-<dd></dd>
-<dd>Requests a more verbose (long) reporting format.
-</dd>
+<b>lpq</b> supports the following options:
+<dl class="man">
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Forces encryption when connecting to the server.
+<dt><b>-P </b><i>destination</i>[<b>/</b><i>instance</i>]
+<dd style="margin-left: 5.0em">Specifies an alternate printer or class name.
+<dt><b>-U </b><i>username</i>
+<dd style="margin-left: 5.0em">Specifies an alternate username.
+<dt><b>-a</b>
+<dd style="margin-left: 5.0em">Reports jobs on all printers.
+<dt><b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+<dd style="margin-left: 5.0em">Specifies an alternate server.
+<dt><b>-l</b>
+<dd style="margin-left: 5.0em">Requests a more verbose (long) reporting format.
 </dl>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cancel.html?TOPIC=Man+Pages'>cancel(1)</a>, <a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>, <a href='man-lpr.html?TOPIC=Man+Pages'>lpr(1)</a>, <a href='man-lprm.html?TOPIC=Man+Pages'>lprm(1)</a>,
-<a href='man-lpstat.html?TOPIC=Man+Pages'>lpstat(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1),</a>
+<a href="man-lprm.html?TOPIC=Man+Pages"><b>lprm</b>(1),</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index f6051df79df16475913a8b697756d41a63fad830..b4aaaf57e85b1e8d833c1db966ddc7b4a0e6ab66 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 lpr - print files
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lpr
-</b>[ -E ] [ -H
-<i>server[:port]
-</i>] [ -U
-<i>username
-</i>] [ -P
-<i>destination[/instance]
-</i>] [ -#
-<i>num-copies
-</i>[ -h ] [ -l ] [ -m ] [ -o
-<i>option[=value]
-</i>] [ -p] [ -q ] [ -r ] [ -C/J/T
-<i>title
-</i>] [
-<i>file(s)
-</i>]
+<b>lpr</b>
+[
+<b>-E</b>
+] [
+<b>-H </b><i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-P </b><i>destination</i>[<b>/</b><i>instance</i>]
+] [
+<b>-#</b>
+<i>num-copies</i>
+[
+<b>-h</b>
+] [
+<b>-l</b>
+] [
+<b>-m</b>
+] [
+<b>-o </b><i>option</i>[<b>=</b><i>value</i>]
+] [
+<b>-p</b>
+] [
+<b>-q</b>
+] [
+<b>-r</b>
+] [
+<b>-C</b>
+<i>title</i>
+] [
+<b>-J</b>
+<i>title</i>
+] [
+<b>-T</b>
+<i>title</i>
+] [
+<i>file(s)</i>
+]
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>lpr</i> submits files for printing. Files named on the command
-line are sent to the named printer (or the default destination if no
-destination is specified). If no files are listed on the command-line,
-<i>lpr</i> reads the print file from the standard input.
-<h2 class="title"><a name="THE_DEFAULT_DESTINATION">The Default Destination</a></h2>
-CUPS provides many ways to set the default destination. The "LPDEST" and
-"PRINTER" environment variables are consulted first. If neither are set,
-the current default set using the <a href='man-lpoptions.html?TOPIC=Man+Pages'>lpoptions(1)</a> command is used,
-followed by the default set using the <a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a> command.
+<b>lpr</b> submits files for printing.
+Files named on the command line are sent to the named printer or the default destination if no destination is specified.
+If no files are listed on the command-line, <b>lpr</b> reads the print file from the standard input.
+<h3><a name="THE_DEFAULT_DESTINATION">The Default Destination</a></h3>
+CUPS provides many ways to set the default destination. The <b>LPDEST</b> and <b>PRINTER</b> environment variables are consulted first.
+If neither are set, the current default set using the
+<a href="man-lpoptions.html?TOPIC=Man+Pages"><b>lpoptions</b>(1)</a>
+command is used, followed by the default set using the
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8)</a>
+command.
 <h2 class="title"><a name="OPTIONS">Options</a></h2>
 The following options are recognized by <i>lpr</i>:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Forces encryption when connecting to the server.
-</dd>
-<dt>-H server[:port]
-</dt>
-<dd></dd>
-<dd>Specifies an alternate server.
-</dd>
-<dt>-C "name"
-</dt>
-<dd></dd>
-<dt>-J "name"
-</dt>
-<dd></dd>
-<dt>-T "name"
-</dt>
-<dd></dd>
-<dd>Sets the job name.
-</dd>
-<dt>-P destination[/instance]
-</dt>
-<dd></dd>
-<dd>Prints files to the named printer.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Specifies an alternate username.
-</dd>
-<dt>-# <i>copies</i>
-</dt>
-<dd></dd>
-<dd>Sets the number of copies to print from 1 to 100.
-</dd>
-<dt>-h
-</dt>
-<dd></dd>
-<dd>Disables banner printing. This option is equivalent to "-o
-job-sheets=none".
-</dd>
-<dt>-l
-</dt>
-<dd></dd>
-<dd>Specifies that the print file is already formatted for the
-destination and should be sent without filtering. This option is
-equivalent to "-o raw".
-</dd>
-<dt>-m
-</dt>
-<dd></dd>
-<dd>Send an email on job completion.
-</dd>
-<dt>-o option[=value]
-</dt>
-<dd></dd>
-<dd>Sets a job option.
-</dd>
-<dt>-p
-</dt>
-<dd></dd>
-<dd>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 "-o prettyprint" and is only useful when
-printing text files.
-</dd>
-<dt>-q
-</dt>
-<dd></dd>
-<dd>Hold job for printing.
-</dd>
-<dt>-r
-</dt>
-<dd></dd>
-<dd>Specifies that the named print files should be deleted after
-printing them.
-</dd>
+<dl class="man">
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Forces encryption when connecting to the server.
+<dt><b>-H </b><i>server</i>[<b>:</b><i>port</i>]
+<dd style="margin-left: 5.0em">Specifies an alternate server.
+<dt><b>-C "</b><i>name</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>-J "</b><i>name</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>-T "</b><i>name</i><b>"</b>
+<dd style="margin-left: 5.0em">Sets the job name/title.
+<dt><b>-P </b><i>destination</i>[<b>/</b><i>instance</i>]
+<dd style="margin-left: 5.0em">Prints files to the named printer.
+<dt><b>-U </b><i>username</i>
+<dd style="margin-left: 5.0em">Specifies an alternate username.
+<dt><b>-# </b><i>copies</i>
+<dd style="margin-left: 5.0em">Sets the number of copies to print.
+<dt><b>-h</b>
+<dd style="margin-left: 5.0em">Disables banner printing. This option is equivalent to <i>-o job-sheets=none</i>.
+<dt><b>-l</b>
+<dd style="margin-left: 5.0em">Specifies that the print file is already formatted for the destination and should be sent without filtering.
+This option is equivalent to <i>-o raw</i>.
+<dt><b>-m</b>
+<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.
+<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.
+<dt><b>-q</b>
+<dd style="margin-left: 5.0em">Hold job for printing.
+<dt><b>-r</b>
+<dd style="margin-left: 5.0em">Specifies that the named print files should be deleted after submitting them.
 </dl>
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-The "c", "d", "f", "g", "i", "n", "t", "v", and "w" options
-are not supported by CUPS and produce a warning message if used.
+<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>
+Print two copies of a document to the default printer:
+<pre class="man">
+
+    lpr -# 2 filename
+
+</pre>
+Print a double-sided legal document to a printer called "foo":
+<pre class="man">
+
+    lpr -P foo -o media=legal -o sides=two-sided-long-edge filename
+
+</pre>
+Print a presentation document 2-up to a printer called "foo":
+<pre class="man">
+
+    lpr -P foo -o number-up=2 filename
+</pre>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cancel.html?TOPIC=Man+Pages'>cancel(1)</a>, <a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>, <a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a>, <a href='man-lpoptions.html?TOPIC=Man+Pages'>lpoptions(1)</a>,
-<a href='man-lpq.html?TOPIC=Man+Pages'>lpq(1)</a>, <a href='man-lprm.html?TOPIC=Man+Pages'>lprm(1)</a>, <a href='man-lpstat.html?TOPIC=Man+Pages'>lpstat(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8),</a>
+<a href="man-lpoptions.html?TOPIC=Man+Pages"><b>lpoptions</b>(1),</a>
+<a href="man-lpq.html?TOPIC=Man+Pages"><b>lpq</b>(1),</a>
+<a href="man-lprm.html?TOPIC=Man+Pages"><b>lprm</b>(1),</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index 23ce4b01d90e81d338d13672d325adfaa9861bf4..09b177c75a33f62fc2b80874f7afff674fc92b65 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 lprm - cancel print jobs
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lprm
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] [ -P
-<i>destination[/instance]
-</i>] [ - ] [
-<i>job ID(s)
-</i>]
+<b>lprm</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h</b>
+<i>server</i>[<i>:port</i>]
+] [
+<b>-P</b>
+<i>destination</i>[<i>/instance</i>]
+] [
+<b>-</b>
+] [
+<i>job-id(s)</i>
+]
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>lprm</i> cancels print jobs that have been queued for printing.
-If no arguments are supplied, the current job on the default
-destination is cancelled. You can specify one or more job ID
-numbers to cancel those jobs or use the <i>-</i> option to cancel
-all jobs.
+<b>lprm</b>
+cancels print jobs that have been queued for printing.
+If no arguments are supplied, the current job on the default destination is canceled.
+You can specify one or more job ID numbers to cancel those jobs or use the <i>-</i> option to cancel all jobs.
 <h2 class="title"><a name="OPTIONS">Options</a></h2>
-The <i>lprm</i> command supports the following options:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Forces encryption when connecting to the server.
-</dd>
-<dt>-P destination[/instance]
-</dt>
-<dd></dd>
-<dd>Specifies the destination printer or class.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Specifies an alternate username.
-</dd>
-<dt>-h server[:port]
-</dt>
-<dd></dd>
-<dd>Specifies an alternate server.
-</dd>
+The
+<b>lprm</b>
+command supports the following options:
+<dl class="man">
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Forces encryption when connecting to the server.
+<dt><b>-P </b><i>destination</i>[<i>/instance</i>]
+<dd style="margin-left: 5.0em">Specifies the destination printer or class.
+<dt><b>-U </b><i>username</i>
+<dd style="margin-left: 5.0em">Specifies an alternate username.
+<dt><b>-h </b><i>server</i>[<i>:port</i>]
+<dd style="margin-left: 5.0em">Specifies an alternate server.
 </dl>
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-The CUPS version of <i>lprm</i> is compatible with the standard
-Berkeley <i>lprm</i> command.
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+The CUPS version of
+<b>lprm</b>
+is compatible with the standard Berkeley command of the same name.
+<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+Cancel the current job on the default printer:
+<pre class="man">
+
+    lprm
+
+</pre>
+Cancel job 1234:
+<pre class="man">
+
+    lprm 1234
+
+</pre>
+Cancel all jobs:
+<pre class="man">
+
+    lprm -
+</pre>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cancel.html?TOPIC=Man+Pages'>cancel(1)</a>, <a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>, <a href='man-lpq.html?TOPIC=Man+Pages'>lpq(1)</a>, <a href='man-lpr.html?TOPIC=Man+Pages'>lpr(1)</a>,
-<a href='man-lpstat.html?TOPIC=Man+Pages'>lpstat(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpq.html?TOPIC=Man+Pages"><b>lpq</b>(1),</a>
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1),</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index 9d4ed7a6aaacc319a07e7ae9739a2ae295ff78b3..b394b0c1de653c8574da1fc7969b40a9d29e6bc3 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 lpstat - print cups status information
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lpstat
-</b>[ -E ] [ -H ] [ -U
-<i>username
-</i>] [ -h
-<i>hostname[:port]
-</i>] [ -l ] [ -W
-<i>which-jobs
-</i>] [ -a [
-<i>destination(s)
-</i>] ] [ -c [
-<i>class(es)
-</i>] ] [ -d ] [ -o [
-<i>destination(s)
-</i>] ] [ -p [
-<i>printer(s)
-</i>] ] [ -r ] [ -R ] [ -s ] [ -t ] [ -u [
-<i>user(s)
-</i>] ] [ -v [
-<i>printer(s)
-</i>] ]
+<b>lpstat</b>
+[
+<b>-E</b>
+] [
+<b>-H</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>hostname</i>[<b>:</b><i>port</i>]
+] [
+<b>-l</b>
+] [
+<b>-W</b>
+<i>which-jobs</i>
+] [
+<b>-a</b>
+[
+<i>destination(s)</i>
+] ] [
+<b>-c</b>
+[
+<i>class(es)</i>
+] ] [
+<b>-d</b>
+] [
+<b>-o</b>
+[
+<i>destination(s)</i>
+] ] [
+<b>-p</b>
+[
+<i>printer(s)</i>
+] ] [
+<b>-r</b>
+] [
+<b>-R</b>
+] [
+<b>-s</b>
+] [
+<b>-t</b>
+] [
+<b>-u</b>
+[
+<i>user(s)</i>
+] ] [
+<b>-v</b>
+[
+<i>printer(s)</i>
+] ]
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>lpstat</i> displays status information about the current
-classes, jobs, and printers. When run with no arguments,
-<i>lpstat</i> will list jobs queued by the current user.
+<b>lpstat</b> displays status information about the current classes, jobs, and printers.
+When run with no arguments, <b>lpstat</b> will list active jobs queued by the current user.
 <h2 class="title"><a name="OPTIONS">Options</a></h2>
-The <i>lpstat</i> command supports the following options:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Forces encryption when connecting to the server.
-</dd>
-<dt>-H
-</dt>
-<dd></dd>
-<dd>Shows the server hostname and port.
-</dd>
-<dt>-R
-</dt>
-<dd></dd>
-<dd>Shows the ranking of print jobs.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Specifies an alternate username.
-</dd>
-<dt>-W which-jobs
-</dt>
-<dd></dd>
-<dd>Specifies which jobs to show, <i>completed</i> or
-<i>not-completed</i> (the default). This option <i>must</i> appear
-before the <i>-o</i> option and/or any printer names, otherwise
-the default (not-completed) value will be used in the request to
-the scheduler.
-</dd>
-<dt>-a [printer(s)]
-</dt>
-<dd></dd>
-<dd>Shows the accepting state of printer queues. If no printers are
-specified then all printers are listed.
-</dd>
-<dt>-c [class(es)]
-</dt>
-<dd></dd>
-<dd>Shows the printer classes and the printers that belong to them.
+The <b>lpstat</b> command supports the following options:
+<dl class="man">
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Forces encryption when connecting to the server.
+<dt><b>-H</b>
+<dd style="margin-left: 5.0em">Shows the server hostname and port.
+<dt><b>-R</b>
+<dd style="margin-left: 5.0em">Shows the ranking of print jobs.
+<dt><b>-U </b><i>username</i>
+<dd style="margin-left: 5.0em">Specifies an alternate username.
+<dt><b>-W </b><i>which-jobs</i>
+<dd style="margin-left: 5.0em">Specifies which jobs to show, "completed" or "not-completed" (the default).
+This option <i>must</i> appear before the <i>-o</i> option and/or any printer names, otherwise the default ("not-completed") value will be used in the request to the scheduler.
+<dt><b>-a </b>[<i>printer(s)</i>]
+<dd style="margin-left: 5.0em">Shows the accepting state of printer queues.
+If no printers are specified then all printers are listed.
+<dt><b>-c </b>[<i>class(es)</i>]
+<dd style="margin-left: 5.0em">Shows the printer classes and the printers that belong to them.
 If no classes are specified then all classes are listed.
-</dd>
-<dt>-d
-</dt>
-<dd></dd>
-<dd>Shows the current default destination.
-</dd>
-<dt>-h server[:port]
-</dt>
-<dd></dd>
-<dd>Specifies an alternate server.
-</dd>
-<dt>-l
-</dt>
-<dd></dd>
-<dd>Shows a long listing of printers, classes, or jobs.
-</dd>
-<dt>-o [destination(s)]
-</dt>
-<dd></dd>
-<dd>Shows the jobs queue on the specified destinations. If no destinations are
-specified all jobs are shown.
-</dd>
-<dt>-p [printer(s)]
-</dt>
-<dd></dd>
-<dd>Shows the printers and whether or not they are enabled for printing. If
-no printers are specified then all printers are listed.
-</dd>
-<dt>-r
-</dt>
-<dd></dd>
-<dd>Shows whether the CUPS server is running.
-</dd>
-<dt>-s
-</dt>
-<dd></dd>
-<dd>Shows a status summary, including the default destination, a
-list of classes and their member printers, and a list of printers and
-their associated devices. This is equivalent to using the "-d", "-c",
-and "-v" options.
-</dd>
-<dt>-t
-</dt>
-<dd></dd>
-<dd>Shows all status information. This is equivalent to using the "-r",
-"-d", "-c", "-v", "-a", "-p", and "-o" options.
-</dd>
-<dt>-u [user(s)]
-</dt>
-<dd></dd>
-<dd>Shows a list of print jobs queued by the specified users. If no users
-are specified, lists the jobs queued by the current user.
-</dd>
-<dt>-v [printer(s)]
-</dt>
-<dd></dd>
-<dd>Shows the printers and what device they are attached to. If no printers
-are specified then all printers are listed.
-</dd>
+<dt><b>-d</b>
+<dd style="margin-left: 5.0em">Shows the current default destination.
+<dt><b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+<dd style="margin-left: 5.0em">Specifies an alternate server.
+<dt><b>-l</b>
+<dd style="margin-left: 5.0em">Shows a long listing of printers, classes, or jobs.
+<dt><b>-o </b>[<i>destination(s)</i>]
+<dd style="margin-left: 5.0em">Shows the jobs queued on the specified destinations.
+If no destinations are specified all jobs are shown.
+<dt><b>-p </b>[<i>printer(s)</i>]
+<dd style="margin-left: 5.0em">Shows the printers and whether they are enabled for printing.
+If no printers are specified then all printers are listed.
+<dt><b>-r</b>
+<dd style="margin-left: 5.0em">Shows whether the CUPS server is running.
+<dt><b>-s</b>
+<dd style="margin-left: 5.0em">Shows a status summary, including the default destination, a list of classes and their member printers, and a list of printers and their associated devices.
+This is equivalent to using the <i>-d</i>, <i>-c</i>, and <i>-v</i> options.
+<dt><b>-t</b>
+<dd style="margin-left: 5.0em">Shows all status information.
+This is equivalent to using the <i>-r</i>, <i>-d</i>, <i>-c</i>, <i>-v</i>, <i>-a</i>, <i>-p</i>, and <i>-o</i> options.
+<dt><b>-u </b>[<i>user(s)</i>]
+<dd style="margin-left: 5.0em">Shows a list of print jobs queued by the specified users.
+If no users are specified, lists the jobs queued by the current user.
+<dt><b>-v </b>[<i>printer(s)</i>]
+<dd style="margin-left: 5.0em">Shows the printers and what device they are attached to.
+If no printers are specified then all printers are listed.
 </dl>
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-Unlike the System V printing system, CUPS allows printer names to
-contain any printable character except SPACE, TAB, "/", and "#".
+<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, "/", and "#".
 Also, printer and class names are <i>not</i> case-sensitive.
-<p>The "-h", "-E", "-U", and "-W" options are unique to CUPS.
-<p>The Solaris "-f", "-P", and "-S" options are silently ignored.
+<p>The <i>-h</i>, <i>-E</i>, <i>-U</i>, and <i>-W</i> options are unique to CUPS.
+<p>The Solaris <i>-f</i>, <i>-P</i>, and <i>-S</i> options are silently ignored.
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cancel.html?TOPIC=Man+Pages'>cancel(1)</a>, <a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpq.html?TOPIC=Man+Pages"><b>lpq</b>(1),</a>
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1),</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index 829048e55d00a2ba136c2be8f7f40f93f4120c82..966b3651ba068781c6d5ee0291f552ff7eb922fa 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 mailto.conf - configuration file for cups email notifier
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <i>mailto.conf</i> file defines the local mail server and
-email notification preferences for CUPS.
-<p>Each line in the file can be a configuration directive, a blank line,
-or a comment. Comment lines start with the # character.
-<h2 class="title"><a name="DIRECTIVES">Directives</a></h2>
-<dl>
-<dt>Cc <i>cc-address@domain.com</i>
-</dt>
-<dd></dd>
-<dd>Specifies an additional recipient for all email notifications.
-</dd>
-<dt>From <i>from-address@domain.com</i>
-</dt>
-<dd></dd>
-<dd>Specifies the sender of email notifications.
-</dd>
-<dt>Sendmail <i>sendmail command and options</i>
-</dt>
-<dd></dd>
-<dd>Specifies the sendmail command to use when sending email
-notifications. Only one <i>Sendmail</i> or <i>SMTPServer</i> line
-may be present in the <i>mailto.conf</i> file. If multiple lines
-are present, only the last one is used.
-</dd>
-<dt>SMTPServer <i>servername</i>
-</dt>
-<dd></dd>
-<dd>Specifies a SMTP server to send email notifications to. Only one
-<i>Sendmail</i> or <i>SMTPServer</i> line may be present in the
-<i>mailto.conf</i> file. If multiple lines are present, only the
-last one is used.
-</dd>
-<dt>Subject <i>subject-prefix</i>
-</dt>
-<dd></dd>
-<dd>Specifies a prefix string for the subject line of an email notification.
-</dd>
+The <b>mailto.conf</b> file defines the local mail server and email notification preferences for CUPS.
+<p>Each line in the file can be a configuration directive, a blank line, or a comment.
+Configuration directives typically consist of a name and zero or more values separated by whitespace.
+The configuration directive name and values are case-insensitive.
+Comment lines start with the # character.
+<h3><a name="DIRECTIVES">Directives</a></h3>
+<dl class="man">
+<dt><b>Cc </b><i>cc-address@domain.com</i>
+<dd style="margin-left: 5.0em">Specifies an additional recipient for all email notifications.
+<dt><b>From </b><i>from-address@domain.com</i>
+<dd style="margin-left: 5.0em">Specifies the sender of email notifications.
+<dt><b>Sendmail </b><i>sendmail command and options</i>
+<dd style="margin-left: 5.0em">Specifies the sendmail command to use when sending email notifications.
+Only one <i>Sendmail</i> or <i>SMTPServer</i> line may be present in the <b>mailto.conf</b> file.
+If multiple lines are present, only the last one is used.
+<dt><b>SMTPServer </b><i>servername</i>
+<dd style="margin-left: 5.0em">Specifies a SMTP server to send email notifications to.
+Only one <i>Sendmail</i> or <i>SMTPServer</i> line may be present in the <b>mailto.conf</b> file.
+If multiple lines are present, only the last one is used.
+<dt><b>Subject </b><i>subject-prefix</i>
+<dd style="margin-left: 5.0em">Specifies a prefix string for the subject line of an email notification.
 </dl>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-classes.conf.html?TOPIC=Man+Pages'>classes.conf(5)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>,
-<a href='man-mime.convs.html?TOPIC=Man+Pages'>mime.convs(5)</a>, <a href='man-mime.types.html?TOPIC=Man+Pages'>mime.types(5)</a>, <a href='man-printers.conf.html?TOPIC=Man+Pages'>printers.conf(5)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index e4e39c0d3841817196609410b33e52329c22ac4f..f1e045e5ae18e641c109143aca5b8192078edc8f 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 mime.convs - mime type conversion file for cups
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <i>mime.convs</i> file defines the filters that are available
-for converting files from one format to another. The standard
-filters support text, PDF, PostScript, HP-GL/2, and many types of
-image files.
-<p>Additional filters can be added to the <i>mime.convs</i> file or
-(preferably) to other files in the CUPS configuration directory.
-<p>Each line in the <i>mime.convs</i> file is a comment, blank, or filter
-line. Comment lines start with the # character. Filter lines specify
-the source and destination MIME types along with a relative cost
-associated with the filter and the filter to run:
+The <b>mime.convs</b> file defines the filters that are available for converting files from one format to another.
+The standard filters support text, PDF, PostScript, and many types of image files.
+<p>Additional filters are specified in files with the extension <i>.convs</i> in the CUPS configuration directory.
+<p>Each line in the <b>mime.convs</b> file is a comment, blank, or filter
+line.
+Comment lines start with the # character.
+Filter lines specify the source and destination MIME types along with a relative cost associated with the filter and the filter to run:
+<pre class="man">
+
+    source/type destination/type cost filter
+
+</pre>
+The <i>source/type</i> field specifies the source MIME media type that is consumed by the filter.
+<p>The <i>destination/type</i> field specifies the destiantion MIME media type that is produced by the filter.
+<p>The <i>cost</i> field specifies the relative cost for running the filter.
+A value of 100 means that the filter uses a large amount of resources while a value of 0 means that the filter uses very few resources.
+<p>The <i>filter</i> field specifies the filter program filename.
+Filenames are relative to the CUPS filter directory.
+<h2 class="title"><a name="FILES">Files</a></h2>
+<i>/etc/cups</i> - Typical CUPS configuration directory.
 <br>
-<pre>
+<i>/usr/lib/cups/filter</i> - Typical CUPS filter directory.
+<br>
+<i>/usr/libexec/cups/filter</i> - CUPS filter directory on OS X.
+<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+Define a filter that converts PostScript documents to CUPS Raster format:
+<pre class="man">
+
+    application/vnd.cups-postscript application/vnd.cups-raster 50 pstoraster
 
-super/type super/type cost filter
-application/postscript application/vnd.cups-raster 50 pstoraster
 </pre>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-classes.conf.html?TOPIC=Man+Pages'>classes.conf(5)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>,
-<a href='man-mime.types.html?TOPIC=Man+Pages'>mime.types(5)</a>, <a href='man-printers.conf.html?TOPIC=Man+Pages'>printers.conf(5)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5),</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-cupsfilter.html?TOPIC=Man+Pages"><b>cupsfilter</b>(8),</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index 55e5ed4f8a41cfb0c9de6eda26a0399e73c9396a..89c8a498f9eccc4380c60affcb4831bb3e491e4e 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 mime.types - mime type description file for cups
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <i>mime.types</i> file defines the recognized file types.
-<p>Additional file types can be added to <i>mime.types</i> or
-(preferably) in additional files in the CUPS configuration
-directory with the extension ".types".
-<p>Each line in the <i>mime.types</i> file is a comment, blank, or
-rule line. Comment lines start with the # character. Rule lines
-start with the MIME type name and are optionally followed by a
-series of file recognition rules that are used to automatically
-identify print and web files:
-<br>
-<pre>
+The <b>mime.types</b> file defines the recognized file types.
+<p>Additional file types are specified in files with the extension <i>.types</i> in the CUPS configuration directory.
+<p>Each line in the <b>mime.types</b> file is a comment, blank, or rule line.
+Comment lines start with the # character.
+Rule lines start with the MIME media type and are optionally followed by a series of file recognition rules:
+<pre class="man">
+
+    <i>mime/type </i>[ <i>rule </i>... <i>rule </i>]
+
+</pre>
+Rules can be extended over multiple lines using the backslash character (\):
+<pre class="man">
+
+    <i>mime/type </i>[ <i>really-really-really-long-rule </i>... <b>\
+      </b><i>rule </i>]
 
-    super/type rule [ ... ruleN]
 </pre>
-MIME type names are case-insensitive and are sorted in ascending alphanumeric
-order for the purposes of matching. See the "TYPE MATCHING AND PRIORITY"
-section for more information.
-<p>The rules may be grouped using parenthesis, joined using "+" for a
-logical AND and "," or whitespace for a logical OR, and negated using
-"!".
-<h2 class="title"><a name="RULES">Rules</a></h2>
+MIME media types specified by the <i>mime/type</i> field are case-insensitive and are sorted in ascending alphanumeric order for the purposes of matching.
+See the "TYPE MATCHING AND PRIORITY" section for more information.
+<p>The rules may be grouped using parenthesis, joined using "+" for a logical AND, joined using "," or whitespace for a logical OR, and negated using "!".
+<h3><a name="RULES">Rules</a></h3>
 Rules take two forms - a filename extension by itself and functions with test
-values inside parenthesis. The following functions are available:
-<dl>
-<dt>match("pattern")
-</dt>
-<dd></dd>
-<dd>Pattern match on filename
-</dd>
-<dt>ascii(offset,length)
-</dt>
-<dd></dd>
-<dd>True if bytes are valid printable ASCII (CR, NL, TAB, BS, 32-126)
-</dd>
-<dt>printable(offset,length)
-</dt>
-<dd></dd>
-<dd>True if bytes are printable 8-bit chars (CR, NL, TAB, BS, 32-126, 128-254)
-</dd>
-<dt>priority(number)
-</dt>
-<dd></dd>
-<dd>Specifies the relative priority of this MIME type. The default priority is 100.
+values inside parenthesis.
+The following functions are available:
+<dl class="man">
+<dt><b>match("</b><i>pattern</i><b>")</b>
+<dd style="margin-left: 5.0em">True if the filename matches the given shell wildcard <i>pattern</i>.
+<dt><b>ascii(</b><i>offset</i><b>,</b><i>length</i><b>)</b>
+<dd style="margin-left: 5.0em">True if the <i>length</i> bytes starting at <i>offset</i> are valid printable ASCII (CR, NL, TAB, BS, 32-126).
+<dt><b>printable(</b><i>offset</i><b>,</b><i>length</i><b>)</b>
+<dd style="margin-left: 5.0em">True if the <i>length</i> bytes starting at <i>offset</i> are printable 8-bit chars (CR, NL, TAB, BS, 32-126, 128-254).
+<dt><b>priority(</b><i>number</i><b>)</b>
+<dd style="margin-left: 5.0em">Specifies the relative priority of this MIME media type.
+The default priority is 100.
 Larger values have higher priority while smaller values have lower priority.
-</dd>
-<dt>string(offset,"string")
-</dt>
-<dd></dd>
-<dd>True if bytes are identical to string
-</dd>
-<dt>istring(offset,"string")
-</dt>
-<dd></dd>
-<dd>True if a case-insensitive comparison of the bytes is identical
-</dd>
-<dt>char(offset,value)
-</dt>
-<dd></dd>
-<dd>True if byte is identical
-</dd>
-<dt>short(offset,value)
-</dt>
-<dd></dd>
-<dd>True if 16-bit integer is identical
-</dd>
-<dt>int(offset,value)
-</dt>
-<dd></dd>
-<dd>True if 32-bit integer is identical
-</dd>
-<dt>locale("string")
-</dt>
-<dd></dd>
-<dd>True if current locale matches string
-</dd>
-<dt>contains(offset,range,"string")
-</dt>
-<dd></dd>
-<dd>True if the range contains the string
-</dd>
+<dt><b>string(</b><i>offset</i><b>,"</b><i>string</i><b>")</b>
+<dd style="margin-left: 5.0em">True if the bytes starting at <i>offset</i> are identical to <i>string</i>.
+<dt><b>istring(</b><i>offset</i><b>,"</b><i>string</i><b>")</b>
+<dd style="margin-left: 5.0em">True if the bytes starting at <i>offset</i> match <i>string</i> without respect to case.
+<dt><b>char(</b><i>offset</i><b>,</b><i>value</i><b>)</b>
+<dd style="margin-left: 5.0em">True if the byte at <i>offset</i> is identical to <i>value</i>.
+<dt><b>short(</b><i>offset</i><b>,</b><i>value</i><b>)</b>
+<dd style="margin-left: 5.0em">True if the 16-bit big-endian integer at <i>offset</i> is identical to <i>value</i>.
+<dt><b>int(</b><i>offset</i><b>,</b><i>value</i><b>)</b>
+<dd style="margin-left: 5.0em">True if the 32-bit big-endian integer at <i>offset</i> is identical to <i>value</i>.
+<dt><b>locale("</b><i>string</i><b>")</b>
+<dd style="margin-left: 5.0em">True if current locale matches <i>string</i>.
+<dt><b>contains(</b><i>offset</i><b>,</b><i>range</i><b>,"</b><i>string</i><b>")</b>
+<dd style="margin-left: 5.0em">True if the bytes starting at <i>offset</i> for <i>range</i> bytes contains <i>string</i>.
 </dl>
-<h2 class="title"><a name="STRING_CONSTANTS">String Constants</a></h2>
-String constants can be specified inside quotes ("") for strings
-containing whitespace and angle brackets (&lt;>) for hexadecimal
-strings.
-<h2 class="title"><a name="TYPE_MATCHING_AND_PRIORITY">Type Matching And Priority</a></h2>
-When CUPS needs to determine the MIME type of a given file, it checks every
-MIME type defined in the .types files. When two types have the same matching
-rules, the type chosen will depend on the type name and priority, with higher-
-priority types being used over lower-priority ones. If the types have the same
-priority, the type names are sorted alphanumerically in ascending order and the
-first type is chosen.
+<h3><a name="STRING_CONSTANTS">String Constants</a></h3>
+String constants can be specified inside quotes ("") for strings containing whitespace and angle brackets (&lt;>) for hexadecimal strings.
+<h3><a name="TYPE_MATCHING_AND_PRIORITY">Type Matching And Priority</a></h3>
+When CUPS needs to determine the MIME media type of a given file, it checks every MIME media type defined in the <i>.types</i> files.
+When two or more types match a given file, the type chosen will depend on the type name and priority, with higher-priority types being used over lower-priority ones.
+If the types have the same priority, the type names are sorted alphanumerically in ascending order and the first type is chosen.
 <p>For example, if two types "text/bar" and "text/foo" are defined as matching the
 extension "doc", normally the type "text/bar" will be chosen since its name is
-alphanumerically smaller than "text/foo". However, if "text/foo" also defines a
-higher priority than "text/bar", "text/foo" will be chosen instead.
+alphanumerically smaller than "text/foo".
+However, if "text/foo" also defines a higher priority than "text/bar", "text/foo" will be chosen instead.
+<h2 class="title"><a name="FILES">Files</a></h2>
+<i>/etc/cups</i> - Typical CUPS configuration directory.
+<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+Define two MIME media types for raster data, with one being a subset with higher priority:
+<pre class="man">
+
+    application/vnd.cups-raster  string(0,"RaSt") string(0,"tSaR") \
+                                  string(0,"RaS2") string(0,"2SaR") \
+                                  string(0,"RaS3") string(0,"3SaR")
+
+    image/pwg-raster              string(0,"RaS2") + \
+                                  string(4,PwgRaster&lt;00>) priority(150)
+</pre>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-classes.conf.html?TOPIC=Man+Pages'>classes.conf(5)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>,
-<a href='man-mime.convs.html?TOPIC=Man+Pages'>mime.convs(5)</a>, <a href='man-printers.conf.html?TOPIC=Man+Pages'>printers.conf(5)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5),</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-cupsfilter.html?TOPIC=Man+Pages"><b>cupsfilter</b>(8),</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index fc9ae82835e9712f4f337eff1f85040b53900356..5c65778d1a1b97bc2d9236d5a8e4a43223c3bcf7 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 notifier - cups notification interface
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>notifier
-</b><i>recipient
-</i>[
-<i>user-data
-</i>]
+<b>notifier</b>
+<i>recipient</i>
+[
+<i>user-data</i>
+]
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The CUPS notifier interface provides a standard method for adding support for
-new event notification methods to CUPS. Each notifier delivers one or more IPP
-events from the standard input to the specified recipient.
-<p>Notifiers <b>must</b> read IPP messages from the standard input using the
-ippNew and ippReadFile functions and exit on error. Notifiers are encouraged to
-exit after a suitable period of inactivity, however they may exit after reading
-the first message or stay running until an error is seen.
-<h2 class="title"><a name="LOG_MESSAGES">Log Messages</a></h2>
-Messages sent to stderr are generally logged to the current <i>ErrorLog</i>.
-Each line begins with a standard prefix:
-
-<dl>
-<dt>ALERT: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "alert" log level.
-
-</dd>
-<dt>CRIT: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "critical" log level.
-
-</dd>
-<dt>DEBUG: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "debug" log level.
-
-</dd>
-<dt>DEBUG2: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "debug2" log level.
-
-</dd>
-<dt>EMERG: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "emergency" log level.
-
-</dd>
-<dt>ERROR: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "error" log level.
-
-</dd>
-<dt>INFO: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute. If the current <i>LogLevel</i>
-is set to "debug2", also adds the specified message to the
-current <i>ErrorLog</i> using the "info" log level.
-
-</dd>
-<dt>NOTICE: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "notice" log level.
-
-</dd>
-<dt>WARNING: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "warning" log level.
-
-</dd>
-</dl>
-<h2 class="title"><a name="ENVIRONMENT_VARIABLES">Environment Variables</a></h2>
-The following environment variables are defined by the CUPS server when
-executing the notifier:
-
-<dl>
-<dt>CHARSET
-</dt>
-<dd></dd>
-<dd>The default text character set, typically utf-8.
-
-</dd>
-<dt>CUPS_CACHEDIR
-</dt>
-<dd></dd>
-<dd>The directory for semi-persistent cache files can be found.
-
-</dd>
-<dt>CUPS_DATADIR
-</dt>
-<dd></dd>
-<dd>The directory where data files can be found.
-
-</dd>
-<dt>CUPS_FILETYPE
-</dt>
-<dd></dd>
-<dd>The type of file being printed: "job-sheet" for a banner page and "document"
-for a regular print file.
-
-</dd>
-<dt>CUPS_SERVERROOT
-</dt>
-<dd></dd>
-<dd>The root directory of the server.
-
-</dd>
-<dt>LANG
-</dt>
-<dd></dd>
-<dd>The default language locale (typically C or en).
-
-</dd>
-<dt>PATH
-</dt>
-<dd></dd>
-<dd>The standard execution path for external programs that may be run by
-the filter.
-
-</dd>
-<dt>SOFTWARE
-</dt>
-<dd></dd>
-<dd>The name and version number of the server (typically CUPS/1.2).
-
-</dd>
-<dt>TZ
-</dt>
-<dd></dd>
-<dd>The timezone of the server.
-
-</dd>
-<dt>USER
-</dt>
-<dd></dd>
-<dd>The user executing the filter, typically "lp"; consult the <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>
-file for the current setting.
-
-</dd>
-</dl>
+The CUPS notifier interface provides a standard method for adding support for new event notification methods to CUPS.
+Each notifier delivers one or more IPP events from the standard input to the specified recipient.
+<p>Notifiers <b>MUST</b> read IPP messages from the standard input using the
+<b>ippNew</b>()
+and
+<b>ippReadFile</b>()
+functions and exit on error.
+Notifiers are encouraged to exit after a suitable period of inactivity, however they may exit after reading the first message or stay running until an error is seen.
+Notifiers inherit the environment and can use the logging mechanism documented in
+<a href="man-filter.html?TOPIC=Man+Pages"><b>filter</b>(7).</a>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-backend.html?TOPIC=Man+Pages'>backend(7)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-filter.html?TOPIC=Man+Pages'>filter(7)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index 15445954d2e133ac17b01ce16d1b98bbe22945c6..5982c2f9ab7c6487d7d3b1f6b94a278f7970424b 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: Man Pages -->
 <head>
@@ -8,58 +8,84 @@
 <body>
 <h1 class="title">ppdc(1)</h1>
 <h2 class="title"><a name="NAME">Name</a></h2>
-ppdc - cups ppd compiler
+ppdc - cups ppd compiler (deprecated)
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>ppdc
-</b>[ -D
-<i>name[=value]
-</i>] [ -I
-<i>include-directory
-</i>] [ -c
-<i>message-catalog
-</i>] [ -d
-<i>output-directory
-</i>] [ -l
-<i>language(s)
-</i>] [-m] [-t] [ -v ] [ -z ] [ --cr ] [ --crlf ] [ --lf ]
-<i>source-file
-</i><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>ppdc</i> compiles PPDC source files into one or more PPD
-files. <b>This program is deprecated and will be removed in a future release of
-CUPS.</b>
-<p>The <i>-D</i> option sets the named variable for use in the
-source file. It is equivalent to using the #define directive
-in the source file.
-<p>The <i>-I</i> option specifies an alternate include directory;
-multiple <i>-I</i> options can be supplied to add additional
-directories.
-<p>The <i>-c</i> option specifies a single message catalog file in GNU
-gettext source format (filename.po) to be used for localization.
-<p>The <i>-d</i> option specifies the output directory for PPD
-files. The default output directory is "ppd".
-<p>The <i>-l</i> option specifies one or more languages to use when
-localizing the PPD file(s). The default language is "en"
-(English). Separate multiple languages with commas, for example
-"de_DE,en_UK,es_ES,es_MX,es_US,fr_CA,fr_FR,it_IT" will create PPD
-files with German, UK English, Spanish (Spain, Mexico, and US),
-French (France and Canada), and Italian languages in each file.
-<p>The <i>-m</i> option specifies that the output filename should be
-based on the ModelName value instead of FileName or PCFilenName.
-<p>The <i>-t</i> option specifies that PPD files should be tested instead
-of generated.
-<p>The <i>-v</i> option provides more verbose output, basically a
-running status of which files are being loaded or written.
-<p>The <i>-z</i> option generates compressed PPD files (filename.ppd.gz).
+<b>ppdc</b>
+[
+<b>-D </b><i>name</i>[<b>=</b><i>value</i>]
+] [
+<b>-I</b>
+<i>include-directory</i>
+] [
+<b>-c</b>
+<i>message-catalog</i>
+] [
+<b>-d</b>
+<i>output-directory</i>
+] [
+<b>-l</b>
+<i>language(s)</i>
+] [
+<b>-m</b>
+] [
+<b>-t</b>
+] [
+<b>-v</b>
+] [
+<b>-z</b>
+] [
+<b>--cr</b>
+] [
+<b>--crlf</b>
+] [
+<b>--lf</b>
+]
+<i>source-file</i>
+<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
+<b>ppdc</b> compiles PPDC source files into one or more PPD files.
+<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>ppdc</b> supports the following options:
+<dl class="man">
+<dt><b>-D </b><i>name</i>[<b>=</b><i>value</i>]
+<dd style="margin-left: 5.0em">Sets the named variable for use in the source file.
+It is equivalent to using the <i>#define</i> directive in the source file.
+<dt><b>-I </b><i>include-directory</i>
+<dd style="margin-left: 5.0em">Specifies an alternate include directory.
+Multiple <i>-I</i> options can be supplied to add additional directories.
+<dt><b>-c </b><i>message-catalog</i>
+<dd style="margin-left: 5.0em">Specifies a single message catalog file in GNU gettext (filename.po) or Apple strings (filename.strings) format to be used for localization.
+<dt><b>-d </b><i>output-directory</i>
+<dd style="margin-left: 5.0em">Specifies the output directory for PPD files.
+The default output directory is "ppd".
+<dt><b>-l </b><i>language(s)</i>
+<dd style="margin-left: 5.0em">Specifies one or more languages to use when localizing the PPD file(s).
+The default language is "en" (English).
+Separate multiple languages with commas, for example "de_DE,en_UK,es_ES,es_MX,es_US,fr_CA,fr_FR,it_IT" will create PPD files with German, UK English, Spanish (Spain, Mexico, and US), French (France and Canada), and Italian languages in each file.
+<dt><b>-m</b>
+<dd style="margin-left: 5.0em">Specifies that the output filename should be based on the ModelName value instead of FileName or PCFilenName.
+<dt><b>-t</b>
+<dd style="margin-left: 5.0em">Specifies that PPD files should be tested instead of generated.
+<dt><b>-v</b>
+<dd style="margin-left: 5.0em">Specifies verbose output, basically a running status of which files are being loaded or written.
+<b>-z</b>
+Generates compressed PPD files (filename.ppd.gz).
 The default is to generate uncompressed PPD files.
-<p>The <i>--cr</i>, <i>--crlf</i>, and <i>--lf</i> options specify the
-line ending to use - carriage return, carriage return and line feed,
-or line feed. The default is to use the line feed character alone.
+<dt><b>--cr</b>
+<dd style="margin-left: 5.0em"><dt><b>--crlf</b>
+<dd style="margin-left: 5.0em"><dt><b>--lf</b>
+<dd style="margin-left: 5.0em">Specifies the line ending to use - carriage return, carriage return and line feed, or line feed alone.
+The default is to use the line feed character alone.
+</dl>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-ppdhtml(1), ppdi(1), ppdmerge(1), ppdpo(1), ppdcfile(5)
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-ppdhtml.html?TOPIC=Man+Pages"><b>ppdhtml</b>(1),</a>
+<a href="man-ppdi.html?TOPIC=Man+Pages"><b>ppdi</b>(1),</a>
+<a href="man-ppdmerge.html?TOPIC=Man+Pages"><b>ppdmerge</b>(1),</a>
+<a href="man-ppdpo.html?TOPIC=Man+Pages"><b>ppdpo</b>(1),</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index f412bec05ab40a1ac79e1d0f97d8b55d177d2742..01876d96490548a07377f205b15cf72a56a34811 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 ppdcfile - cups ppd compiler source file format
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The CUPS PPD compiler reads meta files that contain descriptions
-of one or more PPD files to be generated by <i>ppdc</i>. This man
-page provides a quick reference to the supported keywords and
-should be used in conjunction with the online help for CUPS.
-<p>The source file format is plain ASCII text that can be edited
-using your favorite text editor. Comments are supported using
-the C (/* ... */) and C++ (// ...) comment mechanisms.
-<p>Printer driver information can be grouped and shared using
-curly braces ({ ... }); PPD files are written when a close
-brace or end-of-file is seen and a PCFileName directive has been
-defined.
-<p>Directives may be placed anywhere on a line and are followed by
-one or more values. The following is a list of the available
-directives and the values they accept:
-<dl>
-<dt><b>#define</b> name value
-</dt>
-<dd></dd>
-<dt><b>#elif</b> {name | value}
-</dt>
-<dd></dd>
-<dt><b>#else</b>
-</dt>
-<dd></dd>
-<dt><b>#endif</b>
-</dt>
-<dd></dd>
-<dt><b>#font</b> name encoding "version" charset status
-</dt>
-<dd></dd>
-<dt><b>#if</b> {name | value}
-</dt>
-<dd></dd>
-<dt><b>#include</b> &lt;filename>
-</dt>
-<dd></dd>
-<dt><b>#include</b> "filename"
-</dt>
-<dd></dd>
-<dt><b>#media</b> name width length
-</dt>
-<dd></dd>
-<dt><b>#media</b> "name/text" width length
-</dt>
-<dd></dd>
-<dt><b>#po</b> locale "filename.po"
-</dt>
-<dd></dd>
-<dt><b>Attribute</b> name "" value
-</dt>
-<dd></dd>
-<dt><b>Attribute</b> name keyword value
-</dt>
-<dd></dd>
-<dt><b>Attribute</b> name "keyword/text" value
-</dt>
-<dd></dd>
-<dt><b>Choice</b> name "code"
-</dt>
-<dd></dd>
-<dt><b>Choice</b> "name/text" "code"
-</dt>
-<dd></dd>
-<dt><b>ColorDevice</b> boolean-value
-</dt>
-<dd></dd>
-<dt><b>ColorModel</b> name colorspace colororder compression
-</dt>
-<dd></dd>
-<dt><b>ColorModel</b> "name/text" colorspace colororder compression
-</dt>
-<dd></dd>
-<dt><b>ColorProfile</b> resolution/mediatype gamma density matrix
-</dt>
-<dd></dd>
-<dt><b>Copyright</b> "text"
-</dt>
-<dd></dd>
-<dt><b>CustomMedia</b> name width length left bottom right top "size-code" "region-code"
-</dt>
-<dd></dd>
-<dt><b>CustomMedia</b> "name/text" width length left bottom right top "size-code" "region-code"
-</dt>
-<dd></dd>
-<dt><b>Cutter</b> boolean-value
-</dt>
-<dd></dd>
-<dt><b>Darkness</b> temperature name
-</dt>
-<dd></dd>
-<dt><b>Darkness</b> temperature "name/text"
-</dt>
-<dd></dd>
-<dt><b>DriverType</b> type
-</dt>
-<dd></dd>
-<dt><b>Duplex</b> type
-</dt>
-<dd></dd>
-<dt><b>Filter</b> mime-type cost program
-</dt>
-<dd></dd>
-<dt><b>Finishing</b> name
-</dt>
-<dd></dd>
-<dt><b>Finishing</b> "name/text"
-</dt>
-<dd></dd>
-<dt><b>Font</b> *
-</dt>
-<dd></dd>
-<dt><b>Font</b> name encoding "version" charset status
-</dt>
-<dd></dd>
-<dt><b>Group</b> name
-</dt>
-<dd></dd>
-<dt><b>Group</b> "name/text"
-</dt>
-<dd></dd>
-<dt><b>HWMargins</b> left bottom right top
-</dt>
-<dd></dd>
-<dt><b>InputSlot</b> position name
-</dt>
-<dd></dd>
-<dt><b>InputSlot</b> position "name/text"
-</dt>
-<dd></dd>
-<dt><b>Installable</b> name
-</dt>
-<dd></dd>
-<dt><b>Installable</b> "name/text"
-</dt>
-<dd></dd>
-<dt><b>LocAttribute</b> name "keyword/text" value
-</dt>
-<dd></dd>
-<dt><b>ManualCopies</b> boolean-value
-</dt>
-<dd></dd>
-<dt><b>Manufacturer</b> "name"
-</dt>
-<dd></dd>
-<dt><b>MaxSize</b> width length
-</dt>
-<dd></dd>
-<dt><b>MediaSize</b> name
-</dt>
-<dd></dd>
-<dt><b>MediaType</b> type name
-</dt>
-<dd></dd>
-<dt><b>MediaType</b> type "name/text"
-</dt>
-<dd></dd>
-<dt><b>MinSize</b> width length
-</dt>
-<dd></dd>
-<dt><b>ModelName</b> "name"
-</dt>
-<dd></dd>
-<dt><b>ModelNumber</b> number
-</dt>
-<dd></dd>
-<dt><b>Option</b> name type section order
-</dt>
-<dd></dd>
-<dt><b>Option</b> "name/text" type section order
-</dt>
-<dd></dd>
-<dt><b>PCFileName</b> "filename.ppd"
-</dt>
-<dd></dd>
-<dt><b>Resolution</b> colorspace bits-per-color row-count row-feed row-step name
-</dt>
-<dd></dd>
-<dt><b>Resolution</b> colorspace bits-per-color row-count row-feed row-step "name/text"
-</dt>
-<dd></dd>
-<dt><b>SimpleColorProfile</b> resolution/mediatype density yellow-density red-density gamma red-adjust green-adjust blue-adjust
-</dt>
-<dd></dd>
-<dt><b>Throughput</b> pages-per-minute
-</dt>
-<dd></dd>
-<dt><b>UIConstraints</b> "*Option1 *Option2"
-</dt>
-<dd></dd>
-<dt><b>UIConstraints</b> "*Option1 Choice1 *Option2"
-</dt>
-<dd></dd>
-<dt><b>UIConstraints</b> "*Option1 *Option2 Choice2"
-</dt>
-<dd></dd>
-<dt><b>UIConstraints</b> "*Option1 Choice1 *Option2 Choice2"
-</dt>
-<dd></dd>
-<dt><b>VariablePaperSize</b> boolean-value
-</dt>
-<dd></dd>
-<dt><b>Version</b> number
-</dt>
-<dd></dd>
-</dl>
+The CUPS PPD compiler reads meta files that contain descriptions of one or more PPD files to be generated by
+<a href="man-ppdc.html?TOPIC=Man+Pages"><b>ppdc</b>(1).</a>
+This man page provides a quick reference to the supported keywords and should be used in conjunction with the online help for CUPS.
+<p>The source file format is plain ASCII text that can be edited using your favorite text editor. Comments are supported using the C (/* ... */) and C++ (// ...) comment mechanisms.
+<p>Printer driver information can be grouped and shared using curly braces ({ ... }); PPD files are written when a close brace or end-of-file is seen and a PCFileName directive has been defined.
+<p>Directives may be placed anywhere on a line and are followed by one or more values. The following is a list of the available directives and the values they accept:
+<dl class="man">
+<dt><b>#define </b><i>name value</i>
+<dd style="margin-left: 5.0em"><dt><b>#elif </b>{<i>name </i>| <i>value</i>}
+<dd style="margin-left: 5.0em"><dt><b>#else</b>
+<dd style="margin-left: 5.0em"><dt><b>#endif</b>
+<dd style="margin-left: 5.0em"><dt><b>#font </b><i>name encoding "version" charset status</i>
+<dd style="margin-left: 5.0em"><dt><b>#if </b>{<i>name </i>| <i>value</i>}
+<dd style="margin-left: 5.0em"><dt><b>#include &lt;</b><i>filename</i><b>></b>
+<dd style="margin-left: 5.0em"><dt><b>#include "</b><i>filename</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>#media </b><i>name width length</i>
+<dd style="margin-left: 5.0em"><dt><b>#media "</b><i>name</i><b>/</b><i>text</i><b>" </b><i>width length</i>
+<dd style="margin-left: 5.0em"><dt><b>#po </b><i>locale </i><b>"</b><i>filename</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>Attribute </b><i>name </i><b>"" </b><i>value</i>
+<dd style="margin-left: 5.0em"><dt><b>Attribute </b><i>name keyword value</i>
+<dd style="margin-left: 5.0em"><dt><b>Attribute </b><i>name </i><b>"</b><i>keyword</i><b>/</b><i>text</i><b>" </b><i>value</i>
+<dd style="margin-left: 5.0em"><dt><b>Choice </b><i>name </i><b>"</b><i>code</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>Choice "</b><i>name</i><b>/</b><i>text</i><b>" "</b><i>code</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>ColorDevice </b><i>boolean-value</i>
+<dd style="margin-left: 5.0em"><dt><b>ColorModel </b><i>name colorspace colororder compression</i>
+<dd style="margin-left: 5.0em"><dt><b>ColorModel "</b><i>name</i><b>/</b><i>text</i><b>" </b><i>colorspace colororder compression</i>
+<dd style="margin-left: 5.0em"><dt><b>ColorProfile </b><i>resolution</i><b>/</b><i>mediatype gamma density matrix</i>
+<dd style="margin-left: 5.0em"><dt><b>Copyright "</b><i>text</i>"
+<dd style="margin-left: 5.0em"><dt><b>CustomMedia </b><i>name width length left bottom right top </i><b>"</b><i>size-code</i><b>" "</b><i>region-code</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>CustomMedia "</b><i>name</i><b>/</b><i>text</i><b>" </b><i>width length left bottom right top </i><b>"</b><i>size-code</i><b>" "</b><i>region-code</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>Cutter </b><i>boolean-value</i>
+<dd style="margin-left: 5.0em"><dt><b>Darkness </b><i>temperature name</i>
+<dd style="margin-left: 5.0em"><dt><b>Darkness </b><i>temperature </i><b>"</b><i>name</i><b>/</b><i>text</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>DriverType </b><i>type</i>
+<dd style="margin-left: 5.0em"><dt><b>Duplex </b><i>type</i>
+<dd style="margin-left: 5.0em"><dt><b>Filter Imime-type cost program</b>
+<dd style="margin-left: 5.0em"><dt><b>Finishing </b><i>name</i>
+<dd style="margin-left: 5.0em"><dt><b>Finishing "</b><i>name</i><b>/</b><i>text</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>Font *</b>
+<dd style="margin-left: 5.0em"><dt><b>Font </b><i>name encoding </i><b>"</b><i>version</i><b>" </b><i>charset status</i>
+<dd style="margin-left: 5.0em"><dt><b>Group </b><i>name</i>
+<dd style="margin-left: 5.0em"><dt><b>Group "</b><i>name</i><b>/</b><i>text</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>HWMargins </b><i>left bottom right top</i>
+<dd style="margin-left: 5.0em"><dt><b>InputSlot </b><i>position name</i>
+<dd style="margin-left: 5.0em"><dt><b>InputSlot </b><i>position </i><b>"</b><i>name</i><b>/</b><i>text</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>Installable </b><i>name</i>
+<dd style="margin-left: 5.0em"><dt><b>Installable "</b><i>name</i><b>/</b><i>text</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>LocAttribute </b><i>name </i><b>"</b><i>keyword</i><b>/</b><i>text</i><b>" </b><i>value</i>
+<dd style="margin-left: 5.0em"><dt><b>ManualCopies </b><i>boolean-value</i>
+<dd style="margin-left: 5.0em"><dt><b>Manufacturer "</b><i>name</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>MaxSize </b><i>width length</i>
+<dd style="margin-left: 5.0em"><dt><b>MediaSize </b><i>name</i>
+<dd style="margin-left: 5.0em"><dt><b>MediaType </b><i>type name</i>
+<dd style="margin-left: 5.0em"><dt><b>MediaType </b><i>type </i><b>"</b><i>name</i><b>/</b><i>text</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>MinSize </b><i>width length</i>
+<dd style="margin-left: 5.0em"><dt><b>ModelName "</b><i>name</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>ModelNumber </b><i>number</i>
+<dd style="margin-left: 5.0em"><dt><b>Option </b><i>name type section order</i>
+<dd style="margin-left: 5.0em"><dt><b>Option "</b><i>name</i><b>/</b><i>text</i><b>" </b><i>type section order</i>
+<dd style="margin-left: 5.0em"><dt><b>PCFileName "</b><i>filename.ppd</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>Resolution </b><i>colorspace bits-per-color row-count row-feed row-step name</i>
+<dd style="margin-left: 5.0em"><dt><b>Resolution </b><i>colorspace bits-per-color row-count row-feed row-step </i><b>"</b><i>name</i><b>/</b><i>text</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>SimpleColorProfile </b><i>resolution</i><b>/</b><i>mediatype density yellow-density red-density gamma red-adjust green-adjust blue-adjust</i>
+<dd style="margin-left: 5.0em"><dt><b>Throughput </b><i>pages-per-minute</i>
+<dd style="margin-left: 5.0em"><dt><b>UIConstraints "</b><i>*Option1 *Option2</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>UIConstraints "</b><i>*Option1 Choice1 *Option2</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>UIConstraints "</b><i>*Option1 *Option2 Choice2</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>UIConstraints "</b><i>*Option1 Choice1 *Option2 Choice2</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>VariablePaperSize </b><i>boolean-value</i>
+<dd style="margin-left: 5.0em"><dt><b>Version </b><i>number</i>
+<dd style="margin-left: 5.0em"></dl>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-ppdc(1), ppdhtml(1), ppdi(1), ppdmerge(1), ppdpo(1)
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-ppdc.html?TOPIC=Man+Pages"><b>ppdc</b>(1),</a>
+<a href="man-ppdhtml.html?TOPIC=Man+Pages"><b>ppdhtml</b>(1),</a>
+<a href="man-ppdi.html?TOPIC=Man+Pages"><b>ppdi</b>(1),</a>
+<a href="man-ppdmerge.html?TOPIC=Man+Pages"><b>ppdmerge</b>(1),</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index 460f6ae6d430e041cd9b0035aa3c79116dbaba87..51cdcd227c5a85e3dd3f09703292b19fb19a7907 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: Man Pages -->
 <head>
@@ -8,31 +8,38 @@
 <body>
 <h1 class="title">ppdhtml(1)</h1>
 <h2 class="title"><a name="NAME">Name</a></h2>
-ppdhtml - cups html summary generator
+ppdhtml - cups html summary generator (deprecated)
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>ppdhtml
-</b>[ -D
-<i>name[=value]
-</i>] [ -I
-<i>include-directory
-</i>]
-<i>source-file
-</i><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>ppdhtml</i> reads a driver information file and produces a
-HTML summary page that lists all of the drivers in a file and
-the supported options.
-<p>The <i>-D</i> option sets the named variable for use in the
-source file. It is equivalent to using the #define directive
-in the source file.
-<p>The <i>-I</i> option specifies an alternate include directory;
-multiple <i>-I</i> options can be supplied to add additional
-directories.
+<b>ppdhtml</b>
+[
+<b>-D </b><i>name</i>[<b>=</b><i>value</i>]
+] [
+<b>-I</b>
+<i>include-directory</i>
+]
+<i>source-file</i>
+<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
+<b>ppdhtml</b> reads a driver information file and produces a HTML summary page that lists all of the drivers in a file and the supported options.
+<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>ppdhtml</b> supports the following options:
+<dl class="man">
+<dt><b>-D </b><i>name</i>[<b>=</b><i>value</i>]
+<dd style="margin-left: 5.0em">Sets the named variable for use in the source file.
+It is equivalent to using the <i>#define</i> directive in the source file.
+<dt><b>-I </b><i>include-directory</i>
+<dd style="margin-left: 5.0em">Specifies an alternate include directory.
+Multiple <i>-I</i> options can be supplied to add additional directories.
+</dl>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-ppdc(1), ppdcfile(5), ppdi(1), ppdmerge(1), ppdpo(1)
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-ppdc.html?TOPIC=Man+Pages"><b>ppdc</b>(1),</a>
+<a href="man-ppdcfile.html?TOPIC=Man+Pages"><b>ppdcfile</b>(5),</a>
+<a href="man-ppdi.html?TOPIC=Man+Pages"><b>ppdi</b>(1),</a>
+<a href="man-ppdmerge.html?TOPIC=Man+Pages"><b>ppdmerge</b>(1),</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index 725617754b458b4f24b0a87306e1d50aed21308b..9fb849990e9e3a7f45fce1682b3584565f608b63 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: Man Pages -->
 <head>
@@ -8,32 +8,45 @@
 <body>
 <h1 class="title">ppdi(1)</h1>
 <h2 class="title"><a name="NAME">Name</a></h2>
-ppdi - import ppd files
+ppdi - import ppd files (deprecated)
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>ppdi
-</b>[ -I
-<i>include-directory
-</i>] [ -o
-<i>source-file
-</i>]
-<i>ppd-file
-</i>[
-<i>ppd-file2 ... ppd-fileN
-</i>]
+<b>ppdi</b>
+[
+<b>-I</b>
+<i>include-directory</i>
+] [
+<b>-o</b>
+<i>source-file</i>
+]
+<i>ppd-file</i>
+[ ...
+<i>ppd-file</i>
+]
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>ppdi</i> imports one or more PPD files into a PPD compiler source file.
-Multiple languages of the same PPD file are merged into a single printer
-definition to facilitate accurate changes for all localizations.
-<p>The <i>-o</i> option specifies the PPD source file to update. If the source
-file does not exist, a new source file is created. Otherwise the existing
-file is merged with the new PPD file(s) on the command-line. If no source
-file is specified, the filename "ppdi.drv" is used.
+<b>ppdi</b> imports one or more PPD files into a PPD compiler source file.
+Multiple languages of the same PPD file are merged into a single printer definition to facilitate accurate changes for all localizations.
+<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>ppdi</b> supports the following options:
+<dl class="man">
+<dt><b>-I </b><i>include-directory</i>
+<dd style="margin-left: 5.0em">Specifies an alternate include directory.
+Multiple <i>-I</i> options can be supplied to add additional directories.
+<dt><b>-o </b><i>source-file</i>
+<dd style="margin-left: 5.0em">Specifies the PPD source file to update.
+If the source file does not exist, a new source file is created.
+Otherwise the existing file is merged with the new PPD file(s) on the command-line.
+If no source file is specified, the filename <i>ppdi.drv</i> is used.
+</dl>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-ppdc(1), ppdhtml(1), ppdmerge(1), ppdpo(1), ppdcfile(5)
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-ppdc.html?TOPIC=Man+Pages"><b>ppdc</b>(1),</a>
+<a href="man-ppdhtml.html?TOPIC=Man+Pages"><b>ppdhtml</b>(1),</a>
+<a href="man-ppdmerge.html?TOPIC=Man+Pages"><b>ppdmerge</b>(1),</a>
+<a href="man-ppdpo.html?TOPIC=Man+Pages"><b>ppdpo</b>(1),</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index fbf7f049ed37b25cdca6307668e41c386df3806a..1a9d05ae225e644504f85a1fa6a8334c11b59643 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: Man Pages -->
 <head>
@@ -8,33 +8,42 @@
 <body>
 <h1 class="title">ppdmerge(1)</h1>
 <h2 class="title"><a name="NAME">Name</a></h2>
-ppdmerge - merge ppd files
+ppdmerge - merge ppd files (deprecated)
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>ppdmerge
-</b>[ -o
-<i>output-ppd-file
-</i>]
-<i>ppd-file
-</i><i>ppd-file2
-</i>[
-<i>... ppd-fileN
-</i>]
+<b>ppdmerge</b>
+[
+<b>-o</b>
+<i>output-ppd-file</i>
+]
+<i>ppd-file</i>
+<i>ppd-file</i>
+[ ...
+<i>ppd-file</i>
+]
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>ppdmerge</i> merges two or more PPD files into a single, multi-language
+<b>ppdmerge</b> merges two or more PPD files into a single, multi-language
 PPD file.
-<p>The <i>-o</i> option specifies the PPD file to create. If not specified,
-the merged PPD file is written to the standard output. If the output file
-already exists, the new
+<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>ppdmerge</b> supports the following options:
+<dl class="man">
+<dt><b>-o </b><i>output-ppd-file</i>
+<dd style="margin-left: 3.0em">Specifies the PPD file to create.
+If not specified, the merged PPD file is written to the standard output.
+If the output file already exists, it is silently overwritten.
+</dl>
 <h2 class="title"><a name="NOTES">Notes</a></h2>
-<i>ppdmerge</i> does not check whether the merged PPD files are for the
-same device. Merging of different device PPDs will yield unpredictable
-results.
+<b>ppdmerge</b> does not check whether the merged PPD files are for the same device.
+Merging of different device PPDs will yield unpredictable results.
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-cupsprofile(1), ppdc(1), ppdhtml(1), ppdi(1), ppdpo(1), ppdcfile(5)
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-ppdc.html?TOPIC=Man+Pages"><b>ppdc</b>(1),</a>
+<a href="man-ppdhtml.html?TOPIC=Man+Pages"><b>ppdhtml</b>(1),</a>
+<a href="man-ppdi.html?TOPIC=Man+Pages"><b>ppdi</b>(1),</a>
+<a href="man-ppdpo.html?TOPIC=Man+Pages"><b>ppdpo</b>(1),</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index 66ee0b6fc40ed862a8168604fa5534e367b608c8..dfbf27840cfb717083866c9b1bbec0b4d3607f2a 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: Man Pages -->
 <head>
@@ -8,36 +8,44 @@
 <body>
 <h1 class="title">ppdpo(1)</h1>
 <h2 class="title"><a name="NAME">Name</a></h2>
-ppdpo - ppd message catalog generator
+ppdpo - ppd message catalog generator (deprecated)
 <h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>ppdpo
-</b>[ -D
-<i>name[=value]
-</i>] [ -I
-<i>include-directory
-</i>] [ -o
-<i>output-file
-</i>]
-<i>source-file
-</i><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>ppdpo</i> extracts UI strings from PPDC source files and updates either
-a GNU gettext or OS X strings format message catalog source file for
-translation.
-<p>The <i>-D</i> option sets the named variable for use in the
-source file. It is equivalent to using the #define directive
-in the source file.
-<p>The <i>-I</i> option specifies an alternate include directory;
-multiple <i>-I</i> options can be supplied to add additional
-directories.
-<p>The <i>-o</i> option specifies the output file. The supported extensions are
-".po" or ".po.gz" for GNU gettext format message catalogs and ".strings" for
-OS X strings files.
+<b>ppdpo</b>
+[
+<b>-D </b><i>name</i>[<b>=</b><i>value</i>]
+] [
+<b>-I</b>
+<i>include-directory</i>
+] [
+<b>-o</b>
+<i>output-file</i>
+]
+<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>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:
+<dl class="man">
+<dt><b>-D </b><i>name</i>[<b>=</b><i>value</i>]
+<dd style="margin-left: 5.0em">Sets the named variable for use in the source file.
+It is equivalent to using the <i>#define</i> directive in the source file.
+<dt><b>-I </b><i>include-directory</i>
+<dd style="margin-left: 5.0em">Specifies an alternate include directory.
+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.
+</dl>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-ppdc(1), ppdhtml(1), ppdi(1), ppdmerge(1), ppdcfile(5)
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-ppdc.html?TOPIC=Man+Pages"><b>ppdc</b>(1),</a>
+<a href="man-ppdhtml.html?TOPIC=Man+Pages"><b>ppdhtml</b>(1),</a>
+<a href="man-ppdi.html?TOPIC=Man+Pages"><b>ppdi</b>(1),</a>
+<a href="man-ppdmerge.html?TOPIC=Man+Pages"><b>ppdmerge</b>(1),</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index 958e4026fabcc7fd08dc6178c4e99a2220c36531..625115a8bf8e38a77a2d74944ea59b01bf2e16d2 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: Man Pages -->
 <head>
 <h2 class="title"><a name="NAME">Name</a></h2>
 printers.conf - printer configuration file for cups
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <i>printers.conf</i> file defines the local printers that are
-available. It is normally located in the <i>/etc/cups</i> directory and
-is generated automatically by the <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a> program when printers
-are added or deleted.
-<p>Each line in the file can be a configuration directive, a blank line,
-or a comment. Comment lines start with the # character.
-<h2 class="title"><a name="DIRECTIVES">Directives</a></h2>
-<dl>
-<dt>&lt;Printer name> ... &lt;/Printer>
-</dt>
-<dd></dd>
-<dd>Defines a specific printer.
-</dd>
-<dt>&lt;DefaultPrinter name> ... &lt;/Printer>
-</dt>
-<dd></dd>
-<dd>Defines a default printer.
-</dd>
-<dt>Accepting Yes
-</dt>
-<dd></dd>
-<dt>Accepting No
-</dt>
-<dd></dd>
-<dd>Specifies whether the printer is accepting new jobs.
-</dd>
-<dt>AllowUser [ user @group ... ]
-</dt>
-<dd></dd>
-<dd>Allows specific users and groups to print to the printer.
-</dd>
-<dt>DenyUser [ user @group ... ]
-</dt>
-<dd></dd>
-<dd>Prevents specific users and groups from printing to the printer.
-</dd>
-<dt>DeviceURI uri
-</dt>
-<dd></dd>
-<dd>Specifies the device URI for a printer.
-</dd>
-<dt>ErrorPolicy abort-job
-</dt>
-<dd></dd>
-<dt>ErrorPolicy retry-current-job
-</dt>
-<dd></dd>
-<dt>ErrorPolicy retry-job
-</dt>
-<dd></dd>
-<dt>ErrorPolicy stop-printer
-</dt>
-<dd></dd>
-<dd>Specifies the error policy for the printer.
-</dd>
-<dt>Info text
-</dt>
-<dd></dd>
-<dd>Specifies human-readable text describing the printer.
-</dd>
-<dt>JobSheets banner banner
-</dt>
-<dd></dd>
-<dd>Specifies the banner pages to use for the printer.
-</dd>
-<dt>KLimit number
-</dt>
-<dd></dd>
-<dd>Specifies the job-k-limit value for the printer.
-</dd>
-<dt>Location text
-</dt>
-<dd></dd>
-<dd>Specifies human-readable text describing the location of the printer.
-</dd>
-<dt>OpPolicy name
-</dt>
-<dd></dd>
-<dd>Specifies the operation policy for the printer.
-</dd>
-<dt>PageLimit number
-</dt>
-<dd></dd>
-<dd>Specifies the job-page-limit value for the printer.
-</dd>
-<dt>PortMonitor monitor
-</dt>
-<dd></dd>
-<dd>Specifies the port monitor for a printer.
-</dd>
-<dt>QuotaPeriod seconds
-</dt>
-<dd></dd>
-<dd>Specifies the job-quota-period value for the printer.
-</dd>
-<dt>Shared Yes
-</dt>
-<dd></dd>
-<dt>Shared No
-</dt>
-<dd></dd>
-<dd>Specifies whether the printer is shared.
-</dd>
-<dt>State idle
-</dt>
-<dd></dd>
-<dt>State stopped
-</dt>
-<dd></dd>
-<dd>Specifies the initial state of the printer (Idle or Stopped)
-</dd>
-<dt>StateMessage text
-</dt>
-<dd></dd>
-<dd>Specifies the message associated with the state.
-</dd>
-<dt>StateTime seconds
-</dt>
-<dd></dd>
-<dd>Specifies the date/time associated with the state.
-</dd>
-</dl>
+The <b>printers.conf</b> file defines the local printers that are available. It is normally located in the <i>/etc/cups</i> directory and is maintained by the
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8)</a>
+program. This file is not intended to be edited or managed manually.
+<h2 class="title"><a name="NOTES">Notes</a></h2>
+The name, location, and format of this file are an implementation detail that will change in future releases of CUPS.
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-classes.conf.html?TOPIC=Man+Pages'>classes.conf(5)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>,
-<a href='man-mime.convs.html?TOPIC=Man+Pages'>mime.convs(5)</a>, <a href='man-mime.types.html?TOPIC=Man+Pages'>mime.types(5)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-classes.conf.html?TOPIC=Man+Pages"><b>classes.conf</b>(5),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-mime.convs.html?TOPIC=Man+Pages"><b>mime.convs</b>(5),</a>
+<a href="man-mime.types.html?TOPIC=Man+Pages"><b>mime.types</b>(5),</a>
+<a href="man-subscriptions.conf.html?TOPIC=Man+Pages"><b>subscriptions.conf</b>(5),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index 94afd211daf7d9c9b9990c6676707a147f80cf0d..19868e546af00ff5e2533e61ff00a516f1635856 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: Man Pages -->
 <head>
@@ -8,89 +8,23 @@
 <body>
 <h1 class="title">subscriptions.conf(5)</h1>
 <h2 class="title"><a name="NAME">Name</a></h2>
-subscriptions.conf - subscriptions file for cups
+subscriptions.conf - subscription configuration file for cups
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <i>subscriptions.conf</i> file defines the local subscriptions
-that are active. It is normally located in the <i>/etc/cups</i>
-directory and is generated automatically by the <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>
-program when subscriptions are created, renewed, or cancelled.
-<p>Each line in the file can be a configuration directive, a blank line,
-or a comment. Comment lines start with the # character.
-<h2 class="title"><a name="DIRECTIVES">Directives</a></h2>
-<dl>
-<dt>&lt;Subscription NNN> ... &lt;/Subscription>
-</dt>
-<dd></dd>
-<dd>Defines a subscription.
-</dd>
-<dt>Events name [ ... name ]
-</dt>
-<dd></dd>
-<dd>Specifies the events that are subscribed.
-</dd>
-<dt>ExpirationTime unix-time
-</dt>
-<dd></dd>
-<dd>Specifies the expiration time of a subscription as a UNIX time
-value in seconds since January 1st, 1970.
-</dd>
-<dt>Interval seconds
-</dt>
-<dd></dd>
-<dd>Specifies the preferred time interval for event notifications in
-seconds.
-</dd>
-<dt>JobId job-id
-</dt>
-<dd></dd>
-<dd>Specifies the job ID associated with the subscription.
-</dd>
-<dt>LeaseDuration seconds
-</dt>
-<dd></dd>
-<dd>Specifies the number of seconds that the subscription is valid
-for. If 0, the subscription does not expire.
-</dd>
-<dt>NextEventId number
-</dt>
-<dd></dd>
-<dd>Specifies the next notify-sequence-number to use for the
-subscription.
-</dd>
-<dt>NextSubscriptionId number
-</dt>
-<dd></dd>
-<dd>Specifies the next subscription-id to use.
-</dd>
-<dt>Owner username
-</dt>
-<dd></dd>
-<dd>Specifies the user that owns the subscription.
-</dd>
-<dt>PrinterName printername
-</dt>
-<dd></dd>
-<dd>Specifies the printer or class associated with the subscription.
-</dd>
-<dt>Recipient uri
-</dt>
-<dd></dd>
-<dd>Specifies the notify-recipient-uri value for push-type notifications.
-</dd>
-<dt>UserData hex-escaped-data
-</dt>
-<dd></dd>
-<dd>Specifies user data to be included in event notifications. This
-is typically the "from" address in mailto: notifications.
-</dd>
-</dl>
+The <b>subscriptions.conf</b> file defines the local event notification subscriptions that are active. It is normally located in the <i>/etc/cups</i> directory and is maintained by the
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8)</a>
+program. This file is not intended to be edited or managed manually.
+<h2 class="title"><a name="NOTES">Notes</a></h2>
+The name, location, and format of this file are an implementation detail that will change in future releases of CUPS.
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-classes.conf.html?TOPIC=Man+Pages'>classes.conf(5)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>,
-<a href='man-mime.convs.html?TOPIC=Man+Pages'>mime.convs(5)</a>, <a href='man-mime.types.html?TOPIC=Man+Pages'>mime.types(5)</a>, printers.conf(5)
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-classes.conf.html?TOPIC=Man+Pages"><b>classes.conf</b>(5),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-mime.convs.html?TOPIC=Man+Pages"><b>mime.convs</b>(5),</a>
+<a href="man-mime.types.html?TOPIC=Man+Pages"><b>mime.types</b>(5),</a>
+<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 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
 
 </body>
 </html>
index 4a4b173b246e65cea4ed31c323caf7dc3488cabc..f8466378b736f9bbf2bf8d26c0f4acd264a09e12 100644 (file)
@@ -47,14 +47,9 @@ different ways.</P>
 
 <H2 CLASS="title"><A NAME="BEGIN">Where Do I Begin?</A></H2>
 
-<P>Click on the <A HREF="http://localhost:631/admin">Administration</A> tab at
-the top of this page. Click on the <VAR>Add Printer</VAR> button and follow the
-prompts.</P>
+<P>Click on the <var>Administration</var> tab at the top of this page. 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 MacOS X, 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 OS X<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 fde5890befbeb979e7769c127426be2aa5e6e615..1469f45e51da7857aee050e573af1fc8fab8a78f 100644 (file)
@@ -38,7 +38,19 @@ 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;
@@ -77,7 +89,7 @@ A:link:hover IMG {
 }
 
 A:link, A:visited {
-  font-weight: normal;
+  font-weight: inherit;
   text-decoration: none;
 }
 
index 27decdbbb769d1b8301c801041532f1aa3d5a595..729e26851ee2a8f3fe827de0cbfd0a548473148b 100644 (file)
@@ -38,7 +38,19 @@ 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;
@@ -77,7 +89,7 @@ A:link:hover IMG {
 }
 
 A:link, A:visited {
-  font-weight: normal;
+  font-weight: inherit;
   text-decoration: none;
 }
 
index 0399f057c438e23f97b0524a31b78765617231fd..8055705f4f2cc2ddafb7a424c18694e067fb855d 100644 (file)
@@ -38,7 +38,19 @@ 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;
@@ -77,7 +89,7 @@ A:link:hover IMG {
 }
 
 A:link, A:visited {
-  font-weight: normal;
+  font-weight: inherit;
   text-decoration: none;
 }
 
diff --git a/doc/help/ref-access_log.html b/doc/help/ref-access_log.html
deleted file mode 100644 (file)
index 015ea17..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
-       <TITLE>access_log</TITLE>
-       <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">access_log</H1>
-
-<P>The <VAR>access_log</VAR> file lists each HTTP resource that
-is accessed by a web browser or client. Each line is in an
-extended version of the so-called "Common Log Format" used by
-many web servers and web reporting tools:</P>
-
-<P CLASS="command">
-
-host group user date-time \"method resource version\" status
-bytes ipp-operation ipp-status<BR>
-
-<BR>
-
-10.0.1.2 - - [01/Dec/2005:21:50:28 +0000] "POST / HTTP/1.1" 200
-317 CUPS-Get-Printers
-successful-ok-ignored-or-substituted-attributes<BR>
-
-localhost - - [01/Dec/2005:21:50:32 +0000] "GET /admin HTTP/1.1"
-200 0 - -<BR>
-
-localhost - - [01/Dec/2005:21:50:32 +0000] "POST / HTTP/1.1" 200
-157 CUPS-Get-Printers
-successful-ok-ignored-or-substituted-attributes<BR>
-
-localhost - - [01/Dec/2005:21:50:32 +0000] "POST / HTTP/1.1" 200
-1411 CUPS-Get-Devices -<BR>
-
-localhost - - [01/Dec/2005:21:50:32 +0000] "GET /admin HTTP/1.1"
-200 6667 - -<BR>
-
-</P>
-
-<P>The <I>host</I> field will normally only be an IP address
-unless you have enabled the <A
-HREF="ref-cupsd-conf.html#HostNameLookups"><CODE>HostNameLookups</CODE></A>
-directive in the <VAR>cupsd.conf</VAR> file or if the IP address
-corresponds to your local machine.</P>
-
-<P>The <I>group</I> field always contains "-".</P>
-
-<P>The <I>user</I> field is the authenticated username of the
-requesting user. If no username and password is supplied for the
-request then this field contains "-".</P>
-
-<P>The <I>date-time</I> field is the date and time of the request
-in local time and is in the format:</P>
-
-<P CLASS="command">
-[DD/MON/YYYY:HH:MM:SS +ZZZZ]
-</P>
-
-<P>The <I>method</I> field is the HTTP method used: "GET",
-"OPTIONS", "PUT", or "POST". "GET" requests are used to get files
-from the server, both for the web interface and to get
-configuration and log files. "OPTIONS" requests are used to
-upgrade connections to TLS encryption. "PUT" requests are used to
-upload configuration files. "POST" requests are used for web
-interface forms and IPP requests.</P>
-
-<P>The <I>resource</I> field is the filename of the requested
-resource.</P>
-
-<P>The <I>version</I> field is the HTTP specification version used by the
-client. For CUPS clients this will always be "HTTP/1.1".</P>
-
-<P>The <I>status</I> field contains the HTTP result status of the
-request, as follows:</P>
-
-<UL>
-
-       <LI><CODE>200</CODE> - Successful operation.</LI>
-
-       <LI><CODE>201</CODE> - File created/modified successfully.</LI>
-
-       <LI><CODE>304</CODE> - The requested file has not changed.</LI>
-
-       <LI><CODE>400</CODE> - Bad HTTP request; typically this
-       means that you have a malicious program trying to access
-       your server.</LI>
-
-       <LI><CODE>401</CODE> - Unauthorized, authentication
-       (username + password) is required.</LI>
-
-       <LI><CODE>403</CODE> - Access is forbidden; typically
-       this means that a client tried to access a file or
-       resource they do not have permission to access.</LI>
-
-       <LI><CODE>404</CODE> - The file or resource does not
-       exist.</LI>
-
-       <LI><CODE>405</CODE> - URL access method is not allowed;
-       typically this means you have a web browser using your
-       server as a proxy.</LI>
-
-       <LI><CODE>413</CODE> - Request too large; typically this
-       means that a client tried to print a file larger than the
-       <A
-       HREF="ref-cupsd-conf.html#MaxRequestSize"><CODE>MaxRequestSize</CODE></A>
-       allows.</LI>
-
-       <LI><CODE>426</CODE> - Upgrading to TLS-encrypted
-       connection.</LI>
-
-       <LI><CODE>500</CODE> - Server error; typically this
-       happens when the server is unable to open/create a file -
-       consult the <VAR>error_log</VAR> file for details.</LI>
-
-       <LI><CODE>501</CODE> - The client requested encryption
-       but encryption support is not enabled/compiled in.</LI>
-
-       <LI><CODE>505</CODE> - HTTP version number not supported;
-       typically this means that you have a malicious program
-       trying to access your server.</LI>
-
-</UL>
-
-<P>The <I>bytes</I> field contains the number of bytes in the
-request. For POST requests the <I>bytes</I> field contains the
-number of bytes of non-IPP data that is received from the
-client.</P>
-
-<P>The <I>ipp-operation</I> field contains either "-" for non-IPP
-requests or the IPP operation name for POST requests containing
-an IPP request.</P>
-
-<P>The <I>ipp-status</I> field contains either "-" for non-IPP
-requests or the IPP status code name for POST requests containing
-an IPP response.</P>
-
-</BODY>
-</HTML>
diff --git a/doc/help/ref-classes-conf.html b/doc/help/ref-classes-conf.html
deleted file mode 100644 (file)
index 4171bb2..0000000
+++ /dev/null
@@ -1,565 +0,0 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
-       <TITLE>classes.conf</TITLE>
-       <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">classes.conf</H1>
-
-<P>The CUPS scheduler (cupsd) uses the
-<VAR>/etc/cups/classes.conf</VAR> file to store the list of
-available classes. This file contains only locally defined
-classes, not remote classes that are created automatically via
-browsing. Each directive is listed on a line by itself followed
-by its value. Comments are introduced using the number sign ("#")
-character at the beginning of a line.</P>
-
-<P>While the class configuration file consists of plain text and
-can be modified using your favorite text editor, you should
-normally use the <A HREF="man-lpadmin.html">lpadmin(8)</A>
-command, web interface, or any of the available GUIs to manage
-your classes instead. If you do choose to edit this file
-manually, you will need to stop the scheduler first, make your
-changes, and then start the scheduler to make them active.</P>
-
-
-<H2 CLASS="title"><A NAME="Accepting">Accepting</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
-  ...
-  Accepting yes
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Accepting</CODE> directive defines the initial state
-of the <VAR>printer-is-accepting-jobs</VAR> attribute. This state
-is also set by the <CODE>accept(8)</CODE> and
-<CODE>reject(8)</CODE> commands:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/accept classname
-/usr/sbin/reject classname</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="AllowUser">AllowUser</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
-  ...
-  AllowUser foo_user
-  AllowUser @bar_group
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>AllowUser</CODE> directive adds a username or group
-name to the <VAR>requesting-user-name-allowed</VAR> attribute
-which can be set by the <CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p classname -u allow:foo_user,@bar_group</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A> directive.
-This directive cannot be used with <A
-HREF="#DenyUser"><CODE>DenyUser</CODE></A>.</P>
-
-
-<H2 CLASS="title"><A NAME="Class">Class</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
-  ...
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Class</CODE> directive begins a class definition.
-Classes are added using the <CODE>lpadmin(8)</CODE> command:
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -c classname</KBD>
-</PRE>
-
-
-<H2 CLASS="title"><A NAME="DefaultClass">DefaultClass</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;DefaultClass name&gt;
-  ...
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DefaultClass</CODE> directive begins a class
-definition as the default server destination. The default server
-destination can be set using the <CODE>lpadmin(8)</CODE>
-command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -d classname</KBD>
-</PRE>
-
-<P>Note that the server default destination settings can be
-overridden by the user's default destination settings which are
-normally set using the <CODE>lpoptions(1)</CODE> command.</P>
-
-
-<H2 CLASS="title"><A NAME="DenyUser">DenyUser</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
-  ...
-  DenyUser foo_user
-  DenyUser @bar_group
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DenyUser</CODE> directive adds a username or group
-name to the <VAR>requesting-user-name-denied</VAR> attribute
-which can be set by the <CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p classname -u deny:foo_user,@bar_group</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A> directive.
-This directive cannot be used with <A
-HREF="#AllowUser"><CODE>AllowUser</CODE></A></P>
-
-
-<H2 CLASS="title"><A NAME="Info">Info</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
-  ...
-  Info My Class
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Info</CODE> directive defines the string for the
-<VAR>printer-info</VAR> attribute. It is normally set using the
-<CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p classname -D "My Class"</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="JobSheets">JobSheets</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
-  ...
-  JobSheets none,standard
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>JobSheets</CODE> directive specifies the default
-banner pages  to print before and after a print job. In the above
-example, only a <VAR>standard</VAR> banner will print after each
-job. The <CODE>lpadmin(8)</CODE> command is normally used to set
-the default banners:
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p classname -o job-sheets-default=none,standard</KBD>
-</PRE>
-
-<P>If only one banner file is specified, it will be printed
-before the files in the job. If a second banner file is
-specified, it is printed  after the files in the job.</P>
-
-<P>The available banner pages depend on the local system
-configuration; CUPS includes the following standard banner
-files:</P>
-
-<UL>
-
-       <LI><CODE>none</CODE> - Do not produce a banner
-       page.</LI>
-
-       <LI><CODE>classified</CODE> - A banner page with a
-       &quot;classified&quot; label at the top and bottom.</LI>
-
-       <LI><CODE>confidential</CODE> - A banner page with a
-       &quot;confidential&quot; label at the top and bottom.</LI>
-
-       <LI><CODE>secret</CODE> - A banner page with a
-       &quot;secret&quot; label at the top and bottom.</LI>
-
-       <LI><CODE>standard</CODE> - A banner page with no label
-       at the top and bottom.</LI>
-
-       <LI><CODE>topsecret</CODE> - A banner page with a
-       &quot;top secret&quot; label at the top and bottom.</LI>
-
-       <LI><CODE>unclassified</CODE> - A banner page with an
-       &quot;unclassified&quot; label at the top and bottom.</LI>
-
-</UL>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="KLimit">KLimit</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
-  ...
-  KLimit 1234
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>KLimit</CODE> directive defines the value of the
-<VAR>job-k-limit</VAR> attribute. It is normally set using the
-<CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p classname -o job-k-limit=1234</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="Location">Location</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
-  ...
-  Location Building 3321
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Location</CODE> directive defines the string for the
-<VAR>printer-location</VAR> attribute. It is normally set using the
-<CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p classname -L "Building 3321"</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2</SPAN><A NAME="OpPolicy">OpPolicy</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
-  ...
-  OpPolicy default
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>OpPolicy</CODE> directive sets the operation policy
-that is used for the printer. The <CODE>lpadmin(8)</CODE> command
-sets the current operation policy:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p classname -o printer-op-policy=default</KBD>
-</PRE>
-
-<P>The default policy is named "default". All policies correspond
-to those defined using the <VAR>cupsd.conf</VAR> <A
-HREF="ref-cupsd-conf.html#Policy"><CODE>Policy</CODE></A>
-section.</P>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2</SPAN><A NAME="Option">Option</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
-  ...
-  Option name value
-  Option scaling 100
-  Option page-left 72
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Option</CODE> directive specifies a default job
-template attribute value. It is mapped to
-<CODE>name-default</CODE> in the printer attributes and applied
-to jobs as <CODE>name</CODE>.</P>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="PageLimit">PageLimit</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
-  ...
-  PageLimit 1234
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PageLimit</CODE> directive defines the value of the
-<VAR>job-page-limit</VAR> attribute. It can be set using the
-<CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p classname -o job-page-limit=1234</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="Printer">Printer</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
-  ...
-  Printer foo
-  Printer bar
-  Printer bleep
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Printer</CODE> directive adds a printer to a class.
-Printers are added to a class using the <CODE>lpadmin(8)</CODE>
-command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -c classname</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="QuotaPeriod">QuotaPeriod</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
-  ...
-  QuotaPeriod 604800
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>QuotaPeriod</CODE> directive defines the value of
-the  <VAR>job-quota-period</VAR> attribute. Typical values are
-86400 (1 day), 604800 (1 week), 2592000 (1 month), and 31536000
-(1 year). It is set using the <CODE>lpadmin(8)</CODE>
-command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p classname -o job-quota-period=604800</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2</SPAN><A NAME="Shared">Shared</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
-  ...
-  Shared yes
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Shared</CODE> directive defines the initial value of
-the <VAR>printer-is-shared</VAR> attribute. The strings
-<VAR>yes</VAR> and <VAR>no</VAR> correspond to the true and false
-values, respectively. The <CODE>lpadmin(8)</CODE> command sets
-the current state:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p classname -o printer-is-shared=true</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="State">State</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
-  ...
-  State idle
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>State</CODE> directive defines the initial value of
-the <VAR>printer-state</VAR> attribute. The strings
-<VAR>idle</VAR> and <VAR>stopped</VAR> correspond to the IPP
-enumeration values 3 and 5, respectively. The
-<CODE>cupsenable(8)</CODE> and <CODE>cupsdisable(8)</CODE>
-commands set the current state:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/cupsenable classname</KBD>
-<KBD>/usr/sbin/cupsdisable classname</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="StateMessage">StateMessage</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
-  ...
-  StateMessage Class is lonely.
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>StateMessage</CODE> directive defines the initial
-string for the  <VAR>printer-state-message</VAR> attribute. The
-following are some example messages:</P>
-
-<PRE CLASS="command">
-StateMessage Connected to host_name...
-StateMessage Connecting to printer_queue on port port_number...
-StateMessage Network host host_name is busy; will retry in 30 seconds...
-StateMessage Class busy; will retry in 10 seconds...
-StateMessage Class is busy; retrying print job...
-StateMessage Print file accepted - job ID id_number.
-StateMessage Waiting for job to complete
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2</SPAN><A NAME="StateTime">StateTime</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
-  ...
-  StateTime 1133542425
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>StateTime</CODE> directive defines the UNIX time
-(seconds since Jan 1, 1970) for the last state change of the
-queue. It is mapped to the <VAR>printer-state-change-time</VAR>
-attribute.</P>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-</BODY>
-</HTML>
diff --git a/doc/help/ref-client-conf.html b/doc/help/ref-client-conf.html
deleted file mode 100644 (file)
index 03d1ea0..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
-       <TITLE>client.conf</TITLE>
-       <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">client.conf</H1>
-
-<P>The <VAR>/etc/cups/client.conf</VAR> and
-<VAR>~/.cups/client.conf</VAR> files contain up to two directives
-that determine how the client behaves. Each directive is listed
-on a line by itself followed by its value. Comments are
-introduced using the number sign ("#") character at the beginning
-of a line.</P>
-
-<H2 CLASS="title"><A NAME="Encryption">Encryption</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Encryption Never
-Encryption IfRequested
-Encryption Required
-Encryption Always
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Encryption</CODE> directive specifies the default
-encryption settings for the client.</P>
-
-<P>The default setting is <VAR>IfRequested</VAR>.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.6/OS X 10.8</SPAN><A NAME="GSSServiceName">GSSServiceName</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-GSSServiceName http
-GSSServiceName ipp
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>GSSServiceName</CODE> directive sets the Kerberos service name to use. The default is <CODE>http</CODE> for compatibility with Microsoft Windows.</P>
-
-
-<H2 CLASS="title"><A NAME="ServerName">ServerName</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ServerName foo.bar.com
-ServerName 11.22.33.44
-ServerName foo.bar.com:8631
-<SPAN CLASS="info">CUPS 1.6</SPAN>ServerName foo.bar.com/version=1.1
-<SPAN CLASS="info">CUPS 1.6</SPAN>ServerName foo.bar.com:8631/version=1.1
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ServerName</CODE> directive specifies sets the remote server that is to be used for all client operations. That is, it redirects all client requests to the remote server.</P>
-
-<P>The default port number is 631 but can be overridden by adding a colon followed by the desired port number to the value.</P>
-
-<P>By default, CUPS 1.6 and later use IPP/2.0 to communicate with the server. Add "/version=1.1" to force IPP/1.1 which is required for CUPS 1.3.12 and earlier.</P>
-
-<P>The default is to use the local server ("<VAR>localhost</VAR>") or domain socket, if so configured.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-<P>Only one <CODE>ServerName</CODE> directive may appear. If multiple names are
-present, only the last one is used. This directive is not supported on OS X 10.7 or later.</P>
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.6/OS X 10.8</SPAN><A NAME="User">User</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-User joe
-User bob
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>User</CODE> directive sets the user name to use. The default is the username associated with the current login.</P>
-
-
-</BODY>
-</HTML>
diff --git a/doc/help/ref-cups-files-conf.html.in b/doc/help/ref-cups-files-conf.html.in
deleted file mode 100644 (file)
index 70c996f..0000000
+++ /dev/null
@@ -1,529 +0,0 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
-       <TITLE>cups-files.conf</TITLE>
-       <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">cups-files.conf</H1>
-
-<P>The <VAR>/etc/cups/cups-files.conf</VAR> file contains configuration <I>directives</I> that control the files, directories. users. and groups that are used by the CUPS scheduler, <CODE>cupsd(8)</CODE>. Each directive is listed on a line by itself followed by its value. Comments are introduced using the number sign ("#") character at the beginning of a line.</P>
-
-<H2 CLASS="title"><A NAME="AccessLog">AccessLog</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-AccessLog /var/log/cups/access_log
-AccessLog /var/log/cups/access_log-%s
-AccessLog syslog
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>AccessLog</CODE> directive sets the name of the
-access log file. If the filename is not absolute then it is
-assumed to be relative to the <A
-HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
-access log file is stored in "common log format" and can be used
-by any web access reporting tool to generate a report on CUPS
-server activity.</P>
-
-<P>The server name can be included in the filename by using
-<CODE>%s</CODE> in the name.</P>
-
-<P>The special name "syslog" can be used to send the access
-information to the system log instead of a plain file.</P>
-
-<P>The default access log file is
-<VAR>/var/log/access_log</VAR>.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.15</SPAN><A NAME="ConfigFilePerm">ConfigFilePerm</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ConfigFilePerm 0644
-ConfigFilePerm 0640
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ConfigFilePerm</CODE> directive specifies the permissions to use when the scheduler writes configuration and cache files, typically in response to IPP or HTTP requests. The default is 644 on OS X and 640 on all other operating systems.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>The permissions for the <VAR>printers.conf</VAR> file are always 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. There is no way to disable this security feature.</P>
-
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><A NAME="DataDir">DataDir</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DataDir /usr/share/cups
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DataDir</CODE> directive sets the directory to use
-for data files.</P>
-
-
-<H2 CLASS="title"><A NAME="DocumentRoot">DocumentRoot</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DocumentRoot /usr/share/doc/cups
-DocumentRoot /foo/bar/doc/cups
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DocumentRoot</CODE> directive specifies the location
-of web content for the HTTP server in CUPS. If an absolute path
-is not specified then it is assumed to be relative to the <A
-HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
-default directory is <VAR>/usr/share/doc/cups</VAR>.</P>
-
-<P>Documents are first looked up in a sub-directory for the
-primary language requested by the client (e.g.
-<VAR>/usr/share/doc/cups/fr/...</VAR>) and then directly under
-the <CODE>DocumentRoot</CODE> directory (e.g.
-<VAR>/usr/share/doc/cups/...</VAR>), so it is possible to
-localize the web content by providing subdirectories for each
-language needed.</P>
-
-
-<H2 CLASS="title"><A NAME="ErrorLog">ErrorLog</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ErrorLog /var/log/cups/error_log
-ErrorLog /var/log/cups/error_log-%s
-ErrorLog syslog
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ErrorLog</CODE> directive sets the name of the error
-log file. If the filename is not absolute then it is assumed to
-be relative to the <A
-HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
-default error log file is <VAR>/var/log/cups/error_log</VAR>.</P>
-
-<P>The server name can be included in the filename by using
-<CODE>%s</CODE> in the name.</P>
-
-<P>The special name "syslog" can be used to send the error
-information to the system log instead of a plain file.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.4/OS X 10.6</SPAN><A NAME="FatalErrors">FatalErrors</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-FatalErrors none
-FatalErrors all
-FatalErrors browse
-FatalErrors config
-FatalErrors listen
-FatalErrors log
-FatalErrors permissions
-FatalErrors all -permissions
-FatalErrors config permissions log
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>FatalErrors</CODE> directive determines whether certain kinds of
-errors are fatal. The following kinds of errors are currently recognized:</P>
-
-<UL>
-
-       <LI><CODE>none</CODE> - No errors are fatal</LI>
-
-       <LI><CODE>all</CODE> - All of the errors below are fatal</LI>
-
-       <LI><CODE>browse</CODE> - Browsing initialization errors are fatal,
-       for example failed binding to the CUPS browse port or failed connections
-       to LDAP servers</LI>
-
-       <LI><CODE>config</CODE> - Configuration file syntax errors are
-       fatal</LI>
-
-       <LI><CODE>listen</CODE> - Listen or Port errors are fatal, except for
-       IPv6 failures on the loopback or "any" addresses</LI>
-
-       <LI><CODE>log</CODE> - Log file creation or write errors are fatal</LI>
-
-       <LI><CODE>permissions</CODE> - Bad startup file permissions are
-       fatal, for example shared SSL certificate and key files with world-
-       read permissions</LI>
-
-</UL>
-
-<P>Multiple errors can be listed, and the form "-kind" can be used with
-<CODE>all</CODE> to remove specific kinds of errors. The default setting is
-<CODE>config</CODE>.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.18</SPAN><A NAME="FileDevice">FileDevice</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-FileDevice Yes
-FileDevice No
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>FileDevice</CODE> directive determines whether the
-scheduler allows new printers to be added using device URIs of
-the form <CODE>file:/filename</CODE>. File devices are most often
-used to test new printer drivers and do not support raw file
-printing.</P>
-
-<P>The default setting is <CODE>No</CODE>.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>File devices are managed by the scheduler. Since the
-scheduler normally runs as the root user, file devices
-can be used to overwrite system files and potentially
-gain unauthorized access to the system. If you must
-create printers using file devices, we recommend that
-you set the <CODE>FileDevice</CODE> directive to
-<CODE>Yes</CODE> for only as long as you need to add the
-printers to the system, and then reset the directive to
-<CODE>No</CODE>.</P>
-
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.3</SPAN><A NAME="FontPath">FontPath</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-FontPath /foo/bar/fonts
-FontPath /usr/share/cups/fonts:/foo/bar/fonts
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>FontPath</CODE> directive specifies the font path to
-use when searching for fonts. The default font path is
-<CODE>/usr/share/cups/fonts</CODE>.</P>
-
-
-<H2 CLASS="title"><A NAME="Group">Group</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Group lp
-Group nobody
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Group</CODE> directive specifies the UNIX group that
-filter and CGI programs run as. The default group is
-system-specific but is usually <CODE>lp</CODE> or
-<CODE>nobody</CODE>.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.15</SPAN><A NAME="LogFilePerm">LogFilePerm</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-LogFilePerm 0644
-LogFilePerm 0600
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>LogFilePerm</CODE> directive specifies the
-permissions to use when writing log files. The default
-is 644.</P>
-
-
-<H2 CLASS="title"><A NAME="PageLog">PageLog</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-PageLog /var/log/cups/page_log
-PageLog /var/log/cups/page_log-%s
-PageLog syslog
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PageLog</CODE> directive sets the name of the page
-log file. If the filename is not absolute then it is assumed to
-be relative to the <A
-HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
-default page log file is <VAR>/var/log/cups/page_log</VAR>.</P>
-
-<P>The server name can be included in the filename by using
-<CODE>%s</CODE> in the name.</P>
-
-<P>The special name "syslog" can be used to send the page
-information to the system log instead of a plain file.</P>
-
-
-<H2 CLASS="title"><A NAME="Printcap">Printcap</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Printcap
-Printcap /etc/printcap
-Printcap /etc/printers.conf
-Printcap /Library/Preferences/org.cups.printers.plist
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Printcap</CODE> directive controls whether or not a printcap file is automatically generated and updated with a list of available printers. If specified with no value, then no printcap file will be generated. The default is to generate a file named <VAR>/Library/Preferences.org.cups.printers.plist</VAR> on OS X and <VAR>/etc/printcap</VAR> on all other operating systems.</P>
-
-<P>When a filename is specified (e.g. <VAR>/etc/printcap</VAR>), the printcap file is written whenever a printer is added or removed. The printcap file can then be used by applications that are hardcoded to look at the printcap file for the available printers.</P>
-
-
-<H2 CLASS="title"><A NAME="PrintcapFormat">PrintcapFormat</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-PrintcapFormat BSD
-PrintcapFormat Solaris
-PrintcapFormat plist
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PrintcapFormat</CODE> directive controls the output format of the
-printcap file. The default is to generate the plist format on OS X, the
-Solaris format on Solaris, and the BSD format on other operating systems.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.3</SPAN><A NAME="RemoteRoot">RemoteRoot</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-RemoteRoot remroot
-RemoteRoot root
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>RemoteRoot</CODE> directive sets the username for
-unauthenticated root requests from remote hosts. The default
-username is <VAR>remroot</VAR>. Setting <CODE>RemoteRoot</CODE>
-to <VAR>root</VAR> effectively disables this security
-mechanism.</P>
-
-
-<H2 CLASS="title"><A NAME="RequestRoot">RequestRoot</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-RequestRoot /var/spool/cups
-RequestRoot /foo/bar/spool/cups
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>RequestRoot</CODE> directive sets the directory for
-incoming IPP requests and HTML forms. If an absolute path is not
-provided then it is assumed to be relative to the <A
-HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
-default request directory is <VAR>/var/spool/cups</VAR>.</P>
-
-
-<H2 CLASS="title"><A NAME="ServerBin">ServerBin</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ServerBin /usr/lib/cups
-ServerBin /foo/bar/lib/cups
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ServerBin</CODE> directive sets the directory for
-server-run executables. If an absolute path is not provided then
-it is assumed to be relative to the <A
-HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
-default executable directory is <VAR>/usr/lib/cups</VAR>,
-<VAR>/usr/lib32/cups</VAR>, or <VAR>/usr/libexec/cups</VAR>
-depending on the operating system.</P>
-
-
-<H2 CLASS="title"><A NAME="ServerCertificate">ServerCertificate</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ServerCertificate /etc/cups/ssl/server.crt
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ServerCertificate</CODE> directive specifies the
-location of the SSL certificate file used by the server when
-negotiating encrypted connections. The certificate must not be
-encrypted (password protected) since the scheduler normally runs
-in the background and will be unable to ask for a password.</P>
-
-<P>The default certificate file is
-<VAR>/etc/cups/ssl/server.crt</VAR>.</P>
-
-
-<H2 CLASS="title"><A NAME="ServerKey">ServerKey</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ServerKey /etc/cups/ssl/server.key
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ServerKey</CODE> directive specifies the location of
-the SSL private key file used by the server when negotiating
-encrypted connections.</P>
-
-<P>The default key file is
-<VAR>/etc/cups/ssl/server.crt</VAR>.</P>
-
-
-<H2 CLASS="title"><A NAME="ServerRoot">ServerRoot</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ServerRoot /etc/cups
-ServerRoot /foo/bar/cups
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ServerRoot</CODE> directive specifies the absolute
-path to the server configuration and state files. It is also used
-to resolve relative paths in the <VAR>cupsd.conf</VAR> file. The
-default server directory is <VAR>/etc/cups</VAR>.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.6.4</SPAN><A NAME="SyncOnClose">SyncOnClose</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-SyncOnClose No
-SyncOnClose Yes
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>SyncOnClose</CODE> directive determines whether the scheduler
-flushes changes to configuration and state files to disk. The default is
-<CODE>No</CODE> which relies on the operating system to schedule a suitable
-time to write changes to disk.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>Setting <CODE>SyncOnClose</CODE> to <CODE>Yes</CODE> makes the scheduler use the <CODE>fsync(2)</CODE> system call to write all changes to disk, however the drive or network file system server may still delay writing data to disk. Do not depend on this functionality to prevent data loss in the event of unexpected hardware failure.</P>
-
-<P>Enabling <CODE>SyncOnClose</CODE> may also cause the scheduler to periodically become unresponsive while it waits for changes to be written.</P>
-
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><A NAME="SystemGroup">SystemGroup</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-SystemGroup lpadmin
-SystemGroup sys
-SystemGroup system
-SystemGroup root
-SystemGroup root lpadmin
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>SystemGroup</CODE> directive specifies the system administration group for <CODE>System</CODE> authentication. Multiple groups can be listed, separated with spaces. The default group list is <CODE>admin</CODE> on OS X and <CODE>lpadmin</CODE>, <CODE>root</CODE>, <CODE>sys</CODE>, and/or <CODE>system</CODE> on other operating systems.</P>
-
-
-<H2 CLASS="title"><A NAME="TempDir">TempDir</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-TempDir /var/tmp
-TempDir /foo/bar/tmp
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>TempDir</CODE> directive specifies an absolute path
-for the directory to use for temporary files. The default
-directory is <VAR>/var/spool/cups/tmp</VAR>.</P>
-
-<P>Temporary directories must be world-writable and should have
-the "sticky" permission bit enabled so that other users cannot
-delete filter temporary files. The following commands will create
-an appropriate temporary directory called
-<VAR>/foo/bar/tmp</VAR>:</P>
-
-<PRE CLASS="command">
-<KBD>mkdir /foo/bar/tmp</KBD>
-<KBD>chmod a+rwxt /foo/bar/tmp</KBD>
-</PRE>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>The <CODE>TempDir</CODE> cannot be pointed at a standard system temporary directory such as <VAR>/tmp</VAR> or <VAR>/var/tmp</VAR> for security reasons.</P></BLOCKQUOTE>
-
-
-<H2 CLASS="title"><A NAME="User">User</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-User lp
-User guest
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>User</CODE> directive specifies the UNIX user that filter and CGI programs run as. The default user is <CODE>_lp</CODE>, <CODE>lp</CODE>, or <CODE>nobody</CODE> (whichever is found first).</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>You may not use user <CODE>root</CODE>, as that would expose
-the system to unacceptable security risks. The scheduler will
-automatically choose user <CODE>nobody</CODE> if you specify a
-user whose ID is 0.</P>
-
-</BLOCKQUOTE>
-
-
-</BODY>
-</HTML>
diff --git a/doc/help/ref-cupsd-conf.html.in b/doc/help/ref-cupsd-conf.html.in
deleted file mode 100644 (file)
index dc9ee70..0000000
+++ /dev/null
@@ -1,2155 +0,0 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
-       <TITLE>cupsd.conf</TITLE>
-       <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">cupsd.conf</H1>
-
-<P>The <VAR>/etc/cups/cupsd.conf</VAR> file contains
-configuration <I>directives</I> that control how the server
-functions. Each directive is listed on a line by itself followed
-by its value. Comments are introduced using the number sign ("#")
-character at the beginning of a line.</P>
-
-<P>Since the server configuration file consists of plain text,
-you can use your favorite text editor to make changes to it.
-After making any changes, restart the <CODE>cupsd(8)</CODE>
-process using the startup script for your operating system:</P>
-
-<UL>
-
-       <LI>AIX, Linux, Solaris:
-       <PRE CLASS="command">
-/etc/init.d/cups restart
-       </PRE></LI>
-
-       <LI>HP-UX:
-       <PRE CLASS="command">
-/sbin/init.d/cups restart
-       </PRE></LI>
-
-       <LI>MacOS X:
-       <PRE CLASS="command">
-sudo launchctl unload /System/Library/LaunchDaemons/org.cups.cupsd.plist
-sudo launchctl load /System/Library/LaunchDaemons/org.cups.cupsd.plist
-       </PRE></LI>
-
-</UL>
-
-<P>You can also edit this file from the CUPS web interface, which
-automatically handles restarting the scheduler.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>The specification of time units ("w" for weeks, "h" for hours, etc.) in the various time interval directives is new in CUPS 1.6/OS X 10.8. Prior releases of CUPS only supported time intervals in seconds.</P>
-
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><A NAME="AccessLogLevel">AccessLogLevel</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-AccessLogLevel config
-AccessLogLevel actions
-AccessLogLevel all
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>AccessLogLevel</CODE> directive controls which requests are logged
-to the access log file. The following levels are defined:</P>
-
-<UL>
-
-       <LI><CODE>config</CODE>; Log when printers and classes are added,
-       deleted, or modified and when configuration files are accessed or
-       updated.</LI>
-
-       <LI><CODE>actions</CODE>; Log when print jobs are submitted,
-       held, released, modified, or canceled, and any of the conditions
-       for <CODE>config</CODE>.</LI>
-
-       <LI><CODE>all</CODE>; Log all requests.</LI>
-
-</UL>
-
-<P>The default access log level is <CODE>@CUPS_ACCESS_LOG_LEVEL@</CODE>.</P>
-
-
-<H2 CLASS="title"><A NAME="Allow">Allow</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Location /path&gt;
-  ...
-  Allow from All
-  Allow from None
-  Allow from *.example.com
-  Allow from .example.com
-  Allow from host.example.com
-  Allow from nnn.*
-  Allow from nnn.nnn.*
-  Allow from nnn.nnn.nnn.*
-  Allow from nnn.nnn.nnn.nnn
-  Allow from nnn.nnn.nnn.nnn/mm
-  Allow from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
-  Allow from [xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]
-  Allow from [xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]/mmm
-  Allow from @LOCAL
-  Allow from @IF(name)
-&lt;/Location&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Allow</CODE> directive specifies a hostname, IP
-address, or network that is allowed access to the server.
-<CODE>Allow</CODE> directives are cumulative, so multiple
-<CODE>Allow</CODE> directives can be used to allow access for
-multiple hosts or networks.</P>
-
-<P>Host and domain name matching require that you enable the <A
-HREF="#HostNameLookups"><CODE>HostNameLookups</CODE></A>
-directive.</P>
-
-<P>The <CODE>/mm</CODE> notation specifies a CIDR netmask, as shown in
-<A HREF="#TABLE1">Table 1</A>.</P>
-
-<DIV CLASS="table"><TABLE SUMMARY="CIDR Netmasks">
-<CAPTION>Table 1: <A NAME="TABLE1">CIDR Netmasks</A></CAPTION>
-<TR>
-       <TH WIDTH="10%">mm</TH>
-       <TH WIDTH="20%">netmask</TH>
-       <TH WIDTH="10%">mm</TH>
-       <TH WIDTH="20%">netmask</TH>
-</TR>
-<TR>
-       <TD ALIGN="CENTER">0</TD>
-       <TD ALIGN="CENTER">0.0.0.0</TD>
-       <TD ALIGN="CENTER">8</TD>
-       <TD ALIGN="CENTER">255.0.0.0</TD>
-</TR>
-<TR>
-       <TD ALIGN="CENTER">1</TD>
-       <TD ALIGN="CENTER">128.0.0.0</TD>
-       <TD ALIGN="CENTER">16</TD>
-       <TD ALIGN="CENTER">255.255.0.0</TD>
-</TR>
-<TR>
-       <TD ALIGN="CENTER">2</TD>
-       <TD ALIGN="CENTER">192.0.0.0</TD>
-       <TD ALIGN="CENTER">24</TD>
-       <TD ALIGN="CENTER">255.255.255.0</TD>
-</TR>
-<TR>
-       <TD ALIGN="CENTER">...</TD>
-       <TD ALIGN="CENTER">...</TD>
-       <TD ALIGN="CENTER">32</TD>
-       <TD ALIGN="CENTER">255.255.255.255</TD>
-</TR>
-</TABLE></DIV>
-
-<P>The <CODE>@LOCAL</CODE> name will allow access from all local
-interfaces. The <CODE>@IF(name)</CODE> name will allow access
-from the named interface. In both cases, CUPS only allows access
-from the network that the interface(s) are configured for -
-requests  arriving on the interface from a foreign network will
-<em>not</em> be accepted.</P>
-
-<P>The <CODE>Allow</CODE> directive must appear inside a <A
-HREF="#Location"><CODE>Location</CODE></A> or <A
-HREF="#Limit"><CODE>Limit</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="AuthType">AuthType</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Location /path&gt;
-  ...
-  AuthType None
-  AuthType Basic
-  AuthType Digest
-  AuthType BasicDigest
-  AuthType Negotiate
-&lt;/Location&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>AuthType</CODE> directive defines the type of
-authentication to perform:</P>
-
-<UL>
-
-       <LI><CODE>None</CODE> - No authentication should be
-       performed (default)</LI>
-
-       <LI><CODE>Basic</CODE> - Basic authentication should be
-       performed using the UNIX password and group files</LI>
-
-       <LI><CODE>Digest</CODE> - Digest authentication should be
-       performed using the <VAR>/etc/cups/passwd.md5</VAR>
-       file</LI>
-
-       <LI><CODE>BasicDigest</CODE> - Basic authentication
-       should be performed using the
-       <VAR>/etc/cups/passwd.md5</VAR> file</LI>
-
-       <LI><CODE>Negotiate</CODE> - Kerberos authentication
-       should be performed</LI>
-
-</UL>
-
-<P>When using <CODE>Basic</CODE>, <CODE>Digest</CODE>,
-<CODE>BasicDigest</CODE>, or <CODE>Negotiate</CODE> authentication,
-clients connecting through the <CODE>localhost</CODE> interface can
-also authenticate using certificates.</P>
-
-<P>The <CODE>AuthType</CODE> directive must appear inside a <A
-HREF="#Location"><CODE>Location</CODE></A> or <A
-HREF="#Limit"><CODE>Limit</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="AutoPurgeJobs">AutoPurgeJobs</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-AutoPurgeJobs Yes
-AutoPurgeJobs No
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>AutoPurgeJobs</CODE> directive specifies whether or
-not to purge completed jobs once they are no longer required for
-quotas. This option has no effect if quotas are not enabled. The
-default setting is <CODE>No</CODE>.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="BrowseLocalProtocols">BrowseLocalProtocols</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-BrowseLocalProtocols all
-BrowseLocalProtocols none
-BrowseLocalProtocols dnssd
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>BrowseLocalProtocols</CODE> directive specifies the protocols to use when advertising local shared printers on the network. Multiple protocols can be specified by separating them with spaces. The default is "<CODE>dnssd</CODE>" on systems that support Bonjour and "<CODE>none</CODE>" on all others.</P>
-
-
-<H2 CLASS="title"><A NAME="BrowseWebIF">BrowseWebIF</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-BrowseWebIF On
-BrowseWebIF Off
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>BrowseWebIF</CODE> directive controls whether the CUPS web
-interface is advertised via DNS-SD. The default setting is
-<CODE>Off</CODE>.</P>
-
-
-<H2 CLASS="title"><A NAME="Browsing">Browsing</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Browsing On
-Browsing Off
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Browsing</CODE> directive controls whether or not printer sharing is enabled. The default setting is <CODE>On</CODE>.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.7</SPAN><A NAME="Classification">Classification</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Classification
-Classification classified
-Classification confidential
-Classification secret
-Classification topsecret
-Classification unclassified
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Classification</CODE> directive sets the
-classification level on the server. When this option is set, at
-least one of the banner pages is forced to the classification
-level, and the classification is placed on each page of output.
-The default is no classification level.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.10</SPAN><A NAME="ClassifyOverride">ClassifyOverride</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ClassifyOverride Yes
-ClassifyOverride No
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ClassifyOverride</CODE> directive specifies whether
-users can override the default classification level on the
-server. When the server classification is set, users can change
-the classification using the <CODE>job-sheets</CODE> option and
-can choose to only print one security banner before or after the
-job. If the <CODE>job-sheets</CODE> option is set to
-<CODE>none</CODE> then the server default classification is
-used.</P>
-
-<P>The default is to not allow classification overrides.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="DefaultAuthType">DefaultAuthType</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DefaultAuthType Basic
-DefaultAuthType BasicDigest
-DefaultAuthType Digest
-DefaultAuthType Negotiate
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DefaultAuthType</CODE> directive specifies the type
-of authentication to use for IPP operations that require a
-username. The default is <CODE>Basic</CODE>.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="DefaultEncryption">DefaultEncryption</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DefaultEncryption Never
-DefaultEncryption IfRequested
-DefaultEncryption Required
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DefaultEncryption</CODE> directive specifies the
-type of encryption to use when performing authentication. The
-default is <CODE>Required</CODE>.</P>
-
-
-<H2 CLASS="title"><A NAME="DefaultLanguage">DefaultLanguage</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DefaultLanguage de
-DefaultLanguage en
-DefaultLanguage es
-DefaultLanguage fr
-DefaultLanguage it
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DefaultLanguage</CODE> directive specifies the
-default language to use for client connections. Setting the
-default language also sets the default character set if a
-language localization file exists for it. The default language
-is "en" for English.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.4/OS X 10.6</SPAN><A NAME="DefaultPaperSize">DefaultPaperSize</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DefaultPaperSize Letter
-DefaultPaperSize A4
-DefaultPaperSize Auto
-DefaultPaperSize None
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DefaultPaperSize</CODE> directive specifies the default paper
-size to use when creating new printers. The default is <CODE>Auto</CODE>
-which uses a paper size appropriate for the system default locale. A value
-of <CODE>None</CODE> tells the scheduler to not set the default paper
-size.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="DefaultPolicy">DefaultPolicy</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DefaultPolicy default
-DefaultPolicy authenticated
-DefaultPolicy foo
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DefaultPolicy</CODE> directive specifies the default
-policy to use for IPP operation. The default is
-<CODE>default</CODE>. CUPS also includes a policy called
-<CODE>authenticated</CODE> that requires a username and password for printing
-and other job operations.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="DefaultShared">DefaultShared</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DefaultShared Yes
-DefaultShared No
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DefaultShared</CODE> directive specifies whether printers are shared (published) by default. The default is <CODE>Yes</CODE>.</P>
-
-
-<H2 CLASS="title"><A NAME="Deny">Deny</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Location /path&gt;
-  ..
-  Deny from All
-  Deny from None
-  Deny from *.example.com
-  Deny from .example.com
-  Deny from host.example.com
-  Deny from nnn.*
-  Deny from nnn.nnn.*
-  Deny from nnn.nnn.nnn.*
-  Deny from nnn.nnn.nnn.nnn
-  Deny from nnn.nnn.nnn.nnn/mm
-  Deny from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
-  Deny from [xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]
-  Deny from [xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]/mmm
-  Deny from @LOCAL
-  Deny from @IF(name)
-&lt;/Location&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Deny</CODE> directive specifies a hostname, IP
-address, or network that is denied access to the server.
-<CODE>Deny</CODE> directives are cumulative, so multiple
-<CODE>Deny</CODE> directives can be used to deny access for
-multiple hosts or networks.</P>
-
-<P>Host and domain name matching require that you enable the <A
-HREF="#HostNameLookups"><CODE>HostNameLookups</CODE></A>
-directive.</P>
-
-<P>The <CODE>/mm</CODE> notation specifies a CIDR netmask, a shown in
-<A HREF="TABLE1">Table 1</A>.</P>
-
-<P>The <CODE>@LOCAL</CODE> name will deny access from all local
-interfaces. The <CODE>@IF(name)</CODE> name will deny access from
-the named interface. In both cases, CUPS only denies access from
-the network that the interface(s) are configured for - requests
-arriving on the interface from a foreign network will
-<em>not</em> be denied.</P>
-
-<P>The <CODE>Deny</CODE> directive must appear inside a <A
-HREF="#Location"><CODE>Location</CODE></A> or <A
-HREF="#Limit"><CODE>Limit</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.4/OS X 10.6</SPAN><A NAME="DirtyCleanInterval">DirtyCleanInterval</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DirtyCleanInterval 1w
-DirtyCleanInterval 1d
-DirtyCleanInterval 1h
-DirtyCleanInterval 1m
-DirtyCleanInterval 30
-DirtyCleanInterval 0
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DirtyCleanInterval</CODE> directive specifies the amount of time to wait before updating configuration and state files for printers, classes, subscriptions, and jobs in seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix). A value of <CODE>0</CODE> causes the update to occur as soon as possible, typically within a few milliseconds.</P>
-
-<P>The default value is <CODE>30</CODE> (30 seconds).</P>
-
-
-<H2 CLASS="title"><A NAME="Encryption">Encryption</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Location /path&gt;
-  ...
-  Encryption Never
-  Encryption IfRequested
-  Encryption Required
-&lt;/Location&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Encryption</CODE> directive must appear instead a <A
-HREF="#Location"><CODE>Location</CODE></A> or <A
-HREF="#Limit"><CODE>Limit</CODE></A> section and specifies the
-encryption settings for that location. The default setting is
-<CODE>IfRequested</CODE> for all locations.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.3/OS X 10.5</SPAN><A NAME="ErrorPolicy">ErrorPolicy</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ErrorPolicy abort-job
-ErrorPolicy retry-job
-ErrorPolicy stop-printer
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ErrorPolicy</CODE> directive defines the default policy that
-is used when a backend is unable to send a print job to the
-printer.</P>
-
-<P>The following values are supported:</P>
-
-<UL>
-
-       <LI><CODE>abort-job</CODE> - Abort the job and proceed
-       with the next job in the queue</LI>
-
-       <LI><CODE>retry-job</CODE> - Retry the job after waiting
-       for N seconds; the <VAR>cupsd.conf</VAR> <A
-       HREF="#JobRetryInterval"><CODE>JobRetryInterval</CODE></A>
-       directive controls the value of N</LI>
-
-       <LI><CODE>retry-this-job</CODE> - Retry the current job immediately
-       and indefinitely.</LI>
-
-       <LI><CODE>stop-printer</CODE> - Stop the printer and keep
-       the job for future printing; this is the default
-       value</LI>
-
-</UL>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.3</SPAN><A NAME="FilterLimit">FilterLimit</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-FilterLimit 0
-FilterLimit 200
-FilterLimit 1000
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>FilterLimit</CODE> directive sets the maximum cost
-of all running job filters. It can be used to limit the number of
-filter programs that are run on a server to minimize disk,
-memory, and CPU resource problems. A limit of 0 disables filter
-limiting.</P>
-
-<P>An average print to a non-PostScript printer needs a filter
-limit of about 200. A PostScript printer needs about half that
-(100). Setting the limit below these thresholds will effectively
-limit the scheduler to printing a single job at any time.</P>
-
-<P>The default limit is 0.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.16</SPAN><A NAME="FilterNice">FilterNice</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-FilterNice 0
-FilterNice 10
-FilterNice 19
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>FilterNice</CODE> directive sets the <B>nice(1)</B>
-value to assign to filter processes. The nice value ranges from
-0, the highest priority, to 19, the lowest priority. The default
-is 0.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.6/OS X 10.8</SPAN><A NAME="GSSServiceName">GSSServiceName</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-GSSServiceName http
-GSSServiceName ipp
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>GSSServiceName</CODE> directive sets the Kerberos service name to use. The default is <CODE>http</CODE> for compatibility with Microsoft Windows.</P>
-
-
-<H2 CLASS="title"><A NAME="HostNameLookups">HostNameLookups</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-HostNameLookups On
-HostNameLookups Off
-HostNameLookups Double
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>HostNameLookups</CODE> directive controls whether or
-not CUPS looks up the hostname for connecting clients. The
-<CODE>Double</CODE> setting causes CUPS to verify that the
-hostname resolved from the address matches one of the addresses
-returned for that hostname. <CODE>Double</CODE> lookups also
-prevent clients with unregistered addresses from connecting to
-your server.</P>
-
-<P>The default is <CODE>Off</CODE> to avoid the potential server
-performance problems with hostname lookups. Set this option to
-<CODE>On</CODE> or <CODE>Double</CODE> only if absolutely
-required.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.9</SPAN><A NAME="Include">Include</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Include filename
-Include /foo/bar/filename
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Include</CODE> directive includes the named file in
-the <CODE>cupsd.conf</CODE> file. If no leading path is provided,
-the file is assumed to be relative to the <A
-HREF="ref-cups-files-conf.html#ServerRoot"><CODE>ServerRoot</CODE></A> directory.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.5</SPAN><A NAME="JobPrivateAccess">JobPrivateAccess</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-JobPrivateAccess all
-JobPrivateAccess default
-JobPrivateAccess {user|@group|@ACL|@OWNER|@SYSTEM}+
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>JobPrivateAccess</CODE> directive specifies the access list for a
-job's private values. The "default" access list is "@OWNER @SYSTEM". "@ACL" maps
-to the printer's requesting-user-name-allowed or requesting-user-name-denied
-values.</P>
-
-<P>The <CODE>JobPrivateAccess</CODE> directive must appear inside a <A
-HREF="#Policy"><CODE>Policy</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.5</SPAN><A NAME="JobPrivateValues">JobPrivateValues</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-JobPrivateValues all
-JobPrivateValues default
-JobPrivateValues none
-JobPrivateValues attribute-name-1 [ ... attribute-name-N ]
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>JobPrivateValues</CODE> directive specifies the list of job values
-to make private. The "default" values are "job-name",
-"job-originating-host-name", "job-originating-user-name", and "phone".</P>
-
-<P>The <CODE>JobPrivateValues</CODE> directive must appear inside a <A
-HREF="#Policy"><CODE>Policy</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="JobRetryInterval">JobRetryInterval</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-JobRetryInterval 1w
-JobRetryInterval 1d
-JobRetryInterval 1h
-JobRetryInterval 1m
-JobRetryInterval 30
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>JobRetryInterval</CODE> directive specifies the amount of time to wait before retrying a job in seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix). This is typically used for fax queues but can also be used with normal print queues whose error policy is <CODE>retry-job</CODE> or <CODE>retry-current-job</CODE>.</P>
-
-<P>The default is <CODE>30</CODE> (30 seconds).</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.4/OS X 10.6</SPAN><A NAME="JobKillDelay">JobKillDelay</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-JobKillDelay 1w
-JobKillDelay 1d
-JobKillDelay 1h
-JobKillDelay 1m
-JobKillDelay 30
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>JobKillDelay</CODE> directive specifies the amount of time to wait before killing the filters and backend associated with a canceled or held job in seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix).</P>
-
-<P>The default is <CODE>30</CODE> (30 seconds).</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="JobRetryLimit">JobRetryLimit</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-JobRetryLimit 5
-JobRetryLimit 50
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>JobRetryLimit</CODE> directive specifies the maximum
-number of times the scheduler will try to print a job. This is
-typically used for fax queues but can also be used with normal
-print queues whose error policy is <CODE>retry-job</CODE>. The
-default is 5 times.</P>
-
-
-<H2 CLASS="title"><A NAME="KeepAlive">KeepAlive</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-KeepAlive On
-KeepAlive Off
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>KeepAlive</CODE> directive controls whether or not
-to support persistent HTTP connections. The default is
-<CODE>On</CODE>.</P>
-
-<P>HTTP/1.1 clients automatically support persistent connections,
-while HTTP/1.0 clients must specifically request them using the
-<CODE>Keep-Alive</CODE> attribute in the <CODE>Connection:</CODE>
-field of each request.</P>
-
-
-<H2 CLASS="title"><A NAME="KeepAliveTimeout">KeepAliveTimeout</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-KeepAliveTimeout 1w
-KeepAliveTimeout 1d
-KeepAliveTimeout 1h
-KeepAliveTimeout 1m
-KeepAliveTimeout 30
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>KeepAliveTimeout</CODE> directive controls how long a persistent HTTP connection will remain open after the last request in seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix).</P>
-
-<P>The default is <CODE>30</CODE> (30 seconds).</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.7</SPAN><A NAME="Limit">Limit (Location)</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Location /path&gt;
-  &lt;Limit GET POST&gt;
-  ...
-  &lt;/Limit&gt;
-
-  &lt;Limit ALL&gt;
-  ...
-  &lt;/Limit&gt;
-&lt;/Location&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Limit</CODE> directive groups access control
-directives for specific types of HTTP requests and must appear
-inside a <A HREF="#Location"><CODE>Location</CODE></A> section.
-Access can be limited for individual request types
-(<CODE>DELETE</CODE>, <CODE>GET</CODE>, <CODE>HEAD</CODE>,
-<CODE>OPTIONS</CODE>, <CODE>POST</CODE>, <CODE>PUT</CODE>, and
-<CODE>TRACE</CODE>) or for all request types (<CODE>ALL</CODE>).
-The request type names are case-sensitive for compatibility with
-Apache.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="LimitIPP">Limit (Policy)</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Policy name&gt;
-  &lt;Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer&gt;
-  ...
-  &lt;/Limit&gt;
-
-  &lt;Limit All&gt;
-  ...
-  &lt;/Limit&gt;
-&lt;/Policy&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>When included in <A HREF="#Policy"><CODE>Policy</CODE></A>
-sections, the <CODE>Limit</CODE> directive groups access control
-directives for specific IPP operations. Multiple operations can
-be listed, separated by spaces. Table 2 lists the supported
-operations.</P>
-
-<DIV CLASS="table"><TABLE SUMMARY="Supported IPP Operations">
-<CAPTION>Table 2: <A NAME="TABLE2">Supported IPP Operations</A></CAPTION>
-<THEAD>
-<TR>
-       <TH>Operation Name</TH>
-       <TH>Description</TH>
-</TR>
-</THEAD>
-<TBODY>
-<TR>
-       <TD>All</TD>
-       <TD>All operations - used as the default limit for
-       operations that are not listed</TD>
-</TR>
-<TR>
-       <TD>Cancel-Job</TD>
-       <TD>Cancel a job</TD>
-</TR>
-<TR>
-       <TD>Cancel-Subscription</TD>
-       <TD>Cancel a subscription</TD>
-</TR>
-<TR>
-       <TD>Create-Job</TD>
-       <TD>Create a new, empty job</TD>
-</TR>
-<TR>
-       <TD>Create-Job-Subscription</TD>
-       <TD>Creates a notification subscription on a job</TD>
-</TR>
-<TR>
-       <TD>Create-Printer-Subscription</TD>
-       <TD>Creates a notification subscription on a printer</TD>
-</TR>
-<TR>
-       <TD>CUPS-Accept-Jobs</TD>
-       <TD>Sets the printer-is-accepting-jobs value for a printer to true</TD>
-</TR>
-<TR>
-       <TD>CUPS-Add-Modify-Class</TD>
-       <TD>Adds or modifies a class</TD>
-</TR>
-<TR>
-       <TD>CUPS-Add-Modify-Printer</TD>
-       <TD>Adds or modifies a printer</TD>
-</TR>
-<TR>
-       <TD>CUPS-Authenticate-Job</TD>
-       <TD>Authenticates a job for printing</TD>
-</TR>
-<TR>
-       <TD>CUPS-Delete-Class</TD>
-       <TD>Deletes a class</TD>
-</TR>
-<TR>
-       <TD>CUPS-Delete-Printer</TD>
-       <TD>Deletes a printer</TD>
-</TR>
-<TR>
-       <TD>CUPS-Get-Classes</TD>
-       <TD>Gets a list of classes</TD>
-</TR>
-<TR>
-       <TD>CUPS-Get-Default</TD>
-       <TD>Gets the (network/server) default printer or class</TD>
-</TR>
-<TR>
-       <TD>CUPS-Get-Devices</TD>
-       <TD>Gets a list of available devices</TD>
-</TR>
-<TR>
-       <TD>CUPS-Get-PPDs</TD>
-       <TD>Gets a list of available manufacturers or drivers</TD>
-</TR>
-<TR>
-       <TD>CUPS-Get-Printers</TD>
-       <TD>Gets a list of printers and/or classes</TD>
-</TR>
-<TR>
-       <TD>CUPS-Move-Job</TD>
-       <TD>Moves a job to a new destination</TD>
-</TR>
-<TR>
-       <TD>CUPS-Reject-Jobs</TD>
-       <TD>Sets the printer-is-accepting-jobs value for a printer to false</TD>
-</TR>
-<TR>
-       <TD>CUPS-Set-Default</TD>
-       <TD>Sets the network/server default printer or class</TD>
-</TR>
-<TR>
-       <TD>Disable-Printer</TD>
-       <TD>Sets the printer-state value for a printer to stopped</TD>
-</TR>
-<TR>
-       <TD>Enable-Printer</TD>
-       <TD>Sets the printer-state value for a printer to idle/processing</TD>
-</TR>
-<TR>
-       <TD>Get-Job-Attributes</TD>
-       <TD>Gets information about a job</TD>
-</TR>
-<TR>
-       <TD>Get-Jobs</TD>
-       <TD>Gets a list of jobs</TD>
-</TR>
-<TR>
-       <TD>Get-Notifications</TD>
-       <TD>Gets a list of events</TD>
-</TR>
-<TR>
-       <TD>Get-Printer-Attributes</TD>
-       <TD>Gets information about a printer or class</TD>
-</TR>
-<TR>
-       <TD>Get-Subscription-Attributes</TD>
-       <TD>Gets information about a notification subscription</TD>
-</TR>
-<TR>
-       <TD>Get-Subscriptions</TD>
-       <TD>Gets a list of notification subscriptions</TD>
-</TR>
-<TR>
-       <TD>Hold-Job</TD>
-       <TD>Holds a job for printing</TD>
-</TR>
-<TR>
-       <TD>Pause-Printer</TD>
-       <TD>Sets the printer-state value for a printer to stopped</TD>
-</TR>
-<TR>
-       <TD>Print-Job</TD>
-       <TD>Creates a job with a single file for printing</TD>
-</TR>
-<TR>
-       <TD>Purge-Jobs</TD>
-       <TD>Removes all jobs from a printer</TD>
-</TR>
-<TR>
-       <TD>Release-Job</TD>
-       <TD>Releases a previously held job for printing</TD>
-</TR>
-<TR>
-       <TD>Renew-Subscription</TD>
-       <TD>Renews a notification subscription</TD>
-</TR>
-<TR>
-       <TD>Restart-Job</TD>
-       <TD>Reprints a job</TD>
-</TR>
-<TR>
-       <TD>Resume-Printer</TD>
-       <TD>Sets the printer-state value for a printer to idle/processing</TD>
-</TR>
-<TR>
-       <TD>Send-Document</TD>
-       <TD>Adds a file to an job created with Create-Job</TD>
-</TR>
-<TR>
-       <TD>Set-Job-Attributes</TD>
-       <TD>Changes job options</TD>
-</TR>
-<TR>
-       <TD>Validate-Job</TD>
-       <TD>Validates job options prior to printing</TD>
-</TR>
-</TBODY>
-</TABLE></DIV>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.7</SPAN><A NAME="LimitExcept">LimitExcept</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Location /path&gt;
-  &lt;LimitExcept GET POST&gt;
-  ...
-  &lt;/LimitExcept&gt;
-&lt;/Location&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>LimitExcept</CODE> directive groups access control
-directives for specific types of HTTP requests and must appear
-inside a <A HREF="#Location"><CODE>Location</CODE></A> section.
-Unlike the <A HREF="#Limit"><CODE>Limit</CODE></A> directive,
-<CODE>LimitExcept</CODE> restricts access for all requests
-<I>except</I> those listed on the <CODE>LimitExcept</CODE>
-line.</P>
-
-
-<H2 CLASS="title"><A NAME="LimitRequestBody">LimitRequestBody</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-LimitRequestBody 10485760
-LimitRequestBody 10m
-LimitRequestBody 0
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>LimitRequestBody</CODE> directive controls the
-maximum size of print files, IPP requests, and HTML form data in
-HTTP POST requests. The default limit is 0 which disables the
-limit check.</P>
-
-
-<H2 CLASS="title"><A NAME="Listen">Listen</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Listen 127.0.0.1:631
-Listen 192.0.2.1:631
-Listen [::1]:631
-Listen *:631
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Listen</CODE> directive specifies a network address
-and port to listen for connections. Multiple <CODE>Listen</CODE>
-directives can be provided to listen on multiple addresses.</P>
-
-<P>The <CODE>Listen</CODE> directive is similar to the <A
-HREF="#Port"><CODE>Port</CODE></A> directive but allows you to
-restrict access to specific interfaces or networks.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.7</SPAN><A NAME="ListenBackLog">ListenBackLog</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ListenBackLog 5
-ListenBackLog 10
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ListenBackLog</CODE> directive sets the maximum
-number of pending connections the scheduler will allow. This
-normally only affects very busy servers that have reached the <A
-HREF="#MaxClients"><CODE>MaxClients</CODE></A> limit, but can
-also be triggered by large numbers of simultaneous connections.
-When the limit is reached, the operating system will refuse
-additional connections until the scheduler can accept the pending
-ones. The default is the OS-defined default limit, typically
-either 5 for older operating systems or 128 for newer operating
-systems.</P>
-
-
-<H2 CLASS="title"><A NAME="Location">Location</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Location /&gt;
-...
-&lt;/Location&gt;
-
-&lt;Location /admin&gt;
-...
-&lt;/Location&gt;
-
-&lt;Location /admin/conf&gt;
-...
-&lt;/Location&gt;
-
-&lt;Location /admin/log&gt;
-...
-&lt;/Location&gt;
-
-&lt;Location /classes&gt;
-...
-&lt;/Location&gt;
-
-&lt;Location /classes/name&gt;
-...
-&lt;/Location&gt;
-
-&lt;Location /jobs&gt;
-...
-&lt;/Location&gt;
-
-&lt;Location /printers&gt;
-...
-&lt;/Location&gt;
-
-&lt;Location /printers/name&gt;
-...
-&lt;/Location&gt;
-
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Location</CODE> directive specifies access control
-and authentication options for the specified HTTP resource or
-path.  The  <A HREF="#Allow"><CODE>Allow</CODE></A>,  <A
-HREF="#AuthType"><CODE>AuthType</CODE></A>,  <A
-HREF="#Deny"><CODE>Deny</CODE></A>,  <A
-HREF="#Encryption"><CODE>Encryption</CODE></A>,  <A
-HREF="#Limit"><CODE>Limit</CODE></A>,  <A
-HREF="#LimitExcept"><CODE>LimitExcept</CODE></A>,  <A
-HREF="#Order"><CODE>Order</CODE></A>,  <A
-HREF="#Require"><CODE>Require</CODE></A>, and <A
-HREF="#Satisfy"><CODE>Satisfy</CODE></A> directives may all
-appear inside a location.</P>
-
-<P>Note that more specific resources override the less specific
-ones. So the directives inside the <CODE>/printers/name</CODE>
-location will override ones from <CODE>/printers</CODE>.
-Directives inside <CODE>/printers</CODE> will override ones from
-<CODE>/</CODE>. None of the directives are inherited.</P>
-
-<DIV CLASS="table"><TABLE SUMMARY="Common Locations on the Server">
-<CAPTION>Table 3: <A NAME="TABLE3">Common Locations on the Server</A></CAPTION>
-<THEAD>
-<TR><TH>Location</TH><TH>Description</TH></TR>
-</THEAD>
-<TBODY>
-<TR><TD><CODE>/</CODE></TD><TD>The path for all get operations (get-printers, get-jobs, etc.)</TD></TR>
-<TR><TD><CODE>/admin</CODE></TD><TD>The path for all administration operations (add-printer, delete-printer, start-printer, etc.)</TD></TR>
-<TR><TD><CODE>/admin/conf</CODE></TD><TD>The path for access to the CUPS configuration files (cupsd.conf, client.conf, etc.)</TD></TR>
-<TR><TD><CODE>/admin/log</CODE></TD><TD>The path for access to the CUPS log files (access_log, error_log, page_log)</TD></TR>
-<TR><TD><CODE>/classes</CODE></TD><TD>The path for all classes</TD></TR>
-<TR><TD><CODE>/classes/name</CODE></TD><TD>The resource for class <CODE>name</CODE></TD></TR>
-<TR><TD><CODE>/jobs</CODE></TD><TD>The path for all jobs (hold-job, release-job, etc.)</TD></TR>
-<TR><TD><CODE>/jobs/id</CODE></TD><TD>The resource for job <CODE>id</CODE></TD></TR>
-<TR><TD><CODE>/printers</CODE></TD><TD>The path for all printers</TD></TR>
-<TR><TD><CODE>/printers/name</CODE></TD><TD>The path for printer <CODE>name</CODE></TD></TR>
-<TR><TD><CODE>/printers/name.ppd</CODE></TD><TD>The PPD file path for printer <CODE>name</CODE></TD></TR>
-</TBODY>
-</TABLE></DIV>
-
-
-<H2 CLASS="title"><A NAME="LogDebugHistory">LogDebugHistory</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-LogDebugHistory 0
-LogDebugHistory 200
-</PRE>
-
-<H3>Description</H3>
-
-<P>When <A HREF="#LogLevel"><CODE>LogLevel</CODE></A> is not set to
-<CODE>debug</CODE> or <CODE>debug2</CODE>, the <CODE>LogDebugHistory</CODE>
-directive specifies the number of debugging messages that are logged when an
-error occurs during printing. The default is 200 messages. A value of 0
-disables debugging history entirely and is not recommended.</P>
-
-
-<H2 CLASS="title"><A NAME="LogLevel">LogLevel</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-LogLevel none
-LogLevel emerg
-LogLevel alert
-LogLevel crit
-LogLevel error
-LogLevel warn
-LogLevel notice
-LogLevel info
-LogLevel debug
-LogLevel debug2
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>LogLevel</CODE> directive specifies the level of
-logging for the <A HREF="ref-cups-files-conf.html#ErrorLog"><CODE>ErrorLog</CODE></A>
-file. The following values are recognized (each level logs
-everything under the preceding levels):</P>
-
-<UL>
-
-       <LI><CODE>none</CODE> - Log nothing</LI>
-
-       <LI><CODE>emerg</CODE> - Log emergency conditions that
-       prevent the server from running</LI>
-
-       <LI><CODE>alert</CODE> - Log alerts that must be handled
-       immediately</LI>
-
-       <LI><CODE>crit</CODE> - Log critical errors that don't
-       prevent the server from running</LI>
-
-       <LI><CODE>error</CODE> - Log general errors</LI>
-
-       <LI><CODE>warn</CODE> - Log errors and warnings</LI>
-
-       <LI><CODE>notice</CODE> - Log temporary error conditions</LI>
-
-       <LI><CODE>info</CODE> - Log all requests and state
-       changes</LI>
-
-       <LI><CODE>debug</CODE> - Log basic debugging
-       information</LI>
-
-       <LI><CODE>debug2</CODE> - Log all debugging
-       information</LI>
-
-</UL>
-
-<p>The default <code>LogLevel</code> is <code>@CUPS_LOG_LEVEL@</code>.</p>
-
-
-<H2 CLASS="title"><A NAME="LogTimeFormat">LogTimeFormat</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-LogTimeFormat standard
-LogTimeFormat usecs
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>LogTimeFormat</CODE> directive specifies the format used for the
-date and time in the log files. <CODE>Standard</CODE> uses the standard Apache
-Common Log Format date and time while <CODE>usecs</CODE> adds microseconds.
-The default is <CODE>standard</CODE>.</P>
-
-
-<H2 CLASS="title"><A NAME="MaxClients">MaxClients</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxClients 100
-MaxClients 1024
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxClients</CODE> directive controls the maximum
-number of simultaneous clients that will be allowed by the
-server. The default is 100 clients.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>Since each print job requires a file descriptor for the status
-pipe, the scheduler internally limits the <CODE>MaxClients</CODE>
-value to 1/3 of the available file descriptors to avoid possible
-problems when printing large numbers of jobs.</P>
-
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.18</SPAN><A NAME="MaxClientsPerHost">MaxClientsPerHost</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxClientsPerHost 10
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxClientsPerHost</CODE> directive controls the
-maximum number of simultaneous clients that will be allowed from
-a single host by the server. The default is the
-<CODE>MaxClients</CODE> value.</P>
-
-<P>This directive provides a small measure of protection against
-Denial of Service attacks from a single host.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.16</SPAN><A NAME="MaxCopies">MaxCopies</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxCopies 100
-MaxCopies 65535
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxCopies</CODE> directive controls the maximum
-number of copies that a user can print of a job. The default is
-@CUPS_MAX_COPIES@ copies.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>Most HP PCL laser printers internally limit the number of
-copies to 100.</P>
-
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.6/OS X 10.8</SPAN><A NAME="MaxHoldTime">MaxHoldTime</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxHoldTime 10800
-MaxHoldTime 3h
-MaxHoldTime 180m
-MaxHoldTime 0
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxHoldTime</CODE> directive controls the maximum number of seconds allowed for a job to remain in the "indefinite" hold state. The job is canceled automatically if it remains held indefinitely longer than the specified time interval in seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix).</P>
-
-<p>The default setting is <CODE>0</CODE> which disables this functionality.</P>
-
-
-<H2 CLASS="title"><A NAME="MaxJobs">MaxJobs</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxJobs 100
-MaxJobs 9999
-MaxJobs 0
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxJobs</CODE> directive controls the maximum number
-of jobs that are kept in memory. Once the number of jobs reaches
-the limit, the oldest completed job is automatically purged from
-the system to make room for the new one. If all of the known jobs
-are still pending or active then the new job will be
-rejected.</P>
-
-<P>Setting the maximum size to 0 disables this functionality. The
-default setting is 500.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.7</SPAN><A NAME="MaxJobsPerPrinter">MaxJobsPerPrinter</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxJobsPerPrinter 100
-MaxJobsPerPrinter 9999
-MaxJobsPerPrinter 0
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxJobsPerPrinter</CODE> directive controls the
-maximum number of active jobs that are allowed for each printer
-or class. Once a printer or class reaches the limit, new jobs
-will be rejected until one of the active jobs is completed,
-stopped, aborted, or canceled.</P>
-
-<P>Setting the maximum to 0 disables this functionality. The
-default setting is 0.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.7</SPAN><A NAME="MaxJobsPerUser">MaxJobsPerUser</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxJobsPerUser 100
-MaxJobsPerUser 9999
-MaxJobsPerUser 0
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxJobsPerUser</CODE> directive controls the maximum
-number of active jobs that are allowed for each user. Once a user
-reaches the limit, new jobs will be rejected until one of the
-active jobs is completed, stopped, aborted, or canceled.</P>
-
-<P>Setting the maximum to 0 disables this functionality. The
-default setting is 0.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.6/OS X 10.8</SPAN><A NAME="MaxJobTime">MaxJobTime</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxJobTime 10800
-MaxJobTime 3h
-MaxJobTime 180m
-MaxJobTime 0
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxJobTime</CODE> directive controls the maximum number of
-seconds allowed for a job to complete printing before it is considered "stuck".
-The job is canceled automatically if it takes longer than the specified time to complete in seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix).</P>
-
-<p>Setting the maximum time to <CODE>0</CODE> disables this functionality. The default setting is <CODE>3h</CODE> (3 hours).</P>
-
-
-<H2 CLASS="title"><A NAME="MaxLogSize">MaxLogSize</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxLogSize 1048576
-MaxLogSize 1m
-MaxLogSize 0
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxLogSize</CODE> directive controls the maximum
-size of each log file. Once a log file reaches or exceeds the
-maximum size it is closed and renamed to <VAR>filename.O</VAR>.
-This allows you to rotate the logs automatically. The default
-size is 1048576 bytes (1MB).</P>
-
-<P>Setting the maximum size to 0 disables log rotation.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">Deprecated</SPAN><A NAME="MaxRequestSize">MaxRequestSize</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxRequestSize 10485760
-MaxRequestSize 10m
-MaxRequestSize 0
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxRequestSize</CODE> directive controls the maximum
-size of print files, IPP requests, and HTML form data in HTTP
-POST requests. The default limit is 0 which disables the limit
-check.</P>
-
-<P><B>This directive is deprecated and will be removed in a
-future CUPS release.</B> Use the <A
-HREF="#LimitRequestBody"><CODE>LimitRequestBody</CODE></A>
-directive instead.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.4/OS X 10.6</SPAN><A NAME="MultipleOperationTimeout">MultipleOperationTimeout</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MultipleOperationTimeout 1w
-MultipleOperationTimeout 1d
-MultipleOperationTimeout 1h
-MultipleOperationTimeout 5m
-MultipleOperationTimeout 300
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MultipleOperationTimeout</CODE> directive sets the maximum amount of time between files in a multi-file print job in seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix).</P>
-
-<P>The default is <CODE>5m</CODE> (five minutes).</P>
-
-
-<H2 CLASS="title"><A NAME="Order">Order</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Location /path&gt;
-  ...
-  Order Allow,Deny
-  Order Deny,Allow
-&lt;/Location&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Order</CODE> directive defines the default access
-control. The following values are supported:</P>
-
-<UL>
-
-       <LI><CODE>allow,deny</CODE> - Deny requests by default,
-       then check the <A HREF="#Allow"><CODE>Allow</CODE></A>
-       lines followed by the <A
-       HREF="#Deny"><CODE>Deny</CODE></A> lines</LI>
-
-       <LI><CODE>deny,allow</CODE> - Allow requests by default,
-       then check the <A HREF="#Deny"><CODE>Deny</CODE></A>
-       lines followed by the <A
-       HREF="#Allow"><CODE>Allow</CODE></A> lines</LI>
-
-</UL>
-
-<P>The <CODE>Order</CODE> directive must appear inside a <A
-HREF="#Location"><CODE>Location</CODE></A> or <A
-HREF="#Limit"><CODE>Limit</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="PageLogFormat">PageLogFormat</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-PageLogFormat %p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}
-PageLogFormat PAGE %p %u %j %P %C %{job-billing} %{job-originating-host-name}
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PageLogFormat</CODE> directive sets the format of lines
-that are logged to the page log file. Sequences beginning with percent (%)
-characters are replaced with the corresponding information, while all other
-characters are copied literally. The following percent sequences are
-recognized:</P>
-
-<UL>
-
-       <LI><CODE>%%</CODE>: Inserts a single percent character.</LI>
-
-       <LI><CODE>%{name}</CODE>: Inserts the value of the specified IPP
-       attribute.</LI>
-
-       <LI><CODE>%C</CODE>: Inserts the number of copies for the current page.</LI>
-
-       <LI><CODE>%P</CODE>: Inserts the current page number.</LI>
-
-       <LI><CODE>%T</CODE>: Inserts the current date and time in common log
-       format.</LI>
-
-       <LI><CODE>%j</CODE>: Inserts the job ID.</LI>
-
-       <LI><CODE>%p</CODE>: Inserts the printer name.</LI>
-
-       <LI><CODE>%u</CODE>: Inserts the username.</LI>
-
-</UL>
-
-<P>The default is "%p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}".</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="PassEnv">PassEnv</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-PassEnv MY_ENV_VARIABLE
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PassEnv</CODE> directive specifies an environment
-variable that should be passed to child processes. Normally, the
-scheduler only passes the <CODE>DYLD_LIBRARY_PATH</CODE>,
-<CODE>LD_ASSUME_KERNEL</CODE>, <CODE>LD_LIBRARY_PATH</CODE>,
-<CODE>LD_PRELOAD</CODE>, <CODE>NLSPATH</CODE>,
-<CODE>SHLIB_PATH</CODE>, <CODE>TZ</CODE>, and <CODE>VGARGS</CODE>
-environment variables to child processes.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="Policy">Policy</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Policy name&gt;
-  &lt;Limit operation ... operation&gt;
-  ...
-  &lt;/Limit&gt;
-  &lt;Limit operation ... operation&gt;
-  ...
-  &lt;/Limit&gt;
-  &lt;Limit All&gt;
-  ...
-  &lt;/Limit&gt;
-&lt;/Policy&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Policy</CODE> directive specifies IPP operation
-access control limits. Each policy contains 1 or more <A
-HREF="#LimitIPP"><CODE>Limit</CODE></A> sections to set the
-access control limits for specific operations - user limits,
-authentication, encryption, and allowed/denied addresses,
-domains, or hosts. The <CODE>&lt;Limit All&gt;</CODE> section
-specifies the default access control limits for operations that
-are not listed.</P>
-
-<P>Policies are named and associated with printers via the
-printer's operation policy setting
-(<CODE>printer-op-policy</CODE>). The default policy for the
-scheduler is specified using the <A
-HREF="#DefaultPolicy"><CODE>DefaultPolicy</CODE></A>
-directive.</P>
-
-
-<H2 CLASS="title"><A NAME="Port">Port</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Port 631
-Port 80
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Port</CODE> directive specifies a port to listen on.
-Multiple <CODE>Port</CODE> lines can be specified to listen on
-multiple ports. The <CODE>Port</CODE> directive is equivalent to
-"<CODE>Listen *:nnn</CODE>". The default port is 631.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>On systems that support IPv6, this directive will bind to both
-the IPv4 and IPv6 wildcard address.</P>
-
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><A NAME="PreserveJobHistory">PreserveJobHistory</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-PreserveJobHistory On
-PreserveJobHistory Off
-PreserveJobHistory 1w
-PreserveJobHistory 7d
-PreserveJobHistory 168h
-PreserveJobHistory 10080m
-PreserveJobHistory 604800
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PreserveJobHistory</CODE> directive controls whether the history of completed, canceled, or aborted print jobs is retained by the scheduler. A value of <CODE>On</CODE> preserves job information until the administrator purges it with the <CODE>cancel</CODE> command. A value of <CODE>Off</CODE> removes the job information as soon as each job is completed, canceled, or aborted. Numeric values preserve job information for the specified number of seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix).</P>
-
-<P>The default value is <CODE>On</CODE>.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>The <A HREF="#MaxJobs"><CODE>MaxJobs</CODE></A>, <A HREF="#MaxJobsPerPrinter"><CODE>MaxJobsPerPrinter</CODE></A>, and <A HREF="#MaxJobsPerUser"><CODE>MaxJobsPerUser</CODE></A> directives can cause job history to be discarded to make room for new jobs.</P>
-
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><A NAME="PreserveJobFiles">PreserveJobFiles</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-PreserveJobFiles On
-PreserveJobFiles Off
-PreserveJobFiles 1w
-PreserveJobFiles 7d
-PreserveJobFiles 168h
-PreserveJobFiles 10080m
-PreserveJobFiles 604800
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PreserveJobFiles</CODE> directive controls whether the document files of completed, canceled, or aborted print jobs are retained. Jobs can be restarted (and reprinted) as desired until they are purged.</P>
-
-<P>A value of <CODE>On</CODE> preserves job files until the administrator purges them with the <CODE>cancel</CODE> command. A value of <CODE>Off</CODE> removes the job files as soon as each job is completed, canceled, or aborted. Numeric values preserve job files for the specified number of seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix).</P>
-
-<P>The default value is <CODE>1d</CODE> (one day).</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>The <A HREF="#MaxJobs"><CODE>MaxJobs</CODE></A>, <A HREF="#MaxJobsPerPrinter"><CODE>MaxJobsPerPrinter</CODE></A>, <A HREF="#MaxJobsPerUser"><CODE>MaxJobsPerUser</CODE></A>, and <A HREF="#PreserveJobHistory"><CODE>PreserveJobHistory</CODE></A> directives can cause job files to be discarded sooner than specified.</P>
-
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.21</SPAN><A NAME="ReloadTimeout">ReloadTimeout</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ReloadTimeout 0
-ReloadTimeout 30
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ReloadTimeout</CODE> directive specifies the number
-of seconds the scheduler will wait for active jobs to complete
-before doing a restart. The default is 30 seconds.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.7</SPAN><A NAME="Require">Require</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Location /path&gt;
-  ...
-  Require group foo bar
-  Require user john mary
-  Require valid-user
-  Require user @groupname
-  Require user @SYSTEM
-  Require user @OWNER
-&lt;/Location&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Require</CODE> directive specifies that
-authentication is required for the resource. The
-<CODE>group</CODE> keyword specifies that the authenticated user
-must be a member of one or more of the named groups that
-follow.</P>
-
-<P>The <CODE>user</CODE> keyword specifies that the
-authenticated user must be one of the named users or groups that
-follow. Group names are specified using the "@" prefix.</P>
-
-<P>The <CODE>valid-user</CODE> keyword specifies that any
-authenticated user may access the resource.</P>
-
-<P>The default is to do no authentication. This directive must
-appear inside a <A HREF="#Location"><CODE>Location</CODE></A> or
-<A HREF="#Limit"><CODE>Limit</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="RIPCache">RIPCache</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-RIPCache 128m
-RIPCache 1g
-RIPCache 2048k
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>RIPCache</CODE> directive sets the size of the
-memory cache used by Raster Image Processor ("RIP") filters such
-as <CODE>imagetoraster</CODE> and <CODE>pstoraster</CODE>. The
-size can be suffixed with a "k" for kilobytes, "m" for megabytes,
-or "g" for gigabytes. The default cache size is "128m", or 128
-megabytes.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.16</SPAN><A NAME="RootCertDuration">RootCertDuration</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-RootCertDuration 0
-RootCertDuration 1w
-RootCertDuration 1d
-RootCertDuration 1h
-RootCertDuration 5m
-RootCertDuration 300
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>RootCertDuration</CODE> directive specifies the amount of time the <EM>root certificate</EM> remains valid in seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix). The scheduler will generate a new certificate as needed when the given time interval has expired. If set to 0, the root certificate is generated only once on startup or on a restart.</P>
-
-<P>The default is <CODE>5m</CODE> (five minutes).</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.7</SPAN><A NAME="Satisfy">Satisfy</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Location /path&gt;
-  ...
-  Satisfy all
-  Satisfy any
-&lt;/Location&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Satisfy</CODE> directive specifies whether all
-conditions must be satisfied to allow access to the resource. If
-set to <CODE>all</CODE>, then all authentication and access
-control conditions must be satisfied to allow access.</P>
-
-<P>Setting <CODE>Satisfy</CODE> to <CODE>any</CODE> allows a user
-to gain access if the authentication or access control
-requirements are satisfied. For example, you might require
-authentication for remote access, but allow local access without
-authentication.</P>
-
-<P>The default is <CODE>all</CODE>. This directive must appear
-inside a <A HREF="#Location"><CODE>Location</CODE></A> or <A
-HREF="#Limit"><CODE>Limit</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="ServerAdmin">ServerAdmin</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ServerAdmin user@host
-ServerAdmin root@foo.bar.com
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ServerAdmin</CODE> directive identifies the email
-address for the administrator on the system. By default the
-administrator email address is <CODE>root@server</CODE>, where
-<CODE>server</CODE> is the <A
-HREF="#ServerName"><CODE>ServerName</CODE></A>.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.3.10</SPAN><A NAME="ServerAlias">ServerAlias</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ServerAlias althost
-ServerAlias foo.example.com
-ServerAlias bar.example.com
-ServerAlias one.example.com two.example.com
-ServerAlias *
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ServerAlias</CODE> directive specifies alternate names that the server is known by. By default it contains a list of all aliases associated with the <A HREF="#ServerName"><CODE>ServerName</CODE></A>. The special name "*" can be used to allow any hostname when accessing CUPS via an external network interfaces.</P>
-
-<BLOCKQUOTE><B>Note</B>
-
-<P>The <CODE>ServerAlias</CODE> directive is used for HTTP Host header
-validation when clients connect to the scheduler from external interfaces.
-Using the special name "*" can expose your system to known browser-based
-DNS rebinding attacks, even when accessing sites through a firewall. If the
-auto-discovery of alternate names does not work, we recommend listing each
-alternate name with a ServerAlias directive instead of using "*".</P>
-
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><A NAME="ServerName">ServerName</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ServerName foo.example.com
-ServerName myserver.example.com
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ServerName</CODE> directive specifies the hostname
-that is reported to clients. By default the server name is the
-hostname.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.21</SPAN><A NAME="ServerTokens">ServerTokens</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ServerTokens None
-ServerTokens ProductOnly
-ServerTokens Major
-ServerTokens Minor
-ServerTokens Minimal
-ServerTokens OS
-ServerTokens Full
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ServerTokens</CODE> directive specifies the
-information that is included in the <CODE>Server:</CODE> header
-of all HTTP responses. Table 4 lists the token name along with
-the text that is returned. The default is
-<CODE>Minimal</CODE>.</P>
-
-<DIV CLASS="table"><TABLE SUMMARY="ServerToken Names and Values">
-<CAPTION>Table 4: <A NAME="TABLE4">ServerToken Names and Values</A></CAPTION>
-<THEAD>
-<TR>
-       <TH>Name</TH>
-       <TH>Value</TH>
-</TR>
-</THEAD>
-<TBODY>
-<TR>
-       <TD>None</TD>
-       <TD>No <CODE>Server:</CODE> header is returned</TD>
-</TR>
-<TR>
-       <TD>ProductOnly</TD>
-       <TD>"CUPS"</TD>
-</TR>
-<TR>
-       <TD>Major</TD>
-       <TD>"CUPS 1"</TD>
-</TR>
-<TR>
-       <TD>Minor</TD>
-       <TD>"CUPS 1.2"</TD>
-</TR>
-<TR>
-       <TD>Minimal</TD>
-       <TD>"CUPS 1.2.N" where N is the patch release</TD>
-</TR>
-<TR>
-       <TD>OS</TD>
-       <TD>"CUPS 1.2.N (UNAME)" where N is the patch release and
-       UNAME is the output of the <B>uname(1)</B> command</TD>
-</TR>
-<TR>
-       <TD>Full</TD>
-       <TD>"CUPS 1.2.N (UNAME) IPP/1.1" where N is the patch
-       release and UNAME is the output of the <B>uname(1)</B>
-       command</TD>
-</TR>
-</TBODY>
-</TABLE></DIV>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="SetEnv">SetEnv</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-SetEnv PATH /usr/lib/cups/filter:/bin:/usr/bin:/usr/local/bin
-SetEnv MY_ENV_VAR foo
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>SetEnv</CODE> directive specifies an environment
-variable that should be passed to child processes.</P>
-
-
-<H2 CLASS="title"><A NAME="SSLListen">SSLListen</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-SSLListen 127.0.0.1:443
-SSLListen 192.0.2.1:443
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>SSLListen</CODE> directive specifies a network
-address and port to listen for secure connections. Multiple
-<CODE>SSLListen</CODE> directives can be provided to listen on
-multiple addresses.</P>
-
-<P>The <CODE>SSLListen</CODE> directive is similar to the <A
-HREF="#SSLPort"><CODE>SSLPort</CODE></A> directive but allows you
-to restrict access to specific interfaces or networks.</P>
-
-
-<H2 CLASS="title"><A NAME="SSLOptions">SSLOptions</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-SSLOptions None
-SSLOptions NoEmptyFragments
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>SSLOptions</CODE> directive specifies additional SSL/TLS
-protocol options to use for encrypted connected. Currently only two
-options are supported - <code>None</code> (the default) for the most
-secure mode and <code>NoEmptyFragments</code> to allow CUPS to work with
-Microsoft Windows with the FIPS conformance mode enabled.</p>
-
-
-<H2 CLASS="title"><A NAME="SSLPort">SSLPort</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-SSLPort 443
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>SSLPort</CODE> directive specifies a port to listen
-on for secure connections. Multiple <CODE>SSLPort</CODE> lines
-can be specified to listen on multiple ports.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.6</SPAN><A NAME="StrictConformance">StrictConformance</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-StrictConformance No
-StrictConformance Yes
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>StrictConformance</CODE> directive specifies whether the scheduler
-requires strict IPP conformance for client requests, for example to not allow
-document attributes in a Create-Job request. The default is
-<code>No</code>.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.5</SPAN><A NAME="SubscriptionPrivateAccess">SubscriptionPrivateAccess</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-SubscriptionPrivateAccess all
-SubscriptionPrivateAccess default
-SubscriptionPrivateAccess {user|@group|@ACL|@OWNER|@SYSTEM}+
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>SubscriptionPrivateAccess</CODE> directive specifies the access list for a
-subscription's private values. The "default" access list is "@OWNER @SYSTEM".
-"@ACL" maps to the printer's requesting-user-name-allowed or
-requesting-user-name-denied values.</P>
-
-<P>The <CODE>SubscriptionPrivateAccess</CODE> directive must appear inside a <A
-HREF="#Policy"><CODE>Policy</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.5</SPAN><A NAME="SubscriptionPrivateValues">SubscriptionPrivateValues</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-SubscriptionPrivateValues all
-SubscriptionPrivateValues default
-SubscriptionPrivateValues none
-SubscriptionPrivateValues attribute-name-1 [ ... attribute-name-N ]
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>SubscriptionPrivateValues</CODE> directive specifies the list of
-subscription values to make private. The "default" values are "notify-events",
-"notify-pull-method", "notify-recipient-uri", "notify-subscriber-user-name", and
-"notify-user-data".</P>
-
-<P>The <CODE>SubscriptionPrivateValues</CODE> directive must appear inside a <A
-HREF="#Policy"><CODE>Policy</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="Timeout">Timeout</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Timeout 1w
-Timeout 1d
-Timeout 1h
-Timeout 5m
-Timeout 300
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Timeout</CODE> directive controls the amount of time
-to wait before an active HTTP or IPP request times out in seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix).</P>
-
-<P>The default timeout is <CODE>5m</CODE> (five minutes).</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="INFO">CUPS 1.5</SPAN><A NAME="WebInterface">WebInterface</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-WebInterface Yes
-WebInterface No
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>WebInterface</CODE> directive specifies whether the web interface is enabled. The default value is <CODE>No</CODE> on OS X and <CODE>Yes</CODE> on all other operating systems.</P>
-
-</BODY>
-</HTML>
diff --git a/doc/help/ref-error_log.html b/doc/help/ref-error_log.html
deleted file mode 100644 (file)
index 0109278..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
-       <TITLE>error_log</TITLE>
-       <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">error_log</H1>
-
-<P>The <VAR>error_log</VAR> file lists messages from the
-scheduler - errors, warnings, etc. The <A
-HREF="ref-cupsd-conf.html#LogLevel"><CODE>LogLevel</CODE></A>
-directive controls which messages are logged:</P>
-
-<P CLASS="command">
-
-level date-time message<BR>
-
-<BR>
-
-I [20/May/1999:19:18:28 +0000] Job 1 queued on 'DeskJet' by 'mike'.<BR>
-
-I [20/May/1999:19:21:02 +0000] Job 2 queued on 'DeskJet' by 'mike'.<BR>
-
-I [20/May/1999:19:22:24 +0000] Job 2 was cancelled by 'mike'.<BR>
-
-</P>
-
-<P>The <I>level</I> field contains the type of message:</P>
-
-<UL>
-
-       <LI><CODE>A</CODE> - Alert message (LogLevel alert)
-       <LI><CODE>C</CODE> - Critical error message (LogLevel crit)
-       <LI><CODE>D</CODE> - Debugging message (LogLevel debug)
-       <LI><CODE>d</CODE> - Detailed debugging message (LogLevel debug2)
-       <LI><CODE>E</CODE> - Normal error message (LogLevel error)
-       <LI><CODE>I</CODE> - Informational message (LogLevel info)
-       <LI><CODE>N</CODE> - Notice message (LogLevel notice)
-       <LI><CODE>W</CODE> - Warning message (LogLevel warn)
-       <LI><CODE>X</CODE> - Emergency error message (LogLevel emerg)
-
-</UL>
-
-<P>The <I>date-time</I> field contains the date and time of when
-the page started printing. The format of this field is identical
-to the <I>data-time</I> field in the <VAR>access_log</VAR> file.</P>
-
-<P>The <I>message</I> fields contains a free-form textual
-message. Messages from job filters are prefixed with "<CODE>[Job
-NNN]</CODE>".</P>
-
-</BODY>
-</HTML>
diff --git a/doc/help/ref-mailto-conf.html b/doc/help/ref-mailto-conf.html
deleted file mode 100644 (file)
index 0b95132..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
-       <TITLE>mailto.conf</TITLE>
-       <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">mailto.conf</H1>
-
-<P>The <VAR>/etc/cups/mailto.conf</VAR> file contains several
-directives that defines the local mail server and email
-notification preferences for CUPS. Each directive is listed on a
-line by itself followed by its value. Comments are introduced
-using the number sign ("#") character at the beginning of a
-line.</P>
-
-
-<H2 CLASS="title"><A NAME="Cc">Cc</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Cc bigbrother@example.com
-Cc John Doe &lt;jd@example.com>
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Cc</CODE> directive specifies an additional
-recipient ("carbon copy") for all email notifications. The
-default is to not send a copy to anyone but the subscriber.</P>
-
-
-<H2 CLASS="title"><A NAME="From">From</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-From printserver@example.com
-From Your Happy Printer &lt;printserver@example.com>
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>From</CODE> directive specifies the sender of email
-notifications. The default is the <A
-HREF="ref-cupsd-conf.html#ServerAdmin"><TT>ServerAdmin</TT><A>
-address defined in the <VAR>cupsd.conf</VAR> file.</P>
-
-
-<H2 CLASS="title"><A NAME="Sendmail">Sendmail</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Sendmail /usr/sbin/sendmail
-Sendmail /usr/lib/sendmail -bm -i
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Sendmail</CODE> directive specifies the command to
-run to deliver an email locally. This directive cannot be used
-with the <TT>SMTPServer</TT> directive, and if both
-<TT>Sendmail</TT> and <TT>SMTPServer</TT> lines appear in the
-<VAR>mailto.conf</VAR> file, only the last line is used. The
-default is <TT>/usr/sbin/sendmail</TT>.</P>
-
-
-<H2 CLASS="title"><A NAME="SMTPServer">SMTPServer</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-SMTPServer mail.example.com
-SMTPServer 192.168.2.1
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>SMTPServer</CODE> directive specifies a hostname or
-IP address of a (possibly remote) SMTP mail server. This
-directive cannot be used with the <TT>Sendmail</TT> directive,
-and if both <TT>Sendmail</TT> and <TT>SMTPServer</TT> lines
-appear in the <VAR>mailto.conf</VAR> file, only the last line is
-used. The default is to use the <TT>Sendmail</TT> command
-instead.</P>
-
-
-<H2 CLASS="title"><A NAME="Subject">Subject</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Subject [CUPS]
-Subject URGENT EMAIL NOTIFICATION
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Subject</CODE> directive specifies a prefix string to
-add to the subject of each email notification. The default is to
-not add a prefix string.</P>
-
-
-</BODY>
-</HTML>
diff --git a/doc/help/ref-page_log.html b/doc/help/ref-page_log.html
deleted file mode 100644 (file)
index 46453eb..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
-       <TITLE>page_log</TITLE>
-       <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">page_log</H1>
-
-<P>The <VAR>page_log</VAR> file lists each page that is sent to a
-printer. By default, each line contains the following information:</P>
-
-<P CLASS="command">
-
-printer user job-id date-time page-number num-copies job-billing job-originating-host-name job-name media sides<BR>
-
-<BR>
-
-DeskJet root 2 [20/May/1999:19:21:05 +0000] 1 1 acme-123 localhost myjob letter one-sided<BR>
-
-DeskJet root 2 [20/May/1999:19:21:05 +0000] 2 1 acme-123 localhost myjob letter one-sided<BR>
-
-</P>
-
-<p>The <a href="ref-cupsd-conf.html#PageLogFormat"><code>PageLogFormat</code></a>
-directive can be used to change this information.</p>
-
-<P>The <I>printer</I> field contains the name of the printer that
-printed the page. If you send a job to a printer class, this
-field will contain the name of the printer that was assigned the
-job.</P>
-
-<P>The <I>user</I> field contains the name of the user (the IPP
-<CODE>requesting-user-name</CODE> attribute) that submitted this
-file for printing.</P>
-
-<P>The <I>job-id</I> field contains the job number of the page
-being printed. Job numbers are reset to 1 whenever the spool
-directory (<VAR>/var/spool/cups</VAR>) is cleared, so don't
-depend on this number being unique!</P>
-
-<P>The <I>date-time</I> field contains the date and time of when
-the page started printing. The format of this field is identical
-to the <I>data-time</I> field in the <VAR>access_log</VAR>
-file.</P>
-
-<P>The <I>page-number</I> and <I>num-copies</I> fields contain the
-page number and number of copies being printed of that page. For
-printers that cannot produce copies on their own, the
-<I>num-copies</I> field will always be 1.</P>
-
-<P>The <I>job-billing</I> field contains a copy of the
-<CODE>job-billing</CODE> attribute provided with the IPP
-<CODE>Create-Job</CODE> or <CODE>Print-Job</CODE> requests or "-"
-if none was provided.
-
-<P>The <I>job-originating-host-name</I> field contains the hostname or IP
-address of the client that printed the job.</P>
-
-<P>The <I>job-name</I> field contains a copy of the
-<CODE>job-name</CODE> attribute provided with the IPP
-<CODE>Create-Job</CODE> or <CODE>Print-Job</CODE> requests or "-"
-if none was provided.
-
-<P>The <I>media</I> field contains a copy of the
-<CODE>media</CODE> attribute provided with the IPP
-<CODE>Create-Job</CODE> or <CODE>Print-Job</CODE> requests or "-"
-if none was provided.
-
-<P>The <I>sides</I> field contains a copy of the
-<CODE>sides</CODE> attribute provided with the IPP
-<CODE>Create-Job</CODE> or <CODE>Print-Job</CODE> requests or "-"
-if none was provided.
-
-</BODY>
-</HTML>
diff --git a/doc/help/ref-printers-conf.html b/doc/help/ref-printers-conf.html
deleted file mode 100644 (file)
index bb44c4c..0000000
+++ /dev/null
@@ -1,719 +0,0 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
-       <TITLE>printers.conf</TITLE>
-       <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">printers.conf</H1>
-
-<P>The CUPS scheduler (cupsd) uses the
-<VAR>/etc/cups/printers.conf</VAR> file to store the list of
-available printers. This file contains only locally defined
-printers, not remote printers that are created automatically via
-browsing. Each directive is listed on a line by itself followed
-by its value. Comments are introduced using the number sign ("#")
-character at the beginning of a line.</P>
-
-<P>While the printer configuration file consists of plain text
-and can be modified using your favorite text editor, you should
-normally use the <A HREF="man-lpadmin.html">lpadmin(8)</A>
-command, web interface, or any of the available GUIs to manage
-your printers instead. If you do choose to edit this file
-manually, you will need to stop the scheduler first, make your
-changes, and then start the scheduler to make them active.</P>
-
-
-<H2 CLASS="title"><A NAME="Accepting">Accepting</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-  Accepting yes
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Accepting</CODE> directive defines the initial state
-of the <VAR>printer-is-accepting-jobs</VAR> attribute. This state
-is also set by the <CODE>cupsaccept(8)</CODE> and
-<CODE>cupsreject(8)</CODE> commands:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/cupsaccept printername
-/usr/sbin/cupsreject printername</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="AllowUser">AllowUser</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-  AllowUser foo_user
-  AllowUser @bar_group
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>AllowUser</CODE> directive adds a username or group
-name to the <VAR>requesting-user-name-allowed</VAR> attribute
-which can be set by the <CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -u allow:foo_user,@bar_group</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A> directive.
-This directive cannot be used with <A
-HREF="#DenyUser"><CODE>DenyUser</CODE></A>.</P>
-
-
-<H2 CLASS="title"><A NAME="DefaultPrinter">DefaultPrinter</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;DefaultPrinter name&gt;
-  ...
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DefaultPrinter</CODE> directive begins a printer
-definition as the default server destination. The default server
-destination can be set using the <CODE>lpadmin(8)</CODE>
-command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -d printername</KBD>
-</PRE>
-
-<P>Note that the server default destination settings can be
-overridden by the user's default destination settings which are
-normally set using the <CODE>lpoptions(1)</CODE> command.</P>
-
-
-<H2 CLASS="title"><A NAME="DenyUser">DenyUser</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-  DenyUser foo_user
-  DenyUser @bar_group
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DenyUser</CODE> directive adds a username or group
-name to the <VAR>requesting-user-name-denied</VAR> attribute
-which can be set by the <CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -u deny:foo_user,@bar_group</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A> directive.
-This directive cannot be used with <A
-HREF="#AllowUser"><CODE>AllowUser</CODE></A></P>
-
-
-<H2 CLASS="title"><A NAME="DeviceURI">DeviceURI</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-  DeviceURI socket://foo.bar.com:9100
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DeviceURI</CODE> directive defines the value of the
-<VAR>device-uri-attribute</VAR> attribute. It is normally set
-using the <CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -v device-uri</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2</SPAN><A NAME="ErrorPolicy">ErrorPolicy</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-  ErrorPolicy abort-job
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ErrorPolicy</CODE> directive defines the policy that
-is used when a backend is unable to send a print job to the
-printer. The <CODE>lpadmin(8)</CODE> command sets the current
-error policy:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -o printer-error-policy=stop-printer</KBD>
-</PRE>
-
-<P>The following values are supported:</P>
-
-<UL>
-
-       <LI><CODE>abort-job</CODE> - Abort the job and proceed
-       with the next job in the queue</LI>
-
-       <LI><CODE>retry-current-job</CODE> - Retry the current job
-       immediately</LI>
-
-       <LI><CODE>retry-job</CODE> - Retry the job after waiting
-       for N seconds; the <VAR>cupsd.conf</VAR> <A
-       HREF="ref-cupsd-conf.html#JobRetryInterval"><CODE>JobRetryInterval</CODE></A>
-       directive controls the value of N</LI>
-
-       <LI><CODE>stop-printer</CODE> - Stop the printer and keep
-       the job for future printing; this is the default
-       value</LI>
-
-</UL>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.4</SPAN><A NAME="Filter">Filter</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-  Filter mime/type 100 program
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Filter</CODE> directive lists a single filter program as defined
-in the printer's PPD file.</P>
-
-<P>This directive must appear inside a
-<A HREF="#Printer"><CODE>Printer</CODE></A> or
-<A HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="Info">Info</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-  Info My Printer
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Info</CODE> directive defines the string for the
-<VAR>printer-info</VAR> attribute. It is normally set using the
-<CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -D "My Printer"</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="JobSheets">JobSheets</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-  JobSheets none,standard
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>JobSheets</CODE> directive specifies the default
-banner pages  to print before and after a print job. In the above
-example, only a <VAR>standard</VAR> banner will print after each
-job. The <CODE>lpadmin(8)</CODE> command is normally used to set
-the default banners:
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -o job-sheets-default=none,standard</KBD>
-</PRE>
-
-<P>If only one banner file is specified, it will be printed
-before the files in the job. If a second banner file is
-specified, it is printed  after the files in the job.</P>
-
-<P>The available banner pages depend on the local system
-configuration; CUPS includes the following standard banner
-files:</P>
-
-<UL>
-
-       <LI><CODE>none</CODE> - Do not produce a banner
-       page.</LI>
-
-       <LI><CODE>classified</CODE> - A banner page with a
-       &quot;classified&quot; label at the top and bottom.</LI>
-
-       <LI><CODE>confidential</CODE> - A banner page with a
-       &quot;confidential&quot; label at the top and bottom.</LI>
-
-       <LI><CODE>secret</CODE> - A banner page with a
-       &quot;secret&quot; label at the top and bottom.</LI>
-
-       <LI><CODE>standard</CODE> - A banner page with no label
-       at the top and bottom.</LI>
-
-       <LI><CODE>topsecret</CODE> - A banner page with a
-       &quot;top secret&quot; label at the top and bottom.</LI>
-
-       <LI><CODE>unclassified</CODE> - A banner page with an
-       &quot;unclassified&quot; label at the top and bottom.</LI>
-
-</UL>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="KLimit">KLimit</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-  KLimit 1234
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>KLimit</CODE> directive defines the value of the
-<VAR>job-k-limit</VAR> attribute. It is normally set using the
-<CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -o job-k-limit=1234</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="Location">Location</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-  Location Building 3321
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Location</CODE> directive defines the string for the
-<VAR>printer-location</VAR> attribute. It is normally set using the
-<CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -L "Building 3321"</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2</SPAN><A NAME="OpPolicy">OpPolicy</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-  OpPolicy default
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>OpPolicy</CODE> directive sets the operation policy
-that is used for the printer. The <CODE>lpadmin(8)</CODE> command
-sets the current operation policy:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -o printer-op-policy=default</KBD>
-</PRE>
-
-<P>The default policy is named "default". All policies correspond
-to those defined using the <VAR>cupsd.conf</VAR> <A
-HREF="ref-cupsd-conf.html#Policy"><CODE>Policy</CODE></A>
-section.</P>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2</SPAN><A NAME="Option">Option</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-  Option name value
-  Option scaling 100
-  Option page-left 72
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Option</CODE> directive specifies a default job
-template attribute value. It is mapped to
-<CODE>name-default</CODE> in the printer attributes and applied
-to jobs as <CODE>name</CODE>.</P>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="PageLimit">PageLimit</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-  PageLimit 1234
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PageLimit</CODE> directive defines the value of the
-<VAR>job-page-limit</VAR> attribute. It can be set using the
-<CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -o job-page-limit=1234</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2</SPAN><A NAME="PortMonitor">PortMonitor</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-  PortMonitor bcp
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PortMonitor</CODE> directive sets the filter program that
-is used for every print job, typically to encode or package the print
-data in a format acceptable for a particular printer interface. It is
-set using the <CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -o port-monitor=tbcp</KBD>
-</PRE>
-
-<P>The following standard port monitors are included with CUPS:</P>
-
-<UL>
-
-       <LI><CODE>bcp</CODE> - Encode PostScript print data using
-       the Adobe Binary Control Protocol (BCP)</LI>
-
-       <LI><CODE>none</CODE> - Do not use a port monitor</LI>
-
-       <LI><CODE>tbcp</CODE> - Encode PostScript print data
-       using the Adobe Tagged Binary Control Protocol
-       (TBCP)</LI>
-
-</UL>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.4</SPAN><A NAME="PreFilter">PreFilter</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-  PreFilter mime/type 100 program
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PreFilter</CODE> directive lists a single pre-filter program as
-defined in the printer's PPD file.</P>
-
-<P>This directive must appear inside a
-<A HREF="#Printer"><CODE>Printer</CODE></A> or
-<A HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="Printer">Printer</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Printer</CODE> directive begins a printer
-definition. Printers are added using the <CODE>lpadmin(8)</CODE>
-command:
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername ...</KBD>
-</PRE>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.4</SPAN><A NAME="Product">Product</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-  Product Acme PaperWriter
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Product</CODE> directive defines the main product string from the
-printer's PPD file and is used when advertising the queue via DNS-SD.</P>
-
-<P>This directive must appear inside a
-<A HREF="#Printer"><CODE>Printer</CODE></A> or
-<A HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="QuotaPeriod">QuotaPeriod</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-  QuotaPeriod 604800
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>QuotaPeriod</CODE> directive defines the value of
-the  <VAR>job-quota-period</VAR> attribute. Typical values are
-86400 (1 day), 604800 (1 week), 2592000 (1 month), and 31536000
-(1 year). It is set using the <CODE>lpadmin(8)</CODE>
-command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -o job-quota-period=604800</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2</SPAN><A NAME="Shared">Shared</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-  Shared yes
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Shared</CODE> directive defines the initial value of
-the <VAR>printer-is-shared</VAR> attribute. The strings
-<VAR>yes</VAR> and <VAR>no</VAR> correspond to the true and false
-values, respectively. The <CODE>lpadmin(8)</CODE> command sets
-the current state:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -o printer-is-shared=true</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="State">State</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-  State idle
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>State</CODE> directive defines the initial value of
-the <VAR>printer-state</VAR> attribute. The strings
-<VAR>idle</VAR> and <VAR>stopped</VAR> correspond to the IPP
-enumeration values 3 and 5, respectively. The
-<CODE>cupsenable(8)</CODE> and <CODE>cupsdisable(8)</CODE>
-commands set the current state:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/cupsenable printername</KBD>
-<KBD>/usr/sbin/cupsdisable printername</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="StateMessage">StateMessage</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-  StateMessage Printer is lonely.
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>StateMessage</CODE> directive defines the initial
-string for the  <VAR>printer-state-message</VAR> attribute. The
-following are some example messages:</P>
-
-<PRE CLASS="command">
-StateMessage Connected to host_name...
-StateMessage Connecting to printer_queue on port port_number...
-StateMessage Network host host_name is busy; will retry in 30 seconds...
-StateMessage Printer busy; will retry in 10 seconds...
-StateMessage Printer is busy; retrying print job...
-StateMessage Print file accepted - job ID id_number.
-StateMessage Waiting for job to complete
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2</SPAN><A NAME="StateTime">StateTime</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
-  ...
-  StateTime 1133542425
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>StateTime</CODE> directive defines the UNIX time
-(seconds since Jan 1, 1970) for the last state change of the
-queue. It is mapped to the <VAR>printer-state-change-time</VAR>
-attribute.</P>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-</BODY>
-</HTML>
diff --git a/doc/help/ref-snmp-conf.html b/doc/help/ref-snmp-conf.html
deleted file mode 100644 (file)
index 4cab237..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
-       <TITLE>snmp.conf</TITLE>
-       <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">snmp.conf</H1>
-
-<P>The <VAR>/etc/cups/snmp.conf</VAR> file contains several
-directives that determine how the SNMP printer discovery backend
-behaves. Each directive is listed on a line by itself followed
-by its value. Comments are introduced using the number sign ("#")
-character at the beginning of a line.</P>
-
-<P>The SNMP backend uses the SNMPv1 protocol to discover network
-printers, collecting information from the Host MIB along with
-intelligent port probes to determine the correct device URI and
-make and model for each printer. Future versions of CUPS will
-likely support the new Port Monitor MIB as well.</P>
-
-<H2 CLASS="title"><A NAME="Address">Address</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Address @LOCAL
-Address @IF(name)
-Address 255.255.255.255
-Address 192.168.2.255
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Address</CODE> directive specifies a broadcast
-address to use when discovering printers. Multiple
-<CODE>Address</CODE> lines can be provided to scan different
-subnets.</P>
-
-<P>The default address is <VAR>@LOCAL</VAR>, which broadcasts to
-all LANs.</P>
-
-
-<H2 CLASS="title"><A NAME="Community">Community</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Community public
-Community easysw
-Community BigCorp
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Community</CODE> directive specifies a community
-name to use when discovering printers and reporting status and supply
-levels for network printers.</P>
-
-<P>The default community is "public".</P>
-
-
-<H2 CLASS="title"><A NAME="DebugLevel">DebugLevel</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DebugLevel 0
-DebugLevel 1
-DebugLevel 2
-DebugLevel 3
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DebugLevel</CODE> directive specifies the debugging
-level to use when searching for network printers. Level 0
-produces no debugging information. Level 1 produces basic
-debugging information. Level 2 adds printing of the SNMP
-messages. Level 3 adds a hex dump of the network data.</P>
-
-<P>The default setting is <VAR>0</VAR>.</P>
-
-<H2 CLASS="title"><A NAME="DeviceURI">DeviceURI</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DeviceURI "HP.*JetDirect.*" socket://%s:9100 socket://%s:9101 socket://%s:9102
-DeviceURI "HP.*" socket://%s
-DeviceURI "Acme.*Laser.*" lpd://%s/print
-DeviceURI "Xerox.*"
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DeviceURI</CODE> directive specifies a regular expression
-(enclosed in double quotes) that is matched against the SNMP device
-description OID returned by a printer. If the description matches the
-regular expression, each device URI that follows the regular expression
-is listed by the backend, with any occurrences of <CODE>%s</CODE>
-replaced by the device's hostname or IP address. If no URIs are listed,
-the device is ignored.</P>
-
-<P>The <CODE>DeviceURI</CODE> directives are processed serially in
-the order specified in the <VAR>snmp.conf</VAR> file until a match
-is found.</P>
-
-
-<H2 CLASS="title"><A NAME="HostNameLookups">HostNameLookups</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-HostNameLookups on
-HostNameLookups off
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>HostNameLookups</CODE> directive specifies whether printer
-addresses are converted to hostnames or left as numeric IP addresses.</P>
-
-<P>The default setting is <VAR>off</VAR>.</P>
-
-<H2 CLASS="title"><A NAME="MaxRunTime">MaxRunTime</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxRunTime 10
-MaxRunTime 300
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxRunTime</CODE> directive specifies the maximum
-number of seconds that the SNMP backend will spend looking for
-printer devices on the network.</P>
-
-<P>The default setting is <VAR>10</VAR>.</P>
-
-</BODY>
-</HTML>
diff --git a/doc/help/ref-subscriptions-conf.html b/doc/help/ref-subscriptions-conf.html
deleted file mode 100644 (file)
index 06cfc72..0000000
+++ /dev/null
@@ -1,354 +0,0 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
-       <TITLE>subscriptions.conf</TITLE>
-       <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">subscriptions.conf</H1>
-
-<P>The CUPS scheduler (cupsd) uses the
-<VAR>/etc/cups/subscriptions.conf</VAR> file  to store the list
-of active subscriptions. Each directive is listed on a line by
-itself followed by its value.  Comments are introduced using the
-number sign ("#") character at the beginning of a line.
-
-<P>While the subscriptions configuration file consists of plain
-text and can be modified using your favorite text editor, you
-should normally use the command-line programs (<A
-HREF="man-lp.html">lp(1)</A> and <A
-HREF="man-lpr.html">lpr(1)</A>) or specific applications via IPP
-requests to manage your subscriptions.</P>
-
-<H2 CLASS="title"><A NAME="Events">Events</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
-  ...
-  Events job-completed
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Events</CODE> directive lists the events, separated
-by spaces, that the subscriber is interested in. Table 1 lists
-the supported event names.</P>
-
-<P>The <CODE>Events</CODE> directive must appear inside a <A
-HREF="#Subscription"><CODE>Subscription</CODE></A> section.</P>
-
-<DIV CLASS="table"><TABLE SUMMARY="Event Names">
-<CAPTION>Table 1: <A NAME="TABLE1">Event Names</A></CAPTION>
-<THEAD>
-<TR>
-       <TH>Name</TH>
-       <TH>Description</TH>
-</TR>
-</THEAD>
-<TBODY>
-<TR>
-       <TD>all</TD>
-       <TD>All events</TD>
-</TR>
-<TR>
-       <TD>job-completed</TD>
-       <TD>Send notification when the job is completed</TD>
-</TR>
-<TR>
-       <TD>job-config-changed</TD>
-       <TD>Send notification when the job is changed</TD>
-</TR>
-<TR>
-       <TD>job-created</TD>
-       <TD>Send notification when a job is created</TD>
-</TR>
-<TR>
-       <TD>job-progress</TD>
-       <TD>Send notification for job progress</TD>
-</TR>
-<TR>
-       <TD>job-state-changed</TD>
-       <TD>Send notification when the job-state changes</TD>
-</TR>
-<TR>
-       <TD>job-stopped</TD>
-       <TD>Send notification when the job is stopped</TD>
-</TR>
-<TR>
-       <TD>printer-added</TD>
-       <TD>Send notification when a printer is added</TD>
-</TR>
-<TR>
-       <TD>printer-changed</TD>
-       <TD>Send notification when a printer is changed</TD>
-</TR>
-<TR>
-       <TD>printer-config-changed</TD>
-       <TD>Send notification when a printer's configuration is changed</TD>
-</TR>
-<TR>
-       <TD>printer-deleted</TD>
-       <TD>Send notification when a printer is deleted</TD>
-</TR>
-<TR>
-       <TD>printer-modified</TD>
-       <TD>Send notification when a printer is modified</TD>
-</TR>
-<TR>
-       <TD>printer-state-changed</TD>
-       <TD>Send notification when the printer-state changes</TD>
-</TR>
-<TR>
-       <TD>printer-stopped</TD>
-       <TD>Send notification when a printer is stopped</TD>
-</TR>
-<TR>
-       <TD>server-audit</TD>
-       <TD>Send notification when a bad request, security error, or
-       authentication error occurs</TD>
-</TR>
-<TR>
-       <TD>server-restarted</TD>
-       <TD>Send notification when the server is restarted</TD>
-</TR>
-<TR>
-       <TD>server-started</TD>
-       <TD>Send notification when the server is initially started</TD>
-</TR>
-<TR>
-       <TD>server-stopped</TD>
-       <TD>Send notification when the server is shutdown</TD>
-</TR>
-</TBODY>
-</TABLE></DIV>
-
-
-<H2 CLASS="title"><A NAME="ExpirationTime">ExpirationTime</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
-  ...
-  ExpirationTime 1012563145
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ExpirationTime</CODE> directive specifies the
-expiration time of the subscription as a UNIX time value. It is 0
-for subscriptions with no predefined expiration time.</P>
-
-<P>The <CODE>ExpirationTime</CODE> directive must appear inside a
-<A HREF="#Subscription"><CODE>Subscription</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="Interval">Interval</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
-  ...
-  Interval 30
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Interval</CODE> directive specifies the preferred
-time interval for event notifications in seconds.</P>
-
-<P>The <CODE>Interval</CODE> directive must appear inside a <A
-HREF="#Subscription"><CODE>Subscription</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="JobId">JobId</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
-  ...
-  JobId 123
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>JobId</CODE> directive specifies the
-<CODE>job-id</CODE> for job subscriptions.</P>
-
-<P>The <CODE>JobId</CODE> directive must appear inside a <A
-HREF="#Subscription"><CODE>Subscription</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="LeaseDuration">LeaseDuration</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
-  ...
-  LeaseDuration
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>LeaseDuration</CODE> directive specifies the number
-of seconds that the subscription is valid. A value of 0 means
-that the subscription will last forever or the life of the print
-job the subscription is attached to.</P>
-
-<P>The <CODE>LeaseDuration</CODE> directive must appear inside a <A
-HREF="#Subscription"><CODE>Subscription</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="NextEventId">NextEventId</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
-  ...
-  NextEventId 999
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>NextEventId</CODE> directive specifies the
-<CODE>notify-sequence-number</CODE> value for the next
-notification event. It starts at 1 and increases for every event
-that is delivered for the subscription.</P>
-
-<P>The <CODE>NextEventId</CODE> directive must appear inside a <A
-HREF="#Subscription"><CODE>Subscription</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="NextSubscriptionId">NextSubscriptionId</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-NextSubscriptionId 999
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>NextSubscriptionId</CODE> directive specifies the
-next subscription ID to use. It defaults to 1 more than the
-highest subscription number seen.</P>
-
-
-<H2 CLASS="title"><A NAME="Owner">Owner</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
-  ...
-  Owner username
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Owner</CODE> directive specifies the user that owns
-this subscription.</P>
-
-<P>The <CODE>Owner</CODE> directive must appear inside a <A
-HREF="#Subscription"><CODE>Subscription</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="PrinterName">PrinterName</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
-  ...
-  PrinterName name
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PrinterName</CODE> directive specifies the name of
-the printer or class that is associated with this
-subscription.</P>
-
-<P>The <CODE>PrinterName</CODE> directive must appear inside a <A
-HREF="#Subscription"><CODE>Subscription</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="Recipient">Recipient</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
-  ...
-  Recipient mailto:foo@domain.com
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Recipient</CODE> directive specifies the
-<CODE>notify-recipient-uri</CODE> value for push-type
-notifications. The URI scheme name determines which notifier
-program is used to send the event(s).</P>
-
-<P>The <CODE>Recipient</CODE> directive must appear inside a <A
-HREF="#Subscription"><CODE>Subscription</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="Subscription">Subscription</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
-  ...
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Subscription</CODE> section defines a single
-subscription in the system. Each subscription is assigned a
-unique (to the server) number starting at 1.</P>
-
-
-<H2 CLASS="title"><A NAME="UserData">UserData</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
-  ...
-  UserData mailto:bar&lt;40&gt;example.com
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>UserData</CODE> directive specifies the
-<CODE>notify-user-data</CODE> value, which is normally the "to"
-address used in <CODE>mailto</CODE> notifications. Binary values
-are introduced by encoding the bytes as hexadecimal values inside
-angle brackets, e.g. "&lt;1234&gt;".</P>
-
-<P>The <CODE>UserData</CODE> directive must appear inside a <A
-HREF="#Subscription"><CODE>Subscription</CODE></A> section.</P>
-
-</BODY>
-</HTML>
index 3bd5642536771b838a22ba0fb1228e1d31aba193..23455f4b42e0db2e9721307979689cfac3c2513b 100644 (file)
@@ -38,18 +38,6 @@ authentication:</P>
        username and password information - this is the default on
        MacOS X and systems with GNU TLS or OpenSSL installed.</P></LI>
 
-       <LI>Digest authentication uses an MD5 checksum of the
-       username, password, and domain ("CUPS"), so the original
-       username and password is not sent over the network.
-
-       <P>The current implementation does not authenticate the
-       entire message and uses the client's IP address for the
-       nonce value, making it possible to launch "man in the
-       middle" and replay attacks from the same client.</P>
-
-       <P><B>Recommendation:</B> Enable encryption to hide the
-       username and password information.</P></LI>
-
        <LI>Local certificate authentication passes 128-bit
        "certificates" that identify an authenticated user.
        Certificates are created on-the-fly from random data and
@@ -101,20 +89,6 @@ variety of denial of service attacks:</P>
 
        <P><B>Recommendation:</B> None.</P></LI>
 
-       <LI>Flooding the network with broadcast packets on port
-       631.
-
-       <P>It might be possible to disable browsing if this
-       condition is detected by the CUPS software, however if
-       there are large numbers of printers available on the
-       network such an algorithm might think that an attack was
-       occurring when instead a valid update was being
-       received.</P>
-
-       <P><B>Recommendation:</B> Block browse packets from
-       foreign or untrusted networks using a router or
-       firewall.</P></LI>
-
        <LI>Sending partial IPP requests; specifically, sending
        part of an attribute value and then stopping
        transmission.
@@ -146,27 +120,7 @@ variety of denial of service attacks:</P>
 
 <H2 CLASS="title"><A NAME="ENCRYPTION">Encryption Issues</A></H2>
 
-<P>CUPS supports 128-bit SSL 3.0 and TLS 1.0 encryption of
-network connections via the OpenSSL, GNU TLS, and CDSA encryption
-libraries. In additional to the potential security issues posed
-by the SSL and TLS protocols, CUPS currently has the following
-additional issue:</P>
-
-<OL>
-
-       <LI>Certification validation/revocation; currently CUPS
-       does not validate or revoke server or client certificates
-       when establishing a secure connection. This can
-       potentially lead to "man in the middle" and
-       impersonation/spoofing attacks over unsecured networks.
-       Future versions of CUPS will support both validation and
-       revocation of server certificates.
-
-       <P><B>Recommendation:</B> Do not depend on encryption for
-       security when connecting to servers over the Internet or
-       untrusted WAN links.</P></LI>
-
-</OL>
+<P>CUPS supports 128-bit TLS encryption of network connections via the GNU TLS library, OS X Security framework, and Windows SSPI APIs. Secure deployment of TLS depends on proper certificate management and software maintenance.</P>
 
 </BODY>
 </HTML>
diff --git a/doc/help/spec-browsing.html b/doc/help/spec-browsing.html
deleted file mode 100644 (file)
index e69de29..0000000
index 9b01233ce28cc9a90d677f94a4622ea3c14bda5b..4bbe7f0eefe0212d8123c047a0961b5eb371925b 100644 (file)
@@ -215,7 +215,7 @@ rpmbuild -ta cups-<I>version</I>-source.tar.gz
 
 <PRE CLASS="command">
 tools/testrpm
-sudo rpm -U /usr/src/redhat/RPMS/i386/cups*.rpm
+sudo rpm -U /usr/src/redhat/RPMS/{arm,i386,x64_64}/cups*.rpm
 
 sudo tools/testosx
 open cups.pkg
index 28a14eb31dd28b8b0e2da80db8e1ea682df8c608..4b1311a9ed60368ab6ae1dfd2077b2ef1e1a2a2a 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="ref-cupsd-conf.html">cupsd.conf</A>), available classes (<A HREF="ref-classes-conf.html">classes.conf</A>), available printers (<A HREF="ref-printers-conf.html">printers.conf</A>), current notification subscriptions (<A HREF="ref-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 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>
 
 <H4>Job Files</H4>
 
@@ -41,8 +41,8 @@ WIDTH="768" HEIGHT="768" ALT="CUPS Block Diagram"></TD></TR>
 
 <H4>Log Files</H4>
 
-<P>The scheduler keeps three kinds of log files which are normally stored in the <VAR>/var/log/cups</VAR> directory. The <A HREF="ref-access_log.html">access_log</A> file lists every HTTP and IPP request that is processed by the scheduler. The <A HREF="ref-error_log.html">error_log</A> file contains messages from the scheduler and its helper applications that can be used
-to track down problems. The <A HREF="ref-page_log.html">page_log</A> file lists every page that is printed, allowing for simple print accounting.</P>
+<P>The scheduler keeps three kinds of log files which are normally stored in the <VAR>/var/log/cups</VAR> directory. The <A HREF="man-cupsd-logs.html">access_log</A> file lists every HTTP and IPP request that is processed by the scheduler. The <A HREF="man-cupsd-logs.html">error_log</A> file contains messages from the scheduler and its helper applications that can be used
+to track down problems. The <A HREF="man-cupsd-logs.html">page_log</A> file lists every page that is printed, allowing for simple print accounting.</P>
 
 <P>Log files are rotated automatically by the scheduler when they reach the configured size limit, by default 1MB. If the limit is set to 0 then no rotation is performed in the scheduler - this mode is often used by Linux distributions so they can use the <B>logrotated(8)</B> program to rotate them instead.</P>
 
index e06270c184d4ee7b8af14a88af16332469556103..3a9fd6cfa1dee77cc73b40f85ada0d13353864a1 100644 (file)
@@ -12,7 +12,7 @@
 
   CUPS IPP specification for CUPS.
 
-  Copyright 2007-2012 by Apple Inc.
+  Copyright 2007-2013 by Apple Inc.
   Copyright 1997-2007 by Easy Software Products.
 
   These coded instructions, statements, and computer programs are the
@@ -369,7 +369,8 @@ Print-Job request:
 
        <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>
+       <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.
@@ -476,7 +477,8 @@ Create-Job request:
 
        <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>
+       <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.
@@ -2169,6 +2171,12 @@ document (fit-to-page=false). The default value is false.
 <p>The job-billing attribute provides a text value to associate with a job
 for billing purposes.
 
+<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>
+
+<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
index 407f47887f990734898612de497c3646f217cee4..7276c908a487959ce6c83016c749f1755f6db56b 100644 (file)
@@ -9,16 +9,7 @@
 
 <H1 CLASS="title">CUPS PDF Format</H1>
 
-<P>CUPS PDF files (application/vnd.cups-pdf) are device-dependent
-PDF/A files that contain a job ticket information. These files
-are typically produced by the CUPS <CODE>pdftopdf</CODE> filter
-which handles job ticket generation, imposition, page labeling,
-scaling, and other formatting options requested by the user. CUPS
-PDF files are intended for direct consumption by a PDF-capable
-printer, PDF RIP, or the <CODE>pdftops</CODE> filter.</P>
-
-<P>More information will be posted here as the PDF workflow
-filters are added to CUPS.</P>
+<P>CUPS PDF files (application/vnd.cups-pdf) are device-dependent PDF files that contain a job ticket information.</P>
 
 </BODY>
 </HTML>
index 5853ede5faec924e35cef1d9347e0bc822a25658..4cdb4721a6bd0e861aaa37e579e963b231bc386c 100644 (file)
@@ -38,7 +38,19 @@ 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;
@@ -77,7 +89,7 @@ A:link:hover IMG {
 }
 
 A:link, A:visited {
-  font-weight: normal;
+  font-weight: inherit;
   text-decoration: none;
 }
 
diff --git a/doc/help/whatsnew.html b/doc/help/whatsnew.html
deleted file mode 100644 (file)
index 24e630e..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<HTML>
-<!-- SECTION: Getting Started -->
-<HEAD>
-       <TITLE>What's New in CUPS 1.7</TITLE>
-       <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">What's New in CUPS 1.7</H1>
-
-<P>This page provides a high-level outline of the changes in CUPS 1.7. If you have never used CUPS before, read the <A HREF="overview.html">"Overview of CUPS"</A> document instead.</P>
-
-<P>CUPS 1.7 is primarily a "polish" release. Users will appreciate improved support for paid, PIN, and release printing, as well as expanded support for printers conforming to the <a href="http://www.pwg.org/ipp/everywhere.html">IPP Everywhere</a> specification. Full support for this functionality depends on additional software from your operating system vendor.</p>
-
-<P>When supported by the printer or the remote server, CUPS now compresses print data sent over the network to greatly improve print speed and reduce bandwidth usage. This happens automatically when printing through IPP and is available as an option when using the <code>ipptool</code> utility.</P>
-
-<P>Developers can now enumerate supported sizes and option values, as well as query a printer to discovery which media is loaded, making it possible to easily build customized user interfaces without the use of printer drivers or PPD files.</P>
-
-</BODY>
-</HTML>
index 7636372462ec5ce6f8d9813489e937a9d8ed989a..c94db2d9a4045e6b64e16b83413de6a3e3051135 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;Home&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;Administration&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;Online&nbsp;Help&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;Jobs&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;Printers&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-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 is the standards-based, open source printing system developed by
-<A HREF="http://www.apple.com/">Apple Inc.</A> for OS<SUP>&reg;</SUP> X and
-other UNIX<SUP>&reg;</SUP>-like operating systems.</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 for Users</H2>
-
-<P><A HREF="help/overview.html">Overview of CUPS</A></P>
-
-<P><A HREF="help/options.html">Command-Line Printing and Options</A></P>
-
-<P><A HREF="help/whatsnew.html">What's New in CUPS 1.7</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups">User Forum</A></P>
-
-</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
-
-<H2>CUPS for Administrators</H2>
-
-<P><A HREF="admin">Adding Printers and Classes</A></P>
-
-<P><A HREF="help/policies.html">Managing Operation Policies</A></P>
-
-<P><A HREF="help/accounting.html">Printer Accounting Basics</A></P>
-
-<P><A HREF="help/security.html">Server Security</A></P>
-
-<P><A HREF="help/kerberos.html">Using Kerberos Authentication</A></P>
-
-<P><A HREF="help/network.html">Using Network Printers</A></P>
-
-<P><A HREF="help/ref-cupsd-conf.html">cupsd.conf Reference</A></P>
-
-</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
-
-<H2>CUPS for Developers</H2>
-
-<P><A HREF="help/api-overview.html">Introduction to CUPS Programming</A></P>
-
-<P><A HREF="help/api-cups.html">CUPS API</A></P>
-
-<P><A HREF="help/api-filter.html">Filter and Backend Programming</A></P>
-
-<P><A HREF="help/api-httpipp.html">HTTP and IPP APIs</A></P>
-
-<P><A HREF="help/api-ppd.html">PPD API</A></P>
-
-<P><A HREF="help/api-raster.html">Raster API</A></P>
-
-<P><A HREF="help/ref-ppdcfile.html">PPD Compiler Driver Information File Reference</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Developer Forum</A></P>
-
-</TD></TR>
-</TABLE>
-
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS and the CUPS logo are trademarks of
-<A HREF="http://www.apple.com">Apple Inc.</A> Copyright 2007-2014 Apple
-Inc. All rights reserved.</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>Home - 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="/">Home</a></li>
+       <li><a href="/admin">Administration</a></li>
+       <li><a href="/classes/">Classes</a></li>
+       <li><a href="/help/">Help</a></li>
+       <li><a href="/jobs/">Jobs</a></li>
+       <li><a href="/printers/">Printers</a></li>
+      </ul>
+    </div>
+    <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>
+      </div>
+      <div class="row">
+       <div class="thirds">
+         <h2>CUPS for Users</h2>
+         <p><a href="help/overview.html">Overview of CUPS</a></p>
+         <p><a href="help/options.html">Command-Line Printing and Options</a></p>
+         <p><a href="http://www.cups.org/lists.php?LIST=cups">User Forum</a></p>
+       </div>
+       <div class="thirds">
+         <h2>CUPS for Administrators</h2>
+         <p><a href="admin">Adding Printers and Classes</a></p>
+         <p><a href="help/policies.html">Managing Operation Policies</a></p>
+         <p><a href="help/network.html">Using Network Printers</a></p>
+         <p><a href="help/man-cupsd.conf.html">cupsd.conf Reference</a></p>
+       </div>
+       <div class="thirds">
+         <h2>CUPS for Developers</h2>
+         <p><a href="help/api-overview.html">Introduction to CUPS Programming</a></p>
+         <p><a href="help/api-cups.html">CUPS API</a></p>
+         <p><a href="help/api-filter.html">Filter and Backend Programming</a></p>
+         <p><a href="help/api-httpipp.html">HTTP and IPP APIs</a></p>
+         <p><a href="http://www.cups.org/lists.php?LIST=cups-devel">Developer Forum</a></p>
+       </div>
+      </div>
+    </div>
+    <div class="footer">CUPS and the CUPS logo are trademarks of <a href="http://www.apple.com">Apple Inc.</a> Copyright &copy; 2007-2014 Apple Inc. All rights reserved.</div>
+  </body>
+</html>
diff --git a/doc/it/index.html.in b/doc/it/index.html.in
deleted file mode 100644 (file)
index d17bc84..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-<!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;Home&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;Amministrazione&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/classes/">&nbsp;&nbsp;Classi&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/help/">&nbsp;&nbsp;Guida&nbsp;in&nbsp;linea&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;Stampe&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;Stampanti&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Cerca aiuto"
-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 è il sistema di stampa open source, basato su degli standard, sviluppato da
-<A HREF="http://www.apple.com/">Apple Inc.</A> per OS<SUP>&reg;</SUP> X e
-per gli altri sistemi operativi UNIX<SUP>&reg;</SUP>-like.</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 per gli utenti</H2>
-
-<P><A HREF="help/overview.html">Presentazione di CUPS</A></P>
-
-<P><A HREF="help/options.html">Stampare da riga di comando ed opzioni</A></P>
-
-<P><A HREF="help/whatsnew.html">Le novità introdotte da CUPS 1.7</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Forum dell'utente</A></P>
-
-</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
-
-<H2>CUPS per gli amministratori</H2>
-
-<P><A HREF="admin">Aggiungere stampanti e classi</A></P>
-
-<P><A HREF="help/policies.html">Gestire le policy</A></P>
-
-<P><A HREF="help/accounting.html">Nozioni di base sulla gestione delle stampanti</A></P>
-
-<P><A HREF="help/security.html">Sicurezza del server</A></P>
-
-<P><A HREF="help/kerberos.html">Usare l'autenticazione Kerberos</A></P>
-
-<P><A HREF="help/network.html">Usare le stampanti di rete</A></P>
-
-<P><A HREF="help/ref-cupsd-conf.html">Riferimenti a cupsd.conf</A></P>
-
-</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
-
-<H2>CUPS per gli sviluppatori</H2>
-
-<P><A HREF="help/api-overview.html">Introduzione alla programmazione di CUPS</A></P>
-
-<P><A HREF="help/api-cups.html">Le API di CUPS</A></P>
-
-<P><A HREF="help/api-filter.html">Programmazione dei filtri e dei backend</A></P>
-
-<P><A HREF="help/api-httpipp.html">Le API HTTP e IPP</A></P>
-
-<P><A HREF="help/api-ppd.html">Le API PPD</A></P>
-
-<P><A HREF="help/api-raster.html">Le API Raster</A></P>
-
-<P><A HREF="help/ref-ppdcfile.html">File di riferimento del compilatore di driver PPD</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Forum dello sviluppatore</A></P>
-
-</TD></TR>
-</TABLE>
-
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS e il logo di CUPS sono marchi registrati da
-<A HREF="http://www.apple.com">Apple Inc.</A> Copyright 2007-2014 Apple
-Inc. Tutti i diritti sono riservati.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/doc/ja/index.html.in b/doc/ja/index.html.in
deleted file mode 100644 (file)
index e2ccad3..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-<!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>ホーム - CUPS 1.6</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;ホーム&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;管理&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/classes/">&nbsp;&nbsp;クラス&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/help/">&nbsp;&nbsp;ヘルプ&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;ジョブ&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;プリンター&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-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 は、OS<SUP>&reg;</SUP> X およびその他の UNIX <SUP>&reg;</SUP> 系 OS のために、
-<A HREF="http://www.apple.com/">Apple Inc.</A>
-によって開発された標準ベースのオープンソース印刷システムです。</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>ユーザー向け</H2>
-
-<P><A HREF="help/overview.html">CUPS の概要</A></P>
-
-<P><A HREF="help/options.html">コマンドラインからの印刷とオプション</A></P>
-
-<P><A HREF="help/whatsnew.html">CUPS 1.6 の新機能</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups">ユーザーフォーラム</A></P>
-
-</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
-
-<H2>管理者向け</H2>
-
-<P><A HREF="admin">プリンターとクラスの追加</A></P>
-
-<P><A HREF="help/policies.html">操作ポリシーの管理について</A></P>
-
-<P><A HREF="help/accounting.html">プリンターアカウンティングの基本</A></P>
-
-<P><A HREF="help/security.html">サーバーのセキュリティー</A></P>
-
-<P><A HREF="help/kerberos.html">Kerberos 認証の使い方</A></P>
-
-<P><A HREF="help/network.html">ネットワークプリンターの使い方</A></P>
-
-<P><A HREF="help/ref-cupsd-conf.html">cupsd.conf リファレンス</A></P>
-
-</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
-
-<H2>開発者向け</H2>
-
-<P><A HREF="help/api-overview.html">CUPS プログラミングのイントロダクション</A></P>
-
-<P><A HREF="help/api-cups.html">CUPS API</A></P>
-
-<P><A HREF="help/api-filter.html">フィルタとバックエンドのプログラミング</A></P>
-
-<P><A HREF="help/api-httpipp.html">HTTP と IPP の API</A></P>
-
-<P><A HREF="help/api-ppd.html">PPD API</A></P>
-
-<P><A HREF="help/api-raster.html">ラスター API</A></P>
-
-<P><A HREF="help/ref-ppdcfile.html">PPD コンパイラー用ドライバー情報ファイル リファレンス</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">開発者フォーラム</A></P>
-
-</TD></TR>
-</TABLE>
-
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS and the CUPS logo are trademarks of
-<A HREF="http://www.apple.com">Apple Inc.</A> CUPS is copyright 2007-2014 Apple
-Inc. All rights reserved.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/doc/pt_BR/index.html.in b/doc/pt_BR/index.html.in
deleted file mode 100644 (file)
index 949921e..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-<!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>
diff --git a/doc/ru/index.html.in b/doc/ru/index.html.in
deleted file mode 100644 (file)
index fa07ae8..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-<!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>Начало - 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;Начало&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;Администрирование&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/classes/">&nbsp;&nbsp;Группы&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/help/">&nbsp;&nbsp;Справка&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;Задания&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;Принтеры&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-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 — поддерживающая большинство стандартов, свободная подсистема печати, разрабатываемая компанией <A HREF="http://www.apple.com/">Apple Inc.</A> для операционной системы Mac OS<SUP>&reg;</SUP> X и других 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 для пользователей</H2>
-
-<P><A HREF="help/overview.html">Введение в CUPS</A></P>
-
-<P><A HREF="help/options.html">Печать из командной строки</A></P>
-
-<P><A HREF="help/whatsnew.html">Что нового в CUPS 1.6</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Форум пользователей</A></P>
-
-</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
-
-<H2>CUPS для администраторов</H2>
-
-<P><A HREF="admin">Добавление принтеров и групп</A></P>
-
-<P><A HREF="help/policies.html">Управление доступом</A></P>
-
-<P><A HREF="help/accounting.html">Использование ресурсов</A></P>
-
-<P><A HREF="help/security.html">Безопасность системы</A></P>
-
-<P><A HREF="help/kerberos.html">Использование аутентификации Kerberos</A></P>
-
-<P><A HREF="help/network.html">Использование сетевых принтеров</A></P>
-
-<P><A HREF="help/ref-cupsd-conf.html">Справочник по cupsd.conf</A></P>
-
-</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
-
-<H2>CUPS для разработчиков</H2>
-
-<P><A HREF="help/api-overview.html">Введение в разработку CUPS</A></P>
-
-<P><A HREF="help/api-cups.html">CUPS API</A></P>
-
-<P><A HREF="help/api-filter.html">Разработка фильтров и модулей</A></P>
-
-<P><A HREF="help/api-httpipp.html">API доступа по HTTP и IPP</A></P>
-
-<P><A HREF="help/api-ppd.html">PPD API</A></P>
-
-<P><A HREF="help/api-raster.html">Raster API</A></P>
-
-<P><A HREF="help/ref-ppdcfile.html">Справочник по компилятору PPD</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Форум разработчиков</A></P>
-
-</TD></TR>
-</TABLE>
-
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS а также логотип CUPS являются зарегистрированными торговыми марками <A HREF="http://www.apple.com">Apple Inc.</A> Авторские права на CUPS принадлежат (2007-2014) компании Apple Inc. Все права защищены.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
index 159135b85b4c199e8e0fee272af4c133bc8129b1..3087485a7f196cfa0971ba61231d1050fa5d486b 100644 (file)
@@ -1,61 +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/ppd.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h ../cups/ppd.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/ppd.h \
-  ../cups/debug-private.h ../cups/string-private.h ../config.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
 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/ppd.h \
-  ../cups/debug-private.h ../cups/string-private.h ../config.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
 commandtops.o: commandtops.c ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/sidechannel.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
 gziptoany.o: gziptoany.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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
 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/ppd.h
+  ../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
+  ../cups/ppd.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/ppd.h \
-  ../cups/language-private.h ../cups/transcode.h
+  ../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
+  ../cups/ppd.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/ppd.h
+  ../cups/array.h ../cups/language.h ../cups/pwg.h ../cups/ppd.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/ppd.h ../cups/string-private.h ../config.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/raster.h
+  ../cups/language.h ../cups/pwg.h ../cups/ppd.h \
+  ../cups/string-private.h ../config.h ../cups/language-private.h \
+  ../cups/transcode.h ../cups/raster.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/ppd.h ../cups/string-private.h ../config.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/raster.h
+  ../cups/language.h ../cups/pwg.h ../cups/ppd.h \
+  ../cups/string-private.h ../config.h ../cups/language-private.h \
+  ../cups/transcode.h ../cups/raster.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/ppd.h ../cups/string-private.h ../config.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/raster.h
+  ../cups/language.h ../cups/pwg.h ../cups/ppd.h \
+  ../cups/string-private.h ../config.h ../cups/language-private.h \
+  ../cups/transcode.h ../cups/raster.h
 rastertopwg.o: rastertopwg.c ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/raster.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
 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/ppd.h \
-  ../cups/debug-private.h ../cups/string-private.h ../config.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
index a75809c2477d68201d0faac665f4db8916d411f5..a5f0609ee1c2d378d0159104a33eb09e9919fc31 100644 (file)
@@ -1,26 +1,15 @@
 /*
- * "$Id: commandtops.c 3794 2012-04-23 22:44:16Z msweet $"
+ * "$Id: commandtops.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   PostScript command filter for CUPS.
+ * PostScript command filter for CUPS.
  *
- *   Copyright 2008-2012 by Apple Inc.
+ * Copyright 2008-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/".
- *
- *
- * Contents:
- *
- *   main()                 - Process a CUPS command file.
- *   auto_configure()       - Automatically configure the printer using
- *                            PostScript query commands and/or SNMP lookups.
- *   begin_ps()             - Send the standard PostScript prolog.
- *   end_ps()               - Send the standard PostScript trailer.
- *   print_self_test_page() - Print a self-test page.
- *   report_levels()        - Report supply levels.
+ * These coded instructions, statements, and computer programs 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/".
  */
 
 /*
@@ -309,9 +298,7 @@ auto_configure(ppd_file_t *ppd,             /* I - PPD file */
 
     bufptr    = buffer;
     buffer[0] = '\0';
-    while ((bytes = cupsBackChannelRead(bufptr,
-                                       sizeof(buffer) - (bufptr - buffer) - 1,
-                                       10.0)) > 0)
+    while ((bytes = cupsBackChannelRead(bufptr, sizeof(buffer) - (size_t)(bufptr - buffer) - 1, 10.0)) > 0)
     {
      /*
       * No newline at the end? Go on reading ...
@@ -534,5 +521,5 @@ report_levels(ppd_file_t *ppd,              /* I - PPD file */
 
 
 /*
- * End of "$Id: commandtops.c 3794 2012-04-23 22:44:16Z msweet $".
+ * End of "$Id: commandtops.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 2d52e781ccd7e8448f43dc60e1d31f0f94439c6c..73fb370b571f735784f5d0a3816792b4813e656a 100644 (file)
@@ -1,29 +1,18 @@
 /*
- * "$Id: common.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: common.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Common filter routines for CUPS.
+ * Common filter routines for CUPS.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   SetCommonOptions() - Set common filter options for media size,
- *                        etc.
- *   UpdatePageVars()   - Update the page variables for the orientation.
- *   WriteComment()     - Write a DSC comment.
- *   WriteCommon()      - Write common procedures...
- *   WriteLabelProlog() - Write the prolog with the classification
- *                        and page label.
- *   WriteLabels()      - Write the actual page labels.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -481,7 +470,7 @@ WriteTextComment(const char *name,  /* I - Comment name ("Title", etc.) */
   */
 
   printf("%%%%%s: (", name);
-  len = 5 + strlen(name);
+  len = 5 + (int)strlen(name);
 
   while (*value)
   {
@@ -531,5 +520,5 @@ WriteTextComment(const char *name,  /* I - Comment name ("Title", etc.) */
 
 
 /*
- * End of "$Id: common.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: common.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 994cfb86d9d5ed7a2ef989c4a1b032732d9a4a65..e062757a13c0963f444cfaeffdec68eddc3d43f5 100644 (file)
@@ -1,27 +1,18 @@
 /*
- * "$Id: error.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: error.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Raster error handling for CUPS.
+ * Raster error handling for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 2007 by Easy Software Products.
+ * Copyright 2007-2014 by Apple Inc.
+ * Copyright 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:
- *
- *   _cupsRasterAddError()   - Add an error message to the error buffer.
- *   _cupsRasterClearError() - Clear the error buffer.
- *   cupsRasterErrorString() - Return the last error from a raster function.
- *   get_error_buffer()      - Return a pointer to thread local storage.
- *   raster_init()           - Initialize error buffer once.
- *   raster_destructor()     - Free memory allocated by get_error_buffer().
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -62,7 +53,7 @@ _cupsRasterAddError(const char *f,    /* I - Printf-style error message */
                                        /* Error buffer */
   va_list      ap;                     /* Pointer to additional arguments */
   char         s[2048];                /* Message string */
-  size_t       bytes;                  /* Bytes in message string */
+  ssize_t      bytes;                  /* Bytes in message string */
 
 
   va_start(ap, f);
@@ -74,10 +65,10 @@ _cupsRasterAddError(const char *f,  /* I - Printf-style error message */
 
   bytes ++;
 
-  if (bytes >= sizeof(s))
+  if ((size_t)bytes >= sizeof(s))
     return;
 
-  if (bytes > (size_t)(buf->end - buf->current))
+  if (bytes > (ssize_t)(buf->end - buf->current))
   {
    /*
     * Allocate more memory...
@@ -87,7 +78,7 @@ _cupsRasterAddError(const char *f,    /* I - Printf-style error message */
     size_t     size;                   /* Size of buffer */
 
 
-    size = buf->end - buf->start + 2 * bytes + 1024;
+    size = (size_t)(buf->end - buf->start + 2 * bytes + 1024);
 
     if (buf->start)
       temp = realloc(buf->start, size);
@@ -110,7 +101,7 @@ _cupsRasterAddError(const char *f,  /* I - Printf-style error message */
   * Append the message to the end of the current string...
   */
 
-  memcpy(buf->current, s, bytes);
+  memcpy(buf->current, s, (size_t)bytes);
   buf->current += bytes - 1;
 }
 
@@ -167,8 +158,7 @@ cupsRasterErrorString(void)
  * Local globals...
  */
 
-static pthread_key_t   raster_key = -1;
-                                       /* Thread local storage key */
+static pthread_key_t   raster_key = 0; /* Thread local storage key */
 static pthread_once_t  raster_key_once = PTHREAD_ONCE_INIT;
                                        /* One-time initialization object */
 
@@ -282,5 +272,5 @@ get_error_buffer(void)
 
 
 /*
- * End of "$Id: error.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: error.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 81a3f17d80c24fca96c3b14ec26575941ba7bcd7..e8e1340d40a48b6f443a562ad8d5a8da77f26dd0 100644 (file)
@@ -1,22 +1,18 @@
 /*
- * "$Id: gziptoany.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: gziptoany.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   GZIP/raw pre-filter for CUPS.
+ * GZIP/raw pre-filter for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1993-2007 by Easy Software Products.
+ * Copyright 2007-2014 by Apple Inc.
+ * Copyright 1993-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() - Copy (and uncompress) files to stdout.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -36,7 +32,7 @@ main(int  argc,                               /* I - Number of command-line arguments */
 {
   cups_file_t  *fp;                    /* File */
   char         buffer[8192];           /* Data buffer */
-  int          bytes;                  /* Number of bytes read/written */
+  ssize_t      bytes;                  /* Number of bytes read/written */
   int          copies;                 /* Number of copies */
 
 
@@ -84,7 +80,7 @@ main(int  argc,                               /* I - Number of command-line arguments */
     cupsFileRewind(fp);
 
     while ((bytes = cupsFileRead(fp, buffer, sizeof(buffer))) > 0)
-      if (write(1, buffer, bytes) < bytes)
+      if (write(1, buffer, (size_t)bytes) < bytes)
       {
        _cupsLangPrintFilter(stderr, "ERROR",
                             _("Unable to write uncompressed print data: %s"),
@@ -108,5 +104,5 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
 
 /*
- * End of "$Id: gziptoany.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: gziptoany.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 03ed6658a7ef9dbec66e6fd464f2632c352e3b6e..f784fa09072204db3a4193484442fb03a3837416 100644 (file)
@@ -1,39 +1,18 @@
 /*
- * "$Id: interpret.c 11551 2014-01-29 16:31:35Z msweet $"
+ * "$Id: interpret.c 11848 2014-05-07 00:26:44Z msweet $"
  *
- *   PPD command interpreter for CUPS.
+ * PPD command interpreter for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1993-2007 by Easy Software Products.
+ * Copyright 2007-2014 by Apple Inc.
+ * Copyright 1993-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:
- *
- *   cupsRasterInterpretPPD() - Interpret PPD commands to create a page header.
- *   _cupsRasterExecPS()      - Execute PostScript code to initialize a page
- *                              header.
- *   cleartomark_stack()      - Clear to the last mark ([) on the stack.
- *   copy_stack()             - Copy the top N stack objects.
- *   delete_stack()           - Free memory used by a stack.
- *   error_object()           - Add an object's value to the current error
- *                              message.
- *   error_stack()            - Add a stack to the current error message.
- *   index_stack()            - Copy the Nth value on the stack.
- *   new_stack()              - Create a new stack.
- *   pop_stock()              - Pop the top object off the stack.
- *   push_stack()             - Push an object on the stack.
- *   roll_stack()             - Rotate stack objects.
- *   scan_ps()                - Scan a string for the next PS object.
- *   setpagedevice()          - Simulate the PostScript setpagedevice operator.
- *   DEBUG_object()           - Print an object value.
- *   DEBUG_stack()            - Print a stack.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -162,7 +141,8 @@ cupsRasterInterpretPPD(
   float                left,                   /* Left position */
                bottom,                 /* Bottom position */
                right,                  /* Right position */
-               top;                    /* Top position */
+               top,                    /* Top position */
+               temp1, temp2;           /* Temporary variables for swapping */
   int          preferred_bits;         /* Preferred bits per color */
 
 
@@ -189,7 +169,7 @@ cupsRasterInterpretPPD(
   h->PageSize[1]                 = 792;
   h->HWResolution[0]             = 100;
   h->HWResolution[1]             = 100;
-  h->cupsBitsPerColor            =  1;
+  h->cupsBitsPerColor            = 1;
   h->cupsColorOrder              = CUPS_ORDER_CHUNKED;
   h->cupsColorSpace              = CUPS_CSPACE_K;
   h->cupsBorderlessScalingFactor = 1.0f;
@@ -301,6 +281,67 @@ cupsRasterInterpretPPD(
     top    = 792.0f;
   }
 
+ /*
+  * Handle orientation...
+  */
+
+  switch (h->Orientation)
+  {
+    case CUPS_ORIENT_0 :
+    default :
+        /* Do nothing */
+        break;
+
+    case CUPS_ORIENT_90 :
+        temp1              = h->cupsPageSize[0];
+        h->cupsPageSize[0] = h->cupsPageSize[1];
+        h->cupsPageSize[1] = temp1;
+
+        temp1  = left;
+        temp2  = right;
+        left   = h->cupsPageSize[0] - top;
+        right  = h->cupsPageSize[0] - bottom;
+        bottom = h->cupsPageSize[1] - temp1;
+        top    = h->cupsPageSize[1] - temp2;
+        break;
+
+    case CUPS_ORIENT_180 :
+        temp1  = left;
+        temp2  = bottom;
+        left   = h->cupsPageSize[0] - right;
+        right  = h->cupsPageSize[0] - temp1;
+        bottom = h->cupsPageSize[1] - top;
+        top    = h->cupsPageSize[1] - temp2;
+        break;
+
+    case CUPS_ORIENT_270 :
+        temp1              = h->cupsPageSize[0];
+        h->cupsPageSize[0] = h->cupsPageSize[1];
+        h->cupsPageSize[1] = temp1;
+
+        temp1  = left;
+        temp2  = right;
+        left   = bottom;
+        right  = top;
+        bottom = h->cupsPageSize[1] - temp2;
+        top    = h->cupsPageSize[1] - temp1;
+        break;
+  }
+
+  if (left > right)
+  {
+    temp1 = left;
+    left  = right;
+    right = temp1;
+  }
+
+  if (bottom > top)
+  {
+    temp1  = bottom;
+    bottom = top;
+    top    = temp1;
+  }
+
   h->PageSize[0]           = (unsigned)(h->cupsPageSize[0] *
                                         h->cupsBorderlessScalingFactor);
   h->PageSize[1]           = (unsigned)(h->cupsPageSize[1] *
@@ -352,9 +393,9 @@ cupsRasterInterpretPPD(
   * Compute the bitmap parameters...
   */
 
-  h->cupsWidth  = (int)((right - left) * h->cupsBorderlessScalingFactor *
+  h->cupsWidth  = (unsigned)((right - left) * h->cupsBorderlessScalingFactor *
                         h->HWResolution[0] / 72.0f + 0.5f);
-  h->cupsHeight = (int)((top - bottom) * h->cupsBorderlessScalingFactor *
+  h->cupsHeight = (unsigned)((top - bottom) * h->cupsBorderlessScalingFactor *
                         h->HWResolution[1] / 72.0f + 0.5f);
 
   switch (h->cupsColorSpace)
@@ -906,7 +947,7 @@ push_stack(_cups_ps_stack_t *st,    /* I - Stack */
 
     st->alloc_objs += 32;
 
-    if ((temp = realloc(st->objs, st->alloc_objs *
+    if ((temp = realloc(st->objs, (size_t)st->alloc_objs *
                                   sizeof(_cups_ps_obj_t))) == NULL)
       return (NULL);
 
@@ -967,12 +1008,12 @@ roll_stack(_cups_ps_stack_t *st, /* I - Stack */
 
     s = -s;
 
-    if ((temp = calloc(s, sizeof(_cups_ps_obj_t))) == NULL)
+    if ((temp = calloc((size_t)s, sizeof(_cups_ps_obj_t))) == NULL)
       return (-1);
 
-    memcpy(temp, st->objs + n, s * sizeof(_cups_ps_obj_t));
-    memmove(st->objs + n, st->objs + n + s, (c - s) * sizeof(_cups_ps_obj_t));
-    memcpy(st->objs + n + c - s, temp, s * sizeof(_cups_ps_obj_t));
+    memcpy(temp, st->objs + n, (size_t)s * sizeof(_cups_ps_obj_t));
+    memmove(st->objs + n, st->objs + n + s, (size_t)(c - s) * sizeof(_cups_ps_obj_t));
+    memcpy(st->objs + n + c - s, temp, (size_t)s * sizeof(_cups_ps_obj_t));
   }
   else
   {
@@ -980,13 +1021,12 @@ roll_stack(_cups_ps_stack_t *st, /* I - Stack */
     * Shift up...
     */
 
-    if ((temp = calloc(s, sizeof(_cups_ps_obj_t))) == NULL)
+    if ((temp = calloc((size_t)s, sizeof(_cups_ps_obj_t))) == NULL)
       return (-1);
 
-    memcpy(temp, st->objs + n + c - s, s * sizeof(_cups_ps_obj_t));
-    memmove(st->objs + n + s, st->objs + n,
-            (c - s) * sizeof(_cups_ps_obj_t));
-    memcpy(st->objs + n, temp, s * sizeof(_cups_ps_obj_t));
+    memcpy(temp, st->objs + n + c - s, (size_t)s * sizeof(_cups_ps_obj_t));
+    memmove(st->objs + n + s, st->objs + n, (size_t)(c - s) * sizeof(_cups_ps_obj_t));
+    memcpy(st->objs + n, temp, (size_t)s * sizeof(_cups_ps_obj_t));
   }
 
   free(temp);
@@ -1105,7 +1145,7 @@ scan_ps(_cups_ps_stack_t *st,             /* I  - Stack */
                ch = (ch << 3) + *cur - '0';
              }
 
-             *valptr++ = ch;
+             *valptr++ = (char)ch;
            }
            else if (*cur == '\r')
            {
@@ -1182,7 +1222,7 @@ scan_ps(_cups_ps_stack_t *st,             /* I  - Stack */
                ch |= tolower(*cur) - 'a' + 10;
             }
 
-           *valptr++ = ch;
+           *valptr++ = (char)ch;
           }
 
           if (*cur != '>')
@@ -1686,5 +1726,5 @@ DEBUG_stack(_cups_ps_stack_t *st) /* I - Stack */
 
 
 /*
- * End of "$Id: interpret.c 11551 2014-01-29 16:31:35Z msweet $".
+ * End of "$Id: interpret.c 11848 2014-05-07 00:26:44Z msweet $".
  */
index 49a6fa542ded88e419d4ae0ec4ba1ec3b7a8b1fb..750d32259b95f686c3a2c9d0458fb09216ba3abd 100644 (file)
@@ -1,51 +1,18 @@
 /*
- * "$Id: pstops.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: pstops.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   PostScript filter for CUPS.
+ * PostScript filter for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1993-2007 by Easy Software Products.
+ * Copyright 2007-2014 by Apple Inc.
+ * Copyright 1993-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()               - Main entry.
- *   add_page()           - Add a page to the pages array.
- *   cancel_job()         - Flag the job as canceled.
- *   check_range()        - Check to see if the current page is selected for
- *                          printing.
- *   copy_bytes()         - Copy bytes from the input file to stdout.
- *   copy_comments()      - Copy all of the comments section.
- *   copy_dsc()           - Copy a DSC-conforming document.
- *   copy_non_dsc()       - Copy a document that does not conform to the DSC.
- *   copy_page()          - Copy a page description.
- *   copy_prolog()        - Copy the document prolog section.
- *   copy_setup()         - Copy the document setup section.
- *   copy_trailer()       - Copy the document trailer.
- *   do_prolog()          - Send the necessary document prolog commands.
- *   do_setup()           - Send the necessary document setup commands.
- *   doc_printf()         - Send a formatted string to stdout and/or the temp
- *                          file.
- *   doc_puts()           - Send a nul-terminated string to stdout and/or the
- *                          temp file.
- *   doc_write()          - Send data to stdout and/or the temp file.
- *   end_nup()            - End processing for N-up printing.
- *   include_feature()    - Include a printer option/feature command.
- *   parse_text()         - Parse a text value in a comment.
- *   set_pstops_options() - Set pstops options.
- *   skip_page()          - Skip past a page that won't be printed.
- *   start_nup()          - Start processing for N-up printing.
- *   write_label_prolog() - Write the prolog with the classification and page
- *                          label.
- *   write_labels()       - Write the actual page labels.
- *   write_options()      - Write options provided via %%IncludeFeature.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -236,7 +203,7 @@ main(int  argc,                             /* I - Number of command-line args */
   int          num_options;            /* Number of print options */
   cups_option_t        *options;               /* Print options */
   char         line[8192];             /* Line buffer */
-  size_t       len;                    /* Length of line buffer */
+  ssize_t      len;                    /* Length of line buffer */
 #if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
   struct sigaction action;             /* Actions for POSIX signals */
 #endif /* HAVE_SIGACTION && !HAVE_SIGSET */
@@ -306,7 +273,7 @@ main(int  argc,                             /* I - Number of command-line args */
   * Read the first line to see if we have DSC comments...
   */
 
-  if ((len = cupsFileGetLine(fp, line, sizeof(line))) == 0)
+  if ((len = (ssize_t)cupsFileGetLine(fp, line, sizeof(line))) == 0)
   {
     fputs("DEBUG: The print file is empty.\n", stderr);
     return (1);
@@ -355,13 +322,13 @@ main(int  argc,                           /* I - Number of command-line args */
     fputs("DEBUG: Skipping PJL header...\n", stderr);
 
     while (strstr(line, "ENTER LANGUAGE") == NULL && strncmp(line, "%!", 2))
-      if ((len = cupsFileGetLine(fp, line, sizeof(line))) == 0)
+      if ((len = (ssize_t)cupsFileGetLine(fp, line, sizeof(line))) == 0)
         break;
 
     if (!strncmp(line, "%!", 2))
       break;
 
-    if ((len = cupsFileGetLine(fp, line, sizeof(line))) == 0)
+    if ((len = (ssize_t)cupsFileGetLine(fp, line, sizeof(line))) == 0)
       break;
   }
 
@@ -511,11 +478,11 @@ check_range(pstops_doc_t *doc,            /* I - Document information */
     {
       lower = 1;
       range ++;
-      upper = strtol(range, (char **)&range, 10);
+      upper = (int)strtol(range, (char **)&range, 10);
     }
     else
     {
-      lower = strtol(range, (char **)&range, 10);
+      lower = (int)strtol(range, (char **)&range, 10);
 
       if (*range == '-')
       {
@@ -523,7 +490,7 @@ check_range(pstops_doc_t *doc,              /* I - Document information */
        if (!isdigit(*range & 255))
          upper = 65535;
        else
-         upper = strtol(range, (char **)&range, 10);
+         upper = (int)strtol(range, (char **)&range, 10);
       }
       else
         upper = lower;
@@ -569,14 +536,14 @@ copy_bytes(cups_file_t *fp,               /* I - File to read from */
     if (nleft > sizeof(buffer) || length == 0)
       nbytes = sizeof(buffer);
     else
-      nbytes = nleft;
+      nbytes = (ssize_t)nleft;
 
-    if ((nbytes = cupsFileRead(fp, buffer, nbytes)) < 1)
+    if ((nbytes = cupsFileRead(fp, buffer, (size_t)nbytes)) < 1)
       return;
 
-    nleft -= nbytes;
+    nleft -= (size_t)nbytes;
 
-    fwrite(buffer, 1, nbytes, stdout);
+    fwrite(buffer, 1, (size_t)nbytes, stdout);
   }
 }
 
@@ -741,13 +708,13 @@ copy_comments(cups_file_t  *fp,           /* I - File to read from */
     }
     else if (!strcmp(line, "%%EndComments"))
     {
-      linelen = cupsFileGetLine(fp, line, linesize);
+      linelen = (ssize_t)cupsFileGetLine(fp, line, linesize);
       break;
     }
     else if (strncmp(line, "%!", 2) && strncmp(line, "%cups", 5))
       doc_printf(doc, "%s\n", line);
 
-    if ((linelen = cupsFileGetLine(fp, line, linesize)) == 0)
+    if ((linelen = (ssize_t)cupsFileGetLine(fp, line, linesize)) == 0)
       break;
   }
 
@@ -860,9 +827,9 @@ copy_dsc(cups_file_t  *fp,          /* I - File to read from */
 
   while (strncmp(line, "%%Page:", 7) && strncmp(line, "%%Trailer", 9))
   {
-    doc_write(doc, line, linelen);
+    doc_write(doc, line, (size_t)linelen);
 
-    if ((linelen = cupsFileGetLine(fp, line, linesize)) == 0)
+    if ((linelen = (ssize_t)cupsFileGetLine(fp, line, linesize)) == 0)
       break;
   }
 
@@ -905,7 +872,7 @@ copy_dsc(cups_file_t  *fp,          /* I - File to read from */
     doc_puts(doc, "showpage\n");
     end_nup(doc, doc->number_up);
 
-    pageinfo->length = cupsFileTell(doc->temp) - pageinfo->offset;
+    pageinfo->length = (ssize_t)(cupsFileTell(doc->temp) - pageinfo->offset);
   }
 
   if (doc->slow_duplex && (doc->page & 1))
@@ -929,7 +896,7 @@ copy_dsc(cups_file_t  *fp,          /* I - File to read from */
     doc_puts(doc, "showpage\n");
     end_nup(doc, doc->number_up);
 
-    pageinfo->length = cupsFileTell(doc->temp) - pageinfo->offset;
+    pageinfo->length = (ssize_t)(cupsFileTell(doc->temp) - pageinfo->offset);
   }
 
  /*
@@ -1006,7 +973,7 @@ copy_dsc(cups_file_t  *fp,         /* I - File to read from */
       if (!number)
       {
         pageinfo = (pstops_page_t *)cupsArrayFirst(doc->pages);
-       copy_bytes(doc->temp, 0, pageinfo->offset);
+       copy_bytes(doc->temp, 0, (size_t)pageinfo->offset);
       }
 
      /*
@@ -1041,7 +1008,7 @@ copy_dsc(cups_file_t  *fp,                /* I - File to read from */
                 pageinfo->bounding_box[2], pageinfo->bounding_box[3]);
        }
 
-       copy_bytes(doc->temp, pageinfo->offset, pageinfo->length);
+       copy_bytes(doc->temp, pageinfo->offset, (size_t)pageinfo->length);
 
        pageinfo = doc->slow_order ? (pstops_page_t *)cupsArrayPrev(doc->pages) :
                                      (pstops_page_t *)cupsArrayNext(doc->pages);
@@ -1079,11 +1046,13 @@ copy_non_dsc(cups_file_t  *fp,          /* I - File to read from */
             ssize_t      linelen,      /* I - Length of initial line */
             size_t       linesize)     /* I - Size of line buffer */
 {
-  int  copy;                           /* Current copy */
-  char buffer[8192];                   /* Copy buffer */
-  int  bytes;                          /* Number of bytes copied */
+  int          copy;                   /* Current copy */
+  char         buffer[8192];           /* Copy buffer */
+  ssize_t      bytes;                  /* Number of bytes copied */
 
 
+  (void)linesize;
+
  /*
   * First let the user know that they are attempting to print a file
   * that may not print correctly...
@@ -1175,17 +1144,17 @@ copy_non_dsc(cups_file_t  *fp,          /* I - File to read from */
   puts("%%EndPageSetup");
   puts("%%BeginDocument: nondsc");
 
-  fwrite(line, linelen, 1, stdout);
+  fwrite(line, (size_t)linelen, 1, stdout);
 
   if (doc->temp)
-    cupsFileWrite(doc->temp, line, linelen);
+    cupsFileWrite(doc->temp, line, (size_t)linelen);
 
   while ((bytes = cupsFileRead(fp, buffer, sizeof(buffer))) > 0)
   {
-    fwrite(buffer, 1, bytes, stdout);
+    fwrite(buffer, 1, (size_t)bytes, stdout);
 
     if (doc->temp)
-      cupsFileWrite(doc->temp, buffer, bytes);
+      cupsFileWrite(doc->temp, buffer, (size_t)bytes);
   }
 
   puts("%%EndDocument");
@@ -1367,7 +1336,7 @@ copy_page(cups_file_t  *fp,               /* I - File to read from */
 
   memcpy(bounding_box, doc->bounding_box, sizeof(bounding_box));
 
-  while ((linelen = cupsFileGetLine(fp, line, linesize)) > 0)
+  while ((linelen = (ssize_t)cupsFileGetLine(fp, line, linesize)) > 0)
   {
     if (!strncmp(line, "%%PageBoundingBox:", 18))
     {
@@ -1400,24 +1369,24 @@ copy_page(cups_file_t  *fp,             /* I - File to read from */
         switch (Orientation)
        {
          case 1 : /* Landscape */
-             bounding_box[0] = PageLength - temp_bbox[3];
+             bounding_box[0] = (int)(PageLength - temp_bbox[3]);
              bounding_box[1] = temp_bbox[0];
-             bounding_box[2] = PageLength - temp_bbox[1];
+             bounding_box[2] = (int)(PageLength - temp_bbox[1]);
              bounding_box[3] = temp_bbox[2];
               break;
 
          case 2 : /* Reverse Portrait */
-             bounding_box[0] = PageWidth - temp_bbox[2];
-             bounding_box[1] = PageLength - temp_bbox[3];
-             bounding_box[2] = PageWidth - temp_bbox[0];
-             bounding_box[3] = PageLength - temp_bbox[1];
+             bounding_box[0] = (int)(PageWidth - temp_bbox[2]);
+             bounding_box[1] = (int)(PageLength - temp_bbox[3]);
+             bounding_box[2] = (int)(PageWidth - temp_bbox[0]);
+             bounding_box[3] = (int)(PageLength - temp_bbox[1]);
               break;
 
          case 3 : /* Reverse Landscape */
              bounding_box[0] = temp_bbox[1];
-             bounding_box[1] = PageWidth - temp_bbox[2];
+             bounding_box[1] = (int)(PageWidth - temp_bbox[2]);
              bounding_box[2] = temp_bbox[3];
-             bounding_box[3] = PageWidth - temp_bbox[0];
+             bounding_box[3] = (int)(PageWidth - temp_bbox[0]);
               break;
        }
 
@@ -1550,7 +1519,7 @@ copy_page(cups_file_t  *fp,               /* I - File to read from */
   {
     int        feature = 0;                    /* In a Begin/EndFeature block? */
 
-    while ((linelen = cupsFileGetLine(fp, line, linesize)) > 0)
+    while ((linelen = (ssize_t)cupsFileGetLine(fp, line, linesize)) > 0)
     {
       if (!strncmp(line, "%%EndPageSetup", 14))
        break;
@@ -1582,7 +1551,7 @@ copy_page(cups_file_t  *fp,               /* I - File to read from */
         break;
 
       if (!feature || (doc->number_up == 1 && !doc->fit_to_page))
-       doc_write(doc, line, linelen);
+       doc_write(doc, line, (size_t)linelen);
     }
 
    /*
@@ -1590,7 +1559,7 @@ copy_page(cups_file_t  *fp,               /* I - File to read from */
     */
 
     if (linelen > 0 && !strncmp(line, "%%EndPageSetup", 14))
-      linelen = cupsFileGetLine(fp, line, linesize);
+      linelen = (ssize_t)cupsFileGetLine(fp, line, linesize);
   }
 
   if (first_page)
@@ -1639,14 +1608,14 @@ copy_page(cups_file_t  *fp,             /* I - File to read from */
     else if (!strncmp(line, "%%BeginDocument", 15) ||
             !strncmp(line, "%ADO_BeginApplication", 21))
     {
-      doc_write(doc, line, linelen);
+      doc_write(doc, line, (size_t)linelen);
 
       level ++;
     }
     else if ((!strncmp(line, "%%EndDocument", 13) ||
              !strncmp(line, "%ADO_EndApplication", 19)) && level > 0)
     {
-      doc_write(doc, line, linelen);
+      doc_write(doc, line, (size_t)linelen);
 
       level --;
     }
@@ -1661,16 +1630,16 @@ copy_page(cups_file_t  *fp,             /* I - File to read from */
       int      bytes;                  /* Bytes of data */
 
 
-      doc_write(doc, line, linelen);
+      doc_write(doc, line, (size_t)linelen);
 
       bytes = atoi(strchr(line, ':') + 1);
 
       while (bytes > 0)
       {
-       if (bytes > linesize)
+       if ((size_t)bytes > linesize)
          linelen = cupsFileRead(fp, line, linesize);
        else
-         linelen = cupsFileRead(fp, line, bytes);
+         linelen = cupsFileRead(fp, line, (size_t)bytes);
 
        if (linelen < 1)
        {
@@ -1679,15 +1648,15 @@ copy_page(cups_file_t  *fp,             /* I - File to read from */
          return (0);
        }
 
-        doc_write(doc, line, linelen);
+        doc_write(doc, line, (size_t)linelen);
 
        bytes -= linelen;
       }
     }
     else
-      doc_write(doc, line, linelen);
+      doc_write(doc, line, (size_t)linelen);
   }
-  while ((linelen = cupsFileGetLine(fp, line, linesize)) > 0);
+  while ((linelen = (ssize_t)cupsFileGetLine(fp, line, linesize)) > 0);
 
  /*
   * Finish up this page and return...
@@ -1695,7 +1664,7 @@ copy_page(cups_file_t  *fp,               /* I - File to read from */
 
   end_nup(doc, number);
 
-  pageinfo->length = cupsFileTell(doc->temp) - pageinfo->offset;
+  pageinfo->length = (ssize_t)(cupsFileTell(doc->temp) - pageinfo->offset);
 
   return (linelen);
 }
@@ -1721,9 +1690,9 @@ copy_prolog(cups_file_t  *fp,             /* I - File to read from */
     if (!strncmp(line, "%%BeginSetup", 12) || !strncmp(line, "%%Page:", 7))
       break;
 
-    doc_write(doc, line, linelen);
+    doc_write(doc, line, (size_t)linelen);
 
-    if ((linelen = cupsFileGetLine(fp, line, linesize)) == 0)
+    if ((linelen = (ssize_t)cupsFileGetLine(fp, line, linesize)) == 0)
       break;
   }
 
@@ -1733,18 +1702,18 @@ copy_prolog(cups_file_t  *fp,           /* I - File to read from */
 
   if (!strncmp(line, "%%BeginProlog", 13))
   {
-    while ((linelen = cupsFileGetLine(fp, line, linesize)) > 0)
+    while ((linelen = (ssize_t)cupsFileGetLine(fp, line, linesize)) > 0)
     {
       if (!strncmp(line, "%%EndProlog", 11) ||
           !strncmp(line, "%%BeginSetup", 12) ||
           !strncmp(line, "%%Page:", 7))
         break;
 
-      doc_write(doc, line, linelen);
+      doc_write(doc, line, (size_t)linelen);
     }
 
     if (!strncmp(line, "%%EndProlog", 11))
-      linelen = cupsFileGetLine(fp, line, linesize);
+      linelen = (ssize_t)cupsFileGetLine(fp, line, linesize);
     else
       fputs("DEBUG: The %%EndProlog comment is missing.\n", stderr);
   }
@@ -1779,9 +1748,9 @@ copy_setup(cups_file_t  *fp,              /* I - File to read from */
     if (!strncmp(line, "%%Page:", 7))
       break;
 
-    doc_write(doc, line, linelen);
+    doc_write(doc, line, (size_t)linelen);
 
-    if ((linelen = cupsFileGetLine(fp, line, linesize)) == 0)
+    if ((linelen = (ssize_t)cupsFileGetLine(fp, line, linesize)) == 0)
       break;
   }
 
@@ -1808,14 +1777,14 @@ copy_setup(cups_file_t  *fp,            /* I - File to read from */
          num_options = include_feature(ppd, line, num_options, &options);
       }
       else if (strncmp(line, "%%BeginSetup", 12))
-        doc_write(doc, line, linelen);
+        doc_write(doc, line, (size_t)linelen);
 
-      if ((linelen = cupsFileGetLine(fp, line, linesize)) == 0)
+      if ((linelen = (ssize_t)cupsFileGetLine(fp, line, linesize)) == 0)
        break;
     }
 
     if (!strncmp(line, "%%EndSetup", 10))
-      linelen = cupsFileGetLine(fp, line, linesize);
+      linelen = (ssize_t)cupsFileGetLine(fp, line, linesize);
     else
       fputs("DEBUG: The %%EndSetup comment is missing.\n", stderr);
   }
@@ -1852,6 +1821,8 @@ copy_trailer(cups_file_t  *fp,            /* I - File to read from */
   * Write the trailer comments...
   */
 
+  (void)ppd;
+
   puts("%%Trailer");
 
   while (linelen > 0)
@@ -1861,9 +1832,9 @@ copy_trailer(cups_file_t  *fp,            /* I - File to read from */
     else if (strncmp(line, "%%Trailer", 9) &&
              strncmp(line, "%%Pages:", 8) &&
              strncmp(line, "%%BoundingBox:", 14))
-      fwrite(line, 1, linelen, stdout);
+      fwrite(line, 1, (size_t)linelen, stdout);
 
-    linelen = cupsFileGetLine(fp, line, linesize);
+    linelen = (ssize_t)cupsFileGetLine(fp, line, linesize);
   }
 
   fprintf(stderr, "DEBUG: Wrote %d pages...\n", number);
@@ -2045,21 +2016,21 @@ doc_printf(pstops_doc_t *doc,           /* I - Document information */
 {
   va_list      ap;                     /* Pointer to arguments */
   char         buffer[1024];           /* Output buffer */
-  size_t       bytes;                  /* Number of bytes to write */
+  ssize_t      bytes;                  /* Number of bytes to write */
 
 
   va_start(ap, format);
   bytes = vsnprintf(buffer, sizeof(buffer), format, ap);
   va_end(ap);
 
-  if (bytes > sizeof(buffer))
+  if ((size_t)bytes > sizeof(buffer))
   {
     _cupsLangPrintFilter(stderr, "ERROR",
                          _("Buffer overflow detected, aborting."));
     exit(1);
   }
 
-  doc_write(doc, buffer, bytes);
+  doc_write(doc, buffer, (size_t)bytes);
 }
 
 
@@ -2705,7 +2676,7 @@ skip_page(cups_file_t *fp,                /* I - File to read from */
 
   level = 0;
 
-  while ((linelen = cupsFileGetLine(fp, line, linesize)) > 0)
+  while ((linelen = (ssize_t)cupsFileGetLine(fp, line, linesize)) > 0)
   {
     if (level == 0 &&
         (!strncmp(line, "%%Page:", 7) || !strncmp(line, "%%Trailer", 9)))
@@ -2724,17 +2695,16 @@ skip_page(cups_file_t *fp,              /* I - File to read from */
       * Skip binary data...
       */
 
-      int      bytes;                  /* Bytes of data */
-
+      ssize_t  bytes;                  /* Bytes of data */
 
       bytes = atoi(strchr(line, ':') + 1);
 
       while (bytes > 0)
       {
-       if (bytes > linesize)
-         linelen = cupsFileRead(fp, line, linesize);
+       if ((size_t)bytes > linesize)
+         linelen = (ssize_t)cupsFileRead(fp, line, linesize);
        else
-         linelen = cupsFileRead(fp, line, bytes);
+         linelen = (ssize_t)cupsFileRead(fp, line, (size_t)bytes);
 
        if (linelen < 1)
        {
@@ -2764,15 +2734,15 @@ start_nup(pstops_doc_t *doc,            /* I - Document information */
 {
   int          pos;                    /* Position on page */
   int          x, y;                   /* Relative position of subpage */
-  float                w, l,                   /* Width and length of subpage */
+  double       w, l,                   /* Width and length of subpage */
                tx, ty;                 /* Translation values for subpage */
-  float                pagew,                  /* Printable width of page */
+  double       pagew,                  /* Printable width of page */
                pagel;                  /* Printable height of page */
   int          bboxx,                  /* BoundingBox X origin */
                bboxy,                  /* BoundingBox Y origin */
                bboxw,                  /* BoundingBox width */
                bboxl;                  /* BoundingBox height */
-  float                margin = 0;             /* Current margin for border */
+  double       margin = 0;             /* Current margin for border */
 
 
   if (doc->number_up > 1)
@@ -2793,8 +2763,8 @@ start_nup(pstops_doc_t *doc,              /* I - Document information */
   {
     bboxx = 0;
     bboxy = 0;
-    bboxw = PageWidth;
-    bboxl = PageLength;
+    bboxw = (int)PageWidth;
+    bboxl = (int)PageLength;
   }
 
   fprintf(stderr, "DEBUG: pagew = %.1f, pagel = %.1f\n", pagew, pagel);
@@ -3125,7 +3095,7 @@ start_nup(pstops_doc_t *doc,              /* I - Document information */
   if (doc->page_border && show_border)
   {
     int                rects;                  /* Number of border rectangles */
-    float      fscale;                 /* Scaling value for points */
+    double     fscale;                 /* Scaling value for points */
 
 
     rects  = (doc->page_border & PSTOPS_BORDERDOUBLE) ? 2 : 1;
@@ -3365,7 +3335,7 @@ write_options(
 {
   int          i;              /* Looping var */
   ppd_option_t *option;        /* PPD option */
-  int          min_order;      /* Minimum OrderDependency value */
+  float                min_order;      /* Minimum OrderDependency value */
   char         *doc_setup,     /* DocumentSetup commands to send */
                *any_setup;     /* AnySetup commands to send */
 
@@ -3430,5 +3400,5 @@ write_options(
 
 
 /*
- * End of "$Id: pstops.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: pstops.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 8dd76abe7b5a6f6960b7175ad442f952edb88385..8905a83d99b3188a73d4927f167e20f5f7c5cf3d 100644 (file)
@@ -1,44 +1,20 @@
 /*
- * "$Id: raster.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: raster.c 11594 2014-02-14 20:09:01Z msweet $"
  *
- *   Raster file routines for CUPS.
+ * Raster file routines for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 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.
- *
- * Contents:
- *
- *   cupsRasterClose()         - Close a raster stream.
- *   cupsRasterOpen()          - Open a raster stream using a file descriptor.
- *   cupsRasterOpenIO()        - Open a raster stream using a callback function.
- *   cupsRasterReadHeader()    - Read a raster page header and store it in a
- *                               version 1 page header structure.
- *   cupsRasterReadHeader2()   - Read a raster page header and store it in a
- *                               version 2 page header structure.
- *   cupsRasterReadPixels()    - Read raster pixels.
- *   cupsRasterWriteHeader()   - Write a raster page header from a version 1
- *                               page header structure.
- *   cupsRasterWriteHeader2()  - Write a raster page header from a version 2
- *                               page header structure.
- *   cupsRasterWritePixels()   - Write raster pixels.
- *   cups_raster_read_header() - Read a raster page header.
- *   cups_raster_read()        - Read through the raster buffer.
- *   cups_raster_update()      - Update the raster header and row count for the
- *                               current page.
- *   cups_raster_write()       - Write a row of compressed raster data...
- *   cups_read_fd()            - Read bytes from a file.
- *   cups_swap()               - Swap bytes in raster data...
- *   cups_write_fd()           - Write bytes to a file.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -62,7 +38,7 @@ struct _cups_raster_s                 /**** Raster stream data ****/
   cups_raster_iocb_t   iocb;           /* IO callback */
   cups_mode_t          mode;           /* Read/write mode */
   cups_page_header2_t  header;         /* Raster header for current page */
-  int                  count,          /* Current row run-length count */
+  unsigned             count,          /* Current row run-length count */
                        remaining,      /* Remaining rows in page image */
                        bpp;            /* Bytes per pixel/color */
   unsigned char                *pixels,        /* Pixels for current row */
@@ -81,15 +57,15 @@ struct _cups_raster_s                       /**** Raster stream data ****/
  * Local functions...
  */
 
-static int     cups_raster_io(cups_raster_t *r, unsigned char *buf, int bytes);
+static ssize_t cups_raster_io(cups_raster_t *r, unsigned char *buf, size_t bytes);
 static unsigned        cups_raster_read_header(cups_raster_t *r);
-static int     cups_raster_read(cups_raster_t *r, unsigned char *buf,
-                                int bytes);
+static ssize_t cups_raster_read(cups_raster_t *r, unsigned char *buf,
+                                size_t bytes);
 static void    cups_raster_update(cups_raster_t *r);
-static int     cups_raster_write(cups_raster_t *r,
+static ssize_t cups_raster_write(cups_raster_t *r,
                                  const unsigned char *pixels);
 static ssize_t cups_read_fd(void *ctx, unsigned char *buf, size_t bytes);
-static void    cups_swap(unsigned char *buf, int bytes);
+static void    cups_swap(unsigned char *buf, size_t bytes);
 static ssize_t cups_write_fd(void *ctx, unsigned char *buf, size_t bytes);
 
 
@@ -244,8 +220,7 @@ cupsRasterOpenIO(
          break;
     }
 
-    if (cups_raster_io(r, (unsigned char *)&(r->sync), sizeof(r->sync))
-            < sizeof(r->sync))
+    if (cups_raster_io(r, (unsigned char *)&(r->sync), sizeof(r->sync)) < (ssize_t)sizeof(r->sync))
     {
       _cupsRasterAddError("Unable to write raster stream header: %s\n",
                           strerror(errno));
@@ -335,13 +310,13 @@ cupsRasterReadPixels(cups_raster_t *r,    /* I - Raster stream */
                      unsigned char *p, /* I - Pointer to pixel buffer */
                     unsigned      len) /* I - Number of bytes to read */
 {
-  int          bytes;                  /* Bytes read */
+  ssize_t      bytes;                  /* Bytes read */
   unsigned     cupsBytesPerLine;       /* cupsBytesPerLine value */
   unsigned     remaining;              /* Bytes remaining */
   unsigned char        *ptr,                   /* Pointer to read buffer */
                byte,                   /* Byte from file */
                *temp;                  /* Pointer into buffer */
-  int          count;                  /* Repetition count */
+  unsigned     count;                  /* Repetition count */
 
 
   if (r == NULL || r->mode != CUPS_RASTER_READ || r->remaining == 0 ||
@@ -409,7 +384,7 @@ cupsRasterReadPixels(cups_raster_t *r,      /* I - Raster stream */
        ptr = r->pixels;
 
       temp  = ptr;
-      bytes = cupsBytesPerLine;
+      bytes = (ssize_t)cupsBytesPerLine;
 
       while (bytes > 0)
       {
@@ -426,10 +401,10 @@ cupsRasterReadPixels(cups_raster_t *r,    /* I - Raster stream */
          * Copy N literal pixels...
          */
 
-         count = (257 - byte) * r->bpp;
+         count = (unsigned)(257 - byte) * r->bpp;
 
-          if (count > bytes)
-           count = bytes;
+          if (count > (unsigned)bytes)
+           count = (unsigned)bytes;
 
           if (!cups_raster_read(r, temp, count))
            return (0);
@@ -444,8 +419,8 @@ cupsRasterReadPixels(cups_raster_t *r,      /* I - Raster stream */
          */
 
           count = (byte + 1) * r->bpp;
-          if (count > bytes)
-           count = bytes;
+          if (count > (unsigned)bytes)
+           count = (unsigned)bytes;
 
           if (count < r->bpp)
            break;
@@ -475,7 +450,7 @@ cupsRasterReadPixels(cups_raster_t *r,      /* I - Raster stream */
            r->header.cupsBitsPerPixel == 12 ||
            r->header.cupsBitsPerPixel == 16) &&
           r->swapped)
-        cups_swap(ptr, bytes);
+        cups_swap(ptr, (size_t)bytes);
 
      /*
       * Update pointers...
@@ -483,14 +458,14 @@ cupsRasterReadPixels(cups_raster_t *r,    /* I - Raster stream */
 
       if (remaining >= cupsBytesPerLine)
       {
-       bytes       = cupsBytesPerLine;
+       bytes       = (ssize_t)cupsBytesPerLine;
         r->pcurrent = r->pixels;
        r->count --;
        r->remaining --;
       }
       else
       {
-       bytes       = remaining;
+       bytes       = (ssize_t)remaining;
         r->pcurrent = r->pixels + bytes;
       }
 
@@ -499,7 +474,7 @@ cupsRasterReadPixels(cups_raster_t *r,      /* I - Raster stream */
       */
 
       if (ptr != p)
-        memcpy(p, ptr, bytes);
+        memcpy(p, ptr, (size_t)bytes);
     }
     else
     {
@@ -508,9 +483,9 @@ cupsRasterReadPixels(cups_raster_t *r,      /* I - Raster stream */
       */
 
       if ((unsigned)(bytes = (int)(r->pend - r->pcurrent)) > remaining)
-        bytes = remaining;
+        bytes = (ssize_t)remaining;
 
-      memcpy(p, r->pcurrent, bytes);
+      memcpy(p, r->pcurrent, (size_t)bytes);
       r->pcurrent += bytes;
 
       if (r->pcurrent >= r->pend)
@@ -521,7 +496,7 @@ cupsRasterReadPixels(cups_raster_t *r,      /* I - Raster stream */
       }
     }
 
-    remaining -= bytes;
+    remaining -= (unsigned)bytes;
     p         += bytes;
   }
 
@@ -755,7 +730,7 @@ cupsRasterWritePixels(cups_raster_t *r,     /* I - Raster stream */
                       unsigned char *p,        /* I - Bytes to write */
                      unsigned      len)/* I - Number of bytes to write */
 {
-  int          bytes;                  /* Bytes read */
+  ssize_t      bytes;                  /* Bytes read */
   unsigned     remaining;              /* Bytes remaining */
 
 
@@ -817,24 +792,24 @@ cupsRasterWritePixels(cups_raster_t *r,   /* I - Raster stream */
       * Write the byte-swapped buffer...
       */
 
-      return (cups_raster_io(r, r->buffer, len));
+      return ((unsigned)cups_raster_io(r, r->buffer, len));
     }
     else
-      return (cups_raster_io(r, p, len));
+      return ((unsigned)cups_raster_io(r, p, len));
   }
 
  /*
   * Otherwise, compress each line...
   */
 
-  for (remaining = len; remaining > 0; remaining -= bytes, p += bytes)
+  for (remaining = len; remaining > 0; remaining -= (unsigned)bytes, p += bytes)
   {
    /*
     * Figure out the number of remaining bytes on the current line...
     */
 
-    if ((bytes = remaining) > (int)(r->pend - r->pcurrent))
-      bytes = (int)(r->pend - r->pcurrent);
+    if ((bytes = (ssize_t)remaining) > (ssize_t)(r->pend - r->pcurrent))
+      bytes = (ssize_t)(r->pend - r->pcurrent);
 
     if (r->count > 0)
     {
@@ -842,7 +817,7 @@ cupsRasterWritePixels(cups_raster_t *r,     /* I - Raster stream */
       * Check to see if this line is the same as the previous line...
       */
 
-      if (memcmp(p, r->pcurrent, bytes))
+      if (memcmp(p, r->pcurrent, (size_t)bytes))
       {
         if (!cups_raster_write(r, r->pixels))
          return (0);
@@ -873,7 +848,7 @@ cupsRasterWritePixels(cups_raster_t *r,     /* I - Raster stream */
          r->remaining --;
 
          if (r->remaining == 0)
-           return (cups_raster_write(r, r->pixels));
+           return ((unsigned)cups_raster_write(r, r->pixels));
          else if (r->count == 256)
          {
            if (cups_raster_write(r, r->pixels) == 0)
@@ -893,7 +868,7 @@ cupsRasterWritePixels(cups_raster_t *r,     /* I - Raster stream */
       * Copy the raster data to the buffer...
       */
 
-      memcpy(r->pcurrent, p, bytes);
+      memcpy(r->pcurrent, p, (size_t)bytes);
 
       r->pcurrent += bytes;
 
@@ -913,7 +888,7 @@ cupsRasterWritePixels(cups_raster_t *r,     /* I - Raster stream */
        r->remaining --;
 
        if (r->remaining == 0)
-         return (cups_raster_write(r, r->pixels));
+         return ((unsigned)cups_raster_write(r, r->pixels));
       }
     }
   }
@@ -930,7 +905,7 @@ static unsigned                             /* O - 1 on success, 0 on fail */
 cups_raster_read_header(
     cups_raster_t *r)                  /* I - Raster stream */
 {
-  int  len;                            /* Length for read/swap */
+  size_t       len;                    /* Length for read/swap */
 
 
   if (r == NULL || r->mode != CUPS_RASTER_READ)
@@ -951,7 +926,7 @@ cups_raster_read_header(
 
   memset(&(r->header), 0, sizeof(r->header));
 
-  if (cups_raster_read(r, (unsigned char *)&(r->header), len) < len)
+  if (cups_raster_read(r, (unsigned char *)&(r->header), len) < (ssize_t)len)
     return (0);
 
  /*
@@ -996,20 +971,20 @@ cups_raster_read_header(
  * 'cups_raster_io()' - Read/write bytes from a context, handling interruptions.
  */
 
-static int                             /* O - Bytes read or -1 */
+static ssize_t                         /* O - Bytes read/write or -1 */
 cups_raster_io(cups_raster_t *r,       /* I - Raster stream */
-           unsigned char *buf,         /* I - Buffer for read/write */
-           int           bytes)                /* I - Number of bytes to read/write */
+               unsigned char *buf,     /* I - Buffer for read/write */
+               size_t        bytes)    /* I - Number of bytes to read/write */
 {
-  ssize_t      count;                  /* Number of bytes read/written */
-  size_t       total;                  /* Total bytes read/written */
+  ssize_t      count,                  /* Number of bytes read/written */
+               total;                  /* Total bytes read/written */
 
 
-  DEBUG_printf(("4cups_raster_io(r=%p, buf=%p, bytes=%d)", r, buf, bytes));
+  DEBUG_printf(("4cups_raster_io(r=%p, buf=%p, bytes=" CUPS_LLFMT ")", r, buf, CUPS_LLCAST bytes));
 
-  for (total = 0; total < (size_t)bytes; total += count, buf += count)
+  for (total = 0; total < (ssize_t)bytes; total += count, buf += count)
   {
-    count = (*r->iocb)(r->ctx, buf, bytes - total);
+    count = (*r->iocb)(r->ctx, buf, bytes - (size_t)total);
 
     DEBUG_printf(("5cups_raster_io: count=%d, total=%d", (int)count,
                   (int)total));
@@ -1019,7 +994,7 @@ cups_raster_io(cups_raster_t *r,   /* I - Raster stream */
       return (-1);
   }
 
-  return ((int)total);
+  return (total);
 }
 
 
@@ -1027,17 +1002,17 @@ cups_raster_io(cups_raster_t *r,        /* I - Raster stream */
  * 'cups_raster_read()' - Read through the raster buffer.
  */
 
-static int                             /* O - Number of bytes read */
+static ssize_t                         /* O - Number of bytes read */
 cups_raster_read(cups_raster_t *r,     /* I - Raster stream */
                  unsigned char *buf,   /* I - Buffer */
-                 int           bytes)  /* I - Number of bytes to read */
+                 size_t        bytes)  /* I - Number of bytes to read */
 {
-  int          count,                  /* Number of bytes read */
+  ssize_t      count,                  /* Number of bytes read */
                remaining,              /* Remaining bytes in buffer */
                total;                  /* Total bytes read */
 
 
-  DEBUG_printf(("cups_raster_read(r=%p, buf=%p, bytes=%d)\n", r, buf, bytes));
+  DEBUG_printf(("cups_raster_read(r=%p, buf=%p, bytes=" CUPS_LLFMT ")\n", r, buf, CUPS_LLCAST bytes));
 
   if (!r->compressed)
     return (cups_raster_io(r, buf, bytes));
@@ -1046,20 +1021,19 @@ cups_raster_read(cups_raster_t *r,      /* I - Raster stream */
   * Allocate a read buffer as needed...
   */
 
-  count = 2 * r->header.cupsBytesPerLine;
+  count = (ssize_t)(2 * r->header.cupsBytesPerLine);
 
   if ((size_t)count > r->bufsize)
   {
-    int offset = (int)(r->bufptr - r->buffer);
+    ssize_t offset = r->bufptr - r->buffer;
                                        /* Offset to current start of buffer */
-    int end = (int)(r->bufend - r->buffer);
-                                       /* Offset to current end of buffer */
+    ssize_t end = r->bufend - r->buffer;/* Offset to current end of buffer */
     unsigned char *rptr;               /* Pointer in read buffer */
 
     if (r->buffer)
-      rptr = realloc(r->buffer, count);
+      rptr = realloc(r->buffer, (size_t)count);
     else
-      rptr = malloc(count);
+      rptr = malloc((size_t)count);
 
     if (!rptr)
       return (0);
@@ -1067,7 +1041,7 @@ cups_raster_read(cups_raster_t *r,        /* I - Raster stream */
     r->buffer  = rptr;
     r->bufptr  = rptr + offset;
     r->bufend  = rptr + end;
-    r->bufsize = count;
+    r->bufsize = (size_t)count;
   }
 
  /*
@@ -1075,13 +1049,12 @@ cups_raster_read(cups_raster_t *r,      /* I - Raster stream */
   */
 
   for (total = 0, remaining = (int)(r->bufend - r->bufptr);
-       total < bytes;
+       total < (ssize_t)bytes;
        total += count, buf += count)
   {
-    count = bytes - total;
+    count = (ssize_t)bytes - total;
 
-    DEBUG_printf(("count=%d, remaining=%d, buf=%p, bufptr=%p, bufend=%p...\n",
-                  count, remaining, buf, r->bufptr, r->bufend));
+    DEBUG_printf(("count=" CUPS_LLFMT ", remaining=" CUPS_LLFMT ", buf=%p, bufptr=%p, bufend=%p...\n", CUPS_LLCAST count, CUPS_LLCAST remaining, buf, r->bufptr, r->bufend));
 
     if (remaining == 0)
     {
@@ -1104,7 +1077,7 @@ cups_raster_read(cups_raster_t *r,        /* I - Raster stream */
         * Read directly into "buf"...
        */
 
-       count = (*r->iocb)(r->ctx, buf, count);
+       count = (*r->iocb)(r->ctx, buf, (size_t)count);
 
        if (count <= 0)
          return (0);
@@ -1152,7 +1125,7 @@ cups_raster_read(cups_raster_t *r,        /* I - Raster stream */
       * Use memcpy() for a large read...
       */
 
-      memcpy(buf, r->bufptr, count);
+      memcpy(buf, r->bufptr, (size_t)count);
       r->bufptr += count;
       remaining -= count;
     }
@@ -1290,7 +1263,7 @@ cups_raster_update(cups_raster_t *r)      /* I - Raster stream */
  * 'cups_raster_write()' - Write a row of compressed raster data...
  */
 
-static int                             /* O - Number of bytes written */
+static ssize_t                         /* O - Number of bytes written */
 cups_raster_write(
     cups_raster_t       *r,            /* I - Raster stream */
     const unsigned char *pixels)       /* I - Pixel data to write */
@@ -1300,7 +1273,7 @@ cups_raster_write(
                        *pend,          /* End of raster buffer */
                        *plast;         /* Pointer to last pixel */
   unsigned char                *wptr;          /* Pointer into write buffer */
-  int                  bpp,            /* Bytes per pixel */
+  unsigned             bpp,            /* Bytes per pixel */
                        count;          /* Count */
 
 
@@ -1333,7 +1306,7 @@ cups_raster_write(
   pend    = pixels + r->header.cupsBytesPerLine;
   plast   = pend - bpp;
   wptr    = r->buffer;
-  *wptr++ = r->count - 1;
+  *wptr++ = (unsigned char)(r->count - 1);
 
  /*
   * Write using a modified PackBits compression...
@@ -1364,7 +1337,7 @@ cups_raster_write(
         if (memcmp(ptr, ptr + bpp, bpp))
          break;
 
-      *wptr++ = count - 1;
+      *wptr++ = (unsigned char)(count - 1);
       for (count = bpp; count > 0; count --)
         *wptr++ = *ptr++;
     }
@@ -1384,7 +1357,7 @@ cups_raster_write(
        ptr += bpp;
       }
 
-      *wptr++ = 257 - count;
+      *wptr++ = (unsigned char)(257 - count);
 
       count *= bpp;
       memcpy(wptr, start, count);
@@ -1392,7 +1365,7 @@ cups_raster_write(
     }
   }
 
-  return (cups_raster_io(r, r->buffer, (int)(wptr - r->buffer)));
+  return (cups_raster_io(r, r->buffer, (size_t)(wptr - r->buffer)));
 }
 
 
@@ -1428,7 +1401,7 @@ cups_read_fd(void          *ctx,  /* I - File descriptor as pointer */
 
 static void
 cups_swap(unsigned char *buf,          /* I - Buffer to swap */
-          int           bytes)         /* I - Number of bytes to swap */
+          size_t        bytes)         /* I - Number of bytes to swap */
 {
   unsigned char        even, odd;              /* Temporary variables */
 
@@ -1475,5 +1448,5 @@ cups_write_fd(void          *ctx, /* I - File descriptor pointer */
 
 
 /*
- * End of "$Id: raster.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: raster.c 11594 2014-02-14 20:09:01Z msweet $".
  */
index eacbd0eecd480f63594aece2628a10a01d0f3b4c..56d2778bee5dc5ad64d6635ae50dff4d50910d33 100644 (file)
@@ -1,25 +1,18 @@
 /*
- * "$Id: rasterbench.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: rasterbench.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Raster benchmark program for CUPS.
+ * Raster benchmark program for CUPS.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 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()           - Benchmark the raster read/write functions.
- *   compute_median() - Compute the median time for a test.
- *   read_test()      - Benchmark the raster read functions.
- *   write_test()     - Benchmark the raster write functions.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -181,7 +174,7 @@ get_time(void)
 static void
 read_test(int fd)                      /* I - File descriptor to read from */
 {
-  int                  y;              /* Looping var */
+  unsigned             y;              /* Looping var */
   cups_raster_t                *r;             /* Raster stream */
   cups_page_header2_t  header;         /* Page header */
   unsigned char                buffer[8 * TEST_WIDTH];
@@ -263,8 +256,8 @@ static void
 write_test(int         fd,             /* I - File descriptor to write to */
            cups_mode_t mode)           /* I - Write mode */
 {
-  int                  page, x, y;     /* Looping vars */
-  int                  count;          /* Number of bytes to set */
+  unsigned             page, x, y;     /* Looping vars */
+  unsigned             count;          /* Number of bytes to set */
   cups_raster_t                *r;             /* Raster stream */
   cups_page_header2_t  header;         /* Page header */
   unsigned char                data[32][8 * TEST_WIDTH];
@@ -295,7 +288,7 @@ write_test(int         fd,          /* I - File descriptor to write to */
          break;
       }
 
-      data[y][x] = CUPS_RAND();
+      data[y][x] = (unsigned char)CUPS_RAND();
     }
   }
 
@@ -351,5 +344,5 @@ write_test(int         fd,          /* I - File descriptor to write to */
 
 
 /*
- * End of "$Id: rasterbench.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: rasterbench.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index e53acabfc3b308c79511326abd208802f769f376..908ec4852744e88f0860beba6f7dd17c85b0e2f3 100644 (file)
@@ -1,28 +1,18 @@
 /*
- * "$Id: rastertoepson.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: rastertoepson.c 11594 2014-02-14 20:09:01Z msweet $"
  *
- *   EPSON ESC/P and ESC/P2 filter for CUPS.
+ * EPSON ESC/P and ESC/P2 filter for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1993-2007 by Easy Software Products.
+ * Copyright 2007-2014 by Apple Inc.
+ * Copyright 1993-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:
- *
- *   Setup()        - Prepare the printer for printing.
- *   StartPage()    - Start a page of graphics.
- *   EndPage()      - Finish a page of graphics.
- *   Shutdown()     - Shutdown the printer.
- *   CompressData() - Compress a line of graphics.
- *   OutputLine()   - Output a line of graphics.
- *   main()         - Main entry and processing of driver.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -66,17 +56,17 @@ unsigned char       *Planes[6],             /* Output buffers */
                *CompBuffer,            /* Compression buffer */
                *LineBuffers[2];        /* Line bitmap buffers */
 int            Model,                  /* Model number */
-               NumPlanes,              /* Number of color planes */
+               EjectPage,              /* Eject the page when done? */
+               Shingling,              /* Shingle output? */
+               Canceled;               /* Has the current job been canceled? */
+unsigned       NumPlanes,              /* Number of color planes */
                Feed,                   /* Number of lines to skip */
-               EjectPage;              /* Eject the page when done? */
-int            DotBit,                 /* Bit in buffers */
+               DotBit,                 /* Bit in buffers */
                DotBytes,               /* # bytes in a dot column */
                DotColumns,             /* # columns in 1/60 inch */
                LineCount,              /* # of lines processed */
                EvenOffset,             /* Offset into 'even' buffers */
-               OddOffset,              /* Offset into 'odd' buffers */
-               Shingling,              /* Shingle output? */
-               Canceled;               /* Has the current job been canceled? */
+               OddOffset;              /* Offset into 'odd' buffers */
 
 
 /*
@@ -89,8 +79,8 @@ void  EndPage(const cups_page_header2_t *header);
 void   Shutdown(void);
 
 void   CancelJob(int sig);
-void   CompressData(const unsigned char *line, int length, int plane,
-                    int type, int xstep, int ystep);
+void   CompressData(const unsigned char *line, unsigned length, unsigned plane,
+                    unsigned type, unsigned xstep, unsigned ystep);
 void   OutputLine(const cups_page_header2_t *header);
 void   OutputRows(const cups_page_header2_t *header, int row);
 
@@ -125,8 +115,8 @@ StartPage(
     const ppd_file_t         *ppd,     /* I - PPD file */
     const cups_page_header2_t *header) /* I - Page header */
 {
-  int  n, t;                           /* Numbers */
-  int  plane;                          /* Looping var */
+  int          n, t;                   /* Numbers */
+  unsigned     plane;                  /* Looping var */
 
 
  /*
@@ -223,15 +213,14 @@ StartPage(
          putchar(0x05);
        }
 
-       n = header->PageSize[1] * header->HWResolution[1] / 72.0;
+       n = (int)(header->PageSize[1] * header->HWResolution[1] / 72.0);
 
        pwrite("\033(C\002\000", 5);            /* Page length */
        putchar(n);
        putchar(n >> 8);
 
         if (ppd)
-         t = (ppd->sizes[1].length - ppd->sizes[1].top) *
-             header->HWResolution[1] / 72.0;
+         t = (int)((ppd->sizes[1].length - ppd->sizes[1].top) * header->HWResolution[1] / 72.0);
         else
          t = 0;
 
@@ -296,8 +285,7 @@ StartPage(
 
   if (DotBytes)
   {
-    if ((LineBuffers[0] = calloc(DotBytes,
-                                 header->cupsWidth * (Shingling + 1))) == NULL)
+    if ((LineBuffers[0] = calloc((size_t)DotBytes, header->cupsWidth * (size_t)(Shingling + 1))) == NULL)
     {
       fputs("ERROR: Unable to allocate memory\n", stderr);
       exit(1);
@@ -398,11 +386,11 @@ CancelJob(int sig)                        /* I - Signal */
 
 void
 CompressData(const unsigned char *line,        /* I - Data to compress */
-             int                 length,/* I - Number of bytes */
-            int                 plane, /* I - Color plane */
-            int                 type,  /* I - Type of compression */
-            int                 xstep, /* I - X resolution */
-            int                 ystep) /* I - Y resolution */
+             unsigned            length,/* I - Number of bytes */
+            unsigned            plane, /* I - Color plane */
+            unsigned            type,  /* I - Type of compression */
+            unsigned            xstep, /* I - X resolution */
+            unsigned            ystep) /* I - Y resolution */
 {
   const unsigned char  *line_ptr,      /* Current byte pointer */
                        *line_end,      /* End-of-line byte pointer */
@@ -509,7 +497,7 @@ CompressData(const unsigned char *line,     /* I - Data to compress */
               count ++;
            }
 
-           *comp_ptr++ = 257 - count;
+           *comp_ptr++ = (unsigned char)(257 - count);
            *comp_ptr++ = *line_ptr++;
          }
          else
@@ -530,9 +518,9 @@ CompressData(const unsigned char *line,     /* I - Data to compress */
               count ++;
            }
 
-           *comp_ptr++ = count - 1;
+           *comp_ptr++ = (unsigned char)(count - 1);
 
-           memcpy(comp_ptr, start, count);
+           memcpy(comp_ptr, start, (size_t)count);
            comp_ptr += count;
          }
        }
@@ -572,12 +560,12 @@ CompressData(const unsigned char *line,   /* I - Data to compress */
 
     length *= 8;
     printf("\033.");                   /* Raster graphics */
-    putchar(type);
-    putchar(ystep);
-    putchar(xstep);
+    putchar((int)type);
+    putchar((int)ystep);
+    putchar((int)xstep);
     putchar(1);
-    putchar(length);
-    putchar(length >> 8);
+    putchar((int)length);
+    putchar((int)(length >> 8));
   }
   else
   {
@@ -587,15 +575,15 @@ CompressData(const unsigned char *line,   /* I - Data to compress */
 
     printf("\033i");
     putchar(ctable[plane]);
-    putchar(type);
+    putchar((int)type);
     putchar(1);
-    putchar(length & 255);
-    putchar(length >> 8);
+    putchar((int)length);
+    putchar((int)(length >> 8));
     putchar(1);
     putchar(0);
   }
 
-  pwrite(line_ptr, line_end - line_ptr);
+  pwrite(line_ptr, (size_t)(line_end - line_ptr));
   fflush(stdout);
 }
 
@@ -610,11 +598,11 @@ OutputLine(
 {
   if (header->cupsRowCount)
   {
-    int                        width;
+    unsigned           width;
     unsigned char      *tempptr,
                        *evenptr,
                        *oddptr;
-    register int       x;
+    unsigned int       x;
     unsigned char      bit;
     const unsigned char        *pixel;
     unsigned char      *temp;
@@ -724,10 +712,9 @@ OutputLine(
   }
   else
   {
-    int        plane;          /* Current plane */
-    int        bytes;          /* Bytes per plane */
-    int        xstep, ystep;   /* X & Y resolutions */
-
+    unsigned   plane;          /* Current plane */
+    unsigned   bytes;          /* Bytes per plane */
+    unsigned   xstep, ystep;   /* X & Y resolutions */
 
    /*
     * Write a single line of bitmap data as needed...
@@ -744,7 +731,7 @@ OutputLine(
       */
 
       if (!Planes[plane][0] &&
-          memcmp(Planes[plane], Planes[plane] + 1, bytes - 1) == 0)
+          memcmp(Planes[plane], Planes[plane] + 1, (size_t)bytes - 1) == 0)
        continue;
 
      /*
@@ -754,14 +741,13 @@ OutputLine(
       if (Feed > 0)
       {
        pwrite("\033(v\002\000", 5);    /* Relative vertical position */
-       putchar(Feed);
-       putchar(Feed >> 8);
+       putchar((int)Feed);
+       putchar((int)(Feed >> 8));
 
        Feed = 0;
       }
 
-      CompressData(Planes[plane], bytes, plane, header->cupsCompression, xstep,
-                   ystep);
+      CompressData(Planes[plane], bytes, plane, header->cupsCompression, xstep, ystep);
     }
 
     Feed ++;
@@ -778,8 +764,8 @@ OutputRows(
     const cups_page_header2_t *header, /* I - Page image header */
     int                      row)      /* I - Row number (0 or 1) */
 {
-  unsigned     i, n;                   /* Looping vars */
-  int          dot_count,              /* Number of bytes to print */
+  unsigned     i, n,                   /* Looping vars */
+               dot_count,              /* Number of bytes to print */
                 dot_min;               /* Minimum number of bytes */
   unsigned char *dot_ptr,              /* Pointer to print data */
                *ptr;                   /* Current data */
@@ -788,8 +774,7 @@ OutputRows(
   dot_min = DotBytes * DotColumns;
 
   if (LineBuffers[row][0] != 0 ||
-      memcmp(LineBuffers[row], LineBuffers[row] + 1,
-             header->cupsWidth * DotBytes - 1))
+      memcmp(LineBuffers[row], LineBuffers[row] + 1, header->cupsWidth * DotBytes - 1))
   {
    /*
     * Skip leading space...
@@ -867,7 +852,7 @@ OutputRows(
           break;
     }
 
-    n = (unsigned)dot_count / DotBytes;
+    n = dot_count / DotBytes;
     putchar(n & 255);
     putchar(n / 256);
 
@@ -958,7 +943,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
   cups_page_header2_t  header;         /* Page header from file */
   ppd_file_t           *ppd;           /* PPD file */
   int                  page;           /* Current page */
-  int                  y;              /* Current line */
+  unsigned             y;              /* Current line */
 #if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
   struct sigaction action;             /* Actions for POSIX signals */
 #endif /* HAVE_SIGACTION && !HAVE_SIGSET */
@@ -1090,9 +1075,9 @@ main(int  argc,                           /* I - Number of command-line arguments */
       if ((y & 127) == 0)
       {
         _cupsLangPrintFilter(stderr, "INFO",
-                            _("Printing page %d, %d%% complete."),
+                            _("Printing page %d, %u%% complete."),
                             page, 100 * y / header.cupsHeight);
-        fprintf(stderr, "ATTR: job-media-progress=%d\n",
+        fprintf(stderr, "ATTR: job-media-progress=%u\n",
                100 * y / header.cupsHeight);
       }
 
@@ -1153,5 +1138,5 @@ main(int  argc,                           /* I - Number of command-line arguments */
 
 
 /*
- * End of "$Id: rastertoepson.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: rastertoepson.c 11594 2014-02-14 20:09:01Z msweet $".
  */
index 5efad593b09ccf9fc9b93c922a0b98d633b25004..c415b4f399f7418495398e3ec516f36d8b036eac 100644 (file)
@@ -1,29 +1,18 @@
 /*
- * "$Id: rastertohp.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: rastertohp.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Hewlett-Packard Page Control Language filter for CUPS.
+ * Hewlett-Packard Page Control Language filter for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1993-2007 by Easy Software Products.
+ * Copyright 2007-2014 by Apple Inc.
+ * Copyright 1993-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:
- *
- *   Setup()        - Prepare the printer for printing.
- *   StartPage()    - Start a page of graphics.
- *   EndPage()      - Finish a page of graphics.
- *   Shutdown()     - Shutdown the printer.
- *   CancelJob()    - Cancel the current job...
- *   CompressData() - Compress a line of graphics.
- *   OutputLine()   - Output a line of graphics.
- *   main()         - Main entry and processing of driver.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
 unsigned char  *Planes[4],             /* Output buffers */
                *CompBuffer,            /* Compression buffer */
                *BitBuffer;             /* Buffer for output bits */
-int            NumPlanes,              /* Number of color planes */
+unsigned       NumPlanes,              /* Number of color planes */
                ColorBits,              /* Number of bits per color */
-               Feed,                   /* Number of lines to skip */
-               Duplex,                 /* Current duplex mode */
+               Feed;                   /* Number of lines to skip */
+int            Duplex,                 /* Current duplex mode */
                Page,                   /* Current page number */
                Canceled;               /* Has the current job been canceled? */
 
@@ -65,7 +54,7 @@ void  EndPage(void);
 void   Shutdown(void);
 
 void   CancelJob(int sig);
-void   CompressData(unsigned char *line, int length, int plane, int type);
+void   CompressData(unsigned char *line, unsigned length, unsigned plane, unsigned type);
 void   OutputLine(cups_page_header2_t *header);
 
 
@@ -93,7 +82,7 @@ void
 StartPage(ppd_file_t         *ppd,     /* I - PPD file */
           cups_page_header2_t *header) /* I - Page header */
 {
-  int  plane;                          /* Looping var */
+  unsigned     plane;                  /* Looping var */
 
 
  /*
@@ -287,33 +276,33 @@ StartPage(ppd_file_t         *ppd,        /* I - PPD file */
 
     printf("\033*g26W");
     putchar(2);                                        /* Format 2 */
-    putchar(NumPlanes);                                /* Output planes */
+    putchar((int)NumPlanes);                   /* Output planes */
 
-    putchar(header->HWResolution[0] >> 8);     /* Black resolution */
-    putchar(header->HWResolution[0]);
-    putchar(header->HWResolution[1] >> 8);
-    putchar(header->HWResolution[1]);
+    putchar((int)(header->HWResolution[0] >> 8));/* Black resolution */
+    putchar((int)header->HWResolution[0]);
+    putchar((int)(header->HWResolution[1] >> 8));
+    putchar((int)header->HWResolution[1]);
     putchar(0);
     putchar(1 << ColorBits);                   /* # of black levels */
 
-    putchar(header->HWResolution[0] >> 8);     /* Cyan resolution */
-    putchar(header->HWResolution[0]);
-    putchar(header->HWResolution[1] >> 8);
-    putchar(header->HWResolution[1]);
+    putchar((int)(header->HWResolution[0] >> 8));/* Cyan resolution */
+    putchar((int)header->HWResolution[0]);
+    putchar((int)(header->HWResolution[1] >> 8));
+    putchar((int)header->HWResolution[1]);
     putchar(0);
     putchar(1 << ColorBits);                   /* # of cyan levels */
 
-    putchar(header->HWResolution[0] >> 8);     /* Magenta resolution */
-    putchar(header->HWResolution[0]);
-    putchar(header->HWResolution[1] >> 8);
-    putchar(header->HWResolution[1]);
+    putchar((int)(header->HWResolution[0] >> 8));/* Magenta resolution */
+    putchar((int)header->HWResolution[0]);
+    putchar((int)(header->HWResolution[1] >> 8));
+    putchar((int)header->HWResolution[1]);
     putchar(0);
     putchar(1 << ColorBits);                   /* # of magenta levels */
 
-    putchar(header->HWResolution[0] >> 8);     /* Yellow resolution */
-    putchar(header->HWResolution[0]);
-    putchar(header->HWResolution[1] >> 8);
-    putchar(header->HWResolution[1]);
+    putchar((int)(header->HWResolution[0] >> 8));/* Yellow resolution */
+    putchar((int)header->HWResolution[0]);
+    putchar((int)(header->HWResolution[1] >> 8));
+    putchar((int)header->HWResolution[1]);
     putchar(0);
     putchar(1 << ColorBits);                   /* # of yellow levels */
 
@@ -321,7 +310,7 @@ StartPage(ppd_file_t         *ppd,  /* I - PPD file */
   }
   else
   {
-    printf("\033*t%dR", header->HWResolution[0]);
+    printf("\033*t%uR", header->HWResolution[0]);
                                                /* Set resolution */
 
     if (header->cupsColorSpace == CUPS_CSPACE_KCMY)
@@ -341,8 +330,8 @@ StartPage(ppd_file_t         *ppd,  /* I - PPD file */
     * Set size and position of graphics...
     */
 
-    printf("\033*r%dS", header->cupsWidth);    /* Set width */
-    printf("\033*r%dT", header->cupsHeight);   /* Set height */
+    printf("\033*r%uS", header->cupsWidth);    /* Set width */
+    printf("\033*r%uT", header->cupsHeight);   /* Set height */
 
     printf("\033&a0H");                                /* Set horizontal position */
 
@@ -356,7 +345,7 @@ StartPage(ppd_file_t         *ppd,  /* I - PPD file */
   printf("\033*r1A");                          /* Start graphics */
 
   if (header->cupsCompression)
-    printf("\033*b%dM",                                /* Set compression */
+    printf("\033*b%uM",                                /* Set compression */
            header->cupsCompression);
 
   Feed = 0;                                    /* No blank lines yet */
@@ -463,15 +452,15 @@ CancelJob(int sig)                        /* I - Signal */
 
 void
 CompressData(unsigned char *line,      /* I - Data to compress */
-             int           length,     /* I - Number of bytes */
-            int           plane,       /* I - Color plane */
-            int           type)        /* I - Type of compression */
+             unsigned      length,     /* I - Number of bytes */
+            unsigned      plane,       /* I - Color plane */
+            unsigned      type)        /* I - Type of compression */
 {
   unsigned char        *line_ptr,              /* Current byte pointer */
                *line_end,              /* End-of-line byte pointer */
                *comp_ptr,              /* Pointer into compression buffer */
                *start;                 /* Start of compression sequence */
-  int           count;                 /* Count of bytes for output */
+  unsigned     count;                  /* Count of bytes for output */
 
 
   switch (type)
@@ -501,7 +490,7 @@ CompressData(unsigned char *line,   /* I - Data to compress */
                   count < 256;
                count ++);
 
-         comp_ptr[0] = count - 1;
+         comp_ptr[0] = (unsigned char)(count - 1);
          comp_ptr[1] = line_ptr[0];
        }
 
@@ -546,7 +535,7 @@ CompressData(unsigned char *line,   /* I - Data to compress */
               count ++;
            }
 
-           *comp_ptr++ = 257 - count;
+           *comp_ptr++ = (unsigned char)(257 - count);
            *comp_ptr++ = *line_ptr++;
          }
          else
@@ -567,7 +556,7 @@ CompressData(unsigned char *line,   /* I - Data to compress */
               count ++;
            }
 
-           *comp_ptr++ = count - 1;
+           *comp_ptr++ = (unsigned char)(count - 1);
 
            memcpy(comp_ptr, start, count);
            comp_ptr += count;
@@ -584,7 +573,7 @@ CompressData(unsigned char *line,   /* I - Data to compress */
   */
 
   printf("\033*b%d%c", (int)(line_end - line_ptr), plane);
-  fwrite(line_ptr, line_end - line_ptr, 1, stdout);
+  fwrite(line_ptr, (size_t)(line_end - line_ptr), 1, stdout);
 }
 
 
@@ -595,7 +584,7 @@ CompressData(unsigned char *line,   /* I - Data to compress */
 void
 OutputLine(cups_page_header2_t *header)        /* I - Page header */
 {
-  int          plane,                  /* Current plane */
+  unsigned     plane,                  /* Current plane */
                bytes,                  /* Bytes to write */
                count;                  /* Bytes to convert */
   unsigned char        bit,                    /* Current plane data */
@@ -644,15 +633,15 @@ OutputLine(cups_page_header2_t *header)   /* I - Page header */
       {
         bit = plane_ptr[0];
 
-        bit0 = ((bit & 64) << 1) | ((bit & 16) << 2) | ((bit & 4) << 3) | ((bit & 1) << 4);
-        bit1 = (bit & 128) | ((bit & 32) << 1) | ((bit & 8) << 2) | ((bit & 2) << 3);
+        bit0 = (unsigned char)(((bit & 64) << 1) | ((bit & 16) << 2) | ((bit & 4) << 3) | ((bit & 1) << 4));
+        bit1 = (unsigned char)((bit & 128) | ((bit & 32) << 1) | ((bit & 8) << 2) | ((bit & 2) << 3));
 
         if (count > 1)
        {
          bit = plane_ptr[1];
 
-          bit0 |= (bit & 1) | ((bit & 4) >> 1) | ((bit & 16) >> 2) | ((bit & 64) >> 3);
-          bit1 |= ((bit & 2) >> 1) | ((bit & 8) >> 2) | ((bit & 32) >> 3) | ((bit & 128) >> 4);
+          bit0 |= (unsigned char)((bit & 1) | ((bit & 4) >> 1) | ((bit & 16) >> 2) | ((bit & 64) >> 3));
+          bit1 |= (unsigned char)(((bit & 2) >> 1) | ((bit & 8) >> 2) | ((bit & 32) >> 3) | ((bit & 128) >> 4));
        }
 
         bit_ptr[0]     = bit0;
@@ -683,7 +672,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
   int                  fd;             /* File descriptor */
   cups_raster_t                *ras;           /* Raster stream for printing */
   cups_page_header2_t  header;         /* Page header from file */
-  int                  y;              /* Current line */
+  unsigned             y;              /* Current line */
   ppd_file_t           *ppd;           /* PPD file */
 #if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
   struct sigaction action;             /* Actions for POSIX signals */
@@ -814,9 +803,9 @@ main(int  argc,                             /* I - Number of command-line arguments */
       if ((y & 127) == 0)
       {
         _cupsLangPrintFilter(stderr, "INFO",
-                            _("Printing page %d, %d%% complete."),
+                            _("Printing page %d, %u%% complete."),
                             Page, 100 * y / header.cupsHeight);
-        fprintf(stderr, "ATTR: job-media-progress=%d\n",
+        fprintf(stderr, "ATTR: job-media-progress=%u\n",
                100 * y / header.cupsHeight);
       }
 
@@ -882,5 +871,5 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
 
 /*
- * End of "$Id: rastertohp.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: rastertohp.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index ca0e143da695e06f4b3f9404357d69810be8c831..6c12da25c106e08211f00542b1c55895fae277c0 100644 (file)
@@ -1,29 +1,18 @@
 /*
- * "$Id: rastertolabel.c 11756 2014-03-27 17:06:25Z msweet $"
+ * "$Id: rastertolabel.c 11755 2014-03-27 17:06:12Z msweet $"
  *
- *   Label printer filter for CUPS.
+ * Label printer filter for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 2001-2007 by Easy Software Products.
+ * Copyright 2007-2014 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.
- *
- * Contents:
- *
- *   Setup()        - Prepare the printer for printing.
- *   StartPage()    - Start a page of graphics.
- *   EndPage()      - Finish a page of graphics.
- *   CancelJob()    - Cancel the current job...
- *   OutputLine()   - Output a line of graphics.
- *   PCLCompress()  - Output a PCL (mode 3) compressed line.
- *   ZPLCompress()  - Output a run-length compression sequence.
- *   main()         - Main entry and processing of driver.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
 unsigned char  *Buffer;                /* Output buffer */
 unsigned char  *CompBuffer;            /* Compression buffer */
 unsigned char  *LastBuffer;            /* Last buffer */
+unsigned       Feed;                   /* Number of lines to skip */
 int            LastSet;                /* Number of repeat characters */
 int            ModelNumber,            /* cupsModelNumber attribute */
                Page,                   /* Current page */
-               Feed,                   /* Number of lines to skip */
                Canceled;               /* Non-zero if job is canceled */
 
 
@@ -93,9 +82,9 @@ void  Setup(ppd_file_t *ppd);
 void   StartPage(ppd_file_t *ppd, cups_page_header2_t *header);
 void   EndPage(ppd_file_t *ppd, cups_page_header2_t *header);
 void   CancelJob(int sig);
-void   OutputLine(ppd_file_t *ppd, cups_page_header2_t *header, int y);
-void   PCLCompress(unsigned char *line, int length);
-void   ZPLCompress(char repeat_char, int repeat_count);
+void   OutputLine(ppd_file_t *ppd, cups_page_header2_t *header, unsigned y);
+void   PCLCompress(unsigned char *line, unsigned length);
+void   ZPLCompress(unsigned char repeat_char, unsigned repeat_count);
 
 
 /*
@@ -169,7 +158,7 @@ StartPage(ppd_file_t         *ppd,  /* I - PPD file */
           cups_page_header2_t *header) /* I - Page header */
 {
   ppd_choice_t *choice;                /* Marked choice */
-  int          length;                 /* Actual label length */
+  unsigned     length;                 /* Actual label length */
 
 
  /*
@@ -289,7 +278,7 @@ StartPage(ppd_file_t         *ppd,  /* I - PPD file */
        if ((choice = ppdFindMarkedChoice(ppd, "zePrintRate")) != NULL &&
            strcmp(choice->choice, "Default"))
        {
-         float val = atof(choice->choice);
+         double val = atof(choice->choice);
 
          if (val >= 3.0)
            printf("S%.0f\n", val);
@@ -302,13 +291,13 @@ StartPage(ppd_file_t         *ppd,        /* I - PPD file */
        */
 
         if (header->cupsCompression > 0 && header->cupsCompression <= 100)
-         printf("D%d\n", 15 * header->cupsCompression / 100);
+         printf("D%u\n", 15 * header->cupsCompression / 100);
 
        /*
         * Set label size...
        */
 
-        printf("q%d\n", (header->cupsWidth + 7) & ~7);
+        printf("q%u\n", (header->cupsWidth + 7) & ~7U);
         break;
 
     case ZEBRA_ZPL :
@@ -317,13 +306,13 @@ StartPage(ppd_file_t         *ppd,        /* I - PPD file */
        */
 
         if (header->cupsCompression > 0 && header->cupsCompression <= 100)
-         printf("~SD%02d\n", 30 * header->cupsCompression / 100);
+         printf("~SD%02u\n", 30 * header->cupsCompression / 100);
 
        /*
         * Start bitmap graphics...
        */
 
-        printf("~DGR:CUPS.GRF,%d,%d,\n",
+        printf("~DGR:CUPS.GRF,%u,%u,\n",
               header->cupsHeight * header->cupsBytesPerLine,
               header->cupsBytesPerLine);
 
@@ -344,8 +333,8 @@ StartPage(ppd_file_t         *ppd,  /* I - PPD file */
         printf("! 0 %u %u %u %u\r\n", header->HWResolution[0],
               header->HWResolution[1], header->cupsHeight,
               header->NumCopies);
-       printf("PAGE-WIDTH %d\r\n", header->cupsWidth);
-       printf("PAGE-HEIGHT %d\r\n", header->cupsWidth);
+       printf("PAGE-WIDTH %u\r\n", header->cupsWidth);
+       printf("PAGE-HEIGHT %u\r\n", header->cupsWidth);
         break;
 
     case INTELLITECH_PCL :
@@ -391,14 +380,15 @@ StartPage(ppd_file_t         *ppd,        /* I - PPD file */
              break;
 
           default : /* Custom size */
-             printf("\033!f%dZ", header->PageSize[1] * 300 / 72);
+             printf("\033!f%uZ", header->PageSize[1] * 300 / 72);
              break;
        }
 
-       printf("\033&l%dP",             /* Set page length */
+       printf("\033&l%uP",             /* Set page length */
                header->PageSize[1] / 12);
        printf("\033&l0E");             /* Set top margin to 0 */
-        printf("\033&l%dX", header->NumCopies);
+        if (header->NumCopies)
+         printf("\033&l%uX", header->NumCopies);
                                        /* Set number copies */
         printf("\033&l0L");            /* Turn off perforation skip */
 
@@ -409,11 +399,11 @@ StartPage(ppd_file_t         *ppd,        /* I - PPD file */
        if (Page == 1)
        {
           if (header->cupsRowFeed)     /* inPrintRate */
-           printf("\033!p%dS", header->cupsRowFeed);
+           printf("\033!p%uS", header->cupsRowFeed);
 
-          if (header->cupsCompression != ~0)
+          if (header->cupsCompression != ~0U)
                                        /* inPrintDensity */
-           printf("\033&d%dA", 30 * header->cupsCompression / 100 - 15);
+           printf("\033&d%uA", 30 * header->cupsCompression / 100 - 15);
 
          if ((choice = ppdFindMarkedChoice(ppd, "inPrintMode")) != NULL)
          {
@@ -424,14 +414,14 @@ StartPage(ppd_file_t         *ppd,        /* I - PPD file */
              fputs("\033!p1M", stdout);
 
               if (header->cupsRowCount)        /* inTearInterval */
-               printf("\033!n%dT", header->cupsRowCount);
+               printf("\033!n%uT", header->cupsRowCount);
             }
            else
            {
              fputs("\033!p2M", stdout);
 
               if (header->cupsRowStep) /* inCutInterval */
-               printf("\033!n%dC", header->cupsRowStep);
+               printf("\033!n%uC", header->cupsRowStep);
             }
          }
         }
@@ -440,12 +430,12 @@ StartPage(ppd_file_t         *ppd,        /* I - PPD file */
        * Setup graphics...
        */
 
-       printf("\033*t%dR", header->HWResolution[0]);
+       printf("\033*t%uR", header->HWResolution[0]);
                                        /* Set resolution */
 
-       printf("\033*r%dS", header->cupsWidth);
+       printf("\033*r%uS", header->cupsWidth);
                                        /* Set width */
-       printf("\033*r%dT", header->cupsHeight);
+       printf("\033*r%uT", header->cupsHeight);
                                        /* Set height */
 
        printf("\033&a0H");             /* Set horizontal position */
@@ -746,17 +736,19 @@ CancelJob(int sig)                        /* I - Signal */
 void
 OutputLine(ppd_file_t         *ppd,    /* I - PPD file */
            cups_page_header2_t *header,        /* I - Page header */
-           int                y)       /* I - Line number */
+           unsigned           y)       /* I - Line number */
 {
-  int          i;                      /* Looping var */
+  unsigned     i;                      /* Looping var */
   unsigned char        *ptr;                   /* Pointer into buffer */
   unsigned char        *compptr;               /* Pointer into compression buffer */
-  char         repeat_char;            /* Repeated character */
-  int          repeat_count;           /* Number of repeated characters */
-  static const char *hex = "0123456789ABCDEF";
+  unsigned char        repeat_char;            /* Repeated character */
+  unsigned     repeat_count;           /* Number of repeated characters */
+  static const unsigned char *hex = (const unsigned char *)"0123456789ABCDEF";
                                        /* Hex digits */
 
 
+  (void)ppd;
+
   switch (ModelNumber)
   {
     case DYMO_3x0 :
@@ -913,14 +905,14 @@ OutputLine(ppd_file_t         *ppd,       /* I - PPD file */
 
 void
 PCLCompress(unsigned char *line,       /* I - Line to compress */
-            int           length)      /* I - Length of line */
+            unsigned      length)      /* I - Length of line */
 {
   unsigned char        *line_ptr,              /* Current byte pointer */
                *line_end,              /* End-of-line byte pointer */
                *comp_ptr,              /* Pointer into compression buffer */
                *start,                 /* Start of compression sequence */
                *seed;                  /* Seed buffer pointer */
-  int           count,                 /* Count of bytes for output */
+  unsigned     count,                  /* Count of bytes for output */
                offset;                 /* Offset of bytes for output */
 
 
@@ -950,7 +942,7 @@ PCLCompress(unsigned char *line,    /* I - Line to compress */
 
       offset = 0;
 
-      if ((count = line_end - line_ptr) > 8)
+      if ((count = (unsigned)(line_end - line_ptr)) > 8)
        count = 8;
 
       line_ptr += count;
@@ -971,7 +963,7 @@ PCLCompress(unsigned char *line,    /* I - Line to compress */
       if (line_ptr == line_end)
         break;
 
-      offset = line_ptr - start;
+      offset = (unsigned)(line_ptr - start);
 
      /*
       * Find up to 8 non-matching bytes...
@@ -1000,7 +992,7 @@ PCLCompress(unsigned char *line,   /* I - Line to compress */
       * Output multi-byte offset...
       */
 
-      *comp_ptr++ = ((count - 1) << 5) | 31;
+      *comp_ptr++ = (unsigned char)(((count - 1) << 5) | 31);
 
       offset -= 31;
       while (offset >= 255)
@@ -1009,7 +1001,7 @@ PCLCompress(unsigned char *line,  /* I - Line to compress */
         offset    -= 255;
       }
 
-      *comp_ptr++ = offset;
+      *comp_ptr++ = (unsigned char)offset;
     }
     else
     {
@@ -1017,7 +1009,7 @@ PCLCompress(unsigned char *line,  /* I - Line to compress */
       * Output single-byte offset...
       */
 
-      *comp_ptr++ = ((count - 1) << 5) | offset;
+      *comp_ptr++ = (unsigned char)(((count - 1) << 5) | offset);
     }
 
     memcpy(comp_ptr, start, count);
@@ -1029,7 +1021,7 @@ PCLCompress(unsigned char *line,  /* I - Line to compress */
   */
 
   printf("\033*b%dW", (int)(comp_ptr - CompBuffer));
-  fwrite(CompBuffer, comp_ptr - CompBuffer, 1, stdout);
+  fwrite(CompBuffer, (size_t)(comp_ptr - CompBuffer), 1, stdout);
 
  /*
   * Save this line as a "seed" buffer for the next...
@@ -1045,8 +1037,8 @@ PCLCompress(unsigned char *line,  /* I - Line to compress */
  */
 
 void
-ZPLCompress(char repeat_char,          /* I - Character to repeat */
-           int  repeat_count)          /* I - Number of repeated characters */
+ZPLCompress(unsigned char repeat_char, /* I - Character to repeat */
+           unsigned      repeat_count) /* I - Number of repeated characters */
 {
   if (repeat_count > 1)
   {
@@ -1067,7 +1059,7 @@ ZPLCompress(char repeat_char,             /* I - Character to repeat */
 
     if (repeat_count >= 20)
     {
-      putchar('f' + repeat_count / 20);
+      putchar((int)('f' + repeat_count / 20));
       repeat_count %= 20;
     }
 
@@ -1076,14 +1068,14 @@ ZPLCompress(char repeat_char,           /* I - Character to repeat */
     */
 
     if (repeat_count > 0)
-      putchar('F' + repeat_count);
+      putchar((int)('F' + repeat_count));
   }
 
  /*
   * Then the character to be repeated...
   */
 
-  putchar(repeat_char);
+  putchar((int)repeat_char);
 }
 
 
@@ -1098,7 +1090,7 @@ main(int  argc,                           /* I - Number of command-line arguments */
   int                  fd;             /* File descriptor */
   cups_raster_t                *ras;           /* Raster stream for printing */
   cups_page_header2_t  header;         /* Page header from file */
-  int                  y;              /* Current line */
+  unsigned             y;              /* Current line */
   ppd_file_t           *ppd;           /* PPD file */
   int                  num_options;    /* Number of options */
   cups_option_t                *options;       /* Options */
@@ -1240,9 +1232,9 @@ main(int  argc,                           /* I - Number of command-line arguments */
       if ((y & 15) == 0)
       {
         _cupsLangPrintFilter(stderr, "INFO",
-                            _("Printing page %d, %d%% complete."),
+                            _("Printing page %d, %u%% complete."),
                             Page, 100 * y / header.cupsHeight);
-        fprintf(stderr, "ATTR: job-media-progress=%d\n",
+        fprintf(stderr, "ATTR: job-media-progress=%u\n",
                100 * y / header.cupsHeight);
       }
 
@@ -1302,5 +1294,5 @@ main(int  argc,                           /* I - Number of command-line arguments */
 
 
 /*
- * End of "$Id: rastertolabel.c 11756 2014-03-27 17:06:25Z msweet $".
+ * End of "$Id: rastertolabel.c 11755 2014-03-27 17:06:12Z msweet $".
  */
index 97dab1cbceb65bf7448ada9768ad231674a61b33..529b27f383b99c89271fe0977ba2b3596a36d87c 100644 (file)
@@ -1,21 +1,17 @@
 /*
- * "$Id: rastertopwg.c 3427 2011-09-20 18:40:57Z msweet $"
+ * "$Id: rastertopwg.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   CUPS raster to PWG raster format filter for CUPS.
+ * CUPS raster to PWG raster format filter for CUPS.
  *
- *   Copyright 2011 Apple Inc.
+ * Copyright 2011, 2014 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 for filter.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -41,9 +37,9 @@ main(int  argc,                               /* I - Number of command-line args */
                        *outras;        /* Output raster stream */
   cups_page_header2_t  inheader,       /* Input raster page header */
                        outheader;      /* Output raster page header */
-  int                  y;              /* Current line */
+  unsigned             y;              /* Current line */
   unsigned char                *line;          /* Line buffer */
-  int                  page = 0,       /* Current page */
+  unsigned             page = 0,       /* Current page */
                        page_width,     /* Actual page width */
                        page_height,    /* Actual page height */
                        page_top,       /* Top margin */
@@ -101,14 +97,10 @@ main(int  argc,                            /* I - Number of command-line args */
 
     fprintf(stderr, "PAGE: %d %d\n", page, inheader.NumCopies);
 
-    page_width  = (int)(inheader.cupsPageSize[0] * inheader.HWResolution[0] /
-                        72.0);
-    page_height = (int)(inheader.cupsPageSize[1] * inheader.HWResolution[1] /
-                        72.0);
-    page_left   = (int)(inheader.cupsImagingBBox[0] *
-                        inheader.HWResolution[0] / 72.0);
-    page_bottom = (int)(inheader.cupsImagingBBox[1] *
-                        inheader.HWResolution[1] / 72.0);
+    page_width  = (unsigned)(inheader.cupsPageSize[0] * inheader.HWResolution[0] / 72.0);
+    page_height = (unsigned)(inheader.cupsPageSize[1] * inheader.HWResolution[1] / 72.0);
+    page_left   = (unsigned)(inheader.cupsImagingBBox[0] * inheader.HWResolution[0] / 72.0);
+    page_bottom = (unsigned)(inheader.cupsImagingBBox[1] * inheader.HWResolution[1] / 72.0);
     page_top    = page_height - page_bottom - inheader.cupsHeight;
     linesize    = (page_width * inheader.cupsBitsPerPixel + 7) / 8;
     lineoffset  = page_left * inheader.cupsBitsPerPixel / 8; /* Round down */
@@ -199,7 +191,7 @@ main(int  argc,                             /* I - Number of command-line args */
 
     if ((val = cupsGetOption("print-quality", num_options, options)) != NULL)
     {
-      int quality = atoi(val);         /* print-quality value */
+      unsigned quality = (unsigned)atoi(val);          /* print-quality value */
 
       if (quality >= IPP_QUALITY_DRAFT && quality <= IPP_QUALITY_HIGH)
        outheader.cupsInteger[8] = quality;
@@ -270,7 +262,7 @@ main(int  argc,                             /* I - Number of command-line args */
       {
         if (inheader.Tumble)
         {
-         outheader.cupsInteger[1] = -1;/* CrossFeedTransform */
+         outheader.cupsInteger[1] = ~0U;/* CrossFeedTransform */
          outheader.cupsInteger[2] = 1; /* FeedTransform */
 
          outheader.cupsInteger[3] = page_width - page_left -
@@ -286,7 +278,7 @@ main(int  argc,                             /* I - Number of command-line args */
         else
         {
          outheader.cupsInteger[1] = 1; /* CrossFeedTransform */
-         outheader.cupsInteger[2] = -1;/* FeedTransform */
+         outheader.cupsInteger[2] = ~0U;/* FeedTransform */
 
          outheader.cupsInteger[3] = page_left;
                                        /* ImageBoxLeft */
@@ -302,8 +294,8 @@ main(int  argc,                             /* I - Number of command-line args */
       {
         if (inheader.Tumble)
         {
-         outheader.cupsInteger[1] = -1;/* CrossFeedTransform */
-         outheader.cupsInteger[2] = -1;/* FeedTransform */
+         outheader.cupsInteger[1] = ~0U;/* CrossFeedTransform */
+         outheader.cupsInteger[2] = ~0U;/* FeedTransform */
 
          outheader.cupsInteger[3] = page_width - page_left -
                                     inheader.cupsWidth;
@@ -334,8 +326,8 @@ main(int  argc,                             /* I - Number of command-line args */
       {
         if (inheader.Tumble)
         {
-         outheader.cupsInteger[1] = -1;/* CrossFeedTransform */
-         outheader.cupsInteger[2] = -1;/* FeedTransform */
+         outheader.cupsInteger[1] = ~0U;/* CrossFeedTransform */
+         outheader.cupsInteger[2] = ~0U;/* FeedTransform */
 
          outheader.cupsInteger[3] = page_width - page_left -
                                     inheader.cupsWidth;
@@ -457,5 +449,5 @@ main(int  argc,                             /* I - Number of command-line args */
 
 
 /*
- * End of "$Id: rastertopwg.c 3427 2011-09-20 18:40:57Z msweet $".
+ * End of "$Id: rastertopwg.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 8b682a5abe8ddce691185dd511da887c80ac664a..2e4d324a8541f09d6dac6e6c6af799ebcbde1434 100644 (file)
@@ -1,27 +1,18 @@
 /*
- * "$Id: testraster.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: testraster.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Raster test program routines for CUPS.
+ * Raster test program routines for CUPS.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   main()            - Test the raster functions.
- *   do_ppd_tests()    - Test the default option commands in a PPD file.
- *   do_ps_tests()     - Test standard PostScript commands.
- *   do_ras_file()     - Test reading of a raster file.
- *   do_raster_tests() - Test reading and writing of raster data.
- *   print_changes()   - Print differences in the page header.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -29,6 +20,7 @@
  */
 
 #include <cups/raster-private.h>
+#include <math.h>
 
 
 /*
@@ -172,13 +164,12 @@ static cups_page_header2_t setpagedevice_header =
   1,                                   /* cupsRowFeed */
   1,                                   /* cupsRowStep */
   0,                                   /* cupsNumColors */
-  1.001                              /* cupsBorderlessScalingFactor */
-  { 612.0, 792.1 },                    /* cupsPageSize */
-  { 0.0, 0.0, 0.0, 0.0 },              /* cupsImagingBBox */
+  1.001f,                              /* cupsBorderlessScalingFactor */
+  { 612.0f, 792.1f },                  /* cupsPageSize */
+  { 0.0f, 0.0f, 0.0f, 0.0f },          /* cupsImagingBBox */
   { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 },
                                        /* cupsInteger[16] */
-  { 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 8.1, 9.1, 10.1, 11.1, 12.1, 13.1,
-    14.1, 15.1, 16.1 },                        /* cupsReal[16] */
+  { 1.1f, 2.1f, 3.1f, 4.1f, 5.1f, 6.1f, 7.1f, 8.1f, 9.1f, 10.1f, 11.1f, 12.1f, 13.1f, 14.1f, 15.1f, 16.1f },                   /* cupsReal[16] */
   { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13",
     "14", "15", "16" },                        /* cupsString[16] */
   "Marker Type",                       /* cupsMarkerType */
@@ -519,7 +510,7 @@ do_ras_file(const char *filename)   /* I - Filename */
 static int                             /* O - Number of errors */
 do_raster_tests(cups_mode_t mode)      /* O - Write mode */
 {
-  int                  page, x, y;     /* Looping vars */
+  unsigned             page, x, y;     /* Looping vars */
   FILE                 *fp;            /* Raster file */
   cups_raster_t                *r;             /* Raster stream */
   cups_page_header2_t  header,         /* Page header */
@@ -610,7 +601,7 @@ do_raster_tests(cups_mode_t mode)   /* O - Write mode */
     else
     {
       for (x = 0; x < header.cupsBytesPerLine; x ++)
-       data[x] = x;
+       data[x] = (unsigned char)x;
 
       for (y = 0; y < 64; y ++)
        if (!cupsRasterWritePixels(r, data, header.cupsBytesPerLine))
@@ -636,7 +627,7 @@ do_raster_tests(cups_mode_t mode)   /* O - Write mode */
        else
        {
          for (x = 0; x < header.cupsBytesPerLine; x ++)
-           data[x] = x / 4;
+           data[x] = (unsigned char)(x / 4);
 
          for (y = 0; y < 64; y ++)
            if (!cupsRasterWritePixels(r, data, header.cupsBytesPerLine))
@@ -1020,22 +1011,21 @@ print_changes(
     printf("    cupsNumColors %d, expected %d\n", header->cupsNumColors,
            expected->cupsNumColors);
 
-  if (header->cupsBorderlessScalingFactor !=
-          expected->cupsBorderlessScalingFactor)
+  if (fabs(header->cupsBorderlessScalingFactor - expected->cupsBorderlessScalingFactor) > 0.001)
     printf("    cupsBorderlessScalingFactor %g, expected %g\n",
            header->cupsBorderlessScalingFactor,
            expected->cupsBorderlessScalingFactor);
 
-  if (header->cupsPageSize[0] != expected->cupsPageSize[0] ||
-      header->cupsPageSize[1] != expected->cupsPageSize[1])
+  if (fabs(header->cupsPageSize[0] - expected->cupsPageSize[0]) > 0.001 ||
+      fabs(header->cupsPageSize[1] - expected->cupsPageSize[1]) > 0.001)
     printf("    cupsPageSize [%g %g], expected [%g %g]\n",
            header->cupsPageSize[0], header->cupsPageSize[1],
            expected->cupsPageSize[0], expected->cupsPageSize[1]);
 
-  if (header->cupsImagingBBox[0] != expected->cupsImagingBBox[0] ||
-      header->cupsImagingBBox[1] != expected->cupsImagingBBox[1] ||
-      header->cupsImagingBBox[2] != expected->cupsImagingBBox[2] ||
-      header->cupsImagingBBox[3] != expected->cupsImagingBBox[3])
+  if (fabs(header->cupsImagingBBox[0] - expected->cupsImagingBBox[0]) > 0.001 ||
+      fabs(header->cupsImagingBBox[1] - expected->cupsImagingBBox[1]) > 0.001 ||
+      fabs(header->cupsImagingBBox[2] - expected->cupsImagingBBox[2]) > 0.001 ||
+      fabs(header->cupsImagingBBox[3] - expected->cupsImagingBBox[3]) > 0.001)
     printf("    cupsImagingBBox [%g %g %g %g], expected [%g %g %g %g]\n",
            header->cupsImagingBBox[0], header->cupsImagingBBox[1],
            header->cupsImagingBBox[2], header->cupsImagingBBox[3],
@@ -1048,7 +1038,7 @@ print_changes(
              expected->cupsInteger[i]);
 
   for (i = 0; i < 16; i ++)
-    if (header->cupsReal[i] != expected->cupsReal[i])
+    if (fabs(header->cupsReal[i] - expected->cupsReal[i]) > 0.001)
       printf("    cupsReal%d %g, expected %g\n", i, header->cupsReal[i],
              expected->cupsReal[i]);
 
@@ -1074,5 +1064,5 @@ print_changes(
 
 
 /*
- * End of "$Id: testraster.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: testraster.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 7a08bb2bc6e6f201f4afa483c6d8803e355bf8ca..29e13cec6e4242e1ffb363e5cf3cdf2327d29dfa 100644 (file)
@@ -1,22 +1,16 @@
 checkpo.o: checkpo.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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
 po2strings.o: po2strings.c ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 strings2po.o: strings2po.c
-translate.o: translate.c ../cups/cups-private.h ../cups/string-private.h \
-  ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
index 29fc38ac0ef69e8305b1119724660837b318ce9a..d4e9c2851fae11d09079d90148c1a75bdbd3a388 100644 (file)
@@ -1,23 +1,23 @@
 #
-# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
+# "$Id: Makefile 11558 2014-02-06 18:33:34Z msweet $"
 #
-#   Locale file makefile for CUPS.
+# Locale file makefile for CUPS.
 #
-#   Copyright 2007-2012 by Apple Inc.
-#   Copyright 1993-2007 by Easy Software Products.
+# Copyright 2007-2014 by Apple Inc.
+# Copyright 1993-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/".
 #
 
 include ../Makedefs
 
 
-OBJS   =       checkpo.o po2strings.o strings2po.o translate.o
-TARGETS        =       checkpo po2strings strings2po translate
+OBJS   =       checkpo.o po2strings.o strings2po.o
+TARGETS        =       checkpo po2strings strings2po
 
 
 #
@@ -196,20 +196,6 @@ strings2po:        strings2po.o
        $(CC) $(ARCHFLAGS) $(LDFLAGS) -o strings2po strings2po.o
 
 
-#
-# translate - A simple utility which uses Google to translate the cups.pot
-#             file to one of several languages.
-#
-# translate outfile language
-#
-
-translate:     translate.o ../cups/$(LIBCUPSSTATIC)
-       echo Linking $<...
-       $(CC) $(ARCHFLAGS) $(LDFLAGS) -o translate translate.o \
-               ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
-               $(COMMONLIBS) $(LIBZ)
-
-
 #
 # Dependencies...
 #
@@ -218,5 +204,5 @@ include Dependencies
 
 
 #
-# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
+# End of "$Id: Makefile 11558 2014-02-06 18:33:34Z msweet $".
 #
index 275aef490394b512fa6aa315fe1af582bf45e77e..85dcb39b2b777c77b81161e160b6e1580b4df10f 100644 (file)
@@ -1,16 +1,16 @@
 #
 # "$Id$"
 #
-#   Message catalog template for CUPS.
+# Message catalog template for CUPS.
 #
-#   Copyright 2007-2012 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 "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/".
 #
 
 #
index 843c0c2d83e82e151d8236de9af437e918447f9b..40b972896eda9deeeed7b027b1b46f7b7c45982c 100644 (file)
@@ -1,16 +1,16 @@
 #
 # "$Id$"
 #
-#   Message catalog template for CUPS.
+# Message catalog template for CUPS.
 #
-#   Copyright 2007-2012 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 "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/".
 #
 
 #
@@ -30,7 +30,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 1.6\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2014-05-09 13:32-0700\n"
+"POT-Creation-Date: 2014-06-26 14:29-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,156 +39,156 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: systemv/lpstat.c:1936 systemv/lpstat.c:2061
+#: systemv/lpstat.c:1864 systemv/lpstat.c:1987
 msgid "\t\t(all)"
 msgstr ""
 
-#: systemv/lpstat.c:1939 systemv/lpstat.c:1942 systemv/lpstat.c:2064
-#: systemv/lpstat.c:2067
+#: systemv/lpstat.c:1867 systemv/lpstat.c:1870 systemv/lpstat.c:1990
+#: systemv/lpstat.c:1993
 msgid "\t\t(none)"
 msgstr ""
 
-#: berkeley/lpc.c:434
+#: berkeley/lpc.c:426
 #, c-format
 msgid "\t%d entries"
 msgstr ""
 
-#: systemv/lpstat.c:785 systemv/lpstat.c:801
+#: systemv/lpstat.c:783 systemv/lpstat.c:799
 #, c-format
 msgid "\t%s"
 msgstr ""
 
-#: systemv/lpstat.c:1917 systemv/lpstat.c:2042
+#: systemv/lpstat.c:1845 systemv/lpstat.c:1968
 msgid "\tAfter fault: continue"
 msgstr ""
 
-#: systemv/lpstat.c:1535 systemv/lpstat.c:1886 systemv/lpstat.c:2012
+#: systemv/lpstat.c:1468 systemv/lpstat.c:1814 systemv/lpstat.c:1938
 #, c-format
 msgid "\tAlerts: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1940 systemv/lpstat.c:2065
+#: systemv/lpstat.c:1868 systemv/lpstat.c:1991
 msgid "\tBanner required"
 msgstr ""
 
-#: systemv/lpstat.c:1941 systemv/lpstat.c:2066
+#: systemv/lpstat.c:1869 systemv/lpstat.c:1992
 msgid "\tCharset sets:"
 msgstr ""
 
-#: systemv/lpstat.c:1905 systemv/lpstat.c:2030
+#: systemv/lpstat.c:1833 systemv/lpstat.c:1956
 msgid "\tConnection: direct"
 msgstr ""
 
-#: systemv/lpstat.c:1896 systemv/lpstat.c:2022
+#: systemv/lpstat.c:1824 systemv/lpstat.c:1948
 msgid "\tConnection: remote"
 msgstr ""
 
-#: systemv/lpstat.c:1860 systemv/lpstat.c:1986
+#: systemv/lpstat.c:1790 systemv/lpstat.c:1914
 msgid "\tContent types: any"
 msgstr ""
 
-#: systemv/lpstat.c:1944 systemv/lpstat.c:2069
+#: systemv/lpstat.c:1872 systemv/lpstat.c:1995
 msgid "\tDefault page size:"
 msgstr ""
 
-#: systemv/lpstat.c:1943 systemv/lpstat.c:2068
+#: systemv/lpstat.c:1871 systemv/lpstat.c:1994
 msgid "\tDefault pitch:"
 msgstr ""
 
-#: systemv/lpstat.c:1945 systemv/lpstat.c:2070
+#: systemv/lpstat.c:1873 systemv/lpstat.c:1996
 msgid "\tDefault port settings:"
 msgstr ""
 
-#: systemv/lpstat.c:1866 systemv/lpstat.c:1992
+#: systemv/lpstat.c:1796 systemv/lpstat.c:1920
 #, c-format
 msgid "\tDescription: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1859 systemv/lpstat.c:1985
+#: systemv/lpstat.c:1789 systemv/lpstat.c:1913
 msgid "\tForm mounted:"
 msgstr ""
 
-#: systemv/lpstat.c:1938 systemv/lpstat.c:2063
+#: systemv/lpstat.c:1866 systemv/lpstat.c:1989
 msgid "\tForms allowed:"
 msgstr ""
 
-#: systemv/lpstat.c:1900 systemv/lpstat.c:2026
+#: systemv/lpstat.c:1828 systemv/lpstat.c:1952
 #, c-format
 msgid "\tInterface: %s.ppd"
 msgstr ""
 
-#: systemv/lpstat.c:1909 systemv/lpstat.c:2034
+#: systemv/lpstat.c:1837 systemv/lpstat.c:1960
 #, c-format
 msgid "\tInterface: %s/interfaces/%s"
 msgstr ""
 
-#: systemv/lpstat.c:1913 systemv/lpstat.c:2038
+#: systemv/lpstat.c:1841 systemv/lpstat.c:1964
 #, c-format
 msgid "\tInterface: %s/ppd/%s.ppd"
 msgstr ""
 
-#: systemv/lpstat.c:1891 systemv/lpstat.c:2017
+#: systemv/lpstat.c:1819 systemv/lpstat.c:1943
 #, c-format
 msgid "\tLocation: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1916 systemv/lpstat.c:2041
+#: systemv/lpstat.c:1844 systemv/lpstat.c:1967
 msgid "\tOn fault: no alert"
 msgstr ""
 
-#: systemv/lpstat.c:1861 systemv/lpstat.c:1987
+#: systemv/lpstat.c:1791 systemv/lpstat.c:1915
 msgid "\tPrinter types: unknown"
 msgstr ""
 
-#: systemv/lpstat.c:1516
+#: systemv/lpstat.c:1451
 #, c-format
 msgid "\tStatus: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1921 systemv/lpstat.c:1935 systemv/lpstat.c:2046
-#: systemv/lpstat.c:2060
+#: systemv/lpstat.c:1849 systemv/lpstat.c:1863 systemv/lpstat.c:1972
+#: systemv/lpstat.c:1986
 msgid "\tUsers allowed:"
 msgstr ""
 
-#: systemv/lpstat.c:1928 systemv/lpstat.c:2053
+#: systemv/lpstat.c:1856 systemv/lpstat.c:1979
 msgid "\tUsers denied:"
 msgstr ""
 
-#: berkeley/lpc.c:436
+#: berkeley/lpc.c:428
 msgid "\tdaemon present"
 msgstr ""
 
-#: berkeley/lpc.c:432
+#: berkeley/lpc.c:424
 msgid "\tno entries"
 msgstr ""
 
-#: berkeley/lpc.c:404 berkeley/lpc.c:416
+#: berkeley/lpc.c:396 berkeley/lpc.c:408
 #, c-format
 msgid "\tprinter is on device '%s' speed -1"
 msgstr ""
 
-#: berkeley/lpc.c:429
+#: berkeley/lpc.c:421
 msgid "\tprinting is disabled"
 msgstr ""
 
-#: berkeley/lpc.c:427
+#: berkeley/lpc.c:419
 msgid "\tprinting is enabled"
 msgstr ""
 
-#: systemv/lpstat.c:1538
+#: systemv/lpstat.c:1471
 #, c-format
 msgid "\tqueued for %s"
 msgstr ""
 
-#: berkeley/lpc.c:424
+#: berkeley/lpc.c:416
 msgid "\tqueuing is disabled"
 msgstr ""
 
-#: berkeley/lpc.c:422
+#: berkeley/lpc.c:414
 msgid "\tqueuing is enabled"
 msgstr ""
 
-#: systemv/lpstat.c:1852 systemv/lpstat.c:1978
+#: systemv/lpstat.c:1782 systemv/lpstat.c:1906
 msgid "\treason unknown"
 msgstr ""
 
@@ -250,7 +250,7 @@ msgstr ""
 msgid "                REF: Pages 52-54, section 5.2."
 msgstr ""
 
-#: berkeley/lpq.c:559
+#: berkeley/lpq.c:528
 #, c-format
 msgid "        %-39.39s %.0f bytes"
 msgstr ""
@@ -975,11 +975,11 @@ msgstr ""
 msgid "    Warning: obsolete DSC version %.1f in file."
 msgstr ""
 
-#: test/ippfind.c:2776
+#: test/ippfind.c:2758
 msgid "  ! expression            Unary NOT of expression."
 msgstr ""
 
-#: test/ippfind.c:2775
+#: test/ippfind.c:2757
 msgid "  ( expressions )         Group expressions."
 msgstr ""
 
@@ -1003,117 +1003,121 @@ msgstr ""
 msgid "  --[no-]user-cancel-any  Allow/prevent users to cancel any job."
 msgstr ""
 
-#: ppdc/ppdc.cxx:455
+#: ppdc/ppdc.cxx:450
 msgid "  --cr                    End lines with CR (Mac OS 9)."
 msgstr ""
 
-#: ppdc/ppdc.cxx:457
+#: ppdc/ppdc.cxx:452
 msgid "  --crlf                  End lines with CR + LF (Windows)."
 msgstr ""
 
-#: test/ippfind.c:2757
+#: test/ippfind.c:2739
 msgid "  --domain regex          Match domain to regular expression."
 msgstr ""
 
-#: test/ippfind.c:2758
+#: test/ippfind.c:2740
 msgid ""
 "  --exec utility [argument ...] ;\n"
 "                          Execute program if true."
 msgstr ""
 
-#: test/ippfind.c:2778
+#: test/ippfind.c:2760
 msgid "  --false                 Always false."
 msgstr ""
 
-#: test/ippfind.c:2740
+#: test/ippfind.c:2722
 msgid "  --help                  Show this help."
 msgstr ""
 
-#: test/ippfind.c:2760
+#: test/ippfind.c:2742
 msgid "  --host regex            Match hostname to regular expression."
 msgstr ""
 
-#: ppdc/ppdc.cxx:459
+#: ppdc/ppdc.cxx:454
 msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
 msgstr ""
 
-#: test/ippfind.c:2762
+#: scheduler/cupsfilter.c:1483
+msgid "  --list-filters          List filters that will be used."
+msgstr ""
+
+#: test/ippfind.c:2744
 msgid "  --local                 True if service is local."
 msgstr ""
 
-#: test/ippfind.c:2761
+#: test/ippfind.c:2743
 msgid "  --ls                    List attributes."
 msgstr ""
 
-#: test/ippfind.c:2763
+#: test/ippfind.c:2745
 msgid "  --name regex            Match service name to regular expression."
 msgstr ""
 
-#: test/ippfind.c:2777
+#: test/ippfind.c:2759
 msgid "  --not expression        Unary NOT of expression."
 msgstr ""
 
-#: test/ippfind.c:2764
+#: test/ippfind.c:2746
 msgid "  --path regex            Match resource path to regular expression."
 msgstr ""
 
-#: test/ippfind.c:2765
+#: test/ippfind.c:2747
 msgid "  --port number[-number]  Match port to number or range."
 msgstr ""
 
-#: test/ippfind.c:2766
+#: test/ippfind.c:2748
 msgid "  --print                 Print URI if true."
 msgstr ""
 
-#: test/ippfind.c:2767
+#: test/ippfind.c:2749
 msgid "  --print-name            Print service name if true."
 msgstr ""
 
-#: test/ippfind.c:2768
+#: test/ippfind.c:2750
 msgid "  --quiet                 Quietly report match via exit code."
 msgstr ""
 
-#: test/ippfind.c:2769
+#: test/ippfind.c:2751
 msgid "  --remote                True if service is remote."
 msgstr ""
 
-#: test/ippfind.c:2779
+#: test/ippfind.c:2761
 msgid "  --true                  Always true."
 msgstr ""
 
-#: test/ippfind.c:2770
+#: test/ippfind.c:2752
 msgid "  --txt key               True if the TXT record contains the key."
 msgstr ""
 
-#: test/ippfind.c:2771
+#: test/ippfind.c:2753
 msgid "  --txt-* regex           Match TXT record key to regular expression."
 msgstr ""
 
-#: test/ippfind.c:2772
+#: test/ippfind.c:2754
 msgid "  --uri regex             Match URI to regular expression."
 msgstr ""
 
-#: test/ippfind.c:2741
+#: test/ippfind.c:2723
 msgid "  --version               Show program version."
 msgstr ""
 
-#: test/ippfind.c:2734 test/ipptool.c:4709
+#: test/ippfind.c:2716 test/ipptool.c:4714
 msgid "  -4                      Connect using IPv4."
 msgstr ""
 
-#: test/ippfind.c:2735 test/ipptool.c:4710
+#: test/ippfind.c:2717 test/ipptool.c:4715
 msgid "  -6                      Connect using IPv6."
 msgstr ""
 
-#: test/ipptool.c:4711
+#: test/ipptool.c:4716
 msgid "  -C                      Send requests using chunking (default)."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1458
+#: scheduler/cupsfilter.c:1484
 msgid "  -D                      Remove the input file when finished."
 msgstr ""
 
-#: ppdc/ppdc.cxx:438 ppdc/ppdhtml.cxx:175 ppdc/ppdpo.cxx:255
+#: ppdc/ppdc.cxx:433 ppdc/ppdhtml.cxx:175 ppdc/ppdpo.cxx:255
 msgid "  -D name=value           Set named variable to value."
 msgstr ""
 
@@ -1121,11 +1125,11 @@ msgstr ""
 msgid "  -E                      Encrypt the connection."
 msgstr ""
 
-#: test/ipptool.c:4713
+#: test/ipptool.c:4718
 msgid "  -E                      Test with HTTP Upgrade to TLS."
 msgstr ""
 
-#: scheduler/main.c:2005
+#: scheduler/main.c:2161
 msgid "  -F                      Run in the foreground but detach from console."
 msgstr ""
 
@@ -1133,11 +1137,11 @@ msgstr ""
 msgid "  -H samba-server         Use the named SAMBA server."
 msgstr ""
 
-#: test/ipptool.c:4715
+#: test/ipptool.c:4720
 msgid "  -I                      Ignore errors."
 msgstr ""
 
-#: ppdc/ppdc.cxx:440 ppdc/ppdhtml.cxx:177 ppdc/ppdi.cxx:131 ppdc/ppdpo.cxx:257
+#: ppdc/ppdc.cxx:435 ppdc/ppdhtml.cxx:177 ppdc/ppdi.cxx:131 ppdc/ppdpo.cxx:257
 msgid "  -I include-dir          Add include directory to search path."
 msgstr ""
 
@@ -1145,15 +1149,15 @@ msgstr ""
 msgid "  -I {filename,filters,none,profiles}"
 msgstr ""
 
-#: test/ipptool.c:4716
+#: test/ipptool.c:4721
 msgid "  -L                      Send requests using content-length."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1460
+#: scheduler/cupsfilter.c:1485
 msgid "  -P filename.ppd         Set PPD file."
 msgstr ""
 
-#: test/ippfind.c:2744
+#: test/ippfind.c:2726
 msgid "  -P number[-number]      Match port to number or range."
 msgstr ""
 
@@ -1161,23 +1165,23 @@ msgstr ""
 msgid "  -R root-directory       Set alternate root."
 msgstr ""
 
-#: test/ipptool.c:4718
+#: test/ipptool.c:4723
 msgid "  -S                      Test with SSL encryption."
 msgstr ""
 
-#: test/ippfind.c:2736
+#: test/ippfind.c:2718
 msgid "  -T seconds              Set the browse timeout in seconds."
 msgstr ""
 
-#: test/ipptool.c:4720
+#: test/ipptool.c:4725
 msgid "  -T seconds              Set the receive/send timeout in seconds."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1461 systemv/cupsaddsmb.c:288 systemv/cupsctl.c:206
+#: scheduler/cupsfilter.c:1486 systemv/cupsaddsmb.c:288 systemv/cupsctl.c:206
 msgid "  -U username             Specify username."
 msgstr ""
 
-#: test/ippfind.c:2738 test/ipptool.c:4722
+#: test/ippfind.c:2720 test/ipptool.c:4727
 msgid "  -V version              Set default IPP version."
 msgstr ""
 
@@ -1185,7 +1189,7 @@ msgstr ""
 msgid "  -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,translations}"
 msgstr ""
 
-#: test/ipptool.c:4724
+#: test/ipptool.c:4729
 msgid "  -X                      Produce XML plist instead of plain text."
 msgstr ""
 
@@ -1197,15 +1201,15 @@ msgstr ""
 msgid "  -a                      Export all printers."
 msgstr ""
 
-#: ppdc/ppdc.cxx:442
+#: ppdc/ppdc.cxx:437
 msgid "  -c catalog.po           Load the specified message catalog."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1462
+#: scheduler/cupsfilter.c:1487
 msgid "  -c cups-files.conf      Set cups-files.conf file to use."
 msgstr ""
 
-#: scheduler/main.c:2003
+#: scheduler/main.c:2159
 msgid "  -c cupsd.conf           Set cupsd.conf file to use."
 msgstr ""
 
@@ -1213,39 +1217,39 @@ msgstr ""
 msgid "  -d domain               Browse/resolve in specified domain."
 msgstr ""
 
-#: test/ipptool.c:4726
+#: test/ipptool.c:4731
 msgid "  -d name=value           Set named variable to value."
 msgstr ""
 
-#: ppdc/ppdc.cxx:444
+#: ppdc/ppdc.cxx:439
 msgid "  -d output-dir           Specify the output directory."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1464
+#: scheduler/cupsfilter.c:1488
 msgid "  -d printer              Use the named printer."
 msgstr ""
 
-#: test/ippfind.c:2745
+#: test/ippfind.c:2727
 msgid "  -d regex                Match domain to regular expression."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1466
+#: scheduler/cupsfilter.c:1489
 msgid "  -e                      Use every filter from the PPD file."
 msgstr ""
 
-#: scheduler/main.c:2004
+#: scheduler/main.c:2160
 msgid "  -f                      Run in the foreground."
 msgstr ""
 
-#: test/ipptool.c:4728
+#: test/ipptool.c:4733
 msgid "  -f filename             Set default request filename."
 msgstr ""
 
-#: scheduler/main.c:2007
+#: scheduler/main.c:2163
 msgid "  -h                      Show this usage message."
 msgstr ""
 
-#: test/ippfind.c:2746
+#: test/ippfind.c:2728
 msgid "  -h regex                Match hostname to regular expression."
 msgstr ""
 
@@ -1253,47 +1257,47 @@ msgstr ""
 msgid "  -h server[:port]        Specify server address."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1468
+#: scheduler/cupsfilter.c:1490
 msgid "  -i mime/type            Set input MIME type (otherwise auto-typed)."
 msgstr ""
 
-#: test/ipptool.c:4730
+#: test/ipptool.c:4735
 msgid "  -i seconds              Repeat the last file with the given time interval."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1470
+#: scheduler/cupsfilter.c:1491
 msgid "  -j job-id[,N]           Filter file N from the specified job (default is file 1)."
 msgstr ""
 
-#: test/ippfind.c:2747
+#: test/ippfind.c:2729
 msgid "  -l                      List attributes."
 msgstr ""
 
-#: scheduler/main.c:2008
-msgid "  -l                      Run cupsd from launchd(8)."
+#: scheduler/main.c:2164
+msgid "  -l                      Run cupsd on demand."
 msgstr ""
 
-#: ppdc/ppdc.cxx:446
+#: ppdc/ppdc.cxx:441
 msgid "  -l lang[,lang,...]      Specify the output language(s) (locale)."
 msgstr ""
 
-#: ppdc/ppdc.cxx:448
+#: ppdc/ppdc.cxx:443
 msgid "  -m                      Use the ModelName value as the filename."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1472
+#: scheduler/cupsfilter.c:1492
 msgid "  -m mime/type            Set output MIME type (otherwise application/pdf)."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1474
+#: scheduler/cupsfilter.c:1493
 msgid "  -n copies               Set number of copies."
 msgstr ""
 
-#: test/ipptool.c:4732
+#: test/ipptool.c:4737
 msgid "  -n count                Repeat the last file the given number of times."
 msgstr ""
 
-#: test/ippfind.c:2748
+#: test/ippfind.c:2730
 msgid "  -n regex                Match service name to regular expression."
 msgstr ""
 
@@ -1301,19 +1305,19 @@ msgstr ""
 msgid "  -o filename.drv         Set driver information file (otherwise ppdi.drv)."
 msgstr ""
 
-#: ppdc/ppdmerge.cxx:370
+#: ppdc/ppdmerge.cxx:364
 msgid "  -o filename.ppd[.gz]    Set output file (otherwise stdout)."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1475
+#: scheduler/cupsfilter.c:1494
 msgid "  -o name=value           Set option(s)."
 msgstr ""
 
-#: test/ippfind.c:2749
+#: test/ippfind.c:2731
 msgid "  -p                      Print URI if true."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1476
+#: scheduler/cupsfilter.c:1495
 msgid "  -p filename.ppd         Set PPD file."
 msgstr ""
 
@@ -1321,15 +1325,15 @@ msgstr ""
 msgid "  -p program              Run specified program for each service."
 msgstr ""
 
-#: test/ippfind.c:2750
+#: test/ippfind.c:2732
 msgid "  -q                      Quietly report match via exit code."
 msgstr ""
 
-#: systemv/cupstestppd.c:3826 test/ipptool.c:4734
+#: systemv/cupstestppd.c:3826 test/ipptool.c:4739
 msgid "  -q                      Run silently."
 msgstr ""
 
-#: test/ippfind.c:2751
+#: test/ippfind.c:2733
 msgid "  -r                      True if service is remote."
 msgstr ""
 
@@ -1337,27 +1341,27 @@ msgstr ""
 msgid "  -r                      Use 'relaxed' open mode."
 msgstr ""
 
-#: test/ippfind.c:2752
+#: test/ippfind.c:2734
 msgid "  -s                      Print service name if true."
 msgstr ""
 
-#: test/ipptool.c:4735
+#: test/ipptool.c:4740
 msgid "  -t                      Produce a test report."
 msgstr ""
 
-#: ppdc/ppdc.cxx:450
+#: ppdc/ppdc.cxx:445
 msgid "  -t                      Test PPDs instead of generating them."
 msgstr ""
 
-#: scheduler/main.c:2009
+#: scheduler/main.c:2165
 msgid "  -t                      Test the configuration file."
 msgstr ""
 
-#: test/ippfind.c:2753
+#: test/ippfind.c:2735
 msgid "  -t key                  True if the TXT record contains the key."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1477
+#: scheduler/cupsfilter.c:1496
 msgid "  -t title                Set title."
 msgstr ""
 
@@ -1365,16 +1369,16 @@ msgstr ""
 msgid "  -t type                 Browse/resolve with specified type."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1478
+#: scheduler/cupsfilter.c:1497
 msgid "  -u                      Remove the PPD file when finished."
 msgstr ""
 
-#: test/ippfind.c:2754
+#: test/ippfind.c:2736
 msgid "  -u regex                Match URI to regular expression."
 msgstr ""
 
-#: systemv/cupsaddsmb.c:291 systemv/cupstestppd.c:3828 test/ipptool.c:4736
-#: ppdc/ppdc.cxx:452 ppdc/ppdpo.cxx:259
+#: systemv/cupsaddsmb.c:291 systemv/cupstestppd.c:3828 test/ipptool.c:4741
+#: ppdc/ppdc.cxx:447 ppdc/ppdpo.cxx:259
 msgid "  -v                      Be verbose."
 msgstr ""
 
@@ -1382,99 +1386,99 @@ msgstr ""
 msgid "  -vv                     Be very verbose."
 msgstr ""
 
-#: test/ippfind.c:2755
+#: test/ippfind.c:2737
 msgid ""
 "  -x utility [argument ...] ;\n"
 "                          Execute program if true."
 msgstr ""
 
-#: ppdc/ppdc.cxx:453
+#: ppdc/ppdc.cxx:448
 msgid "  -z                      Compress PPD files using GNU zip."
 msgstr ""
 
-#: test/ippfind.c:2798
+#: test/ippfind.c:2780
 msgid "  IPPFIND_SERVICE_DOMAIN  Domain name"
 msgstr ""
 
-#: test/ippfind.c:2799
+#: test/ippfind.c:2781
 msgid ""
 "  IPPFIND_SERVICE_HOSTNAME\n"
 "                          Fully-qualified domain name"
 msgstr ""
 
-#: test/ippfind.c:2801
+#: test/ippfind.c:2783
 msgid "  IPPFIND_SERVICE_NAME    Service instance name"
 msgstr ""
 
-#: test/ippfind.c:2802
+#: test/ippfind.c:2784
 msgid "  IPPFIND_SERVICE_PORT    Port number"
 msgstr ""
 
-#: test/ippfind.c:2803
+#: test/ippfind.c:2785
 msgid "  IPPFIND_SERVICE_REGTYPE DNS-SD registration type"
 msgstr ""
 
-#: test/ippfind.c:2804
+#: test/ippfind.c:2786
 msgid "  IPPFIND_SERVICE_SCHEME  URI scheme"
 msgstr ""
 
-#: test/ippfind.c:2805
+#: test/ippfind.c:2787
 msgid "  IPPFIND_SERVICE_URI     URI"
 msgstr ""
 
-#: test/ippfind.c:2806
+#: test/ippfind.c:2788
 msgid "  IPPFIND_TXT_*           Value of TXT record key"
 msgstr ""
 
-#: test/ippfind.c:2781
+#: test/ippfind.c:2763
 msgid ""
 "  expression --and expression\n"
 "                          Logical AND."
 msgstr ""
 
-#: test/ippfind.c:2783
+#: test/ippfind.c:2765
 msgid ""
 "  expression --or expression\n"
 "                          Logical OR."
 msgstr ""
 
-#: test/ippfind.c:2780
+#: test/ippfind.c:2762
 msgid "  expression expression   Logical AND."
 msgstr ""
 
-#: test/ippfind.c:2788
+#: test/ippfind.c:2770
 msgid "  {service_domain}        Domain name"
 msgstr ""
 
-#: test/ippfind.c:2789
+#: test/ippfind.c:2771
 msgid "  {service_hostname}      Fully-qualified domain name"
 msgstr ""
 
-#: test/ippfind.c:2790
+#: test/ippfind.c:2772
 msgid "  {service_name}          Service instance name"
 msgstr ""
 
-#: test/ippfind.c:2791
+#: test/ippfind.c:2773
 msgid "  {service_port}          Port number"
 msgstr ""
 
-#: test/ippfind.c:2792
+#: test/ippfind.c:2774
 msgid "  {service_regtype}       DNS-SD registration type"
 msgstr ""
 
-#: test/ippfind.c:2793
+#: test/ippfind.c:2775
 msgid "  {service_scheme}        URI scheme"
 msgstr ""
 
-#: test/ippfind.c:2794
+#: test/ippfind.c:2776
 msgid "  {service_uri}           URI"
 msgstr ""
 
-#: test/ippfind.c:2795
+#: test/ippfind.c:2777
 msgid "  {txt_*}                 Value of TXT record key"
 msgstr ""
 
-#: test/ippfind.c:2787
+#: test/ippfind.c:2769
 msgid "  {}                      URI"
 msgstr ""
 
@@ -1539,252 +1543,282 @@ msgstr ""
 msgid " PASS"
 msgstr ""
 
-#: cups/ipp.c:5254
+#: cups/ipp.c:5227
 #, c-format
 msgid "\"%s\": Bad URI value \"%s\" - %s (RFC 2911 section 4.1.5)."
 msgstr ""
 
-#: cups/ipp.c:5265
+#: cups/ipp.c:5238
 #, c-format
 msgid "\"%s\": Bad URI value \"%s\" - bad length %d (RFC 2911 section 4.1.5)."
 msgstr ""
 
-#: cups/ipp.c:4885
+#: cups/ipp.c:4858
 #, c-format
 msgid "\"%s\": Bad attribute name - bad length %d (RFC 2911 section 4.1.3)."
 msgstr ""
 
-#: cups/ipp.c:4877
+#: cups/ipp.c:4850
 #, c-format
 msgid "\"%s\": Bad attribute name - invalid character (RFC 2911 section 4.1.3)."
 msgstr ""
 
-#: cups/ipp.c:4903
+#: cups/ipp.c:4876
 #, c-format
 msgid "\"%s\": Bad boolen value %d (RFC 2911 section 4.1.11)."
 msgstr ""
 
-#: cups/ipp.c:5317
+#: cups/ipp.c:5290
 #, c-format
 msgid "\"%s\": Bad charset value \"%s\" - bad characters (RFC 2911 section 4.1.7)."
 msgstr ""
 
-#: cups/ipp.c:5326
+#: cups/ipp.c:5299
 #, c-format
 msgid "\"%s\": Bad charset value \"%s\" - bad length %d (RFC 2911 section 4.1.7)."
 msgstr ""
 
-#: cups/ipp.c:5003
+#: cups/ipp.c:4976
 #, c-format
 msgid "\"%s\": Bad dateTime UTC hours %u (RFC 2911 section 4.1.14)."
 msgstr ""
 
-#: cups/ipp.c:5011
+#: cups/ipp.c:4984
 #, c-format
 msgid "\"%s\": Bad dateTime UTC minutes %u (RFC 2911 section 4.1.14)."
 msgstr ""
 
-#: cups/ipp.c:4995
+#: cups/ipp.c:4968
 #, c-format
 msgid "\"%s\": Bad dateTime UTC sign '%c' (RFC 2911 section 4.1.14)."
 msgstr ""
 
-#: cups/ipp.c:4955
+#: cups/ipp.c:4928
 #, c-format
 msgid "\"%s\": Bad dateTime day %u (RFC 2911 section 4.1.14)."
 msgstr ""
 
-#: cups/ipp.c:4987
+#: cups/ipp.c:4960
 #, c-format
 msgid "\"%s\": Bad dateTime deciseconds %u (RFC 2911 section 4.1.14)."
 msgstr ""
 
-#: cups/ipp.c:4963
+#: cups/ipp.c:4936
 #, c-format
 msgid "\"%s\": Bad dateTime hours %u (RFC 2911 section 4.1.14)."
 msgstr ""
 
-#: cups/ipp.c:4971
+#: cups/ipp.c:4944
 #, c-format
 msgid "\"%s\": Bad dateTime minutes %u (RFC 2911 section 4.1.14)."
 msgstr ""
 
-#: cups/ipp.c:4947
+#: cups/ipp.c:4920
 #, c-format
 msgid "\"%s\": Bad dateTime month %u (RFC 2911 section 4.1.14)."
 msgstr ""
 
-#: cups/ipp.c:4979
+#: cups/ipp.c:4952
 #, c-format
 msgid "\"%s\": Bad dateTime seconds %u (RFC 2911 section 4.1.14)."
 msgstr ""
 
-#: cups/ipp.c:4917
+#: cups/ipp.c:4890
 #, c-format
 msgid "\"%s\": Bad enum value %d - out of range (RFC 2911 section 4.1.4)."
 msgstr ""
 
-#: cups/ipp.c:5232
+#: cups/ipp.c:5205
 #, c-format
 msgid "\"%s\": Bad keyword value \"%s\" - bad length %d (RFC 2911 section 4.1.3)."
 msgstr ""
 
-#: cups/ipp.c:5223
+#: cups/ipp.c:5196
 #, c-format
 msgid "\"%s\": Bad keyword value \"%s\" - invalid character (RFC 2911 section 4.1.3)."
 msgstr ""
 
-#: cups/ipp.c:5426
+#: cups/ipp.c:5399
 #, c-format
 msgid "\"%s\": Bad mimeMediaType value \"%s\" - bad characters (RFC 2911 section 4.1.9)."
 msgstr ""
 
-#: cups/ipp.c:5436
+#: cups/ipp.c:5409
 #, c-format
 msgid "\"%s\": Bad mimeMediaType value \"%s\" - bad length %d (RFC 2911 section 4.1.9)."
 msgstr ""
 
-#: cups/ipp.c:5194
+#: cups/ipp.c:5167
 #, c-format
 msgid "\"%s\": Bad name value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.2)."
 msgstr ""
 
-#: cups/ipp.c:5203
+#: cups/ipp.c:5176
 #, c-format
 msgid "\"%s\": Bad name value \"%s\" - bad length %d (RFC 2911 section 4.1.2)."
 msgstr ""
 
-#: cups/ipp.c:5372
+#: cups/ipp.c:5345
 #, c-format
 msgid "\"%s\": Bad naturalLanguage value \"%s\" - bad characters (RFC 2911 section 4.1.8)."
 msgstr ""
 
-#: cups/ipp.c:5382
+#: cups/ipp.c:5355
 #, c-format
 msgid "\"%s\": Bad naturalLanguage value \"%s\" - bad length %d (RFC 2911 section 4.1.8)."
 msgstr ""
 
-#: cups/ipp.c:4931
+#: cups/ipp.c:4904
 #, c-format
 msgid "\"%s\": Bad octetString value - bad length %d (RFC 2911 section 4.1.10)."
 msgstr ""
 
-#: cups/ipp.c:5074
+#: cups/ipp.c:5047
 #, c-format
 msgid "\"%s\": Bad rangeOfInteger value %d-%d - lower greater than upper (RFC 2911 section 4.1.13)."
 msgstr ""
 
-#: cups/ipp.c:5055
+#: cups/ipp.c:5028
 #, c-format
 msgid "\"%s\": Bad resolution value %dx%d%s - bad units value (RFC 2911 section 4.1.15)."
 msgstr ""
 
-#: cups/ipp.c:5024
+#: cups/ipp.c:4997
 #, 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:5039
+#: cups/ipp.c:5012
 #, 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:5136
+#: cups/ipp.c:5109
 #, c-format
 msgid "\"%s\": Bad text value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.1)."
 msgstr ""
 
-#: cups/ipp.c:5145
+#: cups/ipp.c:5118
 #, c-format
 msgid "\"%s\": Bad text value \"%s\" - bad length %d (RFC 2911 section 4.1.1)."
 msgstr ""
 
-#: cups/ipp.c:5288
+#: cups/ipp.c:5261
 #, c-format
 msgid "\"%s\": Bad uriScheme value \"%s\" - bad characters (RFC 2911 section 4.1.6)."
 msgstr ""
 
-#: cups/ipp.c:5297
+#: cups/ipp.c:5270
 #, c-format
 msgid "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 2911 section 4.1.6)."
 msgstr ""
 
-#: berkeley/lpq.c:565
+#: berkeley/lpq.c:533
 #, c-format
-msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
+msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
 msgstr ""
 
-#: berkeley/lpq.c:570
+#: cups/dest-localization.c:114
 #, c-format
-msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
+msgid "%d x %d mm"
+msgstr ""
+
+#: cups/dest-localization.c:106
+#, c-format
+msgid "%g x %g"
+msgstr ""
+
+#: cups/dest-localization.c:169 cups/dest-localization.c:176
+#, c-format
+msgid "%s (%s)"
+msgstr ""
+
+#: cups/dest-localization.c:183
+#, c-format
+msgid "%s (%s, %s)"
+msgstr ""
+
+#: cups/dest-localization.c:160
+#, c-format
+msgid "%s (Borderless)"
 msgstr ""
 
-#: systemv/lpstat.c:779
+#: cups/dest-localization.c:167 cups/dest-localization.c:174
+#, c-format
+msgid "%s (Borderless, %s)"
+msgstr ""
+
+#: cups/dest-localization.c:181
+#, c-format
+msgid "%s (Borderless, %s, %s)"
+msgstr ""
+
+#: systemv/lpstat.c:777
 #, c-format
 msgid "%s accepting requests since %s"
 msgstr ""
 
-#: scheduler/ipp.c:9867
+#: scheduler/ipp.c:9841
 #, c-format
 msgid "%s cannot be changed."
 msgstr ""
 
-#: berkeley/lpc.c:189
+#: berkeley/lpc.c:181
 #, c-format
 msgid "%s is not implemented by the CUPS version of lpc."
 msgstr ""
 
-#: berkeley/lpq.c:656
+#: berkeley/lpq.c:618
 #, c-format
 msgid "%s is not ready"
 msgstr ""
 
-#: berkeley/lpq.c:649
+#: berkeley/lpq.c:611
 #, c-format
 msgid "%s is ready"
 msgstr ""
 
-#: berkeley/lpq.c:652
+#: berkeley/lpq.c:614
 #, c-format
 msgid "%s is ready and printing"
 msgstr ""
 
-#: filter/rastertoepson.c:985 filter/rastertohp.c:711
-#: filter/rastertolabel.c:1128
+#: filter/rastertoepson.c:970 filter/rastertohp.c:700
+#: filter/rastertolabel.c:1120
 #, c-format
 msgid "%s job-id user title copies options [file]"
 msgstr ""
 
-#: systemv/lpstat.c:783
+#: systemv/lpstat.c:781
 #, c-format
 msgid "%s not accepting requests since %s -"
 msgstr ""
 
-#: scheduler/ipp.c:621
+#: scheduler/ipp.c:618
 #, c-format
 msgid "%s not supported."
 msgstr ""
 
-#: systemv/lpstat.c:794
+#: systemv/lpstat.c:792
 #, c-format
 msgid "%s/%s accepting requests since %s"
 msgstr ""
 
-#: systemv/lpstat.c:799
+#: systemv/lpstat.c:797
 #, c-format
 msgid "%s/%s not accepting requests since %s -"
 msgstr ""
 
-#: berkeley/lpq.c:557
+#: berkeley/lpq.c:526
 #, c-format
 msgid "%s: %-33.33s [job %d localhost]"
 msgstr ""
 
 #. TRANSLATORS: Message is "subject: error"
-#: cups/langprintf.c:86 scheduler/cupsfilter.c:698 systemv/lpadmin.c:805
-#: systemv/lpadmin.c:856 systemv/lpadmin.c:906 systemv/lpadmin.c:962
-#: systemv/lpadmin.c:1060 systemv/lpadmin.c:1112 systemv/lpadmin.c:1168
-#: systemv/lpadmin.c:1479
+#: cups/langprintf.c:77 scheduler/cupsfilter.c:726 systemv/lpadmin.c:791
+#: systemv/lpadmin.c:842 systemv/lpadmin.c:892 systemv/lpadmin.c:948
+#: systemv/lpadmin.c:1046 systemv/lpadmin.c:1098 systemv/lpadmin.c:1154
+#: systemv/lpadmin.c:1463
 #, c-format
 msgid "%s: %s"
 msgstr ""
@@ -1794,7 +1828,7 @@ msgstr ""
 msgid "%s: %s failed: %s"
 msgstr ""
 
-#: test/ippfind.c:797 test/ipptool.c:361
+#: test/ippfind.c:773 test/ipptool.c:376
 #, c-format
 msgid "%s: Bad version %s for \"-V\"."
 msgstr ""
@@ -1804,109 +1838,109 @@ msgstr ""
 msgid "%s: Don't know what to do."
 msgstr ""
 
-#: berkeley/lpq.c:237 berkeley/lpr.c:362 systemv/lp.c:608
+#: berkeley/lpq.c:225 berkeley/lpr.c:358 systemv/lp.c:602
 #, c-format
 msgid "%s: Error - %s environment variable names non-existent destination \"%s\"."
 msgstr ""
 
-#: berkeley/lpq.c:144 berkeley/lpq.c:215 berkeley/lpr.c:234 berkeley/lpr.c:337
-#: systemv/lp.c:163 systemv/lp.c:583 systemv/lp.c:703 systemv/lp.c:752
+#: 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:697
-#: systemv/lpstat.c:882 systemv/lpstat.c:1143 systemv/lpstat.c:1386
-#: systemv/lpstat.c:1645
+#: systemv/lpstat.c:510 systemv/lpstat.c:571 systemv/lpstat.c:696
+#: systemv/lpstat.c:880 systemv/lpstat.c:1141 systemv/lpstat.c:1338
+#: systemv/lpstat.c:1576
 #, c-format
 msgid "%s: Error - add '/version=1.1' to server name."
 msgstr ""
 
-#: systemv/lp.c:240
+#: systemv/lp.c:234
 #, c-format
 msgid "%s: Error - bad job ID."
 msgstr ""
 
-#: systemv/lp.c:228
+#: systemv/lp.c:222
 #, c-format
 msgid "%s: Error - cannot print files and alter jobs simultaneously."
 msgstr ""
 
-#: systemv/lp.c:521
+#: systemv/lp.c:515
 #, c-format
 msgid "%s: Error - cannot print from stdin if files or a job ID are provided."
 msgstr ""
 
-#: systemv/lp.c:470
+#: systemv/lp.c:464
 #, c-format
 msgid "%s: Error - expected character set after \"-S\" option."
 msgstr ""
 
-#: systemv/lp.c:489
+#: systemv/lp.c:483
 #, c-format
 msgid "%s: Error - expected content type after \"-T\" option."
 msgstr ""
 
-#: berkeley/lpr.c:249
+#: berkeley/lpr.c:245
 #, c-format
 msgid "%s: Error - expected copies after \"-#\" option."
 msgstr ""
 
-#: systemv/lp.c:273
+#: systemv/lp.c:267
 #, c-format
 msgid "%s: Error - expected copies after \"-n\" option."
 msgstr ""
 
-#: berkeley/lpr.c:210
+#: berkeley/lpr.c:206
 #, c-format
 msgid "%s: Error - expected destination after \"-P\" option."
 msgstr ""
 
-#: systemv/lp.c:138
+#: systemv/lp.c:132
 #, c-format
 msgid "%s: Error - expected destination after \"-d\" option."
 msgstr ""
 
-#: systemv/lp.c:177
+#: systemv/lp.c:171
 #, c-format
 msgid "%s: Error - expected form after \"-f\" option."
 msgstr ""
 
-#: systemv/lp.c:400
+#: systemv/lp.c:394
 #, c-format
 msgid "%s: Error - expected hold name after \"-H\" option."
 msgstr ""
 
-#: berkeley/lpr.c:104
+#: berkeley/lpr.c:100
 #, c-format
 msgid "%s: Error - expected hostname after \"-H\" option."
 msgstr ""
 
-#: berkeley/lpq.c:180 berkeley/lprm.c:123 systemv/cancel.c:124
-#: systemv/cupsaccept.c:123 systemv/lp.c:198 systemv/lpstat.c:266
+#: berkeley/lpq.c:169 berkeley/lprm.c:123 systemv/cancel.c:124
+#: systemv/cupsaccept.c:123 systemv/lp.c:192 systemv/lpstat.c:266
 #, c-format
 msgid "%s: Error - expected hostname after \"-h\" option."
 msgstr ""
 
-#: systemv/lp.c:380
+#: systemv/lp.c:374
 #, c-format
 msgid "%s: Error - expected mode list after \"-y\" option."
 msgstr ""
 
-#: berkeley/lpr.c:272
+#: berkeley/lpr.c:268
 #, c-format
 msgid "%s: Error - expected name after \"-%c\" option."
 msgstr ""
 
-#: berkeley/lpr.c:154 systemv/lp.c:297
+#: berkeley/lpr.c:150 systemv/lp.c:291
 #, c-format
 msgid "%s: Error - expected option=value after \"-o\" option."
 msgstr ""
 
-#: systemv/lp.c:450
+#: systemv/lp.c:444
 #, c-format
 msgid "%s: Error - expected page list after \"-P\" option."
 msgstr ""
 
-#: systemv/lp.c:317
+#: systemv/lp.c:311
 #, c-format
 msgid "%s: Error - expected priority after \"-%c\" option."
 msgstr ""
@@ -1916,14 +1950,14 @@ msgstr ""
 msgid "%s: Error - expected reason text after \"-r\" option."
 msgstr ""
 
-#: systemv/lp.c:363
+#: systemv/lp.c:357
 #, c-format
 msgid "%s: Error - expected title after \"-t\" option."
 msgstr ""
 
-#: berkeley/lpq.c:108 berkeley/lpr.c:85 berkeley/lprm.c:104
-#: systemv/cancel.c:95 systemv/cupsaccept.c:101 systemv/lp.c:116
-#: systemv/lpadmin.c:438 systemv/lpstat.c:124
+#: 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:424
+#: systemv/lpstat.c:124
 #, c-format
 msgid "%s: Error - expected username after \"-U\" option."
 msgstr ""
@@ -1933,7 +1967,7 @@ msgstr ""
 msgid "%s: Error - expected username after \"-u\" option."
 msgstr ""
 
-#: berkeley/lpr.c:126
+#: berkeley/lpr.c:122
 #, c-format
 msgid "%s: Error - expected value after \"-%c\" option."
 msgstr ""
@@ -1943,32 +1977,32 @@ msgstr ""
 msgid "%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" option."
 msgstr ""
 
-#: berkeley/lpq.c:242 berkeley/lpr.c:367 systemv/lp.c:613
+#: berkeley/lpq.c:230 berkeley/lpr.c:363 systemv/lp.c:607
 #, c-format
 msgid "%s: Error - no default destination available."
 msgstr ""
 
-#: systemv/lp.c:339
+#: systemv/lp.c:333
 #, c-format
 msgid "%s: Error - priority must be between 1 and 100."
 msgstr ""
 
-#: berkeley/lpr.c:370 systemv/lp.c:616
+#: berkeley/lpr.c:366 systemv/lp.c:610
 #, c-format
 msgid "%s: Error - scheduler not responding."
 msgstr ""
 
-#: berkeley/lpr.c:315 systemv/lp.c:553
+#: berkeley/lpr.c:311 systemv/lp.c:547
 #, c-format
 msgid "%s: Error - too many files - \"%s\"."
 msgstr ""
 
-#: berkeley/lpr.c:297 systemv/lp.c:536
+#: berkeley/lpr.c:293 systemv/lp.c:530
 #, c-format
 msgid "%s: Error - unable to access \"%s\" - %s"
 msgstr ""
 
-#: berkeley/lpr.c:413 systemv/lp.c:647
+#: berkeley/lpr.c:409 systemv/lp.c:641
 #, c-format
 msgid "%s: Error - unable to queue from stdin - %s."
 msgstr ""
@@ -1978,23 +2012,23 @@ msgstr ""
 msgid "%s: Error - unknown destination \"%s\"."
 msgstr ""
 
-#: berkeley/lpq.c:148
+#: berkeley/lpq.c:137
 #, c-format
 msgid "%s: Error - unknown destination \"%s/%s\"."
 msgstr ""
 
-#: berkeley/lpr.c:283 berkeley/lprm.c:139 systemv/cancel.c:163
-#: systemv/cupsaccept.c:164 systemv/lp.c:512 systemv/lpstat.c:456
+#: berkeley/lpr.c:279 berkeley/lprm.c:139 systemv/cancel.c:163
+#: systemv/cupsaccept.c:164 systemv/lp.c:506 systemv/lpstat.c:456
 #, c-format
 msgid "%s: Error - unknown option \"%c\"."
 msgstr ""
 
-#: systemv/cupsaccept.c:157 systemv/lp.c:503
+#: systemv/cupsaccept.c:157 systemv/lp.c:497
 #, c-format
 msgid "%s: Error - unknown option \"%s\"."
 msgstr ""
 
-#: systemv/lp.c:217
+#: systemv/lp.c:211
 #, c-format
 msgid "%s: Expected job ID after \"-i\" option."
 msgstr ""
@@ -2004,27 +2038,32 @@ msgstr ""
 msgid "%s: Invalid destination name in list \"%s\"."
 msgstr ""
 
-#: scheduler/cupsfilter.c:551
+#: scheduler/cupsfilter.c:579
 #, c-format
 msgid "%s: Invalid filter string \"%s\"."
 msgstr ""
 
-#: test/ippfind.c:768 test/ipptool.c:329
+#: test/ipptool.c:307
+#, c-format
+msgid "%s: Missing filename for \"-P\"."
+msgstr ""
+
+#: test/ippfind.c:745 test/ipptool.c:344
 #, c-format
 msgid "%s: Missing timeout for \"-T\"."
 msgstr ""
 
-#: test/ippfind.c:781 test/ipptool.c:343
+#: test/ippfind.c:758 test/ipptool.c:358
 #, c-format
 msgid "%s: Missing version for \"-V\"."
 msgstr ""
 
-#: systemv/lp.c:427
+#: systemv/lp.c:421
 #, c-format
 msgid "%s: Need job ID (\"-i jobid\") before \"-H restart\"."
 msgstr ""
 
-#: scheduler/cupsfilter.c:442
+#: scheduler/cupsfilter.c:451
 #, c-format
 msgid "%s: No filter to convert from %s/%s to %s/%s."
 msgstr ""
@@ -2034,15 +2073,15 @@ msgstr ""
 msgid "%s: Operation failed: %s"
 msgstr ""
 
-#: berkeley/lpq.c:94 berkeley/lpr.c:71 berkeley/lprm.c:67 systemv/cancel.c:82
-#: systemv/cupsaccept.c:88 systemv/cupsaddsmb.c:86 systemv/lp.c:102
-#: systemv/lpadmin.c:239 systemv/lpinfo.c:88 systemv/lpmove.c:73
-#: systemv/lpstat.c:88 test/ipptool.c:301 test/ipptool.c:318
+#: 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:225 systemv/lpinfo.c:88 systemv/lpmove.c:73
+#: systemv/lpstat.c:88 test/ipptool.c:289 test/ipptool.c:333
 #, c-format
 msgid "%s: Sorry, no encryption support."
 msgstr ""
 
-#: berkeley/lpq.c:296 scheduler/cupsfilter.c:1247 systemv/cancel.c:245
+#: berkeley/lpq.c:284 scheduler/cupsfilter.c:1275 systemv/cancel.c:245
 #: systemv/cupsaddsmb.c:144 systemv/cupsaddsmb.c:171
 #, c-format
 msgid "%s: Unable to connect to server."
@@ -2053,77 +2092,82 @@ msgstr ""
 msgid "%s: Unable to contact server."
 msgstr ""
 
-#: scheduler/cupsfilter.c:407
+#: scheduler/cupsfilter.c:416
 #, c-format
 msgid "%s: Unable to determine MIME type of \"%s\"."
 msgstr ""
 
-#: ppdc/ppdmerge.cxx:96
+#: test/ipptool.c:316
+#, c-format
+msgid "%s: Unable to open \"%s\": %s"
+msgstr ""
+
+#: ppdc/ppdmerge.cxx:90
 #, c-format
 msgid "%s: Unable to open %s: %s"
 msgstr ""
 
-#: scheduler/cupsfilter.c:646 ppdc/ppdmerge.cxx:112
+#: scheduler/cupsfilter.c:674 ppdc/ppdmerge.cxx:106
 #, c-format
 msgid "%s: Unable to open PPD file: %s on line %d."
 msgstr ""
 
-#: scheduler/cupsfilter.c:374
+#: scheduler/cupsfilter.c:383
 #, c-format
 msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"."
 msgstr ""
 
-#: berkeley/lpq.c:151 systemv/lpstat.c:575
+#: berkeley/lpq.c:140 systemv/lpstat.c:575
 #, c-format
 msgid "%s: Unknown destination \"%s\"."
 msgstr ""
 
-#: scheduler/cupsfilter.c:419
+#: scheduler/cupsfilter.c:428
 #, c-format
 msgid "%s: Unknown destination MIME type %s/%s."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1453
+#: scheduler/cupsfilter.c:1479
 #, c-format
 msgid "%s: Unknown option \"%c\"."
 msgstr ""
 
-#: test/ippfind.c:667
+#: test/ippfind.c:644
 #, c-format
 msgid "%s: Unknown option \"%s\"."
 msgstr ""
 
-#: test/ippfind.c:948
+#: test/ippfind.c:924
 #, c-format
 msgid "%s: Unknown option \"-%c\"."
 msgstr ""
 
-#: scheduler/cupsfilter.c:399
+#: scheduler/cupsfilter.c:408
 #, c-format
 msgid "%s: Unknown source MIME type %s/%s."
 msgstr ""
 
-#: berkeley/lpr.c:140
+#: berkeley/lpr.c:136
 #, c-format
 msgid "%s: Warning - \"%c\" format modifier not supported - output may not be correct."
 msgstr ""
 
-#: systemv/lp.c:477
+#: systemv/lp.c:471
 #, c-format
 msgid "%s: Warning - character set option ignored."
 msgstr ""
 
-#: systemv/lp.c:496
+#: systemv/lp.c:490
 #, c-format
 msgid "%s: Warning - content type option ignored."
 msgstr ""
 
-#: systemv/lp.c:184
+#: systemv/lp.c:178
 #, c-format
 msgid "%s: Warning - form option ignored."
 msgstr ""
 
-#: systemv/lp.c:387
+#: systemv/lp.c:381
 #, c-format
 msgid "%s: Warning - mode option ignored."
 msgstr ""
@@ -2920,24 +2964,24 @@ msgstr ""
 msgid "95"
 msgstr ""
 
-#: berkeley/lpc.c:213
+#: berkeley/lpc.c:205
 msgid "?Invalid help command unknown."
 msgstr ""
 
-#: cgi-bin/admin.c:2368
+#: cgi-bin/admin.c:2348
 msgid "A Samba password is required to export printer drivers"
 msgstr ""
 
-#: cgi-bin/admin.c:2364
+#: cgi-bin/admin.c:2344
 msgid "A Samba username is required to export printer drivers"
 msgstr ""
 
-#: scheduler/ipp.c:2293
+#: scheduler/ipp.c:2273
 #, c-format
 msgid "A class named \"%s\" already exists."
 msgstr ""
 
-#: scheduler/ipp.c:936
+#: scheduler/ipp.c:916
 #, c-format
 msgid "A printer named \"%s\" already exists."
 msgstr ""
@@ -3078,24 +3122,24 @@ msgstr ""
 msgid "ARCH E Long Edge"
 msgstr ""
 
-#: cgi-bin/classes.c:169 cgi-bin/printers.c:172
+#: cgi-bin/classes.c:161 cgi-bin/printers.c:164
 msgid "Accept Jobs"
 msgstr ""
 
-#: cups/http-support.c:1359
+#: cups/http-support.c:1347
 msgid "Accepted"
 msgstr ""
 
-#: cgi-bin/admin.c:570
+#: cgi-bin/admin.c:548
 msgid "Add Class"
 msgstr ""
 
-#: cgi-bin/admin.c:882
+#: cgi-bin/admin.c:860
 msgid "Add Printer"
 msgstr ""
 
-#: cgi-bin/admin.c:444 cgi-bin/admin.c:477 cgi-bin/admin.c:525
-#: cgi-bin/admin.c:535
+#: cgi-bin/admin.c:422 cgi-bin/admin.c:455 cgi-bin/admin.c:503
+#: cgi-bin/admin.c:513
 msgid "Add RSS Subscription"
 msgstr ""
 
@@ -3103,7 +3147,7 @@ msgstr ""
 msgid "Address"
 msgstr ""
 
-#: cgi-bin/admin.c:210 cgi-bin/admin.c:284 cgi-bin/admin.c:2745
+#: cgi-bin/admin.c:188 cgi-bin/admin.c:262 cgi-bin/admin.c:2725
 msgid "Administration"
 msgstr ""
 
@@ -3111,7 +3155,7 @@ msgstr ""
 msgid "Always"
 msgstr ""
 
-#: backend/socket.c:126
+#: backend/socket.c:121
 msgid "AppSocket/HP JetDirect"
 msgstr ""
 
@@ -3119,12 +3163,12 @@ msgstr ""
 msgid "Applicator"
 msgstr ""
 
-#: scheduler/ipp.c:1011
+#: scheduler/ipp.c:991
 #, c-format
 msgid "Attempt to set %s printer-state to bad value %d."
 msgstr ""
 
-#: scheduler/ipp.c:242
+#: scheduler/ipp.c:239
 #, c-format
 msgid "Attribute groups are out of order (%x < %x)."
 msgstr ""
@@ -3177,177 +3221,205 @@ msgstr ""
 msgid "B9"
 msgstr ""
 
-#: scheduler/ipp.c:10793
+#: scheduler/ipp.c:10764
 #, c-format
 msgid "Bad 'document-format' value \"%s\"."
 msgstr ""
 
-#: cups/dest.c:1712
+#: cups/dest.c:1736
 msgid "Bad NULL dests pointer"
 msgstr ""
 
-#: cups/ppd.c:345
+#: cups/ppd.c:303
 msgid "Bad OpenGroup"
 msgstr ""
 
-#: cups/ppd.c:347
+#: cups/ppd.c:305
 msgid "Bad OpenUI/JCLOpenUI"
 msgstr ""
 
-#: cups/ppd.c:349
+#: cups/ppd.c:307
 msgid "Bad OrderDependency"
 msgstr ""
 
-#: cups/ppd-cache.c:149 cups/ppd-cache.c:196 cups/ppd-cache.c:234
-#: cups/ppd-cache.c:240 cups/ppd-cache.c:256 cups/ppd-cache.c:272
-#: cups/ppd-cache.c:281 cups/ppd-cache.c:289 cups/ppd-cache.c:306
-#: cups/ppd-cache.c:314 cups/ppd-cache.c:329 cups/ppd-cache.c:337
-#: cups/ppd-cache.c:358 cups/ppd-cache.c:370 cups/ppd-cache.c:385
-#: cups/ppd-cache.c:397 cups/ppd-cache.c:419 cups/ppd-cache.c:427
-#: cups/ppd-cache.c:445 cups/ppd-cache.c:453 cups/ppd-cache.c:468
-#: cups/ppd-cache.c:476 cups/ppd-cache.c:494 cups/ppd-cache.c:502
-#: cups/ppd-cache.c:529 cups/ppd-cache.c:599 cups/ppd-cache.c:607
-#: cups/ppd-cache.c:615
+#: cups/ppd-cache.c:117 cups/ppd-cache.c:164 cups/ppd-cache.c:202
+#: cups/ppd-cache.c:208 cups/ppd-cache.c:224 cups/ppd-cache.c:240
+#: cups/ppd-cache.c:249 cups/ppd-cache.c:257 cups/ppd-cache.c:274
+#: cups/ppd-cache.c:282 cups/ppd-cache.c:297 cups/ppd-cache.c:305
+#: cups/ppd-cache.c:326 cups/ppd-cache.c:338 cups/ppd-cache.c:353
+#: cups/ppd-cache.c:365 cups/ppd-cache.c:387 cups/ppd-cache.c:395
+#: cups/ppd-cache.c:413 cups/ppd-cache.c:421 cups/ppd-cache.c:436
+#: cups/ppd-cache.c:444 cups/ppd-cache.c:462 cups/ppd-cache.c:470
+#: cups/ppd-cache.c:497 cups/ppd-cache.c:567 cups/ppd-cache.c:575
+#: cups/ppd-cache.c:583
 msgid "Bad PPD cache file."
 msgstr ""
 
-#: cups/http-support.c:1374
+#: cups/http-support.c:1362
 msgid "Bad Request"
 msgstr ""
 
-#: cups/snmp.c:998
+#: cups/snmp.c:954
 msgid "Bad SNMP version number"
 msgstr ""
 
-#: cups/ppd.c:350
+#: cups/ppd.c:308
 msgid "Bad UIConstraints"
 msgstr ""
 
-#: scheduler/ipp.c:1372
+#: cups/http-support.c:1456
+msgid "Bad arguments to function"
+msgstr ""
+
+#: scheduler/ipp.c:1352
 #, c-format
 msgid "Bad copies value %d."
 msgstr ""
 
-#: cups/ppd.c:358
+#: cups/ppd.c:316
 msgid "Bad custom parameter"
 msgstr ""
 
-#: cups/http-support.c:1526 scheduler/ipp.c:2379
+#: cups/http-support.c:1598 scheduler/ipp.c:2359
 #, c-format
 msgid "Bad device-uri \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:2418
+#: scheduler/ipp.c:2398
 #, c-format
 msgid "Bad device-uri scheme \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:8039 scheduler/ipp.c:8055 scheduler/ipp.c:9276
+#: scheduler/ipp.c:8016 scheduler/ipp.c:8032 scheduler/ipp.c:9250
 #, c-format
 msgid "Bad document-format \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:9292
+#: scheduler/ipp.c:9266
 #, c-format
 msgid "Bad document-format-default \"%s\"."
 msgstr ""
 
-#: cups/util.c:932
+#: cups/util.c:896
 msgid "Bad filename buffer"
 msgstr ""
 
-#: scheduler/ipp.c:1548
+#: cups/http-support.c:1465
+msgid "Bad hostname/address in URI"
+msgstr ""
+
+#: scheduler/ipp.c:1528
 #, c-format
 msgid "Bad job-name value: %s"
 msgstr ""
 
-#: scheduler/ipp.c:1541
+#: scheduler/ipp.c:1521
 msgid "Bad job-name value: Wrong type or count."
 msgstr ""
 
-#: scheduler/ipp.c:9882
+#: scheduler/ipp.c:9856
 msgid "Bad job-priority value."
 msgstr ""
 
-#: scheduler/ipp.c:1402
+#: scheduler/ipp.c:1382
 #, c-format
 msgid "Bad job-sheets value \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:1386
+#: scheduler/ipp.c:1366
 msgid "Bad job-sheets value type."
 msgstr ""
 
-#: scheduler/ipp.c:9912
+#: scheduler/ipp.c:9886
 msgid "Bad job-state value."
 msgstr ""
 
-#: scheduler/ipp.c:3001 scheduler/ipp.c:3461 scheduler/ipp.c:5904
-#: scheduler/ipp.c:6051 scheduler/ipp.c:7473 scheduler/ipp.c:7742
-#: scheduler/ipp.c:8591 scheduler/ipp.c:8817 scheduler/ipp.c:9172
-#: scheduler/ipp.c:9775
+#: scheduler/ipp.c:2981 scheduler/ipp.c:3441 scheduler/ipp.c:5881
+#: scheduler/ipp.c:6028 scheduler/ipp.c:7450 scheduler/ipp.c:7719
+#: scheduler/ipp.c:8568 scheduler/ipp.c:8794 scheduler/ipp.c:9146
+#: scheduler/ipp.c:9749
 #, c-format
 msgid "Bad job-uri \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:2059 scheduler/ipp.c:5442
+#: scheduler/ipp.c:2039 scheduler/ipp.c:5419
 #, c-format
 msgid "Bad notify-pull-method \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:2023 scheduler/ipp.c:5406
+#: scheduler/ipp.c:2003 scheduler/ipp.c:5383
 #, c-format
 msgid "Bad notify-recipient-uri \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:1418
+#: scheduler/ipp.c:1398
 #, c-format
 msgid "Bad number-up value %d."
 msgstr ""
 
-#: cups/adminutil.c:292
+#: cups/adminutil.c:281
 #, c-format
 msgid "Bad option + choice on line %d."
 msgstr ""
 
-#: scheduler/ipp.c:1435
+#: scheduler/ipp.c:1415
 #, c-format
 msgid "Bad page-ranges values %d-%d."
 msgstr ""
 
-#: scheduler/ipp.c:2461
-#, c-format
-msgid "Bad port-monitor \"%s\"."
+#: cups/http-support.c:1462
+msgid "Bad port number in URI"
 msgstr ""
 
-#: cups/dest.c:677 cups/dest.c:1364
-msgid "Bad printer URI."
+#: scheduler/ipp.c:2441
+#, c-format
+msgid "Bad port-monitor \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:2522
+#: scheduler/ipp.c:2502
 #, c-format
 msgid "Bad printer-state value %d."
 msgstr ""
 
-#: scheduler/ipp.c:210
+#: cups/dest.c:610 cups/dest.c:1296 cups/dest.c:1343
+msgid "Bad printer-uri."
+msgstr ""
+
+#: scheduler/ipp.c:207
 #, c-format
 msgid "Bad request ID %d."
 msgstr ""
 
-#: scheduler/ipp.c:195
+#: scheduler/ipp.c:192
 #, c-format
 msgid "Bad request version number %d.%d."
 msgstr ""
 
-#: cgi-bin/admin.c:1484
+#: cups/http-support.c:1459
+msgid "Bad resource in URI"
+msgstr ""
+
+#: cups/http-support.c:1471
+msgid "Bad scheme in URI"
+msgstr ""
+
+#: cgi-bin/admin.c:1464
 msgid "Bad subscription ID"
 msgstr ""
 
-#: cups/ppd.c:360
+#: cups/http-support.c:1468
+msgid "Bad username in URI"
+msgstr ""
+
+#: cups/ppd.c:318
 msgid "Bad value string"
 msgstr ""
 
-#: cgi-bin/admin.c:3290 cgi-bin/admin.c:3536
+#: cups/http-support.c:1474
+msgid "Bad/empty URI"
+msgstr ""
+
+#: cgi-bin/admin.c:3270 cgi-bin/admin.c:3516
 msgid "Banners"
 msgstr ""
 
@@ -3355,12 +3427,12 @@ msgstr ""
 msgid "Bond Paper"
 msgstr ""
 
-#: backend/usb-darwin.c:1873
+#: backend/usb-darwin.c:1874
 #, c-format
 msgid "Boolean expected for waiteof option \"%s\"."
 msgstr ""
 
-#: filter/pstops.c:2058
+#: filter/pstops.c:2029
 msgid "Buffer overflow detected, aborting."
 msgstr ""
 
@@ -3372,15 +3444,19 @@ msgstr ""
 msgid "CPCL Label Printer"
 msgstr ""
 
-#: cgi-bin/admin.c:1485 cgi-bin/admin.c:1524 cgi-bin/admin.c:1534
+#: cgi-bin/classes.c:165 cgi-bin/printers.c:168
+msgid "Cancel Jobs"
+msgstr ""
+
+#: cgi-bin/admin.c:1465 cgi-bin/admin.c:1504 cgi-bin/admin.c:1514
 msgid "Cancel RSS Subscription"
 msgstr ""
 
-#: backend/ipp.c:2139
+#: backend/ipp.c:2186
 msgid "Canceling print job."
 msgstr ""
 
-#: scheduler/ipp.c:2502
+#: scheduler/ipp.c:2482
 msgid "Cannot share a remote Kerberized printer."
 msgstr ""
 
@@ -3388,25 +3464,25 @@ msgstr ""
 msgid "Cassette"
 msgstr ""
 
-#: cgi-bin/admin.c:1655 cgi-bin/admin.c:1797 cgi-bin/admin.c:1810
-#: cgi-bin/admin.c:1821
+#: cgi-bin/admin.c:1635 cgi-bin/admin.c:1777 cgi-bin/admin.c:1790
+#: cgi-bin/admin.c:1801
 msgid "Change Settings"
 msgstr ""
 
-#: scheduler/ipp.c:2071 scheduler/ipp.c:5454
+#: scheduler/ipp.c:2051 scheduler/ipp.c:5431
 #, c-format
 msgid "Character set \"%s\" not supported."
 msgstr ""
 
-#: cgi-bin/classes.c:195 cgi-bin/classes.c:322
+#: cgi-bin/classes.c:187 cgi-bin/classes.c:314
 msgid "Classes"
 msgstr ""
 
-#: cgi-bin/printers.c:182
+#: cgi-bin/printers.c:174
 msgid "Clean Print Heads"
 msgstr ""
 
-#: scheduler/ipp.c:3913
+#: scheduler/ipp.c:3893
 msgid "Close-Job doesn't support the job-uri attribute."
 msgstr ""
 
@@ -3418,26 +3494,26 @@ msgstr ""
 msgid "Color Mode"
 msgstr ""
 
-#: berkeley/lpc.c:204
+#: berkeley/lpc.c:196
 msgid ""
 "Commands may be abbreviated.  Commands are:\n"
 "\n"
 "exit    help    quit    status  ?"
 msgstr ""
 
-#: cups/snmp.c:1002
+#: cups/snmp.c:958
 msgid "Community name uses indefinite length"
 msgstr ""
 
-#: backend/ipp.c:813 backend/lpd.c:888 backend/socket.c:405
+#: backend/ipp.c:842 backend/lpd.c:879 backend/socket.c:400
 msgid "Connected to printer."
 msgstr ""
 
-#: backend/ipp.c:718 backend/lpd.c:711 backend/socket.c:324
+#: backend/ipp.c:747 backend/lpd.c:702 backend/socket.c:319
 msgid "Connecting to printer."
 msgstr ""
 
-#: cups/http-support.c:1347
+#: cups/http-support.c:1335
 msgid "Continue"
 msgstr ""
 
@@ -3445,19 +3521,19 @@ msgstr ""
 msgid "Continuous"
 msgstr ""
 
-#: backend/lpd.c:1037 backend/lpd.c:1169
+#: backend/lpd.c:1028 backend/lpd.c:1160
 msgid "Control file sent successfully."
 msgstr ""
 
-#: backend/ipp.c:1309 backend/lpd.c:481
+#: backend/ipp.c:1337 backend/lpd.c:472
 msgid "Copying print data."
 msgstr ""
 
-#: cups/http-support.c:1356
+#: cups/http-support.c:1344
 msgid "Created"
 msgstr ""
 
-#: cups/ppd.c:1113 cups/ppd.c:1153 cups/ppd.c:1398 cups/ppd.c:1501
+#: cups/ppd.c:1069 cups/ppd.c:1109 cups/ppd.c:1354 cups/ppd.c:1457
 msgid "Custom"
 msgstr ""
 
@@ -3485,15 +3561,15 @@ msgstr ""
 msgid "Darkness"
 msgstr ""
 
-#: backend/lpd.c:1122
+#: backend/lpd.c:1113
 msgid "Data file sent successfully."
 msgstr ""
 
-#: cgi-bin/admin.c:2094 cgi-bin/admin.c:2105 cgi-bin/admin.c:2150
+#: cgi-bin/admin.c:2074 cgi-bin/admin.c:2085 cgi-bin/admin.c:2130
 msgid "Delete Class"
 msgstr ""
 
-#: cgi-bin/admin.c:2179 cgi-bin/admin.c:2190 cgi-bin/admin.c:2235
+#: cgi-bin/admin.c:2159 cgi-bin/admin.c:2170 cgi-bin/admin.c:2215
 msgid "Delete Printer"
 msgstr ""
 
@@ -3501,7 +3577,7 @@ msgstr ""
 msgid "DeskJet Series"
 msgstr ""
 
-#: scheduler/ipp.c:1296
+#: scheduler/ipp.c:1276
 #, c-format
 msgid "Destination \"%s\" is not accepting jobs."
 msgstr ""
@@ -3550,7 +3626,7 @@ msgstr ""
 msgid "Disabled"
 msgstr ""
 
-#: scheduler/ipp.c:5953
+#: scheduler/ipp.c:5930
 #, c-format
 msgid "Document #%d does not exist in job #%d."
 msgstr ""
@@ -3571,18 +3647,22 @@ msgstr ""
 msgid "EPL2 Label Printer"
 msgstr ""
 
-#: cgi-bin/admin.c:1849 cgi-bin/admin.c:1861 cgi-bin/admin.c:1915
-#: cgi-bin/admin.c:1922 cgi-bin/admin.c:1957 cgi-bin/admin.c:1970
-#: cgi-bin/admin.c:1994 cgi-bin/admin.c:2067
+#: cgi-bin/admin.c:1829 cgi-bin/admin.c:1841 cgi-bin/admin.c:1895
+#: cgi-bin/admin.c:1902 cgi-bin/admin.c:1937 cgi-bin/admin.c:1950
+#: cgi-bin/admin.c:1974 cgi-bin/admin.c:2047
 msgid "Edit Configuration File"
 msgstr ""
 
-#: cups/adminutil.c:337
+#: cups/adminutil.c:326
 msgid "Empty PPD file."
 msgstr ""
 
+#: cups/http.c:4609
+msgid "Encryption is not supported."
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet after the print job.
-#: cgi-bin/admin.c:3561
+#: cgi-bin/admin.c:3541
 msgid "Ending Banner"
 msgstr ""
 
@@ -3590,19 +3670,7 @@ msgstr ""
 msgid "English"
 msgstr ""
 
-#: systemv/lppasswd.c:193
-msgid "Enter old password:"
-msgstr ""
-
-#: systemv/lppasswd.c:224
-msgid "Enter password again:"
-msgstr ""
-
-#: systemv/lppasswd.c:212
-msgid "Enter password:"
-msgstr ""
-
-#: scheduler/client.c:2510
+#: scheduler/client.c:2203
 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 ""
 
@@ -3818,7 +3886,7 @@ msgstr ""
 msgid "Envelope You4 Long Edge"
 msgstr ""
 
-#: test/ippfind.c:2797
+#: test/ippfind.c:2779
 msgid "Environment Variables:"
 msgstr ""
 
@@ -3826,12 +3894,12 @@ msgstr ""
 msgid "Epson"
 msgstr ""
 
-#: cgi-bin/admin.c:3604
+#: cgi-bin/admin.c:3584
 msgid "Error Policy"
 msgstr ""
 
-#: filter/rastertopwg.c:403 filter/rastertopwg.c:418 filter/rastertopwg.c:429
-#: filter/rastertopwg.c:440
+#: filter/rastertopwg.c:395 filter/rastertopwg.c:410 filter/rastertopwg.c:421
+#: filter/rastertopwg.c:432
 msgid "Error sending raster data."
 msgstr ""
 
@@ -3883,15 +3951,15 @@ msgstr ""
 msgid "Executive"
 msgstr ""
 
-#: cups/http-support.c:1402
+#: cups/http-support.c:1390
 msgid "Expectation Failed"
 msgstr ""
 
-#: cgi-bin/admin.c:2356 cgi-bin/admin.c:2375
+#: cgi-bin/admin.c:2336 cgi-bin/admin.c:2355
 msgid "Export Printers to Samba"
 msgstr ""
 
-#: test/ippfind.c:2743
+#: test/ippfind.c:2725
 msgid "Expressions:"
 msgstr ""
 
@@ -3946,13 +4014,13 @@ msgstr ""
 msgid "File Folder "
 msgstr ""
 
-#: scheduler/ipp.c:2397
+#: scheduler/ipp.c:2377
 #, c-format
 msgid "File device URIs have been disabled. To enable, see the FileDevice directive in \"%s/cups-files.conf\"."
 msgstr ""
 
-#: filter/rastertoepson.c:1117 filter/rastertohp.c:845
-#: filter/rastertolabel.c:1267
+#: filter/rastertoepson.c:1102 filter/rastertohp.c:834
+#: filter/rastertolabel.c:1259
 #, c-format
 msgid "Finished page %d."
 msgstr ""
@@ -3961,11 +4029,11 @@ msgstr ""
 msgid "Folio"
 msgstr ""
 
-#: cups/http-support.c:1381
+#: cups/http-support.c:1369
 msgid "Forbidden"
 msgstr ""
 
-#: cups/ppd.c:742 cups/ppd.c:1302
+#: cups/ppd.c:700 cups/ppd.c:1258
 msgid "General"
 msgstr ""
 
@@ -3973,7 +4041,7 @@ msgstr ""
 msgid "Generic"
 msgstr ""
 
-#: cups/snmp.c:1012
+#: cups/snmp.c:968
 msgid "Get-Response-PDU uses indefinite length"
 msgstr ""
 
@@ -3981,10 +4049,10 @@ msgstr ""
 msgid "Glossy Paper"
 msgstr ""
 
-#: scheduler/ipp.c:2979 scheduler/ipp.c:3387 scheduler/ipp.c:3925
-#: scheduler/ipp.c:5882 scheduler/ipp.c:6029 scheduler/ipp.c:7450
-#: scheduler/ipp.c:8569 scheduler/ipp.c:8795 scheduler/ipp.c:9150
-#: scheduler/ipp.c:9753
+#: scheduler/ipp.c:2959 scheduler/ipp.c:3367 scheduler/ipp.c:3905
+#: scheduler/ipp.c:5859 scheduler/ipp.c:6006 scheduler/ipp.c:7427
+#: scheduler/ipp.c:8546 scheduler/ipp.c:8772 scheduler/ipp.c:9124
+#: scheduler/ipp.c:9727
 msgid "Got a printer-uri attribute but no job-id."
 msgstr ""
 
@@ -4004,95 +4072,95 @@ msgstr ""
 msgid "Help file not in index."
 msgstr ""
 
-#: cups/ipp.c:3209 cups/ipp.c:3236 cups/ipp.c:3259
+#: cups/ipp.c:3183 cups/ipp.c:3210 cups/ipp.c:3233
 msgid "IPP 1setOf attribute with incompatible value tags."
 msgstr ""
 
-#: cups/ipp.c:3172
+#: cups/ipp.c:3146
 msgid "IPP attribute has no name."
 msgstr ""
 
-#: cups/ipp.c:7026
+#: cups/ipp.c:7000
 msgid "IPP attribute is not a member of the message."
 msgstr ""
 
-#: cups/ipp.c:3621
+#: cups/ipp.c:3594
 msgid "IPP begCollection value not 0 bytes."
 msgstr ""
 
-#: cups/ipp.c:3402
+#: cups/ipp.c:3376
 msgid "IPP boolean value not 1 byte."
 msgstr ""
 
-#: cups/ipp.c:3463
+#: cups/ipp.c:3437
 msgid "IPP date value not 11 bytes."
 msgstr ""
 
-#: cups/ipp.c:3642
+#: cups/ipp.c:3615
 msgid "IPP endCollection value not 0 bytes."
 msgstr ""
 
-#: cups/ipp.c:3377
+#: cups/ipp.c:3351
 msgid "IPP enum value not 4 bytes."
 msgstr ""
 
-#: cups/ipp.c:3101
+#: cups/ipp.c:3075
 msgid "IPP extension tag larger than 0x7FFFFFFF."
 msgstr ""
 
-#: cups/ipp.c:3374
+#: cups/ipp.c:3348
 msgid "IPP integer value not 4 bytes."
 msgstr ""
 
-#: cups/ipp.c:3574
+#: cups/ipp.c:3547
 msgid "IPP language length overflows value."
 msgstr ""
 
-#: cups/ipp.c:3583
+#: cups/ipp.c:3556
 msgid "IPP language length too large."
 msgstr ""
 
-#: cups/ipp.c:3286
+#: cups/ipp.c:3260
 msgid "IPP member name is not empty."
 msgstr ""
 
-#: cups/ipp.c:3668
+#: cups/ipp.c:3641
 msgid "IPP memberName value is empty."
 msgstr ""
 
-#: cups/ipp.c:3660
+#: cups/ipp.c:3633
 msgid "IPP memberName with no attribute."
 msgstr ""
 
-#: cups/ipp.c:3155
+#: cups/ipp.c:3129
 msgid "IPP name larger than 32767 bytes."
 msgstr ""
 
-#: cups/ipp.c:3540
+#: cups/ipp.c:3514
 msgid "IPP nameWithLanguage value less than minimum 4 bytes."
 msgstr ""
 
-#: cups/ipp.c:3698
+#: cups/ipp.c:3671
 msgid "IPP octetString length too large."
 msgstr ""
 
-#: cups/ipp.c:3508
+#: cups/ipp.c:3482
 msgid "IPP rangeOfInteger value not 8 bytes."
 msgstr ""
 
-#: cups/ipp.c:3481
+#: cups/ipp.c:3455
 msgid "IPP resolution value not 9 bytes."
 msgstr ""
 
-#: cups/ipp.c:3601
+#: cups/ipp.c:3574
 msgid "IPP string length overflows value."
 msgstr ""
 
-#: cups/ipp.c:3536
+#: cups/ipp.c:3510
 msgid "IPP textWithLanguage value less than minimum 4 bytes."
 msgstr ""
 
-#: cups/ipp.c:3360
+#: cups/ipp.c:3334
 msgid "IPP value larger than 32767 bytes."
 msgstr ""
 
@@ -4100,23 +4168,23 @@ msgstr ""
 msgid "ISOLatin1"
 msgstr ""
 
-#: cups/ppd.c:353
+#: cups/ppd.c:311
 msgid "Illegal control character"
 msgstr ""
 
-#: cups/ppd.c:354
+#: cups/ppd.c:312
 msgid "Illegal main keyword string"
 msgstr ""
 
-#: cups/ppd.c:355
+#: cups/ppd.c:313
 msgid "Illegal option keyword string"
 msgstr ""
 
-#: cups/ppd.c:356
+#: cups/ppd.c:314
 msgid "Illegal translation string"
 msgstr ""
 
-#: cups/ppd.c:357
+#: cups/ppd.c:315
 msgid "Illegal whitespace character"
 msgstr ""
 
@@ -4136,11 +4204,11 @@ msgstr ""
 msgid "Intellitech"
 msgstr ""
 
-#: cups/http-support.c:1408
+#: cups/http-support.c:1396
 msgid "Internal Server Error"
 msgstr ""
 
-#: cups/ppd.c:344
+#: cups/ppd.c:302
 msgid "Internal error"
 msgstr ""
 
@@ -4152,24 +4220,24 @@ msgstr ""
 msgid "Internet Postage 3-Part"
 msgstr ""
 
-#: backend/ipp.c:317
+#: backend/ipp.c:319
 msgid "Internet Printing Protocol"
 msgstr ""
 
-#: cups/pwg-media.c:312 cups/pwg-media.c:331
+#: cups/pwg-media.c:293 cups/pwg-media.c:312
 msgid "Invalid media name arguments."
 msgstr ""
 
-#: cups/dest-options.c:1052
+#: cups/dest-options.c:1032
 msgid "Invalid media size."
 msgstr ""
 
-#: filter/commandtops.c:125
+#: filter/commandtops.c:114
 #, c-format
 msgid "Invalid printer command \"%s\"."
 msgstr ""
 
-#: cups/ppd.c:1420
+#: cups/ppd.c:1376
 msgid "JCL"
 msgstr ""
 
@@ -4229,93 +4297,93 @@ msgstr ""
 msgid "JIS B9"
 msgstr ""
 
-#: scheduler/ipp.c:8867
+#: scheduler/ipp.c:8844
 #, c-format
 msgid "Job #%d cannot be restarted - no files."
 msgstr ""
 
-#: scheduler/ipp.c:3019 scheduler/ipp.c:3253 scheduler/ipp.c:3312
-#: scheduler/ipp.c:3489 scheduler/ipp.c:3935 scheduler/ipp.c:5540
-#: scheduler/ipp.c:5922 scheduler/ipp.c:6069 scheduler/ipp.c:6358
-#: scheduler/ipp.c:7297 scheduler/ipp.c:7319 scheduler/ipp.c:7491
-#: scheduler/ipp.c:7716 scheduler/ipp.c:7759 scheduler/ipp.c:8609
-#: scheduler/ipp.c:8835 scheduler/ipp.c:9190 scheduler/ipp.c:9793
+#: scheduler/ipp.c:2999 scheduler/ipp.c:3233 scheduler/ipp.c:3292
+#: scheduler/ipp.c:3469 scheduler/ipp.c:3915 scheduler/ipp.c:5517
+#: scheduler/ipp.c:5899 scheduler/ipp.c:6046 scheduler/ipp.c:6335
+#: scheduler/ipp.c:7274 scheduler/ipp.c:7296 scheduler/ipp.c:7468
+#: scheduler/ipp.c:7693 scheduler/ipp.c:7736 scheduler/ipp.c:8586
+#: scheduler/ipp.c:8812 scheduler/ipp.c:9164 scheduler/ipp.c:9767
 #, c-format
 msgid "Job #%d does not exist."
 msgstr ""
 
-#: scheduler/ipp.c:3521
+#: scheduler/ipp.c:3501
 #, c-format
 msgid "Job #%d is already aborted - can't cancel."
 msgstr ""
 
-#: scheduler/ipp.c:3515
+#: scheduler/ipp.c:3495
 #, c-format
 msgid "Job #%d is already canceled - can't cancel."
 msgstr ""
 
-#: scheduler/ipp.c:3527
+#: scheduler/ipp.c:3507
 #, c-format
 msgid "Job #%d is already completed - can't cancel."
 msgstr ""
 
-#: scheduler/ipp.c:7517 scheduler/ipp.c:7801 scheduler/ipp.c:9808
+#: scheduler/ipp.c:7494 scheduler/ipp.c:7778 scheduler/ipp.c:9782
 #, c-format
 msgid "Job #%d is finished and cannot be altered."
 msgstr ""
 
-#: scheduler/ipp.c:8849
+#: scheduler/ipp.c:8826
 #, c-format
 msgid "Job #%d is not complete."
 msgstr ""
 
-#: scheduler/ipp.c:3034
+#: scheduler/ipp.c:3014
 #, c-format
 msgid "Job #%d is not held for authentication."
 msgstr ""
 
-#: scheduler/ipp.c:8623
+#: scheduler/ipp.c:8600
 #, c-format
 msgid "Job #%d is not held."
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1055
+#: cgi-bin/ipp-var.c:1035
 msgid "Job Completed"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1053
+#: cgi-bin/ipp-var.c:1033
 msgid "Job Created"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1059
+#: cgi-bin/ipp-var.c:1039
 msgid "Job Options Changed"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1057
+#: cgi-bin/ipp-var.c:1037
 msgid "Job Stopped"
 msgstr ""
 
-#: scheduler/ipp.c:9890
+#: scheduler/ipp.c:9864
 msgid "Job is completed and cannot be changed."
 msgstr ""
 
-#: cgi-bin/jobs.c:198
+#: cgi-bin/jobs.c:192
 msgid "Job operation failed"
 msgstr ""
 
-#: scheduler/ipp.c:9926 scheduler/ipp.c:9945 scheduler/ipp.c:9956
+#: scheduler/ipp.c:9900 scheduler/ipp.c:9917 scheduler/ipp.c:9928
 msgid "Job state cannot be changed."
 msgstr ""
 
-#: scheduler/ipp.c:8715
+#: scheduler/ipp.c:8692
 msgid "Job subscriptions cannot be renewed."
 msgstr ""
 
-#: cgi-bin/jobs.c:103 cgi-bin/jobs.c:114 cgi-bin/jobs.c:195
+#: cgi-bin/jobs.c:97 cgi-bin/jobs.c:108 cgi-bin/jobs.c:189
 msgid "Jobs"
 msgstr ""
 
-#: backend/lpd.c:186
+#: backend/lpd.c:177
 msgid "LPD/LPR Host or Printer"
 msgstr ""
 
@@ -4327,7 +4395,7 @@ msgstr ""
 msgid "Label Top"
 msgstr ""
 
-#: scheduler/ipp.c:2080 scheduler/ipp.c:5463
+#: scheduler/ipp.c:2060 scheduler/ipp.c:5440
 #, c-format
 msgid "Language \"%s\" not supported."
 msgstr ""
@@ -4352,19 +4420,23 @@ msgstr ""
 msgid "Light"
 msgstr ""
 
-#: cups/ppd.c:352
+#: cups/ppd.c:310
 msgid "Line longer than the maximum allowed (255 characters)"
 msgstr ""
 
-#: cgi-bin/admin.c:2393
+#: cgi-bin/admin.c:2373
 msgid "List Available Printers"
 msgstr ""
 
+#: cups/localize.c:291
+msgid "Load paper."
+msgstr ""
+
 #: ppdc/sample.c:272
 msgid "Long-Edge (Portrait)"
 msgstr ""
 
-#: cups/http-support.c:1640
+#: cups/http-support.c:1725
 msgid "Looking for printer."
 msgstr ""
 
@@ -4372,11 +4444,11 @@ msgstr ""
 msgid "Manual Feed"
 msgstr ""
 
-#: cups/ppd.c:789 cups/ppd.c:1357
+#: cups/ppd.c:747 cups/ppd.c:1313
 msgid "Media Size"
 msgstr ""
 
-#: cups/ppd.c:793 cups/ppd.c:1361 ppdc/sample.c:262
+#: cups/ppd.c:751 cups/ppd.c:1317 ppdc/sample.c:262
 msgid "Media Source"
 msgstr ""
 
@@ -4384,7 +4456,7 @@ msgstr ""
 msgid "Media Tracking"
 msgstr ""
 
-#: cups/ppd.c:791 cups/ppd.c:1359 ppdc/sample.c:285
+#: cups/ppd.c:749 cups/ppd.c:1315 ppdc/sample.c:285
 msgid "Media Type"
 msgstr ""
 
@@ -4392,79 +4464,87 @@ msgstr ""
 msgid "Medium"
 msgstr ""
 
-#: cups/ppd.c:341
+#: cups/ppd.c:299
 msgid "Memory allocation error"
 msgstr ""
 
-#: cups/ppd.c:361
+#: cups/ppd.c:319
 msgid "Missing CloseGroup"
 msgstr ""
 
-#: cups/ppd.c:342
+#: cups/ppd.c:300
 msgid "Missing PPD-Adobe-4.x header"
 msgstr ""
 
-#: cups/ppd.c:351
+#: cups/ppd.c:309
 msgid "Missing asterisk in column 1"
 msgstr ""
 
-#: scheduler/ipp.c:5945
+#: scheduler/ipp.c:5922
 msgid "Missing document-number attribute."
 msgstr ""
 
-#: cups/adminutil.c:273
+#: cups/adminutil.c:262
 #, c-format
 msgid "Missing double quote on line %d."
 msgstr ""
 
-#: cgi-bin/admin.c:736 cgi-bin/admin.c:2106 cgi-bin/admin.c:2191
-#: cgi-bin/admin.c:2785 cgi-bin/admin.c:3039 cgi-bin/admin.c:3150
-#: cgi-bin/admin.c:3860
+#: cgi-bin/admin.c:714 cgi-bin/admin.c:2086 cgi-bin/admin.c:2171
+#: cgi-bin/admin.c:2765 cgi-bin/admin.c:3019 cgi-bin/admin.c:3130
+#: cgi-bin/admin.c:3840
 msgid "Missing form variable"
 msgstr ""
 
-#: scheduler/ipp.c:9244
+#: scheduler/ipp.c:9218
 msgid "Missing last-document attribute in request."
 msgstr ""
 
-#: cups/pwg-media.c:574
+#: cups/pwg-media.c:555
 msgid "Missing media or media-col."
 msgstr ""
 
-#: cups/pwg-media.c:493
+#: cups/pwg-media.c:474
 msgid "Missing media-size in media-col."
 msgstr ""
 
-#: scheduler/ipp.c:6488
+#: scheduler/ipp.c:6465
 msgid "Missing notify-subscription-ids attribute."
 msgstr ""
 
-#: cups/ppd.c:359
+#: cups/ppd.c:317
 msgid "Missing option keyword"
 msgstr ""
 
-#: scheduler/ipp.c:3160 scheduler/ipp.c:3185
+#: scheduler/ipp.c:3140 scheduler/ipp.c:3165
 msgid "Missing requesting-user-name attribute."
 msgstr ""
 
-#: scheduler/ipp.c:391
+#: scheduler/ipp.c:388
 msgid "Missing required attributes."
 msgstr ""
 
-#: cups/adminutil.c:254
+#: cups/http-support.c:1486
+msgid "Missing resource in URI"
+msgstr ""
+
+#: cups/http-support.c:1480
+msgid "Missing scheme in URI"
+msgstr ""
+
+#: cups/adminutil.c:243
 #, c-format
 msgid "Missing value on line %d."
 msgstr ""
 
-#: cups/ppd.c:343
+#: cups/ppd.c:301
 msgid "Missing value string"
 msgstr ""
 
-#: cups/pwg-media.c:481
+#: cups/pwg-media.c:462
 msgid "Missing x-dimension in media-size."
 msgstr ""
 
-#: cups/pwg-media.c:487
+#: cups/pwg-media.c:468
 msgid "Missing y-dimension in media-size."
 msgstr ""
 
@@ -4477,39 +4557,39 @@ msgid ""
 "        device-id = %s"
 msgstr ""
 
-#: test/ippfind.c:2774
+#: test/ippfind.c:2756
 msgid "Modifiers:"
 msgstr ""
 
-#: cgi-bin/admin.c:570
+#: cgi-bin/admin.c:548
 msgid "Modify Class"
 msgstr ""
 
-#: cgi-bin/admin.c:882
+#: cgi-bin/admin.c:860
 msgid "Modify Printer"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:425 cgi-bin/ipp-var.c:516
+#: cgi-bin/ipp-var.c:410 cgi-bin/ipp-var.c:501
 msgid "Move All Jobs"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:364 cgi-bin/ipp-var.c:423 cgi-bin/ipp-var.c:514
+#: cgi-bin/ipp-var.c:349 cgi-bin/ipp-var.c:408 cgi-bin/ipp-var.c:499
 msgid "Move Job"
 msgstr ""
 
-#: cups/http-support.c:1365
+#: cups/http-support.c:1353
 msgid "Moved Permanently"
 msgstr ""
 
-#: cups/ppd.c:340
+#: cups/ppd.c:298
 msgid "NULL PPD file pointer"
 msgstr ""
 
-#: cups/snmp.c:1049
+#: cups/snmp.c:1005
 msgid "Name OID uses indefinite length"
 msgstr ""
 
-#: scheduler/ipp.c:1074
+#: scheduler/ipp.c:1054
 msgid "Nested classes are not allowed."
 msgstr ""
 
@@ -4525,56 +4605,56 @@ msgstr ""
 msgid "New Stylus Photo Series"
 msgstr ""
 
-#: cups/ppd.c:1949
+#: cups/ppd.c:1904
 msgid "No"
 msgstr ""
 
-#: cups/http-support.c:1362
+#: cups/http-support.c:1350
 msgid "No Content"
 msgstr ""
 
-#: cups/util.c:1307
+#: cups/util.c:1283
 msgid "No PPD name"
 msgstr ""
 
-#: cups/snmp.c:1043
+#: cups/snmp.c:999
 msgid "No VarBind SEQUENCE"
 msgstr ""
 
-#: cups/adminutil.c:788
+#: cups/adminutil.c:777
 msgid "No Windows printer drivers are installed."
 msgstr ""
 
-#: cups/request.c:586 cups/request.c:949
+#: cups/request.c:570 cups/request.c:933
 msgid "No active connection"
 msgstr ""
 
-#: cups/request.c:366
+#: cups/request.c:350
 msgid "No active connection."
 msgstr ""
 
-#: scheduler/ipp.c:3438
+#: scheduler/ipp.c:3418
 #, c-format
 msgid "No active jobs on %s."
 msgstr ""
 
-#: scheduler/ipp.c:219
+#: scheduler/ipp.c:216
 msgid "No attributes in request."
 msgstr ""
 
-#: scheduler/ipp.c:3061
+#: scheduler/ipp.c:3041
 msgid "No authentication information provided."
 msgstr ""
 
-#: cups/snmp.c:1000
+#: cups/snmp.c:956
 msgid "No community name"
 msgstr ""
 
-#: scheduler/ipp.c:5745
+#: scheduler/ipp.c:5722
 msgid "No default printer."
 msgstr ""
 
-#: cgi-bin/ipp-var.c:436 scheduler/ipp.c:7063
+#: cgi-bin/ipp-var.c:421 scheduler/ipp.c:7040
 msgid "No destinations added."
 msgstr ""
 
@@ -4582,68 +4662,76 @@ msgstr ""
 msgid "No device URI found in argv[0] or in DEVICE_URI environment variable."
 msgstr ""
 
-#: cups/snmp.c:1030
+#: cups/snmp.c:986
 msgid "No error-index"
 msgstr ""
 
-#: cups/snmp.c:1022
+#: cups/snmp.c:978
 msgid "No error-status"
 msgstr ""
 
-#: scheduler/ipp.c:8005 scheduler/ipp.c:9258
+#: scheduler/ipp.c:7982 scheduler/ipp.c:9232
 msgid "No file in print request."
 msgstr ""
 
-#: cups/util.c:926
+#: cups/util.c:890
 msgid "No modification time"
 msgstr ""
 
-#: cups/snmp.c:1047
+#: cups/snmp.c:1003
 msgid "No name OID"
 msgstr ""
 
-#: filter/rastertoepson.c:1147 filter/rastertohp.c:876
-#: filter/rastertolabel.c:1296
+#: filter/rastertoepson.c:1132 filter/rastertohp.c:865
+#: filter/rastertolabel.c:1288
 msgid "No pages were found."
 msgstr ""
 
-#: cups/util.c:920
+#: cups/util.c:884
 msgid "No printer name"
 msgstr ""
 
-#: cups/util.c:1843
+#: cups/util.c:1807
 msgid "No printer-uri found"
 msgstr ""
 
-#: cups/util.c:1828
+#: cups/util.c:1791
 msgid "No printer-uri found for class"
 msgstr ""
 
-#: scheduler/ipp.c:6148
+#: scheduler/ipp.c:6125
 msgid "No printer-uri in request."
 msgstr ""
 
-#: cups/request.c:374
+#: cups/http.c:2260
+msgid "No request URI."
+msgstr ""
+
+#: cups/http.c:2277
+msgid "No request protocol version."
+msgstr ""
+
+#: cups/request.c:358
 msgid "No request sent."
 msgstr ""
 
-#: cups/snmp.c:1014
+#: cups/snmp.c:970
 msgid "No request-id"
 msgstr ""
 
-#: scheduler/ipp.c:5348
+#: scheduler/ipp.c:5325
 msgid "No subscription attributes in request."
 msgstr ""
 
-#: scheduler/ipp.c:7390
+#: scheduler/ipp.c:7367
 msgid "No subscriptions found."
 msgstr ""
 
-#: cups/snmp.c:1038
+#: cups/snmp.c:994
 msgid "No variable-bindings SEQUENCE"
 msgstr ""
 
-#: cups/snmp.c:993
+#: cups/snmp.c:949
 msgid "No version number"
 msgstr ""
 
@@ -4659,11 +4747,11 @@ msgstr ""
 msgid "Normal"
 msgstr ""
 
-#: cups/http-support.c:1384
+#: cups/http-support.c:1372
 msgid "Not Found"
 msgstr ""
 
-#: cups/http-support.c:1396
+#: cups/http-support.c:1384
 msgid "Not Implemented"
 msgstr ""
 
@@ -4671,15 +4759,15 @@ msgstr ""
 msgid "Not Installed"
 msgstr ""
 
-#: cups/http-support.c:1371
+#: cups/http-support.c:1359
 msgid "Not Modified"
 msgstr ""
 
-#: cups/http-support.c:1399
+#: cups/http-support.c:1387
 msgid "Not Supported"
 msgstr ""
 
-#: scheduler/ipp.c:1510 scheduler/ipp.c:10489
+#: scheduler/ipp.c:1490 scheduler/ipp.c:10461
 msgid "Not allowed to print."
 msgstr ""
 
@@ -4691,7 +4779,7 @@ msgstr ""
 msgid "Note: this program only validates the DSC comments, not the PostScript itself."
 msgstr ""
 
-#: cups/http-support.c:1353 cups/ppd.c:338
+#: cups/http-support.c:1341 cups/http-support.c:1477 cups/ppd.c:296
 msgid "OK"
 msgstr ""
 
@@ -4707,70 +4795,62 @@ msgstr ""
 msgid "Online Help"
 msgstr ""
 
-#: cups/adminutil.c:955
+#: cups/adminutil.c:944
 #, c-format
 msgid "Open of %s failed: %s"
 msgstr ""
 
-#: cups/ppd.c:346
+#: cups/ppd.c:304
 msgid "OpenGroup without a CloseGroup first"
 msgstr ""
 
-#: cups/ppd.c:348
+#: cups/ppd.c:306
 msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first"
 msgstr ""
 
-#: cgi-bin/admin.c:3631
+#: cgi-bin/admin.c:3611
 msgid "Operation Policy"
 msgstr ""
 
-#: filter/pstops.c:2206
+#: filter/pstops.c:2177
 #, c-format
 msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
 msgstr ""
 
-#: cgi-bin/admin.c:3281 cgi-bin/admin.c:3365
+#: cgi-bin/admin.c:3261 cgi-bin/admin.c:3345
 msgid "Options Installed"
 msgstr ""
 
-#: scheduler/cupsfilter.c:1457 scheduler/main.c:2002 systemv/cupsaddsmb.c:284
+#: scheduler/cupsfilter.c:1482 scheduler/main.c:2158 systemv/cupsaddsmb.c:284
 #: systemv/cupsctl.c:203 systemv/cupstestdsc.c:429 systemv/cupstestppd.c:3817
-#: test/ippfind.c:2733 test/ipptool.c:4708 ppdc/ppdc.cxx:437
-#: ppdc/ppdhtml.cxx:174 ppdc/ppdi.cxx:130 ppdc/ppdmerge.cxx:369
+#: test/ippfind.c:2715 test/ipptool.c:4713 ppdc/ppdc.cxx:432
+#: ppdc/ppdhtml.cxx:174 ppdc/ppdi.cxx:130 ppdc/ppdmerge.cxx:363
 #: ppdc/ppdpo.cxx:254
 msgid "Options:"
 msgstr ""
 
-#: cups/ppd-cache.c:157
+#: cups/ppd-cache.c:125
 msgid "Out of date PPD cache file."
 msgstr ""
 
-#: cups/ppd-cache.c:1444
+#: cups/ppd-cache.c:1410
 msgid "Out of memory."
 msgstr ""
 
-#: cups/ppd.c:795 cups/ppd.c:1363
+#: cups/ppd.c:753 cups/ppd.c:1319
 msgid "Output Mode"
 msgstr ""
 
-#: systemv/lpstat.c:1239 systemv/lpstat.c:1243
-#, c-format
-msgid "Output for printer %s is sent to %s"
-msgstr ""
-
-#: systemv/lpstat.c:1233
-#, c-format
-msgid "Output for printer %s is sent to remote printer %s on %s"
+#: cups/localize.c:316
+msgid "Output bin is almost full."
 msgstr ""
 
-#: systemv/lpstat.c:1257 systemv/lpstat.c:1261
-#, c-format
-msgid "Output for printer %s/%s is sent to %s"
+#: cups/localize.c:318
+msgid "Output bin is full."
 msgstr ""
 
-#: systemv/lpstat.c:1251
-#, c-format
-msgid "Output for printer %s/%s is sent to remote printer %s on %s"
+#: cups/localize.c:314
+msgid "Output bin is missing."
 msgstr ""
 
 #: systemv/cupstestdsc.c:399
@@ -4805,14 +4885,30 @@ msgstr ""
 msgid "PRC32K Oversize Long Edge"
 msgstr ""
 
-#: cups/snmp.c:1010
+#: cups/snmp.c:966
 msgid "Packet does not contain a Get-Response-PDU"
 msgstr ""
 
-#: cups/snmp.c:989
+#: cups/snmp.c:945
 msgid "Packet does not start with SEQUENCE"
 msgstr ""
 
+#: cups/localize.c:293
+msgid "Paper jam."
+msgstr ""
+
+#: cups/localize.c:310
+msgid "Paper tray is almost empty."
+msgstr ""
+
+#: cups/localize.c:312
+msgid "Paper tray is empty."
+msgstr ""
+
+#: cups/localize.c:308
+msgid "Paper tray is missing."
+msgstr ""
+
 #: ppdc/sample.c:360
 msgid "ParamCustominCutInterval"
 msgstr ""
@@ -4821,7 +4917,7 @@ msgstr ""
 msgid "ParamCustominTearInterval"
 msgstr ""
 
-#: cups/auth.c:206 cups/auth.c:374
+#: cups/auth.c:195 cups/auth.c:362
 #, c-format
 msgid "Password for %s on %s? "
 msgstr ""
@@ -4831,11 +4927,11 @@ msgstr ""
 msgid "Password for %s required to access %s via SAMBA: "
 msgstr ""
 
-#: cgi-bin/classes.c:167
+#: cgi-bin/classes.c:159
 msgid "Pause Class"
 msgstr ""
 
-#: cgi-bin/printers.c:170
+#: cgi-bin/printers.c:162
 msgid "Pause Printer"
 msgstr ""
 
@@ -4855,11 +4951,11 @@ msgstr ""
 msgid "Plain Paper"
 msgstr ""
 
-#: cgi-bin/admin.c:3299 cgi-bin/admin.c:3580
+#: cgi-bin/admin.c:3279 cgi-bin/admin.c:3560
 msgid "Policies"
 msgstr ""
 
-#: cgi-bin/admin.c:3306 cgi-bin/admin.c:3649 cgi-bin/admin.c:3662
+#: cgi-bin/admin.c:3286 cgi-bin/admin.c:3629 cgi-bin/admin.c:3642
 msgid "Port Monitor"
 msgstr ""
 
@@ -4883,7 +4979,7 @@ msgstr ""
 msgid "Postcard Long Edge"
 msgstr ""
 
-#: backend/ipp.c:921 backend/ipp.c:929
+#: backend/ipp.c:949 backend/ipp.c:957
 msgid "Preparing to print."
 msgstr ""
 
@@ -4903,7 +4999,7 @@ msgstr ""
 msgid "Print Rate"
 msgstr ""
 
-#: cgi-bin/printers.c:179
+#: cgi-bin/printers.c:171
 msgid "Print Self-Test Page"
 msgstr ""
 
@@ -4911,7 +5007,7 @@ msgstr ""
 msgid "Print Speed"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:792
+#: cgi-bin/ipp-var.c:777
 msgid "Print Test Page"
 msgstr ""
 
@@ -4923,23 +5019,23 @@ msgstr ""
 msgid "Print and Tear"
 msgstr ""
 
-#: backend/socket.c:434 backend/usb-unix.c:191
+#: backend/socket.c:429 backend/usb-unix.c:184
 msgid "Print file sent."
 msgstr ""
 
-#: backend/ipp.c:2113
+#: backend/ipp.c:2160
 msgid "Print job canceled at printer."
 msgstr ""
 
-#: backend/ipp.c:2105
+#: backend/ipp.c:2152
 msgid "Print job too large."
 msgstr ""
 
-#: backend/ipp.c:1602
+#: backend/ipp.c:1630
 msgid "Print job was not accepted."
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1047
+#: cgi-bin/ipp-var.c:1027
 msgid "Printer Added"
 msgstr ""
 
@@ -4947,15 +5043,15 @@ msgstr ""
 msgid "Printer Default"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1051
+#: cgi-bin/ipp-var.c:1031
 msgid "Printer Deleted"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1049
+#: cgi-bin/ipp-var.c:1029
 msgid "Printer Modified"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1045
+#: cgi-bin/ipp-var.c:1025
 msgid "Printer Paused"
 msgstr ""
 
@@ -4963,11 +5059,11 @@ msgstr ""
 msgid "Printer Settings"
 msgstr ""
 
-#: backend/ipp.c:2108
+#: backend/ipp.c:2155
 msgid "Printer cannot print supplied content."
 msgstr ""
 
-#: backend/ipp.c:2111
+#: backend/ipp.c:2158
 msgid "Printer cannot print with supplied options."
 msgstr ""
 
@@ -4975,47 +5071,38 @@ msgstr ""
 msgid "Printer:"
 msgstr ""
 
-#: cgi-bin/printers.c:204 cgi-bin/printers.c:332
+#: cgi-bin/printers.c:196 cgi-bin/printers.c:324
 msgid "Printers"
 msgstr ""
 
-#: filter/rastertoepson.c:1093 filter/rastertohp.c:817
-#: filter/rastertolabel.c:1243
+#: filter/rastertoepson.c:1078 filter/rastertohp.c:806
+#: filter/rastertolabel.c:1235
 #, c-format
-msgid "Printing page %d, %d%% complete."
-msgstr ""
-
-#: cgi-bin/classes.c:173 cgi-bin/printers.c:176
-msgid "Purge Jobs"
+msgid "Printing page %d, %u%% complete."
 msgstr ""
 
 #: ppdc/sample.c:155
 msgid "Quarto"
 msgstr ""
 
-#: scheduler/ipp.c:1505 scheduler/ipp.c:10484
+#: scheduler/ipp.c:1485 scheduler/ipp.c:10456
 msgid "Quota limit reached."
 msgstr ""
 
-#: berkeley/lpq.c:520
+#: berkeley/lpq.c:490
 msgid "Rank    Owner   Job     File(s)                         Total Size"
 msgstr ""
 
-#. TRANSLATORS: Pri is job priority.
-#: berkeley/lpq.c:516
-msgid "Rank   Owner      Pri  Job        Files                       Total Size"
-msgstr ""
-
-#: cgi-bin/classes.c:171 cgi-bin/printers.c:174
+#: cgi-bin/classes.c:163 cgi-bin/printers.c:166
 msgid "Reject Jobs"
 msgstr ""
 
-#: backend/lpd.c:1033 backend/lpd.c:1165
+#: backend/lpd.c:1024 backend/lpd.c:1156
 #, c-format
 msgid "Remote host did not accept control file (%d)."
 msgstr ""
 
-#: backend/lpd.c:1118
+#: backend/lpd.c:1109
 #, c-format
 msgid "Remote host did not accept data file (%d)."
 msgstr ""
@@ -5024,19 +5111,19 @@ msgstr ""
 msgid "Reprint After Error"
 msgstr ""
 
-#: cups/http-support.c:1387
+#: cups/http-support.c:1375
 msgid "Request Entity Too Large"
 msgstr ""
 
-#: cups/ppd.c:797 cups/ppd.c:1365 ppdc/sample.c:231
+#: cups/ppd.c:755 cups/ppd.c:1321 ppdc/sample.c:231
 msgid "Resolution"
 msgstr ""
 
-#: cgi-bin/classes.c:165
+#: cgi-bin/classes.c:157
 msgid "Resume Class"
 msgstr ""
 
-#: cgi-bin/printers.c:167
+#: cgi-bin/printers.c:159
 msgid "Resume Printer"
 msgstr ""
 
@@ -5048,65 +5135,69 @@ msgstr ""
 msgid "Rewind"
 msgstr ""
 
-#: cups/adminutil.c:2052
+#: cups/adminutil.c:2041
 #, c-format
 msgid "Running command: %s %s -N -A %s -c '%s'"
 msgstr ""
 
-#: cups/snmp.c:991
+#: cups/snmp.c:947
 msgid "SEQUENCE uses indefinite length"
 msgstr ""
 
-#: cups/http-support.c:1411
+#: cups/http-support.c:1399
 msgid "SSL/TLS Negotiation Error"
 msgstr ""
 
-#: cups/http-support.c:1368
+#: cups/http-support.c:1356
 msgid "See Other"
 msgstr ""
 
-#: backend/usb-darwin.c:552 backend/usb-libusb.c:366
+#: backend/usb-darwin.c:552 backend/usb-libusb.c:346
 msgid "Sending data to printer."
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1061
+#: cgi-bin/ipp-var.c:1041
 msgid "Server Restarted"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1067
+#: cgi-bin/ipp-var.c:1047
 msgid "Server Security Auditing"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1063
+#: cgi-bin/ipp-var.c:1043
 msgid "Server Started"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1065
+#: cgi-bin/ipp-var.c:1045
 msgid "Server Stopped"
 msgstr ""
 
-#: cups/http-support.c:1405
+#: cups/tls-darwin.c:1028
+msgid "Server credentials not set."
+msgstr ""
+
+#: cups/http-support.c:1393
 msgid "Service Unavailable"
 msgstr ""
 
-#: cgi-bin/admin.c:2786 cgi-bin/admin.c:2832 cgi-bin/admin.c:2989
-#: cgi-bin/admin.c:3008
+#: cgi-bin/admin.c:2766 cgi-bin/admin.c:2812 cgi-bin/admin.c:2969
+#: cgi-bin/admin.c:2988
 msgid "Set Allowed Users"
 msgstr ""
 
-#: cgi-bin/admin.c:3035
+#: cgi-bin/admin.c:3015
 msgid "Set As Server Default"
 msgstr ""
 
-#: cgi-bin/admin.c:3135
+#: cgi-bin/admin.c:3115
 msgid "Set Class Options"
 msgstr ""
 
-#: cgi-bin/admin.c:3135 cgi-bin/admin.c:3309 cgi-bin/admin.c:3691
+#: cgi-bin/admin.c:3115 cgi-bin/admin.c:3289 cgi-bin/admin.c:3671
 msgid "Set Printer Options"
 msgstr ""
 
-#: cgi-bin/admin.c:3861 cgi-bin/admin.c:3905 cgi-bin/admin.c:3923
+#: cgi-bin/admin.c:3841 cgi-bin/admin.c:3885 cgi-bin/admin.c:3903
 msgid "Set Publishing"
 msgstr ""
 
@@ -5122,7 +5213,7 @@ msgstr ""
 msgid "Special Paper"
 msgstr ""
 
-#: backend/lpd.c:1074
+#: backend/lpd.c:1065
 #, c-format
 msgid "Spooling job, %.0f%% complete."
 msgstr ""
@@ -5132,12 +5223,12 @@ msgid "Standard"
 msgstr ""
 
 #. TRANSLATORS: Banner/cover sheet before the print job.
-#: cgi-bin/admin.c:3552
+#: cgi-bin/admin.c:3532
 msgid "Starting Banner"
 msgstr ""
 
-#: filter/rastertoepson.c:1069 filter/rastertohp.c:793
-#: filter/rastertolabel.c:1219
+#: filter/rastertoepson.c:1054 filter/rastertohp.c:782
+#: filter/rastertolabel.c:1211
 #, c-format
 msgid "Starting page %d."
 msgstr ""
@@ -5154,13 +5245,13 @@ msgstr ""
 msgid "Stylus Photo Series"
 msgstr ""
 
-#: scheduler/ipp.c:3584 scheduler/ipp.c:6504 scheduler/ipp.c:7203
-#: scheduler/ipp.c:8703
+#: scheduler/ipp.c:3564 scheduler/ipp.c:6481 scheduler/ipp.c:7180
+#: scheduler/ipp.c:8680
 #, c-format
 msgid "Subscription #%d does not exist."
 msgstr ""
 
-#: test/ippfind.c:2786
+#: test/ippfind.c:2768
 msgid "Substitutions:"
 msgstr ""
 
@@ -5176,7 +5267,7 @@ msgstr ""
 msgid "Super B/A3"
 msgstr ""
 
-#: cups/http-support.c:1350
+#: cups/http-support.c:1338
 msgid "Switching Protocols"
 msgstr ""
 
@@ -5204,245 +5295,213 @@ msgstr ""
 msgid "Tear-Off Adjust Position"
 msgstr ""
 
-#: scheduler/ipp.c:1341
+#: scheduler/ipp.c:1321
 #, c-format
 msgid "The \"%s\" attribute is required for print jobs."
 msgstr ""
 
-#: scheduler/ipp.c:6219 scheduler/ipp.c:6297 scheduler/ipp.c:6313
-#: scheduler/ipp.c:6331
+#: scheduler/ipp.c:6196 scheduler/ipp.c:6274 scheduler/ipp.c:6290
+#: scheduler/ipp.c:6308
 #, c-format
 msgid "The %s attribute cannot be provided with job-ids."
 msgstr ""
 
-#: scheduler/ipp.c:1317
+#: scheduler/ipp.c:1297
 #, c-format
 msgid "The '%s' Job Description attribute cannot be supplied in a job creation request."
 msgstr ""
 
-#: scheduler/ipp.c:5157
+#: scheduler/ipp.c:5134
 #, c-format
 msgid "The '%s' operation attribute cannot be supplied in a Create-Job request."
 msgstr ""
 
-#: scheduler/ipp.c:6734
+#: scheduler/ipp.c:6711
 #, c-format
 msgid "The PPD file \"%s\" could not be found."
 msgstr ""
 
-#: scheduler/ipp.c:6721
+#: scheduler/ipp.c:6698
 #, c-format
 msgid "The PPD file \"%s\" could not be opened: %s"
 msgstr ""
 
-#: filter/rastertoepson.c:1038 filter/rastertohp.c:764
-#: filter/rastertolabel.c:1183
+#: filter/rastertoepson.c:1023 filter/rastertohp.c:753
+#: filter/rastertolabel.c:1175
 msgid "The PPD file could not be opened."
 msgstr ""
 
-#: cgi-bin/admin.c:749
+#: cgi-bin/admin.c:727
 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:353
+#: cups/localize.c:338
 msgid "The developer unit needs to be replaced."
 msgstr ""
 
-#: cups/localize.c:351
+#: cups/localize.c:336
 msgid "The developer unit will need to be replaced soon."
 msgstr ""
 
-#: cups/localize.c:343
+#: cups/localize.c:328
 msgid "The fuser's temperature is high."
 msgstr ""
 
-#: cups/localize.c:345
+#: cups/localize.c:330
 msgid "The fuser's temperature is low."
 msgstr ""
 
-#: scheduler/ipp.c:2107
+#: scheduler/ipp.c:2087
 msgid "The notify-lease-duration attribute cannot be used with job subscriptions."
 msgstr ""
 
-#: scheduler/ipp.c:2090 scheduler/ipp.c:5473
+#: scheduler/ipp.c:2070 scheduler/ipp.c:5450
 #, c-format
 msgid "The notify-user-data value is too large (%d > 63 octets)."
 msgstr ""
 
-#: cups/localize.c:349
+#: cups/localize.c:334
 msgid "The optical photoconductor needs to be replaced."
 msgstr ""
 
-#: cups/localize.c:347
+#: cups/localize.c:332
 msgid "The optical photoconductor will need to be replaced soon."
 msgstr ""
 
-#: cups/localize.c:331
-msgid "The output bin is almost full."
-msgstr ""
-
-#: cups/localize.c:333
-msgid "The output bin is full."
-msgstr ""
-
-#: cups/localize.c:329
-msgid "The output bin is missing."
-msgstr ""
-
-#: cups/localize.c:325
-msgid "The paper tray is almost empty."
-msgstr ""
-
-#: cups/localize.c:327
-msgid "The paper tray is empty."
-msgstr ""
-
-#: cups/localize.c:323
-msgid "The paper tray is missing."
+#: backend/ipp.c:969
+msgid "The printer configuration is incorrect or the printer no longer exists."
 msgstr ""
 
-#: cups/localize.c:306
-msgid "The paper tray needs to be filled."
+#: backend/lpd.c:627 backend/lpd.c:1017 backend/lpd.c:1099 backend/lpd.c:1149
+msgid "The printer did not respond."
 msgstr ""
 
-#: backend/ipp.c:941
-msgid "The printer configuration is incorrect or the printer no longer exists."
+#: backend/ipp.c:813 backend/ipp.c:932 backend/ipp.c:1046 backend/ipp.c:1437
+#: backend/ipp.c:1602 backend/lpd.c:836 backend/socket.c:379
+#: backend/usb-unix.c:124 backend/usb-unix.c:414 backend/usb-unix.c:497
+msgid "The printer is in use."
 msgstr ""
 
-#: backend/lpd.c:636 backend/lpd.c:1026 backend/lpd.c:1108 backend/lpd.c:1158
-msgid "The printer did not respond."
+#: cups/localize.c:320
+msgid "The printer is low on ink."
 msgstr ""
 
-#: backend/ipp.c:784 backend/ipp.c:904 backend/ipp.c:1018 backend/ipp.c:1409
-#: backend/ipp.c:1574 backend/lpd.c:845 backend/socket.c:384
-#: backend/usb-unix.c:131 backend/usb-unix.c:423 backend/usb-unix.c:506
-msgid "The printer is in use."
+#: cups/localize.c:298
+msgid "The printer is low on toner."
 msgstr ""
 
-#: backend/runloop.c:254 backend/runloop.c:374 cups/localize.c:311
+#: backend/runloop.c:243 backend/runloop.c:363 cups/localize.c:296
 msgid "The printer is not connected."
 msgstr ""
 
-#: backend/ipp.c:762 backend/ipp.c:795 backend/ipp.c:900 backend/lpd.c:824
-#: backend/lpd.c:865 backend/socket.c:363 backend/socket.c:396
+#: backend/ipp.c:791 backend/ipp.c:824 backend/ipp.c:928 backend/lpd.c:815
+#: backend/lpd.c:856 backend/socket.c:358 backend/socket.c:391
 msgid "The printer is not responding."
 msgstr ""
 
-#: backend/runloop.c:396
+#: backend/runloop.c:385
 msgid "The printer is now connected."
 msgstr ""
 
-#: backend/usb-darwin.c:1299
+#: backend/usb-darwin.c:1300
 msgid "The printer is now online."
 msgstr ""
 
-#: backend/usb-darwin.c:1320
+#: backend/usb-darwin.c:1321
 msgid "The printer is offline."
 msgstr ""
 
-#: cups/localize.c:335
-msgid "The printer is running low on ink."
-msgstr ""
-
-#: cups/localize.c:313
-msgid "The printer is running low on toner."
-msgstr ""
-
-#: backend/ipp.c:777 backend/lpd.c:838 backend/socket.c:377
+#: backend/ipp.c:806 backend/lpd.c:829 backend/socket.c:372
 msgid "The printer is unreachable at this time."
 msgstr ""
 
-#: cups/localize.c:337
+#: cups/localize.c:322
 msgid "The printer may be out of ink."
 msgstr ""
 
-#: cups/localize.c:315
+#: cups/localize.c:300
 msgid "The printer may be out of toner."
 msgstr ""
 
-#: backend/ipp.c:771 backend/lpd.c:832 backend/socket.c:371
+#: backend/ipp.c:800 backend/lpd.c:823 backend/socket.c:366
 msgid "The printer may not exist or is unavailable at this time."
 msgstr ""
 
-#: cgi-bin/admin.c:931
+#: cgi-bin/admin.c:909
 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:808 scheduler/ipp.c:1068 scheduler/ipp.c:3225
-#: scheduler/ipp.c:3404 scheduler/ipp.c:5140 scheduler/ipp.c:5307
-#: scheduler/ipp.c:5621 scheduler/ipp.c:6185 scheduler/ipp.c:6939
-#: scheduler/ipp.c:6995 scheduler/ipp.c:7309 scheduler/ipp.c:7575
-#: scheduler/ipp.c:7664 scheduler/ipp.c:7697 scheduler/ipp.c:8020
-#: scheduler/ipp.c:8413 scheduler/ipp.c:8495 scheduler/ipp.c:9662
-#: scheduler/ipp.c:10116 scheduler/ipp.c:10447 scheduler/ipp.c:10529
-#: scheduler/ipp.c:10903
+#: scheduler/ipp.c:788 scheduler/ipp.c:1048 scheduler/ipp.c:3205
+#: scheduler/ipp.c:3384 scheduler/ipp.c:5117 scheduler/ipp.c:5284
+#: scheduler/ipp.c:5598 scheduler/ipp.c:6162 scheduler/ipp.c:6916
+#: scheduler/ipp.c:6972 scheduler/ipp.c:7286 scheduler/ipp.c:7552
+#: scheduler/ipp.c:7641 scheduler/ipp.c:7674 scheduler/ipp.c:7997
+#: scheduler/ipp.c:8390 scheduler/ipp.c:8472 scheduler/ipp.c:9636
+#: scheduler/ipp.c:10088 scheduler/ipp.c:10419 scheduler/ipp.c:10501
+#: scheduler/ipp.c:10874
 msgid "The printer or class does not exist."
 msgstr ""
 
-#: scheduler/ipp.c:1254
+#: scheduler/ipp.c:1234
 msgid "The printer or class is not shared."
 msgstr ""
 
-#: cups/localize.c:317
+#: cups/localize.c:302
 msgid "The printer's cover is open."
 msgstr ""
 
-#: cups/localize.c:321
+#: cups/localize.c:306
 msgid "The printer's door is open."
 msgstr ""
 
-#: cups/localize.c:319
+#: cups/localize.c:304
 msgid "The printer's interlock is open."
 msgstr ""
 
-#: cups/localize.c:339
+#: cups/localize.c:324
 msgid "The printer's waste bin is almost full."
 msgstr ""
 
-#: cups/localize.c:341
+#: cups/localize.c:326
 msgid "The printer's waste bin is full."
 msgstr ""
 
-#: scheduler/ipp.c:914 scheduler/ipp.c:2271
+#: scheduler/ipp.c:894 scheduler/ipp.c:2251
 #, c-format
 msgid "The printer-uri \"%s\" contains invalid characters."
 msgstr ""
 
-#: scheduler/ipp.c:3202
+#: scheduler/ipp.c:3182
 msgid "The printer-uri attribute is required."
 msgstr ""
 
-#: scheduler/ipp.c:898
+#: scheduler/ipp.c:878
 msgid "The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
 msgstr ""
 
-#: scheduler/ipp.c:2255
+#: scheduler/ipp.c:2235
 msgid "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
 msgstr ""
 
-#: cgi-bin/admin.c:474
+#: cgi-bin/admin.c:452
 msgid "The subscription name may not contain spaces, slashes (/), question marks (?), or the pound sign (#)."
 msgstr ""
 
-#: scheduler/client.c:2533
+#: scheduler/client.c:2226
 msgid "The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to enable it."
 msgstr ""
 
-#: scheduler/ipp.c:6280
+#: scheduler/ipp.c:6257
 #, c-format
 msgid "The which-jobs value \"%s\" is not supported."
 msgstr ""
 
-#: scheduler/ipp.c:5551
+#: scheduler/ipp.c:5528
 msgid "There are too many subscriptions."
 msgstr ""
 
-#: cups/localize.c:308
-msgid "There is a paper jam."
-msgstr ""
-
 #: backend/usb-darwin.c:386 backend/usb-darwin.c:445 backend/usb-darwin.c:514
-#: backend/usb-darwin.c:535 backend/usb-libusb.c:291 backend/usb-libusb.c:345
+#: backend/usb-darwin.c:535 backend/usb-libusb.c:271 backend/usb-libusb.c:325
 msgid "There was an unrecoverable USB error."
 msgstr ""
 
@@ -5450,16 +5509,16 @@ msgstr ""
 msgid "Thermal Transfer Media"
 msgstr ""
 
-#: scheduler/ipp.c:1499
+#: scheduler/ipp.c:1479
 msgid "Too many active jobs."
 msgstr ""
 
-#: scheduler/ipp.c:1393
+#: scheduler/ipp.c:1373
 #, c-format
 msgid "Too many job-sheets values (%d > 2)."
 msgstr ""
 
-#: scheduler/ipp.c:2556
+#: scheduler/ipp.c:2536
 #, c-format
 msgid "Too many printer-state-reasons values (%d > %d)."
 msgstr ""
@@ -5488,10 +5547,14 @@ msgstr ""
 msgid "Tray 4"
 msgstr ""
 
-#: cups/http-support.c:1390
+#: cups/http-support.c:1378
 msgid "URI Too Long"
 msgstr ""
 
+#: cups/http-support.c:1453
+msgid "URI too large"
+msgstr ""
+
 #: ppdc/sample.c:138
 msgid "US Ledger"
 msgstr ""
@@ -5524,7 +5587,7 @@ msgstr ""
 msgid "US Letter Small"
 msgstr ""
 
-#: cgi-bin/admin.c:1959 cgi-bin/admin.c:1972 cgi-bin/admin.c:1996
+#: cgi-bin/admin.c:1939 cgi-bin/admin.c:1952 cgi-bin/admin.c:1976
 msgid "Unable to access cupsd.conf file"
 msgstr ""
 
@@ -5532,223 +5595,232 @@ msgstr ""
 msgid "Unable to access help file."
 msgstr ""
 
-#: cgi-bin/admin.c:526
+#: cgi-bin/admin.c:504
 msgid "Unable to add RSS subscription"
 msgstr ""
 
-#: cgi-bin/admin.c:814
+#: cgi-bin/admin.c:792
 msgid "Unable to add class"
 msgstr ""
 
-#: backend/ipp.c:1757
+#: backend/ipp.c:1784
 msgid "Unable to add document to print job."
 msgstr ""
 
-#: scheduler/ipp.c:1558
+#: scheduler/ipp.c:1538
 #, c-format
 msgid "Unable to add job for destination \"%s\"."
 msgstr ""
 
-#: cgi-bin/admin.c:1059 cgi-bin/admin.c:1419
+#: cgi-bin/admin.c:1037 cgi-bin/admin.c:1399
 msgid "Unable to add printer"
 msgstr ""
 
-#: scheduler/ipp.c:1184
+#: scheduler/ipp.c:1164
 msgid "Unable to allocate memory for file types."
 msgstr ""
 
-#: filter/pstops.c:451
+#: filter/pstops.c:418
 msgid "Unable to allocate memory for page info"
 msgstr ""
 
-#: filter/pstops.c:445
+#: filter/pstops.c:412
 msgid "Unable to allocate memory for pages array"
 msgstr ""
 
-#: cgi-bin/admin.c:1525
+#: cgi-bin/admin.c:1505
 msgid "Unable to cancel RSS subscription"
 msgstr ""
 
-#: backend/ipp.c:2160
+#: backend/ipp.c:2065 backend/ipp.c:2500
 msgid "Unable to cancel print job."
 msgstr ""
 
-#: cgi-bin/admin.c:2990
+#: cgi-bin/admin.c:2970
 msgid "Unable to change printer"
 msgstr ""
 
-#: cgi-bin/admin.c:3906
+#: cgi-bin/admin.c:3886
 msgid "Unable to change printer-is-shared attribute"
 msgstr ""
 
-#: cgi-bin/admin.c:1657 cgi-bin/admin.c:1799
+#: cgi-bin/admin.c:1637 cgi-bin/admin.c:1779
 msgid "Unable to change server settings"
 msgstr ""
 
-#: cups/ipp.c:5416
+#: cups/ipp.c:5389
 #, c-format
 msgid "Unable to compile mimeMediaType regular expression: %s."
 msgstr ""
 
-#: cups/ipp.c:5362
+#: cups/ipp.c:5335
 #, c-format
 msgid "Unable to compile naturalLanguage regular expression: %s."
 msgstr ""
 
-#: filter/commandtops.c:420
+#: filter/commandtops.c:407
 msgid "Unable to configure printer options."
 msgstr ""
 
-#: cups/adminutil.c:911 cups/request.c:1082
+#: cups/adminutil.c:900 cups/request.c:1066
 msgid "Unable to connect to host."
 msgstr ""
 
-#: backend/ipp.c:740 backend/ipp.c:1214 backend/lpd.c:804 backend/socket.c:343
-#: backend/usb-unix.c:117
+#: backend/ipp.c:769 backend/ipp.c:1242 backend/lpd.c:795 backend/socket.c:338
+#: backend/usb-unix.c:110
 msgid "Unable to contact printer, queuing on next printer in class."
 msgstr ""
 
-#: cups/adminutil.c:726
+#: cups/adminutil.c:715
 #, c-format
 msgid "Unable to copy 64-bit CUPS printer driver files (%d)."
 msgstr ""
 
-#: cups/adminutil.c:691
+#: cups/adminutil.c:680
 #, c-format
 msgid "Unable to copy 64-bit Windows printer driver files (%d)."
 msgstr ""
 
-#: cups/adminutil.c:522
+#: cups/adminutil.c:511
 #, c-format
 msgid "Unable to copy CUPS printer driver files (%d)."
 msgstr ""
 
-#: scheduler/ipp.c:2676
+#: scheduler/ipp.c:2656
 #, c-format
 msgid "Unable to copy PPD file - %s"
 msgstr ""
 
-#: scheduler/ipp.c:2731
+#: scheduler/ipp.c:2711
 msgid "Unable to copy PPD file."
 msgstr ""
 
-#: cups/adminutil.c:487
+#: cups/adminutil.c:476
 #, c-format
 msgid "Unable to copy Windows 2000 printer driver files (%d)."
 msgstr ""
 
-#: cups/adminutil.c:610
+#: cups/adminutil.c:599
 #, c-format
 msgid "Unable to copy Windows 9x printer driver files (%d)."
 msgstr ""
 
-#: scheduler/ipp.c:2653
+#: scheduler/ipp.c:2633
 #, c-format
 msgid "Unable to copy interface script - %s"
 msgstr ""
 
-#: cups/util.c:605 cups/util.c:1667
+#: cups/util.c:569 cups/util.c:1639
 msgid "Unable to create printer-uri"
 msgstr ""
 
-#: cgi-bin/admin.c:1850 cgi-bin/admin.c:1862 scheduler/cupsfilter.c:1262
+#: cups/tls-darwin.c:1136
+msgid "Unable to create server credentials."
+msgstr ""
+
+#: cgi-bin/admin.c:1830 cgi-bin/admin.c:1842 scheduler/cupsfilter.c:1290
 msgid "Unable to create temporary file"
 msgstr ""
 
-#: cgi-bin/admin.c:2153
+#: cgi-bin/admin.c:2133
 msgid "Unable to delete class"
 msgstr ""
 
-#: cgi-bin/admin.c:2238
+#: cgi-bin/admin.c:2218
 msgid "Unable to delete printer"
 msgstr ""
 
-#: cgi-bin/classes.c:260 cgi-bin/printers.c:269
+#: cgi-bin/classes.c:252 cgi-bin/printers.c:261
 msgid "Unable to do maintenance command"
 msgstr ""
 
-#: cgi-bin/admin.c:1974
+#: cgi-bin/admin.c:1954
 msgid "Unable to edit cupsd.conf files larger than 1MB"
 msgstr ""
 
-#: cups/http.c:5354
+#: cups/tls-darwin.c:1304 cups/tls-sspi.c:493
 msgid "Unable to establish a secure connection to host (certificate chain invalid)."
 msgstr ""
 
-#: cups/http.c:5344
+#: cups/tls-darwin.c:1294 cups/tls-sspi.c:483
 msgid "Unable to establish a secure connection to host (certificate not yet valid)."
 msgstr ""
 
-#: cups/http.c:5339
+#: cups/tls-darwin.c:1289 cups/tls-sspi.c:478
 msgid "Unable to establish a secure connection to host (expired certificate)."
 msgstr ""
 
-#: cups/http.c:5349
+#: cups/tls-darwin.c:1299 cups/tls-sspi.c:488
 msgid "Unable to establish a secure connection to host (host name mismatch)."
 msgstr ""
 
-#: cups/http.c:5359
+#: cups/tls-darwin.c:1309 cups/tls-sspi.c:498
 msgid "Unable to establish a secure connection to host (peer dropped connection before responding)."
 msgstr ""
 
-#: cups/http.c:5334
+#: cups/tls-darwin.c:1284 cups/tls-sspi.c:473
 msgid "Unable to establish a secure connection to host (self-signed certificate)."
 msgstr ""
 
-#: cups/http.c:5329
+#: cups/tls-darwin.c:1279 cups/tls-sspi.c:468
 msgid "Unable to establish a secure connection to host (untrusted certificate)."
 msgstr ""
 
-#: cups/http.c:5130 cups/http.c:5386 cups/http.c:5423 cups/http.c:5442
+#: cups/tls-darwin.c:1336 cups/tls-sspi.c:269 cups/tls-sspi.c:525
+#: cups/tls-sspi.c:558 cups/tls-sspi.c:575
 msgid "Unable to establish a secure connection to host."
 msgstr ""
 
-#: cgi-bin/ipp-var.c:365
+#: cgi-bin/ipp-var.c:350
 msgid "Unable to find destination for job"
 msgstr ""
 
-#: cups/http-support.c:1830
+#: cups/http-support.c:1949
 msgid "Unable to find printer."
 msgstr ""
 
-#: backend/ipp.c:3435
+#: cups/tls-darwin.c:1150
+msgid "Unable to find server credentials."
+msgstr ""
+
+#: backend/ipp.c:3481
 msgid "Unable to get backend exit status."
 msgstr ""
 
-#: cgi-bin/classes.c:450
+#: cgi-bin/classes.c:442
 msgid "Unable to get class list"
 msgstr ""
 
-#: cgi-bin/classes.c:549
+#: cgi-bin/classes.c:541
 msgid "Unable to get class status"
 msgstr ""
 
-#: cgi-bin/admin.c:1320
+#: cgi-bin/admin.c:1300
 msgid "Unable to get list of printer drivers"
 msgstr ""
 
-#: cgi-bin/admin.c:2840
+#: cgi-bin/admin.c:2820
 msgid "Unable to get printer attributes"
 msgstr ""
 
-#: cgi-bin/printers.c:467
+#: cgi-bin/printers.c:459
 msgid "Unable to get printer list"
 msgstr ""
 
-#: cgi-bin/printers.c:569
+#: cgi-bin/printers.c:561
 msgid "Unable to get printer status"
 msgstr ""
 
-#: backend/ipp.c:965
+#: backend/ipp.c:993
 msgid "Unable to get printer status."
 msgstr ""
 
-#: cups/adminutil.c:565 cups/adminutil.c:769
+#: cups/adminutil.c:554 cups/adminutil.c:758
 #, c-format
 msgid "Unable to install Windows 2000 printer driver files (%d)."
 msgstr ""
 
-#: cups/adminutil.c:639
+#: cups/adminutil.c:628
 #, c-format
 msgid "Unable to install Windows 9x printer driver files (%d)."
 msgstr ""
@@ -5757,45 +5829,45 @@ msgstr ""
 msgid "Unable to load help index."
 msgstr ""
 
-#: backend/ipp.c:665 backend/lpd.c:435 backend/socket.c:282
+#: backend/ipp.c:668 backend/lpd.c:426 backend/socket.c:277
 #, c-format
 msgid "Unable to locate printer \"%s\"."
 msgstr ""
 
-#: backend/dnssd.c:790 backend/ipp.c:334 backend/lpd.c:205
-#: backend/socket.c:168
+#: backend/dnssd.c:787 backend/ipp.c:336 backend/lpd.c:196
+#: backend/socket.c:163
 msgid "Unable to locate printer."
 msgstr ""
 
-#: cgi-bin/admin.c:813
+#: cgi-bin/admin.c:791
 msgid "Unable to modify class"
 msgstr ""
 
-#: cgi-bin/admin.c:1058 cgi-bin/admin.c:1418
+#: cgi-bin/admin.c:1036 cgi-bin/admin.c:1398
 msgid "Unable to modify printer"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:432 cgi-bin/ipp-var.c:521
+#: cgi-bin/ipp-var.c:417 cgi-bin/ipp-var.c:506
 msgid "Unable to move job"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:434 cgi-bin/ipp-var.c:523
+#: cgi-bin/ipp-var.c:419 cgi-bin/ipp-var.c:508
 msgid "Unable to move jobs"
 msgstr ""
 
-#: cgi-bin/admin.c:3186 cups/ppd.c:339
+#: cgi-bin/admin.c:3166 cups/ppd.c:297
 msgid "Unable to open PPD file"
 msgstr ""
 
-#: cgi-bin/admin.c:2608
+#: cgi-bin/admin.c:2588
 msgid "Unable to open cupsd.conf file:"
 msgstr ""
 
-#: backend/usb-unix.c:141
+#: backend/usb-unix.c:134
 msgid "Unable to open device file"
 msgstr ""
 
-#: scheduler/ipp.c:5966
+#: scheduler/ipp.c:5943
 #, c-format
 msgid "Unable to open document #%d in job #%d."
 msgstr ""
@@ -5804,226 +5876,238 @@ msgstr ""
 msgid "Unable to open help file."
 msgstr ""
 
-#: backend/ipp.c:376 backend/ipp.c:1503 backend/ipp.c:1712 backend/lpd.c:505
-#: backend/socket.c:155 backend/usb.c:237 filter/gziptoany.c:71
-#: filter/pstops.c:300
+#: backend/ipp.c:378 backend/ipp.c:1531 backend/ipp.c:1739 backend/lpd.c:496
+#: backend/socket.c:150 backend/usb.c:237 filter/gziptoany.c:67
+#: filter/pstops.c:267
 msgid "Unable to open print file"
 msgstr ""
 
-#: filter/rastertoepson.c:998 filter/rastertohp.c:724
-#: filter/rastertolabel.c:1141
+#: filter/rastertoepson.c:983 filter/rastertohp.c:713
+#: filter/rastertolabel.c:1133
 msgid "Unable to open raster file"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:795
+#: cgi-bin/ipp-var.c:780
 msgid "Unable to print test page"
 msgstr ""
 
-#: backend/runloop.c:96 backend/runloop.c:325 backend/usb-darwin.c:622
-#: backend/usb-darwin.c:666 backend/usb-libusb.c:436 backend/usb-libusb.c:471
+#: backend/runloop.c:85 backend/runloop.c:314 backend/usb-darwin.c:622
+#: backend/usb-darwin.c:666 backend/usb-libusb.c:416 backend/usb-libusb.c:451
 msgid "Unable to read print data."
 msgstr ""
 
-#: cups/dest.c:3422
-msgid "Unable to resolve printer URI."
+#: cups/dest.c:3445
+msgid "Unable to resolve printer-uri."
 msgstr ""
 
-#: cups/adminutil.c:2088
+#: cups/adminutil.c:2077
 #, c-format
 msgid "Unable to run \"%s\": %s"
 msgstr ""
 
-#: filter/pstops.c:563
+#: filter/pstops.c:530
 msgid "Unable to see in file"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:598 cgi-bin/ipp-var.c:618
+#: cgi-bin/ipp-var.c:583 cgi-bin/ipp-var.c:603
 msgid "Unable to send command to printer driver"
 msgstr ""
 
-#: backend/usb-darwin.c:744 backend/usb-libusb.c:547
+#: backend/usb-darwin.c:744 backend/usb-libusb.c:527
 msgid "Unable to send data to printer."
 msgstr ""
 
-#: cups/adminutil.c:821
+#: cups/adminutil.c:810
 #, c-format
 msgid "Unable to set Windows printer driver (%d)."
 msgstr ""
 
-#: cgi-bin/admin.c:3807
+#: cgi-bin/admin.c:3787
 msgid "Unable to set options"
 msgstr ""
 
-#: cgi-bin/admin.c:3077
+#: cgi-bin/admin.c:3057
 msgid "Unable to set server default"
 msgstr ""
 
-#: backend/ipp.c:3294 backend/ipp.c:3371 backend/ipp.c:3379
+#: backend/ipp.c:3340 backend/ipp.c:3417 backend/ipp.c:3425
 msgid "Unable to start backend process."
 msgstr ""
 
-#: cgi-bin/admin.c:1912
+#: cgi-bin/admin.c:1892
 msgid "Unable to upload cupsd.conf file"
 msgstr ""
 
-#: backend/usb-darwin.c:2014 backend/usb-darwin.c:2038
+#: backend/usb-darwin.c:2016 backend/usb-darwin.c:2040
 msgid "Unable to use legacy USB class driver."
 msgstr ""
 
-#: backend/runloop.c:125 backend/runloop.c:380
+#: backend/runloop.c:114 backend/runloop.c:369
 msgid "Unable to write print data"
 msgstr ""
 
-#: filter/gziptoany.c:90
+#: filter/gziptoany.c:86
 #, c-format
 msgid "Unable to write uncompressed print data: %s"
 msgstr ""
 
-#: cups/http-support.c:1378
+#: cups/http-support.c:1366
 msgid "Unauthorized"
 msgstr ""
 
-#: cgi-bin/admin.c:3503
+#: cgi-bin/admin.c:3483
 msgid "Units"
 msgstr ""
 
-#: cups/http-support.c:1418 cups/ppd.c:366
+#: cups/http-support.c:1406 cups/http-support.c:1490 cups/ppd.c:324
 msgid "Unknown"
 msgstr ""
 
-#: filter/pstops.c:2214
+#: filter/pstops.c:2185
 #, c-format
 msgid "Unknown choice \"%s\" for option \"%s\"."
 msgstr ""
 
-#: backend/ipp.c:518
+#: backend/ipp.c:520
 #, c-format
 msgid "Unknown encryption option value: \"%s\"."
 msgstr ""
 
-#: backend/lpd.c:351
+#: backend/lpd.c:342
 #, c-format
 msgid "Unknown file order: \"%s\"."
 msgstr ""
 
-#: backend/lpd.c:322
+#: backend/lpd.c:313
 #, c-format
 msgid "Unknown format character: \"%c\"."
 msgstr ""
 
-#: cups/dest-options.c:984
+#: cups/dest-options.c:964
 msgid "Unknown media size name."
 msgstr ""
 
-#: backend/ipp.c:582
+#: backend/ipp.c:584
 #, c-format
 msgid "Unknown option \"%s\" with value \"%s\"."
 msgstr ""
 
-#: filter/pstops.c:2197
+#: filter/pstops.c:2168
 #, c-format
 msgid "Unknown option \"%s\"."
 msgstr ""
 
-#: backend/lpd.c:337
+#: backend/lpd.c:328
 #, c-format
 msgid "Unknown print mode: \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:10318
+#: scheduler/ipp.c:10290
 #, c-format
 msgid "Unknown printer-error-policy \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:10301
+#: scheduler/ipp.c:10273
 #, c-format
 msgid "Unknown printer-op-policy \"%s\"."
 msgstr ""
 
-#: cups/http-addrlist.c:746
+#: cups/http.c:2309
+msgid "Unknown request method."
+msgstr ""
+
+#: cups/http.c:2329
+msgid "Unknown request version."
+msgstr ""
+
+#: cups/http-support.c:1483
+msgid "Unknown scheme in URI"
+msgstr ""
+
+#: cups/http-addrlist.c:737
 msgid "Unknown service name."
 msgstr ""
 
-#: backend/ipp.c:547
+#: backend/ipp.c:549
 #, c-format
 msgid "Unknown version option value: \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:10774
+#: scheduler/ipp.c:10745
 #, c-format
 msgid "Unsupported 'compression' value \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:10804
+#: scheduler/ipp.c:10775
 #, c-format
 msgid "Unsupported 'document-format' value \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:10879
+#: scheduler/ipp.c:10850
 msgid "Unsupported 'job-name' value."
 msgstr ""
 
-#: scheduler/ipp.c:332
+#: scheduler/ipp.c:329
 #, c-format
 msgid "Unsupported character set \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:7986 scheduler/ipp.c:9223
+#: scheduler/ipp.c:7963 scheduler/ipp.c:9197
 #, c-format
 msgid "Unsupported compression \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:8120 scheduler/ipp.c:9373
+#: scheduler/ipp.c:8097 scheduler/ipp.c:9347
 #, c-format
 msgid "Unsupported document-format \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:9356
+#: scheduler/ipp.c:9330
 #, c-format
 msgid "Unsupported document-format \"%s/%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:1359
+#: scheduler/ipp.c:1339
 #, c-format
 msgid "Unsupported format \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:1457
+#: scheduler/ipp.c:1437
 msgid "Unsupported margins."
 msgstr ""
 
-#: cups/pwg-media.c:568
+#: cups/pwg-media.c:549
 msgid "Unsupported media value."
 msgstr ""
 
-#: filter/pstops.c:2479
+#: filter/pstops.c:2450
 #, c-format
 msgid "Unsupported number-up value %d, using number-up=1."
 msgstr ""
 
-#: filter/pstops.c:2513
+#: filter/pstops.c:2484
 #, c-format
 msgid "Unsupported number-up-layout value %s, using number-up-layout=lrtb."
 msgstr ""
 
-#: filter/pstops.c:2564
+#: filter/pstops.c:2535
 #, c-format
 msgid "Unsupported page-border value %s, using page-border=none."
 msgstr ""
 
-#: filter/rastertopwg.c:147 filter/rastertopwg.c:155 filter/rastertopwg.c:164
+#: filter/rastertopwg.c:139 filter/rastertopwg.c:147 filter/rastertopwg.c:156
 msgid "Unsupported raster data."
 msgstr ""
 
-#: cups/snmp.c:1108
+#: cups/snmp.c:1064
 msgid "Unsupported value type"
 msgstr ""
 
-#: cups/http-support.c:1393
+#: cups/http-support.c:1381
 msgid "Upgrade Required"
 msgstr ""
 
-#: systemv/lpadmin.c:668
+#: systemv/lpadmin.c:654
 msgid ""
 "Usage:\n"
 "\n"
@@ -6035,10 +6119,10 @@ msgid ""
 "                       [-u allow:user,user] [-u deny:user,user]"
 msgstr ""
 
-#: backend/dnssd.c:242 backend/ipp.c:323 backend/lpd.c:192
-#: backend/socket.c:132 backend/usb.c:183 filter/commandtops.c:74
-#: filter/gziptoany.c:50 filter/pstops.c:264 monitor/bcp.c:62
-#: monitor/tbcp.c:61
+#: backend/dnssd.c:227 backend/ipp.c:325 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
 #, c-format
 msgid "Usage: %s job-id user title copies options [file]"
 msgstr ""
@@ -6051,12 +6135,12 @@ msgstr ""
 msgid "Usage: cupsctl [options] [param=value ... paramN=valueN]"
 msgstr ""
 
-#: scheduler/main.c:2001
+#: scheduler/main.c:2157
 msgid "Usage: cupsd [options]"
 msgstr ""
 
-#: scheduler/cupsfilter.c:1456
-msgid "Usage: cupsfilter [ options ] filename"
+#: scheduler/cupsfilter.c:1481
+msgid "Usage: cupsfilter [ options ] [ -- ] filename"
 msgstr ""
 
 #: systemv/cupstestdsc.c:425
@@ -6075,7 +6159,7 @@ msgid ""
 "Options:"
 msgstr ""
 
-#: test/ippfind.c:2726
+#: test/ippfind.c:2708
 msgid ""
 "Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n"
 "       ippfind [options] name[.regtype[.domain.]] ... [expression]\n"
@@ -6083,7 +6167,7 @@ msgid ""
 "       ippfind --version"
 msgstr ""
 
-#: test/ipptool.c:4706
+#: test/ipptool.c:4711
 msgid "Usage: ipptool [options] URI filename [ ... filenameN ]"
 msgstr ""
 
@@ -6091,7 +6175,7 @@ msgstr ""
 msgid "Usage: lpmove job/src dest"
 msgstr ""
 
-#: systemv/lpoptions.c:553
+#: systemv/lpoptions.c:539
 msgid ""
 "Usage: lpoptions [-h server] [-E] -d printer\n"
 "       lpoptions [-h server] [-E] [-p printer] -l\n"
@@ -6099,22 +6183,11 @@ msgid ""
 "       lpoptions [-h server] [-E] -x printer"
 msgstr ""
 
-#: systemv/lppasswd.c:476
-msgid "Usage: lppasswd [-g groupname]"
-msgstr ""
-
-#: systemv/lppasswd.c:479
-msgid ""
-"Usage: lppasswd [-g groupname] [username]\n"
-"       lppasswd [-g groupname] -a [username]\n"
-"       lppasswd [-g groupname] -x [username]"
-msgstr ""
-
-#: berkeley/lpq.c:675
+#: berkeley/lpq.c:637
 msgid "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
 msgstr ""
 
-#: ppdc/ppdc.cxx:435
+#: ppdc/ppdc.cxx:430
 msgid "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]"
 msgstr ""
 
@@ -6126,7 +6199,7 @@ msgstr ""
 msgid "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]"
 msgstr ""
 
-#: ppdc/ppdmerge.cxx:367
+#: ppdc/ppdmerge.cxx:361
 msgid "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]"
 msgstr ""
 
@@ -6134,55 +6207,51 @@ msgstr ""
 msgid "Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]"
 msgstr ""
 
-#: backend/snmp.c:218
+#: backend/snmp.c:192
 msgid "Usage: snmp [host-or-ip-address]"
 msgstr ""
 
-#: cups/snmp.c:1060
+#: cups/snmp.c:1016
 msgid "Value uses indefinite length"
 msgstr ""
 
-#: cups/snmp.c:1045
+#: cups/snmp.c:1001
 msgid "VarBind uses indefinite length"
 msgstr ""
 
-#: cups/snmp.c:995
+#: cups/snmp.c:951
 msgid "Version uses indefinite length"
 msgstr ""
 
-#: backend/ipp.c:1858
+#: backend/ipp.c:1901
 msgid "Waiting for job to complete."
 msgstr ""
 
-#: backend/usb-darwin.c:469 backend/usb-libusb.c:243
+#: backend/usb-darwin.c:469 backend/usb-libusb.c:223
 msgid "Waiting for printer to become available."
 msgstr ""
 
-#: backend/socket.c:443
+#: backend/socket.c:440
 msgid "Waiting for printer to finish."
 msgstr ""
 
-#: cups/adminutil.c:793
+#: cups/adminutil.c:782
 msgid "Warning, no Windows 2000 printer drivers are installed."
 msgstr ""
 
-#: cups/http-support.c:1414
+#: cups/http-support.c:1402
 msgid "Web Interface is Disabled"
 msgstr ""
 
-#: cups/ppd.c:1947
+#: cups/ppd.c:1902
 msgid "Yes"
 msgstr ""
 
-#: scheduler/client.c:2520
+#: scheduler/client.c:2213
 #, c-format
 msgid "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
 msgstr ""
 
-#: systemv/lppasswd.c:254
-msgid "Your password must be at least 6 characters long, cannot contain your username, and must contain at least one letter and number."
-msgstr ""
-
 #: ppdc/sample.c:439
 msgid "ZPL Label Printer"
 msgstr ""
@@ -6203,11 +6272,11 @@ msgstr ""
 msgid "completed"
 msgstr ""
 
-#: scheduler/ipp.c:5838
+#: scheduler/ipp.c:5815
 msgid "cups-deviced failed to execute."
 msgstr ""
 
-#: scheduler/ipp.c:6657 scheduler/ipp.c:6906
+#: scheduler/ipp.c:6634 scheduler/ipp.c:6883
 msgid "cups-driverd failed to execute."
 msgstr ""
 
@@ -6235,7 +6304,7 @@ msgstr ""
 msgid "cupsctl: Unknown option \"-%c\""
 msgstr ""
 
-#: scheduler/main.c:171
+#: scheduler/main.c:172
 msgid "cupsd: Expected config filename after \"-c\" option."
 msgstr ""
 
@@ -6243,11 +6312,15 @@ msgstr ""
 msgid "cupsd: Expected cups-files.conf filename after \"-s\" option."
 msgstr ""
 
+#: scheduler/main.c:237
+msgid "cupsd: On-demand support not compiled in, running in normal mode."
+msgstr ""
+
 #: scheduler/main.c:270
 msgid "cupsd: Relative cups-files.conf filename not allowed."
 msgstr ""
 
-#: scheduler/main.c:202 scheduler/main.c:209
+#: scheduler/main.c:203 scheduler/main.c:210
 msgid "cupsd: Unable to get current directory."
 msgstr ""
 
@@ -6265,25 +6338,21 @@ msgstr ""
 msgid "cupsd: Unknown option \"%c\" - aborting."
 msgstr ""
 
-#: scheduler/main.c:236
-msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
-msgstr ""
-
-#: scheduler/cupsfilter.c:1235
+#: scheduler/cupsfilter.c:1263
 #, c-format
 msgid "cupsfilter: Invalid document number %d."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1229
+#: scheduler/cupsfilter.c:1257
 #, c-format
 msgid "cupsfilter: Invalid job ID %d."
 msgstr ""
 
-#: scheduler/cupsfilter.c:340
+#: scheduler/cupsfilter.c:348
 msgid "cupsfilter: Only one filename can be specified."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1277
+#: scheduler/cupsfilter.c:1305
 #, c-format
 msgid "cupsfilter: Unable to get job file - %s"
 msgstr ""
@@ -6296,21 +6365,21 @@ msgstr ""
 msgid "cupstestppd: The -v option is incompatible with the -q option."
 msgstr ""
 
-#: systemv/lpstat.c:1279 systemv/lpstat.c:1282 systemv/lpstat.c:1285
+#: systemv/lpstat.c:1232 systemv/lpstat.c:1235 systemv/lpstat.c:1238
 #, c-format
 msgid "device for %s/%s: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1266 systemv/lpstat.c:1269 systemv/lpstat.c:1272
+#: systemv/lpstat.c:1218 systemv/lpstat.c:1221 systemv/lpstat.c:1224
 #, c-format
 msgid "device for %s: %s"
 msgstr ""
 
-#: cups/snmp.c:1032
+#: cups/snmp.c:988
 msgid "error-index uses indefinite length"
 msgstr ""
 
-#: cups/snmp.c:1024
+#: cups/snmp.c:980
 msgid "error-status uses indefinite length"
 msgstr ""
 
@@ -6318,7 +6387,7 @@ msgstr ""
 msgid "held"
 msgstr ""
 
-#: berkeley/lpc.c:209
+#: berkeley/lpc.c:201
 msgid "help\t\tGet help on commands."
 msgstr ""
 
@@ -6326,297 +6395,297 @@ msgstr ""
 msgid "idle"
 msgstr ""
 
-#: test/ippfind.c:2458
+#: test/ippfind.c:2435
 #, c-format
 msgid "ippfind: Bad regular expression: %s"
 msgstr ""
 
-#: test/ippfind.c:347
+#: test/ippfind.c:324
 msgid "ippfind: Cannot use --and after --or."
 msgstr ""
 
-#: test/ippfind.c:620
+#: test/ippfind.c:597
 #, c-format
 msgid "ippfind: Expected key name after %s."
 msgstr ""
 
-#: test/ippfind.c:570 test/ippfind.c:753
+#: test/ippfind.c:547 test/ippfind.c:730
 #, c-format
 msgid "ippfind: Expected port range after %s."
 msgstr ""
 
-#: test/ippfind.c:380
+#: test/ippfind.c:357
 #, c-format
 msgid "ippfind: Expected program after %s."
 msgstr ""
 
-#: test/ippfind.c:397
+#: test/ippfind.c:374
 #, c-format
 msgid "ippfind: Expected semi-colon after %s."
 msgstr ""
 
-#: test/ippfind.c:1977
+#: test/ippfind.c:1958
 msgid "ippfind: Missing close brace in substitution."
 msgstr ""
 
-#: test/ippfind.c:1074
+#: test/ippfind.c:1049
 msgid "ippfind: Missing close parenthesis."
 msgstr ""
 
-#: test/ippfind.c:354
+#: test/ippfind.c:331
 msgid "ippfind: Missing expression before \"--and\"."
 msgstr ""
 
-#: test/ippfind.c:467
+#: test/ippfind.c:444
 msgid "ippfind: Missing expression before \"--or\"."
 msgstr ""
 
-#: test/ippfind.c:891
+#: test/ippfind.c:867
 #, c-format
 msgid "ippfind: Missing key name after %s."
 msgstr ""
 
-#: test/ippfind.c:1045
+#: test/ippfind.c:1020
 msgid "ippfind: Missing open parenthesis."
 msgstr ""
 
-#: test/ippfind.c:921
+#: test/ippfind.c:897
 #, c-format
 msgid "ippfind: Missing program after %s."
 msgstr ""
 
-#: test/ippfind.c:366 test/ippfind.c:420 test/ippfind.c:449 test/ippfind.c:555
-#: test/ippfind.c:637 test/ippfind.c:652 test/ippfind.c:808 test/ippfind.c:823
-#: test/ippfind.c:846 test/ippfind.c:906
+#: test/ippfind.c:343 test/ippfind.c:397 test/ippfind.c:426 test/ippfind.c:532
+#: test/ippfind.c:614 test/ippfind.c:629 test/ippfind.c:784 test/ippfind.c:799
+#: test/ippfind.c:822 test/ippfind.c:882
 #, c-format
 msgid "ippfind: Missing regular expression after %s."
 msgstr ""
 
-#: test/ippfind.c:939
+#: test/ippfind.c:915
 #, c-format
 msgid "ippfind: Missing semi-colon after %s."
 msgstr ""
 
-#: test/ippfind.c:1924 test/ippfind.c:1949
+#: test/ippfind.c:1905 test/ippfind.c:1930
 msgid "ippfind: Out of memory."
 msgstr ""
 
-#: test/ippfind.c:1018
+#: test/ippfind.c:993
 msgid "ippfind: Too many parenthesis."
 msgstr ""
 
-#: test/ippfind.c:1287 test/ippfind.c:1423 test/ippfind.c:2545
+#: test/ippfind.c:1262 test/ippfind.c:1398 test/ippfind.c:2527
 #, c-format
 msgid "ippfind: Unable to browse or resolve: %s"
 msgstr ""
 
-#: test/ippfind.c:2036 test/ippfind.c:2063
+#: test/ippfind.c:2017 test/ippfind.c:2044
 #, c-format
 msgid "ippfind: Unable to execute \"%s\": %s"
 msgstr ""
 
-#: test/ippfind.c:1164 test/ippfind.c:1172 test/ippfind.c:1183
+#: test/ippfind.c:1139 test/ippfind.c:1147 test/ippfind.c:1158
 #, c-format
 msgid "ippfind: Unable to use Bonjour: %s"
 msgstr ""
 
-#: test/ippfind.c:2006
+#: test/ippfind.c:1987
 #, c-format
 msgid "ippfind: Unknown variable \"{%s}\"."
 msgstr ""
 
-#: test/ipptool.c:372 test/ipptool.c:521 test/ipptool.c:545
-msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
+#: test/ipptool.c:324 test/ipptool.c:387 test/ipptool.c:542 test/ipptool.c:565
+msgid "ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"."
 msgstr ""
 
-#: test/ipptool.c:603
+#: test/ipptool.c:621
 #, c-format
 msgid "ipptool: Bad URI - %s."
 msgstr ""
 
-#: test/ipptool.c:514
+#: test/ipptool.c:535
 msgid "ipptool: Invalid seconds for \"-i\"."
 msgstr ""
 
-#: test/ipptool.c:584
+#: test/ipptool.c:602
 msgid "ipptool: May only specify a single URI."
 msgstr ""
 
-#: test/ipptool.c:537
+#: test/ipptool.c:557
 msgid "ipptool: Missing count for \"-n\"."
 msgstr ""
 
-#: test/ipptool.c:407
+#: test/ipptool.c:421
 msgid "ipptool: Missing filename for \"-f\"."
 msgstr ""
 
-#: test/ipptool.c:388
+#: test/ipptool.c:402
 msgid "ipptool: Missing name=value for \"-d\"."
 msgstr ""
 
-#: test/ipptool.c:504
+#: test/ipptool.c:525
 msgid "ipptool: Missing seconds for \"-i\"."
 msgstr ""
 
-#: test/ipptool.c:630
+#: test/ipptool.c:647
 msgid "ipptool: URI required before test file."
 msgstr ""
 
-#: test/ipptool.c:564
+#: test/ipptool.c:583
 #, c-format
 msgid "ipptool: Unknown option \"-%c\"."
 msgstr ""
 
-#: scheduler/ipp.c:7653
+#: scheduler/ipp.c:7630
 msgid "job-printer-uri attribute missing."
 msgstr ""
 
-#: systemv/lpadmin.c:131 systemv/lpadmin.c:375
+#: systemv/lpadmin.c:117 systemv/lpadmin.c:361
 msgid "lpadmin: Class name can only contain printable characters."
 msgstr ""
 
-#: systemv/lpadmin.c:614
+#: systemv/lpadmin.c:600
 msgid "lpadmin: Expected PPD after \"-P\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:457
+#: systemv/lpadmin.c:443
 msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:364
+#: systemv/lpadmin.c:350
 msgid "lpadmin: Expected class after \"-r\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:120
+#: systemv/lpadmin.c:106
 msgid "lpadmin: Expected class name after \"-c\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:558
+#: systemv/lpadmin.c:544
 msgid "lpadmin: Expected description after \"-D\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:491
+#: systemv/lpadmin.c:477
 msgid "lpadmin: Expected device URI after \"-v\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:574
+#: systemv/lpadmin.c:560
 msgid "lpadmin: Expected file type(s) after \"-I\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:202
+#: systemv/lpadmin.c:188
 msgid "lpadmin: Expected hostname after \"-h\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:221
+#: systemv/lpadmin.c:207
 msgid "lpadmin: Expected interface after \"-i\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:594
+#: systemv/lpadmin.c:580
 msgid "lpadmin: Expected location after \"-L\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:274
+#: systemv/lpadmin.c:260
 msgid "lpadmin: Expected model after \"-m\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:417
+#: systemv/lpadmin.c:403
 msgid "lpadmin: Expected name after \"-R\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:294
+#: systemv/lpadmin.c:280
 msgid "lpadmin: Expected name=value after \"-o\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:313
+#: systemv/lpadmin.c:299
 msgid "lpadmin: Expected printer after \"-p\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:164
+#: systemv/lpadmin.c:150
 msgid "lpadmin: Expected printer name after \"-d\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:525
+#: systemv/lpadmin.c:511
 msgid "lpadmin: Expected printer or class after \"-x\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:975
+#: systemv/lpadmin.c:961
 msgid "lpadmin: No member names were seen."
 msgstr ""
 
-#: systemv/lpadmin.c:762
+#: systemv/lpadmin.c:748
 #, c-format
 msgid "lpadmin: Printer %s is already a member of class %s."
 msgstr ""
 
-#: systemv/lpadmin.c:989
+#: systemv/lpadmin.c:975
 #, c-format
 msgid "lpadmin: Printer %s is not a member of class %s."
 msgstr ""
 
-#: systemv/lpadmin.c:175 systemv/lpadmin.c:324 systemv/lpadmin.c:536
+#: systemv/lpadmin.c:161 systemv/lpadmin.c:310 systemv/lpadmin.c:522
 msgid "lpadmin: Printer name can only contain printable characters."
 msgstr ""
 
-#: systemv/lpadmin.c:105
+#: systemv/lpadmin.c:91
 msgid ""
 "lpadmin: Unable to add a printer to the class:\n"
 "         You must specify a printer name first."
 msgstr ""
 
-#: systemv/lpadmin.c:96 systemv/lpadmin.c:149 systemv/lpadmin.c:253
-#: systemv/lpadmin.c:339 systemv/lpadmin.c:393 systemv/lpadmin.c:510
-#: systemv/lpadmin.c:647
+#: systemv/lpadmin.c:82 systemv/lpadmin.c:135 systemv/lpadmin.c:239
+#: systemv/lpadmin.c:325 systemv/lpadmin.c:379 systemv/lpadmin.c:496
+#: systemv/lpadmin.c:633
 #, c-format
 msgid "lpadmin: Unable to connect to server: %s"
 msgstr ""
 
-#: systemv/lpadmin.c:1330
+#: systemv/lpadmin.c:1314
 msgid "lpadmin: Unable to create temporary file"
 msgstr ""
 
-#: systemv/lpadmin.c:402
+#: systemv/lpadmin.c:388
 msgid ""
 "lpadmin: Unable to delete option:\n"
 "         You must specify a printer name first."
 msgstr ""
 
-#: systemv/lpadmin.c:1340
+#: systemv/lpadmin.c:1324
 #, c-format
 msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
 msgstr ""
 
-#: systemv/lpadmin.c:348
+#: systemv/lpadmin.c:334
 msgid ""
 "lpadmin: Unable to remove a printer from the class:\n"
 "         You must specify a printer name first."
 msgstr ""
 
-#: systemv/lpadmin.c:656
+#: systemv/lpadmin.c:642
 msgid ""
 "lpadmin: Unable to set the printer options:\n"
 "         You must specify a printer name first."
 msgstr ""
 
-#: systemv/lpadmin.c:474
+#: systemv/lpadmin.c:460
 #, c-format
 msgid "lpadmin: Unknown allow/deny option \"%s\"."
 msgstr ""
 
-#: systemv/lpadmin.c:629
+#: systemv/lpadmin.c:615
 #, c-format
 msgid "lpadmin: Unknown argument \"%s\"."
 msgstr ""
 
-#: systemv/lpadmin.c:624
+#: systemv/lpadmin.c:610
 #, c-format
 msgid "lpadmin: Unknown option \"%c\"."
 msgstr ""
 
-#: systemv/lpadmin.c:580
+#: systemv/lpadmin.c:566
 msgid "lpadmin: Warning - content type list ignored."
 msgstr ""
 
-#: berkeley/lpc.c:76 berkeley/lpc.c:104 berkeley/lpc.c:140
+#: berkeley/lpc.c:68 berkeley/lpc.c:96 berkeley/lpc.c:132
 msgid "lpc> "
 msgstr ""
 
@@ -6678,111 +6747,57 @@ msgstr ""
 msgid "lpmove: Unknown option \"%c\"."
 msgstr ""
 
-#: systemv/lpoptions.c:150 systemv/lpoptions.c:168 systemv/lpoptions.c:244
+#: systemv/lpoptions.c:143 systemv/lpoptions.c:161 systemv/lpoptions.c:237
 msgid "lpoptions: No printers."
 msgstr ""
 
-#: systemv/lpoptions.c:219
+#: systemv/lpoptions.c:212
 #, c-format
 msgid "lpoptions: Unable to add printer or instance: %s"
 msgstr ""
 
-#: systemv/lpoptions.c:521
+#: systemv/lpoptions.c:507
 #, c-format
 msgid "lpoptions: Unable to get PPD file for %s: %s"
 msgstr ""
 
-#: systemv/lpoptions.c:529
+#: systemv/lpoptions.c:515
 #, c-format
 msgid "lpoptions: Unable to open PPD file for %s."
 msgstr ""
 
-#: systemv/lpoptions.c:99
+#: systemv/lpoptions.c:92
 msgid "lpoptions: Unknown printer or class."
 msgstr ""
 
-#: systemv/lppasswd.c:173
-msgid "lppasswd: Only root can add or delete passwords."
-msgstr ""
-
-#: systemv/lppasswd.c:302
-msgid "lppasswd: Password file busy."
-msgstr ""
-
-#: systemv/lppasswd.c:431
-msgid "lppasswd: Password file not updated."
-msgstr ""
-
-#: systemv/lppasswd.c:398
-msgid "lppasswd: Sorry, password doesn't match."
-msgstr ""
-
-#: systemv/lppasswd.c:253
-msgid "lppasswd: Sorry, password rejected."
-msgstr ""
-
-#: systemv/lppasswd.c:230
-msgid "lppasswd: Sorry, passwords don't match."
-msgstr ""
-
-#: systemv/lppasswd.c:199 systemv/lppasswd.c:218
-#, c-format
-msgid "lppasswd: Unable to copy password string: %s"
-msgstr ""
-
-#: systemv/lppasswd.c:304 systemv/lppasswd.c:312 systemv/lppasswd.c:329
-#, c-format
-msgid "lppasswd: Unable to open password file: %s"
-msgstr ""
-
-#: systemv/lppasswd.c:364 systemv/lppasswd.c:377 systemv/lppasswd.c:408
-#, c-format
-msgid "lppasswd: Unable to write to password file: %s"
-msgstr ""
-
-#: systemv/lppasswd.c:446
-#, c-format
-msgid "lppasswd: failed to backup old password file: %s"
-msgstr ""
-
-#: systemv/lppasswd.c:458
-#, c-format
-msgid "lppasswd: failed to rename password file: %s"
-msgstr ""
-
-#: systemv/lppasswd.c:389
-#, c-format
-msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
-msgstr ""
-
-#: systemv/lpstat.c:1076
+#: systemv/lpstat.c:1074
 #, c-format
 msgid "lpstat: error - %s environment variable names non-existent destination \"%s\"."
 msgstr ""
 
-#: systemv/lpstat.c:1012
+#: systemv/lpstat.c:1010
 #, c-format
 msgid "members of class %s:"
 msgstr ""
 
-#: berkeley/lpq.c:587
+#: berkeley/lpq.c:549
 msgid "no entries"
 msgstr ""
 
-#: systemv/lpstat.c:1080
+#: systemv/lpstat.c:1078
 msgid "no system default destination"
 msgstr ""
 
-#: scheduler/ipp.c:5522
+#: scheduler/ipp.c:5499
 msgid "notify-events not specified."
 msgstr ""
 
-#: scheduler/ipp.c:2044 scheduler/ipp.c:5427
+#: scheduler/ipp.c:2024 scheduler/ipp.c:5404
 #, c-format
 msgid "notify-recipient-uri URI \"%s\" is already used."
 msgstr ""
 
-#: scheduler/ipp.c:2034 scheduler/ipp.c:5417
+#: scheduler/ipp.c:2014 scheduler/ipp.c:5394
 #, c-format
 msgid "notify-recipient-uri URI \"%s\" uses unknown scheme."
 msgstr ""
@@ -6791,7 +6806,7 @@ msgstr ""
 msgid "pending"
 msgstr ""
 
-#: ppdc/ppdc.cxx:113 ppdc/ppdpo.cxx:93
+#: ppdc/ppdc.cxx:108 ppdc/ppdpo.cxx:93
 #, c-format
 msgid "ppdc: Adding include directory \"%s\"."
 msgstr ""
@@ -6801,7 +6816,7 @@ msgstr ""
 msgid "ppdc: Adding/updating UI text from %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:410
+#: ppdc/ppdc-source.cxx:367
 #, c-format
 msgid "ppdc: Bad boolean value (%s) on line %d of %s."
 msgstr ""
@@ -6811,375 +6826,375 @@ msgstr ""
 msgid "ppdc: Bad font attribute: %s"
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1796
+#: ppdc/ppdc-source.cxx:1753
 #, c-format
 msgid "ppdc: Bad resolution name \"%s\" on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1113
+#: ppdc/ppdc-source.cxx:1070
 #, c-format
 msgid "ppdc: Bad status keyword %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2033
+#: ppdc/ppdc-source.cxx:1990
 #, c-format
 msgid "ppdc: Bad variable substitution ($%c) on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2719
+#: ppdc/ppdc-source.cxx:2675
 #, c-format
 msgid "ppdc: Choice found on line %d of %s with no Option."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1698
+#: ppdc/ppdc-source.cxx:1655
 #, c-format
 msgid "ppdc: Duplicate #po for locale %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:932
+#: ppdc/ppdc-source.cxx:889
 #, c-format
 msgid "ppdc: Expected a filter definition on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:955
+#: ppdc/ppdc-source.cxx:912
 #, c-format
 msgid "ppdc: Expected a program name on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:394
+#: ppdc/ppdc-source.cxx:351
 #, c-format
 msgid "ppdc: Expected boolean value on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1093
+#: ppdc/ppdc-source.cxx:1050
 #, c-format
 msgid "ppdc: Expected charset after Font on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:447
+#: ppdc/ppdc-source.cxx:404
 #, c-format
 msgid "ppdc: Expected choice code on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:435
+#: ppdc/ppdc-source.cxx:392
 #, c-format
 msgid "ppdc: Expected choice name/text on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:503
+#: ppdc/ppdc-source.cxx:460
 #, c-format
 msgid "ppdc: Expected color order for ColorModel on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:492
+#: ppdc/ppdc-source.cxx:449
 #, c-format
 msgid "ppdc: Expected colorspace for ColorModel on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:514
+#: ppdc/ppdc-source.cxx:471
 #, c-format
 msgid "ppdc: Expected compression for ColorModel on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:695
+#: ppdc/ppdc-source.cxx:652
 #, c-format
 msgid "ppdc: Expected constraints string for UIConstraints on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2905
+#: ppdc/ppdc-source.cxx:2861
 #, c-format
 msgid "ppdc: Expected driver type keyword following DriverType on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:826
+#: ppdc/ppdc-source.cxx:783
 #, c-format
 msgid "ppdc: Expected duplex type after Duplex on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1077
+#: ppdc/ppdc-source.cxx:1034
 #, c-format
 msgid "ppdc: Expected encoding after Font on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1689
+#: ppdc/ppdc-source.cxx:1646
 #, c-format
 msgid "ppdc: Expected filename after #po %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1205
+#: ppdc/ppdc-source.cxx:1162
 #, c-format
 msgid "ppdc: Expected group name/text on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2619
+#: ppdc/ppdc-source.cxx:2575
 #, c-format
 msgid "ppdc: Expected include filename on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1502
+#: ppdc/ppdc-source.cxx:1459
 #, c-format
 msgid "ppdc: Expected integer on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1681
+#: ppdc/ppdc-source.cxx:1638
 #, c-format
 msgid "ppdc: Expected locale after #po on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:353
+#: ppdc/ppdc-source.cxx:310
 #, c-format
 msgid "ppdc: Expected name after %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3277
+#: ppdc/ppdc-source.cxx:3233
 #, c-format
 msgid "ppdc: Expected name after FileName on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1058
+#: ppdc/ppdc-source.cxx:1015
 #, c-format
 msgid "ppdc: Expected name after Font on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3108
+#: ppdc/ppdc-source.cxx:3064
 #, c-format
 msgid "ppdc: Expected name after Manufacturer on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3141
+#: ppdc/ppdc-source.cxx:3097
 #, c-format
 msgid "ppdc: Expected name after MediaSize on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3231
+#: ppdc/ppdc-source.cxx:3187
 #, c-format
 msgid "ppdc: Expected name after ModelName on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3294
+#: ppdc/ppdc-source.cxx:3250
 #, c-format
 msgid "ppdc: Expected name after PCFileName on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1156
+#: ppdc/ppdc-source.cxx:1113
 #, c-format
 msgid "ppdc: Expected name/text after %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1245
+#: ppdc/ppdc-source.cxx:1202
 #, c-format
 msgid "ppdc: Expected name/text after Installable on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1782
+#: ppdc/ppdc-source.cxx:1739
 #, c-format
 msgid "ppdc: Expected name/text after Resolution on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:479
+#: ppdc/ppdc-source.cxx:436
 #, c-format
 msgid "ppdc: Expected name/text combination for ColorModel on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1574
+#: ppdc/ppdc-source.cxx:1531
 #, c-format
 msgid "ppdc: Expected option name/text on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1608
+#: ppdc/ppdc-source.cxx:1565
 #, c-format
 msgid "ppdc: Expected option section on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1586
+#: ppdc/ppdc-source.cxx:1543
 #, c-format
 msgid "ppdc: Expected option type on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1765
+#: ppdc/ppdc-source.cxx:1722
 #, c-format
 msgid "ppdc: Expected override field after Resolution on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-catalog.cxx:341 ppdc/ppdc-catalog.cxx:353
+#: ppdc/ppdc-catalog.cxx:389 ppdc/ppdc-catalog.cxx:401
 #, c-format
 msgid "ppdc: Expected quoted string on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1004
+#: ppdc/ppdc-source.cxx:961
 #, c-format
 msgid "ppdc: Expected real number on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:572
+#: ppdc/ppdc-source.cxx:529
 #, c-format
 msgid "ppdc: Expected resolution/mediatype following ColorProfile on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1863
+#: ppdc/ppdc-source.cxx:1820
 #, c-format
 msgid "ppdc: Expected resolution/mediatype following SimpleColorProfile on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:361
+#: ppdc/ppdc-source.cxx:318
 #, c-format
 msgid "ppdc: Expected selector after %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1101
+#: ppdc/ppdc-source.cxx:1058
 #, c-format
 msgid "ppdc: Expected status after Font on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2794
+#: ppdc/ppdc-source.cxx:2750
 #, c-format
 msgid "ppdc: Expected string after Copyright on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3397
+#: ppdc/ppdc-source.cxx:3353
 #, c-format
 msgid "ppdc: Expected string after Version on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:728
+#: ppdc/ppdc-source.cxx:685
 #, c-format
 msgid "ppdc: Expected two option names on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:372
+#: ppdc/ppdc-source.cxx:329
 #, c-format
 msgid "ppdc: Expected value after %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1085
+#: ppdc/ppdc-source.cxx:1042
 #, c-format
 msgid "ppdc: Expected version after Font on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:227
+#: ppdc/ppdc-source.cxx:184
 #, c-format
 msgid "ppdc: Invalid #include/#po filename \"%s\"."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:972
+#: ppdc/ppdc-source.cxx:929
 #, c-format
 msgid "ppdc: Invalid cost for filter on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:964
+#: ppdc/ppdc-source.cxx:921
 #, c-format
 msgid "ppdc: Invalid empty MIME type for filter on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:980
+#: ppdc/ppdc-source.cxx:937
 #, c-format
 msgid "ppdc: Invalid empty program name for filter on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1628
+#: ppdc/ppdc-source.cxx:1585
 #, c-format
 msgid "ppdc: Invalid option section \"%s\" on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1600
+#: ppdc/ppdc-source.cxx:1557
 #, c-format
 msgid "ppdc: Invalid option type \"%s\" on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc.cxx:251 ppdc/ppdpo.cxx:123
+#: ppdc/ppdc.cxx:246 ppdc/ppdpo.cxx:123
 #, c-format
 msgid "ppdc: Loading driver information file \"%s\"."
 msgstr ""
 
-#: ppdc/ppdc.cxx:187
+#: ppdc/ppdc.cxx:182
 #, c-format
 msgid "ppdc: Loading messages for locale \"%s\"."
 msgstr ""
 
-#: ppdc/ppdc.cxx:126
+#: ppdc/ppdc.cxx:121
 #, c-format
 msgid "ppdc: Loading messages from \"%s\"."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2412 ppdc/ppdc-source.cxx:2644
+#: ppdc/ppdc-source.cxx:2368 ppdc/ppdc-source.cxx:2600
 #, c-format
 msgid "ppdc: Missing #endif at end of \"%s\"."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2513 ppdc/ppdc-source.cxx:2548
-#: ppdc/ppdc-source.cxx:2578
+#: ppdc/ppdc-source.cxx:2469 ppdc/ppdc-source.cxx:2504
+#: ppdc/ppdc-source.cxx:2534
 #, c-format
 msgid "ppdc: Missing #if on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-catalog.cxx:418
+#: ppdc/ppdc-catalog.cxx:466
 #, c-format
 msgid "ppdc: Need a msgid line before any translation strings on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-driver.cxx:730
+#: ppdc/ppdc-driver.cxx:712
 #, c-format
 msgid "ppdc: No message catalog provided for locale %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1651 ppdc/ppdc-source.cxx:2882
-#: ppdc/ppdc-source.cxx:2968 ppdc/ppdc-source.cxx:3061
-#: ppdc/ppdc-source.cxx:3194 ppdc/ppdc-source.cxx:3327
+#: 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
 #, c-format
 msgid "ppdc: Option %s defined in two different groups on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1644
+#: ppdc/ppdc-source.cxx:1601
 #, c-format
 msgid "ppdc: Option %s redefined with a different type on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:705
+#: ppdc/ppdc-source.cxx:662
 #, c-format
 msgid "ppdc: Option constraint must *name on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2495
+#: ppdc/ppdc-source.cxx:2451
 #, c-format
 msgid "ppdc: Too many nested #if's on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc.cxx:374
+#: ppdc/ppdc.cxx:369
 #, c-format
 msgid "ppdc: Unable to create PPD file \"%s\" - %s."
 msgstr ""
 
-#: ppdc/ppdc.cxx:266
+#: ppdc/ppdc.cxx:261
 #, c-format
 msgid "ppdc: Unable to create output directory %s: %s"
 msgstr ""
 
-#: ppdc/ppdc.cxx:287
+#: ppdc/ppdc.cxx:282
 #, c-format
 msgid "ppdc: Unable to create output pipes: %s"
 msgstr ""
 
-#: ppdc/ppdc.cxx:303 ppdc/ppdc.cxx:309
+#: ppdc/ppdc.cxx:298 ppdc/ppdc.cxx:304
 #, c-format
 msgid "ppdc: Unable to execute cupstestppd: %s"
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1730
+#: ppdc/ppdc-source.cxx:1687
 #, c-format
 msgid "ppdc: Unable to find #po file %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2651
+#: ppdc/ppdc-source.cxx:2607
 #, c-format
 msgid "ppdc: Unable to find include file \"%s\" on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc.cxx:198
+#: ppdc/ppdc.cxx:193
 #, c-format
 msgid "ppdc: Unable to find localization for \"%s\" - %s"
 msgstr ""
 
-#: ppdc/ppdc.cxx:135
+#: ppdc/ppdc.cxx:130
 #, c-format
 msgid "ppdc: Unable to load localization file \"%s\" - %s"
 msgstr ""
@@ -7189,107 +7204,107 @@ msgstr ""
 msgid "ppdc: Unable to open %s: %s"
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2054
+#: ppdc/ppdc-source.cxx:2011
 #, c-format
 msgid "ppdc: Undefined variable (%s) on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-catalog.cxx:435
+#: ppdc/ppdc-catalog.cxx:483
 #, c-format
 msgid "ppdc: Unexpected text on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2924
+#: ppdc/ppdc-source.cxx:2880
 #, c-format
 msgid "ppdc: Unknown driver type %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:906
+#: ppdc/ppdc-source.cxx:863
 #, c-format
 msgid "ppdc: Unknown duplex type \"%s\" on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3154
+#: ppdc/ppdc-source.cxx:3110
 #, c-format
 msgid "ppdc: Unknown media size \"%s\" on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-catalog.cxx:463
+#: ppdc/ppdc-catalog.cxx:511
 #, c-format
 msgid "ppdc: Unknown message catalog format for \"%s\"."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3408
+#: ppdc/ppdc-source.cxx:3364
 #, c-format
 msgid "ppdc: Unknown token \"%s\" seen on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1014
+#: ppdc/ppdc-source.cxx:971
 #, c-format
 msgid "ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2164
+#: ppdc/ppdc-source.cxx:2121
 #, c-format
 msgid "ppdc: Unterminated string starting with %c on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc.cxx:365
+#: ppdc/ppdc.cxx:360
 #, c-format
 msgid "ppdc: Warning - overlapping filename \"%s\"."
 msgstr ""
 
-#: ppdc/ppdc.cxx:380
+#: ppdc/ppdc.cxx:375
 #, c-format
 msgid "ppdc: Writing %s."
 msgstr ""
 
-#: ppdc/ppdc.cxx:148
+#: ppdc/ppdc.cxx:143
 #, c-format
 msgid "ppdc: Writing PPD files to directory \"%s\"."
 msgstr ""
 
-#: ppdc/ppdmerge.cxx:136
+#: ppdc/ppdmerge.cxx:130
 #, c-format
 msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s."
 msgstr ""
 
-#: ppdc/ppdmerge.cxx:176
+#: ppdc/ppdmerge.cxx:170
 #, c-format
 msgid "ppdmerge: Ignoring PPD file %s."
 msgstr ""
 
-#: ppdc/ppdmerge.cxx:160
+#: ppdc/ppdmerge.cxx:154
 #, c-format
 msgid "ppdmerge: Unable to backup %s to %s - %s"
 msgstr ""
 
-#: systemv/lpstat.c:1844
+#: systemv/lpstat.c:1774
 #, c-format
 msgid "printer %s disabled since %s -"
 msgstr ""
 
-#: systemv/lpstat.c:1833
+#: systemv/lpstat.c:1763
 #, c-format
 msgid "printer %s is idle.  enabled since %s"
 msgstr ""
 
-#: systemv/lpstat.c:1838
+#: systemv/lpstat.c:1768
 #, c-format
 msgid "printer %s now printing %s-%d.  enabled since %s"
 msgstr ""
 
-#: systemv/lpstat.c:1969
+#: systemv/lpstat.c:1897
 #, c-format
 msgid "printer %s/%s disabled since %s -"
 msgstr ""
 
-#: systemv/lpstat.c:1955
+#: systemv/lpstat.c:1883
 #, c-format
 msgid "printer %s/%s is idle.  enabled since %s"
 msgstr ""
 
-#: systemv/lpstat.c:1962
+#: systemv/lpstat.c:1890
 #, c-format
 msgid "printer %s/%s now printing %s-%d.  enabled since %s"
 msgstr ""
@@ -7298,29 +7313,29 @@ msgstr ""
 msgid "processing"
 msgstr ""
 
-#: systemv/lp.c:668
+#: systemv/lp.c:662
 #, c-format
 msgid "request id is %s-%d (%d file(s))"
 msgstr ""
 
-#: cups/snmp.c:1016
+#: cups/snmp.c:972
 msgid "request-id uses indefinite length"
 msgstr ""
 
-#: systemv/lpstat.c:2103
+#: systemv/lpstat.c:2029
 msgid "scheduler is not running"
 msgstr ""
 
-#: systemv/lpstat.c:2099
+#: systemv/lpstat.c:2025
 msgid "scheduler is running"
 msgstr ""
 
-#: cups/adminutil.c:2159
+#: cups/adminutil.c:2148
 #, c-format
 msgid "stat of %s failed: %s"
 msgstr ""
 
-#: berkeley/lpc.c:211
+#: berkeley/lpc.c:203
 msgid "status\t\tShow status of daemon and queue."
 msgstr ""
 
@@ -7328,12 +7343,12 @@ msgstr ""
 msgid "stopped"
 msgstr ""
 
-#: systemv/lpstat.c:1054
+#: systemv/lpstat.c:1052
 #, c-format
 msgid "system default destination: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1051
+#: systemv/lpstat.c:1049
 #, c-format
 msgid "system default destination: %s/%s"
 msgstr ""
@@ -7346,7 +7361,7 @@ msgstr ""
 msgid "untitled"
 msgstr ""
 
-#: cups/snmp.c:1041
+#: cups/snmp.c:997
 msgid "variable-bindings uses indefinite length"
 msgstr ""
 
index d11eef137186b5ceed5e20707829a788c09051c6..faaa462c24f3e24a0c9fe6516007b4a2211b8f9d 100644 (file)
 "  --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).";
+"  --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.";
 "  --name regex            Match service name to regular expression." = "  --name regex            Match service name to regular expression.";
 "  -i seconds              Repeat the last file with the given time interval." = "  -i seconds              Repeat the last file with the given time interval.";
 "  -j job-id[,N]           Filter file N from the specified job (default is file 1)." = "  -j job-id[,N]           Filter file N from the specified job (default is file 1).";
 "  -l                      List attributes." = "  -l                      List attributes.";
-"  -l                      Run cupsd from launchd(8)." = "  -l                      Run cupsd from launchd(8).";
+"  -l                      Run cupsd on demand." = "  -l                      Run cupsd on demand.";
 "  -l lang[,lang,...]      Specify the output language(s) (locale)." = "  -l lang[,lang,...]      Specify the output language(s) (locale).";
 "  -m                      Use the ModelName value as the filename." = "  -m                      Use the ModelName value as the filename.";
 "  -m mime/type            Set output MIME type (otherwise application/pdf)." = "  -m mime/type            Set output MIME type (otherwise application/pdf).";
 "\"%s\": Bad text value \"%s\" - bad length %d (RFC 2911 section 4.1.1)." = "\"%s\": Bad text value \"%s\" - bad length %d (RFC 2911 section 4.1.1).";
 "\"%s\": Bad uriScheme value \"%s\" - bad characters (RFC 2911 section 4.1.6)." = "\"%s\": Bad uriScheme value \"%s\" - bad characters (RFC 2911 section 4.1.6).";
 "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 2911 section 4.1.6)." = "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 2911 section 4.1.6).";
-"%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes" = "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes";
 "%-7s %-7.7s %-7d %-31.31s %.0f bytes" = "%-7s %-7.7s %-7d %-31.31s %.0f bytes";
+"%d x %d mm" = "%d x %d mm";
+"%g x %g" = "%g x %g";
+"%s (%s)" = "%s (%s)";
+"%s (%s, %s)" = "%s (%s, %s)";
+"%s (Borderless)" = "%s (Borderless)";
+"%s (Borderless, %s)" = "%s (Borderless, %s)";
+"%s (Borderless, %s, %s)" = "%s (Borderless, %s, %s)";
 "%s accepting requests since %s" = "%s accepting requests since %s";
 "%s cannot be changed." = "%s cannot be changed.";
 "%s is not implemented by the CUPS version of lpc." = "%s is not implemented by the CUPS version of lpc.";
 "%s: Expected job ID after \"-i\" option." = "%s: Expected job ID after \"-i\" option.";
 "%s: Invalid destination name in list \"%s\"." = "%s: Invalid destination name in list \"%s\".";
 "%s: Invalid filter string \"%s\"." = "%s: Invalid filter string \"%s\".";
+"%s: Missing filename for \"-P\"." = "%s: Missing filename for \"-P\".";
 "%s: Missing timeout for \"-T\"." = "%s: Missing timeout for \"-T\".";
 "%s: Missing version for \"-V\"." = "%s: Missing version for \"-V\".";
 "%s: Need job ID (\"-i jobid\") before \"-H restart\"." = "%s: Need job ID (\"-i jobid\") before \"-H restart\".";
 "%s: Unable to connect to server." = "%s: Unable to connect to server.";
 "%s: Unable to contact server." = "%s: Unable to contact server.";
 "%s: Unable to determine MIME type of \"%s\"." = "%s: Unable to determine MIME type of \"%s\".";
+"%s: Unable to open \"%s\": %s" = "%s: Unable to open \"%s\": %s";
 "%s: Unable to open %s: %s" = "%s: Unable to open %s: %s";
 "%s: Unable to open PPD file: %s on line %d." = "%s: Unable to open PPD file: %s on line %d.";
 "%s: Unable to read MIME database from \"%s\" or \"%s\"." = "%s: Unable to read MIME database from \"%s\" or \"%s\".";
 "Bad Request" = "Bad Request";
 "Bad SNMP version number" = "Bad SNMP version number";
 "Bad UIConstraints" = "Bad UIConstraints";
+"Bad arguments to function" = "Bad arguments to function";
 "Bad copies value %d." = "Bad copies value %d.";
 "Bad custom parameter" = "Bad custom parameter";
 "Bad device-uri \"%s\"." = "Bad device-uri \"%s\".";
 "Bad document-format \"%s\"." = "Bad document-format \"%s\".";
 "Bad document-format-default \"%s\"." = "Bad document-format-default \"%s\".";
 "Bad filename buffer" = "Bad filename buffer";
+"Bad hostname/address in URI" = "Bad hostname/address in URI";
 "Bad job-name value: %s" = "Bad job-name value: %s";
 "Bad job-name value: Wrong type or count." = "Bad job-name value: Wrong type or count.";
 "Bad job-priority value." = "Bad job-priority value.";
 "Bad number-up value %d." = "Bad number-up value %d.";
 "Bad option + choice on line %d." = "Bad option + choice on line %d.";
 "Bad page-ranges values %d-%d." = "Bad page-ranges values %d-%d.";
+"Bad port number in URI" = "Bad port number in URI";
 "Bad port-monitor \"%s\"." = "Bad port-monitor \"%s\".";
-"Bad printer URI." = "Bad printer URI.";
 "Bad printer-state value %d." = "Bad printer-state value %d.";
+"Bad printer-uri." = "Bad printer-uri.";
 "Bad request ID %d." = "Bad request ID %d.";
 "Bad request version number %d.%d." = "Bad request version number %d.%d.";
+"Bad resource in URI" = "Bad resource in URI";
+"Bad scheme in URI" = "Bad scheme in URI";
 "Bad subscription ID" = "Bad subscription ID";
+"Bad username in URI" = "Bad username in URI";
 "Bad value string" = "Bad value string";
+"Bad/empty URI" = "Bad/empty URI";
 "Banners" = "Banners";
 "Bond Paper" = "Bond Paper";
 "Boolean expected for waiteof option \"%s\"." = "Boolean expected for waiteof option \"%s\".";
 "Buffer overflow detected, aborting." = "Buffer overflow detected, aborting.";
 "CMYK" = "CMYK";
 "CPCL Label Printer" = "CPCL Label Printer";
+"Cancel Jobs" = "Cancel Jobs";
 "Cancel RSS Subscription" = "Cancel RSS Subscription";
 "Canceling print job." = "Canceling print job.";
 "Cannot share a remote Kerberized printer." = "Cannot share a remote Kerberized printer.";
 "EPL2 Label Printer" = "EPL2 Label Printer";
 "Edit Configuration File" = "Edit Configuration File";
 "Empty PPD file." = "Empty PPD file.";
+"Encryption is not supported." = "Encryption is not supported.";
 // TRANSLATORS: Banner/cover sheet after the print job.
 "Ending Banner" = "Ending Banner";
 "English" = "English";
-"Enter old password:" = "Enter old password:";
-"Enter password again:" = "Enter password again:";
-"Enter password:" = "Enter password:";
 "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 #11" = "Envelope #11";
 "Light" = "Light";
 "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.";
 "Long-Edge (Portrait)" = "Long-Edge (Portrait)";
 "Looking for printer." = "Looking for printer.";
 "Manual Feed" = "Manual Feed";
 "Missing option keyword" = "Missing option keyword";
 "Missing requesting-user-name attribute." = "Missing requesting-user-name attribute.";
 "Missing required attributes." = "Missing required attributes.";
+"Missing resource in URI" = "Missing resource in URI";
+"Missing scheme in URI" = "Missing scheme in URI";
 "Missing value on line %d." = "Missing value on line %d.";
 "Missing value string" = "Missing value string";
 "Missing x-dimension in media-size." = "Missing x-dimension in media-size.";
 "No printer-uri found" = "No printer-uri found";
 "No printer-uri found for class" = "No printer-uri found for class";
 "No printer-uri in request." = "No printer-uri in request.";
+"No request URI." = "No request URI.";
+"No request protocol version." = "No request protocol version.";
 "No request sent." = "No request sent.";
 "No request-id" = "No request-id";
 "No subscription attributes in request." = "No subscription attributes in request.";
 "Out of date PPD cache file." = "Out of date PPD cache file.";
 "Out of memory." = "Out of memory.";
 "Output Mode" = "Output Mode";
-"Output for printer %s is sent to %s" = "Output for printer %s is sent to %s";
-"Output for printer %s is sent to remote printer %s on %s" = "Output for printer %s is sent to remote printer %s on %s";
-"Output for printer %s/%s is sent to %s" = "Output for printer %s/%s is sent to %s";
-"Output for printer %s/%s is sent to remote printer %s on %s" = "Output for printer %s/%s is sent to remote printer %s on %s";
+"Output bin is almost full." = "Output bin is almost full.";
+"Output bin is full." = "Output bin is full.";
+"Output bin is missing." = "Output bin is missing.";
 "PASS" = "PASS";
 "PCL Laser Printer" = "PCL Laser Printer";
 "PRC16K" = "PRC16K";
 "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 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.";
 "ParamCustominCutInterval" = "ParamCustominCutInterval";
 "ParamCustominTearInterval" = "ParamCustominTearInterval";
 "Password for %s on %s? " = "Password for %s on %s? ";
 "Printer cannot print with supplied options." = "Printer cannot print with supplied options.";
 "Printer:" = "Printer:";
 "Printers" = "Printers";
-"Printing page %d, %d%% complete." = "Printing page %d, %d%% complete.";
-"Purge Jobs" = "Purge Jobs";
+"Printing page %d, %u%% complete." = "Printing page %d, %u%% complete.";
 "Quarto" = "Quarto";
 "Quota limit reached." = "Quota limit reached.";
 "Rank    Owner   Job     File(s)                         Total Size" = "Rank    Owner   Job     File(s)                         Total Size";
-// TRANSLATORS: Pri is job priority.
-"Rank   Owner      Pri  Job        Files                       Total Size" = "Rank   Owner      Pri  Job        Files                       Total Size";
 "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).";
 "Server Security Auditing" = "Server Security Auditing";
 "Server Started" = "Server Started";
 "Server Stopped" = "Server Stopped";
+"Server credentials not set." = "Server credentials not set.";
 "Service Unavailable" = "Service Unavailable";
 "Set Allowed Users" = "Set Allowed Users";
 "Set As Server Default" = "Set As Server Default";
 "The notify-user-data value is too large (%d > 63 octets)." = "The notify-user-data value is too large (%d > 63 octets).";
 "The optical photoconductor needs to be replaced." = "The optical photoconductor needs to be replaced.";
 "The optical photoconductor will need to be replaced soon." = "The optical photoconductor will need to be replaced soon.";
-"The output bin is almost full." = "The output bin is almost full.";
-"The output bin is full." = "The output bin is full.";
-"The output bin is missing." = "The output bin is missing.";
-"The paper tray is almost empty." = "The paper tray is almost empty.";
-"The paper tray is empty." = "The paper tray is empty.";
-"The paper tray is missing." = "The paper tray is missing.";
-"The paper tray needs to be filled." = "The paper tray needs to be filled.";
 "The printer configuration is incorrect or the printer no longer exists." = "The printer configuration is incorrect or the printer no longer exists.";
 "The printer did not respond." = "The printer did not respond.";
 "The printer is in use." = "The printer is in use.";
+"The printer is low on ink." = "The printer is low on ink.";
+"The printer is low on toner." = "The printer is low on toner.";
 "The printer is not connected." = "The printer is not connected.";
 "The printer is not responding." = "The printer is not responding.";
 "The printer is now connected." = "The printer is now connected.";
 "The printer is now online." = "The printer is now online.";
 "The printer is offline." = "The printer is offline.";
-"The printer is running low on ink." = "The printer is running low on ink.";
-"The printer is running low on toner." = "The printer is running low on toner.";
 "The printer is unreachable at this time." = "The printer is unreachable at this time.";
 "The printer may be out of ink." = "The printer may be out of ink.";
 "The printer may be out of toner." = "The printer may be out of toner.";
 "The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to enable it." = "The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to enable it.";
 "The which-jobs value \"%s\" is not supported." = "The which-jobs value \"%s\" is not supported.";
 "There are too many subscriptions." = "There are too many subscriptions.";
-"There is a paper jam." = "There is a paper jam.";
 "There was an unrecoverable USB error." = "There was an unrecoverable USB error.";
 "Thermal Transfer Media" = "Thermal Transfer Media";
 "Too many active jobs." = "Too many active jobs.";
 "Tray 3" = "Tray 3";
 "Tray 4" = "Tray 4";
 "URI Too Long" = "URI Too Long";
+"URI too large" = "URI too large";
 "US Ledger" = "US Ledger";
 "US Legal" = "US Legal";
 "US Legal Oversize" = "US Legal Oversize";
 "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 printer-uri" = "Unable to create printer-uri";
+"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";
 "Unable to delete printer" = "Unable to delete printer";
 "Unable to establish a secure connection to host." = "Unable to establish a secure connection to host.";
 "Unable to find destination for job" = "Unable to find destination for job";
 "Unable to find printer." = "Unable to find printer.";
+"Unable to find server credentials." = "Unable to find server credentials.";
 "Unable to get backend exit status." = "Unable to get backend exit status.";
 "Unable to get class list" = "Unable to get class list";
 "Unable to get class status" = "Unable to get class status";
 "Unable to open raster file" = "Unable to open raster file";
 "Unable to print test page" = "Unable to print test page";
 "Unable to read print data." = "Unable to read print data.";
-"Unable to resolve printer URI." = "Unable to resolve printer URI.";
+"Unable to resolve printer-uri." = "Unable to resolve printer-uri.";
 "Unable to run \"%s\": %s" = "Unable to run \"%s\": %s";
 "Unable to see in file" = "Unable to see in file";
 "Unable to send command to printer driver" = "Unable to send command to printer driver";
 "Unknown print mode: \"%s\"." = "Unknown print mode: \"%s\".";
 "Unknown printer-error-policy \"%s\"." = "Unknown printer-error-policy \"%s\".";
 "Unknown printer-op-policy \"%s\"." = "Unknown printer-op-policy \"%s\".";
+"Unknown request method." = "Unknown request method.";
+"Unknown request version." = "Unknown request version.";
+"Unknown scheme in URI" = "Unknown scheme in URI";
 "Unknown service name." = "Unknown service name.";
 "Unknown version option value: \"%s\"." = "Unknown version option value: \"%s\".";
 "Unsupported 'compression' value \"%s\"." = "Unsupported 'compression' value \"%s\".";
 "Usage: cupsaddsmb [options] printer1 ... printerN" = "Usage: cupsaddsmb [options] printer1 ... printerN";
 "Usage: cupsctl [options] [param=value ... paramN=valueN]" = "Usage: cupsctl [options] [param=value ... paramN=valueN]";
 "Usage: cupsd [options]" = "Usage: cupsd [options]";
-"Usage: cupsfilter [ options ] filename" = "Usage: cupsfilter [ options ] filename";
+"Usage: 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: ipptool [options] URI filename [ ... filenameN ]" = "Usage: ipptool [options] URI filename [ ... filenameN ]";
 "Usage: lpmove job/src dest" = "Usage: lpmove job/src dest";
 "Usage: lpoptions [-h server] [-E] -d printer\n       lpoptions [-h server] [-E] [-p printer] -l\n       lpoptions [-h server] [-E] -p printer -o option[=value] ...\n       lpoptions [-h server] [-E] -x printer" = "Usage: lpoptions [-h server] [-E] -d printer\n       lpoptions [-h server] [-E] [-p printer] -l\n       lpoptions [-h server] [-E] -p printer -o option[=value] ...\n       lpoptions [-h server] [-E] -x printer";
-"Usage: lppasswd [-g groupname]" = "Usage: lppasswd [-g groupname]";
-"Usage: lppasswd [-g groupname] [username]\n       lppasswd [-g groupname] -a [username]\n       lppasswd [-g groupname] -x [username]" = "Usage: lppasswd [-g groupname] [username]\n       lppasswd [-g groupname] -a [username]\n       lppasswd [-g groupname] -x [username]";
 "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]" = "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]";
 "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]" = "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]";
 "Usage: ppdhtml [options] filename.drv >filename.html" = "Usage: ppdhtml [options] filename.drv >filename.html";
 "Web Interface is Disabled" = "Web Interface is Disabled";
 "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>.";
-"Your password must be at least 6 characters long, cannot contain your username, and must contain at least one letter and number." = "Your password must be at least 6 characters long, cannot contain your username, and must contain at least one letter and number.";
 "ZPL Label Printer" = "ZPL Label Printer";
 "Zebra" = "Zebra";
 "aborted" = "aborted";
 "cupsctl: Unknown option \"-%c\"" = "cupsctl: Unknown option \"-%c\"";
 "cupsd: Expected config filename after \"-c\" option." = "cupsd: Expected config filename after \"-c\" option.";
 "cupsd: Expected cups-files.conf filename after \"-s\" option." = "cupsd: Expected cups-files.conf filename after \"-s\" option.";
+"cupsd: On-demand support not compiled in, running in normal mode." = "cupsd: On-demand support not compiled in, running in normal mode.";
 "cupsd: Relative cups-files.conf filename not allowed." = "cupsd: Relative cups-files.conf filename not allowed.";
 "cupsd: Unable to get current directory." = "cupsd: Unable to get current directory.";
 "cupsd: Unable to get path to cups-files.conf file." = "cupsd: Unable to get path to cups-files.conf file.";
 "cupsd: Unknown argument \"%s\" - aborting." = "cupsd: Unknown argument \"%s\" - aborting.";
 "cupsd: Unknown option \"%c\" - aborting." = "cupsd: Unknown option \"%c\" - aborting.";
-"cupsd: launchd(8) support not compiled in, running in normal mode." = "cupsd: launchd(8) support not compiled in, running in normal mode.";
 "cupsfilter: Invalid document number %d." = "cupsfilter: Invalid document number %d.";
 "cupsfilter: Invalid job ID %d." = "cupsfilter: Invalid job ID %d.";
 "cupsfilter: Only one filename can be specified." = "cupsfilter: Only one filename can be specified.";
 "ippfind: Unable to execute \"%s\": %s" = "ippfind: Unable to execute \"%s\": %s";
 "ippfind: Unable to use Bonjour: %s" = "ippfind: Unable to use Bonjour: %s";
 "ippfind: Unknown variable \"{%s}\"." = "ippfind: Unknown variable \"{%s}\".";
-"ipptool: \"-i\" and \"-n\" are incompatible with -X\"." = "ipptool: \"-i\" and \"-n\" are incompatible with -X\".";
+"ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"." = "ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\".";
 "ipptool: Bad URI - %s." = "ipptool: Bad URI - %s.";
 "ipptool: Invalid seconds for \"-i\"." = "ipptool: Invalid seconds for \"-i\".";
 "ipptool: May only specify a single URI." = "ipptool: May only specify a single URI.";
 "lpoptions: Unable to get PPD file for %s: %s" = "lpoptions: Unable to get PPD file for %s: %s";
 "lpoptions: Unable to open PPD file for %s." = "lpoptions: Unable to open PPD file for %s.";
 "lpoptions: Unknown printer or class." = "lpoptions: Unknown printer or class.";
-"lppasswd: Only root can add or delete passwords." = "lppasswd: Only root can add or delete passwords.";
-"lppasswd: Password file busy." = "lppasswd: Password file busy.";
-"lppasswd: Password file not updated." = "lppasswd: Password file not updated.";
-"lppasswd: Sorry, password doesn't match." = "lppasswd: Sorry, password doesn't match.";
-"lppasswd: Sorry, password rejected." = "lppasswd: Sorry, password rejected.";
-"lppasswd: Sorry, passwords don't match." = "lppasswd: Sorry, passwords don't match.";
-"lppasswd: Unable to copy password string: %s" = "lppasswd: Unable to copy password string: %s";
-"lppasswd: Unable to open password file: %s" = "lppasswd: Unable to open password file: %s";
-"lppasswd: Unable to write to password file: %s" = "lppasswd: Unable to write to password file: %s";
-"lppasswd: failed to backup old password file: %s" = "lppasswd: failed to backup old password file: %s";
-"lppasswd: failed to rename password file: %s" = "lppasswd: failed to rename password file: %s";
-"lppasswd: user \"%s\" and group \"%s\" do not exist." = "lppasswd: user \"%s\" and group \"%s\" do not exist.";
 "lpstat: error - %s environment variable names non-existent destination \"%s\"." = "lpstat: error - %s environment variable names non-existent destination \"%s\".";
 "members of class %s:" = "members of class %s:";
 "no entries" = "no entries";
index bff2ebdd7f7531c418a0118c9f78634d372bce6e..8e524fc35c7f614329157d79fd03031aecf0763f 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: 2014-05-09 13:32-0700\n"
+"POT-Creation-Date: 2014-06-26 14:29-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"
@@ -982,6 +982,9 @@ msgstr ""
 msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
 msgstr "  --lf                    Final de línia amb LF (UNIX/Linux/OS X)."
 
+msgid "  --list-filters          List filters that will be used."
+msgstr ""
+
 msgid "  --local                 True if service is local."
 msgstr ""
 
@@ -1180,8 +1183,8 @@ msgstr ""
 msgid "  -l                      List attributes."
 msgstr ""
 
-msgid "  -l                      Run cupsd from launchd(8)."
-msgstr "  -l                      Executa cupsd des de launchd(8)."
+msgid "  -l                      Run cupsd on demand."
+msgstr ""
 
 msgid "  -l lang[,lang,...]      Specify the output language(s) (locale)."
 msgstr ""
@@ -1523,14 +1526,38 @@ msgid ""
 "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 2911 section 4.1.6)."
 msgstr ""
 
-#, 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 ""
+
+#, c-format
+msgid "%g x %g"
+msgstr ""
+
+#, c-format
+msgid "%s (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s (%s, %s)"
+msgstr ""
+
+#, c-format
+msgid "%s (Borderless)"
+msgstr ""
+
+#, c-format
+msgid "%s (Borderless, %s)"
+msgstr ""
+
+#, c-format
+msgid "%s (Borderless, %s, %s)"
+msgstr ""
+
 #, c-format
 msgid "%s accepting requests since %s"
 msgstr "%s accepta peticions des de %s"
@@ -1763,6 +1790,10 @@ msgstr "%s: el nom del destí no és vàlid a la llista «%s»."
 msgid "%s: Invalid filter string \"%s\"."
 msgstr "%s: la cadena del filtre «%s» no és vàlida."
 
+#, c-format
+msgid "%s: Missing filename for \"-P\"."
+msgstr ""
+
 #, c-format
 msgid "%s: Missing timeout for \"-T\"."
 msgstr ""
@@ -1799,6 +1830,10 @@ msgstr "%s: no es pot contactar amb el servidor."
 msgid "%s: Unable to determine MIME type of \"%s\"."
 msgstr "%s: no es pot determinar el tips de MIME de «%s»."
 
+#, c-format
+msgid "%s: Unable to open \"%s\": %s"
+msgstr ""
+
 #, c-format
 msgid "%s: Unable to open %s: %s"
 msgstr "%s: no es pot obrir %s: %s"
@@ -2679,6 +2714,9 @@ msgstr "El número de versió del SNMP és incorrecte"
 msgid "Bad UIConstraints"
 msgstr "La UIConstraints és incorrecta"
 
+msgid "Bad arguments to function"
+msgstr ""
+
 #, c-format
 msgid "Bad copies value %d."
 msgstr "El valor de copies %d és incorrecte"
@@ -2705,6 +2743,9 @@ msgstr "La document-format-default «%s» és incorrecta."
 msgid "Bad filename buffer"
 msgstr "El nom del fitxer de la memòria cau és incorrecte"
 
+msgid "Bad hostname/address in URI"
+msgstr ""
+
 #, c-format
 msgid "Bad job-name value: %s"
 msgstr ""
@@ -2749,17 +2790,20 @@ msgstr "L'opció + elecció de la línia %d és incorrecta."
 msgid "Bad page-ranges values %d-%d."
 msgstr "Els valors de page-ranges %d-%d són incorrectes."
 
+msgid "Bad port number in URI"
+msgstr ""
+
 #, c-format
 msgid "Bad port-monitor \"%s\"."
 msgstr "La port-monitor «%s» és incorrecta."
 
-msgid "Bad printer URI."
-msgstr "L'URI de la impressora és incorrecte."
-
 #, c-format
 msgid "Bad printer-state value %d."
 msgstr "El valor %d de printer-state és incorrecte."
 
+msgid "Bad printer-uri."
+msgstr ""
+
 #, c-format
 msgid "Bad request ID %d."
 msgstr "L'identificador %d de la sol·licitud és incorrecte."
@@ -2768,12 +2812,24 @@ msgstr "L'identificador %d de la sol·licitud és incorrecte."
 msgid "Bad request version number %d.%d."
 msgstr "El número de versió %d.%d de la sol·licitud és incorrecte."
 
+msgid "Bad resource in URI"
+msgstr ""
+
+msgid "Bad scheme in URI"
+msgstr ""
+
 msgid "Bad subscription ID"
 msgstr "L'identificador de la subscripció és incorrecte."
 
+msgid "Bad username in URI"
+msgstr ""
+
 msgid "Bad value string"
 msgstr "El valor de la cadena és incorrecte"
 
+msgid "Bad/empty URI"
+msgstr ""
+
 msgid "Banners"
 msgstr "Bàners"
 
@@ -2793,6 +2849,9 @@ msgstr "CMYK"
 msgid "CPCL Label Printer"
 msgstr "Impressora d'etiquetes CPCL"
 
+msgid "Cancel Jobs"
+msgstr ""
+
 msgid "Cancel RSS Subscription"
 msgstr "Cancel·la la subscripció RSS"
 
@@ -2961,6 +3020,9 @@ msgstr "Edita el fitxer de configuració"
 msgid "Empty PPD file."
 msgstr "El fitxer PPD és buit."
 
+msgid "Encryption is not supported."
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet after the print job.
 msgid "Ending Banner"
 msgstr "S'està acabant el bàner"
@@ -2968,15 +3030,6 @@ msgstr "S'està acabant el bàner"
 msgid "English"
 msgstr "Anglès"
 
-msgid "Enter old password:"
-msgstr "Introduïu la contrasenya antiga:"
-
-msgid "Enter password again:"
-msgstr "Introduïu la contrasenya un altre cop:"
-
-msgid "Enter password:"
-msgstr "Introduïu la contrasenya:"
-
 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 "
@@ -3550,6 +3603,9 @@ msgstr "La línia la longitud màxima permesa (255 caràcters)"
 msgid "List Available Printers"
 msgstr "Llista les impressores disponibles"
 
+msgid "Load paper."
+msgstr ""
+
 msgid "Long-Edge (Portrait)"
 msgstr "Costat-llarg (vertical)"
 
@@ -3617,6 +3673,12 @@ msgstr "Falta l'atribut requesting-user-name."
 msgid "Missing required attributes."
 msgstr "Falten alguns atributs necessaris."
 
+msgid "Missing resource in URI"
+msgstr ""
+
+msgid "Missing scheme in URI"
+msgstr ""
+
 #, c-format
 msgid "Missing value on line %d."
 msgstr "Falta un valor a la línia %d."
@@ -3753,6 +3815,12 @@ msgstr "No s'ha trobat cap printer-uri per la classe"
 msgid "No printer-uri in request."
 msgstr "No hi ha cap printer-uri a la sol·licitud."
 
+msgid "No request URI."
+msgstr ""
+
+msgid "No request protocol version."
+msgstr ""
+
 msgid "No request sent."
 msgstr ""
 
@@ -3851,22 +3919,14 @@ msgstr "Sense memòria."
 msgid "Output Mode"
 msgstr "Mode de sortida"
 
-#, c-format
-msgid "Output for printer %s is sent to %s"
-msgstr "La sortida de la impressora %s s'envia a %s"
-
-#, c-format
-msgid "Output for printer %s is sent to remote printer %s on %s"
-msgstr "La sortida de la impressora %s s'envia a la impressora remota %s a %s"
+msgid "Output bin is almost full."
+msgstr ""
 
-#, c-format
-msgid "Output for printer %s/%s is sent to %s"
-msgstr "La sortida per la impressora %s/%s s'envia a la impressora %s"
+msgid "Output bin is full."
+msgstr ""
 
-#, c-format
-msgid "Output for printer %s/%s is sent to remote printer %s on %s"
+msgid "Output bin is missing."
 msgstr ""
-"La sortida per la impressora %s/%s s'envia a la impressora remota %s a %s"
 
 msgid "PASS"
 msgstr "VÀLID"
@@ -3898,6 +3958,18 @@ 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 jam."
+msgstr ""
+
+msgid "Paper tray is almost empty."
+msgstr ""
+
+msgid "Paper tray is empty."
+msgstr ""
+
+msgid "Paper tray is missing."
+msgstr ""
+
 msgid "ParamCustominCutInterval"
 msgstr "ParamCustominCutInterval"
 
@@ -4024,11 +4096,8 @@ msgid "Printers"
 msgstr "Impressores"
 
 #, c-format
-msgid "Printing page %d, %d%% complete."
-msgstr "S'està imprimint la pàgina %d. S'ha completat el %d%%."
-
-msgid "Purge Jobs"
-msgstr "Purga les feines"
+msgid "Printing page %d, %u%% complete."
+msgstr ""
 
 msgid "Quarto"
 msgstr "Quart"
@@ -4040,13 +4109,6 @@ msgid "Rank    Owner   Job     File(s)                         Total Size"
 msgstr ""
 "Rang    Propietari   Feina     Fitxer(s)                         Mida total"
 
-#. TRANSLATORS: Pri is job priority.
-msgid ""
-"Rank   Owner      Pri  Job        Files                       Total Size"
-msgstr ""
-"Rang   Propietari      Pri  Feina        Fitxers                       Mida "
-"total"
-
 msgid "Reject Jobs"
 msgstr "Rebutja feines"
 
@@ -4107,6 +4169,9 @@ msgstr "S'ha iniciat el servidor"
 msgid "Server Stopped"
 msgstr "S'ha aturat el servidor"
 
+msgid "Server credentials not set."
+msgstr ""
+
 msgid "Service Unavailable"
 msgstr "El servei no està disponible"
 
@@ -4262,27 +4327,6 @@ msgstr "S'ha de canviar el fotoconductor òptic."
 msgid "The optical photoconductor will need to be replaced soon."
 msgstr "El fotoconductor òptic s'haurà de canviar aviat."
 
-msgid "The output bin is almost full."
-msgstr "La safata de sortida és gairebé plena."
-
-msgid "The output bin is full."
-msgstr "La safata de sortida és plena."
-
-msgid "The output bin is missing."
-msgstr "Falta la safata de sortida."
-
-msgid "The paper tray is almost empty."
-msgstr "La safata de paper és gairebé buida."
-
-msgid "The paper tray is empty."
-msgstr "La safata de paper és buida."
-
-msgid "The paper tray is missing."
-msgstr "Falta la safata de paper."
-
-msgid "The paper tray needs to be filled."
-msgstr "S'ha d'omplir la safata de paper."
-
 msgid "The printer configuration is incorrect or the printer no longer exists."
 msgstr ""
 
@@ -4292,6 +4336,12 @@ msgstr "La impressora no ha respost."
 msgid "The printer is in use."
 msgstr "La impressora està ocupada."
 
+msgid "The printer is low on ink."
+msgstr ""
+
+msgid "The printer is low on toner."
+msgstr "S'està acabant el tòner de la impressora."
+
 msgid "The printer is not connected."
 msgstr "La impressora no està connectada."
 
@@ -4307,12 +4357,6 @@ msgstr "Ara la impressora està en línia."
 msgid "The printer is offline."
 msgstr "La impressora està fora de línia."
 
-msgid "The printer is running low on ink."
-msgstr "S'està acabant la tinta de la impressora."
-
-msgid "The printer is running low on toner."
-msgstr "S'està acabant el tòner de la impressora."
-
 msgid "The printer is unreachable at this time."
 msgstr "Ara mateix no es pot accedir a la impressora."
 
@@ -4394,9 +4438,6 @@ msgstr "El valor «%s» de which-jobs no està implementat."
 msgid "There are too many subscriptions."
 msgstr "Hi ha massa subscripcions."
 
-msgid "There is a paper jam."
-msgstr "S'ha encallat el paper."
-
 msgid "There was an unrecoverable USB error."
 msgstr "Hi ha un error de l'USB irrecuperable."
 
@@ -4435,6 +4476,9 @@ msgstr "Safata 4"
 msgid "URI Too Long"
 msgstr "L'URI és massa llarg"
 
+msgid "URI too large"
+msgstr ""
+
 msgid "US Ledger"
 msgstr "Llibre major americà"
 
@@ -4565,6 +4609,9 @@ msgstr "No es pot copiar l'script de la interfície - %s"
 msgid "Unable to create printer-uri"
 msgstr "No es pot crear el printer-uri"
 
+msgid "Unable to create server credentials."
+msgstr ""
+
 msgid "Unable to create temporary file"
 msgstr "No es pot crear el fitxer temporal"
 
@@ -4630,6 +4677,9 @@ msgstr "No es pot trobar el destí de la feina"
 msgid "Unable to find printer."
 msgstr "No es pot trobar la impressora."
 
+msgid "Unable to find server credentials."
+msgstr ""
+
 msgid "Unable to get backend exit status."
 msgstr "No es pot obtenir el motiu de la sortida de l'execució en segon pla"
 
@@ -4716,8 +4766,8 @@ msgstr "No es pot imprimir la pàgina de prova"
 msgid "Unable to read print data."
 msgstr "No es poden llegir les dades d'impressió."
 
-msgid "Unable to resolve printer URI."
-msgstr "No es pot resoldre l'URI de la impressora."
+msgid "Unable to resolve printer-uri."
+msgstr ""
 
 #, c-format
 msgid "Unable to run \"%s\": %s"
@@ -4806,6 +4856,15 @@ msgstr "El paràmetre printer-error-policy «%s» és desconegut."
 msgid "Unknown printer-op-policy \"%s\"."
 msgstr "El paràmetre printer-op-policy «%s» és desconegut."
 
+msgid "Unknown request method."
+msgstr ""
+
+msgid "Unknown request version."
+msgstr ""
+
+msgid "Unknown scheme in URI"
+msgstr ""
+
 msgid "Unknown service name."
 msgstr "El nom del servei és desconegut."
 
@@ -4906,8 +4965,8 @@ msgstr "Sintaxi: cupsctl [opcions] [param=valor ... paramN=valorN]"
 msgid "Usage: cupsd [options]"
 msgstr "Sintaxi: cupsd [opcions]"
 
-msgid "Usage: cupsfilter [ options ] filename"
-msgstr "Sintaxi: cupsfilter [ opcions ] nomfitxer"
+msgid "Usage: cupsfilter [ options ] [ -- ] filename"
+msgstr ""
 
 msgid "Usage: cupstestdsc [options] filename.ps [... filename.ps]"
 msgstr "Sintaxi: cupstestdsc [opcions] nomfitxer.ps [...nomfitxer.ps]"
@@ -4948,18 +5007,6 @@ msgstr ""
 "         lpoptions [-h servidor] [-E] -p impressora -o opció[=valor] ...\n"
 "         lpoptions [-h servidor] [-E] -x impressora"
 
-msgid "Usage: lppasswd [-g groupname]"
-msgstr "Sintaxi: lppasswd [-g nomgrup]"
-
-msgid ""
-"Usage: lppasswd [-g groupname] [username]\n"
-"       lppasswd [-g groupname] -a [username]\n"
-"       lppasswd [-g groupname] -x [username]"
-msgstr ""
-"Sintaxi: lppasswd [-g nomgrup] [nomusuari]\n"
-"         lppasswd [-g nomgrup] -a [nomusuari]\n"
-"         lppasswd [-g nomgrup] -x [nomusuari]"
-
 msgid ""
 "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
 msgstr ""
@@ -5021,13 +5068,6 @@ 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 ""
-"Your password must be at least 6 characters long, cannot contain your "
-"username, and must contain at least one letter and number."
-msgstr ""
-"La contrasenya ha de tenir com a mínim 6 caràcters, no pot contenir el nom "
-"d'usuari, i ha de tenir com a mínim una lletra i un número."
-
 msgid "ZPL Label Printer"
 msgstr "Impressora d'etiquetes ZPL"
 
@@ -5075,6 +5115,9 @@ msgstr ""
 msgid "cupsd: Expected cups-files.conf filename after \"-s\" option."
 msgstr ""
 
+msgid "cupsd: On-demand support not compiled in, running in normal mode."
+msgstr ""
+
 msgid "cupsd: Relative cups-files.conf filename not allowed."
 msgstr ""
 
@@ -5092,11 +5135,6 @@ msgstr "cupsd: l'argument «%s» és desconegut - s'interromp."
 msgid "cupsd: Unknown option \"%c\" - aborting."
 msgstr "cupsd: l'opció «%c» és desconeguda - s'interromp."
 
-msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
-msgstr ""
-"cupsd: no s'ha compilat amb compatibilitat per launchd(8). S'executa en mode "
-"normal."
-
 #, c-format
 msgid "cupsfilter: Invalid document number %d."
 msgstr "cupsfilter: el document número %d no és vàlid."
@@ -5217,8 +5255,8 @@ msgstr ""
 msgid "ippfind: Unknown variable \"{%s}\"."
 msgstr ""
 
-msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
-msgstr "ipptool: «-i» i «-n» no són compatibles amb «-X»."
+msgid "ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"."
+msgstr ""
 
 #, c-format
 msgid "ipptool: Bad URI - %s."
@@ -5444,51 +5482,6 @@ msgstr "lpoptions: no s'ha pogut obrir el fitxer PPD per %s."
 msgid "lpoptions: Unknown printer or class."
 msgstr "lpoptions: la impressora o la classe són desconegudes."
 
-msgid "lppasswd: Only root can add or delete passwords."
-msgstr ""
-"lppasswd: només l'usuari primari (root) pot afegir o esborrar contrasenyes."
-
-msgid "lppasswd: Password file busy."
-msgstr "lppaswd: el fitxer de contrasenyes està ocupat."
-
-msgid "lppasswd: Password file not updated."
-msgstr "lppaswd: el fitxer de contrasenyes no està actualitzat."
-
-msgid "lppasswd: Sorry, password doesn't match."
-msgstr "lppaswwd: la contrasenya no coincideix."
-
-msgid "lppasswd: Sorry, password rejected."
-msgstr "lppaswwd: s'ha refusat la contrasenya."
-
-msgid "lppasswd: Sorry, passwords don't match."
-msgstr "lppaswwd: les contrasenyes no coincideixen."
-
-#, c-format
-msgid "lppasswd: Unable to copy password string: %s"
-msgstr "lppasswd: no s'ha pogut copiar la cadena de contrasenya: %s"
-
-#, c-format
-msgid "lppasswd: Unable to open password file: %s"
-msgstr "lppasswd: no s'ha pogut obrir el fitxer de contrasenyes: %s"
-
-#, c-format
-msgid "lppasswd: Unable to write to password file: %s"
-msgstr "lppasswd: no s'ha pogut escriure al fitxer de contrasenyes: %s"
-
-#, c-format
-msgid "lppasswd: failed to backup old password file: %s"
-msgstr ""
-"lppasswd: no s'ha pogut fer la còpia de seguretat del fitxer de contrasenyes "
-"antic: %s"
-
-#, c-format
-msgid "lppasswd: failed to rename password file: %s"
-msgstr "lppasswd: no s'ha pogut canviar el nom del fitxer de contrasenyes: %s"
-
-#, c-format
-msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
-msgstr "lppaswd: l'usuari «%s» i el grup «%s» no existeixen."
-
 #, c-format
 msgid ""
 "lpstat: error - %s environment variable names non-existent destination \"%s"
@@ -6053,6 +6046,9 @@ msgstr "La variable-bindings fa servir una longitud indefinida"
 #~ "  -j tipus/mime            Estableix el tipus MIME de sortida "
 #~ "(application/pdf si no s'especifica)."
 
+#~ msgid "  -l                      Run cupsd from launchd(8)."
+#~ msgstr "  -l                      Executa cupsd des de launchd(8)."
+
 #~ msgid ""
 #~ "  -o filename             Set file to be generated (otherwise stdout)."
 #~ msgstr ""
@@ -6075,6 +6071,9 @@ msgstr "La variable-bindings fa servir una longitud indefinida"
 #~ msgstr ""
 #~ "  -v                      Mostra tots els atributs enviats i rebuts."
 
+#~ msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
+#~ msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
+
 #~ msgid "%s: Error - expected destination after \"-b\" option."
 #~ msgstr "%s: error - s'esperava un destí després de l'opció «-b»."
 
@@ -6084,6 +6083,18 @@ msgstr "La variable-bindings fa servir una longitud indefinida"
 #~ msgid "Address - 1 1/8 x 3 1/2\""
 #~ msgstr "Adreça - 1 1/8 x 3 1/2\""
 
+#~ msgid "Bad printer URI."
+#~ msgstr "L'URI de la impressora és incorrecte."
+
+#~ msgid "Enter old password:"
+#~ msgstr "Introduïu la contrasenya antiga:"
+
+#~ msgid "Enter password again:"
+#~ msgstr "Introduïu la contrasenya un altre cop:"
+
+#~ msgid "Enter password:"
+#~ msgstr "Introduïu la contrasenya:"
+
 #~ msgid "File Folder - 9/16 x 3 7/16\""
 #~ msgstr "Carpeta d'arxivador: 9/16 x 3 7/16\""
 
@@ -6106,6 +6117,20 @@ 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 "Output for printer %s is sent to %s"
+#~ msgstr "La sortida de la impressora %s s'envia a %s"
+
+#~ msgid "Output for printer %s is sent to remote printer %s on %s"
+#~ msgstr ""
+#~ "La sortida de la impressora %s s'envia a la impressora remota %s a %s"
+
+#~ msgid "Output for printer %s/%s is sent to %s"
+#~ msgstr "La sortida per la impressora %s/%s s'envia a la impressora %s"
+
+#~ msgid "Output for printer %s/%s is sent to remote printer %s on %s"
+#~ msgstr ""
+#~ "La sortida per la impressora %s/%s s'envia a la impressora remota %s a %s"
+
 #~ msgid "Print file accepted - job ID %d."
 #~ msgstr "S'ha acceptat el fitxer d'impressió - ID de la feina %d."
 
@@ -6135,6 +6160,18 @@ msgstr "La variable-bindings fa servir una longitud indefinida"
 #~ "La impressora està desconnectada. Es tornarà a intentar d'aquí a 30 "
 #~ "segons."
 
+#~ msgid "Printing page %d, %d%% complete."
+#~ msgstr "S'està imprimint la pàgina %d. S'ha completat el %d%%."
+
+#~ msgid "Purge Jobs"
+#~ msgstr "Purga les feines"
+
+#~ msgid ""
+#~ "Rank   Owner      Pri  Job        Files                       Total Size"
+#~ msgstr ""
+#~ "Rang   Propietari      Pri  Feina        Fitxers                       "
+#~ "Mida total"
+
 #~ msgid "Ready to print."
 #~ msgstr "Preparada per imprimir."
 
@@ -6144,6 +6181,27 @@ msgstr "La variable-bindings fa servir una longitud indefinida"
 #~ msgid "Shipping Address - 2 5/16 x 4\""
 #~ msgstr "Adreça de lliurament - 2 5/16 x 4\""
 
+#~ msgid "The output bin is almost full."
+#~ msgstr "La safata de sortida és gairebé plena."
+
+#~ msgid "The output bin is full."
+#~ msgstr "La safata de sortida és plena."
+
+#~ msgid "The output bin is missing."
+#~ msgstr "Falta la safata de sortida."
+
+#~ msgid "The paper tray is almost empty."
+#~ msgstr "La safata de paper és gairebé buida."
+
+#~ msgid "The paper tray is empty."
+#~ msgstr "La safata de paper és buida."
+
+#~ msgid "The paper tray is missing."
+#~ msgstr "Falta la safata de paper."
+
+#~ msgid "The paper tray needs to be filled."
+#~ msgstr "S'ha d'omplir la safata de paper."
+
 #~ msgid "The printer URI is incorrect or no longer exists."
 #~ msgstr "L'URI de la impressora no és correcte o ja no existeix."
 
@@ -6152,12 +6210,18 @@ msgstr "La variable-bindings fa servir una longitud indefinida"
 #~ "La impressora no és compatible amb el IPP/%d.%d, s'està intentant el IPP/"
 #~ "%s."
 
-#~ msgid "The printer is low on toner."
-#~ msgstr "S'està acabant el tòner de la impressora."
-
 #~ msgid "The printer is out of toner."
 #~ msgstr "S'ha acabat el tòner de la impressora"
 
+#~ msgid "The printer is running low on ink."
+#~ msgstr "S'està acabant la tinta de la impressora."
+
+#~ msgid "The printer is running low on toner."
+#~ msgstr "S'està acabant el tòner de la impressora."
+
+#~ msgid "There is a paper jam."
+#~ msgstr "S'ha encallat el paper."
+
 #~ msgid "Unable to create compressed print file"
 #~ msgstr "No es pot crear el fitxer d'impressió comprimit"
 
@@ -6179,17 +6243,50 @@ msgstr "La variable-bindings fa servir una longitud indefinida"
 #~ msgid "Unable to read print data"
 #~ msgstr "No es poden llegir les dades d'impressió"
 
+#~ msgid "Unable to resolve printer URI."
+#~ msgstr "No es pot resoldre l'URI de la impressora."
+
 #~ msgid "Usage: %s job-id user title copies options file"
 #~ msgstr "Sintaxi: %s id-tasca usuari títol còpies opcions fitxer"
 
 #~ msgid "Usage: convert [ options ]"
 #~ msgstr "Sintaxi: convert [ opcions ]"
 
+#~ msgid "Usage: cupsfilter [ options ] filename"
+#~ msgstr "Sintaxi: cupsfilter [ opcions ] nomfitxer"
+
+#~ msgid "Usage: lppasswd [-g groupname]"
+#~ msgstr "Sintaxi: lppasswd [-g nomgrup]"
+
+#~ msgid ""
+#~ "Usage: lppasswd [-g groupname] [username]\n"
+#~ "       lppasswd [-g groupname] -a [username]\n"
+#~ "       lppasswd [-g groupname] -x [username]"
+#~ msgstr ""
+#~ "Sintaxi: lppasswd [-g nomgrup] [nomusuari]\n"
+#~ "         lppasswd [-g nomgrup] -a [nomusuari]\n"
+#~ "         lppasswd [-g nomgrup] -x [nomusuari]"
+
+#~ msgid ""
+#~ "Your password must be at least 6 characters long, cannot contain your "
+#~ "username, and must contain at least one letter and number."
+#~ msgstr ""
+#~ "La contrasenya ha de tenir com a mínim 6 caràcters, no pot contenir el "
+#~ "nom d'usuari, i ha de tenir com a mínim una lletra i un número."
+
 #~ msgid "convert: Use the -f option to specify a file to convert."
 #~ msgstr ""
 #~ "convert: feu servir l'opció -f per especificar el fitxer que voleu "
 #~ "convertir."
 
+#~ msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
+#~ msgstr ""
+#~ "cupsd: no s'ha compilat amb compatibilitat per launchd(8). S'executa en "
+#~ "mode normal."
+
+#~ msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
+#~ msgstr "ipptool: «-i» i «-n» no són compatibles amb «-X»."
+
 #~ msgid "ipptool: \"-i\" is incompatible with \"-X\"."
 #~ msgstr "ipptool: «-i» no és compatible amb «-X»."
 
@@ -6204,3 +6301,44 @@ msgstr "La variable-bindings fa servir una longitud indefinida"
 
 #~ msgid "ipptool: Missing version for \"-V\"."
 #~ msgstr "ipptool: falta la versió a «-V»."
+
+#~ msgid "lppasswd: Only root can add or delete passwords."
+#~ msgstr ""
+#~ "lppasswd: només l'usuari primari (root) pot afegir o esborrar "
+#~ "contrasenyes."
+
+#~ msgid "lppasswd: Password file busy."
+#~ msgstr "lppaswd: el fitxer de contrasenyes està ocupat."
+
+#~ msgid "lppasswd: Password file not updated."
+#~ msgstr "lppaswd: el fitxer de contrasenyes no està actualitzat."
+
+#~ msgid "lppasswd: Sorry, password doesn't match."
+#~ msgstr "lppaswwd: la contrasenya no coincideix."
+
+#~ msgid "lppasswd: Sorry, password rejected."
+#~ msgstr "lppaswwd: s'ha refusat la contrasenya."
+
+#~ msgid "lppasswd: Sorry, passwords don't match."
+#~ msgstr "lppaswwd: les contrasenyes no coincideixen."
+
+#~ msgid "lppasswd: Unable to copy password string: %s"
+#~ msgstr "lppasswd: no s'ha pogut copiar la cadena de contrasenya: %s"
+
+#~ msgid "lppasswd: Unable to open password file: %s"
+#~ msgstr "lppasswd: no s'ha pogut obrir el fitxer de contrasenyes: %s"
+
+#~ msgid "lppasswd: Unable to write to password file: %s"
+#~ msgstr "lppasswd: no s'ha pogut escriure al fitxer de contrasenyes: %s"
+
+#~ msgid "lppasswd: failed to backup old password file: %s"
+#~ msgstr ""
+#~ "lppasswd: no s'ha pogut fer la còpia de seguretat del fitxer de "
+#~ "contrasenyes antic: %s"
+
+#~ msgid "lppasswd: failed to rename password file: %s"
+#~ msgstr ""
+#~ "lppasswd: no s'ha pogut canviar el nom del fitxer de contrasenyes: %s"
+
+#~ msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
+#~ msgstr "lppaswd: l'usuari «%s» i el grup «%s» no existeixen."
index d689543a3ecfb6aa1b68d24bc1618a14373ddc1f..d72c1904736199700e2f178b7efe96f6f596dfb3 100644 (file)
@@ -12,7 +12,6 @@
 #   which 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:
 #
@@ -30,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: 2012-05-23 16:24-0700\n"
+"POT-Creation-Date: 2014-06-26 14:29-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"
@@ -39,746 +38,593 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: systemv/lpstat.c:1876 systemv/lpstat.c:2001
 msgid "\t\t(all)"
 msgstr ""
 
-#: systemv/lpstat.c:1879 systemv/lpstat.c:1882 systemv/lpstat.c:2004
-#: systemv/lpstat.c:2007
 msgid "\t\t(none)"
 msgstr ""
 
-#: berkeley/lpc.c:434
 #, c-format
 msgid "\t%d entries"
 msgstr ""
 
-#: systemv/lpstat.c:756 systemv/lpstat.c:772
 #, c-format
 msgid "\t%s"
 msgstr ""
 
-#: systemv/lpstat.c:1857 systemv/lpstat.c:1982
 msgid "\tAfter fault: continue"
 msgstr ""
 
-#: systemv/lpstat.c:1481 systemv/lpstat.c:1826 systemv/lpstat.c:1952
 #, c-format
 msgid "\tAlerts: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1880 systemv/lpstat.c:2005
 msgid "\tBanner required"
 msgstr ""
 
-#: systemv/lpstat.c:1881 systemv/lpstat.c:2006
 msgid "\tCharset sets:"
 msgstr ""
 
-#: systemv/lpstat.c:1845 systemv/lpstat.c:1970
 msgid "\tConnection: direct"
 msgstr ""
 
-#: systemv/lpstat.c:1836 systemv/lpstat.c:1962
 msgid "\tConnection: remote"
 msgstr ""
 
-#: systemv/lpstat.c:1800 systemv/lpstat.c:1926
 msgid "\tContent types: any"
 msgstr ""
 
-#: systemv/lpstat.c:1884 systemv/lpstat.c:2009
 msgid "\tDefault page size:"
 msgstr ""
 
-#: systemv/lpstat.c:1883 systemv/lpstat.c:2008
 msgid "\tDefault pitch:"
 msgstr ""
 
-#: systemv/lpstat.c:1885 systemv/lpstat.c:2010
 msgid "\tDefault port settings:"
 msgstr ""
 
-#: systemv/lpstat.c:1806 systemv/lpstat.c:1932
 #, c-format
 msgid "\tDescription: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1799 systemv/lpstat.c:1925
 msgid "\tForm mounted:"
 msgstr ""
 
-#: systemv/lpstat.c:1878 systemv/lpstat.c:2003
 msgid "\tForms allowed:"
 msgstr ""
 
-#: systemv/lpstat.c:1840 systemv/lpstat.c:1966
 #, c-format
 msgid "\tInterface: %s.ppd"
 msgstr ""
 
-#: systemv/lpstat.c:1849 systemv/lpstat.c:1974
 #, c-format
 msgid "\tInterface: %s/interfaces/%s"
 msgstr ""
 
-#: systemv/lpstat.c:1853 systemv/lpstat.c:1978
 #, c-format
 msgid "\tInterface: %s/ppd/%s.ppd"
 msgstr ""
 
-#: systemv/lpstat.c:1831 systemv/lpstat.c:1957
 #, c-format
 msgid "\tLocation: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1856 systemv/lpstat.c:1981
 msgid "\tOn fault: no alert"
 msgstr ""
 
-#: systemv/lpstat.c:1801 systemv/lpstat.c:1927
 msgid "\tPrinter types: unknown"
 msgstr ""
 
-#: systemv/lpstat.c:1462
 #, c-format
 msgid "\tStatus: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1861 systemv/lpstat.c:1875 systemv/lpstat.c:1986
-#: systemv/lpstat.c:2000
 msgid "\tUsers allowed:"
 msgstr ""
 
-#: systemv/lpstat.c:1868 systemv/lpstat.c:1993
 msgid "\tUsers denied:"
 msgstr ""
 
-#: berkeley/lpc.c:436
 msgid "\tdaemon present"
 msgstr ""
 
-#: berkeley/lpc.c:432
 msgid "\tno entries"
 msgstr ""
 
-#: berkeley/lpc.c:404 berkeley/lpc.c:416
 #, c-format
 msgid "\tprinter is on device '%s' speed -1"
 msgstr ""
 
-#: berkeley/lpc.c:429
 msgid "\tprinting is disabled"
 msgstr ""
 
-#: berkeley/lpc.c:427
 msgid "\tprinting is enabled"
 msgstr ""
 
-#: systemv/lpstat.c:1484
 #, c-format
 msgid "\tqueued for %s"
 msgstr ""
 
-#: berkeley/lpc.c:424
 msgid "\tqueuing is disabled"
 msgstr ""
 
-#: berkeley/lpc.c:422
 msgid "\tqueuing is enabled"
 msgstr ""
 
-#: systemv/lpstat.c:1792 systemv/lpstat.c:1918
 msgid "\treason unknown"
 msgstr ""
 
-#: systemv/cupstestppd.c:454
 msgid ""
 "\n"
 "    DETAILED CONFORMANCE TEST RESULTS"
 msgstr ""
 
-#: systemv/cupstestppd.c:3800
 msgid "                          Ignore specific warnings."
 msgstr ""
 
-#: systemv/cupstestppd.c:3804
 msgid "                          Issue warnings instead of errors."
 msgstr ""
 
-#: systemv/cupstestppd.c:410 systemv/cupstestppd.c:415
 msgid "                REF: Page 15, section 3.1."
 msgstr ""
 
-#: systemv/cupstestppd.c:405
 msgid "                REF: Page 15, section 3.2."
 msgstr ""
 
-#: systemv/cupstestppd.c:425
 msgid "                REF: Page 19, section 3.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:378
 msgid "                REF: Page 20, section 3.4."
 msgstr ""
 
-#: systemv/cupstestppd.c:430
 msgid "                REF: Page 27, section 3.5."
 msgstr ""
 
-#: systemv/cupstestppd.c:373
 msgid "                REF: Page 42, section 5.2."
 msgstr ""
 
-#: systemv/cupstestppd.c:420
 msgid "                REF: Pages 16-17, section 3.2."
 msgstr ""
 
-#: systemv/cupstestppd.c:390
 msgid "                REF: Pages 42-45, section 5.2."
 msgstr ""
 
-#: systemv/cupstestppd.c:384
 msgid "                REF: Pages 45-46, section 5.2."
 msgstr ""
 
-#: systemv/cupstestppd.c:395
 msgid "                REF: Pages 48-49, section 5.2."
 msgstr ""
 
-#: systemv/cupstestppd.c:400
 msgid "                REF: Pages 52-54, section 5.2."
 msgstr ""
 
-#: berkeley/lpq.c:554
 #, c-format
 msgid "        %-39.39s %.0f bytes"
 msgstr ""
 
-#: systemv/cupstestppd.c:589
 #, c-format
 msgid "        PASS    Default%s"
 msgstr ""
 
-#: systemv/cupstestppd.c:524
 msgid "        PASS    DefaultImageableArea"
 msgstr ""
 
-#: systemv/cupstestppd.c:558
 msgid "        PASS    DefaultPaperDimension"
 msgstr ""
 
-#: systemv/cupstestppd.c:631
 msgid "        PASS    FileVersion"
 msgstr ""
 
-#: systemv/cupstestppd.c:675
 msgid "        PASS    FormatVersion"
 msgstr ""
 
-#: systemv/cupstestppd.c:695
 msgid "        PASS    LanguageEncoding"
 msgstr ""
 
-#: systemv/cupstestppd.c:715
 msgid "        PASS    LanguageVersion"
 msgstr ""
 
-#: systemv/cupstestppd.c:769
 msgid "        PASS    Manufacturer"
 msgstr ""
 
-#: systemv/cupstestppd.c:809
 msgid "        PASS    ModelName"
 msgstr ""
 
-#: systemv/cupstestppd.c:829
 msgid "        PASS    NickName"
 msgstr ""
 
-#: systemv/cupstestppd.c:889
 msgid "        PASS    PCFileName"
 msgstr ""
 
-#: systemv/cupstestppd.c:964
 msgid "        PASS    PSVersion"
 msgstr ""
 
-#: systemv/cupstestppd.c:869
 msgid "        PASS    PageRegion"
 msgstr ""
 
-#: systemv/cupstestppd.c:849
 msgid "        PASS    PageSize"
 msgstr ""
 
-#: systemv/cupstestppd.c:924
 msgid "        PASS    Product"
 msgstr ""
 
-#: systemv/cupstestppd.c:999
 msgid "        PASS    ShortNickName"
 msgstr ""
 
-#: systemv/cupstestppd.c:1374
 #, c-format
 msgid "        WARN    %s has no corresponding options."
 msgstr ""
 
-#: systemv/cupstestppd.c:1486
 #, c-format
 msgid ""
 "        WARN    %s shares a common prefix with %s\n"
 "                REF: Page 15, section 3.2."
 msgstr ""
 
-#: systemv/cupstestppd.c:1345
 #, c-format
 msgid ""
-"        WARN    Duplex option keyword %s may not work as expected and should be named Duplex.\n"
+"        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:1744
 msgid "        WARN    File contains a mix of CR, LF, and CR LF line endings."
 msgstr ""
 
-#: systemv/cupstestppd.c:1390
 msgid ""
 "        WARN    LanguageEncoding required by PPD 4.3 spec.\n"
 "                REF: Pages 56-57, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:1726
 #, c-format
 msgid "        WARN    Line %d only contains whitespace."
 msgstr ""
 
-#: systemv/cupstestppd.c:1398
 msgid ""
 "        WARN    Manufacturer required by PPD 4.3 spec.\n"
 "                REF: Pages 58-59, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:1749
-msgid "        WARN    Non-Windows PPD files should use lines ending with only LF, not CR LF."
+msgid ""
+"        WARN    Non-Windows PPD files should use lines ending with only LF, "
+"not CR LF."
 msgstr ""
 
-#: systemv/cupstestppd.c:1382
 #, c-format
 msgid ""
 "        WARN    Obsolete PPD version %.1f.\n"
 "                REF: Page 42, section 5.2."
 msgstr ""
 
-#: systemv/cupstestppd.c:1413
 msgid ""
 "        WARN    PCFileName longer than 8.3 in violation of PPD spec.\n"
 "                REF: Pages 61-62, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:1421
 msgid ""
 "        WARN    PCFileName should contain a unique filename.\n"
 "                REF: Pages 61-62, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:1456
 msgid ""
 "        WARN    Protocols contains PJL but JCL attributes are not set.\n"
 "                REF: Pages 78-79, section 5.7."
 msgstr ""
 
-#: systemv/cupstestppd.c:1447
 msgid ""
 "        WARN    Protocols contains both PJL and BCP; expected TBCP.\n"
 "                REF: Pages 78-79, section 5.7."
 msgstr ""
 
-#: systemv/cupstestppd.c:1430
 msgid ""
 "        WARN    ShortNickName required by PPD 4.3 spec.\n"
 "                REF: Pages 64-65, section 5.3."
 msgstr ""
 
-#: systemv/cupsaddsmb.c:282
 msgid "       cupsaddsmb [options] -a"
 msgstr ""
 
-#: systemv/cupstestdsc.c:427
 msgid "       cupstestdsc [options] -"
 msgstr ""
 
-#: systemv/cupstestppd.c:3795
 msgid "       program | cupstestppd [options] -"
 msgstr ""
 
-#: systemv/cupstestppd.c:3727
 #, c-format
 msgid ""
 "      %s  \"%s %s\" conflicts with \"%s %s\"\n"
 "                (constraint=\"%s %s %s %s\")."
 msgstr ""
 
-#: systemv/cupstestppd.c:2248
 #, c-format
 msgid "      %s  %s %s does not exist."
 msgstr ""
 
-#: systemv/cupstestppd.c:3884
 #, c-format
 msgid "      %s  %s file \"%s\" has the wrong capitalization."
 msgstr ""
 
-#: systemv/cupstestppd.c:2318
 #, c-format
 msgid ""
 "      %s  Bad %s choice %s.\n"
 "                REF: Page 122, section 5.17"
 msgstr ""
 
-#: systemv/cupstestppd.c:3487 systemv/cupstestppd.c:3536
-#: systemv/cupstestppd.c:3575
 #, c-format
 msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s, choice %s."
 msgstr ""
 
-#: systemv/cupstestppd.c:3441
 #, c-format
 msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s."
 msgstr ""
 
-#: systemv/cupstestppd.c:2389
 #, c-format
 msgid "      %s  Bad cupsFilter value \"%s\"."
 msgstr ""
 
-#: systemv/cupstestppd.c:2475
 #, c-format
 msgid "      %s  Bad cupsFilter2 value \"%s\"."
 msgstr ""
 
-#: systemv/cupstestppd.c:2964
 #, c-format
 msgid "      %s  Bad cupsICCProfile %s."
 msgstr ""
 
-#: systemv/cupstestppd.c:2571
 #, c-format
 msgid "      %s  Bad cupsPreFilter value \"%s\"."
 msgstr ""
 
-#: systemv/cupstestppd.c:1822
 #, c-format
 msgid "      %s  Bad cupsUIConstraints %s: \"%s\""
 msgstr ""
 
-#: systemv/cupstestppd.c:3391
 #, c-format
 msgid "      %s  Bad language \"%s\"."
 msgstr ""
 
-#: systemv/cupstestppd.c:2433 systemv/cupstestppd.c:2529
-#: systemv/cupstestppd.c:2615 systemv/cupstestppd.c:2673
-#: systemv/cupstestppd.c:2728 systemv/cupstestppd.c:2783
-#: systemv/cupstestppd.c:2838 systemv/cupstestppd.c:2891
-#: systemv/cupstestppd.c:3013
 #, c-format
 msgid "      %s  Bad permissions on %s file \"%s\"."
 msgstr ""
 
-#: systemv/cupstestppd.c:2373 systemv/cupstestppd.c:2459
-#: systemv/cupstestppd.c:2555 systemv/cupstestppd.c:2642
-#: systemv/cupstestppd.c:2697 systemv/cupstestppd.c:2752
-#: systemv/cupstestppd.c:2807 systemv/cupstestppd.c:2862
 #, c-format
 msgid "      %s  Bad spelling of %s - should be %s."
 msgstr ""
 
-#: systemv/cupstestppd.c:2907
 #, c-format
 msgid "      %s  Cannot provide both APScanAppPath and APScanAppBundleID."
 msgstr ""
 
-#: systemv/cupstestppd.c:2205
 #, c-format
 msgid "      %s  Default choices conflicting."
 msgstr ""
 
-#: systemv/cupstestppd.c:1803
 #, c-format
 msgid "      %s  Empty cupsUIConstraints %s"
 msgstr ""
 
-#: systemv/cupstestppd.c:3519 systemv/cupstestppd.c:3559
 #, c-format
 msgid "      %s  Missing \"%s\" translation string for option %s, choice %s."
 msgstr ""
 
-#: systemv/cupstestppd.c:3427
 #, c-format
 msgid "      %s  Missing \"%s\" translation string for option %s."
 msgstr ""
 
-#: systemv/cupstestppd.c:2418 systemv/cupstestppd.c:2514
-#: systemv/cupstestppd.c:2600 systemv/cupstestppd.c:2658
-#: systemv/cupstestppd.c:2713 systemv/cupstestppd.c:2768
-#: systemv/cupstestppd.c:2823 systemv/cupstestppd.c:2875
-#: systemv/cupstestppd.c:2998
 #, c-format
 msgid "      %s  Missing %s file \"%s\"."
 msgstr ""
 
-#: systemv/cupstestppd.c:3121
 #, c-format
 msgid ""
 "      %s  Missing REQUIRED PageRegion option.\n"
 "                REF: Page 100, section 5.14."
 msgstr ""
 
-#: systemv/cupstestppd.c:3106
 #, c-format
 msgid ""
 "      %s  Missing REQUIRED PageSize option.\n"
 "                REF: Page 99, section 5.14."
 msgstr ""
 
-#: systemv/cupstestppd.c:2013 systemv/cupstestppd.c:2054
 #, c-format
 msgid "      %s  Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"."
 msgstr ""
 
-#: systemv/cupstestppd.c:1908
 #, c-format
 msgid "      %s  Missing choice *%s %s in cupsUIConstraints %s: \"%s\""
 msgstr ""
 
-#: systemv/cupstestppd.c:1840
 #, c-format
 msgid "      %s  Missing cupsUIResolver %s"
 msgstr ""
 
-#: systemv/cupstestppd.c:1999 systemv/cupstestppd.c:2040
 #, c-format
 msgid "      %s  Missing option %s in UIConstraints \"*%s %s *%s %s\"."
 msgstr ""
 
-#: systemv/cupstestppd.c:1892
 #, c-format
 msgid "      %s  Missing option %s in cupsUIConstraints %s: \"%s\""
 msgstr ""
 
-#: systemv/cupstestppd.c:3613
 #, c-format
 msgid "      %s  No base translation \"%s\" is included in file."
 msgstr ""
 
-#: systemv/cupstestppd.c:2294
 #, c-format
 msgid ""
 "      %s  REQUIRED %s does not define choice None.\n"
 "                REF: Page 122, section 5.17"
 msgstr ""
 
-#: systemv/cupstestppd.c:3180 systemv/cupstestppd.c:3194
 #, c-format
 msgid "      %s  Size \"%s\" defined for %s but not for %s."
 msgstr ""
 
-#: systemv/cupstestppd.c:3160
 #, c-format
 msgid "      %s  Size \"%s\" has unexpected dimensions (%gx%g)."
 msgstr ""
 
-#: systemv/cupstestppd.c:3332
 #, c-format
 msgid "      %s  Size \"%s\" should be \"%s\"."
 msgstr ""
 
-#: systemv/cupstestppd.c:3292
 #, c-format
 msgid "      %s  Size \"%s\" should be the Adobe standard name \"%s\"."
 msgstr ""
 
-#: systemv/cupstestppd.c:3041
 #, c-format
 msgid "      %s  cupsICCProfile %s hash value collides with %s."
 msgstr ""
 
-#: systemv/cupstestppd.c:1963
 #, c-format
 msgid "      %s  cupsUIResolver %s causes a loop."
 msgstr ""
 
-#: systemv/cupstestppd.c:1945
 #, c-format
-msgid "      %s  cupsUIResolver %s does not list at least two different options."
+msgid ""
+"      %s  cupsUIResolver %s does not list at least two different options."
 msgstr ""
 
-#: systemv/cupstestppd.c:1168
 #, c-format
 msgid ""
 "      **FAIL**  %s must be 1284DeviceID\n"
 "                REF: Page 72, section 5.5"
 msgstr ""
 
-#: systemv/cupstestppd.c:580
 #, c-format
 msgid ""
 "      **FAIL**  Bad Default%s %s\n"
 "                REF: Page 40, section 4.5."
 msgstr ""
 
-#: systemv/cupstestppd.c:514
 #, c-format
 msgid ""
 "      **FAIL**  Bad DefaultImageableArea %s\n"
 "                REF: Page 102, section 5.15."
 msgstr ""
 
-#: systemv/cupstestppd.c:550
 #, c-format
 msgid ""
 "      **FAIL**  Bad DefaultPaperDimension %s\n"
 "                REF: Page 103, section 5.15."
 msgstr ""
 
-#: systemv/cupstestppd.c:623
 #, c-format
 msgid ""
 "      **FAIL**  Bad FileVersion \"%s\"\n"
 "                REF: Page 56, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:667
 #, c-format
 msgid ""
 "      **FAIL**  Bad FormatVersion \"%s\"\n"
 "                REF: Page 56, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:1025
 msgid ""
 "      **FAIL**  Bad JobPatchFile attribute in file\n"
 "                REF: Page 24, section 3.4."
 msgstr ""
 
-#: systemv/cupstestppd.c:1213
 #, c-format
 msgid "      **FAIL**  Bad LanguageEncoding %s - must be ISOLatin1."
 msgstr ""
 
-#: systemv/cupstestppd.c:1227
 #, c-format
 msgid "      **FAIL**  Bad LanguageVersion %s - must be English."
 msgstr ""
 
-#: systemv/cupstestppd.c:743 systemv/cupstestppd.c:760
 #, c-format
 msgid ""
 "      **FAIL**  Bad Manufacturer (should be \"%s\")\n"
 "                REF: Page 211, table D.1."
 msgstr ""
 
-#: systemv/cupstestppd.c:800
 #, c-format
 msgid ""
 "      **FAIL**  Bad ModelName - \"%c\" not allowed in string.\n"
 "                REF: Pages 59-60, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:956
 msgid ""
 "      **FAIL**  Bad PSVersion - not \"(string) int\".\n"
 "                REF: Pages 62-64, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:917
 msgid ""
 "      **FAIL**  Bad Product - not \"(string)\".\n"
 "                REF: Page 62, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:991
 msgid ""
 "      **FAIL**  Bad ShortNickName - longer than 31 chars.\n"
 "                REF: Pages 64-65, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:1149
 #, c-format
 msgid ""
 "      **FAIL**  Bad option %s choice %s\n"
 "                REF: Page 84, section 5.9"
 msgstr ""
 
-#: systemv/cupstestppd.c:3754 systemv/cupstestppd.c:3776
 #, c-format
 msgid "      **FAIL**  Default option code cannot be interpreted: %s"
 msgstr ""
 
-#: systemv/cupstestppd.c:1286
 #, c-format
-msgid "      **FAIL**  Default translation string for option %s choice %s contains 8-bit characters."
+msgid ""
+"      **FAIL**  Default translation string for option %s choice %s contains "
+"8-bit characters."
 msgstr ""
 
-#: systemv/cupstestppd.c:1259
 #, c-format
-msgid "      **FAIL**  Default translation string for option %s contains 8-bit characters."
+msgid ""
+"      **FAIL**  Default translation string for option %s contains 8-bit "
+"characters."
 msgstr ""
 
-#: systemv/cupstestppd.c:2101
 #, c-format
 msgid "      **FAIL**  Group names %s and %s differ only by case."
 msgstr ""
 
-#: systemv/cupstestppd.c:2146
 #, c-format
 msgid "      **FAIL**  Multiple occurrences of option %s choice name %s."
 msgstr ""
 
-#: systemv/cupstestppd.c:2163
 #, c-format
 msgid "      **FAIL**  Option %s choice names %s and %s differ only by case."
 msgstr ""
 
-#: systemv/cupstestppd.c:2123
 #, c-format
 msgid "      **FAIL**  Option names %s and %s differ only by case."
 msgstr ""
 
-#: systemv/cupstestppd.c:600
 #, c-format
 msgid ""
 "      **FAIL**  REQUIRED Default%s\n"
 "                REF: Page 40, section 4.5."
 msgstr ""
 
-#: systemv/cupstestppd.c:499
 msgid ""
 "      **FAIL**  REQUIRED DefaultImageableArea\n"
 "                REF: Page 102, section 5.15."
 msgstr ""
 
-#: systemv/cupstestppd.c:535
 msgid ""
 "      **FAIL**  REQUIRED DefaultPaperDimension\n"
 "                REF: Page 103, section 5.15."
 msgstr ""
 
-#: systemv/cupstestppd.c:641
 msgid ""
 "      **FAIL**  REQUIRED FileVersion\n"
 "                REF: Page 56, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:685
 msgid ""
 "      **FAIL**  REQUIRED FormatVersion\n"
 "                REF: Page 56, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:1076
 #, c-format
 msgid ""
 "      **FAIL**  REQUIRED ImageableArea for PageSize %s\n"
@@ -786,68 +632,57 @@ msgid ""
 "                REF: Page 102, section 5.15."
 msgstr ""
 
-#: systemv/cupstestppd.c:705
 msgid ""
 "      **FAIL**  REQUIRED LanguageEncoding\n"
 "                REF: Pages 56-57, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:725
 msgid ""
 "      **FAIL**  REQUIRED LanguageVersion\n"
 "                REF: Pages 57-58, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:779
 msgid ""
 "      **FAIL**  REQUIRED Manufacturer\n"
 "                REF: Pages 58-59, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:819
 msgid ""
 "      **FAIL**  REQUIRED ModelName\n"
 "                REF: Pages 59-60, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:839
 msgid ""
 "      **FAIL**  REQUIRED NickName\n"
 "                REF: Page 60, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:899
 msgid ""
 "      **FAIL**  REQUIRED PCFileName\n"
 "                REF: Pages 61-62, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:974
 msgid ""
 "      **FAIL**  REQUIRED PSVersion\n"
 "                REF: Pages 62-64, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:879
 msgid ""
 "      **FAIL**  REQUIRED PageRegion\n"
 "                REF: Page 100, section 5.14."
 msgstr ""
 
-#: systemv/cupstestppd.c:1045
 msgid ""
 "      **FAIL**  REQUIRED PageSize\n"
 "                REF: Page 41, section 5.\n"
 "                REF: Page 99, section 5.14."
 msgstr ""
 
-#: systemv/cupstestppd.c:859
 msgid ""
 "      **FAIL**  REQUIRED PageSize\n"
 "                REF: Pages 99-100, section 5.14."
 msgstr ""
 
-#: systemv/cupstestppd.c:1098
 #, c-format
 msgid ""
 "      **FAIL**  REQUIRED PaperDimension for PageSize %s\n"
@@ -855,2194 +690,2076 @@ msgid ""
 "                REF: Page 103, section 5.15."
 msgstr ""
 
-#: systemv/cupstestppd.c:934
 msgid ""
 "      **FAIL**  REQUIRED Product\n"
 "                REF: Page 62, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:1009
 msgid ""
 "      **FAIL**  REQUIRED ShortNickName\n"
 "                REF: Page 64-65, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:334 systemv/cupstestppd.c:353
-#: systemv/cupstestppd.c:365
 #, c-format
 msgid "      **FAIL**  Unable to open PPD file - %s on line %d."
 msgstr ""
 
-#: systemv/cupstestppd.c:1498
 #, c-format
 msgid "    %d ERRORS FOUND"
 msgstr ""
 
-#: systemv/cupstestdsc.c:431
 msgid "    -h       Show program usage"
 msgstr ""
 
-#: systemv/cupstestdsc.c:234 systemv/cupstestdsc.c:276
 #, c-format
 msgid ""
 "    Bad %%%%BoundingBox: on line %d.\n"
 "        REF: Page 39, %%%%BoundingBox:"
 msgstr ""
 
-#: systemv/cupstestdsc.c:305
 #, c-format
 msgid ""
 "    Bad %%%%Page: on line %d.\n"
 "        REF: Page 53, %%%%Page:"
 msgstr ""
 
-#: systemv/cupstestdsc.c:218 systemv/cupstestdsc.c:258
 #, c-format
 msgid ""
 "    Bad %%%%Pages: on line %d.\n"
 "        REF: Page 43, %%%%Pages:"
 msgstr ""
 
-#: systemv/cupstestdsc.c:176
 #, c-format
 msgid ""
 "    Line %d is longer than 255 characters (%d).\n"
 "        REF: Page 25, Line Length"
 msgstr ""
 
-#: systemv/cupstestdsc.c:192
 msgid ""
 "    Missing %!PS-Adobe-3.0 on first line.\n"
 "        REF: Page 17, 3.1 Conforming Documents"
 msgstr ""
 
-#: systemv/cupstestdsc.c:362
 #, c-format
 msgid "    Missing %%EndComments comment.        REF: Page 41, %%EndComments"
 msgstr ""
 
-#: systemv/cupstestdsc.c:342
 #, c-format
 msgid ""
 "    Missing or bad %%BoundingBox: comment.\n"
 "        REF: Page 39, %%BoundingBox:"
 msgstr ""
 
-#: systemv/cupstestdsc.c:372
 #, c-format
 msgid ""
 "    Missing or bad %%Page: comments.\n"
 "        REF: Page 53, %%Page:"
 msgstr ""
 
-#: systemv/cupstestdsc.c:352
 #, c-format
 msgid ""
 "    Missing or bad %%Pages: comment.\n"
 "        REF: Page 43, %%Pages:"
 msgstr ""
 
-#: systemv/cupstestppd.c:1500
 msgid "    NO ERRORS FOUND"
 msgstr ""
 
-#: systemv/cupstestdsc.c:395
 #, c-format
 msgid "    Saw %d lines that exceeded 255 characters."
 msgstr ""
 
-#: systemv/cupstestdsc.c:390
 #, c-format
 msgid "    Too many %%BeginDocument comments."
 msgstr ""
 
-#: systemv/cupstestdsc.c:382
 #, c-format
 msgid "    Too many %%EndDocument comments."
 msgstr ""
 
-#: systemv/cupstestdsc.c:402
 msgid "    Warning: file contains binary data."
 msgstr ""
 
-#: systemv/cupstestdsc.c:410
 #, c-format
 msgid "    Warning: no %%EndComments comment in file."
 msgstr ""
 
-#: systemv/cupstestdsc.c:406
 #, c-format
 msgid "    Warning: obsolete DSC version %.1f in file."
 msgstr ""
 
-#: systemv/cupsctl.c:210
+msgid "  ! expression            Unary NOT of expression."
+msgstr ""
+
+msgid "  ( expressions )         Group expressions."
+msgstr ""
+
 msgid "  --[no-]debug-logging    Turn debug logging on/off."
 msgstr ""
 
-#: systemv/cupsctl.c:212
 msgid "  --[no-]remote-admin     Turn remote administration on/off."
 msgstr ""
 
-#: systemv/cupsctl.c:214
 msgid "  --[no-]remote-any       Allow/prevent access from the Internet."
 msgstr ""
 
-#: systemv/cupsctl.c:216
 msgid "  --[no-]share-printers   Turn printer sharing on/off."
 msgstr ""
 
-#: systemv/cupsctl.c:218
 msgid "  --[no-]user-cancel-any  Allow/prevent users to cancel any job."
 msgstr ""
 
-#: ppdc/ppdc.cxx:455
 msgid "  --cr                    End lines with CR (Mac OS 9)."
 msgstr ""
 
-#: ppdc/ppdc.cxx:457
 msgid "  --crlf                  End lines with CR + LF (Windows)."
 msgstr ""
 
-#: ppdc/ppdc.cxx:459
+msgid "  --domain regex          Match domain to regular expression."
+msgstr ""
+
+msgid ""
+"  --exec utility [argument ...] ;\n"
+"                          Execute program if true."
+msgstr ""
+
+msgid "  --false                 Always false."
+msgstr ""
+
+msgid "  --help                  Show this help."
+msgstr ""
+
+msgid "  --host regex            Match hostname to regular expression."
+msgstr ""
+
 msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
 msgstr ""
 
-#: test/ipptool.c:4404
+msgid "  --list-filters          List filters that will be used."
+msgstr ""
+
+msgid "  --local                 True if service is local."
+msgstr ""
+
+msgid "  --ls                    List attributes."
+msgstr ""
+
+msgid "  --name regex            Match service name to regular expression."
+msgstr ""
+
+msgid "  --not expression        Unary NOT of expression."
+msgstr ""
+
+msgid "  --path regex            Match resource path to regular expression."
+msgstr ""
+
+msgid "  --port number[-number]  Match port to number or range."
+msgstr ""
+
+msgid "  --print                 Print URI if true."
+msgstr ""
+
+msgid "  --print-name            Print service name if true."
+msgstr ""
+
+msgid "  --quiet                 Quietly report match via exit code."
+msgstr ""
+
+msgid "  --remote                True if service is remote."
+msgstr ""
+
+msgid "  --true                  Always true."
+msgstr ""
+
+msgid "  --txt key               True if the TXT record contains the key."
+msgstr ""
+
+msgid "  --txt-* regex           Match TXT record key to regular expression."
+msgstr ""
+
+msgid "  --uri regex             Match URI to regular expression."
+msgstr ""
+
+msgid "  --version               Show program version."
+msgstr ""
+
 msgid "  -4                      Connect using IPv4."
 msgstr ""
 
-#: test/ipptool.c:4405
 msgid "  -6                      Connect using IPv6."
 msgstr ""
 
-#: test/ipptool.c:4406
 msgid "  -C                      Send requests using chunking (default)."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1431
 msgid "  -D                      Remove the input file when finished."
 msgstr ""
 
-#: ppdc/ppdc.cxx:438 ppdc/ppdhtml.cxx:175 ppdc/ppdpo.cxx:255
 msgid "  -D name=value           Set named variable to value."
 msgstr ""
 
-#: systemv/cupsaddsmb.c:285 systemv/cupsctl.c:205
 msgid "  -E                      Encrypt the connection."
 msgstr ""
 
-#: test/ipptool.c:4408
 msgid "  -E                      Test with HTTP Upgrade to TLS."
 msgstr ""
 
-#: scheduler/main.c:2021
-msgid "  -F                      Run in the foreground but detach from console."
+msgid ""
+"  -F                      Run in the foreground but detach from console."
 msgstr ""
 
-#: systemv/cupsaddsmb.c:286
 msgid "  -H samba-server         Use the named SAMBA server."
 msgstr ""
 
-#: test/ipptool.c:4410
 msgid "  -I                      Ignore errors."
 msgstr ""
 
-#: ppdc/ppdc.cxx:440 ppdc/ppdhtml.cxx:177 ppdc/ppdi.cxx:131 ppdc/ppdpo.cxx:257
 msgid "  -I include-dir          Add include directory to search path."
 msgstr ""
 
-#: systemv/cupstestppd.c:3799
 msgid "  -I {filename,filters,none,profiles}"
 msgstr ""
 
-#: test/ipptool.c:4411
 msgid "  -L                      Send requests using content-length."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1433
 msgid "  -P filename.ppd         Set PPD file."
 msgstr ""
 
-#: systemv/cupstestppd.c:3801
+msgid "  -P number[-number]      Match port to number or range."
+msgstr ""
+
 msgid "  -R root-directory       Set alternate root."
 msgstr ""
 
-#: test/ipptool.c:4413
 msgid "  -S                      Test with SSL encryption."
 msgstr ""
 
-#: test/ipptool.c:4415
+msgid "  -T seconds              Set the browse timeout in seconds."
+msgstr ""
+
 msgid "  -T seconds              Set the receive/send timeout in seconds."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1434 systemv/cupsaddsmb.c:288 systemv/cupsctl.c:206
 msgid "  -U username             Specify username."
 msgstr ""
 
-#: test/ipptool.c:4417
 msgid "  -V version              Set default IPP version."
 msgstr ""
 
-#: systemv/cupstestppd.c:3802
-msgid "  -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,translations}"
+msgid ""
+"  -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,"
+"translations}"
 msgstr ""
 
-#: test/ipptool.c:4419
 msgid "  -X                      Produce XML plist instead of plain text."
 msgstr ""
 
-#: systemv/cupsaddsmb.c:289
+msgid "  -a                      Browse for all services."
+msgstr ""
+
 msgid "  -a                      Export all printers."
 msgstr ""
 
-#: ppdc/ppdc.cxx:442
 msgid "  -c catalog.po           Load the specified message catalog."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1435 scheduler/main.c:2019
+msgid "  -c cups-files.conf      Set cups-files.conf file to use."
+msgstr ""
+
 msgid "  -c cupsd.conf           Set cupsd.conf file to use."
 msgstr ""
 
-#: test/ipptool.c:4421
+msgid "  -d domain               Browse/resolve in specified domain."
+msgstr ""
+
 msgid "  -d name=value           Set named variable to value."
 msgstr ""
 
-#: ppdc/ppdc.cxx:444
 msgid "  -d output-dir           Specify the output directory."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1437
 msgid "  -d printer              Use the named printer."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1439
+msgid "  -d regex                Match domain to regular expression."
+msgstr ""
+
 msgid "  -e                      Use every filter from the PPD file."
 msgstr ""
 
-#: scheduler/main.c:2020
 msgid "  -f                      Run in the foreground."
 msgstr ""
 
-#: test/ipptool.c:4423
 msgid "  -f filename             Set default request filename."
 msgstr ""
 
-#: scheduler/main.c:2023
 msgid "  -h                      Show this usage message."
 msgstr ""
 
-#: systemv/cupsaddsmb.c:290 systemv/cupsctl.c:207
+msgid "  -h regex                Match hostname to regular expression."
+msgstr ""
+
 msgid "  -h server[:port]        Specify server address."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1441
 msgid "  -i mime/type            Set input MIME type (otherwise auto-typed)."
 msgstr ""
 
-#: test/ipptool.c:4425
-msgid "  -i seconds              Repeat the last file with the given time interval."
+msgid ""
+"  -i seconds              Repeat the last file with the given time interval."
+msgstr ""
+
+msgid ""
+"  -j job-id[,N]           Filter file N from the specified job (default is "
+"file 1)."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1443
-msgid "  -j job-id[,N]           Filter file N from the specified job (default is file 1)."
+msgid "  -l                      List attributes."
 msgstr ""
 
-#: scheduler/main.c:2024
-msgid "  -l                      Run cupsd from launchd(8)."
+msgid "  -l                      Run cupsd on demand."
 msgstr ""
 
-#: ppdc/ppdc.cxx:446
 msgid "  -l lang[,lang,...]      Specify the output language(s) (locale)."
 msgstr ""
 
-#: ppdc/ppdc.cxx:448
 msgid "  -m                      Use the ModelName value as the filename."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1445
-msgid "  -m mime/type            Set output MIME type (otherwise application/pdf)."
+msgid ""
+"  -m mime/type            Set output MIME type (otherwise application/pdf)."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1447
 msgid "  -n copies               Set number of copies."
 msgstr ""
 
-#: test/ipptool.c:4427
-msgid "  -n count                Repeat the last file the given number of times."
+msgid ""
+"  -n count                Repeat the last file the given number of times."
 msgstr ""
 
-#: ppdc/ppdi.cxx:133
-msgid "  -o filename.drv         Set driver information file (otherwise ppdi.drv)."
+msgid "  -n regex                Match service name to regular expression."
+msgstr ""
+
+msgid ""
+"  -o filename.drv         Set driver information file (otherwise ppdi.drv)."
 msgstr ""
 
-#: ppdc/ppdmerge.cxx:370
 msgid "  -o filename.ppd[.gz]    Set output file (otherwise stdout)."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1448
 msgid "  -o name=value           Set option(s)."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1449
+msgid "  -p                      Print URI if true."
+msgstr ""
+
 msgid "  -p filename.ppd         Set PPD file."
 msgstr ""
 
-#: systemv/cupstestppd.c:3806 test/ipptool.c:4429
+msgid "  -p program              Run specified program for each service."
+msgstr ""
+
+msgid "  -q                      Quietly report match via exit code."
+msgstr ""
+
 msgid "  -q                      Run silently."
 msgstr ""
 
-#: systemv/cupstestppd.c:3807
+msgid "  -r                      True if service is remote."
+msgstr ""
+
 msgid "  -r                      Use 'relaxed' open mode."
 msgstr ""
 
-#: test/ipptool.c:4430
+msgid "  -s                      Print service name if true."
+msgstr ""
+
 msgid "  -t                      Produce a test report."
 msgstr ""
 
-#: ppdc/ppdc.cxx:450
 msgid "  -t                      Test PPDs instead of generating them."
 msgstr ""
 
-#: scheduler/main.c:2025
 msgid "  -t                      Test the configuration file."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1450
+msgid "  -t key                  True if the TXT record contains the key."
+msgstr ""
+
 msgid "  -t title                Set title."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1451
+msgid "  -t type                 Browse/resolve with specified type."
+msgstr ""
+
 msgid "  -u                      Remove the PPD file when finished."
 msgstr ""
 
-#: systemv/cupsaddsmb.c:291 systemv/cupstestppd.c:3808 test/ipptool.c:4431
-#: ppdc/ppdc.cxx:452 ppdc/ppdpo.cxx:259
+msgid "  -u regex                Match URI to regular expression."
+msgstr ""
+
 msgid "  -v                      Be verbose."
 msgstr ""
 
-#: systemv/cupstestppd.c:3809
 msgid "  -vv                     Be very verbose."
 msgstr ""
 
-#: ppdc/ppdc.cxx:453
+msgid ""
+"  -x utility [argument ...] ;\n"
+"                          Execute program if true."
+msgstr ""
+
 msgid "  -z                      Compress PPD files using GNU zip."
 msgstr ""
 
-#: systemv/cupstestppd.c:332 systemv/cupstestppd.c:351
-#: systemv/cupstestppd.c:363 systemv/cupstestppd.c:496
-#: systemv/cupstestppd.c:511 systemv/cupstestppd.c:532
-#: systemv/cupstestppd.c:547 systemv/cupstestppd.c:577
-#: systemv/cupstestppd.c:597 systemv/cupstestppd.c:620
-#: systemv/cupstestppd.c:638 systemv/cupstestppd.c:664
-#: systemv/cupstestppd.c:682 systemv/cupstestppd.c:702
-#: systemv/cupstestppd.c:722 systemv/cupstestppd.c:740
-#: systemv/cupstestppd.c:757 systemv/cupstestppd.c:776
-#: systemv/cupstestppd.c:797 systemv/cupstestppd.c:816
-#: systemv/cupstestppd.c:836 systemv/cupstestppd.c:856
-#: systemv/cupstestppd.c:876 systemv/cupstestppd.c:896
-#: systemv/cupstestppd.c:914 systemv/cupstestppd.c:931
-#: systemv/cupstestppd.c:953 systemv/cupstestppd.c:971
-#: systemv/cupstestppd.c:988 systemv/cupstestppd.c:1006
-#: systemv/cupstestppd.c:1022 systemv/cupstestppd.c:1042
-#: systemv/cupstestppd.c:1073 systemv/cupstestppd.c:1095
-#: systemv/cupstestppd.c:1146 systemv/cupstestppd.c:1165
-#: systemv/cupstestppd.c:1209 systemv/cupstestppd.c:1223
-#: systemv/cupstestppd.c:1255 systemv/cupstestppd.c:1282
-#: systemv/cupstestppd.c:1800 systemv/cupstestppd.c:1819
-#: systemv/cupstestppd.c:1837 systemv/cupstestppd.c:1889
-#: systemv/cupstestppd.c:1905 systemv/cupstestppd.c:1942
-#: systemv/cupstestppd.c:1960 systemv/cupstestppd.c:1996
-#: systemv/cupstestppd.c:2010 systemv/cupstestppd.c:2037
-#: systemv/cupstestppd.c:2051 systemv/cupstestppd.c:2097
-#: systemv/cupstestppd.c:2119 systemv/cupstestppd.c:2142
-#: systemv/cupstestppd.c:2159 systemv/cupstestppd.c:2201
-#: systemv/cupstestppd.c:2244 systemv/cupstestppd.c:2291
-#: systemv/cupstestppd.c:2315 systemv/cupstestppd.c:2369
-#: systemv/cupstestppd.c:2385 systemv/cupstestppd.c:2415
-#: systemv/cupstestppd.c:2429 systemv/cupstestppd.c:2455
-#: systemv/cupstestppd.c:2471 systemv/cupstestppd.c:2511
-#: systemv/cupstestppd.c:2525 systemv/cupstestppd.c:2551
-#: systemv/cupstestppd.c:2567 systemv/cupstestppd.c:2597
-#: systemv/cupstestppd.c:2611 systemv/cupstestppd.c:2638
-#: systemv/cupstestppd.c:2655 systemv/cupstestppd.c:2669
-#: systemv/cupstestppd.c:2693 systemv/cupstestppd.c:2710
-#: systemv/cupstestppd.c:2724 systemv/cupstestppd.c:2748
-#: systemv/cupstestppd.c:2765 systemv/cupstestppd.c:2779
-#: systemv/cupstestppd.c:2803 systemv/cupstestppd.c:2820
-#: systemv/cupstestppd.c:2834 systemv/cupstestppd.c:2858
-#: systemv/cupstestppd.c:2872 systemv/cupstestppd.c:2887
-#: systemv/cupstestppd.c:2904 systemv/cupstestppd.c:2960
-#: systemv/cupstestppd.c:2995 systemv/cupstestppd.c:3009
-#: systemv/cupstestppd.c:3037 systemv/cupstestppd.c:3102
-#: systemv/cupstestppd.c:3117 systemv/cupstestppd.c:3156
-#: systemv/cupstestppd.c:3176 systemv/cupstestppd.c:3190
-#: systemv/cupstestppd.c:3387 systemv/cupstestppd.c:3423
-#: systemv/cupstestppd.c:3437 systemv/cupstestppd.c:3483
-#: systemv/cupstestppd.c:3515 systemv/cupstestppd.c:3532
-#: systemv/cupstestppd.c:3555 systemv/cupstestppd.c:3571
-#: systemv/cupstestppd.c:3609 systemv/cupstestppd.c:3750
-#: systemv/cupstestppd.c:3772 systemv/cupstestppd.c:3880
+msgid "  IPPFIND_SERVICE_DOMAIN  Domain name"
+msgstr ""
+
+msgid ""
+"  IPPFIND_SERVICE_HOSTNAME\n"
+"                          Fully-qualified domain name"
+msgstr ""
+
+msgid "  IPPFIND_SERVICE_NAME    Service instance name"
+msgstr ""
+
+msgid "  IPPFIND_SERVICE_PORT    Port number"
+msgstr ""
+
+msgid "  IPPFIND_SERVICE_REGTYPE DNS-SD registration type"
+msgstr ""
+
+msgid "  IPPFIND_SERVICE_SCHEME  URI scheme"
+msgstr ""
+
+msgid "  IPPFIND_SERVICE_URI     URI"
+msgstr ""
+
+msgid "  IPPFIND_TXT_*           Value of TXT record key"
+msgstr ""
+
+msgid ""
+"  expression --and expression\n"
+"                          Logical AND."
+msgstr ""
+
+msgid ""
+"  expression --or expression\n"
+"                          Logical OR."
+msgstr ""
+
+msgid "  expression expression   Logical AND."
+msgstr ""
+
+msgid "  {service_domain}        Domain name"
+msgstr ""
+
+msgid "  {service_hostname}      Fully-qualified domain name"
+msgstr ""
+
+msgid "  {service_name}          Service instance name"
+msgstr ""
+
+msgid "  {service_port}          Port number"
+msgstr ""
+
+msgid "  {service_regtype}       DNS-SD registration type"
+msgstr ""
+
+msgid "  {service_scheme}        URI scheme"
+msgstr ""
+
+msgid "  {service_uri}           URI"
+msgstr ""
+
+msgid "  {txt_*}                 Value of TXT record key"
+msgstr ""
+
+msgid "  {}                      URI"
+msgstr ""
+
 msgid " FAIL"
 msgstr ""
 
-#: systemv/cupstestppd.c:1306
 msgid " PASS"
 msgstr ""
 
-#: berkeley/lpq.c:560
 #, c-format
-msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
+msgid "\"%s\": Bad URI value \"%s\" - %s (RFC 2911 section 4.1.5)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad URI value \"%s\" - bad length %d (RFC 2911 section 4.1.5)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad attribute name - bad length %d (RFC 2911 section 4.1.3)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad attribute name - invalid character (RFC 2911 section 4.1.3)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad boolen value %d (RFC 2911 section 4.1.11)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad charset value \"%s\" - bad characters (RFC 2911 section 4.1.7)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad charset value \"%s\" - bad length %d (RFC 2911 section 4.1.7)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad dateTime UTC hours %u (RFC 2911 section 4.1.14)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad dateTime UTC minutes %u (RFC 2911 section 4.1.14)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad dateTime UTC sign '%c' (RFC 2911 section 4.1.14)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad dateTime day %u (RFC 2911 section 4.1.14)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad dateTime deciseconds %u (RFC 2911 section 4.1.14)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad dateTime hours %u (RFC 2911 section 4.1.14)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad dateTime minutes %u (RFC 2911 section 4.1.14)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad dateTime month %u (RFC 2911 section 4.1.14)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad dateTime seconds %u (RFC 2911 section 4.1.14)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad enum value %d - out of range (RFC 2911 section 4.1.4)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad keyword value \"%s\" - bad length %d (RFC 2911 section 4.1.3)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad keyword value \"%s\" - invalid character (RFC 2911 section "
+"4.1.3)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad mimeMediaType value \"%s\" - bad characters (RFC 2911 section "
+"4.1.9)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad mimeMediaType value \"%s\" - bad length %d (RFC 2911 section "
+"4.1.9)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad name value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.2)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad name value \"%s\" - bad length %d (RFC 2911 section 4.1.2)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad naturalLanguage value \"%s\" - bad characters (RFC 2911 section "
+"4.1.8)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad naturalLanguage value \"%s\" - bad length %d (RFC 2911 section "
+"4.1.8)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad octetString value - bad length %d (RFC 2911 section 4.1.10)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad rangeOfInteger value %d-%d - lower greater than upper (RFC 2911 "
+"section 4.1.13)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad resolution value %dx%d%s - bad units value (RFC 2911 section "
+"4.1.15)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad resolution value %dx%d%s - cross feed resolution must be "
+"positive (RFC 2911 section 4.1.15)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad resolution value %dx%d%s - feed resolution must be positive (RFC "
+"2911 section 4.1.15)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad text value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.1)."
+msgstr ""
+
+#, c-format
+msgid "\"%s\": Bad text value \"%s\" - bad length %d (RFC 2911 section 4.1.1)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad uriScheme value \"%s\" - bad characters (RFC 2911 section 4.1.6)."
+msgstr ""
+
+#, c-format
+msgid ""
+"\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 2911 section 4.1.6)."
 msgstr ""
 
-#: berkeley/lpq.c:565
 #, c-format
 msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
 msgstr ""
 
-#: systemv/lpstat.c:750
+#, c-format
+msgid "%d x %d mm"
+msgstr ""
+
+#, c-format
+msgid "%g x %g"
+msgstr ""
+
+#, c-format
+msgid "%s (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s (%s, %s)"
+msgstr ""
+
+#, c-format
+msgid "%s (Borderless)"
+msgstr ""
+
+#, c-format
+msgid "%s (Borderless, %s)"
+msgstr ""
+
+#, c-format
+msgid "%s (Borderless, %s, %s)"
+msgstr ""
+
 #, c-format
 msgid "%s accepting requests since %s"
 msgstr ""
 
-#: scheduler/ipp.c:10045
 #, c-format
 msgid "%s cannot be changed."
 msgstr "%s nelze změnit."
 
-#: berkeley/lpc.c:189
 #, c-format
 msgid "%s is not implemented by the CUPS version of lpc."
 msgstr ""
 
-#: berkeley/lpq.c:651
 #, c-format
 msgid "%s is not ready"
 msgstr ""
 
-#: berkeley/lpq.c:644
 #, c-format
 msgid "%s is ready"
 msgstr ""
 
-#: berkeley/lpq.c:647
 #, c-format
 msgid "%s is ready and printing"
 msgstr ""
 
-#: filter/rastertoepson.c:985 filter/rastertohp.c:711
-#: filter/rastertolabel.c:1134
 #, c-format
 msgid "%s job-id user title copies options [file]"
 msgstr ""
 
-#: systemv/lpstat.c:754
 #, c-format
 msgid "%s not accepting requests since %s -"
 msgstr ""
 
-#: scheduler/ipp.c:691
 #, c-format
 msgid "%s not supported."
 msgstr ""
 
-#: systemv/lpstat.c:765
 #, c-format
 msgid "%s/%s accepting requests since %s"
 msgstr ""
 
-#: systemv/lpstat.c:770
 #, c-format
 msgid "%s/%s not accepting requests since %s -"
 msgstr ""
 
-#: berkeley/lpq.c:552
 #, c-format
 msgid "%s: %-33.33s [job %d localhost]"
 msgstr ""
 
 #. TRANSLATORS: Message is "subject: error"
-#: cups/langprintf.c:86 scheduler/cupsfilter.c:714 systemv/lpadmin.c:805
-#: systemv/lpadmin.c:856 systemv/lpadmin.c:906 systemv/lpadmin.c:962
-#: systemv/lpadmin.c:1060 systemv/lpadmin.c:1112 systemv/lpadmin.c:1168
-#: systemv/lpadmin.c:1478
 #, c-format
 msgid "%s: %s"
 msgstr ""
 
-#: systemv/cancel.c:294 systemv/cancel.c:357
 #, c-format
 msgid "%s: %s failed: %s"
 msgstr ""
 
-#: systemv/cupsaccept.c:68
+#, c-format
+msgid "%s: Bad version %s for \"-V\"."
+msgstr ""
+
 #, c-format
 msgid "%s: Don't know what to do."
 msgstr ""
 
-#: berkeley/lpq.c:236 berkeley/lpr.c:344 systemv/lp.c:584
 #, c-format
-msgid "%s: Error - %s environment variable names non-existent destination \"%s\"."
+msgid ""
+"%s: Error - %s environment variable names non-existent destination \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "%s: Error - add '/version=1.1' to server name."
 msgstr ""
 
-#: systemv/lp.c:231
 #, c-format
 msgid "%s: Error - bad job ID."
 msgstr ""
 
-#: systemv/lp.c:219
 #, c-format
 msgid "%s: Error - cannot print files and alter jobs simultaneously."
 msgstr ""
 
-#: systemv/lp.c:505
 #, c-format
 msgid "%s: Error - cannot print from stdin if files or a job ID are provided."
 msgstr ""
 
-#: systemv/lp.c:461
 #, c-format
 msgid "%s: Error - expected character set after \"-S\" option."
 msgstr ""
 
-#: systemv/lp.c:480
 #, c-format
 msgid "%s: Error - expected content type after \"-T\" option."
 msgstr ""
 
-#: berkeley/lpr.c:240
 #, c-format
 msgid "%s: Error - expected copies after \"-#\" option."
 msgstr ""
 
-#: systemv/lp.c:264
 #, c-format
 msgid "%s: Error - expected copies after \"-n\" option."
 msgstr ""
 
-#: berkeley/lpr.c:209
 #, c-format
 msgid "%s: Error - expected destination after \"-P\" option."
 msgstr ""
 
-#: systemv/lpstat.c:231
-#, c-format
-msgid "%s: Error - expected destination after \"-b\" option."
-msgstr ""
-
-#: systemv/lp.c:138
 #, c-format
 msgid "%s: Error - expected destination after \"-d\" option."
 msgstr ""
 
-#: systemv/lp.c:168
 #, c-format
 msgid "%s: Error - expected form after \"-f\" option."
 msgstr ""
 
-#: systemv/lp.c:391
 #, c-format
 msgid "%s: Error - expected hold name after \"-H\" option."
 msgstr ""
 
-#: berkeley/lpr.c:103
 #, c-format
 msgid "%s: Error - expected hostname after \"-H\" option."
 msgstr ""
 
-#: berkeley/lpq.c:180 berkeley/lprm.c:123 systemv/cancel.c:124
-#: systemv/cupsaccept.c:123 systemv/lp.c:189 systemv/lpstat.c:291
 #, c-format
 msgid "%s: Error - expected hostname after \"-h\" option."
 msgstr ""
 
-#: systemv/lp.c:371
 #, c-format
 msgid "%s: Error - expected mode list after \"-y\" option."
 msgstr ""
 
-#: berkeley/lpr.c:263
 #, c-format
 msgid "%s: Error - expected name after \"-%c\" option."
 msgstr ""
 
-#: berkeley/lpr.c:153 systemv/lp.c:288
 #, c-format
 msgid "%s: Error - expected option=value after \"-o\" option."
 msgstr ""
 
-#: systemv/lp.c:441
 #, c-format
 msgid "%s: Error - expected page list after \"-P\" option."
 msgstr ""
 
-#: systemv/lp.c:308
 #, c-format
 msgid "%s: Error - expected priority after \"-%c\" option."
 msgstr ""
 
-#: systemv/cupsaccept.c:141
 #, c-format
 msgid "%s: Error - expected reason text after \"-r\" option."
 msgstr ""
 
-#: systemv/lp.c:354
 #, c-format
 msgid "%s: Error - expected title after \"-t\" option."
 msgstr ""
 
-#: berkeley/lpq.c:111 berkeley/lpr.c:84 berkeley/lprm.c:104
-#: systemv/cancel.c:94 systemv/cupsaccept.c:101 systemv/lp.c:116
-#: systemv/lpadmin.c:438 systemv/lpstat.c:137
 #, c-format
 msgid "%s: Error - expected username after \"-U\" option."
 msgstr ""
 
-#: systemv/cancel.c:145
 #, c-format
 msgid "%s: Error - expected username after \"-u\" option."
 msgstr ""
 
-#: berkeley/lpr.c:125
 #, c-format
 msgid "%s: Error - expected value after \"-%c\" option."
 msgstr ""
 
-#: systemv/lpstat.c:157 systemv/lpstat.c:171
 #, c-format
-msgid "%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" option."
+msgid ""
+"%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" "
+"option."
 msgstr ""
 
-#: berkeley/lpq.c:241 berkeley/lpr.c:349 systemv/lp.c:589
 #, c-format
 msgid "%s: Error - no default destination available."
 msgstr ""
 
-#: systemv/lp.c:330
 #, c-format
 msgid "%s: Error - priority must be between 1 and 100."
 msgstr ""
 
-#: berkeley/lpr.c:352 systemv/lp.c:592
 #, c-format
 msgid "%s: Error - scheduler not responding."
 msgstr ""
 
-#: berkeley/lpr.c:305 systemv/lp.c:537
 #, c-format
 msgid "%s: Error - too many files - \"%s\"."
 msgstr ""
 
-#: berkeley/lpr.c:287 systemv/lp.c:520
 #, c-format
 msgid "%s: Error - unable to access \"%s\" - %s"
 msgstr ""
 
-#: berkeley/lpr.c:395 systemv/lp.c:623
 #, c-format
 msgid "%s: Error - unable to queue from stdin - %s."
 msgstr ""
 
-#: berkeley/lprm.c:87 berkeley/lprm.c:172 systemv/cancel.c:214
 #, c-format
 msgid "%s: Error - unknown destination \"%s\"."
 msgstr ""
 
-#: berkeley/lpq.c:150
 #, c-format
 msgid "%s: Error - unknown destination \"%s/%s\"."
 msgstr ""
 
-#: berkeley/lpr.c:274 berkeley/lprm.c:139 systemv/cancel.c:156
-#: systemv/cupsaccept.c:164 systemv/lp.c:496 systemv/lpstat.c:452
 #, c-format
 msgid "%s: Error - unknown option \"%c\"."
 msgstr ""
 
-#: systemv/cupsaccept.c:157
 #, c-format
 msgid "%s: Error - unknown option \"%s\"."
 msgstr ""
 
-#: systemv/lp.c:208
 #, c-format
 msgid "%s: Expected job ID after \"-i\" option."
 msgstr ""
 
-#: systemv/lpstat.c:504 systemv/lpstat.c:543
 #, c-format
 msgid "%s: Invalid destination name in list \"%s\"."
 msgstr ""
 
-#: scheduler/cupsfilter.c:567
 #, c-format
 msgid "%s: Invalid filter string \"%s\"."
 msgstr ""
 
-#: systemv/lp.c:418
+#, c-format
+msgid "%s: Missing filename for \"-P\"."
+msgstr ""
+
+#, c-format
+msgid "%s: Missing timeout for \"-T\"."
+msgstr ""
+
+#, c-format
+msgid "%s: Missing version for \"-V\"."
+msgstr ""
+
 #, c-format
 msgid "%s: Need job ID (\"-i jobid\") before \"-H restart\"."
 msgstr ""
 
-#: scheduler/cupsfilter.c:458
 #, c-format
 msgid "%s: No filter to convert from %s/%s to %s/%s."
 msgstr ""
 
-#: systemv/cupsaccept.c:198
 #, c-format
 msgid "%s: Operation failed: %s"
 msgstr ""
 
-#: berkeley/lpq.c:97 berkeley/lpr.c:70 berkeley/lprm.c:67 systemv/cancel.c:81
-#: systemv/cupsaccept.c:88 systemv/cupsaddsmb.c:86 systemv/lp.c:102
-#: systemv/lpadmin.c:239 systemv/lpinfo.c:88 systemv/lpmove.c:73
-#: systemv/lpstat.c:102 test/ipptool.c:304 test/ipptool.c:321
 #, c-format
 msgid "%s: Sorry, no encryption support."
 msgstr ""
 
-#: berkeley/lpq.c:295 scheduler/cupsfilter.c:1221 systemv/cancel.c:237
-#: systemv/cupsaddsmb.c:144 systemv/cupsaddsmb.c:171
 #, c-format
 msgid "%s: Unable to connect to server."
 msgstr ""
 
-#: systemv/cancel.c:317
 #, c-format
 msgid "%s: Unable to contact server."
 msgstr ""
 
-#: scheduler/cupsfilter.c:424
 #, c-format
 msgid "%s: Unable to determine MIME type of \"%s\"."
 msgstr ""
 
-#: ppdc/ppdmerge.cxx:96
+#, c-format
+msgid "%s: Unable to open \"%s\": %s"
+msgstr ""
+
 #, c-format
 msgid "%s: Unable to open %s: %s"
 msgstr ""
 
-#: scheduler/cupsfilter.c:662 ppdc/ppdmerge.cxx:112
 #, c-format
 msgid "%s: Unable to open PPD file: %s on line %d."
 msgstr ""
 
-#: scheduler/cupsfilter.c:392
 #, c-format
 msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"."
 msgstr ""
 
-#: berkeley/lpq.c:153 systemv/lpstat.c:558
 #, c-format
 msgid "%s: Unknown destination \"%s\"."
 msgstr ""
 
-#: scheduler/cupsfilter.c:435
 #, c-format
 msgid "%s: Unknown destination MIME type %s/%s."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1426
 #, c-format
 msgid "%s: Unknown option \"%c\"."
 msgstr ""
 
-#: scheduler/cupsfilter.c:416
+#, c-format
+msgid "%s: Unknown option \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "%s: Unknown option \"-%c\"."
+msgstr ""
+
 #, c-format
 msgid "%s: Unknown source MIME type %s/%s."
 msgstr ""
 
-#: berkeley/lpr.c:139
 #, c-format
-msgid "%s: Warning - \"%c\" format modifier not supported - output may not be correct."
+msgid ""
+"%s: Warning - \"%c\" format modifier not supported - output may not be "
+"correct."
 msgstr ""
 
-#: systemv/lp.c:468
 #, c-format
 msgid "%s: Warning - character set option ignored."
 msgstr ""
 
-#: systemv/lp.c:487
 #, c-format
 msgid "%s: Warning - content type option ignored."
 msgstr ""
 
-#: systemv/lp.c:175
 #, c-format
 msgid "%s: Warning - form option ignored."
 msgstr ""
 
-#: systemv/lp.c:378
 #, c-format
 msgid "%s: Warning - mode option ignored."
 msgstr ""
 
-#: ppdc/sample.c:310
 msgid "-1"
 msgstr "-1"
 
-#: ppdc/sample.c:301
 msgid "-10"
 msgstr "-10"
 
-#: ppdc/sample.c:393
 msgid "-100"
 msgstr "-100"
 
-#: ppdc/sample.c:392
 msgid "-105"
 msgstr "-105"
 
-#: ppdc/sample.c:300
 msgid "-11"
 msgstr "-11"
 
-#: ppdc/sample.c:391
 msgid "-110"
 msgstr "-110"
 
-#: ppdc/sample.c:390
 msgid "-115"
 msgstr "-115"
 
-#: ppdc/sample.c:299
 msgid "-12"
 msgstr "-12"
 
-#: ppdc/sample.c:389
 msgid "-120"
 msgstr "-120"
 
-#: ppdc/sample.c:298
 msgid "-13"
 msgstr "-13"
 
-#: ppdc/sample.c:297
 msgid "-14"
 msgstr "-14"
 
-#: ppdc/sample.c:296
 msgid "-15"
 msgstr "-15"
 
-#: ppdc/sample.c:309
 msgid "-2"
 msgstr "-2"
 
-#: ppdc/sample.c:409
 msgid "-20"
 msgstr "-20"
 
-#: ppdc/sample.c:408
 msgid "-25"
 msgstr "-25"
 
-#: ppdc/sample.c:308
 msgid "-3"
 msgstr "-3"
 
-#: ppdc/sample.c:407
 msgid "-30"
 msgstr "-30"
 
-#: ppdc/sample.c:406
 msgid "-35"
 msgstr "-35"
 
-#: ppdc/sample.c:307
 msgid "-4"
 msgstr "-4"
 
-#: ppdc/sample.c:405
 msgid "-40"
 msgstr "-40"
 
-#: ppdc/sample.c:404
 msgid "-45"
 msgstr "-45"
 
-#: ppdc/sample.c:306
 msgid "-5"
 msgstr "-5"
 
-#: ppdc/sample.c:403
 msgid "-50"
 msgstr "-50"
 
-#: ppdc/sample.c:402
 msgid "-55"
 msgstr "-55"
 
-#: ppdc/sample.c:305
 msgid "-6"
 msgstr "-6"
 
-#: ppdc/sample.c:401
 msgid "-60"
 msgstr "-60"
 
-#: ppdc/sample.c:400
 msgid "-65"
 msgstr "-65"
 
-#: ppdc/sample.c:304
 msgid "-7"
 msgstr "-7"
 
-#: ppdc/sample.c:399
 msgid "-70"
 msgstr "-70"
 
-#: ppdc/sample.c:398
 msgid "-75"
 msgstr "-75"
 
-#: ppdc/sample.c:303
 msgid "-8"
 msgstr "-8"
 
-#: ppdc/sample.c:397
 msgid "-80"
 msgstr "-80"
 
-#: ppdc/sample.c:396
 msgid "-85"
 msgstr "-85"
 
-#: ppdc/sample.c:302
 msgid "-9"
 msgstr "-9"
 
-#: ppdc/sample.c:395
 msgid "-90"
 msgstr "-90"
 
-#: ppdc/sample.c:394
 msgid "-95"
 msgstr "-95"
 
-#: ppdc/sample.c:311
 msgid "0"
 msgstr "0"
 
-#: ppdc/sample.c:312
 msgid "1"
 msgstr "1"
 
-#: ppdc/sample.c:384
 msgid "1 inch/sec."
 msgstr "1 palec/sek."
 
-#: ppdc/sample.c:172
 msgid "1.25x0.25\""
 msgstr "1.25x0.25\""
 
-#: ppdc/sample.c:173
 msgid "1.25x2.25\""
 msgstr "1.25x2.25\""
 
-#: ppdc/sample.c:432
 msgid "1.5 inch/sec."
 msgstr "1.5 palce/sek."
 
-#: ppdc/sample.c:174
 msgid "1.50x0.25\""
 msgstr "1.50x0.25\""
 
-#: ppdc/sample.c:175
 msgid "1.50x0.50\""
 msgstr "1.50x0.50\""
 
-#: ppdc/sample.c:176
 msgid "1.50x1.00\""
 msgstr "1.50x1.00\""
 
-#: ppdc/sample.c:177
 msgid "1.50x2.00\""
 msgstr "1.50x2.00\""
 
-#: ppdc/sample.c:321
 msgid "10"
 msgstr "10"
 
-#: ppdc/sample.c:443
 msgid "10 inches/sec."
 msgstr "10 palců/sek."
 
-#: ppdc/sample.c:6
 msgid "10 x 11"
 msgstr ""
 
-#: ppdc/sample.c:7
 msgid "10 x 13"
 msgstr ""
 
-#: ppdc/sample.c:8
 msgid "10 x 14"
 msgstr ""
 
-#: ppdc/sample.c:423
 msgid "100"
 msgstr "100"
 
-#: ppdc/sample.c:334
 msgid "100 mm/sec."
 msgstr "100 mm/sek."
 
-#: ppdc/sample.c:424
 msgid "105"
 msgstr "105"
 
-#: ppdc/sample.c:322
 msgid "11"
 msgstr "11"
 
-#: ppdc/sample.c:444
 msgid "11 inches/sec."
 msgstr "11 palců/sek."
 
-#: ppdc/sample.c:425
 msgid "110"
 msgstr "110"
 
-#: ppdc/sample.c:426
 msgid "115"
 msgstr "115"
 
-#: ppdc/sample.c:323
 msgid "12"
 msgstr "12"
 
-#: ppdc/sample.c:445
 msgid "12 inches/sec."
 msgstr "12 palců/sek."
 
-#: ppdc/sample.c:9
 msgid "12 x 11"
 msgstr ""
 
-#: ppdc/sample.c:427
 msgid "120"
 msgstr "120"
 
-#: ppdc/sample.c:335
 msgid "120 mm/sec."
 msgstr "120 mm/sek."
 
-#: ppdc/sample.c:243
 msgid "120x60dpi"
 msgstr "120x60 dpi"
 
-#: ppdc/sample.c:249
 msgid "120x72dpi"
 msgstr "120x72 dpi"
 
-#: ppdc/sample.c:324
 msgid "13"
 msgstr "13"
 
-#: ppdc/sample.c:232
 msgid "136dpi"
 msgstr "136 dpi"
 
-#: ppdc/sample.c:325
 msgid "14"
 msgstr "14"
 
-#: ppdc/sample.c:326
 msgid "15"
 msgstr "15"
 
-#: ppdc/sample.c:328
 msgid "15 mm/sec."
 msgstr "15 mm/sek."
 
-#: ppdc/sample.c:10
 msgid "15 x 11"
 msgstr ""
 
-#: ppdc/sample.c:336
 msgid "150 mm/sec."
 msgstr "150 mm/sek."
 
-#: ppdc/sample.c:283
 msgid "150dpi"
 msgstr "150 dpi"
 
-#: ppdc/sample.c:368
 msgid "16"
 msgstr "16"
 
-#: ppdc/sample.c:369
 msgid "17"
 msgstr "17"
 
-#: ppdc/sample.c:370
 msgid "18"
 msgstr "18"
 
-#: ppdc/sample.c:244
 msgid "180dpi"
 msgstr "180 dpi"
 
-#: ppdc/sample.c:371
 msgid "19"
 msgstr "19"
 
-#: ppdc/sample.c:313
 msgid "2"
 msgstr "2"
 
-#: ppdc/sample.c:385
 msgid "2 inches/sec."
 msgstr "2 palce/sek."
 
-#: ppdc/sample.c:270
 msgid "2-Sided Printing"
 msgstr "oboustranný tisk"
 
-#: ppdc/sample.c:178
 msgid "2.00x0.37\""
 msgstr "2.00x0.37\""
 
-#: ppdc/sample.c:179
 msgid "2.00x0.50\""
 msgstr "2.00x0.50\""
 
-#: ppdc/sample.c:180
 msgid "2.00x1.00\""
 msgstr "2.00x1.00\""
 
-#: ppdc/sample.c:181
 msgid "2.00x1.25\""
 msgstr "2.00x1.25\""
 
-#: ppdc/sample.c:182
 msgid "2.00x2.00\""
 msgstr "2.00x2.00\""
 
-#: ppdc/sample.c:183
 msgid "2.00x3.00\""
 msgstr "2.00x3.00\""
 
-#: ppdc/sample.c:184
 msgid "2.00x4.00\""
 msgstr "2.00x4.00\""
 
-#: ppdc/sample.c:185
 msgid "2.00x5.50\""
 msgstr "2.00x5.50\""
 
-#: ppdc/sample.c:186
 msgid "2.25x0.50\""
 msgstr "2.25x0.50\""
 
-#: ppdc/sample.c:187
 msgid "2.25x1.25\""
 msgstr "2.25x1.25\""
 
-#: ppdc/sample.c:188
 msgid "2.25x4.00\""
 msgstr "2.25x4.00\""
 
-#: ppdc/sample.c:189
 msgid "2.25x5.50\""
 msgstr "2.25x5.50\""
 
-#: ppdc/sample.c:190
 msgid "2.38x5.50\""
 msgstr "2.38x5.50\""
 
-#: ppdc/sample.c:433
 msgid "2.5 inches/sec."
 msgstr "2.5 palce/sek."
 
-#: ppdc/sample.c:191
 msgid "2.50x1.00\""
 msgstr "2.50x1.00\""
 
-#: ppdc/sample.c:192
 msgid "2.50x2.00\""
 msgstr "2.50x2.00\""
 
-#: ppdc/sample.c:193
 msgid "2.75x1.25\""
 msgstr "2.75x1.25\""
 
-#: ppdc/sample.c:194
 msgid "2.9 x 1\""
 msgstr "2.9 x 1\""
 
-#: ppdc/sample.c:372
 msgid "20"
 msgstr "20"
 
-#: ppdc/sample.c:329
 msgid "20 mm/sec."
 msgstr "20 mm/sek."
 
-#: ppdc/sample.c:337
 msgid "200 mm/sec."
 msgstr "200 mm/sek."
 
-#: ppdc/sample.c:233
 msgid "203dpi"
 msgstr "203 dpi"
 
-#: ppdc/sample.c:373
 msgid "21"
 msgstr "21"
 
-#: ppdc/sample.c:374
 msgid "22"
 msgstr "22"
 
-#: ppdc/sample.c:375
 msgid "23"
 msgstr "23"
 
-#: ppdc/sample.c:376
 msgid "24"
 msgstr "24"
 
-#: ppdc/sample.c:241
 msgid "24-Pin Series"
 msgstr "24 jehličková"
 
-#: ppdc/sample.c:250
 msgid "240x72dpi"
 msgstr "240x72 dpi"
 
-#: ppdc/sample.c:377
 msgid "25"
 msgstr "25"
 
-#: ppdc/sample.c:338
 msgid "250 mm/sec."
 msgstr "250 mm/sek."
 
-#: ppdc/sample.c:378
 msgid "26"
 msgstr "26"
 
-#: ppdc/sample.c:379
 msgid "27"
 msgstr "27"
 
-#: ppdc/sample.c:380
 msgid "28"
 msgstr "28"
 
-#: ppdc/sample.c:381
 msgid "29"
 msgstr "29"
 
-#: ppdc/sample.c:314
 msgid "3"
 msgstr "3"
 
-#: ppdc/sample.c:386
 msgid "3 inches/sec."
 msgstr "3 palce/sek."
 
-#: ppdc/sample.c:3
 msgid "3 x 5"
 msgstr ""
 
-#: ppdc/sample.c:195
 msgid "3.00x1.00\""
 msgstr "3.00x1.00\""
 
-#: ppdc/sample.c:196
 msgid "3.00x1.25\""
 msgstr "3.00x1.25\""
 
-#: ppdc/sample.c:197
 msgid "3.00x2.00\""
 msgstr "3.00x2.00\""
 
-#: ppdc/sample.c:198
 msgid "3.00x3.00\""
 msgstr "3.00x3.00\""
 
-#: ppdc/sample.c:199
 msgid "3.00x5.00\""
 msgstr "3.00x5.00\""
 
-#: ppdc/sample.c:200
 msgid "3.25x2.00\""
 msgstr "3.25x2.00\""
 
-#: ppdc/sample.c:201
 msgid "3.25x5.00\""
 msgstr "3.25x5.00\""
 
-#: ppdc/sample.c:202
 msgid "3.25x5.50\""
 msgstr "3.25x5.50\""
 
-#: ppdc/sample.c:203
 msgid "3.25x5.83\""
 msgstr "3.25x5.83\""
 
-#: ppdc/sample.c:204
 msgid "3.25x7.83\""
 msgstr "3.25x7.83\""
 
-#: ppdc/sample.c:4
 msgid "3.5 x 5"
 msgstr ""
 
-#: ppdc/sample.c:171
 msgid "3.5\" Disk"
 msgstr "3.5\" Disk"
 
-#: ppdc/sample.c:205
 msgid "3.50x1.00\""
 msgstr "3.50x1.00\""
 
-#: ppdc/sample.c:382
 msgid "30"
 msgstr "30"
 
-#: ppdc/sample.c:330
 msgid "30 mm/sec."
 msgstr "30 mm/sek."
 
-#: ppdc/sample.c:339
 msgid "300 mm/sec."
 msgstr "300 mm/sek."
 
-#: ppdc/sample.c:234
 msgid "300dpi"
 msgstr "300 dpi"
 
-#: ppdc/sample.c:410
 msgid "35"
 msgstr "35"
 
-#: ppdc/sample.c:246
 msgid "360dpi"
 msgstr "360 dpi"
 
-#: ppdc/sample.c:245
 msgid "360x180dpi"
 msgstr "360x180 dpi"
 
-#: ppdc/sample.c:315
 msgid "4"
 msgstr "4"
 
-#: ppdc/sample.c:387
 msgid "4 inches/sec."
 msgstr "4 palce/sek."
 
-#: ppdc/sample.c:206
 msgid "4.00x1.00\""
 msgstr "4.00x1.00\""
 
-#: ppdc/sample.c:214
 msgid "4.00x13.00\""
 msgstr "4.00x13.00\""
 
-#: ppdc/sample.c:207
 msgid "4.00x2.00\""
 msgstr "4.00x2.00\""
 
-#: ppdc/sample.c:208
 msgid "4.00x2.50\""
 msgstr "4.00x2.50\""
 
-#: ppdc/sample.c:209
 msgid "4.00x3.00\""
 msgstr "4.00x3.00\""
 
-#: ppdc/sample.c:210
 msgid "4.00x4.00\""
 msgstr "4.00x4.00\""
 
-#: ppdc/sample.c:211
 msgid "4.00x5.00\""
 msgstr "4.00x5.00\""
 
-#: ppdc/sample.c:212
 msgid "4.00x6.00\""
 msgstr "4.00x6.00\""
 
-#: ppdc/sample.c:213
 msgid "4.00x6.50\""
 msgstr "4.00x6.50\""
 
-#: ppdc/sample.c:411
 msgid "40"
 msgstr "40"
 
-#: ppdc/sample.c:331
 msgid "40 mm/sec."
 msgstr "40 mm/sek."
 
-#: ppdc/sample.c:412
 msgid "45"
 msgstr "45"
 
-#: ppdc/sample.c:316
 msgid "5"
 msgstr "5"
 
-#: ppdc/sample.c:437
 msgid "5 inches/sec."
 msgstr "5 palců/sek."
 
-#: ppdc/sample.c:5
 msgid "5 x 7"
 msgstr ""
 
-#: ppdc/sample.c:413
 msgid "50"
 msgstr "50"
 
-#: ppdc/sample.c:414
 msgid "55"
 msgstr "55"
 
-#: ppdc/sample.c:317
 msgid "6"
 msgstr "6"
 
-#: ppdc/sample.c:438
 msgid "6 inches/sec."
 msgstr "6 palců/sek."
 
-#: ppdc/sample.c:215
 msgid "6.00x1.00\""
 msgstr "6.00x1.00\""
 
-#: ppdc/sample.c:216
 msgid "6.00x2.00\""
 msgstr "6.00x2.00\""
 
-#: ppdc/sample.c:217
 msgid "6.00x3.00\""
 msgstr "6.00x3.00\""
 
-#: ppdc/sample.c:218
 msgid "6.00x4.00\""
 msgstr "6.00x4.00\""
 
-#: ppdc/sample.c:219
 msgid "6.00x5.00\""
 msgstr "6.00x5.00\""
 
-#: ppdc/sample.c:220
 msgid "6.00x6.00\""
 msgstr "6.00x6.00\""
 
-#: ppdc/sample.c:221
 msgid "6.00x6.50\""
 msgstr "6.00x6.50\""
 
-#: ppdc/sample.c:415
 msgid "60"
 msgstr "60"
 
-#: ppdc/sample.c:332
 msgid "60 mm/sec."
 msgstr "60 mm/sek."
 
-#: ppdc/sample.c:261
 msgid "600dpi"
 msgstr "600 dpi"
 
-#: ppdc/sample.c:242
 msgid "60dpi"
 msgstr "60 dpi"
 
-#: ppdc/sample.c:248
 msgid "60x72dpi"
 msgstr ""
 
-#: ppdc/sample.c:416
 msgid "65"
 msgstr "65"
 
-#: ppdc/sample.c:318
 msgid "7"
 msgstr "7"
 
-#: ppdc/sample.c:440
 msgid "7 inches/sec."
 msgstr "7 palců/sek."
 
-#: ppdc/sample.c:11
 msgid "7 x 9"
 msgstr ""
 
-#: ppdc/sample.c:417
 msgid "70"
 msgstr "70"
 
-#: ppdc/sample.c:252
 msgid "720dpi"
 msgstr "720 dpi"
 
-#: ppdc/sample.c:418
 msgid "75"
 msgstr "75"
 
-#: ppdc/sample.c:319
 msgid "8"
 msgstr "8"
 
-#: ppdc/sample.c:441
 msgid "8 inches/sec."
 msgstr "8 palců/sek."
 
-#: ppdc/sample.c:12
 msgid "8 x 10"
 msgstr ""
 
-#: ppdc/sample.c:222
 msgid "8.00x1.00\""
 msgstr "8.00x1.00\""
 
-#: ppdc/sample.c:223
 msgid "8.00x2.00\""
 msgstr "8.00x2.00\""
 
-#: ppdc/sample.c:224
 msgid "8.00x3.00\""
 msgstr "8.00x3.00\""
 
-#: ppdc/sample.c:225
 msgid "8.00x4.00\""
 msgstr "8.00x4.00\""
 
-#: ppdc/sample.c:226
 msgid "8.00x5.00\""
 msgstr "8.00x5.00\""
 
-#: ppdc/sample.c:227
 msgid "8.00x6.00\""
 msgstr "8.00x6.00\""
 
-#: ppdc/sample.c:228
 msgid "8.00x6.50\""
 msgstr "8.00x6.50\""
 
-#: ppdc/sample.c:419
 msgid "80"
 msgstr "80"
 
-#: ppdc/sample.c:333
 msgid "80 mm/sec."
 msgstr "80 mm/sek."
 
-#: ppdc/sample.c:420
 msgid "85"
 msgstr "85"
 
-#: ppdc/sample.c:320
 msgid "9"
 msgstr "9"
 
-#: ppdc/sample.c:442
 msgid "9 inches/sec."
 msgstr "9 palců/sek."
 
-#: ppdc/sample.c:13
 msgid "9 x 11"
 msgstr ""
 
-#: ppdc/sample.c:14
 msgid "9 x 12"
 msgstr ""
 
-#: ppdc/sample.c:247
 msgid "9-Pin Series"
 msgstr "9 jehličková"
 
-#: ppdc/sample.c:421
 msgid "90"
 msgstr "90"
 
-#: ppdc/sample.c:422
 msgid "95"
 msgstr "95"
 
-#: berkeley/lpc.c:213
 msgid "?Invalid help command unknown."
 msgstr ""
 
-#: cgi-bin/admin.c:2368
 msgid "A Samba password is required to export printer drivers"
 msgstr ""
 
-#: cgi-bin/admin.c:2364
 msgid "A Samba username is required to export printer drivers"
 msgstr ""
 
-#: scheduler/ipp.c:2283
 #, c-format
 msgid "A class named \"%s\" already exists."
 msgstr ""
 
-#: scheduler/ipp.c:1004
 #, c-format
 msgid "A printer named \"%s\" already exists."
 msgstr ""
 
-#: ppdc/sample.c:15
 msgid "A0"
 msgstr "A0"
 
-#: ppdc/sample.c:16
 msgid "A0 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:17
 msgid "A1"
 msgstr "A1"
 
-#: ppdc/sample.c:18
 msgid "A1 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:37
 msgid "A10"
 msgstr "A10"
 
-#: ppdc/sample.c:19
 msgid "A2"
 msgstr "A2"
 
-#: ppdc/sample.c:20
 msgid "A2 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:21
 msgid "A3"
 msgstr "A3"
 
-#: ppdc/sample.c:22
 msgid "A3 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:23
 msgid "A3 Oversize"
 msgstr ""
 
-#: ppdc/sample.c:24
 msgid "A3 Oversize Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:25
 msgid "A4"
 msgstr "A4"
 
-#: ppdc/sample.c:27
 msgid "A4 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:26
 msgid "A4 Oversize"
 msgstr ""
 
-#: ppdc/sample.c:28
 msgid "A4 Small"
 msgstr ""
 
-#: ppdc/sample.c:29
 msgid "A5"
 msgstr "A5"
 
-#: ppdc/sample.c:31
 msgid "A5 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:30
 msgid "A5 Oversize"
 msgstr ""
 
-#: ppdc/sample.c:32
 msgid "A6"
 msgstr "A6"
 
-#: ppdc/sample.c:33
 msgid "A6 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:34
 msgid "A7"
 msgstr "A7"
 
-#: ppdc/sample.c:35
 msgid "A8"
 msgstr "A8"
 
-#: ppdc/sample.c:36
 msgid "A9"
 msgstr "A9"
 
-#: ppdc/sample.c:38
 msgid "ANSI A"
 msgstr "ANSI A"
 
-#: ppdc/sample.c:39
 msgid "ANSI B"
 msgstr "ANSI B"
 
-#: ppdc/sample.c:40
 msgid "ANSI C"
 msgstr "ANSI C"
 
-#: ppdc/sample.c:41
 msgid "ANSI D"
 msgstr "ANSI D"
 
-#: ppdc/sample.c:42
 msgid "ANSI E"
 msgstr "ANSI E"
 
-#: ppdc/sample.c:47
 msgid "ARCH C"
 msgstr "ARCH C"
 
-#: ppdc/sample.c:48
 msgid "ARCH C Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:49
 msgid "ARCH D"
 msgstr "ARCH D"
 
-#: ppdc/sample.c:50
 msgid "ARCH D Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:51
 msgid "ARCH E"
 msgstr "ARCH E"
 
-#: ppdc/sample.c:52
 msgid "ARCH E Long Edge"
 msgstr ""
 
-#: cgi-bin/classes.c:169 cgi-bin/printers.c:172
 msgid "Accept Jobs"
 msgstr "Příjem úloh"
 
-#: cups/http-support.c:1284
 msgid "Accepted"
 msgstr "Přijatý"
 
-#: cgi-bin/admin.c:570
 msgid "Add Class"
 msgstr "Přidat třídu"
 
-#: cgi-bin/admin.c:882
 msgid "Add Printer"
 msgstr "Přidat tiskárnu"
 
-#: cgi-bin/admin.c:444 cgi-bin/admin.c:477 cgi-bin/admin.c:525
-#: cgi-bin/admin.c:535
 msgid "Add RSS Subscription"
 msgstr "Přidat RSS předplatné"
 
-#: ppdc/sample.c:163
 msgid "Address"
 msgstr "Adresa"
 
-#: cgi-bin/admin.c:210 cgi-bin/admin.c:284 cgi-bin/admin.c:2745
 msgid "Administration"
 msgstr "Administrace"
 
-#: ppdc/sample.c:429
 msgid "Always"
 msgstr "Vždy"
 
-#: backend/socket.c:129
 msgid "AppSocket/HP JetDirect"
 msgstr "AppSocket/HP JetDirect"
 
-#: ppdc/sample.c:450
 msgid "Applicator"
 msgstr "Aplikátor"
 
-#: scheduler/ipp.c:1079
 #, c-format
 msgid "Attempt to set %s printer-state to bad value %d."
 msgstr ""
 
-#: scheduler/ipp.c:325
 #, c-format
 msgid "Attribute groups are out of order (%x < %x)."
 msgstr ""
 
-#: ppdc/sample.c:126
 msgid "B0"
 msgstr "B0"
 
-#: ppdc/sample.c:127
 msgid "B1"
 msgstr "B1"
 
-#: ppdc/sample.c:137
 msgid "B10"
 msgstr "B10"
 
-#: ppdc/sample.c:128
 msgid "B2"
 msgstr "B2"
 
-#: ppdc/sample.c:129
 msgid "B3"
 msgstr "B3"
 
-#: ppdc/sample.c:130
 msgid "B4"
 msgstr "B4"
 
-#: ppdc/sample.c:131
 msgid "B5"
 msgstr "B5"
 
-#: ppdc/sample.c:132
 msgid "B5 Oversize"
 msgstr ""
 
-#: ppdc/sample.c:133
 msgid "B6"
 msgstr "B6"
 
-#: ppdc/sample.c:134
 msgid "B7"
 msgstr "B7"
 
-#: ppdc/sample.c:135
 msgid "B8"
 msgstr "B8"
 
-#: ppdc/sample.c:136
 msgid "B9"
 msgstr "B9"
 
-#: cups/dest.c:1680
+#, c-format
+msgid "Bad 'document-format' value \"%s\"."
+msgstr ""
+
 msgid "Bad NULL dests pointer"
 msgstr "Neplatný ukazatel NULL"
 
-#: cups/ppd.c:345
 msgid "Bad OpenGroup"
 msgstr "Chybný OpenGroup"
 
-#: cups/ppd.c:347
 msgid "Bad OpenUI/JCLOpenUI"
 msgstr "Chybný OpenUI/JCLOpenUI"
 
-#: cups/ppd.c:349
 msgid "Bad OrderDependency"
 msgstr "Chybný OrderDependency"
 
-#: cups/ppd-cache.c:148 cups/ppd-cache.c:195 cups/ppd-cache.c:233
-#: cups/ppd-cache.c:239 cups/ppd-cache.c:255 cups/ppd-cache.c:271
-#: cups/ppd-cache.c:280 cups/ppd-cache.c:288 cups/ppd-cache.c:305
-#: cups/ppd-cache.c:313 cups/ppd-cache.c:328 cups/ppd-cache.c:336
-#: cups/ppd-cache.c:354 cups/ppd-cache.c:366 cups/ppd-cache.c:381
-#: cups/ppd-cache.c:393 cups/ppd-cache.c:415 cups/ppd-cache.c:423
-#: cups/ppd-cache.c:441 cups/ppd-cache.c:449 cups/ppd-cache.c:464
-#: cups/ppd-cache.c:472 cups/ppd-cache.c:490 cups/ppd-cache.c:498
-#: cups/ppd-cache.c:525 cups/ppd-cache.c:571 cups/ppd-cache.c:579
-#: cups/ppd-cache.c:587
 msgid "Bad PPD cache file."
 msgstr ""
 
-#: cups/http-support.c:1299
 msgid "Bad Request"
 msgstr "Chybný požadavek"
 
-#: cups/snmp.c:1002
 msgid "Bad SNMP version number"
 msgstr "Chybná verze SNMP"
 
-#: cups/ppd.c:350
 msgid "Bad UIConstraints"
 msgstr "Chybný UIConstraints"
 
-#: scheduler/ipp.c:1380
+msgid "Bad arguments to function"
+msgstr ""
+
 #, c-format
 msgid "Bad copies value %d."
 msgstr "Chybný počet kopií %d."
 
-#: cups/ppd.c:358
 msgid "Bad custom parameter"
 msgstr "Chybný uživatelský parametr"
 
-#: cups/http-support.c:1451 scheduler/ipp.c:2350
 #, c-format
 msgid "Bad device-uri \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:2391
 #, c-format
 msgid "Bad device-uri scheme \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:8224 scheduler/ipp.c:8240 scheduler/ipp.c:9454
-#: scheduler/ipp.c:10968
 #, c-format
 msgid "Bad document-format \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:9470
 #, c-format
 msgid "Bad document-format-default \"%s\"."
 msgstr ""
 
-#: cups/util.c:929
 msgid "Bad filename buffer"
 msgstr ""
 
-#: scheduler/ipp.c:10060
+msgid "Bad hostname/address in URI"
+msgstr ""
+
+#, c-format
+msgid "Bad job-name value: %s"
+msgstr ""
+
+msgid "Bad job-name value: Wrong type or count."
+msgstr ""
+
 msgid "Bad job-priority value."
 msgstr ""
 
-#: scheduler/ipp.c:1410
 #, c-format
 msgid "Bad job-sheets value \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:1394
 msgid "Bad job-sheets value type."
 msgstr ""
 
-#: scheduler/ipp.c:10090
 msgid "Bad job-state value."
 msgstr ""
 
-#: scheduler/ipp.c:2974 scheduler/ipp.c:3426 scheduler/ipp.c:6078
-#: scheduler/ipp.c:6225 scheduler/ipp.c:7658 scheduler/ipp.c:7927
-#: scheduler/ipp.c:8775 scheduler/ipp.c:9001 scheduler/ipp.c:9350
-#: scheduler/ipp.c:9953
 #, c-format
 msgid "Bad job-uri \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:2049 scheduler/ipp.c:5622
 #, c-format
 msgid "Bad notify-pull-method \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:2013 scheduler/ipp.c:5586
 #, c-format
 msgid "Bad notify-recipient-uri \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:1426
 #, c-format
 msgid "Bad number-up value %d."
 msgstr "Chybná hodnota %d."
 
-#: cups/adminutil.c:292
 #, c-format
 msgid "Bad option + choice on line %d."
 msgstr ""
 
-#: scheduler/ipp.c:1443
 #, c-format
 msgid "Bad page-ranges values %d-%d."
 msgstr "Chybný rozsah stránek %d-%d."
 
-#: scheduler/ipp.c:2434
-#, c-format
-msgid "Bad port-monitor \"%s\"."
+msgid "Bad port number in URI"
 msgstr ""
 
-#: cups/dest.c:676 cups/dest.c:1333
-msgid "Bad printer URI."
+#, c-format
+msgid "Bad port-monitor \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:2495
 #, c-format
 msgid "Bad printer-state value %d."
 msgstr ""
 
-#: scheduler/ipp.c:293
+msgid "Bad printer-uri."
+msgstr ""
+
 #, c-format
 msgid "Bad request ID %d."
 msgstr ""
 
-#: scheduler/ipp.c:278
 #, c-format
 msgid "Bad request version number %d.%d."
 msgstr ""
 
-#: cgi-bin/admin.c:1484
+msgid "Bad resource in URI"
+msgstr ""
+
+msgid "Bad scheme in URI"
+msgstr ""
+
 msgid "Bad subscription ID"
 msgstr ""
 
-#: cups/ppd.c:360
+msgid "Bad username in URI"
+msgstr ""
+
 msgid "Bad value string"
 msgstr ""
 
-#: cgi-bin/admin.c:3290 cgi-bin/admin.c:3536
+msgid "Bad/empty URI"
+msgstr ""
+
 msgid "Banners"
 msgstr "Banery"
 
-#: ppdc/sample.c:287
 msgid "Bond Paper"
 msgstr "Kancelářský papír"
 
-#: backend/usb-darwin.c:1846
 #, c-format
 msgid "Boolean expected for waiteof option \"%s\"."
 msgstr ""
 
-#: filter/pstops.c:2057
 msgid "Buffer overflow detected, aborting."
 msgstr ""
 
-#: ppdc/sample.c:254
 msgid "CMYK"
 msgstr "CMYK"
 
-#: ppdc/sample.c:363
 msgid "CPCL Label Printer"
 msgstr "Tiskárna štítků CPCL"
 
-#: cgi-bin/admin.c:1485 cgi-bin/admin.c:1524 cgi-bin/admin.c:1534
+msgid "Cancel Jobs"
+msgstr ""
+
 msgid "Cancel RSS Subscription"
 msgstr "Zrušit RSS předplatné"
 
-#: backend/ipp.c:1921
 msgid "Canceling print job."
 msgstr ""
 
-#: scheduler/ipp.c:2475
 msgid "Cannot share a remote Kerberized printer."
 msgstr ""
 
-#: ppdc/sample.c:279
 msgid "Cassette"
 msgstr ""
 
-#: cgi-bin/admin.c:1655 cgi-bin/admin.c:1797 cgi-bin/admin.c:1810
-#: cgi-bin/admin.c:1821
 msgid "Change Settings"
 msgstr "Změna nastavení"
 
-#: scheduler/ipp.c:2061 scheduler/ipp.c:5634
 #, c-format
 msgid "Character set \"%s\" not supported."
 msgstr ""
 
-#: cgi-bin/classes.c:195 cgi-bin/classes.c:322
 msgid "Classes"
 msgstr "Třídy"
 
-#: cgi-bin/printers.c:182
 msgid "Clean Print Heads"
 msgstr "Vyčištění tiskových hlav"
 
-#: scheduler/ipp.c:3878
 msgid "Close-Job doesn't support the job-uri attribute."
 msgstr ""
 
-#: ppdc/sample.c:282
 msgid "Color"
 msgstr "Barva"
 
-#: ppdc/sample.c:253
 msgid "Color Mode"
 msgstr "Barevný režim"
 
-#: berkeley/lpc.c:204
 msgid ""
 "Commands may be abbreviated.  Commands are:\n"
 "\n"
 "exit    help    quit    status  ?"
 msgstr ""
 
-#: cups/snmp.c:1006
 msgid "Community name uses indefinite length"
 msgstr "\"Community-Name\" má neomezenou délku"
 
-#: backend/ipp.c:786 backend/lpd.c:871 backend/socket.c:395
 msgid "Connected to printer."
 msgstr ""
 
-#: backend/ipp.c:691 backend/lpd.c:694 backend/socket.c:314
 msgid "Connecting to printer."
 msgstr ""
 
-#: cups/http-support.c:1272
 msgid "Continue"
 msgstr "Pokračovat"
 
-#: ppdc/sample.c:365
 msgid "Continuous"
 msgstr "Souvislý"
 
-#: backend/lpd.c:1020 backend/lpd.c:1152
 msgid "Control file sent successfully."
 msgstr ""
 
-#: backend/ipp.c:1233 backend/lpd.c:464
 msgid "Copying print data."
 msgstr ""
 
-#: cups/http-support.c:1281
 msgid "Created"
 msgstr "Vytvořeno"
 
-#: cups/ppd.c:1113 cups/ppd.c:1153 cups/ppd.c:1398 cups/ppd.c:1501
 msgid "Custom"
 msgstr "Uživatelský"
 
-#: ppdc/sample.c:359
 msgid "CustominCutInterval"
 msgstr "CustominCutInterval"
 
-#: ppdc/sample.c:357
 msgid "CustominTearInterval"
 msgstr "CustominTearInterval"
 
-#: ppdc/sample.c:343
 msgid "Cut"
 msgstr "Snížit"
 
-#: ppdc/sample.c:451
 msgid "Cutter"
 msgstr "Výstřižek"
 
-#: ppdc/sample.c:239
 msgid "Dark"
 msgstr "Tmavý"
 
-#: ppdc/sample.c:235
 msgid "Darkness"
 msgstr "Tma"
 
-#: backend/lpd.c:1105
 msgid "Data file sent successfully."
 msgstr ""
 
-#: cgi-bin/admin.c:2094 cgi-bin/admin.c:2105 cgi-bin/admin.c:2150
 msgid "Delete Class"
 msgstr "Výmaz třídy"
 
-#: cgi-bin/admin.c:2179 cgi-bin/admin.c:2190 cgi-bin/admin.c:2235
 msgid "Delete Printer"
 msgstr "Výmaz tiskárny"
 
-#: ppdc/sample.c:281
 msgid "DeskJet Series"
 msgstr "Řada DeskJet"
 
-#: scheduler/ipp.c:1346
 #, c-format
 msgid "Destination \"%s\" is not accepting jobs."
 msgstr "Zařízení \"%s\" nepřijímá úlohy."
 
-#: systemv/lpinfo.c:300
 #, c-format
 msgid ""
 "Device: uri = %s\n"
@@ -3053,934 +2770,722 @@ msgid ""
 "        location = %s"
 msgstr ""
 
-#: ppdc/sample.c:436
 msgid "Direct Thermal Media"
 msgstr "Termální médium"
 
-#: cups/file.c:296
 #, c-format
 msgid "Directory \"%s\" contains a relative path."
 msgstr ""
 
-#: cups/file.c:268
 #, c-format
 msgid "Directory \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
 msgstr ""
 
-#: cups/file.c:285
 #, c-format
 msgid "Directory \"%s\" is a file."
 msgstr ""
 
-#: cups/file.c:256
 #, c-format
 msgid "Directory \"%s\" not available: %s"
 msgstr ""
 
-#: cups/file.c:241
 #, c-format
 msgid "Directory \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
 msgstr ""
 
-#: ppdc/sample.c:345
 msgid "Disabled"
 msgstr "Zakázaný"
 
-#: scheduler/ipp.c:6127
 #, c-format
 msgid "Document #%d does not exist in job #%d."
 msgstr ""
 
-#: ppdc/sample.c:275
 msgid "Duplexer"
 msgstr "Duplexní jednotka"
 
-#: ppdc/sample.c:229
 msgid "Dymo"
 msgstr "Dymo"
 
-#: ppdc/sample.c:431
 msgid "EPL1 Label Printer"
 msgstr "Tiskárna štítků EPL1"
 
-#: ppdc/sample.c:434
 msgid "EPL2 Label Printer"
 msgstr "Tiskárna štítků EPL2"
 
-#: cgi-bin/admin.c:1849 cgi-bin/admin.c:1861 cgi-bin/admin.c:1915
-#: cgi-bin/admin.c:1922 cgi-bin/admin.c:1957 cgi-bin/admin.c:1970
-#: cgi-bin/admin.c:1994 cgi-bin/admin.c:2067
 msgid "Edit Configuration File"
 msgstr "Úprava konfiguračního souboru"
 
-#: cups/adminutil.c:337
 msgid "Empty PPD file."
 msgstr ""
 
+msgid "Encryption is not supported."
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet after the print job.
-#: cgi-bin/admin.c:3561
 msgid "Ending Banner"
 msgstr "Ukončení baneru"
 
-#: ppdc/sample.c:2
 msgid "English"
 msgstr "Čeština"
 
-#: systemv/lppasswd.c:193
-msgid "Enter old password:"
-msgstr "Zadejte původní heslo:"
-
-#: systemv/lppasswd.c:224
-msgid "Enter password again:"
-msgstr "Opakujte heslo:"
-
-#: systemv/lppasswd.c:212
-msgid "Enter password:"
-msgstr "Zadejte heslo:"
-
-#: scheduler/client.c:2427
-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 "Zadejte své uživatelské jméno a heslo, nebo uživatelské jméno a heslo 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 ""
+"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 ""
+"Zadejte své uživatelské jméno a heslo, nebo uživatelské jméno a heslo "
+"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."
 
-#: ppdc/sample.c:73
 msgid "Envelope #10 "
 msgstr ""
 
-#: ppdc/sample.c:74
 msgid "Envelope #11"
 msgstr ""
 
-#: ppdc/sample.c:75
 msgid "Envelope #12"
 msgstr ""
 
-#: ppdc/sample.c:76
 msgid "Envelope #14"
 msgstr ""
 
-#: ppdc/sample.c:77
 msgid "Envelope #9"
 msgstr ""
 
-#: ppdc/sample.c:89
 msgid "Envelope B4"
 msgstr ""
 
-#: ppdc/sample.c:90
 msgid "Envelope B5"
 msgstr ""
 
-#: ppdc/sample.c:91
 msgid "Envelope B6"
 msgstr ""
 
-#: ppdc/sample.c:78
 msgid "Envelope C0"
 msgstr ""
 
-#: ppdc/sample.c:79
 msgid "Envelope C1"
 msgstr ""
 
-#: ppdc/sample.c:80
 msgid "Envelope C2"
 msgstr ""
 
-#: ppdc/sample.c:81
 msgid "Envelope C3"
 msgstr ""
 
-#: ppdc/sample.c:67
 msgid "Envelope C4"
 msgstr ""
 
-#: ppdc/sample.c:68
 msgid "Envelope C5"
 msgstr ""
 
-#: ppdc/sample.c:69
 msgid "Envelope C6"
 msgstr ""
 
-#: ppdc/sample.c:82
 msgid "Envelope C65"
 msgstr ""
 
-#: ppdc/sample.c:83
 msgid "Envelope C7"
 msgstr ""
 
-#: ppdc/sample.c:84
 msgid "Envelope Choukei 3"
 msgstr ""
 
-#: ppdc/sample.c:85
 msgid "Envelope Choukei 3 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:86
 msgid "Envelope Choukei 4"
 msgstr ""
 
-#: ppdc/sample.c:87
 msgid "Envelope Choukei 4 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:70
 msgid "Envelope DL"
 msgstr ""
 
-#: ppdc/sample.c:269
 msgid "Envelope Feed"
 msgstr "Podavač obálek"
 
-#: ppdc/sample.c:88
 msgid "Envelope Invite"
 msgstr ""
 
-#: ppdc/sample.c:92
 msgid "Envelope Italian"
 msgstr ""
 
-#: ppdc/sample.c:93
 msgid "Envelope Kaku2"
 msgstr ""
 
-#: ppdc/sample.c:94
 msgid "Envelope Kaku2 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:95
 msgid "Envelope Kaku3"
 msgstr ""
 
-#: ppdc/sample.c:96
 msgid "Envelope Kaku3 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:97
 msgid "Envelope Monarch"
 msgstr ""
 
-#: ppdc/sample.c:99
 msgid "Envelope PRC1 "
 msgstr ""
 
-#: ppdc/sample.c:100
 msgid "Envelope PRC1 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:117
 msgid "Envelope PRC10"
 msgstr ""
 
-#: ppdc/sample.c:118
 msgid "Envelope PRC10 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:101
 msgid "Envelope PRC2"
 msgstr ""
 
-#: ppdc/sample.c:102
 msgid "Envelope PRC2 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:103
 msgid "Envelope PRC3"
 msgstr ""
 
-#: ppdc/sample.c:104
 msgid "Envelope PRC3 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:105
 msgid "Envelope PRC4"
 msgstr ""
 
-#: ppdc/sample.c:106
 msgid "Envelope PRC4 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:108
 msgid "Envelope PRC5 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:107
 msgid "Envelope PRC5PRC5"
 msgstr ""
 
-#: ppdc/sample.c:109
 msgid "Envelope PRC6"
 msgstr ""
 
-#: ppdc/sample.c:110
 msgid "Envelope PRC6 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:111
 msgid "Envelope PRC7"
 msgstr ""
 
-#: ppdc/sample.c:112
 msgid "Envelope PRC7 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:113
 msgid "Envelope PRC8"
 msgstr ""
 
-#: ppdc/sample.c:114
 msgid "Envelope PRC8 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:115
 msgid "Envelope PRC9"
 msgstr ""
 
-#: ppdc/sample.c:116
 msgid "Envelope PRC9 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:98
 msgid "Envelope Personal"
 msgstr ""
 
-#: ppdc/sample.c:119
 msgid "Envelope You4"
 msgstr ""
 
-#: ppdc/sample.c:120
 msgid "Envelope You4 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:240
+msgid "Environment Variables:"
+msgstr ""
+
 msgid "Epson"
 msgstr "Epson"
 
-#: cgi-bin/admin.c:3604
 msgid "Error Policy"
 msgstr "Chování při chybě"
 
-#: filter/rastertopwg.c:403 filter/rastertopwg.c:418 filter/rastertopwg.c:429
-#: filter/rastertopwg.c:440
 msgid "Error sending raster data."
 msgstr ""
 
-#: systemv/lpinfo.c:103 systemv/lpmove.c:88
 msgid "Error: need hostname after \"-h\" option."
 msgstr ""
 
-#: ppdc/sample.c:355
 msgid "Every 10 Labels"
 msgstr "Každých 10 štítků"
 
-#: ppdc/sample.c:347
 msgid "Every 2 Labels"
 msgstr "Každé 2 štítky"
 
-#: ppdc/sample.c:348
 msgid "Every 3 Labels"
 msgstr "Každé 3 štítky"
 
-#: ppdc/sample.c:349
 msgid "Every 4 Labels"
 msgstr "Každé 4 štítky"
 
-#: ppdc/sample.c:350
 msgid "Every 5 Labels"
 msgstr "Každých 5 štítků"
 
-#: ppdc/sample.c:351
 msgid "Every 6 Labels"
 msgstr "Každých 6 štítků"
 
-#: ppdc/sample.c:352
 msgid "Every 7 Labels"
 msgstr "Každých 7 štítků"
 
-#: ppdc/sample.c:353
 msgid "Every 8 Labels"
 msgstr "Každých 8 štítků"
 
-#: ppdc/sample.c:354
 msgid "Every 9 Labels"
 msgstr "Každých 9 štítků"
 
-#: ppdc/sample.c:346
 msgid "Every Label"
 msgstr "Každý štítek"
 
-#: ppdc/sample.c:121
 msgid "Executive"
 msgstr ""
 
-#: cups/http-support.c:1327
 msgid "Expectation Failed"
 msgstr "Očekávané údaje jsou neplatné"
 
-#: cgi-bin/admin.c:2356 cgi-bin/admin.c:2375
 msgid "Export Printers to Samba"
 msgstr "Export tiskáren do Samby"
 
-#: 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
+msgid "Expressions:"
+msgstr ""
+
 msgid "FAIL"
 msgstr ""
 
-#: ppdc/sample.c:122
 msgid "FanFold German"
 msgstr ""
 
-#: ppdc/sample.c:123
 msgid "FanFold Legal German"
 msgstr ""
 
-#: ppdc/sample.c:124
 msgid "Fanfold US"
 msgstr ""
 
-#: cups/file.c:300
 #, c-format
 msgid "File \"%s\" contains a relative path."
 msgstr ""
 
-#: cups/file.c:275
 #, c-format
 msgid "File \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
 msgstr ""
 
-#: cups/file.c:289
 #, c-format
 msgid "File \"%s\" is a directory."
 msgstr ""
 
-#: cups/file.c:261
 #, c-format
 msgid "File \"%s\" not available: %s"
 msgstr ""
 
-#: cups/file.c:247
 #, c-format
 msgid "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
 msgstr ""
 
-#: ppdc/sample.c:169
 msgid "File Folder "
 msgstr "Složka souborů "
 
-#: scheduler/ipp.c:2370
 #, c-format
-msgid "File device URIs have been disabled. To enable, see the FileDevice directive in \"%s/cupsd.conf\"."
+msgid ""
+"File device URIs have been disabled. To enable, see the FileDevice directive "
+"in \"%s/cups-files.conf\"."
 msgstr ""
 
-#: filter/rastertoepson.c:1117 filter/rastertohp.c:845
-#: filter/rastertolabel.c:1273
 #, c-format
 msgid "Finished page %d."
 msgstr ""
 
-#: ppdc/sample.c:125
 msgid "Folio"
 msgstr "Fólie"
 
-#: cups/http-support.c:1306
 msgid "Forbidden"
 msgstr "Zakázaný"
 
-#: cups/ppd.c:742 cups/ppd.c:1302
 msgid "General"
 msgstr "Obecný"
 
-#: ppdc/sample.c:259
 msgid "Generic"
 msgstr "Obecný"
 
-#: cups/snmp.c:1016
 msgid "Get-Response-PDU uses indefinite length"
 msgstr "\"Get-Response-PDU\" má neomezenou délku"
 
-#: ppdc/sample.c:290
 msgid "Glossy Paper"
 msgstr "Lesklý papír"
 
-#: scheduler/ipp.c:2952 scheduler/ipp.c:3352 scheduler/ipp.c:3890
-#: scheduler/ipp.c:6056 scheduler/ipp.c:6203 scheduler/ipp.c:7635
-#: scheduler/ipp.c:8753 scheduler/ipp.c:8979 scheduler/ipp.c:9328
-#: scheduler/ipp.c:9931
 msgid "Got a printer-uri attribute but no job-id."
 msgstr ""
 
-#: ppdc/sample.c:255
 msgid "Grayscale"
 msgstr "Stupně šedi"
 
-#: ppdc/sample.c:280
 msgid "HP"
 msgstr "HP"
 
-#: ppdc/sample.c:170
 msgid "Hanging Folder"
 msgstr "Závěsná složka"
 
-#: cgi-bin/help.c:143
 msgid "Help file not in index."
 msgstr ""
 
-#: cups/ipp.c:2687 cups/ipp.c:2714 cups/ipp.c:2737
 msgid "IPP 1setOf attribute with incompatible value tags."
 msgstr ""
 
-#: cups/ipp.c:2650
 msgid "IPP attribute has no name."
 msgstr ""
 
-#: cups/ipp.c:5487
 msgid "IPP attribute is not a member of the message."
 msgstr ""
 
-#: cups/ipp.c:3083
 msgid "IPP begCollection value not 0 bytes."
 msgstr ""
 
-#: cups/ipp.c:2873
 msgid "IPP boolean value not 1 byte."
 msgstr ""
 
-#: cups/ipp.c:2934
 msgid "IPP date value not 11 bytes."
 msgstr ""
 
-#: cups/ipp.c:3104
 msgid "IPP endCollection value not 0 bytes."
 msgstr ""
 
-#: cups/ipp.c:2848
 msgid "IPP enum value not 4 bytes."
 msgstr ""
 
-#: cups/ipp.c:2579
 msgid "IPP extension tag larger than 0x7FFFFFFF."
 msgstr ""
 
-#: cups/ipp.c:2845
 msgid "IPP integer value not 4 bytes."
 msgstr ""
 
-#: cups/ipp.c:3045
 msgid "IPP language length overflows value."
 msgstr ""
 
-#: cups/ipp.c:2764
+msgid "IPP language length too large."
+msgstr ""
+
 msgid "IPP member name is not empty."
 msgstr ""
 
-#: cups/ipp.c:3122
 msgid "IPP memberName value is empty."
 msgstr ""
 
-#: cups/ipp.c:2633
+msgid "IPP memberName with no attribute."
+msgstr ""
+
 msgid "IPP name larger than 32767 bytes."
 msgstr ""
 
-#: cups/ipp.c:3011
 msgid "IPP nameWithLanguage value less than minimum 4 bytes."
 msgstr ""
 
-#: cups/ipp.c:2979
+msgid "IPP octetString length too large."
+msgstr ""
+
 msgid "IPP rangeOfInteger value not 8 bytes."
 msgstr ""
 
-#: cups/ipp.c:2952
 msgid "IPP resolution value not 9 bytes."
 msgstr ""
 
-#: cups/ipp.c:3063
 msgid "IPP string length overflows value."
 msgstr ""
 
-#: cups/ipp.c:3007
 msgid "IPP textWithLanguage value less than minimum 4 bytes."
 msgstr ""
 
-#: cups/ipp.c:2831
 msgid "IPP value larger than 32767 bytes."
 msgstr ""
 
-#: ppdc/sample.c:1
 msgid "ISOLatin1"
 msgstr "ISOLatin1"
 
-#: cups/ppd.c:353
 msgid "Illegal control character"
 msgstr "Neplatný řídící znak"
 
-#: cups/ppd.c:354
 msgid "Illegal main keyword string"
 msgstr "Neplatné hlavní klíčové slovo řetězce"
 
-#: cups/ppd.c:355
 msgid "Illegal option keyword string"
 msgstr "Neplatná volba klíčového slova řetězce"
 
-#: cups/ppd.c:356
 msgid "Illegal translation string"
 msgstr "Neplatný překlad řetězce"
 
-#: cups/ppd.c:357
 msgid "Illegal whitespace character"
 msgstr "Nedovolený prázdný znak"
 
-#: ppdc/sample.c:274
 msgid "Installable Options"
 msgstr "Možnosti instalace"
 
-#: ppdc/sample.c:277
 msgid "Installed"
 msgstr "Instalovaný"
 
-#: ppdc/sample.c:293
 msgid "IntelliBar Label Printer"
 msgstr "Tiskárna štítků \"IntelliBar\""
 
-#: ppdc/sample.c:292
 msgid "Intellitech"
 msgstr "Intellitech"
 
-#: cups/http-support.c:1333
 msgid "Internal Server Error"
 msgstr ""
 
-#: cups/ppd.c:344
 msgid "Internal error"
 msgstr "Vniřní chyba"
 
-#: ppdc/sample.c:167
 msgid "Internet Postage 2-Part"
 msgstr "Internet Postage 2-Part"
 
-#: ppdc/sample.c:168
 msgid "Internet Postage 3-Part"
 msgstr "Internet Postage 3-Part"
 
-#: backend/ipp.c:307
 msgid "Internet Printing Protocol"
 msgstr "Internetový tiskový protokol"
 
-#: cups/dest-options.c:839
+msgid "Invalid media name arguments."
+msgstr ""
+
 msgid "Invalid media size."
 msgstr ""
 
-#: filter/commandtops.c:125
 #, c-format
 msgid "Invalid printer command \"%s\"."
 msgstr ""
 
-#: cups/ppd.c:1420
 msgid "JCL"
 msgstr "JCL"
 
-#: ppdc/sample.c:53
 msgid "JIS B0"
 msgstr ""
 
-#: ppdc/sample.c:55
 msgid "JIS B1"
 msgstr ""
 
-#: ppdc/sample.c:54
 msgid "JIS B10"
 msgstr ""
 
-#: ppdc/sample.c:56
 msgid "JIS B2"
 msgstr ""
 
-#: ppdc/sample.c:57
 msgid "JIS B3"
 msgstr ""
 
-#: ppdc/sample.c:58
 msgid "JIS B4"
 msgstr ""
 
-#: ppdc/sample.c:59
 msgid "JIS B4 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:60
 msgid "JIS B5"
 msgstr ""
 
-#: ppdc/sample.c:61
 msgid "JIS B5 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:62
 msgid "JIS B6"
 msgstr ""
 
-#: ppdc/sample.c:63
 msgid "JIS B6 Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:64
 msgid "JIS B7"
 msgstr ""
 
-#: ppdc/sample.c:65
 msgid "JIS B8"
 msgstr ""
 
-#: ppdc/sample.c:66
 msgid "JIS B9"
 msgstr ""
 
-#: scheduler/ipp.c:9051
 #, c-format
 msgid "Job #%d cannot be restarted - no files."
 msgstr ""
 
-#: scheduler/ipp.c:2992 scheduler/ipp.c:3222 scheduler/ipp.c:3277
-#: scheduler/ipp.c:3454 scheduler/ipp.c:3900 scheduler/ipp.c:5720
-#: scheduler/ipp.c:6096 scheduler/ipp.c:6243 scheduler/ipp.c:6543
-#: scheduler/ipp.c:7482 scheduler/ipp.c:7504 scheduler/ipp.c:7676
-#: scheduler/ipp.c:7901 scheduler/ipp.c:7944 scheduler/ipp.c:8793
-#: scheduler/ipp.c:9019 scheduler/ipp.c:9368 scheduler/ipp.c:9971
 #, c-format
 msgid "Job #%d does not exist."
 msgstr ""
 
-#: scheduler/ipp.c:3486
 #, c-format
 msgid "Job #%d is already aborted - can't cancel."
 msgstr "Úloha #%d je již zrušena - nelze zrušit."
 
-#: scheduler/ipp.c:3480
 #, c-format
 msgid "Job #%d is already canceled - can't cancel."
 msgstr "Úloha #%d je již zrušena - nelze zrušit."
 
-#: scheduler/ipp.c:3492
 #, c-format
 msgid "Job #%d is already completed - can't cancel."
 msgstr "Úloha #%d je již dokončena - nelze zrušit."
 
-#: scheduler/ipp.c:7702 scheduler/ipp.c:7986 scheduler/ipp.c:9986
 #, c-format
 msgid "Job #%d is finished and cannot be altered."
 msgstr ""
 
-#: scheduler/ipp.c:9033
 #, c-format
 msgid "Job #%d is not complete."
 msgstr ""
 
-#: scheduler/ipp.c:3007
 #, c-format
 msgid "Job #%d is not held for authentication."
 msgstr ""
 
-#: scheduler/ipp.c:8807
 #, c-format
 msgid "Job #%d is not held."
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1055
 msgid "Job Completed"
 msgstr "Úloha dokončena"
 
-#: cgi-bin/ipp-var.c:1053
 msgid "Job Created"
 msgstr "Úloha vytvořena"
 
-#: cgi-bin/ipp-var.c:1059
 msgid "Job Options Changed"
 msgstr "Změna parametrů úlohy"
 
-#: cgi-bin/ipp-var.c:1057
 msgid "Job Stopped"
 msgstr "Úloha zastavena"
 
-#: scheduler/ipp.c:10068
 msgid "Job is completed and cannot be changed."
 msgstr "Úloha je dokončena a nelze ji změnit."
 
-#: cgi-bin/jobs.c:198
 msgid "Job operation failed"
 msgstr "Úloha se nezdařila"
 
-#: scheduler/ipp.c:10104 scheduler/ipp.c:10123 scheduler/ipp.c:10134
 msgid "Job state cannot be changed."
 msgstr "Stav úlohy nelze změnit."
 
-#: scheduler/ipp.c:8899
 msgid "Job subscriptions cannot be renewed."
 msgstr ""
 
-#: cgi-bin/jobs.c:103 cgi-bin/jobs.c:114 cgi-bin/jobs.c:195
 msgid "Jobs"
 msgstr "Úlohy"
 
-#: backend/lpd.c:185
 msgid "LPD/LPR Host or Printer"
 msgstr "LPD/LPR hostitel nebo tiskárna"
 
-#: ppdc/sample.c:230
 msgid "Label Printer"
 msgstr "Tiskárna štítků"
 
-#: ppdc/sample.c:446
 msgid "Label Top"
 msgstr "Horní štítek"
 
-#: scheduler/ipp.c:2070 scheduler/ipp.c:5643
 #, c-format
 msgid "Language \"%s\" not supported."
 msgstr ""
 
-#: ppdc/sample.c:164
 msgid "Large Address"
 msgstr "Plná adresa"
 
-#: ppdc/sample.c:291
 msgid "LaserJet Series PCL 4/5"
 msgstr "LaserJet Serie PCL 4/5"
 
-#: ppdc/sample.c:43
 msgid "Letter Oversize"
 msgstr ""
 
-#: ppdc/sample.c:44
 msgid "Letter Oversize Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:236
 msgid "Light"
 msgstr "Světlý"
 
-#: cups/ppd.c:352
 msgid "Line longer than the maximum allowed (255 characters)"
 msgstr "Řádek je delší než maximální povolená velikost (255 znaků)"
 
-#: cgi-bin/admin.c:2393
 msgid "List Available Printers"
 msgstr "Seznam dostupných tiskáren"
 
-#: ppdc/sample.c:272
+msgid "Load paper."
+msgstr ""
+
 msgid "Long-Edge (Portrait)"
 msgstr "Delší okraj (na výšku)"
 
-#: cups/http-support.c:1558
 msgid "Looking for printer."
 msgstr ""
 
-#: ppdc/sample.c:268
 msgid "Manual Feed"
 msgstr "Ruční podávání"
 
-#: cups/ppd.c:789 cups/ppd.c:1357
 msgid "Media Size"
 msgstr "Velikost média"
 
-#: cups/ppd.c:793 cups/ppd.c:1361 ppdc/sample.c:262
 msgid "Media Source"
 msgstr "Zdroj média"
 
-#: ppdc/sample.c:364
 msgid "Media Tracking"
 msgstr "Sledování média"
 
-#: cups/ppd.c:791 cups/ppd.c:1359 ppdc/sample.c:285
 msgid "Media Type"
 msgstr "Typ média"
 
-#: ppdc/sample.c:237
 msgid "Medium"
 msgstr "Střední"
 
-#: cups/ppd.c:341
 msgid "Memory allocation error"
 msgstr "Chyba přidělení paměti"
 
-#: cups/ppd.c:361
 msgid "Missing CloseGroup"
 msgstr ""
 
-#: cups/ppd.c:342
 msgid "Missing PPD-Adobe-4.x header"
 msgstr "Chybějící záhlaví PPD-Adobe-4.x"
 
-#: cups/ppd.c:351
 msgid "Missing asterisk in column 1"
 msgstr "Chybí hvězdička ve sloupci 1"
 
-#: scheduler/ipp.c:6119
 msgid "Missing document-number attribute."
 msgstr ""
 
-#: cups/adminutil.c:273
 #, c-format
 msgid "Missing double quote on line %d."
 msgstr ""
 
-#: cgi-bin/admin.c:736 cgi-bin/admin.c:2106 cgi-bin/admin.c:2191
-#: cgi-bin/admin.c:2785 cgi-bin/admin.c:3039 cgi-bin/admin.c:3150
-#: cgi-bin/admin.c:3860
 msgid "Missing form variable"
 msgstr ""
 
-#: scheduler/ipp.c:9422
 msgid "Missing last-document attribute in request."
 msgstr ""
 
-#: cups/pwg-media.c:535
 msgid "Missing media or media-col."
 msgstr ""
 
-#: cups/pwg-media.c:454
 msgid "Missing media-size in media-col."
 msgstr ""
 
-#: scheduler/ipp.c:6673
 msgid "Missing notify-subscription-ids attribute."
 msgstr ""
 
-#: cups/ppd.c:359
 msgid "Missing option keyword"
 msgstr ""
 
-#: scheduler/ipp.c:3133 scheduler/ipp.c:3158
 msgid "Missing requesting-user-name attribute."
 msgstr ""
 
-#: scheduler/ipp.c:461
 msgid "Missing required attributes."
 msgstr ""
 
-#: cups/adminutil.c:254
+msgid "Missing resource in URI"
+msgstr ""
+
+msgid "Missing scheme in URI"
+msgstr ""
+
 #, c-format
 msgid "Missing value on line %d."
 msgstr ""
 
-#: cups/ppd.c:343
 msgid "Missing value string"
 msgstr "Chybí hodnota řetězce"
 
-#: cups/pwg-media.c:442
 msgid "Missing x-dimension in media-size."
 msgstr ""
 
-#: cups/pwg-media.c:448
 msgid "Missing y-dimension in media-size."
 msgstr ""
 
-#: systemv/lpinfo.c:470
 #, c-format
 msgid ""
 "Model:  name = %s\n"
@@ -3989,1520 +3494,1191 @@ msgid ""
 "        device-id = %s"
 msgstr ""
 
-#: cgi-bin/admin.c:570
+msgid "Modifiers:"
+msgstr ""
+
 msgid "Modify Class"
 msgstr "Úprava třídy"
 
-#: cgi-bin/admin.c:882
 msgid "Modify Printer"
 msgstr "Úprava tiskárny"
 
-#: cgi-bin/ipp-var.c:425 cgi-bin/ipp-var.c:516
 msgid "Move All Jobs"
 msgstr "Přesun všech úloh"
 
-#: cgi-bin/ipp-var.c:364 cgi-bin/ipp-var.c:423 cgi-bin/ipp-var.c:514
 msgid "Move Job"
 msgstr "Přesun úlohy"
 
-#: cups/http-support.c:1290
 msgid "Moved Permanently"
 msgstr "Trvale přesunuto"
 
-#: cups/ppd.c:340
 msgid "NULL PPD file pointer"
 msgstr "Prázdný ukazatel PPD souboru"
 
-#: cups/snmp.c:1053
 msgid "Name OID uses indefinite length"
 msgstr "Název \"OID\" má neomezenou délku"
 
-#: scheduler/ipp.c:1142
 msgid "Nested classes are not allowed."
 msgstr ""
 
-#: ppdc/sample.c:430
 msgid "Never"
 msgstr "Nikdy"
 
-#: ppdc/sample.c:256
 msgid "New Stylus Color Series"
 msgstr "New Stylus Color Series"
 
-#: ppdc/sample.c:258
 msgid "New Stylus Photo Series"
 msgstr "New Stylus Photo Series"
 
-#: cups/ppd.c:1949
 msgid "No"
 msgstr "Ne"
 
-#: cups/http-support.c:1287
 msgid "No Content"
 msgstr "Žádný obsah"
 
-#: cups/util.c:1298
 msgid "No PPD name"
 msgstr ""
 
-#: cups/snmp.c:1047
 msgid "No VarBind SEQUENCE"
 msgstr "Žádná VarBind SEQUENCE"
 
-#: cups/adminutil.c:788
 msgid "No Windows printer drivers are installed."
 msgstr ""
 
-#: cups/request.c:566 cups/request.c:908
 msgid "No active connection"
 msgstr "Není aktivní spojení"
 
-#: scheduler/ipp.c:3403
+msgid "No active connection."
+msgstr ""
+
 #, c-format
 msgid "No active jobs on %s."
 msgstr ""
 
-#: scheduler/ipp.c:302
 msgid "No attributes in request."
 msgstr ""
 
-#: scheduler/ipp.c:3034
 msgid "No authentication information provided."
 msgstr ""
 
-#: cups/snmp.c:1004
 msgid "No community name"
 msgstr "Žádný název komunity"
 
-#: scheduler/ipp.c:5919
 msgid "No default printer."
 msgstr ""
 
-#: cgi-bin/ipp-var.c:436 scheduler/ipp.c:7248
 msgid "No destinations added."
 msgstr "Zařízení nepřidáno."
 
-#: backend/usb.c:200
 msgid "No device URI found in argv[0] or in DEVICE_URI environment variable."
 msgstr ""
 
-#: cups/snmp.c:1034
 msgid "No error-index"
 msgstr "Žádný \"error-index\""
 
-#: cups/snmp.c:1026
 msgid "No error-status"
 msgstr "Žádný \"error-status\""
 
-#: scheduler/ipp.c:8190 scheduler/ipp.c:9436
 msgid "No file in print request."
 msgstr ""
 
-#: cups/util.c:923
 msgid "No modification time"
 msgstr ""
 
-#: cups/snmp.c:1051
 msgid "No name OID"
 msgstr "Žádný název OID"
 
-#: filter/rastertoepson.c:1147 filter/rastertohp.c:876
-#: filter/rastertolabel.c:1302
 msgid "No pages were found."
 msgstr ""
 
-#: cups/util.c:917
 msgid "No printer name"
 msgstr ""
 
-#: cups/util.c:1801
 msgid "No printer-uri found"
 msgstr ""
 
-#: cups/util.c:1786
 msgid "No printer-uri found for class"
 msgstr ""
 
-#: scheduler/ipp.c:6322
 msgid "No printer-uri in request."
 msgstr ""
 
-#: cups/snmp.c:1018
+msgid "No request URI."
+msgstr ""
+
+msgid "No request protocol version."
+msgstr ""
+
+msgid "No request sent."
+msgstr ""
+
 msgid "No request-id"
 msgstr "Žádný ID požadavek"
 
-#: scheduler/ipp.c:5528
 msgid "No subscription attributes in request."
 msgstr ""
 
-#: scheduler/ipp.c:7575
 msgid "No subscriptions found."
 msgstr "Nenalezeno předplatné."
 
-#: cups/snmp.c:1042
 msgid "No variable-bindings SEQUENCE"
 msgstr "Žádná \"variable-bindings\" SEQUENCE"
 
-#: cups/snmp.c:997
 msgid "No version number"
 msgstr "Není číslo verze"
 
-#: ppdc/sample.c:367
 msgid "Non-continuous (Mark sensing)"
 msgstr "Není souvislý (Mark Sensing)"
 
-#: ppdc/sample.c:366
 msgid "Non-continuous (Web sensing)"
 msgstr "Není souvislý (Web Sensing)"
 
-#: ppdc/sample.c:238
 msgid "Normal"
 msgstr "Normální"
 
-#: cups/http-support.c:1309
 msgid "Not Found"
 msgstr "Nebyl nalezen"
 
-#: cups/http-support.c:1321
 msgid "Not Implemented"
 msgstr "Nerealizováno"
 
-#: ppdc/sample.c:276
 msgid "Not Installed"
 msgstr "Nenainstalováno"
 
-#: cups/http-support.c:1296
 msgid "Not Modified"
 msgstr "Nezměněno"
 
-#: cups/http-support.c:1324
 msgid "Not Supported"
 msgstr "Nepodporováno"
 
-#: scheduler/ipp.c:1518 scheduler/ipp.c:10666
 msgid "Not allowed to print."
 msgstr "Není povoleno tisknout."
 
-#: ppdc/sample.c:146
 msgid "Note"
 msgstr "Poznámka"
 
-#: systemv/cupstestdsc.c:433
-msgid "Note: this program only validates the DSC comments, not the PostScript itself."
+msgid ""
+"Note: this program only validates the DSC comments, not the PostScript "
+"itself."
 msgstr ""
 
-#: cups/http-support.c:1278 cups/ppd.c:338
 msgid "OK"
 msgstr "OK"
 
-#: ppdc/sample.c:271
 msgid "Off (1-Sided)"
 msgstr "Vypnuto (jednostranný)"
 
-#: ppdc/sample.c:361
 msgid "Oki"
 msgstr "Oki"
 
-#: cgi-bin/help.c:91 cgi-bin/help.c:132 cgi-bin/help.c:142 cgi-bin/help.c:172
 msgid "Online Help"
 msgstr "Nápověda"
 
-#: cups/adminutil.c:955
 #, c-format
 msgid "Open of %s failed: %s"
 msgstr "Otevření %s selhalo: %s"
 
-#: cups/ppd.c:346
 msgid "OpenGroup without a CloseGroup first"
 msgstr "Opengroup nepředcházelo CloseGroup"
 
-#: cups/ppd.c:348
 msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first"
 msgstr "OpenUI/JCLOpenUI nepředcházelo CloseUI/JCLCloseUI"
 
-#: cgi-bin/admin.c:3631
 msgid "Operation Policy"
 msgstr "Způsob ověření"
 
-#: filter/pstops.c:2205
 #, c-format
 msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
 msgstr ""
 
-#: cgi-bin/admin.c:3281 cgi-bin/admin.c:3365
 msgid "Options Installed"
 msgstr "Instalované možnosti"
 
-#: scheduler/cupsfilter.c:1430 scheduler/main.c:2018 systemv/cupsaddsmb.c:284
-#: systemv/cupsctl.c:203 systemv/cupstestdsc.c:429 systemv/cupstestppd.c:3797
-#: test/ipptool.c:4403 ppdc/ppdc.cxx:437 ppdc/ppdhtml.cxx:174
-#: ppdc/ppdi.cxx:130 ppdc/ppdmerge.cxx:369 ppdc/ppdpo.cxx:254
 msgid "Options:"
 msgstr ""
 
-#: cups/ppd-cache.c:156
 msgid "Out of date PPD cache file."
 msgstr ""
 
-#: cups/ppd-cache.c:1381
 msgid "Out of memory."
 msgstr ""
 
-#: cups/ppd.c:795 cups/ppd.c:1363
 msgid "Output Mode"
 msgstr "Výstupní režim"
 
-#: systemv/lpstat.c:1191 systemv/lpstat.c:1195
-#, c-format
-msgid "Output for printer %s is sent to %s"
-msgstr ""
-
-#: systemv/lpstat.c:1185
-#, c-format
-msgid "Output for printer %s is sent to remote printer %s on %s"
+msgid "Output bin is almost full."
 msgstr ""
 
-#: systemv/lpstat.c:1209 systemv/lpstat.c:1213
-#, c-format
-msgid "Output for printer %s/%s is sent to %s"
+msgid "Output bin is full."
 msgstr ""
 
-#: systemv/lpstat.c:1203
-#, c-format
-msgid "Output for printer %s/%s is sent to remote printer %s on %s"
+msgid "Output bin is missing."
 msgstr ""
 
-#: systemv/cupstestdsc.c:399
 msgid "PASS"
 msgstr ""
 
-#: ppdc/sample.c:260
 msgid "PCL Laser Printer"
 msgstr "PCL laserová tiskárna"
 
-#: ppdc/sample.c:149
 msgid "PRC16K"
 msgstr "PRC16K"
 
-#: ppdc/sample.c:150
 msgid "PRC16K Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:151
 msgid "PRC32K"
 msgstr "PRC32K"
 
-#: ppdc/sample.c:154
 msgid "PRC32K Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:152
 msgid "PRC32K Oversize"
 msgstr ""
 
-#: ppdc/sample.c:153
 msgid "PRC32K Oversize Long Edge"
 msgstr ""
 
-#: cups/snmp.c:1014
 msgid "Packet does not contain a Get-Response-PDU"
 msgstr "Packet neobsahuje \"Get-Response-PDU\""
 
-#: cups/snmp.c:993
 msgid "Packet does not start with SEQUENCE"
 msgstr "Paket nezačíná SEQUENCÍ"
 
-#: ppdc/sample.c:360
+msgid "Paper jam."
+msgstr ""
+
+msgid "Paper tray is almost empty."
+msgstr ""
+
+msgid "Paper tray is empty."
+msgstr ""
+
+msgid "Paper tray is missing."
+msgstr ""
+
 msgid "ParamCustominCutInterval"
 msgstr "ParamCustominCutInterval"
 
-#: ppdc/sample.c:358
 msgid "ParamCustominTearInterval"
 msgstr "ParamCustominTearInterval"
 
-#: cups/auth.c:199 cups/auth.c:367
 #, c-format
 msgid "Password for %s on %s? "
 msgstr "Heslo pro %s na %s? "
 
-#: systemv/cupsaddsmb.c:252
 #, c-format
 msgid "Password for %s required to access %s via SAMBA: "
 msgstr "Heslo pro %s je vyžadováno pro přístup k %s přes Sambu: "
 
-#: cgi-bin/classes.c:167
 msgid "Pause Class"
 msgstr "Pozastavení třídy"
 
-#: cgi-bin/printers.c:170
 msgid "Pause Printer"
 msgstr "Pozastavení tiskárny"
 
-#: ppdc/sample.c:448
 msgid "Peel-Off"
 msgstr "Peel-Off"
 
-#: ppdc/sample.c:160
 msgid "Photo"
 msgstr "Fotografie"
 
-#: ppdc/sample.c:161
 msgid "Photo Labels"
 msgstr "Foto-samolepky"
 
-#: ppdc/sample.c:286
 msgid "Plain Paper"
 msgstr "Obyčejný papír"
 
-#: cgi-bin/admin.c:3299 cgi-bin/admin.c:3580
 msgid "Policies"
 msgstr "Pravidla"
 
-#: cgi-bin/admin.c:3306 cgi-bin/admin.c:3649 cgi-bin/admin.c:3662
 msgid "Port Monitor"
 msgstr "Monitorování portu"
 
-#: ppdc/sample.c:278
 msgid "PostScript Printer"
 msgstr "PostScriptová tiskárna"
 
-#: ppdc/sample.c:147
 msgid "Postcard"
 msgstr "Pohlednice"
 
-#: ppdc/sample.c:71
 msgid "Postcard Double "
 msgstr ""
 
-#: ppdc/sample.c:72
 msgid "Postcard Double Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:148
 msgid "Postcard Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:295
+msgid "Preparing to print."
+msgstr ""
+
 msgid "Print Density"
 msgstr "Hustota tisku"
 
-#: cups/notify.c:82
 msgid "Print Job:"
 msgstr "Tisk úlohy:"
 
-#: ppdc/sample.c:340
 msgid "Print Mode"
 msgstr "Režim tisku"
 
-#: ppdc/sample.c:383
 msgid "Print Rate"
 msgstr "Kvalita tisku"
 
-#: cgi-bin/printers.c:179
 msgid "Print Self-Test Page"
 msgstr "Tisk \"self-test\" stránky"
 
-#: ppdc/sample.c:327
 msgid "Print Speed"
 msgstr "Rychlost tisku"
 
-#: cgi-bin/ipp-var.c:792
 msgid "Print Test Page"
 msgstr "Tisk zkušební stránky"
 
-#: ppdc/sample.c:356
 msgid "Print and Cut"
 msgstr "Tisk a vyjmout"
 
-#: ppdc/sample.c:344
 msgid "Print and Tear"
 msgstr "Tisk a odtrhnout"
 
-#: backend/ipp.c:1537
-#, c-format
-msgid "Print file accepted - job ID %d."
-msgstr ""
-
-#: backend/ipp.c:1527
-msgid "Print file accepted - job ID unknown."
-msgstr ""
-
-#: backend/socket.c:424 backend/usb-unix.c:191
 msgid "Print file sent."
 msgstr ""
 
-#: backend/ipp.c:1488
-msgid "Print file was not accepted."
-msgstr ""
-
-#: backend/ipp.c:1895
 msgid "Print job canceled at printer."
 msgstr ""
 
-#: backend/ipp.c:1890
 msgid "Print job too large."
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1047
+msgid "Print job was not accepted."
+msgstr ""
+
 msgid "Printer Added"
 msgstr "Tiskárna přidána"
 
-#: ppdc/sample.c:263
 msgid "Printer Default"
 msgstr "Výchozí tiskárna"
 
-#: cgi-bin/ipp-var.c:1051
 msgid "Printer Deleted"
 msgstr "Tiskárna vymazána"
 
-#: cgi-bin/ipp-var.c:1049
 msgid "Printer Modified"
 msgstr "Tiskárna upravena"
 
-#: cgi-bin/ipp-var.c:1045
 msgid "Printer Paused"
 msgstr "Tiskárna zastavena"
 
-#: ppdc/sample.c:294
 msgid "Printer Settings"
 msgstr "Nastavení tiskárny"
 
-#: backend/ipp.c:1893
 msgid "Printer cannot print supplied content."
 msgstr ""
 
-#: cups/notify.c:126
+msgid "Printer cannot print with supplied options."
+msgstr ""
+
 msgid "Printer:"
 msgstr "Tiskárna:"
 
-#: cgi-bin/printers.c:204 cgi-bin/printers.c:332
 msgid "Printers"
 msgstr "Tiskárny"
 
-#: filter/rastertoepson.c:1093 filter/rastertohp.c:817
-#: filter/rastertolabel.c:1249
 #, c-format
-msgid "Printing page %d, %d%% complete."
+msgid "Printing page %d, %u%% complete."
 msgstr ""
 
-#: cgi-bin/classes.c:173 cgi-bin/printers.c:176
-msgid "Purge Jobs"
-msgstr "Výmaz úloh"
-
-#: ppdc/sample.c:155
 msgid "Quarto"
 msgstr "Quarto"
 
-#: scheduler/ipp.c:1513 scheduler/ipp.c:10661
 msgid "Quota limit reached."
 msgstr "Kvóta byla překročena."
 
-#: berkeley/lpq.c:515
 msgid "Rank    Owner   Job     File(s)                         Total Size"
 msgstr ""
 
-#. TRANSLATORS: Pri is job priority.
-#: berkeley/lpq.c:511
-msgid "Rank   Owner      Pri  Job        Files                       Total Size"
-msgstr ""
-
-#: cgi-bin/classes.c:171 cgi-bin/printers.c:174
 msgid "Reject Jobs"
 msgstr "Odmítnutí úloh"
 
-#: backend/lpd.c:1016 backend/lpd.c:1148
 #, c-format
 msgid "Remote host did not accept control file (%d)."
 msgstr ""
 
-#: backend/lpd.c:1101
 #, c-format
 msgid "Remote host did not accept data file (%d)."
 msgstr ""
 
-#: ppdc/sample.c:428
 msgid "Reprint After Error"
 msgstr "Opakovat tisk po chybě"
 
-#: cups/http-support.c:1312
 msgid "Request Entity Too Large"
 msgstr "Dotaz Entity je příliš dlouhý"
 
-#: cups/ppd.c:797 cups/ppd.c:1365 ppdc/sample.c:231
 msgid "Resolution"
 msgstr "Rozlišení"
 
-#: cgi-bin/classes.c:165
 msgid "Resume Class"
 msgstr "Obnovení třídy"
 
-#: cgi-bin/printers.c:167
 msgid "Resume Printer"
 msgstr "Obnovení tiskárny"
 
-#: ppdc/sample.c:165
 msgid "Return Address"
 msgstr "Návrat adresy"
 
-#: ppdc/sample.c:449
 msgid "Rewind"
 msgstr "Přetočit"
 
-#: cups/adminutil.c:2052
 #, c-format
 msgid "Running command: %s %s -N -A %s -c '%s'"
 msgstr ""
 
-#: cups/snmp.c:995
 msgid "SEQUENCE uses indefinite length"
 msgstr "\"SEQUENCE\" má neomezenou délku"
 
-#: cups/http-support.c:1336
 msgid "SSL/TLS Negotiation Error"
 msgstr ""
 
-#: cups/http-support.c:1293
 msgid "See Other"
 msgstr "Viz další"
 
-#: backend/usb-darwin.c:543 backend/usb-libusb.c:273
 msgid "Sending data to printer."
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1061
 msgid "Server Restarted"
 msgstr "Restart serveru"
 
-#: cgi-bin/ipp-var.c:1067
 msgid "Server Security Auditing"
 msgstr "Audit bezpečnosti serveru"
 
-#: cgi-bin/ipp-var.c:1063
 msgid "Server Started"
 msgstr "Start serveru"
 
-#: cgi-bin/ipp-var.c:1065
 msgid "Server Stopped"
 msgstr "Zastavení serveru"
 
-#: cups/http-support.c:1330
+msgid "Server credentials not set."
+msgstr ""
+
 msgid "Service Unavailable"
 msgstr "Služba je nedostupná"
 
-#: cgi-bin/admin.c:2786 cgi-bin/admin.c:2832 cgi-bin/admin.c:2989
-#: cgi-bin/admin.c:3008
 msgid "Set Allowed Users"
 msgstr "Nastavení přístupu uživatelů"
 
-#: cgi-bin/admin.c:3035
 msgid "Set As Server Default"
 msgstr "Nastavení jako výchozí na serveru"
 
-#: cgi-bin/admin.c:3135
 msgid "Set Class Options"
 msgstr "Nastavení parametrů třídy"
 
-#: cgi-bin/admin.c:3135 cgi-bin/admin.c:3309 cgi-bin/admin.c:3691
 msgid "Set Printer Options"
 msgstr "Nastavení parametrů tiskárny"
 
-#: cgi-bin/admin.c:3861 cgi-bin/admin.c:3905 cgi-bin/admin.c:3923
 msgid "Set Publishing"
 msgstr "Nastavení vydávání"
 
-#: ppdc/sample.c:166
 msgid "Shipping Address"
 msgstr "Doručovací adresa"
 
-#: ppdc/sample.c:273
 msgid "Short-Edge (Landscape)"
 msgstr "Kratší okraj (na šířku)"
 
-#: ppdc/sample.c:288
 msgid "Special Paper"
 msgstr "Speciální papír"
 
-#: backend/lpd.c:1057
 #, c-format
 msgid "Spooling job, %.0f%% complete."
 msgstr ""
 
-#: ppdc/sample.c:341
 msgid "Standard"
 msgstr "Standardní"
 
 #. TRANSLATORS: Banner/cover sheet before the print job.
-#: cgi-bin/admin.c:3552
 msgid "Starting Banner"
 msgstr "Spuštění baneru"
 
-#: filter/rastertoepson.c:1069 filter/rastertohp.c:793
-#: filter/rastertolabel.c:1225
 #, c-format
 msgid "Starting page %d."
 msgstr ""
 
-#: ppdc/sample.c:156
 msgid "Statement"
 msgstr "Prohlášení"
 
-#: ppdc/sample.c:251
 msgid "Stylus Color Series"
 msgstr "Stylus Color Series"
 
-#: ppdc/sample.c:257
 msgid "Stylus Photo Series"
 msgstr "Stylus Photo Series"
 
-#: scheduler/ipp.c:3549 scheduler/ipp.c:6689 scheduler/ipp.c:7388
-#: scheduler/ipp.c:8887
 #, c-format
 msgid "Subscription #%d does not exist."
 msgstr ""
 
-#: ppdc/sample.c:157
+msgid "Substitutions:"
+msgstr ""
+
 msgid "Super A"
 msgstr "Super A"
 
-#: ppdc/sample.c:158
 msgid "Super B"
 msgstr "Super B"
 
-#: ppdc/sample.c:162
 msgid "Super B/A3"
 msgstr "Super B/A3"
 
-#: cups/http-support.c:1275
 msgid "Switching Protocols"
 msgstr "Protokol výměny"
 
-#: ppdc/sample.c:159
 msgid "Tabloid"
 msgstr "Tabloid"
 
-#: ppdc/sample.c:45
 msgid "Tabloid Oversize"
 msgstr ""
 
-#: ppdc/sample.c:46
 msgid "Tabloid Oversize Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:342
 msgid "Tear"
 msgstr "Odtrhnout"
 
-#: ppdc/sample.c:447
 msgid "Tear-Off"
 msgstr "Odtrhnout"
 
-#: ppdc/sample.c:388
 msgid "Tear-Off Adjust Position"
 msgstr "Nastavení pozice odtržení"
 
-#: scheduler/ipp.c:6393 scheduler/ipp.c:6471 scheduler/ipp.c:6487
-#: scheduler/ipp.c:6505
+#, c-format
+msgid "The \"%s\" attribute is required for print jobs."
+msgstr ""
+
 #, c-format
 msgid "The %s attribute cannot be provided with job-ids."
 msgstr ""
 
-#: scheduler/ipp.c:5118
 #, c-format
-msgid "The '%s' operation attribute cannot be supplied in a Create-Job request."
+msgid ""
+"The '%s' Job Description attribute cannot be supplied in a job creation "
+"request."
+msgstr ""
+
+#, c-format
+msgid ""
+"The '%s' operation attribute cannot be supplied in a Create-Job request."
 msgstr ""
 
-#: scheduler/ipp.c:6919
 #, c-format
 msgid "The PPD file \"%s\" could not be found."
 msgstr "Soubor PPD \"%s\" nelze nalézt."
 
-#: scheduler/ipp.c:6906
 #, c-format
 msgid "The PPD file \"%s\" could not be opened: %s"
 msgstr "Soubor PPD \"%s\" nelze otevřít: %s"
 
-#: filter/rastertoepson.c:1038 filter/rastertohp.c:764
-#: filter/rastertolabel.c:1189
 msgid "The PPD file could not be opened."
 msgstr ""
 
-#: cgi-bin/admin.c:749
-msgid "The class name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
-msgstr "Název třídy může obsahovat až 127 tisknutelných znaků a nesmí obsahovat mezery, lomítka (/), nebo křížek (#)."
+msgid ""
+"The class name may only contain up to 127 printable characters and may not "
+"contain spaces, slashes (/), or the pound sign (#)."
+msgstr ""
+"Název třídy může obsahovat až 127 tisknutelných znaků a nesmí obsahovat "
+"mezery, lomítka (/), nebo křížek (#)."
 
-#: cups/localize.c:353
 msgid "The developer unit needs to be replaced."
 msgstr ""
 
-#: cups/localize.c:351
 msgid "The developer unit will need to be replaced soon."
 msgstr ""
 
-#: cups/localize.c:343
 msgid "The fuser's temperature is high."
 msgstr ""
 
-#: cups/localize.c:345
 msgid "The fuser's temperature is low."
 msgstr ""
 
-#: scheduler/ipp.c:2097
-msgid "The notify-lease-duration attribute cannot be used with job subscriptions."
+msgid ""
+"The notify-lease-duration attribute cannot be used with job subscriptions."
 msgstr "Atribut \"notify-lease-duration\" nelze použít s přihlášenou úlohou."
 
-#: scheduler/ipp.c:2080 scheduler/ipp.c:5653
 #, c-format
 msgid "The notify-user-data value is too large (%d > 63 octets)."
 msgstr ""
 
-#: cups/localize.c:349
 msgid "The optical photoconductor needs to be replaced."
 msgstr ""
 
-#: cups/localize.c:347
 msgid "The optical photoconductor will need to be replaced soon."
 msgstr ""
 
-#: cups/localize.c:331
-msgid "The output bin is almost full."
-msgstr ""
-
-#: cups/localize.c:333
-msgid "The output bin is full."
-msgstr ""
-
-#: cups/localize.c:329
-msgid "The output bin is missing."
-msgstr ""
-
-#: cups/localize.c:325
-msgid "The paper tray is almost empty."
-msgstr ""
-
-#: cups/localize.c:327
-msgid "The paper tray is empty."
-msgstr ""
-
-#: cups/localize.c:323
-msgid "The paper tray is missing."
-msgstr ""
-
-#: cups/localize.c:306
-msgid "The paper tray needs to be filled."
+msgid "The printer configuration is incorrect or the printer no longer exists."
 msgstr ""
 
-#: backend/ipp.c:909
-msgid "The printer URI is incorrect or no longer exists."
+msgid "The printer did not respond."
 msgstr ""
 
-#: backend/lpd.c:619 backend/lpd.c:1009 backend/lpd.c:1091 backend/lpd.c:1141
-msgid "The printer did not respond."
+msgid "The printer is in use."
 msgstr ""
 
-#: backend/ipp.c:892 backend/ipp.c:899
-#, c-format
-msgid "The printer does not support IPP/%d.%d, trying IPP/%s."
+msgid "The printer is low on ink."
 msgstr ""
 
-#: backend/ipp.c:757 backend/ipp.c:874 backend/ipp.c:980 backend/ipp.c:1313
-#: backend/ipp.c:1464 backend/lpd.c:828 backend/socket.c:374
-#: backend/usb-unix.c:131 backend/usb-unix.c:424 backend/usb-unix.c:507
-msgid "The printer is in use."
+msgid "The printer is low on toner."
 msgstr ""
 
-#: backend/runloop.c:254 backend/runloop.c:374 cups/localize.c:311
 msgid "The printer is not connected."
 msgstr ""
 
-#: backend/ipp.c:735 backend/ipp.c:768 backend/ipp.c:870 backend/lpd.c:807
-#: backend/lpd.c:848 backend/socket.c:353 backend/socket.c:386
 msgid "The printer is not responding."
 msgstr ""
 
-#: backend/runloop.c:396
 msgid "The printer is now connected."
 msgstr ""
 
-#: backend/usb-darwin.c:1286
 msgid "The printer is now online."
 msgstr ""
 
-#: backend/usb-darwin.c:1307
 msgid "The printer is offline."
 msgstr ""
 
-#: cups/localize.c:335
-msgid "The printer is running low on ink."
-msgstr ""
-
-#: cups/localize.c:313
-msgid "The printer is running low on toner."
-msgstr ""
-
-#: backend/ipp.c:750 backend/lpd.c:821 backend/socket.c:367
 msgid "The printer is unreachable at this time."
 msgstr ""
 
-#: cups/localize.c:337
 msgid "The printer may be out of ink."
 msgstr ""
 
-#: cups/localize.c:315
 msgid "The printer may be out of toner."
 msgstr ""
 
-#: backend/ipp.c:744 backend/lpd.c:815 backend/socket.c:361
 msgid "The printer may not exist or is unavailable at this time."
 msgstr ""
 
-#: cgi-bin/admin.c:931
-msgid "The printer name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
-msgstr "Název tiskárny může obsahovat až 127 tisknutelných znaků a nesmí obsahovat mezery, lomítka (/), nebo křížek (#)."
+msgid ""
+"The printer name may only contain up to 127 printable characters and may not "
+"contain spaces, slashes (/), or the pound sign (#)."
+msgstr ""
+"Název tiskárny může obsahovat až 127 tisknutelných znaků a nesmí obsahovat "
+"mezery, lomítka (/), nebo křížek (#)."
 
-#: scheduler/ipp.c:876 scheduler/ipp.c:1136 scheduler/ipp.c:3198
-#: scheduler/ipp.c:3369 scheduler/ipp.c:5101 scheduler/ipp.c:5487
-#: scheduler/ipp.c:5801 scheduler/ipp.c:6359 scheduler/ipp.c:7124
-#: scheduler/ipp.c:7180 scheduler/ipp.c:7494 scheduler/ipp.c:7760
-#: scheduler/ipp.c:7849 scheduler/ipp.c:7882 scheduler/ipp.c:8205
-#: scheduler/ipp.c:8598 scheduler/ipp.c:8679 scheduler/ipp.c:9840
-#: scheduler/ipp.c:10294 scheduler/ipp.c:10624 scheduler/ipp.c:10706
-#: scheduler/ipp.c:10998
 msgid "The printer or class does not exist."
 msgstr ""
 
-#: scheduler/ipp.c:1304
 msgid "The printer or class is not shared."
 msgstr ""
 
-#: cups/localize.c:317
 msgid "The printer's cover is open."
 msgstr ""
 
-#: cups/localize.c:321
 msgid "The printer's door is open."
 msgstr ""
 
-#: cups/localize.c:319
 msgid "The printer's interlock is open."
 msgstr ""
 
-#: cups/localize.c:339
 msgid "The printer's waste bin is almost full."
 msgstr ""
 
-#: cups/localize.c:341
 msgid "The printer's waste bin is full."
 msgstr ""
 
-#: scheduler/ipp.c:982 scheduler/ipp.c:2261
 #, c-format
 msgid "The printer-uri \"%s\" contains invalid characters."
 msgstr "Tiskárna-URI \"%s\" obsahuje neplatné znaky."
 
-#: scheduler/ipp.c:3175
 msgid "The printer-uri attribute is required."
 msgstr ""
 
-#: scheduler/ipp.c:966
-msgid "The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
+msgid ""
+"The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
 msgstr "Tiskárna-URI musí být ve tvaru \"ipp://HOSTNAME/classes/CLASSNAME\"."
 
-#: scheduler/ipp.c:2245
-msgid "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
-msgstr "Tiskárna-URI musí být ve tvaru \"ipp://HOSTNAME/printers/PRINTERNAME\"."
+msgid ""
+"The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
+msgstr ""
+"Tiskárna-URI musí být ve tvaru \"ipp://HOSTNAME/printers/PRINTERNAME\"."
 
-#: cgi-bin/admin.c:474
-msgid "The subscription name may not contain spaces, slashes (/), question marks (?), or the pound sign (#)."
-msgstr "Název předplatného nesmí obsahovat mezery, lomítka (/), otazník (?), nebo křížek (#)."
+msgid ""
+"The subscription name may not contain spaces, slashes (/), question marks "
+"(?), or the pound sign (#)."
+msgstr ""
+"Název předplatného nesmí obsahovat mezery, lomítka (/), otazník (?), nebo "
+"křížek (#)."
 
-#: scheduler/client.c:2450
-msgid "The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to enable it."
+msgid ""
+"The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to "
+"enable it."
 msgstr ""
 
-#: scheduler/ipp.c:6454
 #, c-format
 msgid "The which-jobs value \"%s\" is not supported."
 msgstr ""
 
-#: scheduler/ipp.c:5731
 msgid "There are too many subscriptions."
 msgstr "Existuje příliš mnoho předplatných."
 
-#: cups/localize.c:308
-msgid "There is a paper jam."
-msgstr ""
-
-#: backend/usb-darwin.c:379 backend/usb-darwin.c:438 backend/usb-darwin.c:505
-#: backend/usb-darwin.c:526 backend/usb-libusb.c:235 backend/usb-libusb.c:256
 msgid "There was an unrecoverable USB error."
 msgstr ""
 
-#: ppdc/sample.c:435
 msgid "Thermal Transfer Media"
 msgstr "Termální tisková média"
 
-#: scheduler/ipp.c:1507
 msgid "Too many active jobs."
 msgstr "Příliš mnoho aktivních úloh."
 
-#: scheduler/ipp.c:1401
 #, c-format
 msgid "Too many job-sheets values (%d > 2)."
 msgstr ""
 
-#: scheduler/ipp.c:2529
 #, c-format
 msgid "Too many printer-state-reasons values (%d > %d)."
 msgstr ""
 
-#: ppdc/sample.c:289
 msgid "Transparency"
 msgstr "Průhlednost"
 
-#: ppdc/sample.c:284
 msgid "Tray"
 msgstr "Podavač"
 
-#: ppdc/sample.c:264
 msgid "Tray 1"
 msgstr "Podavač 1"
 
-#: ppdc/sample.c:265
 msgid "Tray 2"
 msgstr "Podavač 2"
 
-#: ppdc/sample.c:266
 msgid "Tray 3"
 msgstr "Podavač 3"
 
-#: ppdc/sample.c:267
 msgid "Tray 4"
 msgstr "Podavač 4"
 
-#: cups/http-support.c:1315
 msgid "URI Too Long"
 msgstr "URI je příliš dlouhá"
 
-#: ppdc/sample.c:138
+msgid "URI too large"
+msgstr ""
+
 msgid "US Ledger"
 msgstr "US Ledger"
 
-#: ppdc/sample.c:139
 msgid "US Legal"
 msgstr "US Legal"
 
-#: ppdc/sample.c:140
 msgid "US Legal Oversize"
 msgstr ""
 
-#: ppdc/sample.c:141
 msgid "US Letter"
 msgstr "US Letter"
 
-#: ppdc/sample.c:142
 msgid "US Letter Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:143
 msgid "US Letter Oversize"
 msgstr ""
 
-#: ppdc/sample.c:144
 msgid "US Letter Oversize Long Edge"
 msgstr ""
 
-#: ppdc/sample.c:145
 msgid "US Letter Small"
 msgstr ""
 
-#: cgi-bin/admin.c:1959 cgi-bin/admin.c:1972 cgi-bin/admin.c:1996
 msgid "Unable to access cupsd.conf file"
 msgstr "Nelze získat přístup k souboru \"cupsd.conf\""
 
-#: cgi-bin/help.c:133
 msgid "Unable to access help file."
 msgstr ""
 
-#: cgi-bin/admin.c:526
 msgid "Unable to add RSS subscription"
 msgstr "Nelze přidat RSS předplatné"
 
-#: cgi-bin/admin.c:814
 msgid "Unable to add class"
 msgstr "Nelze přidat třídu"
 
-#: backend/ipp.c:1635
 msgid "Unable to add document to print job."
 msgstr ""
 
-#: scheduler/ipp.c:1548
 #, c-format
 msgid "Unable to add job for destination \"%s\"."
 msgstr ""
 
-#: cgi-bin/admin.c:1059 cgi-bin/admin.c:1419
 msgid "Unable to add printer"
 msgstr "Nelze přidat tiskárnu"
 
-#: scheduler/ipp.c:1246
 msgid "Unable to allocate memory for file types."
 msgstr ""
 
-#: filter/pstops.c:451
 msgid "Unable to allocate memory for page info"
 msgstr ""
 
-#: filter/pstops.c:445
 msgid "Unable to allocate memory for pages array"
 msgstr ""
 
-#: cgi-bin/admin.c:1525
 msgid "Unable to cancel RSS subscription"
 msgstr "Nelze zrušit RSS předplatné"
 
-#: backend/ipp.c:1942
 msgid "Unable to cancel print job."
 msgstr ""
 
-#: cgi-bin/admin.c:2990
 msgid "Unable to change printer"
 msgstr "Nelze změnit tiskárnu"
 
-#: cgi-bin/admin.c:3906
 msgid "Unable to change printer-is-shared attribute"
 msgstr "Nelze změnit atribut \"sdílení tiskárny\""
 
-#: cgi-bin/admin.c:1657 cgi-bin/admin.c:1799
 msgid "Unable to change server settings"
 msgstr "Nelze změnit nastavení serveru"
 
-#: filter/commandtops.c:420
+#, c-format
+msgid "Unable to compile mimeMediaType regular expression: %s."
+msgstr ""
+
+#, c-format
+msgid "Unable to compile naturalLanguage regular expression: %s."
+msgstr ""
+
 msgid "Unable to configure printer options."
 msgstr ""
 
-#: cups/adminutil.c:911 cups/request.c:1016
 msgid "Unable to connect to host."
 msgstr "Nelze se připojit k hostiteli."
 
-#: backend/ipp.c:713 backend/ipp.c:1138 backend/lpd.c:787 backend/socket.c:333
-#: backend/usb-unix.c:117
 msgid "Unable to contact printer, queuing on next printer in class."
 msgstr ""
 
-#: cups/adminutil.c:726
 #, c-format
 msgid "Unable to copy 64-bit CUPS printer driver files (%d)."
 msgstr ""
 
-#: cups/adminutil.c:691
 #, c-format
 msgid "Unable to copy 64-bit Windows printer driver files (%d)."
 msgstr ""
 
-#: cups/adminutil.c:522
 #, c-format
 msgid "Unable to copy CUPS printer driver files (%d)."
 msgstr ""
 
-#: scheduler/ipp.c:2649
 #, c-format
 msgid "Unable to copy PPD file - %s"
 msgstr ""
 
-#: scheduler/ipp.c:2704
 msgid "Unable to copy PPD file."
 msgstr ""
 
-#: cups/adminutil.c:487
 #, c-format
 msgid "Unable to copy Windows 2000 printer driver files (%d)."
 msgstr ""
 
-#: cups/adminutil.c:610
 #, c-format
 msgid "Unable to copy Windows 9x printer driver files (%d)."
 msgstr ""
 
-#: scheduler/ipp.c:2626
 #, c-format
 msgid "Unable to copy interface script - %s"
 msgstr ""
 
-#: backend/ipp.c:2034
-msgid "Unable to create compressed print file"
+msgid "Unable to create printer-uri"
 msgstr ""
 
-#: cups/util.c:602 cups/util.c:1656
-msgid "Unable to create printer-uri"
+msgid "Unable to create server credentials."
 msgstr ""
 
-#: cgi-bin/admin.c:1850 cgi-bin/admin.c:1862 scheduler/cupsfilter.c:1236
 msgid "Unable to create temporary file"
 msgstr ""
 
-#: cgi-bin/admin.c:2153
 msgid "Unable to delete class"
 msgstr "Nelze vymazat třídu"
 
-#: cgi-bin/admin.c:2238
 msgid "Unable to delete printer"
 msgstr "Nelze vymazat tiskárnu"
 
-#: cgi-bin/classes.c:260 cgi-bin/printers.c:269
 msgid "Unable to do maintenance command"
 msgstr "Nelze provést příkaz údržby"
 
-#: cgi-bin/admin.c:1974
 msgid "Unable to edit cupsd.conf files larger than 1MB"
 msgstr ""
 
-#: cups/http.c:4272
-msgid "Unable to establish a secure connection to host (certificate chain invalid)."
+msgid ""
+"Unable to establish a secure connection to host (certificate chain invalid)."
 msgstr ""
 
-#: cups/http.c:4262
-msgid "Unable to establish a secure connection to host (certificate not yet valid)."
+msgid ""
+"Unable to establish a secure connection to host (certificate not yet valid)."
 msgstr ""
 
-#: cups/http.c:4257
 msgid "Unable to establish a secure connection to host (expired certificate)."
 msgstr ""
 
-#: cups/http.c:4267
 msgid "Unable to establish a secure connection to host (host name mismatch)."
 msgstr ""
 
-#: cups/http.c:4277
-msgid "Unable to establish a secure connection to host (peer dropped connection before responding)."
+msgid ""
+"Unable to establish a secure connection to host (peer dropped connection "
+"before responding)."
 msgstr ""
 
-#: cups/http.c:4252
-msgid "Unable to establish a secure connection to host (self-signed certificate)."
+msgid ""
+"Unable to establish a secure connection to host (self-signed certificate)."
 msgstr ""
 
-#: cups/http.c:4247
-msgid "Unable to establish a secure connection to host (untrusted certificate)."
+msgid ""
+"Unable to establish a secure connection to host (untrusted certificate)."
 msgstr ""
 
-#: cups/http.c:4008 cups/http.c:4304 cups/http.c:4337 cups/http.c:4354
 msgid "Unable to establish a secure connection to host."
 msgstr ""
 
-#: cgi-bin/ipp-var.c:365
 msgid "Unable to find destination for job"
 msgstr ""
 
-#: cups/http-support.c:1748
 msgid "Unable to find printer."
 msgstr ""
 
-#: backend/ipp.c:2056
-msgid "Unable to generate compressed print file"
+msgid "Unable to find server credentials."
 msgstr ""
 
-#: backend/ipp.c:3009
 msgid "Unable to get backend exit status."
 msgstr ""
 
-#: cgi-bin/classes.c:450
 msgid "Unable to get class list"
 msgstr "Nelze získat seznam tříd"
 
-#: cgi-bin/classes.c:549
 msgid "Unable to get class status"
 msgstr "Nelze získat stav třídy"
 
-#: cgi-bin/admin.c:1320
 msgid "Unable to get list of printer drivers"
 msgstr "Nelze získat seznam ovladačů tiskárny"
 
-#: cgi-bin/admin.c:2840
 msgid "Unable to get printer attributes"
 msgstr "Nelze získat atributy tiskárny"
 
-#: cgi-bin/printers.c:467
 msgid "Unable to get printer list"
 msgstr "Nelze získat seznam tiskáren"
 
-#: cgi-bin/printers.c:569
 msgid "Unable to get printer status"
 msgstr ""
 
-#: backend/ipp.c:933
 msgid "Unable to get printer status."
 msgstr "Nelze získat stav tiskárny."
 
-#: cups/adminutil.c:565 cups/adminutil.c:769
 #, c-format
 msgid "Unable to install Windows 2000 printer driver files (%d)."
 msgstr ""
 
-#: cups/adminutil.c:639
 #, c-format
 msgid "Unable to install Windows 9x printer driver files (%d)."
 msgstr ""
 
-#: cgi-bin/help.c:92
 msgid "Unable to load help index."
 msgstr ""
 
-#: backend/ipp.c:642 backend/lpd.c:421 backend/socket.c:275
 #, c-format
 msgid "Unable to locate printer \"%s\"."
 msgstr ""
 
-#: backend/dnssd.c:781 backend/ipp.c:324 backend/lpd.c:204
-#: backend/socket.c:171
 msgid "Unable to locate printer."
 msgstr ""
 
-#: cgi-bin/admin.c:813
 msgid "Unable to modify class"
 msgstr "Nelze změnit třídu"
 
-#: cgi-bin/admin.c:1058 cgi-bin/admin.c:1418
 msgid "Unable to modify printer"
 msgstr "Nelze změnit tiskárnu"
 
-#: cgi-bin/ipp-var.c:432 cgi-bin/ipp-var.c:521
 msgid "Unable to move job"
 msgstr "Nelze přesunout úlohu"
 
-#: cgi-bin/ipp-var.c:434 cgi-bin/ipp-var.c:523
 msgid "Unable to move jobs"
 msgstr "Nelze přesunout úlohy"
 
-#: cgi-bin/admin.c:3186 cups/ppd.c:339
 msgid "Unable to open PPD file"
 msgstr "Nelze otevřít PPD soubor"
 
-#: backend/ipp.c:2040
-msgid "Unable to open compressed print file"
-msgstr ""
-
-#: cgi-bin/admin.c:2608
 msgid "Unable to open cupsd.conf file:"
 msgstr "Nelze otevřít soubor \"cupsd.conf\":"
 
-#: backend/usb-unix.c:141
 msgid "Unable to open device file"
 msgstr ""
 
-#: scheduler/ipp.c:6140
 #, c-format
 msgid "Unable to open document #%d in job #%d."
 msgstr ""
 
-#: cgi-bin/help.c:364
 msgid "Unable to open help file."
 msgstr ""
 
-#: backend/ipp.c:365 backend/ipp.c:1398 backend/ipp.c:1594 backend/ipp.c:2046
-#: backend/lpd.c:488 backend/socket.c:158 backend/usb.c:237
-#: filter/gziptoany.c:71 filter/pstops.c:300
 msgid "Unable to open print file"
 msgstr ""
 
-#: filter/rastertoepson.c:998 filter/rastertohp.c:724
-#: filter/rastertolabel.c:1147
 msgid "Unable to open raster file"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:795
 msgid "Unable to print test page"
 msgstr "Nelze vytisknout zkušební stránku"
 
-#: backend/runloop.c:96 backend/runloop.c:325 backend/usb-darwin.c:613
-#: backend/usb-darwin.c:657 backend/usb-libusb.c:343 backend/usb-libusb.c:378
 msgid "Unable to read print data."
 msgstr ""
 
-#: cups/dest.c:3402
-msgid "Unable to resolve printer URI."
+msgid "Unable to resolve printer-uri."
 msgstr ""
 
-#: cups/adminutil.c:2088
 #, c-format
 msgid "Unable to run \"%s\": %s"
 msgstr ""
 
-#: filter/pstops.c:563
 msgid "Unable to see in file"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:598 cgi-bin/ipp-var.c:618
 msgid "Unable to send command to printer driver"
 msgstr ""
 
-#: backend/usb-darwin.c:735 backend/usb-libusb.c:454
 msgid "Unable to send data to printer."
 msgstr ""
 
-#: cups/adminutil.c:821
 #, c-format
 msgid "Unable to set Windows printer driver (%d)."
 msgstr ""
 
-#: cgi-bin/admin.c:3807
 msgid "Unable to set options"
 msgstr "Nelze nastavit parametry"
 
-#: cgi-bin/admin.c:3077
 msgid "Unable to set server default"
 msgstr "Nelze nastavit výchozí server"
 
-#: backend/ipp.c:2868 backend/ipp.c:2945 backend/ipp.c:2953
 msgid "Unable to start backend process."
 msgstr ""
 
-#: cgi-bin/admin.c:1912
 msgid "Unable to upload cupsd.conf file"
 msgstr "Nelze nahrát soubor \"cupsd.conf\""
 
-#: backend/usb-darwin.c:1985 backend/usb-darwin.c:2009
 msgid "Unable to use legacy USB class driver."
 msgstr ""
 
-#: backend/runloop.c:125 backend/runloop.c:380
 msgid "Unable to write print data"
 msgstr ""
 
-#: filter/gziptoany.c:90
 #, c-format
 msgid "Unable to write uncompressed print data: %s"
 msgstr ""
 
-#: cups/http-support.c:1303
 msgid "Unauthorized"
 msgstr "Nepovolený"
 
-#: cgi-bin/admin.c:3503
 msgid "Units"
 msgstr "Jednotky"
 
-#: cups/http-support.c:1343 cups/ppd.c:366
 msgid "Unknown"
 msgstr "Neznámý"
 
-#: filter/pstops.c:2213
 #, c-format
 msgid "Unknown choice \"%s\" for option \"%s\"."
 msgstr ""
 
-#: backend/ipp.c:507
 #, c-format
 msgid "Unknown encryption option value: \"%s\"."
 msgstr ""
 
-#: backend/lpd.c:350
 #, c-format
 msgid "Unknown file order: \"%s\"."
 msgstr ""
 
-#: backend/lpd.c:321
 #, c-format
 msgid "Unknown format character: \"%c\"."
 msgstr ""
 
-#: cups/dest-options.c:770
 msgid "Unknown media size name."
 msgstr ""
 
-#: backend/ipp.c:554
 #, c-format
 msgid "Unknown option \"%s\" with value \"%s\"."
 msgstr ""
 
-#: filter/pstops.c:2196
 #, c-format
 msgid "Unknown option \"%s\"."
 msgstr ""
 
-#: backend/lpd.c:336
 #, c-format
 msgid "Unknown print mode: \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:10496
 #, c-format
 msgid "Unknown printer-error-policy \"%s\"."
 msgstr "Neznámá printer-error-policy „%s“."
 
-#: scheduler/ipp.c:10479
 #, c-format
 msgid "Unknown printer-op-policy \"%s\"."
 msgstr "Neznámá printer-op-policy „%s“."
 
-#: cups/http-addrlist.c:710
+msgid "Unknown request method."
+msgstr ""
+
+msgid "Unknown request version."
+msgstr ""
+
+msgid "Unknown scheme in URI"
+msgstr ""
+
 msgid "Unknown service name."
 msgstr ""
 
-#: backend/ipp.c:526
 #, c-format
 msgid "Unknown version option value: \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:402
+#, c-format
+msgid "Unsupported 'compression' value \"%s\"."
+msgstr ""
+
+#, c-format
+msgid "Unsupported 'document-format' value \"%s\"."
+msgstr ""
+
+msgid "Unsupported 'job-name' value."
+msgstr ""
+
 #, c-format
 msgid "Unsupported character set \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:8171 scheduler/ipp.c:9401 scheduler/ipp.c:10950
 #, c-format
 msgid "Unsupported compression \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:8305 scheduler/ipp.c:9551 scheduler/ipp.c:10979
 #, c-format
 msgid "Unsupported document-format \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:9534
 #, c-format
 msgid "Unsupported document-format \"%s/%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:1367
 #, c-format
 msgid "Unsupported format \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:1465
 msgid "Unsupported margins."
 msgstr ""
 
-#: cups/pwg-media.c:529
 msgid "Unsupported media value."
 msgstr ""
 
-#: filter/pstops.c:2478
 #, c-format
 msgid "Unsupported number-up value %d, using number-up=1."
 msgstr ""
 
-#: filter/pstops.c:2512
 #, c-format
 msgid "Unsupported number-up-layout value %s, using number-up-layout=lrtb."
 msgstr ""
 
-#: filter/pstops.c:2563
 #, c-format
 msgid "Unsupported page-border value %s, using page-border=none."
 msgstr ""
 
-#: filter/rastertopwg.c:147 filter/rastertopwg.c:155 filter/rastertopwg.c:164
 msgid "Unsupported raster data."
 msgstr ""
 
-#: cups/snmp.c:1112
 msgid "Unsupported value type"
 msgstr "Nepodporovaný typ hodnoty"
 
-#: cups/http-support.c:1318
 msgid "Upgrade Required"
 msgstr "Povinné aktualizace"
 
-#: systemv/lpadmin.c:668
 msgid ""
 "Usage:\n"
 "\n"
@@ -5514,47 +4690,49 @@ msgid ""
 "                       [-u allow:user,user] [-u deny:user,user]"
 msgstr ""
 
-#: backend/dnssd.c:241 backend/ipp.c:313 backend/lpd.c:191
-#: backend/socket.c:135 backend/usb.c:183 filter/commandtops.c:74
-#: filter/gziptoany.c:50 filter/pstops.c:264 monitor/bcp.c:62
-#: monitor/tbcp.c:61
 #, c-format
 msgid "Usage: %s job-id user title copies options [file]"
 msgstr ""
 
-#: systemv/cupsaddsmb.c:281
 msgid "Usage: cupsaddsmb [options] printer1 ... printerN"
 msgstr ""
 
-#: systemv/cupsctl.c:200
 msgid "Usage: cupsctl [options] [param=value ... paramN=valueN]"
 msgstr ""
 
-#: scheduler/main.c:2017
 msgid "Usage: cupsd [options]"
 msgstr ""
 
-#: scheduler/cupsfilter.c:1429
-msgid "Usage: cupsfilter [ options ] filename"
+msgid "Usage: cupsfilter [ options ] [ -- ] filename"
 msgstr ""
 
-#: systemv/cupstestdsc.c:425
 msgid "Usage: cupstestdsc [options] filename.ps [... filename.ps]"
 msgstr ""
 
-#: systemv/cupstestppd.c:3793
-msgid "Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]"
+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 ""
+
+msgid ""
+"Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n"
+"       ippfind [options] name[.regtype[.domain.]] ... [expression]\n"
+"       ippfind --help\n"
+"       ippfind --version"
 msgstr ""
 
-#: test/ipptool.c:4401
 msgid "Usage: ipptool [options] URI filename [ ... filenameN ]"
 msgstr ""
 
-#: systemv/lpmove.c:125
 msgid "Usage: lpmove job/src dest"
 msgstr ""
 
-#: systemv/lpoptions.c:553
 msgid ""
 "Usage: lpoptions [-h server] [-E] -d printer\n"
 "       lpoptions [-h server] [-E] [-p printer] -l\n"
@@ -5562,1160 +4740,949 @@ msgid ""
 "       lpoptions [-h server] [-E] -x printer"
 msgstr ""
 
-#: systemv/lppasswd.c:476
-msgid "Usage: lppasswd [-g groupname]"
-msgstr ""
-
-#: systemv/lppasswd.c:479
 msgid ""
-"Usage: lppasswd [-g groupname] [username]\n"
-"       lppasswd [-g groupname] -a [username]\n"
-"       lppasswd [-g groupname] -x [username]"
-msgstr ""
-
-#: berkeley/lpq.c:670
-msgid "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
+"Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
 msgstr ""
 
-#: ppdc/ppdc.cxx:435
 msgid "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]"
 msgstr ""
 
-#: ppdc/ppdhtml.cxx:172
 msgid "Usage: ppdhtml [options] filename.drv >filename.html"
 msgstr ""
 
-#: ppdc/ppdi.cxx:128
 msgid "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]"
 msgstr ""
 
-#: ppdc/ppdmerge.cxx:367
 msgid "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]"
 msgstr ""
 
-#: ppdc/ppdpo.cxx:252
-msgid "Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]"
+msgid ""
+"Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]"
 msgstr ""
 
-#: backend/snmp.c:218
 msgid "Usage: snmp [host-or-ip-address]"
 msgstr ""
 
-#: cups/snmp.c:1064
 msgid "Value uses indefinite length"
 msgstr "Hodnota má neomezenou délku"
 
-#: cups/snmp.c:1049
 msgid "VarBind uses indefinite length"
 msgstr "VarBind má neomezenou délku"
 
-#: cups/snmp.c:999
 msgid "Version uses indefinite length"
 msgstr "Version má neomezenou délku"
 
-#: backend/ipp.c:1675
 msgid "Waiting for job to complete."
 msgstr ""
 
-#: backend/usb-darwin.c:457 backend/usb-libusb.c:193
 msgid "Waiting for printer to become available."
 msgstr ""
 
-#: backend/socket.c:444
 msgid "Waiting for printer to finish."
 msgstr ""
 
-#: cups/adminutil.c:793
 msgid "Warning, no Windows 2000 printer drivers are installed."
 msgstr ""
 
-#: cups/http-support.c:1339
 msgid "Web Interface is Disabled"
 msgstr ""
 
-#: cups/ppd.c:1947
 msgid "Yes"
 msgstr "Ano"
 
-#: scheduler/client.c:2437
 #, c-format
-msgid "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
-msgstr Pro přístup k této stránce, použijte adresu URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
-
-#: systemv/lppasswd.c:254
-msgid "Your password must be at least 6 characters long, cannot contain your username, and must contain at least one letter and number."
+msgid ""
+"You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://"
+"%s:%d%s</A>."
 msgstr ""
+"Pro přístup k této stránce, použijte adresu URL <A HREF=\"https://%s:%d%s"
+"\">https://%s:%d%s</A>."
 
-#: ppdc/sample.c:439
 msgid "ZPL Label Printer"
 msgstr "Tiskárna štítků ZPL"
 
-#: ppdc/sample.c:362
 msgid "Zebra"
 msgstr "Zebra"
 
-#: cups/notify.c:102
 msgid "aborted"
 msgstr "zrušeno"
 
-#: cups/notify.c:99
 msgid "canceled"
 msgstr "zrušeno"
 
-#: cups/notify.c:105
 msgid "completed"
 msgstr "dokončeno"
 
-#: scheduler/ipp.c:6012
 msgid "cups-deviced failed to execute."
 msgstr "Nepodařilo se spustit \"cups-deviced\"."
 
-#: scheduler/ipp.c:6842 scheduler/ipp.c:7091
 msgid "cups-driverd failed to execute."
 msgstr "Nepodařilo se spustit \"cups-driverd\"."
 
-#: systemv/cupsaddsmb.c:233
 #, c-format
 msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s"
 msgstr ""
 
-#: systemv/cupsctl.c:141
 msgid "cupsctl: Cannot set Listen or Port directly."
 msgstr ""
 
-#: systemv/cupsctl.c:152
 #, c-format
 msgid "cupsctl: Unable to connect to server: %s"
 msgstr ""
 
-#: systemv/cupsctl.c:195
 #, c-format
 msgid "cupsctl: Unknown option \"%s\""
 msgstr ""
 
-#: systemv/cupsctl.c:197
 #, c-format
 msgid "cupsctl: Unknown option \"-%c\""
 msgstr ""
 
-#: scheduler/main.c:189
 msgid "cupsd: Expected config filename after \"-c\" option."
 msgstr ""
 
-#: scheduler/main.c:221 scheduler/main.c:228
+msgid "cupsd: Expected cups-files.conf filename after \"-s\" option."
+msgstr ""
+
+msgid "cupsd: On-demand support not compiled in, running in normal mode."
+msgstr ""
+
+msgid "cupsd: Relative cups-files.conf filename not allowed."
+msgstr ""
+
 msgid "cupsd: Unable to get current directory."
 msgstr ""
 
-#: scheduler/main.c:295
+msgid "cupsd: Unable to get path to cups-files.conf file."
+msgstr ""
+
 #, c-format
 msgid "cupsd: Unknown argument \"%s\" - aborting."
 msgstr ""
 
-#: scheduler/main.c:288
 #, c-format
 msgid "cupsd: Unknown option \"%c\" - aborting."
 msgstr ""
 
-#: scheduler/main.c:255
-msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
-msgstr ""
-
-#: scheduler/cupsfilter.c:1209
 #, c-format
 msgid "cupsfilter: Invalid document number %d."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1203
 #, c-format
 msgid "cupsfilter: Invalid job ID %d."
 msgstr ""
 
-#: scheduler/cupsfilter.c:358
 msgid "cupsfilter: Only one filename can be specified."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1251
 #, c-format
 msgid "cupsfilter: Unable to get job file - %s"
 msgstr ""
 
-#: systemv/cupstestppd.c:261
 msgid "cupstestppd: The -q option is incompatible with the -v option."
 msgstr ""
 
-#: systemv/cupstestppd.c:277
 msgid "cupstestppd: The -v option is incompatible with the -q option."
 msgstr ""
 
-#: systemv/lpstat.c:1231 systemv/lpstat.c:1234 systemv/lpstat.c:1237
 #, c-format
 msgid "device for %s/%s: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1218 systemv/lpstat.c:1221 systemv/lpstat.c:1224
 #, c-format
 msgid "device for %s: %s"
 msgstr ""
 
-#: cups/snmp.c:1036
 msgid "error-index uses indefinite length"
 msgstr "\"error-index\" má neomezenou délku"
 
-#: cups/snmp.c:1028
 msgid "error-status uses indefinite length"
 msgstr "\"error-status\" má neomezenou délku"
 
-#: cups/notify.c:90
 msgid "held"
 msgstr "pozastaveno"
 
-#: berkeley/lpc.c:209
 msgid "help\t\tGet help on commands."
 msgstr ""
 
-#: cups/notify.c:131
 msgid "idle"
 msgstr "čeká"
 
-#: test/ipptool.c:373 test/ipptool.c:515 test/ipptool.c:539
-msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
+#, c-format
+msgid "ippfind: Bad regular expression: %s"
+msgstr ""
+
+msgid "ippfind: Cannot use --and after --or."
 msgstr ""
 
-#: test/ipptool.c:597
 #, c-format
-msgid "ipptool: Bad URI - %s."
+msgid "ippfind: Expected key name after %s."
+msgstr ""
+
+#, c-format
+msgid "ippfind: Expected port range after %s."
+msgstr ""
+
+#, c-format
+msgid "ippfind: Expected program after %s."
+msgstr ""
+
+#, c-format
+msgid "ippfind: Expected semi-colon after %s."
+msgstr ""
+
+msgid "ippfind: Missing close brace in substitution."
+msgstr ""
+
+msgid "ippfind: Missing close parenthesis."
+msgstr ""
+
+msgid "ippfind: Missing expression before \"--and\"."
+msgstr ""
+
+msgid "ippfind: Missing expression before \"--or\"."
+msgstr ""
+
+#, c-format
+msgid "ippfind: Missing key name after %s."
+msgstr ""
+
+msgid "ippfind: Missing open parenthesis."
+msgstr ""
+
+#, c-format
+msgid "ippfind: Missing program after %s."
+msgstr ""
+
+#, c-format
+msgid "ippfind: Missing regular expression after %s."
+msgstr ""
+
+#, c-format
+msgid "ippfind: Missing semi-colon after %s."
+msgstr ""
+
+msgid "ippfind: Out of memory."
+msgstr ""
+
+msgid "ippfind: Too many parenthesis."
+msgstr ""
+
+#, c-format
+msgid "ippfind: Unable to browse or resolve: %s"
+msgstr ""
+
+#, c-format
+msgid "ippfind: Unable to execute \"%s\": %s"
+msgstr ""
+
+#, c-format
+msgid "ippfind: Unable to use Bonjour: %s"
+msgstr ""
+
+#, c-format
+msgid "ippfind: Unknown variable \"{%s}\"."
+msgstr ""
+
+msgid "ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"."
 msgstr ""
 
-#: test/ipptool.c:362
 #, c-format
-msgid "ipptool: Bad version %s for \"-V\"."
+msgid "ipptool: Bad URI - %s."
 msgstr ""
 
-#: test/ipptool.c:508
 msgid "ipptool: Invalid seconds for \"-i\"."
 msgstr ""
 
-#: test/ipptool.c:578
 msgid "ipptool: May only specify a single URI."
 msgstr ""
 
-#: test/ipptool.c:531
 msgid "ipptool: Missing count for \"-n\"."
 msgstr ""
 
-#: test/ipptool.c:408
 msgid "ipptool: Missing filename for \"-f\"."
 msgstr ""
 
-#: test/ipptool.c:389
 msgid "ipptool: Missing name=value for \"-d\"."
 msgstr ""
 
-#: test/ipptool.c:498
 msgid "ipptool: Missing seconds for \"-i\"."
 msgstr ""
 
-#: test/ipptool.c:332
-msgid "ipptool: Missing timeout for \"-T\"."
-msgstr ""
-
-#: test/ipptool.c:345
-msgid "ipptool: Missing version for \"-V\"."
-msgstr ""
-
-#: test/ipptool.c:624
 msgid "ipptool: URI required before test file."
 msgstr ""
 
-#: test/ipptool.c:558
 #, c-format
 msgid "ipptool: Unknown option \"-%c\"."
 msgstr ""
 
-#: scheduler/ipp.c:7838
 msgid "job-printer-uri attribute missing."
 msgstr ""
 
-#: systemv/lpadmin.c:131 systemv/lpadmin.c:375
 msgid "lpadmin: Class name can only contain printable characters."
 msgstr ""
 
-#: systemv/lpadmin.c:614
 msgid "lpadmin: Expected PPD after \"-P\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:457
 msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:364
 msgid "lpadmin: Expected class after \"-r\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:120
 msgid "lpadmin: Expected class name after \"-c\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:558
 msgid "lpadmin: Expected description after \"-D\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:491
 msgid "lpadmin: Expected device URI after \"-v\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:574
 msgid "lpadmin: Expected file type(s) after \"-I\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:202
 msgid "lpadmin: Expected hostname after \"-h\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:221
 msgid "lpadmin: Expected interface after \"-i\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:594
 msgid "lpadmin: Expected location after \"-L\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:274
 msgid "lpadmin: Expected model after \"-m\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:417
 msgid "lpadmin: Expected name after \"-R\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:294
 msgid "lpadmin: Expected name=value after \"-o\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:313
 msgid "lpadmin: Expected printer after \"-p\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:164
 msgid "lpadmin: Expected printer name after \"-d\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:525
 msgid "lpadmin: Expected printer or class after \"-x\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:975
 msgid "lpadmin: No member names were seen."
 msgstr ""
 
-#: systemv/lpadmin.c:762
 #, c-format
 msgid "lpadmin: Printer %s is already a member of class %s."
 msgstr ""
 
-#: systemv/lpadmin.c:989
 #, c-format
 msgid "lpadmin: Printer %s is not a member of class %s."
 msgstr ""
 
-#: systemv/lpadmin.c:175 systemv/lpadmin.c:324 systemv/lpadmin.c:536
 msgid "lpadmin: Printer name can only contain printable characters."
 msgstr ""
 
-#: systemv/lpadmin.c:105
 msgid ""
 "lpadmin: Unable to add a printer to the class:\n"
 "         You must specify a printer name first."
 msgstr ""
 
-#: systemv/lpadmin.c:96 systemv/lpadmin.c:149 systemv/lpadmin.c:253
-#: systemv/lpadmin.c:339 systemv/lpadmin.c:393 systemv/lpadmin.c:510
-#: systemv/lpadmin.c:647
 #, c-format
 msgid "lpadmin: Unable to connect to server: %s"
 msgstr ""
 
-#: systemv/lpadmin.c:1329
 msgid "lpadmin: Unable to create temporary file"
 msgstr ""
 
-#: systemv/lpadmin.c:402
 msgid ""
 "lpadmin: Unable to delete option:\n"
 "         You must specify a printer name first."
 msgstr ""
 
-#: systemv/lpadmin.c:1339
 #, c-format
 msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
 msgstr ""
 
-#: systemv/lpadmin.c:348
 msgid ""
 "lpadmin: Unable to remove a printer from the class:\n"
 "         You must specify a printer name first."
 msgstr ""
 
-#: systemv/lpadmin.c:656
 msgid ""
 "lpadmin: Unable to set the printer options:\n"
 "         You must specify a printer name first."
 msgstr ""
 
-#: systemv/lpadmin.c:474
 #, c-format
 msgid "lpadmin: Unknown allow/deny option \"%s\"."
 msgstr ""
 
-#: systemv/lpadmin.c:629
 #, c-format
 msgid "lpadmin: Unknown argument \"%s\"."
 msgstr ""
 
-#: systemv/lpadmin.c:624
 #, c-format
 msgid "lpadmin: Unknown option \"%c\"."
 msgstr ""
 
-#: systemv/lpadmin.c:580
 msgid "lpadmin: Warning - content type list ignored."
 msgstr ""
 
-#: berkeley/lpc.c:76 berkeley/lpc.c:104 berkeley/lpc.c:140
 msgid "lpc> "
 msgstr "lpc> "
 
-#: systemv/lpinfo.c:137
 msgid "lpinfo: Expected 1284 device ID string after \"--device-id\"."
 msgstr ""
 
-#: systemv/lpinfo.c:190
 msgid "lpinfo: Expected language after \"--language\"."
 msgstr ""
 
-#: systemv/lpinfo.c:207
 msgid "lpinfo: Expected make and model after \"--make-and-model\"."
 msgstr ""
 
-#: systemv/lpinfo.c:224
 msgid "lpinfo: Expected product string after \"--product\"."
 msgstr ""
 
-#: systemv/lpinfo.c:155
 msgid "lpinfo: Expected scheme list after \"--exclude-schemes\"."
 msgstr ""
 
-#: systemv/lpinfo.c:173
 msgid "lpinfo: Expected scheme list after \"--include-schemes\"."
 msgstr ""
 
-#: systemv/lpinfo.c:241
 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
 #, c-format
 msgid "lpmove: Unknown argument \"%s\"."
 msgstr ""
 
-#: systemv/lpmove.c:97
 #, c-format
 msgid "lpmove: Unknown option \"%c\"."
 msgstr ""
 
-#: systemv/lpoptions.c:150 systemv/lpoptions.c:168 systemv/lpoptions.c:244
 msgid "lpoptions: No printers."
 msgstr ""
 
-#: systemv/lpoptions.c:219
 #, c-format
 msgid "lpoptions: Unable to add printer or instance: %s"
 msgstr ""
 
-#: systemv/lpoptions.c:521
 #, c-format
 msgid "lpoptions: Unable to get PPD file for %s: %s"
 msgstr ""
 
-#: systemv/lpoptions.c:529
 #, c-format
 msgid "lpoptions: Unable to open PPD file for %s."
 msgstr ""
 
-#: systemv/lpoptions.c:99
 msgid "lpoptions: Unknown printer or class."
 msgstr ""
 
-#: systemv/lppasswd.c:173
-msgid "lppasswd: Only root can add or delete passwords."
-msgstr ""
-
-#: systemv/lppasswd.c:302
-msgid "lppasswd: Password file busy."
-msgstr ""
-
-#: systemv/lppasswd.c:431
-msgid "lppasswd: Password file not updated."
-msgstr ""
-
-#: systemv/lppasswd.c:398
-msgid "lppasswd: Sorry, password doesn't match."
-msgstr ""
-
-#: systemv/lppasswd.c:253
-msgid "lppasswd: Sorry, password rejected."
-msgstr ""
-
-#: systemv/lppasswd.c:230
-msgid "lppasswd: Sorry, passwords don't match."
-msgstr ""
-
-#: systemv/lppasswd.c:199 systemv/lppasswd.c:218
-#, c-format
-msgid "lppasswd: Unable to copy password string: %s"
-msgstr ""
-
-#: systemv/lppasswd.c:304 systemv/lppasswd.c:312 systemv/lppasswd.c:329
-#, c-format
-msgid "lppasswd: Unable to open password file: %s"
-msgstr ""
-
-#: systemv/lppasswd.c:364 systemv/lppasswd.c:377 systemv/lppasswd.c:408
-#, c-format
-msgid "lppasswd: Unable to write to password file: %s"
-msgstr ""
-
-#: systemv/lppasswd.c:446
-#, c-format
-msgid "lppasswd: failed to backup old password file: %s"
-msgstr ""
-
-#: systemv/lppasswd.c:458
 #, c-format
-msgid "lppasswd: failed to rename password file: %s"
-msgstr ""
-
-#: systemv/lppasswd.c:389
-#, c-format
-msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
-msgstr ""
-
-#: systemv/lpstat.c:1039
-#, c-format
-msgid "lpstat: error - %s environment variable names non-existent destination \"%s\"."
+msgid ""
+"lpstat: error - %s environment variable names non-existent destination \"%s"
+"\"."
 msgstr ""
 
-#: systemv/lpstat.c:970
 #, c-format
 msgid "members of class %s:"
 msgstr ""
 
-#: berkeley/lpq.c:582
 msgid "no entries"
 msgstr ""
 
-#: systemv/lpstat.c:1043
 msgid "no system default destination"
 msgstr ""
 
-#: scheduler/ipp.c:5702
 msgid "notify-events not specified."
 msgstr ""
 
-#: scheduler/ipp.c:2034 scheduler/ipp.c:5607
 #, c-format
 msgid "notify-recipient-uri URI \"%s\" is already used."
 msgstr ""
 
-#: scheduler/ipp.c:2024 scheduler/ipp.c:5597
 #, c-format
 msgid "notify-recipient-uri URI \"%s\" uses unknown scheme."
 msgstr ""
 
-#: cups/notify.c:87
 msgid "pending"
 msgstr "nevyřízený"
 
-#: ppdc/ppdc.cxx:113 ppdc/ppdpo.cxx:93
 #, c-format
 msgid "ppdc: Adding include directory \"%s\"."
 msgstr ""
 
-#: ppdc/ppdpo.cxx:134
 #, c-format
 msgid "ppdc: Adding/updating UI text from %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:410
 #, c-format
 msgid "ppdc: Bad boolean value (%s) on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-import.cxx:264
 #, c-format
 msgid "ppdc: Bad font attribute: %s"
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1796
 #, c-format
 msgid "ppdc: Bad resolution name \"%s\" on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1113
 #, c-format
 msgid "ppdc: Bad status keyword %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2033
 #, c-format
 msgid "ppdc: Bad variable substitution ($%c) on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2719
 #, c-format
 msgid "ppdc: Choice found on line %d of %s with no Option."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1698
 #, c-format
 msgid "ppdc: Duplicate #po for locale %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:932
 #, c-format
 msgid "ppdc: Expected a filter definition on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:955
 #, c-format
 msgid "ppdc: Expected a program name on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:394
 #, c-format
 msgid "ppdc: Expected boolean value on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1093
 #, c-format
 msgid "ppdc: Expected charset after Font on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:447
 #, c-format
 msgid "ppdc: Expected choice code on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:435
 #, c-format
 msgid "ppdc: Expected choice name/text on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:503
 #, c-format
 msgid "ppdc: Expected color order for ColorModel on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:492
 #, c-format
 msgid "ppdc: Expected colorspace for ColorModel on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:514
 #, c-format
 msgid "ppdc: Expected compression for ColorModel on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:695
 #, c-format
 msgid "ppdc: Expected constraints string for UIConstraints on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2905
 #, c-format
-msgid "ppdc: Expected driver type keyword following DriverType on line %d of %s."
+msgid ""
+"ppdc: Expected driver type keyword following DriverType on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:826
 #, c-format
 msgid "ppdc: Expected duplex type after Duplex on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1077
 #, c-format
 msgid "ppdc: Expected encoding after Font on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1689
 #, c-format
 msgid "ppdc: Expected filename after #po %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1205
 #, c-format
 msgid "ppdc: Expected group name/text on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2619
 #, c-format
 msgid "ppdc: Expected include filename on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1502
 #, c-format
 msgid "ppdc: Expected integer on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1681
 #, c-format
 msgid "ppdc: Expected locale after #po on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:353
 #, c-format
 msgid "ppdc: Expected name after %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3277
 #, c-format
 msgid "ppdc: Expected name after FileName on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1058
 #, c-format
 msgid "ppdc: Expected name after Font on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3108
 #, c-format
 msgid "ppdc: Expected name after Manufacturer on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3141
 #, c-format
 msgid "ppdc: Expected name after MediaSize on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3231
 #, c-format
 msgid "ppdc: Expected name after ModelName on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3294
 #, c-format
 msgid "ppdc: Expected name after PCFileName on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1156
 #, c-format
 msgid "ppdc: Expected name/text after %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1245
 #, c-format
 msgid "ppdc: Expected name/text after Installable on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1782
 #, c-format
 msgid "ppdc: Expected name/text after Resolution on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:479
 #, c-format
 msgid "ppdc: Expected name/text combination for ColorModel on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1574
 #, c-format
 msgid "ppdc: Expected option name/text on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1608
 #, c-format
 msgid "ppdc: Expected option section on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1586
 #, c-format
 msgid "ppdc: Expected option type on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1765
 #, c-format
 msgid "ppdc: Expected override field after Resolution on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-catalog.cxx:341 ppdc/ppdc-catalog.cxx:353
 #, c-format
 msgid "ppdc: Expected quoted string on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1004
 #, c-format
 msgid "ppdc: Expected real number on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:572
 #, c-format
-msgid "ppdc: Expected resolution/mediatype following ColorProfile on line %d of %s."
+msgid ""
+"ppdc: Expected resolution/mediatype following ColorProfile on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1863
 #, c-format
-msgid "ppdc: Expected resolution/mediatype following SimpleColorProfile on line %d of %s."
+msgid ""
+"ppdc: Expected resolution/mediatype following SimpleColorProfile on line %d "
+"of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:361
 #, c-format
 msgid "ppdc: Expected selector after %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1101
 #, c-format
 msgid "ppdc: Expected status after Font on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2794
 #, c-format
 msgid "ppdc: Expected string after Copyright on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3397
 #, c-format
 msgid "ppdc: Expected string after Version on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:728
 #, c-format
 msgid "ppdc: Expected two option names on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:372
 #, c-format
 msgid "ppdc: Expected value after %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1085
 #, c-format
 msgid "ppdc: Expected version after Font on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:227
 #, c-format
 msgid "ppdc: Invalid #include/#po filename \"%s\"."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:972
 #, c-format
 msgid "ppdc: Invalid cost for filter on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:964
 #, c-format
 msgid "ppdc: Invalid empty MIME type for filter on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:980
 #, c-format
 msgid "ppdc: Invalid empty program name for filter on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1628
 #, c-format
 msgid "ppdc: Invalid option section \"%s\" on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1600
 #, c-format
 msgid "ppdc: Invalid option type \"%s\" on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc.cxx:251 ppdc/ppdpo.cxx:123
 #, c-format
 msgid "ppdc: Loading driver information file \"%s\"."
 msgstr ""
 
-#: ppdc/ppdc.cxx:187
 #, c-format
 msgid "ppdc: Loading messages for locale \"%s\"."
 msgstr ""
 
-#: ppdc/ppdc.cxx:126
 #, c-format
 msgid "ppdc: Loading messages from \"%s\"."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2412 ppdc/ppdc-source.cxx:2644
 #, c-format
 msgid "ppdc: Missing #endif at end of \"%s\"."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2513 ppdc/ppdc-source.cxx:2548
-#: ppdc/ppdc-source.cxx:2578
 #, c-format
 msgid "ppdc: Missing #if on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-catalog.cxx:418
 #, c-format
-msgid "ppdc: Need a msgid line before any translation strings on line %d of %s."
+msgid ""
+"ppdc: Need a msgid line before any translation strings on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-driver.cxx:730
 #, c-format
 msgid "ppdc: No message catalog provided for locale %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1651 ppdc/ppdc-source.cxx:2882
-#: ppdc/ppdc-source.cxx:2968 ppdc/ppdc-source.cxx:3061
-#: ppdc/ppdc-source.cxx:3194 ppdc/ppdc-source.cxx:3327
 #, c-format
 msgid "ppdc: Option %s defined in two different groups on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1644
 #, c-format
 msgid "ppdc: Option %s redefined with a different type on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:705
 #, c-format
 msgid "ppdc: Option constraint must *name on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2495
 #, c-format
 msgid "ppdc: Too many nested #if's on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc.cxx:374
 #, c-format
 msgid "ppdc: Unable to create PPD file \"%s\" - %s."
 msgstr ""
 
-#: ppdc/ppdc.cxx:266
 #, c-format
 msgid "ppdc: Unable to create output directory %s: %s"
 msgstr ""
 
-#: ppdc/ppdc.cxx:287
 #, c-format
 msgid "ppdc: Unable to create output pipes: %s"
 msgstr ""
 
-#: ppdc/ppdc.cxx:303 ppdc/ppdc.cxx:309
 #, c-format
 msgid "ppdc: Unable to execute cupstestppd: %s"
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1730
 #, c-format
 msgid "ppdc: Unable to find #po file %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2651
 #, c-format
 msgid "ppdc: Unable to find include file \"%s\" on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc.cxx:198
 #, c-format
 msgid "ppdc: Unable to find localization for \"%s\" - %s"
 msgstr ""
 
-#: ppdc/ppdc.cxx:135
 #, c-format
 msgid "ppdc: Unable to load localization file \"%s\" - %s"
 msgstr ""
 
-#: ppdc/ppdc-file.cxx:50
 #, c-format
 msgid "ppdc: Unable to open %s: %s"
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2054
 #, c-format
 msgid "ppdc: Undefined variable (%s) on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-catalog.cxx:435
 #, c-format
 msgid "ppdc: Unexpected text on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2924
 #, c-format
 msgid "ppdc: Unknown driver type %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:906
 #, c-format
 msgid "ppdc: Unknown duplex type \"%s\" on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3154
 #, c-format
 msgid "ppdc: Unknown media size \"%s\" on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-catalog.cxx:463
 #, c-format
 msgid "ppdc: Unknown message catalog format for \"%s\"."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3408
 #, c-format
 msgid "ppdc: Unknown token \"%s\" seen on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1014
 #, c-format
-msgid "ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s."
+msgid ""
+"ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2164
 #, c-format
 msgid "ppdc: Unterminated string starting with %c on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc.cxx:365
 #, c-format
 msgid "ppdc: Warning - overlapping filename \"%s\"."
 msgstr ""
 
-#: ppdc/ppdc.cxx:380
 #, c-format
 msgid "ppdc: Writing %s."
 msgstr ""
 
-#: ppdc/ppdc.cxx:148
 #, c-format
 msgid "ppdc: Writing PPD files to directory \"%s\"."
 msgstr ""
 
-#: ppdc/ppdmerge.cxx:136
 #, c-format
 msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s."
 msgstr ""
 
-#: ppdc/ppdmerge.cxx:176
 #, c-format
 msgid "ppdmerge: Ignoring PPD file %s."
 msgstr ""
 
-#: ppdc/ppdmerge.cxx:160
 #, c-format
 msgid "ppdmerge: Unable to backup %s to %s - %s"
 msgstr ""
 
-#: systemv/lpstat.c:1784
 #, c-format
 msgid "printer %s disabled since %s -"
 msgstr ""
 
-#: systemv/lpstat.c:1773
 #, c-format
 msgid "printer %s is idle.  enabled since %s"
 msgstr ""
 
-#: systemv/lpstat.c:1778
 #, c-format
 msgid "printer %s now printing %s-%d.  enabled since %s"
 msgstr ""
 
-#: systemv/lpstat.c:1909
 #, c-format
 msgid "printer %s/%s disabled since %s -"
 msgstr ""
 
-#: systemv/lpstat.c:1895
 #, c-format
 msgid "printer %s/%s is idle.  enabled since %s"
 msgstr ""
 
-#: systemv/lpstat.c:1902
 #, c-format
 msgid "printer %s/%s now printing %s-%d.  enabled since %s"
 msgstr ""
 
-#: cups/notify.c:93 cups/notify.c:134
 msgid "processing"
 msgstr "zpracování"
 
-#: systemv/lp.c:644
 #, c-format
 msgid "request id is %s-%d (%d file(s))"
 msgstr ""
 
-#: cups/snmp.c:1020
 msgid "request-id uses indefinite length"
 msgstr "ID požadavku má neomezenou délku"
 
-#: systemv/lpstat.c:2048
 msgid "scheduler is not running"
 msgstr ""
 
-#: systemv/lpstat.c:2044
 msgid "scheduler is running"
 msgstr ""
 
-#: cups/adminutil.c:2159
 #, c-format
 msgid "stat of %s failed: %s"
 msgstr "stav %s selhalo: %s"
 
-#: berkeley/lpc.c:211
 msgid "status\t\tShow status of daemon and queue."
 msgstr ""
 
-#: cups/notify.c:96 cups/notify.c:137
 msgid "stopped"
 msgstr "zastaveno"
 
-#: systemv/lpstat.c:1017
 #, c-format
 msgid "system default destination: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1014
 #, c-format
 msgid "system default destination: %s/%s"
 msgstr ""
 
-#: cups/notify.c:108 cups/notify.c:140
 msgid "unknown"
 msgstr "neznámý"
 
-#: cups/notify.c:117
 msgid "untitled"
 msgstr "nepojmenovaný"
 
-#: cups/snmp.c:1045
 msgid "variable-bindings uses indefinite length"
 msgstr "\"variable-bindings\" má neomezenou délku"
 
+#~ msgid "Enter old password:"
+#~ msgstr "Zadejte původní heslo:"
 
-#
-# End of "$Id$".
-#
+#~ msgid "Enter password again:"
+#~ msgstr "Opakujte heslo:"
+
+#~ msgid "Enter password:"
+#~ msgstr "Zadejte heslo:"
+
+#~ msgid "Purge Jobs"
+#~ msgstr "Výmaz úloh"
diff --git a/locale/cups_de.po b/locale/cups_de.po
deleted file mode 100644 (file)
index 8ae1b2e..0000000
+++ /dev/null
@@ -1,8739 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: CUPS 1.7\n"
-"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2012-03-07 13:38-0800\n"
-"PO-Revision-Date: 2009-02-16 12:00-0800\n"
-"Last-Translator: Apple Inc.\n"
-"Language-Team: Apple Inc.\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: \n"
-
-msgid "\t\t(all)"
-msgstr "\t\t(alle)"
-
-msgid "\t\t(none)"
-msgstr "\t\t(keine)"
-
-#, c-format
-msgid "\t%d entries"
-msgstr "\t%d Einträge"
-
-#, c-format
-msgid "\t%s"
-msgstr ""
-
-msgid "\tAfter fault: continue"
-msgstr "\tNach einem Fehler: fortfahren"
-
-#, c-format
-msgid "\tAlerts: %s"
-msgstr "\Alarme: %s"
-
-msgid "\tBanner required"
-msgstr "\tBanner erforderlich"
-
-msgid "\tCharset sets:"
-msgstr "\tZeichensatz Set:"
-
-msgid "\tConnection: direct"
-msgstr "\tVerbindung: direkt"
-
-msgid "\tConnection: remote"
-msgstr "\tVerbindung: über Netz"
-
-msgid "\tContent types: any"
-msgstr "\tInhaltstypen: beliebig"
-
-msgid "\tDefault page size:"
-msgstr "\tVoreingestellte Seitengrösse:"
-
-msgid "\tDefault pitch:"
-msgstr ""
-
-msgid "\tDefault port settings:"
-msgstr "\tVoreingestellte Ports:"
-
-#, c-format
-msgid "\tDescription: %s"
-msgstr "\tBeschreibung: %s"
-
-msgid "\tForm mounted:"
-msgstr ""
-
-msgid "\tForms allowed:"
-msgstr ""
-
-#, c-format
-msgid "\tInterface: %s.ppd"
-msgstr ""
-
-#, c-format
-msgid "\tInterface: %s/interfaces/%s"
-msgstr ""
-
-#, c-format
-msgid "\tInterface: %s/ppd/%s.ppd"
-msgstr ""
-
-#, c-format
-msgid "\tLocation: %s"
-msgstr "\tOrt: %s"
-
-msgid "\tOn fault: no alert"
-msgstr ""
-
-msgid "\tPrinter types: unknown"
-msgstr ""
-
-#, c-format
-msgid "\tStatus: %s"
-msgstr ""
-
-msgid "\tUsers allowed:"
-msgstr ""
-
-msgid "\tUsers denied:"
-msgstr "\tGesperrte Benutzer:"
-
-msgid "\tdaemon present"
-msgstr ""
-
-msgid "\tno entries"
-msgstr "\tKeine Einträge"
-
-#, c-format
-msgid "\tprinter is on device '%s' speed -1"
-msgstr ""
-
-msgid "\tprinting is disabled"
-msgstr "\tDrucken ist abgeschaltet"
-
-msgid "\tprinting is enabled"
-msgstr "\tDrucken ist eingeschaltet"
-
-#, c-format
-msgid "\tqueued for %s"
-msgstr ""
-
-msgid "\tqueuing is disabled"
-msgstr ""
-
-msgid "\tqueuing is enabled"
-msgstr ""
-
-msgid "\treason unknown"
-msgstr "\tunbekannter Grund"
-
-msgid ""
-"\n"
-"    DETAILED CONFORMANCE TEST RESULTS"
-msgstr ""
-
-msgid "                          Ignore specific warnings."
-msgstr ""
-
-msgid "                          Issue warnings instead of errors."
-msgstr ""
-
-msgid "                REF: Page 15, section 3.1."
-msgstr ""
-
-msgid "                REF: Page 15, section 3.2."
-msgstr ""
-
-msgid "                REF: Page 19, section 3.3."
-msgstr ""
-
-msgid "                REF: Page 20, section 3.4."
-msgstr ""
-
-msgid "                REF: Page 27, section 3.5."
-msgstr ""
-
-msgid "                REF: Page 42, section 5.2."
-msgstr ""
-
-msgid "                REF: Pages 16-17, section 3.2."
-msgstr ""
-
-msgid "                REF: Pages 42-45, section 5.2."
-msgstr ""
-
-msgid "                REF: Pages 45-46, section 5.2."
-msgstr ""
-
-msgid "                REF: Pages 48-49, section 5.2."
-msgstr ""
-
-msgid "                REF: Pages 52-54, section 5.2."
-msgstr ""
-
-#, c-format
-msgid "        %-39.39s %.0f bytes"
-msgstr ""
-
-#, c-format
-msgid "        PASS    Default%s"
-msgstr ""
-
-msgid "        PASS    DefaultImageableArea"
-msgstr ""
-
-msgid "        PASS    DefaultPaperDimension"
-msgstr ""
-
-msgid "        PASS    FileVersion"
-msgstr ""
-
-msgid "        PASS    FormatVersion"
-msgstr ""
-
-msgid "        PASS    LanguageEncoding"
-msgstr ""
-
-msgid "        PASS    LanguageVersion"
-msgstr ""
-
-msgid "        PASS    Manufacturer"
-msgstr ""
-
-msgid "        PASS    ModelName"
-msgstr ""
-
-msgid "        PASS    NickName"
-msgstr ""
-
-msgid "        PASS    PCFileName"
-msgstr ""
-
-msgid "        PASS    PSVersion"
-msgstr ""
-
-msgid "        PASS    PageRegion"
-msgstr ""
-
-msgid "        PASS    PageSize"
-msgstr ""
-
-msgid "        PASS    Product"
-msgstr ""
-
-msgid "        PASS    ShortNickName"
-msgstr ""
-
-#, c-format
-msgid "        WARN    %s has no corresponding options."
-msgstr ""
-
-#, c-format
-msgid ""
-"        WARN    %s shares a common prefix with %s\n"
-"                REF: Page 15, section 3.2."
-msgstr ""
-
-#, 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 ""
-
-msgid "        WARN    File contains a mix of CR, LF, and CR LF line endings."
-msgstr ""
-
-msgid ""
-"        WARN    LanguageEncoding required by PPD 4.3 spec.\n"
-"                REF: Pages 56-57, section 5.3."
-msgstr ""
-
-#, c-format
-msgid "        WARN    Line %d only contains whitespace."
-msgstr ""
-
-msgid ""
-"        WARN    Manufacturer required by PPD 4.3 spec.\n"
-"                REF: Pages 58-59, section 5.3."
-msgstr ""
-
-msgid ""
-"        WARN    Non-Windows PPD files should use lines ending with only LF, "
-"not CR LF."
-msgstr ""
-
-#, c-format
-msgid ""
-"        WARN    Obsolete PPD version %.1f.\n"
-"                REF: Page 42, section 5.2."
-msgstr ""
-
-msgid ""
-"        WARN    PCFileName longer than 8.3 in violation of PPD spec.\n"
-"                REF: Pages 61-62, section 5.3."
-msgstr ""
-
-msgid ""
-"        WARN    PCFileName should contain a unique filename.\n"
-"                REF: Pages 61-62, section 5.3."
-msgstr ""
-
-msgid ""
-"        WARN    Protocols contains PJL but JCL attributes are not set.\n"
-"                REF: Pages 78-79, section 5.7."
-msgstr ""
-
-msgid ""
-"        WARN    Protocols contains both PJL and BCP; expected TBCP.\n"
-"                REF: Pages 78-79, section 5.7."
-msgstr ""
-
-msgid ""
-"        WARN    ShortNickName required by PPD 4.3 spec.\n"
-"                REF: Pages 64-65, section 5.3."
-msgstr ""
-
-msgid "       cupsaddsmb [options] -a"
-msgstr ""
-
-msgid "       cupstestdsc [options] -"
-msgstr ""
-
-msgid "       program | cupstestppd [options] -"
-msgstr ""
-
-#, c-format
-msgid ""
-"      %s  \"%s %s\" conflicts with \"%s %s\"\n"
-"                (constraint=\"%s %s %s %s\")."
-msgstr ""
-
-#, c-format
-msgid "      %s  %s %s does not exist."
-msgstr ""
-
-#, c-format
-msgid "      %s  %s file \"%s\" has the wrong capitalization."
-msgstr ""
-
-#, c-format
-msgid ""
-"      %s  Bad %s choice %s.\n"
-"                REF: Page 122, section 5.17"
-msgstr ""
-
-#, c-format
-msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s, choice %s."
-msgstr ""
-
-#, c-format
-msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s."
-msgstr ""
-
-#, c-format
-msgid "      %s  Bad cupsFilter value \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "      %s  Bad cupsFilter2 value \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "      %s  Bad cupsICCProfile %s."
-msgstr ""
-
-#, c-format
-msgid "      %s  Bad cupsPreFilter value \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "      %s  Bad cupsUIConstraints %s: \"%s\""
-msgstr ""
-
-#, c-format
-msgid "      %s  Bad language \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "      %s  Bad permissions on %s file \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "      %s  Bad spelling of %s - should be %s."
-msgstr ""
-
-#, c-format
-msgid "      %s  Cannot provide both APScanAppPath and APScanAppBundleID."
-msgstr ""
-
-#, c-format
-msgid "      %s  Default choices conflicting."
-msgstr ""
-
-#, c-format
-msgid "      %s  Empty cupsUIConstraints %s"
-msgstr ""
-
-#, c-format
-msgid "      %s  Missing \"%s\" translation string for option %s, choice %s."
-msgstr ""
-
-#, c-format
-msgid "      %s  Missing \"%s\" translation string for option %s."
-msgstr ""
-
-#, c-format
-msgid "      %s  Missing %s file \"%s\"."
-msgstr ""
-
-#, c-format
-msgid ""
-"      %s  Missing REQUIRED PageRegion option.\n"
-"                REF: Page 100, section 5.14."
-msgstr ""
-
-#, c-format
-msgid ""
-"      %s  Missing REQUIRED PageSize option.\n"
-"                REF: Page 99, section 5.14."
-msgstr ""
-
-#, c-format
-msgid "      %s  Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"."
-msgstr ""
-
-#, c-format
-msgid "      %s  Missing choice *%s %s in cupsUIConstraints %s: \"%s\""
-msgstr ""
-
-#, c-format
-msgid "      %s  Missing cupsUIResolver %s"
-msgstr ""
-
-#, c-format
-msgid "      %s  Missing option %s in UIConstraints \"*%s %s *%s %s\"."
-msgstr ""
-
-#, c-format
-msgid "      %s  Missing option %s in cupsUIConstraints %s: \"%s\""
-msgstr ""
-
-#, c-format
-msgid "      %s  No base translation \"%s\" is included in file."
-msgstr ""
-
-#, c-format
-msgid ""
-"      %s  REQUIRED %s does not define choice None.\n"
-"                REF: Page 122, section 5.17"
-msgstr ""
-
-#, c-format
-msgid "      %s  Size \"%s\" defined for %s but not for %s."
-msgstr ""
-
-#, c-format
-msgid "      %s  Size \"%s\" has unexpected dimensions (%gx%g)."
-msgstr ""
-
-#, c-format
-msgid "      %s  Size \"%s\" should be \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "      %s  Size \"%s\" should be the Adobe standard name \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "      %s  cupsICCProfile %s hash value collides with %s."
-msgstr ""
-
-#, c-format
-msgid "      %s  cupsUIResolver %s causes a loop."
-msgstr ""
-
-#, c-format
-msgid ""
-"      %s  cupsUIResolver %s does not list at least two different options."
-msgstr ""
-
-#, c-format
-msgid "      **FAIL**  %s choice names %s and %s differ only by case."
-msgstr ""
-
-#, c-format
-msgid ""
-"      **FAIL**  %s must be 1284DeviceID\n"
-"                REF: Page 72, section 5.5"
-msgstr ""
-
-#, c-format
-msgid ""
-"      **FAIL**  BAD Default%s %s\n"
-"                REF: Page 40, section 4.5."
-msgstr ""
-
-#, c-format
-msgid ""
-"      **FAIL**  BAD DefaultImageableArea %s\n"
-"                REF: Page 102, section 5.15."
-msgstr ""
-
-#, c-format
-msgid ""
-"      **FAIL**  BAD DefaultPaperDimension %s\n"
-"                REF: Page 103, section 5.15."
-msgstr ""
-
-msgid ""
-"      **FAIL**  BAD JobPatchFile attribute in file\n"
-"                REF: Page 24, section 3.4."
-msgstr ""
-
-msgid ""
-"      **FAIL**  BAD Manufacturer (should be \"HP\")\n"
-"                REF: Page 211, table D.1."
-msgstr ""
-
-msgid ""
-"      **FAIL**  BAD Manufacturer (should be \"Oki\")\n"
-"                REF: Page 211, table D.1."
-msgstr ""
-
-#, c-format
-msgid ""
-"      **FAIL**  BAD ModelName - \"%c\" not allowed in string.\n"
-"                REF: Pages 59-60, section 5.3."
-msgstr ""
-
-msgid ""
-"      **FAIL**  BAD PSVersion - not \"(string) int\".\n"
-"                REF: Pages 62-64, section 5.3."
-msgstr ""
-
-msgid ""
-"      **FAIL**  BAD Product - not \"(string)\".\n"
-"                REF: Page 62, section 5.3."
-msgstr ""
-
-msgid ""
-"      **FAIL**  BAD ShortNickName - longer than 31 chars.\n"
-"                REF: Pages 64-65, section 5.3."
-msgstr ""
-
-#, c-format
-msgid ""
-"      **FAIL**  Bad %s choice %s\n"
-"                REF: Page 84, section 5.9"
-msgstr ""
-
-#, c-format
-msgid ""
-"      **FAIL**  Bad FileVersion \"%s\"\n"
-"                REF: Page 56, section 5.3."
-msgstr ""
-
-#, c-format
-msgid ""
-"      **FAIL**  Bad FormatVersion \"%s\"\n"
-"                REF: Page 56, section 5.3."
-msgstr ""
-
-#, c-format
-msgid "      **FAIL**  Bad LanguageEncoding %s - must be ISOLatin1."
-msgstr ""
-
-#, c-format
-msgid "      **FAIL**  Bad LanguageVersion %s - must be English."
-msgstr ""
-
-#, c-format
-msgid "      **FAIL**  Default option code cannot be interpreted: %s"
-msgstr ""
-
-#, c-format
-msgid ""
-"      **FAIL**  Default translation string for option %s choice %s contains "
-"8-bit characters."
-msgstr ""
-
-#, c-format
-msgid ""
-"      **FAIL**  Default translation string for option %s contains 8-bit "
-"characters."
-msgstr ""
-
-#, c-format
-msgid "      **FAIL**  Group names %s and %s differ only by case."
-msgstr ""
-
-#, c-format
-msgid "      **FAIL**  Multiple occurrences of %s choice name %s."
-msgstr ""
-
-#, c-format
-msgid "      **FAIL**  Option names %s and %s differ only by case."
-msgstr ""
-
-#, c-format
-msgid ""
-"      **FAIL**  REQUIRED Default%s\n"
-"                REF: Page 40, section 4.5."
-msgstr ""
-
-msgid ""
-"      **FAIL**  REQUIRED DefaultImageableArea\n"
-"                REF: Page 102, section 5.15."
-msgstr ""
-
-msgid ""
-"      **FAIL**  REQUIRED DefaultPaperDimension\n"
-"                REF: Page 103, section 5.15."
-msgstr ""
-
-msgid ""
-"      **FAIL**  REQUIRED FileVersion\n"
-"                REF: Page 56, section 5.3."
-msgstr ""
-
-msgid ""
-"      **FAIL**  REQUIRED FormatVersion\n"
-"                REF: Page 56, section 5.3."
-msgstr ""
-
-#, c-format
-msgid ""
-"      **FAIL**  REQUIRED ImageableArea for PageSize %s\n"
-"                REF: Page 41, section 5.\n"
-"                REF: Page 102, section 5.15."
-msgstr ""
-
-msgid ""
-"      **FAIL**  REQUIRED LanguageEncoding\n"
-"                REF: Pages 56-57, section 5.3."
-msgstr ""
-
-msgid ""
-"      **FAIL**  REQUIRED LanguageVersion\n"
-"                REF: Pages 57-58, section 5.3."
-msgstr ""
-
-msgid ""
-"      **FAIL**  REQUIRED Manufacturer\n"
-"                REF: Pages 58-59, section 5.3."
-msgstr ""
-
-msgid ""
-"      **FAIL**  REQUIRED ModelName\n"
-"                REF: Pages 59-60, section 5.3."
-msgstr ""
-
-msgid ""
-"      **FAIL**  REQUIRED NickName\n"
-"                REF: Page 60, section 5.3."
-msgstr ""
-
-msgid ""
-"      **FAIL**  REQUIRED PCFileName\n"
-"                REF: Pages 61-62, section 5.3."
-msgstr ""
-
-msgid ""
-"      **FAIL**  REQUIRED PSVersion\n"
-"                REF: Pages 62-64, section 5.3."
-msgstr ""
-
-msgid ""
-"      **FAIL**  REQUIRED PageRegion\n"
-"                REF: Page 100, section 5.14."
-msgstr ""
-
-msgid ""
-"      **FAIL**  REQUIRED PageSize\n"
-"                REF: Page 41, section 5.\n"
-"                REF: Page 99, section 5.14."
-msgstr ""
-
-msgid ""
-"      **FAIL**  REQUIRED PageSize\n"
-"                REF: Pages 99-100, section 5.14."
-msgstr ""
-
-#, c-format
-msgid ""
-"      **FAIL**  REQUIRED PaperDimension for PageSize %s\n"
-"                REF: Page 41, section 5.\n"
-"                REF: Page 103, section 5.15."
-msgstr ""
-
-msgid ""
-"      **FAIL**  REQUIRED Product\n"
-"                REF: Page 62, section 5.3."
-msgstr ""
-
-msgid ""
-"      **FAIL**  REQUIRED ShortNickName\n"
-"                REF: Page 64-65, section 5.3."
-msgstr ""
-
-#, c-format
-msgid "      **FAIL**  Unable to open PPD file - %s"
-msgstr ""
-
-#, c-format
-msgid "      **FAIL**  Unable to open PPD file - %s on line %d."
-msgstr ""
-
-#, c-format
-msgid "    %d ERRORS FOUND"
-msgstr ""
-
-msgid "    -h       Show program usage"
-msgstr ""
-
-#, c-format
-msgid ""
-"    Bad %%%%BoundingBox: on line %d.\n"
-"        REF: Page 39, %%%%BoundingBox:"
-msgstr ""
-
-#, c-format
-msgid ""
-"    Bad %%%%Page: on line %d.\n"
-"        REF: Page 53, %%%%Page:"
-msgstr ""
-
-#, c-format
-msgid ""
-"    Bad %%%%Pages: on line %d.\n"
-"        REF: Page 43, %%%%Pages:"
-msgstr ""
-
-#, c-format
-msgid ""
-"    Line %d is longer than 255 characters (%d).\n"
-"        REF: Page 25, Line Length"
-msgstr ""
-
-msgid ""
-"    Missing %!PS-Adobe-3.0 on first line.\n"
-"        REF: Page 17, 3.1 Conforming Documents"
-msgstr ""
-
-#, c-format
-msgid "    Missing %%EndComments comment.        REF: Page 41, %%EndComments"
-msgstr ""
-
-#, c-format
-msgid ""
-"    Missing or bad %%BoundingBox: comment.\n"
-"        REF: Page 39, %%BoundingBox:"
-msgstr ""
-
-#, c-format
-msgid ""
-"    Missing or bad %%Page: comments.\n"
-"        REF: Page 53, %%Page:"
-msgstr ""
-
-#, c-format
-msgid ""
-"    Missing or bad %%Pages: comment.\n"
-"        REF: Page 43, %%Pages:"
-msgstr ""
-
-msgid "    NO ERRORS FOUND"
-msgstr ""
-
-#, c-format
-msgid "    Saw %d lines that exceeded 255 characters."
-msgstr ""
-
-#, c-format
-msgid "    Too many %%BeginDocument comments."
-msgstr ""
-
-#, c-format
-msgid "    Too many %%EndDocument comments."
-msgstr ""
-
-msgid "    Warning: file contains binary data."
-msgstr ""
-
-#, c-format
-msgid "    Warning: no %%EndComments comment in file."
-msgstr ""
-
-#, c-format
-msgid "    Warning: obsolete DSC version %.1f in file."
-msgstr ""
-
-msgid "  --[no-]debug-logging    Turn debug logging on/off."
-msgstr ""
-
-msgid "  --[no-]remote-admin     Turn remote administration on/off."
-msgstr ""
-
-msgid "  --[no-]remote-any       Allow/prevent access from the Internet."
-msgstr ""
-
-msgid "  --[no-]remote-printers  Show/hide remote printers."
-msgstr ""
-
-msgid "  --[no-]share-printers   Turn printer sharing on/off."
-msgstr ""
-
-msgid "  --[no-]user-cancel-any  Allow/prevent users to cancel any job."
-msgstr ""
-
-msgid "  --cr                    End lines with CR (Mac OS 9)."
-msgstr ""
-
-msgid "  --crlf                  End lines with CR + LF (Windows)."
-msgstr ""
-
-msgid "  --lf                    End lines with LF (UNIX/Linux/Mac OS X)."
-msgstr ""
-
-msgid "  -4                      Connect using IPv4."
-msgstr ""
-
-msgid "  -6                      Connect using IPv6."
-msgstr ""
-
-msgid "  -C                      Send requests using chunking (default)."
-msgstr ""
-
-msgid "  -D                      Remove the input file when finished."
-msgstr ""
-
-msgid "  -D name=value           Set named variable to value."
-msgstr ""
-
-msgid "  -E                      Enable encryption."
-msgstr ""
-
-msgid "  -E                      Encrypt the connection to the server."
-msgstr ""
-
-msgid "  -E                      Test with TLS encryption."
-msgstr ""
-
-msgid ""
-"  -F                      Run in the foreground but detach from console."
-msgstr ""
-
-msgid "  -H samba-server         Use the named SAMBA server."
-msgstr ""
-
-msgid "  -I                      Ignore errors."
-msgstr ""
-
-msgid "  -I include-dir          Add include directory to search path."
-msgstr ""
-
-msgid "  -I {filename,filters,none,profiles}"
-msgstr ""
-
-msgid "  -J title                Set title."
-msgstr ""
-
-msgid "  -L                      Send requests using content-length."
-msgstr ""
-
-msgid "  -P filename.ppd         Set PPD file."
-msgstr ""
-
-msgid "  -R root-directory       Set alternate root."
-msgstr ""
-
-msgid "  -S                      Test with SSL encryption."
-msgstr ""
-
-msgid "  -T                      Set the receive/send timeout in seconds."
-msgstr ""
-
-msgid "  -U samba-user           Authenticate using the named SAMBA user."
-msgstr ""
-
-msgid "  -U username             Set username for job."
-msgstr ""
-
-msgid "  -U username             Specify username."
-msgstr ""
-
-msgid "  -V version              Set default IPP version."
-msgstr ""
-
-msgid ""
-"  -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,"
-"translations}"
-msgstr ""
-
-msgid "  -X                      Produce XML plist instead of plain text."
-msgstr ""
-
-msgid "  -a                      Export all printers."
-msgstr ""
-
-msgid "  -a 'name=value ...'     Set option(s)."
-msgstr ""
-
-msgid "  -c catalog.po           Load the specified message catalog."
-msgstr ""
-
-msgid "  -c config-file          Load alternate configuration file."
-msgstr ""
-
-msgid "  -c copies               Set number of copies."
-msgstr ""
-
-msgid "  -c cupsd.conf           Set cupsd.conf file to use."
-msgstr ""
-
-msgid "  -d name=value           Set named variable to value."
-msgstr ""
-
-msgid "  -d output-dir           Specify the output directory."
-msgstr ""
-
-msgid "  -d printer              Use the named printer."
-msgstr ""
-
-msgid "  -e                      Use every filter from the PPD file."
-msgstr ""
-
-msgid "  -f                      Run in the foreground."
-msgstr ""
-
-msgid "  -f filename             Set default request filename."
-msgstr ""
-
-msgid "  -f filename             Set file to be converted (otherwise stdin)."
-msgstr ""
-
-msgid "  -h                      Show this usage message."
-msgstr ""
-
-msgid "  -h cups-server          Use the named CUPS server."
-msgstr ""
-
-msgid "  -h server[:port]        Specify server address."
-msgstr ""
-
-msgid "  -i mime/type            Set input MIME type (otherwise auto-typed)."
-msgstr ""
-
-msgid ""
-"  -i seconds              Repeat the last file with the given time interval."
-msgstr ""
-
-msgid ""
-"  -j job-id[,N]           Filter file N from the specified job (default is "
-"file 1)."
-msgstr ""
-
-msgid ""
-"  -j mime/type            Set output MIME type (otherwise application/pdf)."
-msgstr ""
-
-msgid "  -l                      Run cupsd from launchd(8)."
-msgstr ""
-
-msgid "  -l lang[,lang,...]      Specify the output language(s) (locale)."
-msgstr ""
-
-msgid "  -m                      Use the ModelName value as the filename."
-msgstr ""
-
-msgid ""
-"  -m mime/type            Set output MIME type (otherwise application/pdf)."
-msgstr ""
-
-msgid "  -n copies               Set number of copies."
-msgstr ""
-
-msgid ""
-"  -n count                Repeat the last file the given number of times."
-msgstr ""
-
-msgid "  -o filename             Set file to be generated (otherwise stdout)."
-msgstr ""
-
-msgid ""
-"  -o filename.drv         Set driver information file (otherwise ppdi.drv)."
-msgstr ""
-
-msgid "  -o filename.ppd[.gz]    Set output file (otherwise stdout)."
-msgstr ""
-
-msgid "  -o name=value           Set option(s)."
-msgstr ""
-
-msgid "  -p filename.ppd         Set PPD file."
-msgstr ""
-
-msgid "  -q                      Be quiet - no output except errors."
-msgstr ""
-
-msgid "  -q                      Run silently."
-msgstr ""
-
-msgid "  -r                      Use 'relaxed' open mode."
-msgstr ""
-
-msgid "  -t                      Produce a test report."
-msgstr ""
-
-msgid "  -t                      Test PPDs instead of generating them."
-msgstr ""
-
-msgid "  -t                      Test the configuration file."
-msgstr ""
-
-msgid "  -t title                Set title."
-msgstr ""
-
-msgid "  -u                      Remove the PPD file when finished."
-msgstr ""
-
-msgid "  -v                      Be slightly verbose."
-msgstr ""
-
-msgid "  -v                      Be verbose (more v's for more verbosity)."
-msgstr ""
-
-msgid "  -v                      Be verbose (show commands)."
-msgstr ""
-
-msgid "  -v                      Show all attributes sent and received."
-msgstr ""
-
-msgid "  -vv                     Be very verbose."
-msgstr ""
-
-msgid "  -z                      Compress PPD files using GNU zip."
-msgstr ""
-
-msgid " FAIL"
-msgstr ""
-
-msgid " PASS"
-msgstr ""
-
-#, c-format
-msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
-msgstr ""
-
-#, c-format
-msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
-msgstr ""
-
-#, c-format
-msgid "%.0f x %.0f millimeters"
-msgstr "%.0f x %.0f Millimeter"
-
-#, c-format
-msgid "%.0f x %.0f to %.0f x %.0f millimeters"
-msgstr "%.0f x %.0f bis %.0f x %.0f Millimeter"
-
-#, c-format
-msgid "%.2f x %.2f inches"
-msgstr "%.2f x %.2f Zoll"
-
-#, c-format
-msgid "%.2f x %.2f to %.2f x %.2f inches"
-msgstr "%.2f x %.2f bis %.2f x %.2f Zoll"
-
-#, c-format
-msgid "%s accepting requests since %s"
-msgstr ""
-
-#, c-format
-msgid "%s cannot be changed."
-msgstr "%s kann nicht geändert werden."
-
-#, c-format
-msgid "%s is not implemented by the CUPS version of lpc."
-msgstr ""
-
-#, c-format
-msgid "%s is not ready"
-msgstr ""
-
-#, c-format
-msgid "%s is ready"
-msgstr ""
-
-#, c-format
-msgid "%s is ready and printing"
-msgstr ""
-
-#, c-format
-msgid "%s job-id user title copies options [file]"
-msgstr ""
-
-#, c-format
-msgid "%s not accepting requests since %s -"
-msgstr ""
-
-#, c-format
-msgid "%s not supported."
-msgstr ""
-
-#, c-format
-msgid "%s/%s accepting requests since %s"
-msgstr ""
-
-#, c-format
-msgid "%s/%s not accepting requests since %s -"
-msgstr ""
-
-#, c-format
-msgid "%s: %-33.33s [job %d localhost]"
-msgstr ""
-
-#. TRANSLATORS: Message is "subject: error"
-#, c-format
-msgid "%s: %s"
-msgstr ""
-
-#, c-format
-msgid "%s: %s failed: %s"
-msgstr ""
-
-#, c-format
-msgid "%s: Don't know what to do."
-msgstr ""
-
-#, c-format
-msgid ""
-"%s: Error - %s environment variable names non-existent destination \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - bad job ID."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - cannot print files and alter jobs simultaneously."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - cannot print from stdin if files or a job ID are provided."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - expected character set after \"-S\" option."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - expected content type after \"-T\" option."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - expected copies after \"-#\" option."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - expected copies after \"-n\" option."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - expected destination after \"-P\" option."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - expected destination after \"-b\" option."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - expected destination after \"-d\" option."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - expected form after \"-f\" option."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - expected hold name after \"-H\" option."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - expected hostname after \"-H\" option."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - expected hostname after \"-h\" option."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - expected mode list after \"-y\" option."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - expected name after \"-%c\" option."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - expected option=value after \"-o\" option."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - expected page list after \"-P\" option."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - expected priority after \"-%c\" option."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - expected reason text after \"-r\" option."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - expected title after \"-t\" option."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - expected username after \"-U\" option."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - expected username after \"-u\" option."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - expected value after \"-%c\" option."
-msgstr ""
-
-#, c-format
-msgid ""
-"%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" "
-"option."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - no default destination available."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - priority must be between 1 and 100."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - scheduler not responding."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - too many files - \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - unable to access \"%s\" - %s"
-msgstr ""
-
-#, c-format
-msgid "%s: Error - unable to queue from stdin - %s."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - unknown destination \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - unknown destination \"%s/%s\"."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - unknown option \"%c\"."
-msgstr ""
-
-#, c-format
-msgid "%s: Error - unknown option \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "%s: Expected job ID after \"-i\" option."
-msgstr ""
-
-#, c-format
-msgid "%s: Invalid destination name in list \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "%s: Invalid filter string \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "%s: Need job ID (\"-i jobid\") before \"-H restart\"."
-msgstr ""
-
-#, c-format
-msgid "%s: No filter to convert from %s/%s to %s/%s."
-msgstr ""
-
-#, c-format
-msgid "%s: Operation failed: %s"
-msgstr ""
-
-#, c-format
-msgid "%s: Sorry, no encryption support."
-msgstr ""
-
-#, c-format
-msgid "%s: Unable to connect to server."
-msgstr ""
-
-#, c-format
-msgid "%s: Unable to contact server."
-msgstr ""
-
-#, c-format
-msgid "%s: Unable to determine MIME type of \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "%s: Unable to open %s: %s"
-msgstr ""
-
-#, c-format
-msgid "%s: Unable to open PPD file: %s on line %d."
-msgstr ""
-
-#, c-format
-msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "%s: Unknown destination \"%s\"."
-msgstr "%s: Unbekanntes Druckziel \"%s\"."
-
-#, c-format
-msgid "%s: Unknown destination MIME type %s/%s."
-msgstr ""
-
-#, c-format
-msgid "%s: Unknown option \"%c\"."
-msgstr ""
-
-#, c-format
-msgid "%s: Unknown source MIME type %s/%s."
-msgstr ""
-
-#, c-format
-msgid ""
-"%s: Warning - \"%c\" format modifier not supported - output may not be "
-"correct."
-msgstr ""
-
-#, c-format
-msgid "%s: Warning - character set option ignored."
-msgstr ""
-
-#, c-format
-msgid "%s: Warning - content type option ignored."
-msgstr ""
-
-#, c-format
-msgid "%s: Warning - form option ignored."
-msgstr ""
-
-#, c-format
-msgid "%s: Warning - mode option ignored."
-msgstr ""
-
-msgid "-1"
-msgstr "-1"
-
-msgid "-10"
-msgstr "-10"
-
-msgid "-100"
-msgstr "-100"
-
-msgid "-105"
-msgstr "-105"
-
-msgid "-11"
-msgstr "-11"
-
-msgid "-110"
-msgstr "-110"
-
-msgid "-115"
-msgstr "-115"
-
-msgid "-12"
-msgstr "-12"
-
-msgid "-120"
-msgstr "-120"
-
-msgid "-13"
-msgstr "-13"
-
-msgid "-14"
-msgstr "-14"
-
-msgid "-15"
-msgstr "-15"
-
-msgid "-2"
-msgstr "-2"
-
-msgid "-20"
-msgstr "-20"
-
-msgid "-25"
-msgstr "-25"
-
-msgid "-3"
-msgstr "-3"
-
-msgid "-30"
-msgstr "-30"
-
-msgid "-35"
-msgstr "-35"
-
-msgid "-4"
-msgstr "-4"
-
-msgid "-40"
-msgstr "-40"
-
-msgid "-45"
-msgstr "-45"
-
-msgid "-5"
-msgstr "-5"
-
-msgid "-50"
-msgstr "-50"
-
-msgid "-55"
-msgstr "-55"
-
-msgid "-6"
-msgstr "-6"
-
-msgid "-60"
-msgstr "-60"
-
-msgid "-65"
-msgstr "-65"
-
-msgid "-7"
-msgstr "-7"
-
-msgid "-70"
-msgstr "-70"
-
-msgid "-75"
-msgstr "-75"
-
-msgid "-8"
-msgstr "-8"
-
-msgid "-80"
-msgstr "-80"
-
-msgid "-85"
-msgstr "-85"
-
-msgid "-9"
-msgstr "-9"
-
-msgid "-90"
-msgstr "-90"
-
-msgid "-95"
-msgstr "-95"
-
-msgid "0"
-msgstr "0"
-
-msgid "1"
-msgstr "1"
-
-msgid "1 inch/sec."
-msgstr "1 Zoll/Sek."
-
-msgid "1.25x0.25\""
-msgstr "1,25x0,25 Zoll"
-
-msgid "1.25x2.25\""
-msgstr "1,25x2,25 Zoll"
-
-msgid "1.5 inch/sec."
-msgstr "1,5 Zoll/Sek."
-
-msgid "1.50x0.25\""
-msgstr "1,50x0,25 Zoll"
-
-msgid "1.50x0.50\""
-msgstr "1,50x0,50 Zoll"
-
-msgid "1.50x1.00\""
-msgstr "1,50x1,00 Zoll"
-
-msgid "1.50x2.00\""
-msgstr "1,50x2,00 Zoll"
-
-msgid "10"
-msgstr "10"
-
-msgid "10 inches/sec."
-msgstr "10 Zoll/Sek."
-
-msgid "10 x 11"
-msgstr ""
-
-msgid "10 x 13"
-msgstr ""
-
-msgid "10 x 14"
-msgstr ""
-
-msgid "100"
-msgstr "100"
-
-msgid "100 mm/sec."
-msgstr "100 mm/Sek."
-
-msgid "105"
-msgstr "105"
-
-msgid "11"
-msgstr "11"
-
-msgid "11 inches/sec."
-msgstr "11 Zoll/Sek."
-
-msgid "110"
-msgstr "110"
-
-msgid "115"
-msgstr "115"
-
-msgid "12"
-msgstr "12"
-
-msgid "12 inches/sec."
-msgstr "12 Zoll/Sek."
-
-msgid "12 x 11"
-msgstr ""
-
-msgid "120"
-msgstr "120"
-
-msgid "120 mm/sec."
-msgstr "120 mm/Sek."
-
-msgid "120x60dpi"
-msgstr "120x60 dpi"
-
-msgid "120x72dpi"
-msgstr "120x72 dpi"
-
-msgid "13"
-msgstr "13"
-
-msgid "136dpi"
-msgstr "136 dpi"
-
-msgid "14"
-msgstr "14"
-
-msgid "15"
-msgstr "15"
-
-msgid "15 mm/sec."
-msgstr "15 mm/Sek."
-
-msgid "15 x 11"
-msgstr ""
-
-msgid "150 mm/sec."
-msgstr "150 mm/Sek."
-
-msgid "150dpi"
-msgstr "150 dpi"
-
-msgid "16"
-msgstr "16"
-
-msgid "17"
-msgstr "17"
-
-msgid "18"
-msgstr "18"
-
-msgid "180dpi"
-msgstr "180 dpi"
-
-msgid "19"
-msgstr "19"
-
-msgid "2"
-msgstr "2"
-
-msgid "2 inches/sec."
-msgstr "2 Zoll/Sek."
-
-msgid "2-Sided Printing"
-msgstr "Doppelseitig drucken"
-
-msgid "2.00x0.37\""
-msgstr "2,00x0,37 Zoll"
-
-msgid "2.00x0.50\""
-msgstr "2,00x0,50 Zoll"
-
-msgid "2.00x1.00\""
-msgstr "2,00x1,00 Zoll"
-
-msgid "2.00x1.25\""
-msgstr "2,00x1,25 Zoll"
-
-msgid "2.00x2.00\""
-msgstr "2,00x2,00 Zoll"
-
-msgid "2.00x3.00\""
-msgstr "2,00x3,00 Zoll"
-
-msgid "2.00x4.00\""
-msgstr "2,00x4,00 Zoll"
-
-msgid "2.00x5.50\""
-msgstr "2,00x5,50 Zoll"
-
-msgid "2.25x0.50\""
-msgstr "2,25x0,50 Zoll"
-
-msgid "2.25x1.25\""
-msgstr "2,25x1,25 Zoll"
-
-msgid "2.25x4.00\""
-msgstr "2,25x4,00 Zoll"
-
-msgid "2.25x5.50\""
-msgstr "2,25x5,50 Zoll"
-
-msgid "2.38x5.50\""
-msgstr "2,38x5,50 Zoll"
-
-msgid "2.5 inches/sec."
-msgstr "2,5 Zoll/Sek."
-
-msgid "2.50x1.00\""
-msgstr "2,50x1,00 Zoll"
-
-msgid "2.50x2.00\""
-msgstr "2,50x2,00 Zoll"
-
-msgid "2.75x1.25\""
-msgstr "2,75x1,25 Zoll"
-
-msgid "2.9 x 1\""
-msgstr "2,9 x 1 Zoll"
-
-msgid "20"
-msgstr "20"
-
-msgid "20 mm/sec."
-msgstr "20 mm/Sek."
-
-msgid "200 mm/sec."
-msgstr "200 mm/Sek."
-
-msgid "203dpi"
-msgstr "203 dpi"
-
-msgid "21"
-msgstr "21"
-
-msgid "22"
-msgstr "22"
-
-msgid "23"
-msgstr "23"
-
-msgid "24"
-msgstr "24"
-
-msgid "24-Pin Series"
-msgstr "24-Pin Serie"
-
-msgid "240x72dpi"
-msgstr "240x72 dpi"
-
-msgid "25"
-msgstr "25"
-
-msgid "250 mm/sec."
-msgstr "250 mm/Sek."
-
-msgid "26"
-msgstr "26"
-
-msgid "27"
-msgstr "27"
-
-msgid "28"
-msgstr "28"
-
-msgid "29"
-msgstr "29"
-
-msgid "3"
-msgstr "3"
-
-msgid "3 inches/sec."
-msgstr "3 Zoll/Sek."
-
-msgid "3 x 5"
-msgstr ""
-
-msgid "3.00x1.00\""
-msgstr "3,00x1,00 Zoll"
-
-msgid "3.00x1.25\""
-msgstr "3,00x1,25 Zoll"
-
-msgid "3.00x2.00\""
-msgstr "3,00x2,00 Zoll"
-
-msgid "3.00x3.00\""
-msgstr "3,00x3,00 Zoll"
-
-msgid "3.00x5.00\""
-msgstr "3,00x5,00 Zoll"
-
-msgid "3.25x2.00\""
-msgstr "3,25x2,00 Zoll"
-
-msgid "3.25x5.00\""
-msgstr "3,25x5,00 Zoll"
-
-msgid "3.25x5.50\""
-msgstr "3,25x5,50 Zoll"
-
-msgid "3.25x5.83\""
-msgstr "3,25x5,83 Zoll"
-
-msgid "3.25x7.83\""
-msgstr "3,25x7,83 Zoll"
-
-msgid "3.5 x 5"
-msgstr ""
-
-msgid "3.5\" Disk"
-msgstr "3,5-Zoll-Diskette"
-
-msgid "3.5\" Disk - 2 1/8 x 2 3/4\""
-msgstr "3,5-Zoll-Diskette – 2 1/8 x 2 3/4 Zoll"
-
-msgid "3.50x1.00\""
-msgstr "3,50x1,00 Zoll"
-
-msgid "30"
-msgstr "30"
-
-msgid "30 mm/sec."
-msgstr "30 mm/Sek."
-
-msgid "300 mm/sec."
-msgstr "300 mm/Sek."
-
-msgid "300dpi"
-msgstr "300 dpi"
-
-msgid "35"
-msgstr "35"
-
-msgid "360dpi"
-msgstr "360 dpi"
-
-msgid "360x180dpi"
-msgstr "360x180 dpi"
-
-msgid "4"
-msgstr "4"
-
-msgid "4 inches/sec."
-msgstr "4 Zoll/Sek."
-
-msgid "4.00x1.00\""
-msgstr "4,00x1,00 Zoll"
-
-msgid "4.00x13.00\""
-msgstr "4,00x13,00 Zoll"
-
-msgid "4.00x2.00\""
-msgstr "4,00x2,00 Zoll"
-
-msgid "4.00x2.50\""
-msgstr "4,00x2,50 Zoll"
-
-msgid "4.00x3.00\""
-msgstr "4,00x3,00 Zoll"
-
-msgid "4.00x4.00\""
-msgstr "4,00x4,00 Zoll"
-
-msgid "4.00x5.00\""
-msgstr "4,00x5,00 Zoll"
-
-msgid "4.00x6.00\""
-msgstr "4,00x6,00 Zoll"
-
-msgid "4.00x6.50\""
-msgstr "4,00x6,50 Zoll"
-
-msgid "40"
-msgstr "40"
-
-msgid "40 mm/sec."
-msgstr "40 mm/Sek."
-
-msgid "45"
-msgstr "45"
-
-msgid "5"
-msgstr "5"
-
-msgid "5 inches/sec."
-msgstr "5 Zoll/Sek."
-
-msgid "5 x 7"
-msgstr ""
-
-msgid "50"
-msgstr "50"
-
-msgid "55"
-msgstr "55"
-
-msgid "6"
-msgstr "6"
-
-msgid "6 inches/sec."
-msgstr "6 Zoll/Sek."
-
-msgid "6.00x1.00\""
-msgstr "6,00x1,00 Zoll"
-
-msgid "6.00x2.00\""
-msgstr "6,00x2,00 Zoll"
-
-msgid "6.00x3.00\""
-msgstr "6,00x3,00 Zoll"
-
-msgid "6.00x4.00\""
-msgstr "6,00x4,00 Zoll"
-
-msgid "6.00x5.00\""
-msgstr "6,00x5,00 Zoll"
-
-msgid "6.00x6.00\""
-msgstr "6,00x6,00 Zoll"
-
-msgid "6.00x6.50\""
-msgstr "6,00x6,50 Zoll"
-
-msgid "60"
-msgstr "60"
-
-msgid "60 mm/sec."
-msgstr "60 mm/Sek."
-
-msgid "600dpi"
-msgstr "600 dpi"
-
-msgid "60dpi"
-msgstr "60 dpi"
-
-msgid "60x72dpi"
-msgstr ""
-
-msgid "65"
-msgstr "65"
-
-msgid "7"
-msgstr "7"
-
-msgid "7 inches/sec."
-msgstr "7 Zoll/Sek."
-
-msgid "7 x 9"
-msgstr ""
-
-msgid "70"
-msgstr "70"
-
-msgid "720dpi"
-msgstr "720 dpi"
-
-msgid "75"
-msgstr "75"
-
-msgid "8"
-msgstr "8"
-
-msgid "8 inches/sec."
-msgstr "8 Zoll/Sek."
-
-msgid "8 x 10"
-msgstr ""
-
-msgid "8.00x1.00\""
-msgstr "8,00x1,00 Zoll"
-
-msgid "8.00x2.00\""
-msgstr "8,00x2,00 Zoll"
-
-msgid "8.00x3.00\""
-msgstr "8,00x3,00 Zoll"
-
-msgid "8.00x4.00\""
-msgstr "8,00x4,00 Zoll"
-
-msgid "8.00x5.00\""
-msgstr "8,00x5,00 Zoll"
-
-msgid "8.00x6.00\""
-msgstr "8,00x6,00 Zoll"
-
-msgid "8.00x6.50\""
-msgstr "8,00x6,50 Zoll"
-
-msgid "80"
-msgstr "80"
-
-msgid "80 mm/sec."
-msgstr "80 mm/Sek."
-
-msgid "85"
-msgstr "85"
-
-msgid "9"
-msgstr "9"
-
-msgid "9 inches/sec."
-msgstr "9 Zoll/Sek."
-
-msgid "9 x 11"
-msgstr ""
-
-msgid "9 x 12"
-msgstr ""
-
-msgid "9-Pin Series"
-msgstr "9-Pin Serie"
-
-msgid "90"
-msgstr "90"
-
-msgid "95"
-msgstr "95"
-
-msgid "?Invalid help command unknown."
-msgstr ""
-
-msgid "A Samba password is required to export printer drivers"
-msgstr ""
-
-msgid "A Samba username is required to export printer drivers"
-msgstr ""
-
-#, c-format
-msgid "A class named \"%s\" already exists."
-msgstr ""
-
-#, c-format
-msgid "A printer named \"%s\" already exists."
-msgstr ""
-
-msgid "A0"
-msgstr "DIN A0"
-
-msgid "A0 Long Edge"
-msgstr ""
-
-msgid "A1"
-msgstr "DIN A1"
-
-msgid "A1 Long Edge"
-msgstr ""
-
-msgid "A10"
-msgstr "DIN A10"
-
-msgid "A2"
-msgstr "DIN A2"
-
-msgid "A2 Long Edge"
-msgstr ""
-
-msgid "A3"
-msgstr "DIN A3"
-
-msgid "A3 Long Edge"
-msgstr ""
-
-msgid "A3 Oversize"
-msgstr ""
-
-msgid "A3 Oversize Long Edge"
-msgstr ""
-
-msgid "A4"
-msgstr "DIN A4"
-
-msgid "A4 Long Edge"
-msgstr ""
-
-msgid "A4 Oversize"
-msgstr ""
-
-msgid "A4 Small"
-msgstr ""
-
-msgid "A5"
-msgstr "DIN A5"
-
-msgid "A5 Long Edge"
-msgstr ""
-
-msgid "A5 Oversize"
-msgstr ""
-
-msgid "A6"
-msgstr "DIN A6"
-
-msgid "A6 Long Edge"
-msgstr ""
-
-msgid "A7"
-msgstr "DIN A7"
-
-msgid "A8"
-msgstr "DIN A8"
-
-msgid "A9"
-msgstr "DIN A9"
-
-msgid "ANSI A"
-msgstr "ANSI A"
-
-msgid "ANSI B"
-msgstr "ANSI B"
-
-msgid "ANSI C"
-msgstr "ANSI C"
-
-msgid "ANSI D"
-msgstr "ANSI D"
-
-msgid "ANSI E"
-msgstr "ANSI E"
-
-msgid "ARCH C"
-msgstr "ARCH C"
-
-msgid "ARCH C Long Edge"
-msgstr ""
-
-msgid "ARCH D"
-msgstr "ARCH D"
-
-msgid "ARCH D Long Edge"
-msgstr ""
-
-msgid "ARCH E"
-msgstr "ARCH E"
-
-msgid "ARCH E Long Edge"
-msgstr ""
-
-msgid "Accept Jobs"
-msgstr "Druckaufträge akzeptieren"
-
-msgid "Accepted"
-msgstr "Akzeptiert"
-
-msgid "Add Class"
-msgstr "Klasse hinzufügen"
-
-msgid "Add Printer"
-msgstr "Drucker hinzufügen"
-
-msgid "Add RSS Subscription"
-msgstr "RSS-Abo hinzufügen"
-
-msgid "Address"
-msgstr "Adresse"
-
-msgid "Address - 1 1/8 x 3 1/2\""
-msgstr "Adresse – 1 1/8 x 3 1/2 Zoll"
-
-msgid "Administration"
-msgstr "Verwaltung"
-
-msgid "Always"
-msgstr "Immer"
-
-msgid "AppSocket/HP JetDirect"
-msgstr "AppSocket/HP JetDirect"
-
-msgid "Applicator"
-msgstr "Applicator"
-
-#, c-format
-msgid "Attempt to set %s printer-state to bad value %d."
-msgstr ""
-
-#, c-format
-msgid "Attribute groups are out of order (%x < %x)."
-msgstr ""
-
-msgid "B0"
-msgstr "DIN B0"
-
-msgid "B1"
-msgstr "DIN B1"
-
-msgid "B10"
-msgstr "DIN B10"
-
-msgid "B2"
-msgstr "DIN B2"
-
-msgid "B3"
-msgstr "DIN B3"
-
-msgid "B4"
-msgstr "DIN B4"
-
-msgid "B5"
-msgstr "DIN B5"
-
-msgid "B5 Oversize"
-msgstr ""
-
-msgid "B6"
-msgstr "DIN B6"
-
-msgid "B7"
-msgstr "DIN B7"
-
-msgid "B8"
-msgstr "DIN B8"
-
-msgid "B9"
-msgstr "DIN B9"
-
-msgid "Bad NULL dests pointer"
-msgstr "Ungültiger NULL-Dests-Pointer"
-
-msgid "Bad OpenGroup"
-msgstr "Ungültige OpenGroup"
-
-msgid "Bad OpenUI/JCLOpenUI"
-msgstr "Ungültiges OpenUI/JCLOpenUI"
-
-msgid "Bad OrderDependency"
-msgstr "Ungültige OrderDependency"
-
-msgid "Bad PPD cache file."
-msgstr ""
-
-msgid "Bad Request"
-msgstr "Ungültige Anfrage"
-
-msgid "Bad SNMP version number"
-msgstr "Ungültige SNMP-Versionsnummer"
-
-msgid "Bad UIConstraints"
-msgstr "Ungültige UIConstraints"
-
-#, c-format
-msgid "Bad charset file \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "Bad charset type: %s"
-msgstr ""
-
-#, c-format
-msgid "Bad columns value %d."
-msgstr ""
-
-#, c-format
-msgid "Bad copies value %d."
-msgstr "Ungültiger Kopienwert „%d“."
-
-#, c-format
-msgid "Bad cpi value %f."
-msgstr ""
-
-msgid "Bad custom parameter"
-msgstr "Ungültiger angepasster Parameter"
-
-#, c-format
-msgid "Bad device-uri \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "Bad device-uri scheme \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "Bad document-format \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "Bad document-format-default \"%s\"."
-msgstr ""
-
-msgid "Bad filename buffer"
-msgstr ""
-
-#, c-format
-msgid "Bad font description line \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "Bad font description line: %s"
-msgstr ""
-
-msgid "Bad job-priority value."
-msgstr ""
-
-#, c-format
-msgid "Bad job-sheets value \"%s\"."
-msgstr ""
-
-msgid "Bad job-sheets value type."
-msgstr ""
-
-msgid "Bad job-state value."
-msgstr ""
-
-#, c-format
-msgid "Bad job-uri \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "Bad lpi value %f."
-msgstr ""
-
-#, c-format
-msgid "Bad notify-pull-method \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "Bad notify-recipient-uri \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "Bad number-up value %d."
-msgstr "Ungültiger Number-Up-Wert „%d“."
-
-#, c-format
-msgid "Bad option + choice on line %d."
-msgstr ""
-
-#, c-format
-msgid "Bad page-ranges values %d-%d."
-msgstr "Ungültige Seitenbereichswerte %d–%d."
-
-#, c-format
-msgid "Bad port-monitor \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "Bad printer-state value %d."
-msgstr ""
-
-#, c-format
-msgid "Bad request ID %d."
-msgstr ""
-
-#, c-format
-msgid "Bad request version number %d.%d."
-msgstr ""
-
-msgid "Bad subscription ID"
-msgstr ""
-
-#, c-format
-msgid "Bad text direction \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "Bad text direction: %s"
-msgstr ""
-
-#, c-format
-msgid "Bad text width \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "Bad text width: %s"
-msgstr ""
-
-msgid "Bad value string"
-msgstr ""
-
-msgid "Banners"
-msgstr "Banner"
-
-msgid "Billing Information: "
-msgstr "Rechnungsinformationen: "
-
-msgid "Bond Paper"
-msgstr "Papier bündeln"
-
-#, c-format
-msgid "Boolean expected for waiteof option \"%s\"."
-msgstr ""
-
-msgid "Buffer overflow detected, aborting."
-msgstr ""
-
-msgid "CMYK"
-msgstr "CMYK"
-
-msgid "CPCL Label Printer"
-msgstr "CPCL Etikettendrucker"
-
-msgid "Cancel RSS Subscription"
-msgstr "RSS-Abo widerrufen"
-
-msgid "Canceling print job."
-msgstr ""
-
-msgid "Cannot share a remote Kerberized printer."
-msgstr ""
-
-msgid "Cassette"
-msgstr ""
-
-msgid "Change Settings"
-msgstr "Einstellungen ändern"
-
-#, c-format
-msgid "Character set \"%s\" not supported."
-msgstr ""
-
-msgid "Classes"
-msgstr "Klassen"
-
-msgid "Clean Print Heads"
-msgstr "Saubere Druckerköpfe"
-
-msgid "Close-Job doesn't support the job-uri attribute."
-msgstr ""
-
-msgid "Color"
-msgstr "Farbe"
-
-msgid "Color Mode"
-msgstr "Farbmodus"
-
-msgid ""
-"Commands may be abbreviated.  Commands are:\n"
-"\n"
-"exit    help    quit    status  ?"
-msgstr ""
-
-msgid "Community name uses indefinite length"
-msgstr "Community-Name hat unbestimmte Länge"
-
-msgid "Connected to printer."
-msgstr ""
-
-msgid "Connecting to printer."
-msgstr ""
-
-msgid "Continue"
-msgstr "Weiter"
-
-msgid "Continuous"
-msgstr "Kontinuierlich"
-
-msgid "Control file sent successfully."
-msgstr ""
-
-msgid "Copying print data."
-msgstr ""
-
-msgid "Created"
-msgstr "Erstellt"
-
-msgid "Created On: "
-msgstr "Erstellt am: "
-
-msgid "Custom"
-msgstr "Eigene"
-
-msgid "CustominCutInterval"
-msgstr "CustominCutInterval"
-
-msgid "CustominTearInterval"
-msgstr "CustominTearInterval"
-
-msgid "Cut"
-msgstr "Abschneiden"
-
-msgid "Cutter"
-msgstr "Abschneider"
-
-msgid "Dark"
-msgstr "Dunkel"
-
-msgid "Darkness"
-msgstr "Dunkelheit"
-
-msgid "Data file sent successfully."
-msgstr ""
-
-msgid "Delete Class"
-msgstr "Klasse löschen"
-
-msgid "Delete Printer"
-msgstr "Drucker löschen"
-
-msgid "Description: "
-msgstr "Beschreibung: "
-
-msgid "DeskJet Series"
-msgstr "DeskJet Serie"
-
-#, c-format
-msgid "Destination \"%s\" is not accepting jobs."
-msgstr "Ziel „%s“ akzeptiert keine Druckaufträge."
-
-#, c-format
-msgid ""
-"Device: uri = %s\n"
-"        class = %s\n"
-"        info = %s\n"
-"        make-and-model = %s\n"
-"        device-id = %s\n"
-"        location = %s"
-msgstr ""
-
-msgid "Direct Thermal Media"
-msgstr "Direct Thermal Media"
-
-#, c-format
-msgid "Directory \"%s\" contains a relative path."
-msgstr ""
-
-#, c-format
-msgid "Directory \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
-msgstr ""
-
-#, c-format
-msgid "Directory \"%s\" is a file."
-msgstr ""
-
-#, c-format
-msgid "Directory \"%s\" not available: %s"
-msgstr ""
-
-#, c-format
-msgid "Directory \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
-msgstr ""
-
-msgid "Disabled"
-msgstr "Deaktiviert"
-
-#, c-format
-msgid "Document #%d does not exist in job #%d."
-msgstr ""
-
-msgid "Driver Name: "
-msgstr "Treibername: "
-
-msgid "Driver Version: "
-msgstr "Treiberversion: "
-
-msgid "Duplexer"
-msgstr "Duplexer"
-
-msgid "Dymo"
-msgstr "Dymo"
-
-msgid "EPL1 Label Printer"
-msgstr "EPL1 Etikettendrucker"
-
-msgid "EPL2 Label Printer"
-msgstr "EPL2 Etikettendrucker"
-
-msgid "Edit Configuration File"
-msgstr "Konfigurationsdatei bearbeiten"
-
-msgid "Empty PPD file."
-msgstr ""
-
-#. TRANSLATORS: Banner/cover sheet after the print job.
-msgid "Ending Banner"
-msgstr "Banner beenden"
-
-msgid "English"
-msgstr "German"
-
-msgid "Enter old password:"
-msgstr "Altes Kennwort eingeben:"
-
-msgid "Enter password again:"
-msgstr "Kennwort erneut eingeben:"
-
-msgid "Enter password:"
-msgstr "Kennwort eingeben:"
-
-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 ""
-"Geben Sie Ihren Benutzernamen und das Kennwort oder den root-Benutzernamen "
-"und -Kennwort ein, um auf diese Seite zuzgreifen. Falls Sie die Kerberos-"
-"Authentifizierung verwenden, stellen Sie sicher, dass Sie ein gültiges "
-"Kerberos-Ticket haben."
-
-msgid "Envelope #10 "
-msgstr ""
-
-msgid "Envelope #11"
-msgstr ""
-
-msgid "Envelope #12"
-msgstr ""
-
-msgid "Envelope #14"
-msgstr ""
-
-msgid "Envelope #9"
-msgstr ""
-
-msgid "Envelope B4"
-msgstr ""
-
-msgid "Envelope B5"
-msgstr ""
-
-msgid "Envelope B6"
-msgstr ""
-
-msgid "Envelope C0"
-msgstr ""
-
-msgid "Envelope C1"
-msgstr ""
-
-msgid "Envelope C2"
-msgstr ""
-
-msgid "Envelope C3"
-msgstr ""
-
-msgid "Envelope C4"
-msgstr ""
-
-msgid "Envelope C5"
-msgstr ""
-
-msgid "Envelope C6"
-msgstr ""
-
-msgid "Envelope C65"
-msgstr ""
-
-msgid "Envelope C7"
-msgstr ""
-
-msgid "Envelope Choukei 3"
-msgstr ""
-
-msgid "Envelope Choukei 3 Long Edge"
-msgstr ""
-
-msgid "Envelope Choukei 4"
-msgstr ""
-
-msgid "Envelope Choukei 4 Long Edge"
-msgstr ""
-
-msgid "Envelope DL"
-msgstr ""
-
-msgid "Envelope Feed"
-msgstr "Umschlagzuführung"
-
-msgid "Envelope Invite"
-msgstr ""
-
-msgid "Envelope Italian"
-msgstr ""
-
-msgid "Envelope Kaku2"
-msgstr ""
-
-msgid "Envelope Kaku2 Long Edge"
-msgstr ""
-
-msgid "Envelope Kaku3"
-msgstr ""
-
-msgid "Envelope Kaku3 Long Edge"
-msgstr ""
-
-msgid "Envelope Monarch"
-msgstr ""
-
-msgid "Envelope PRC1 "
-msgstr ""
-
-msgid "Envelope PRC1 Long Edge"
-msgstr ""
-
-msgid "Envelope PRC10"
-msgstr ""
-
-msgid "Envelope PRC10 Long Edge"
-msgstr ""
-
-msgid "Envelope PRC2"
-msgstr ""
-
-msgid "Envelope PRC2 Long Edge"
-msgstr ""
-
-msgid "Envelope PRC3"
-msgstr ""
-
-msgid "Envelope PRC3 Long Edge"
-msgstr ""
-
-msgid "Envelope PRC4"
-msgstr ""
-
-msgid "Envelope PRC4 Long Edge"
-msgstr ""
-
-msgid "Envelope PRC5 Long Edge"
-msgstr ""
-
-msgid "Envelope PRC5PRC5"
-msgstr ""
-
-msgid "Envelope PRC6"
-msgstr ""
-
-msgid "Envelope PRC6 Long Edge"
-msgstr ""
-
-msgid "Envelope PRC7"
-msgstr ""
-
-msgid "Envelope PRC7 Long Edge"
-msgstr ""
-
-msgid "Envelope PRC8"
-msgstr ""
-
-msgid "Envelope PRC8 Long Edge"
-msgstr ""
-
-msgid "Envelope PRC9"
-msgstr ""
-
-msgid "Envelope PRC9 Long Edge"
-msgstr ""
-
-msgid "Envelope Personal"
-msgstr ""
-
-msgid "Envelope You4"
-msgstr ""
-
-msgid "Envelope You4 Long Edge"
-msgstr ""
-
-msgid "Epson"
-msgstr "Epson"
-
-msgid "Error Policy"
-msgstr "Fehlerbehandlung"
-
-msgid "Error sending raster data."
-msgstr ""
-
-msgid "Error: need hostname after \"-h\" option."
-msgstr ""
-
-msgid "Every 10 Labels"
-msgstr "Alle 10 Etiketten"
-
-msgid "Every 2 Labels"
-msgstr "Alle 2 Etiketten"
-
-msgid "Every 3 Labels"
-msgstr "Alle 3 Etiketten"
-
-msgid "Every 4 Labels"
-msgstr "Alle 4 Etiketten"
-
-msgid "Every 5 Labels"
-msgstr "Alle 5 Etiketten"
-
-msgid "Every 6 Labels"
-msgstr "Alle 6 Etiketten"
-
-msgid "Every 7 Labels"
-msgstr "Alle 7 Etiketten"
-
-msgid "Every 8 Labels"
-msgstr "Alle 8 Etiketten"
-
-msgid "Every 9 Labels"
-msgstr "Alle 9 Etiketten"
-
-msgid "Every Label"
-msgstr "Bei jedem Etikett"
-
-msgid "Executive"
-msgstr ""
-
-msgid "Expectation Failed"
-msgstr "Erwartete Daten nicht erhalten"
-
-msgid "Export Printers to Samba"
-msgstr "Drucker zu Samba exportieren"
-
-msgid "FAIL"
-msgstr ""
-
-msgid "FanFold German"
-msgstr ""
-
-msgid "FanFold Legal German"
-msgstr ""
-
-msgid "Fanfold US"
-msgstr ""
-
-#, c-format
-msgid "File \"%s\" contains a relative path."
-msgstr ""
-
-#, c-format
-msgid "File \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
-msgstr ""
-
-#, c-format
-msgid "File \"%s\" is a directory."
-msgstr ""
-
-#, c-format
-msgid "File \"%s\" not available: %s"
-msgstr ""
-
-#, c-format
-msgid "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
-msgstr ""
-
-msgid "File Folder"
-msgstr "Dateiordner"
-
-msgid "File Folder - 9/16 x 3 7/16\""
-msgstr "Dateiordner – 9/16 x 3 7/16 Zoll"
-
-#, c-format
-msgid ""
-"File device URIs have been disabled. To enable, see the FileDevice directive "
-"in \"%s/cupsd.conf\"."
-msgstr ""
-
-#, c-format
-msgid "Finished page %d."
-msgstr ""
-
-msgid "Folio"
-msgstr "Folio"
-
-msgid "Forbidden"
-msgstr "Verboten"
-
-#, c-format
-msgid "Formatting page %d."
-msgstr ""
-
-msgid "General"
-msgstr "Allgemein"
-
-msgid "Generic"
-msgstr "Allgemein"
-
-msgid "Get-Response-PDU uses indefinite length"
-msgstr "Get-Response-PDU hat unbestimmte Länge"
-
-msgid "Glossy Paper"
-msgstr "Glanzpapier"
-
-msgid "Got a printer-uri attribute but no job-id."
-msgstr ""
-
-msgid "Grayscale"
-msgstr "Graustufen"
-
-msgid "HP"
-msgstr "HP"
-
-msgid "Hanging Folder"
-msgstr "Hängeordner"
-
-msgid "Hanging Folder - 9/16 x 2\""
-msgstr "Hängeordner – 9/16 x 2 Zoll"
-
-msgid "IPP 1setOf attribute with incompatible value tags."
-msgstr ""
-
-msgid "IPP attribute has no name."
-msgstr ""
-
-msgid "IPP begCollection value not 0 bytes."
-msgstr ""
-
-msgid "IPP boolean value not 1 byte."
-msgstr ""
-
-msgid "IPP date value not 11 bytes."
-msgstr ""
-
-msgid "IPP endCollection value not 0 bytes."
-msgstr ""
-
-msgid "IPP enum value not 4 bytes."
-msgstr ""
-
-msgid "IPP integer value not 4 bytes."
-msgstr ""
-
-msgid "IPP language length overflows value."
-msgstr ""
-
-msgid "IPP member name is not empty."
-msgstr ""
-
-msgid "IPP name larger than 32767 bytes."
-msgstr ""
-
-msgid "IPP nameWithLanguage value less than minimum 4 bytes."
-msgstr ""
-
-msgid "IPP rangeOfInteger value not 8 bytes."
-msgstr ""
-
-msgid "IPP resolution value not 9 bytes."
-msgstr ""
-
-msgid "IPP string length overflows value."
-msgstr ""
-
-msgid "IPP textWithLanguage value less than minimum 4 bytes."
-msgstr ""
-
-msgid "IPP value larger than 32767 bytes."
-msgstr ""
-
-msgid "ISOLatin1"
-msgstr "UTF-8"
-
-msgid "Illegal control character"
-msgstr "Ungültiges Steuerungszeichen"
-
-msgid "Illegal main keyword string"
-msgstr "Ungültiger Main-Keyword-String"
-
-msgid "Illegal option keyword string"
-msgstr "Ungültiger Option-Keyword-String"
-
-msgid "Illegal translation string"
-msgstr "Ungültiger Übersetzungsstring"
-
-msgid "Illegal whitespace character"
-msgstr "Ungültiges Leerzeichen"
-
-msgid "Installable Options"
-msgstr "Installationsoptionen"
-
-msgid "Installed"
-msgstr "Installiert"
-
-msgid "IntelliBar Label Printer"
-msgstr "IntelliBar Etikettendrucker"
-
-msgid "Intellitech"
-msgstr "Intellitech"
-
-msgid "Internal Server Error"
-msgstr "Interner Serverfehler"
-
-msgid "Internal error"
-msgstr "Interner Fehler"
-
-msgid "Internet Postage 2-Part"
-msgstr "Internet Postage 2-teilig"
-
-msgid "Internet Postage 2-Part - 2 1/4 x 7 1/2\""
-msgstr "Internet Postage 2-teilig – 2 1/4 x 7 1/2 Zoll"
-
-msgid "Internet Postage 3-Part"
-msgstr "Internet Postage 3-teilig"
-
-msgid "Internet Postage 3-Part - 2 1/4 x 7\""
-msgstr "Internet Postage 3-teilig – 2 1/4 x 7 Zoll"
-
-msgid "Internet Printing Protocol"
-msgstr "Internet-Druckerprotokoll"
-
-#, c-format
-msgid "Invalid printer command \"%s\"."
-msgstr ""
-
-msgid "JCL"
-msgstr "JCL"
-
-msgid "JIS B0"
-msgstr ""
-
-msgid "JIS B1"
-msgstr ""
-
-msgid "JIS B10"
-msgstr ""
-
-msgid "JIS B2"
-msgstr ""
-
-msgid "JIS B3"
-msgstr ""
-
-msgid "JIS B4"
-msgstr ""
-
-msgid "JIS B4 Long Edge"
-msgstr ""
-
-msgid "JIS B5"
-msgstr ""
-
-msgid "JIS B5 Long Edge"
-msgstr ""
-
-msgid "JIS B6"
-msgstr ""
-
-msgid "JIS B6 Long Edge"
-msgstr ""
-
-msgid "JIS B7"
-msgstr ""
-
-msgid "JIS B8"
-msgstr ""
-
-msgid "JIS B9"
-msgstr ""
-
-#, c-format
-msgid "Job #%d cannot be restarted - no files."
-msgstr ""
-
-#, c-format
-msgid "Job #%d does not exist."
-msgstr ""
-
-#, c-format
-msgid "Job #%d is already aborted - can't cancel."
-msgstr "Druckauftrag Nr. %d wurde bereits abgebrochen – Abbruch nicht möglich."
-
-#, c-format
-msgid "Job #%d is already canceled - can't cancel."
-msgstr "Druckauftrag Nr. %d wurde bereits abgebrochen – Abbruch nicht möglich."
-
-#, c-format
-msgid "Job #%d is already completed - can't cancel."
-msgstr ""
-"Druckauftrag Nr. %d wurde bereits abgeschlossen – Abbruch nicht möglich."
-
-#, c-format
-msgid "Job #%d is finished and cannot be altered."
-msgstr ""
-
-#, c-format
-msgid "Job #%d is not complete."
-msgstr "Auftrag #%d ist nicht fertig."
-
-#, c-format
-msgid "Job #%d is not held for authentication."
-msgstr ""
-
-#, c-format
-msgid "Job #%d is not held."
-msgstr ""
-
-msgid "Job Completed"
-msgstr "Druckauftrag abgeschlossen"
-
-msgid "Job Created"
-msgstr "Druckauftrag erzeugt"
-
-msgid "Job ID: "
-msgstr "Druckauftrags-ID: "
-
-msgid "Job Options Changed"
-msgstr "Druckauftragsoptionen wurden geändert"
-
-msgid "Job Stopped"
-msgstr "Druckauftrag gestoppt"
-
-msgid "Job UUID: "
-msgstr "Druckauftrags-UUID: "
-
-msgid "Job is completed and cannot be changed."
-msgstr "Druckauftrag ist abgeschlossen und kann nicht geändert werden."
-
-msgid "Job operation failed:"
-msgstr "Druckvorgang fehlgeschlagen:"
-
-msgid "Job state cannot be changed."
-msgstr "Druckauftragsstatus kann nicht geändert werden."
-
-msgid "Job subscriptions cannot be renewed."
-msgstr ""
-
-msgid "Jobs"
-msgstr "Druckaufträge"
-
-msgid "LPD/LPR Host or Printer"
-msgstr "LPD/LPR-Host oder -Drucker"
-
-msgid "Label Printer"
-msgstr "Etikettendrucker"
-
-msgid "Label Top"
-msgstr "Etikett (oben)"
-
-#, c-format
-msgid "Language \"%s\" not supported."
-msgstr ""
-
-msgid "Large Address"
-msgstr "Adresse (groß)"
-
-msgid "Large Address - 1 4/10 x 3 1/2\""
-msgstr "Adresse (groß) – 1 4/10 x 3 1/2 Zoll"
-
-msgid "LaserJet Series PCL 4/5"
-msgstr "LaserJet Serie PCL 4/5"
-
-msgid "Letter Oversize"
-msgstr ""
-
-msgid "Letter Oversize Long Edge"
-msgstr ""
-
-msgid "Light"
-msgstr "Hell"
-
-msgid "Line longer than the maximum allowed (255 characters)"
-msgstr "Zeile ist länger als maximal zulässig (255 Zeichen)"
-
-msgid "List Available Printers"
-msgstr "Verfügbare Drucker anzeigen"
-
-msgid "Loading print file."
-msgstr ""
-
-msgid "Location: "
-msgstr "Standort: "
-
-msgid "Long-Edge (Portrait)"
-msgstr "Lange Kante (Hochformat)"
-
-msgid "Looking for printer."
-msgstr ""
-
-msgid "Make and Model: "
-msgstr "Hersteller und Modell: "
-
-msgid "Manual Feed"
-msgstr "Manuelle Papierzufuhr"
-
-msgid "Media Dimensions: "
-msgstr "Medienmaße: "
-
-msgid "Media Limits: "
-msgstr "Mediendruckgrenzen: "
-
-msgid "Media Name: "
-msgstr "Medienname: "
-
-msgid "Media Size"
-msgstr "Mediengröße"
-
-msgid "Media Source"
-msgstr "Medienquelle"
-
-msgid "Media Tracking"
-msgstr "Medienführung"
-
-msgid "Media Type"
-msgstr "Medienart"
-
-msgid "Medium"
-msgstr "Medium"
-
-msgid "Memory allocation error"
-msgstr "Fehler bei der Speicherzuteilung"
-
-msgid "Missing CloseGroup"
-msgstr ""
-
-msgid "Missing PPD-Adobe-4.x header"
-msgstr "PPD-Adobe-4.x Header fehlt"
-
-msgid "Missing asterisk in column 1"
-msgstr "Sternchen in Spalte 1 fehlt"
-
-msgid "Missing document-number attribute."
-msgstr ""
-
-#, c-format
-msgid "Missing double quote on line %d."
-msgstr ""
-
-msgid "Missing form variable"
-msgstr ""
-
-msgid "Missing last-document attribute in request."
-msgstr ""
-
-msgid "Missing media or media-col."
-msgstr ""
-
-msgid "Missing media-size in media-col."
-msgstr ""
-
-msgid "Missing notify-subscription-ids attribute."
-msgstr ""
-
-msgid "Missing option keyword"
-msgstr ""
-
-msgid "Missing requesting-user-name attribute."
-msgstr ""
-
-msgid "Missing required attributes."
-msgstr ""
-
-#, c-format
-msgid "Missing value on line %d of banner file."
-msgstr ""
-
-#, c-format
-msgid "Missing value on line %d."
-msgstr ""
-
-msgid "Missing value string"
-msgstr "Wertestring fehlt"
-
-msgid "Missing x-dimension in media-size."
-msgstr ""
-
-msgid "Missing y-dimension in media-size."
-msgstr ""
-
-#, c-format
-msgid ""
-"Model:  name = %s\n"
-"        natural_language = %s\n"
-"        make-and-model = %s\n"
-"        device-id = %s"
-msgstr ""
-
-msgid "Modify Class"
-msgstr "Klasse verändern"
-
-msgid "Modify Printer"
-msgstr "Drucker verändern"
-
-msgid "Move All Jobs"
-msgstr "Alle Druckaufträge bewegen"
-
-msgid "Move Job"
-msgstr "Druckauftrag bewegen"
-
-msgid "Moved Permanently"
-msgstr "Dauerhaft bewegt"
-
-msgid "NULL PPD file pointer"
-msgstr "NULL PPD File Pointer"
-
-msgid "Name OID uses indefinite length"
-msgstr "Name-OID hat unbestimmte Länge"
-
-msgid "Nested classes are not allowed."
-msgstr ""
-
-msgid "Never"
-msgstr "Niemals"
-
-msgid "New Stylus Color Series"
-msgstr "New Stylus Color Serie"
-
-msgid "New Stylus Photo Series"
-msgstr "New Stylus Photo Serie"
-
-msgid "No"
-msgstr "Nein"
-
-msgid "No Content"
-msgstr "Kein Inhalt"
-
-msgid "No PPD name"
-msgstr ""
-
-msgid "No VarBind SEQUENCE"
-msgstr "Keine VarBind SEQUENCE"
-
-msgid "No Windows printer drivers are installed."
-msgstr ""
-
-msgid "No active connection"
-msgstr "Keine aktive Verbindung"
-
-#, c-format
-msgid "No active jobs on %s."
-msgstr "Keine aktiven Aufträge auf %s."
-
-msgid "No attributes in request."
-msgstr ""
-
-msgid "No authentication information provided."
-msgstr ""
-
-msgid "No community name"
-msgstr "Kein Community-Name"
-
-msgid "No default printer."
-msgstr "Kein voreingestelltes Druckziel"
-
-msgid "No destinations added."
-msgstr "Keine Druckziele hinzugefügt."
-
-msgid "No device URI found in argv[0] or in DEVICE_URI environment variable."
-msgstr ""
-
-msgid "No error-index"
-msgstr "Kein Fehlerindex"
-
-msgid "No error-status"
-msgstr "Kein Fehlerstatus"
-
-msgid "No file in print request."
-msgstr ""
-
-msgid "No fonts in charset file."
-msgstr ""
-
-msgid "No modification time"
-msgstr ""
-
-msgid "No name OID"
-msgstr "Kein Name-OID"
-
-msgid "No pages were found."
-msgstr ""
-
-msgid "No printer name"
-msgstr ""
-
-msgid "No printer-uri found"
-msgstr ""
-
-msgid "No printer-uri found for class"
-msgstr ""
-
-msgid "No printer-uri in request."
-msgstr ""
-
-msgid "No request-id"
-msgstr "Keine Anfrage-ID"
-
-msgid "No subscription attributes in request."
-msgstr ""
-
-msgid "No subscriptions found."
-msgstr "Keine Subskriptionen gefunden."
-
-msgid "No variable-bindings SEQUENCE"
-msgstr "Keine „variable-bindings SEQUENCE“"
-
-msgid "No version number"
-msgstr "Keine Versionsnummer"
-
-msgid "Non-continuous (Mark sensing)"
-msgstr "Nicht fortlaufend (Mark-Sensing)"
-
-msgid "Non-continuous (Web sensing)"
-msgstr "Nicht fortlaufend (Web-Sensing)"
-
-msgid "Normal"
-msgstr "Normal"
-
-msgid "Not Found"
-msgstr "Nicht gefunden"
-
-msgid "Not Implemented"
-msgstr "Nicht implementiert"
-
-msgid "Not Installed"
-msgstr "Nicht installiert"
-
-msgid "Not Modified"
-msgstr "Nicht verändert"
-
-msgid "Not Supported"
-msgstr "Nicht unterstützt"
-
-msgid "Not allowed to print."
-msgstr "Drucken nicht erlaubt."
-
-msgid "Note"
-msgstr "Hinweis"
-
-msgid ""
-"Note: this program only validates the DSC comments, not the PostScript "
-"itself."
-msgstr ""
-
-msgid "OK"
-msgstr "OK"
-
-msgid "Off (1-Sided)"
-msgstr "Aus (Einseitig)"
-
-msgid "Oki"
-msgstr "Oki"
-
-msgid "Online Help"
-msgstr "Online-Hilfe"
-
-#, c-format
-msgid "Open of %s failed: %s"
-msgstr "%s öffnen fehlgeschlagen: %s"
-
-msgid "OpenGroup without a CloseGroup first"
-msgstr "OpenGroup ohne CloseGroup zuerst"
-
-msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first"
-msgstr "OpenUI/JCLOpenUI ohne CloseUI/JCLCloseUI zuerst"
-
-msgid "Operation Policy"
-msgstr "Nutzungsrichtlinien"
-
-#, c-format
-msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
-msgstr ""
-
-msgid "Options Installed"
-msgstr "Installierte Optionen"
-
-msgid "Options:"
-msgstr ""
-
-msgid "Options: "
-msgstr "Optionen: "
-
-msgid "Out of date PPD cache file."
-msgstr ""
-
-msgid "Out of memory."
-msgstr ""
-
-msgid "Output Mode"
-msgstr "Ausgabemodus"
-
-#, c-format
-msgid "Output for printer %s is sent to %s"
-msgstr ""
-
-#, c-format
-msgid "Output for printer %s is sent to remote printer %s on %s"
-msgstr ""
-
-#, c-format
-msgid "Output for printer %s/%s is sent to %s"
-msgstr ""
-
-#, c-format
-msgid "Output for printer %s/%s is sent to remote printer %s on %s"
-msgstr ""
-
-msgid "PASS"
-msgstr ""
-
-msgid "PCL Laser Printer"
-msgstr "PCL Laserdrucker"
-
-msgid "PRC16K"
-msgstr "PRC16K"
-
-msgid "PRC16K Long Edge"
-msgstr ""
-
-msgid "PRC32K"
-msgstr "PRC32K"
-
-msgid "PRC32K Long Edge"
-msgstr ""
-
-msgid "PRC32K Oversize"
-msgstr ""
-
-msgid "PRC32K Oversize Long Edge"
-msgstr ""
-
-msgid "Packet does not contain a Get-Response-PDU"
-msgstr "Paket enthält kein Get-Response-PDU"
-
-msgid "Packet does not start with SEQUENCE"
-msgstr "Paket beginnt nicht mit SEQUENCE"
-
-msgid "ParamCustominCutInterval"
-msgstr "ParamCustominCutInterval"
-
-msgid "ParamCustominTearInterval"
-msgstr "ParamCustominTearInterval"
-
-#, c-format
-msgid "Password for %s on %s? "
-msgstr "Das Kennwort für „%s“ auf „%s“? "
-
-#, c-format
-msgid "Password for %s required to access %s via SAMBA: "
-msgstr ""
-"Das Kennwort für „%s“ wird benötigt für den Zugriff auf „%s“ über SAMBA: "
-
-msgid "Pause Class"
-msgstr "Klasse anhalten"
-
-msgid "Pause Printer"
-msgstr "Drucker anhalten"
-
-msgid "Peel-Off"
-msgstr "Aufkleber"
-
-msgid "Photo"
-msgstr "Foto"
-
-msgid "Photo Labels"
-msgstr "Foto-Etiketten"
-
-msgid "Plain Paper"
-msgstr "Standardpapier"
-
-msgid "Policies"
-msgstr "Richtlinien "
-
-msgid "Port Monitor"
-msgstr "Port-Monitor"
-
-msgid "PostScript Printer"
-msgstr "PostScript-Drucker"
-
-msgid "Postcard"
-msgstr "Postkarte"
-
-msgid "Postcard Double "
-msgstr ""
-
-msgid "Postcard Double Long Edge"
-msgstr ""
-
-msgid "Postcard Long Edge"
-msgstr ""
-
-msgid "Print Density"
-msgstr "Druckdichte"
-
-msgid "Print Job:"
-msgstr "Druckauftrag:"
-
-msgid "Print Mode"
-msgstr "Druckmodus"
-
-msgid "Print Rate"
-msgstr "Druckrate"
-
-msgid "Print Self-Test Page"
-msgstr "Selbsttestseite drucken"
-
-msgid "Print Speed"
-msgstr "Druckgeschwindigkeit"
-
-msgid "Print Test Page"
-msgstr "Testseite drucken"
-
-msgid "Print and Cut"
-msgstr "Drucken und abschneiden"
-
-msgid "Print and Tear"
-msgstr "Drucken und abziehen"
-
-#, c-format
-msgid "Print file accepted - job ID %d."
-msgstr ""
-
-msgid "Print file accepted - job ID unknown."
-msgstr ""
-
-msgid "Print file sent."
-msgstr ""
-
-msgid "Print file was not accepted."
-msgstr ""
-
-msgid "Print job too large."
-msgstr ""
-
-msgid "Printed For: "
-msgstr "Gedruckt für: "
-
-msgid "Printed From: "
-msgstr "Gedruckt von: "
-
-msgid "Printed On: "
-msgstr "Gedruckt am: "
-
-msgid "Printer Added"
-msgstr "Drucker hinzugefügt"
-
-msgid "Printer Default"
-msgstr "Standardeinstellung für Drucker"
-
-msgid "Printer Deleted"
-msgstr "Drucker gelöscht"
-
-msgid "Printer Modified"
-msgstr "Drucker geändert"
-
-msgid "Printer Name: "
-msgstr "Druckername: "
-
-msgid "Printer Paused"
-msgstr "Drucker angehalten"
-
-msgid "Printer Settings"
-msgstr "Druckereinstellungen"
-
-msgid "Printer busy, will retry in 10 seconds."
-msgstr "Drucker ist beschäftigt, wiederholter Versuch in 10 s."
-
-msgid "Printer busy; will retry in 30 seconds."
-msgstr "Drucker ist beschäftigt; wiederholter Versuch in 30 s."
-
-msgid "Printer did not respond."
-msgstr "Drucker antwortete nicht."
-
-#, c-format
-msgid "Printer does not support IPP/%d.%d, trying IPP/%s."
-msgstr ""
-
-msgid "Printer is busy, will retry in 5 seconds."
-msgstr "Drucker ist beschäftigt, wiederholter Versuch in 5 s."
-
-msgid "Printer is not currently connected."
-msgstr ""
-
-msgid "Printer is now connected."
-msgstr "Drucker ist jetzt verbunden."
-
-msgid "Printer is now online."
-msgstr "Drucker ist jetzt Online."
-
-msgid "Printer is offline."
-msgstr "Drucker ist jetzt Offline."
-
-msgid "Printer not connected, will retry in 30 seconds."
-msgstr "Drucker nicht verbunden, wiederholter Verbindungsversuch in 30 s."
-
-msgid "Printer not connected; will retry in 30 seconds."
-msgstr "Drucker nicht verbunden; wiederholter Verbindungsversuch in 30 s."
-
-msgid "Printer:"
-msgstr "Drucker:"
-
-msgid "Printers"
-msgstr "Drucker"
-
-#, c-format
-msgid "Printing page %d, %d%% complete."
-msgstr "Drucke Seite %d, %d%% fertig."
-
-#, c-format
-msgid "Printing page %d."
-msgstr "Drucke Seite %d"
-
-msgid "Purge Jobs"
-msgstr "Druckaufträge aufräumen"
-
-msgid "Quarto"
-msgstr "US Quarto"
-
-msgid "Quota limit reached."
-msgstr "Kontingentgrenze erreicht."
-
-msgid "Rank    Owner   Job     File(s)                         Total Size"
-msgstr ""
-
-#. TRANSLATORS: Pri is job priority.
-msgid ""
-"Rank   Owner      Pri  Job        Files                       Total Size"
-msgstr ""
-
-msgid "Ready to print."
-msgstr "Druckbereit"
-
-msgid "Reject Jobs"
-msgstr "Druckaufträge ablehnen"
-
-#, c-format
-msgid "Remote host did not accept control file (%d)."
-msgstr ""
-
-#, c-format
-msgid "Remote host did not accept data file (%d)."
-msgstr ""
-
-msgid "Reprint After Error"
-msgstr "Druckvorgang nach dem Fehler fortsetzen"
-
-msgid "Request Entity Too Large"
-msgstr "Gesamte Anfrage zu groß"
-
-msgid "Resolution"
-msgstr "Auflösung"
-
-msgid "Resume Class"
-msgstr "Klasse fortsetzen"
-
-msgid "Resume Printer"
-msgstr "Drucken fortsetzen"
-
-msgid "Return Address"
-msgstr "Absender-Adresse"
-
-msgid "Return Address - 3/4 x 2\""
-msgstr "Absender-Adresse – 3/4 x 2 Zoll"
-
-msgid "Rewind"
-msgstr "Zurückdrehen"
-
-#, c-format
-msgid "Running command: %s %s -N -A %s -c '%s'"
-msgstr ""
-
-msgid "SEQUENCE uses indefinite length"
-msgstr "SEQUENCE hat unbestimmte Länge"
-
-msgid "SSL/TLS Negotiation Error"
-msgstr ""
-
-msgid "See Other"
-msgstr "Siehe auch"
-
-msgid "Sending data to printer."
-msgstr "Sende Daten zum Drucker."
-
-#, c-format
-msgid "Serial Port #%d"
-msgstr "Serieller Anschluss Nr. %d"
-
-msgid "Server Restarted"
-msgstr "Server neu gestartet"
-
-msgid "Server Security Auditing"
-msgstr "Server Security Auditing"
-
-msgid "Server Started"
-msgstr "Server gestartet"
-
-msgid "Server Stopped"
-msgstr "Server gestoppt"
-
-msgid "Service Unavailable"
-msgstr "Dienst nicht verfügbar"
-
-msgid "Set Allowed Users"
-msgstr "Zugelassene Benutzer festlegen"
-
-msgid "Set As Server Default"
-msgstr "Als Standardeinstellungen 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 "Shipping Address - 2 5/16 x 4\""
-msgstr "Lieferadresse – 2 5/16 x 4 Zoll"
-
-msgid "Short-Edge (Landscape)"
-msgstr "Kurze Kante (Querformat)"
-
-msgid "Special Paper"
-msgstr "Spezialpapier"
-
-#, c-format
-msgid "Spooling job, %.0f%% complete."
-msgstr "Auftragszwischenspeicherung %.0f%% abgeschlossen."
-
-msgid "Standard"
-msgstr "Standard"
-
-#. TRANSLATORS: Banner/cover sheet before the print job.
-msgid "Starting Banner"
-msgstr "Startbanner"
-
-#, c-format
-msgid "Starting page %d."
-msgstr "Beginne Seite %d."
-
-msgid "Statement"
-msgstr "US Statement"
-
-msgid "Stylus Color Series"
-msgstr "Stylus Color Serie"
-
-msgid "Stylus Photo Series"
-msgstr "Stylus Photo Serie"
-
-#, c-format
-msgid "Subscription #%d does not exist."
-msgstr ""
-
-msgid "Super A"
-msgstr "Super A"
-
-msgid "Super B"
-msgstr "Super B"
-
-msgid "Super B/A3"
-msgstr "Super B/A3"
-
-msgid "Switching Protocols"
-msgstr "Protokoll wechseln"
-
-msgid "Tabloid"
-msgstr "US Tabloid"
-
-msgid "Tabloid Oversize"
-msgstr ""
-
-msgid "Tabloid Oversize Long Edge"
-msgstr ""
-
-msgid "Tear"
-msgstr "Abziehen"
-
-msgid "Tear-Off"
-msgstr "Abziehen"
-
-msgid "Tear-Off Adjust Position"
-msgstr "Abziehposition"
-
-#, c-format
-msgid "The %s attribute cannot be provided with job-ids."
-msgstr ""
-
-#, c-format
-msgid "The PPD file \"%s\" could not be found."
-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"
-
-msgid "The PPD file could not be opened."
-msgstr "Die PPD Datei konnte nicht geöffnet werden."
-
-msgid ""
-"The class name may only contain up to 127 printable characters and may not "
-"contain spaces, slashes (/), or the pound sign (#)."
-msgstr ""
-"Der Klassenname darf maximal 127 druckbare Zeichen haben und darf keine "
-"Leerzeichen, Schrägstriche (/) oder Rautezeichen (#) enthalten."
-
-msgid "The developer unit needs to be replaced."
-msgstr ""
-
-msgid "The developer unit will need to be replaced soon."
-msgstr ""
-
-msgid "The fuser's temperature is high."
-msgstr ""
-
-msgid "The fuser's temperature is low."
-msgstr ""
-
-msgid ""
-"The notify-lease-duration attribute cannot be used with job subscriptions."
-msgstr ""
-"Das Attribut „notify-lease-duration“ kann nicht mit Druckauftrags-"
-"Subskriptionen verwendet werden."
-
-#, c-format
-msgid "The notify-user-data value is too large (%d > 63 octets)."
-msgstr ""
-
-msgid "The optical photoconductor needs to be replaced."
-msgstr ""
-
-msgid "The optical photoconductor will need to be replaced soon."
-msgstr ""
-
-msgid "The output bin is almost full."
-msgstr ""
-
-msgid "The output bin is full."
-msgstr ""
-
-msgid "The output bin is missing."
-msgstr ""
-
-msgid "The page setup information was not valid."
-msgstr ""
-
-msgid "The paper tray is almost empty."
-msgstr ""
-
-msgid "The paper tray is empty."
-msgstr ""
-
-msgid "The paper tray is missing."
-msgstr ""
-
-msgid "The paper tray needs to be filled."
-msgstr ""
-
-msgid "The print file could not be opened."
-msgstr ""
-
-msgid "The printer URI is incorrect or no longer exists."
-msgstr ""
-
-msgid "The printer is busy."
-msgstr "Der Drucker ist beschäftigt."
-
-msgid "The printer is not connected."
-msgstr "Der Drucker ist nicht verbunden."
-
-msgid "The printer is not responding."
-msgstr "Der Drucker reagiert nicht."
-
-msgid "The printer is out of ink."
-msgstr "Der Drucker hat keine Tinte mehr."
-
-msgid "The printer is running low on ink."
-msgstr ""
-
-msgid "The printer is running low on toner."
-msgstr "Der Drucker hat kein Toner mehr."
-
-msgid "The printer is unreachable at this time."
-msgstr "Der drucker ist zur Zeit nicht erreichbar."
-
-msgid "The printer may be out of toner."
-msgstr "Der Drucker könnte zu wenig Toner haben."
-
-msgid "The printer may not exist or is unavailable at this time."
-msgstr ""
-
-msgid ""
-"The printer name may only contain up to 127 printable characters and may not "
-"contain spaces, slashes (/), or the pound sign (#)."
-msgstr ""
-"Der Druckername darf maximal 127 druckbare Zeichen haben und darf keine "
-"Leerzeichen, Schrägstriche (/) oder Rautezeichen (#) enthalten."
-
-msgid "The printer or class does not exist."
-msgstr ""
-
-msgid "The printer or class is not shared."
-msgstr ""
-
-msgid "The printer's cover is open."
-msgstr ""
-
-msgid "The printer's door is open."
-msgstr "Die Tür des Druckers ist offen"
-
-msgid "The printer's interlock is open."
-msgstr ""
-
-msgid "The printer's waste bin is almost full."
-msgstr ""
-
-msgid "The printer's waste bin is full."
-msgstr ""
-
-#, c-format
-msgid "The printer-uri \"%s\" contains invalid characters."
-msgstr "Die Drucker-URI „%s“ enthält ungültige Zeichen."
-
-msgid "The printer-uri attribute is required."
-msgstr ""
-
-msgid ""
-"The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
-msgstr ""
-"Die Drucker-URI muss in der folgenden Form vorliegen: ipp://HOSTNAME/classes/"
-"CLASSNAME"
-
-msgid ""
-"The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
-msgstr ""
-"Die Drucker-URI muss in der folgenden Form vorliegen: ipp://HOSTNAME/"
-"printers/PRINTERNAME"
-
-msgid ""
-"The subscription name may not contain spaces, slashes (/), question marks "
-"(?), or the pound sign (#)."
-msgstr ""
-"Der Subkriptionsname darf keine Leerzeichen, Schrägstriche (/), Fragezeichen "
-"(?) oder Rautezeichen (#) enthalten."
-
-msgid ""
-"The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to "
-"enable it."
-msgstr ""
-
-#, c-format
-msgid "The which-jobs value \"%s\" is not supported."
-msgstr ""
-
-msgid "There are too many subscriptions."
-msgstr "Es liegen zu viele Subskriptionen vor."
-
-msgid "There is a paper jam."
-msgstr "Es gibt einen Papierstau."
-
-msgid "There was an unrecoverable USB error."
-msgstr ""
-
-msgid "Thermal Transfer Media"
-msgstr "Thermal Transfer Media"
-
-msgid "Title: "
-msgstr "Titel: "
-
-msgid "Too many active jobs."
-msgstr "Zu viele aktive Druckaufträge."
-
-#, c-format
-msgid "Too many job-sheets values (%d > 2)."
-msgstr ""
-
-#, c-format
-msgid "Too many printer-state-reasons values (%d > %d)."
-msgstr ""
-
-msgid "Transparency"
-msgstr "Transparenz"
-
-msgid "Tray"
-msgstr "Fach"
-
-msgid "Tray 1"
-msgstr "Fach 1"
-
-msgid "Tray 2"
-msgstr "Fach 2"
-
-msgid "Tray 3"
-msgstr "Fach 3"
-
-msgid "Tray 4"
-msgstr "Fach 4"
-
-msgid "URI Too Long"
-msgstr "URI zu lang"
-
-msgid "US Ledger"
-msgstr "US Ledger"
-
-msgid "US Legal"
-msgstr "US Lang"
-
-msgid "US Legal Oversize"
-msgstr ""
-
-msgid "US Letter"
-msgstr "US Brief"
-
-msgid "US Letter Long Edge"
-msgstr ""
-
-msgid "US Letter Oversize"
-msgstr ""
-
-msgid "US Letter Oversize Long Edge"
-msgstr ""
-
-msgid "US Letter Small"
-msgstr ""
-
-#, c-format
-msgid "USB Serial Port #%d"
-msgstr "USB Serieller Anschluss Nr. %d"
-
-msgid "Unable to access cupsd.conf file:"
-msgstr "Kein Zugriff auf Datei „cupsd.conf“:"
-
-msgid "Unable to add RSS subscription:"
-msgstr "RSS-Abo konnte nicht hinzugefügt werden:"
-
-msgid "Unable to add class:"
-msgstr "Klasse konnte nicht hinzugefügt werden:"
-
-msgid "Unable to add document to print job."
-msgstr ""
-
-#, c-format
-msgid "Unable to add job for destination \"%s\"."
-msgstr ""
-
-msgid "Unable to add printer:"
-msgstr "Drucker konnte nicht hinzugefügt werden:"
-
-msgid "Unable to allocate memory for file types."
-msgstr ""
-
-msgid "Unable to allocate memory for page info"
-msgstr ""
-
-msgid "Unable to allocate memory for pages array"
-msgstr ""
-
-msgid "Unable to cancel RSS subscription:"
-msgstr "RSS-Abo konnte nicht widerrufen werden:"
-
-msgid "Unable to cancel print job."
-msgstr ""
-
-msgid "Unable to change printer-is-shared attribute:"
-msgstr "Attribut „printer-is-shared“ konnte nicht geändert werden:"
-
-msgid "Unable to change printer:"
-msgstr "Drucker konnte nicht geändert werden:"
-
-msgid "Unable to change server settings:"
-msgstr "Servereinstellungen konnten nicht geändert werden:"
-
-msgid "Unable to configure printer options."
-msgstr ""
-
-msgid "Unable to connect to host."
-msgstr "Verbindungsaufbau zum Host fehlgeschlagen."
-
-msgid "Unable to contact printer, queuing on next printer in class."
-msgstr ""
-
-#, c-format
-msgid "Unable to copy 64-bit CUPS printer driver files (%d)."
-msgstr ""
-
-#, c-format
-msgid "Unable to copy 64-bit Windows printer driver files (%d)."
-msgstr ""
-
-#, c-format
-msgid "Unable to copy CUPS printer driver files (%d)."
-msgstr ""
-
-#, c-format
-msgid "Unable to copy PPD file - %s"
-msgstr ""
-
-msgid "Unable to copy PPD file."
-msgstr ""
-
-#, c-format
-msgid "Unable to copy Windows 2000 printer driver files (%d)."
-msgstr ""
-
-#, c-format
-msgid "Unable to copy Windows 9x printer driver files (%d)."
-msgstr ""
-
-#, c-format
-msgid "Unable to copy interface script - %s"
-msgstr ""
-
-msgid "Unable to copy print file"
-msgstr ""
-
-msgid "Unable to create compressed print file"
-msgstr ""
-
-msgid "Unable to create pipes for filters"
-msgstr ""
-
-msgid "Unable to create printer-uri"
-msgstr ""
-
-msgid "Unable to create temporary file"
-msgstr ""
-
-msgid "Unable to create temporary file:"
-msgstr "Temporäre Datei konnte nicht erstellt werden:"
-
-msgid "Unable to delete class:"
-msgstr "Klasse konnte nicht gelöscht werden:"
-
-msgid "Unable to delete printer:"
-msgstr "Drucker konnte nicht gelöscht werden:"
-
-msgid "Unable to do maintenance command:"
-msgstr "Wartungsbefehl konnte nicht ausgeführt werden:"
-
-msgid "Unable to edit cupsd.conf files larger than 1MB"
-msgstr ""
-
-msgid ""
-"Unable to establish a secure connection to host (certificate chain invalid)."
-msgstr ""
-
-msgid ""
-"Unable to establish a secure connection to host (certificate not yet valid)."
-msgstr ""
-
-msgid "Unable to establish a secure connection to host (expired certificate)."
-msgstr ""
-
-msgid "Unable to establish a secure connection to host (host name mismatch)."
-msgstr ""
-
-msgid ""
-"Unable to establish a secure connection to host (peer dropped connection "
-"before responding)."
-msgstr ""
-
-msgid ""
-"Unable to establish a secure connection to host (self-signed certificate)."
-msgstr ""
-
-msgid ""
-"Unable to establish a secure connection to host (untrusted certificate)."
-msgstr ""
-
-msgid "Unable to establish a secure connection to host."
-msgstr ""
-
-msgid "Unable to find destination for job"
-msgstr ""
-
-msgid "Unable to find printer."
-msgstr "Kann den Drucker nicht finden."
-
-msgid "Unable to fork filter"
-msgstr ""
-
-msgid "Unable to generate compressed print file"
-msgstr ""
-
-msgid "Unable to get backend exit status."
-msgstr ""
-
-msgid "Unable to get class list:"
-msgstr "Klassenliste konnte nicht abgerufen werden:"
-
-msgid "Unable to get class status:"
-msgstr "Klassenstatus konnte nicht abgerufen werden:"
-
-msgid "Unable to get list of printer drivers:"
-msgstr "Liste der Druckertreiber konnte nicht abgerufen werden:"
-
-msgid "Unable to get printer attributes:"
-msgstr "Druckerattribute konnten nicht abgerufen werden:"
-
-msgid "Unable to get printer list:"
-msgstr "Druckerliste konnte nicht abgerufen werden:"
-
-msgid "Unable to get printer status."
-msgstr ""
-
-msgid "Unable to get printer status:"
-msgstr "Druckerstatus konnte nicht abgerufen werden:"
-
-#, c-format
-msgid "Unable to install Windows 2000 printer driver files (%d)."
-msgstr ""
-
-#, c-format
-msgid "Unable to install Windows 9x printer driver files (%d)."
-msgstr ""
-
-#, c-format
-msgid "Unable to locate printer \"%s\"."
-msgstr ""
-
-msgid "Unable to locate printer."
-msgstr ""
-
-msgid "Unable to modify class:"
-msgstr "Klasse konnte nicht verändert werden:"
-
-msgid "Unable to modify printer:"
-msgstr "Drucker konnte nicht verändert werden:"
-
-msgid "Unable to move job"
-msgstr "Druckauftrag konnte nicht bewegt werden"
-
-msgid "Unable to move jobs"
-msgstr "Druckaufträge konnten nicht bewegt werden"
-
-msgid "Unable to open PPD file"
-msgstr "Die PPD-Datei konnte nicht geöffnet werden"
-
-msgid "Unable to open PPD file:"
-msgstr "Die PPD-Datei konnte nicht geöffnet werden:"
-
-msgid "Unable to open charset file"
-msgstr ""
-
-msgid "Unable to open compressed print file"
-msgstr ""
-
-msgid "Unable to open cupsd.conf file:"
-msgstr "Die Datei „cupsd.conf“ konnte nicht geöffnet werden:"
-
-msgid "Unable to open device file"
-msgstr ""
-
-#, c-format
-msgid "Unable to open document #%d in job #%d."
-msgstr ""
-
-msgid "Unable to open print file"
-msgstr ""
-
-msgid "Unable to open psglyphs"
-msgstr ""
-
-msgid "Unable to open raster file"
-msgstr ""
-
-#, c-format
-msgid "Unable to print %d text columns."
-msgstr ""
-
-#, c-format
-msgid "Unable to print %dx%d text page."
-msgstr ""
-
-msgid "Unable to print test page:"
-msgstr "Testseite konnte nicht gedruckt werden:"
-
-msgid "Unable to read print data"
-msgstr ""
-
-msgid "Unable to read print data."
-msgstr ""
-
-#, c-format
-msgid "Unable to run \"%s\": %s"
-msgstr ""
-
-msgid "Unable to see in file"
-msgstr ""
-
-msgid "Unable to send command to printer driver"
-msgstr ""
-
-msgid "Unable to send data to printer."
-msgstr ""
-
-msgid "Unable to send raster data to the driver."
-msgstr ""
-
-#, c-format
-msgid "Unable to set Windows printer driver (%d)."
-msgstr ""
-
-msgid "Unable to set options:"
-msgstr "Optionen konnten nicht festgelegt werden:"
-
-msgid "Unable to set server default:"
-msgstr "Standardeinstellungen für Server konnten nicht festgelegt werden:"
-
-msgid "Unable to start backend process."
-msgstr ""
-
-msgid "Unable to upload cupsd.conf file:"
-msgstr "Die Datei „cupsd.conf“ konnte nicht hochgeladen werden:"
-
-msgid "Unable to use legacy USB class driver."
-msgstr ""
-
-msgid "Unable to write print data"
-msgstr ""
-
-#, c-format
-msgid "Unable to write uncompressed print data: %s"
-msgstr ""
-
-msgid "Unauthorized"
-msgstr "Nicht berechtigt"
-
-msgid "Units"
-msgstr "Einheiten"
-
-msgid "Unknown"
-msgstr "Unbekannt"
-
-#, c-format
-msgid "Unknown choice \"%s\" for option \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "Unknown encryption option value: \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "Unknown file order: \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "Unknown format character: \"%c\"."
-msgstr ""
-
-#, c-format
-msgid "Unknown option \"%s\" with value \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "Unknown option \"%s\"."
-msgstr "Unbekannte Option \"%s\""
-
-#, c-format
-msgid "Unknown print mode: \"%s\"."
-msgstr "Unbekannter Druckmodus: \"%s\"."
-
-#, c-format
-msgid "Unknown printer-error-policy \"%s\"."
-msgstr "Unbekannte printer-error-policy „%s“."
-
-#, c-format
-msgid "Unknown printer-op-policy \"%s\"."
-msgstr "Unbekannte printer-op-policy „%s“."
-
-#, c-format
-msgid "Unknown version option value: \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "Unsupported baud rate: %s"
-msgstr ""
-
-#, c-format
-msgid "Unsupported brightness value %s, using brightness=100."
-msgstr ""
-
-#, c-format
-msgid "Unsupported character set \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "Unsupported compression \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "Unsupported document-format \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "Unsupported document-format \"%s/%s\"."
-msgstr ""
-
-#, c-format
-msgid "Unsupported format \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "Unsupported gamma value %s, using gamma=1000."
-msgstr "Nicht unterstützter Gammawert %s, verwende gamma=1000."
-
-msgid "Unsupported margins."
-msgstr "Nicht unterstützte Ränder."
-
-msgid "Unsupported media value."
-msgstr "Nicht unterstützter Medienwert."
-
-#, c-format
-msgid "Unsupported number-up value %d, using number-up=1."
-msgstr ""
-
-#, c-format
-msgid "Unsupported number-up-layout value %s, using number-up-layout=lrtb."
-msgstr ""
-
-#, c-format
-msgid "Unsupported page-border value %s, using page-border=none."
-msgstr ""
-
-msgid "Unsupported raster data."
-msgstr ""
-
-msgid "Unsupported value type"
-msgstr "Wertetyp nicht unterstützt"
-
-msgid "Upgrade Required"
-msgstr "Aktualisierung erforderlich"
-
-msgid ""
-"Usage:\n"
-"\n"
-"    lpadmin [-h server] -d destination\n"
-"    lpadmin [-h server] -x destination\n"
-"    lpadmin [-h server] -p printer [-c add-class] [-i interface] [-m model]\n"
-"                       [-r remove-class] [-v device] [-D description]\n"
-"                       [-P ppd-file] [-o name=value]\n"
-"                       [-u allow:user,user] [-u deny:user,user]"
-msgstr ""
-
-#, c-format
-msgid "Usage: %s job user title copies options [filename]"
-msgstr ""
-
-#, c-format
-msgid "Usage: %s job-id user title copies options [file]"
-msgstr ""
-
-#, c-format
-msgid "Usage: %s job-id user title copies options file"
-msgstr ""
-
-msgid "Usage: convert [ options ]"
-msgstr ""
-
-msgid "Usage: cupsaddsmb [options] printer1 ... printerN"
-msgstr ""
-
-msgid "Usage: cupsctl [options] [param=value ... paramN=valueN]"
-msgstr ""
-
-msgid "Usage: cupsd [options]"
-msgstr ""
-
-msgid "Usage: cupsfilter [ options ] filename"
-msgstr ""
-
-msgid "Usage: cupstestdsc [options] filename.ps [... filename.ps]"
-msgstr ""
-
-msgid ""
-"Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]"
-msgstr ""
-
-msgid "Usage: ipptool [options] URI filename [ ... filenameN ]"
-msgstr ""
-
-msgid "Usage: lpmove job/src dest"
-msgstr ""
-
-msgid ""
-"Usage: lpoptions [-h server] [-E] -d printer\n"
-"       lpoptions [-h server] [-E] [-p printer] -l\n"
-"       lpoptions [-h server] [-E] -p printer -o option[=value] ...\n"
-"       lpoptions [-h server] [-E] -x printer"
-msgstr ""
-
-msgid "Usage: lppasswd [-g groupname]"
-msgstr ""
-
-msgid ""
-"Usage: lppasswd [-g groupname] [username]\n"
-"       lppasswd [-g groupname] -a [username]\n"
-"       lppasswd [-g groupname] -x [username]"
-msgstr ""
-
-msgid ""
-"Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
-msgstr ""
-
-msgid "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]"
-msgstr ""
-
-msgid "Usage: ppdhtml [options] filename.drv >filename.html"
-msgstr ""
-
-msgid "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]"
-msgstr ""
-
-msgid "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]"
-msgstr ""
-
-msgid ""
-"Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]"
-msgstr ""
-
-msgid "Usage: snmp [host-or-ip-address]"
-msgstr ""
-
-msgid "Value uses indefinite length"
-msgstr "Wert hat unbestimmte Länge"
-
-msgid "VarBind uses indefinite length"
-msgstr "VarBind hat unbestimmte Länge"
-
-msgid "Version uses indefinite length"
-msgstr "Version hat unbestimmte Länge"
-
-msgid "Waiting for job to complete."
-msgstr "Warte auf Auftragsabschluss."
-
-msgid "Waiting for printer to become available."
-msgstr "Warte darauf dass der Drucker verfügbar wird."
-
-msgid "Waiting for printer to finish."
-msgstr "Warte auf Abschluss."
-
-msgid "Warning, no Windows 2000 printer drivers are installed."
-msgstr "Warnung, keine Win2k Treiber installiert."
-
-msgid "Web Interface is Disabled"
-msgstr "Web-Schnittstelle ist abgeschaltet"
-
-msgid "Yes"
-msgstr "Ja"
-
-#, c-format
-msgid ""
-"You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%"
-"s:%d%s</A>."
-msgstr ""
-"Auf diese Seite greifen Sie zu über die 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."
-msgstr ""
-
-msgid "ZPL Label Printer"
-msgstr "ZPL Etikettendrucker"
-
-msgid "Zebra"
-msgstr "Zebra"
-
-msgid "aborted"
-msgstr "abgebrochen"
-
-msgid "canceled"
-msgstr "abgebrochen"
-
-msgid "completed"
-msgstr "abgeschlossen"
-
-msgid "convert: Use the -f option to specify a file to convert."
-msgstr ""
-
-msgid "cups-deviced failed to execute."
-msgstr "„cups-deviced“ konnte nicht ausgeführt werden."
-
-msgid "cups-driverd failed to execute."
-msgstr "„cups-driverd“ konnte nicht ausgeführt werden."
-
-#, c-format
-msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s"
-msgstr ""
-
-msgid "cupsctl: Cannot set Listen or Port directly."
-msgstr ""
-
-#, c-format
-msgid "cupsctl: Unable to connect to server: %s"
-msgstr ""
-
-#, c-format
-msgid "cupsctl: Unknown option \"%s\""
-msgstr ""
-
-#, c-format
-msgid "cupsctl: Unknown option \"-%c\""
-msgstr ""
-
-msgid "cupsd: Expected config filename after \"-c\" option."
-msgstr ""
-
-msgid "cupsd: Unable to get current directory."
-msgstr ""
-
-#, c-format
-msgid "cupsd: Unknown argument \"%s\" - aborting."
-msgstr ""
-
-#, c-format
-msgid "cupsd: Unknown option \"%c\" - aborting."
-msgstr ""
-
-msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
-msgstr ""
-
-#, c-format
-msgid "cupsfilter: Invalid document number %d."
-msgstr ""
-
-#, c-format
-msgid "cupsfilter: Invalid job ID %d."
-msgstr ""
-
-msgid "cupsfilter: Only one filename can be specified."
-msgstr ""
-
-#, c-format
-msgid "cupsfilter: Unable to get job file - %s"
-msgstr ""
-
-msgid "cupstestppd: The -q option is incompatible with the -v option."
-msgstr ""
-
-msgid "cupstestppd: The -v option is incompatible with the -q option."
-msgstr ""
-
-#, c-format
-msgid "device for %s/%s: %s"
-msgstr ""
-
-#, c-format
-msgid "device for %s: %s"
-msgstr ""
-
-msgid "error-index uses indefinite length"
-msgstr "Fehlerindex hat unbestimmte Länge"
-
-msgid "error-status uses indefinite length"
-msgstr "Fehlerstatus hat unbestimmte Länge"
-
-msgid "held"
-msgstr "gehalten"
-
-msgid "help\t\tGet help on commands."
-msgstr ""
-
-msgid "idle"
-msgstr "inaktiv"
-
-msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
-msgstr ""
-
-msgid "ipptool: \"-i\" is incompatible with \"-X\"."
-msgstr ""
-
-msgid "ipptool: \"-n\" is incompatible with \"-X\"."
-msgstr ""
-
-#, c-format
-msgid "ipptool: Bad URI - %s."
-msgstr ""
-
-#, c-format
-msgid "ipptool: Bad version %s for \"-V\"."
-msgstr ""
-
-msgid "ipptool: Invalid seconds for \"-i\"."
-msgstr ""
-
-msgid "ipptool: May only specify a single URI."
-msgstr ""
-
-msgid "ipptool: Missing count for \"-n\"."
-msgstr ""
-
-msgid "ipptool: Missing filename for \"-f\"."
-msgstr ""
-
-msgid "ipptool: Missing name=value for \"-d\"."
-msgstr ""
-
-msgid "ipptool: Missing seconds for \"-i\"."
-msgstr ""
-
-msgid "ipptool: Missing timeout for \"-T\"."
-msgstr ""
-
-msgid "ipptool: Missing version for \"-V\"."
-msgstr ""
-
-msgid "ipptool: URI required before test file."
-msgstr ""
-
-#, c-format
-msgid "ipptool: Unknown option \"-%c\"."
-msgstr ""
-
-msgid "job-printer-uri attribute missing."
-msgstr ""
-
-msgid "lpadmin: Class name can only contain printable characters."
-msgstr ""
-
-msgid "lpadmin: Expected PPD after \"-P\" option."
-msgstr ""
-
-msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
-msgstr ""
-
-msgid "lpadmin: Expected class after \"-r\" option."
-msgstr ""
-
-msgid "lpadmin: Expected class name after \"-c\" option."
-msgstr ""
-
-msgid "lpadmin: Expected description after \"-D\" option."
-msgstr ""
-
-msgid "lpadmin: Expected device URI after \"-v\" option."
-msgstr ""
-
-msgid "lpadmin: Expected file type(s) after \"-I\" option."
-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 ""
-
-msgid "lpadmin: Expected model after \"-m\" option."
-msgstr ""
-
-msgid "lpadmin: Expected name after \"-R\" option."
-msgstr ""
-
-msgid "lpadmin: Expected name=value after \"-o\" option."
-msgstr ""
-
-msgid "lpadmin: Expected printer after \"-p\" option."
-msgstr ""
-
-msgid "lpadmin: Expected printer name after \"-d\" option."
-msgstr ""
-
-msgid "lpadmin: Expected printer or class after \"-x\" option."
-msgstr ""
-
-msgid "lpadmin: No member names were seen."
-msgstr ""
-
-#, c-format
-msgid "lpadmin: Printer %s is already a member of class %s."
-msgstr ""
-
-#, c-format
-msgid "lpadmin: Printer %s is not a member of class %s."
-msgstr ""
-
-msgid "lpadmin: Printer name can only contain printable characters."
-msgstr ""
-
-msgid ""
-"lpadmin: Unable to add a printer to the class:\n"
-"         You must specify a printer name first."
-msgstr ""
-
-#, c-format
-msgid "lpadmin: Unable to connect to server: %s"
-msgstr ""
-
-msgid "lpadmin: Unable to create temporary file"
-msgstr ""
-
-msgid ""
-"lpadmin: Unable to delete option:\n"
-"         You must specify a printer name first."
-msgstr ""
-
-#, c-format
-msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
-msgstr ""
-
-msgid ""
-"lpadmin: Unable to remove a printer from the class:\n"
-"         You must specify a printer name first."
-msgstr ""
-
-msgid ""
-"lpadmin: Unable to set the printer options:\n"
-"         You must specify a printer name first."
-msgstr ""
-
-#, c-format
-msgid "lpadmin: Unknown allow/deny option \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "lpadmin: Unknown argument \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "lpadmin: Unknown option \"%c\"."
-msgstr ""
-
-msgid "lpadmin: Warning - content type list ignored."
-msgstr ""
-
-msgid "lpc> "
-msgstr "lpc> "
-
-msgid "lpinfo: Expected 1284 device ID string after \"--device-id\"."
-msgstr ""
-
-msgid "lpinfo: Expected language after \"--language\"."
-msgstr ""
-
-msgid "lpinfo: Expected make and model after \"--make-and-model\"."
-msgstr ""
-
-msgid "lpinfo: Expected product string after \"--product\"."
-msgstr ""
-
-msgid "lpinfo: Expected scheme list after \"--exclude-schemes\"."
-msgstr ""
-
-msgid "lpinfo: Expected scheme list after \"--include-schemes\"."
-msgstr ""
-
-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 ""
-
-#, c-format
-msgid "lpmove: Unknown argument \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "lpmove: Unknown option \"%c\"."
-msgstr ""
-
-msgid "lpoptions: No printers."
-msgstr ""
-
-#, c-format
-msgid "lpoptions: Unable to add printer or instance: %s"
-msgstr ""
-
-#, c-format
-msgid "lpoptions: Unable to get PPD file for %s: %s"
-msgstr ""
-
-#, c-format
-msgid "lpoptions: Unable to open PPD file for %s."
-msgstr ""
-
-msgid "lpoptions: Unknown printer or class."
-msgstr ""
-
-msgid "lppasswd: Only root can add or delete passwords."
-msgstr ""
-
-msgid "lppasswd: Password file busy."
-msgstr ""
-
-msgid "lppasswd: Password file not updated."
-msgstr ""
-
-msgid "lppasswd: Sorry, password doesn't match."
-msgstr ""
-
-msgid "lppasswd: Sorry, password rejected."
-msgstr ""
-
-msgid "lppasswd: Sorry, passwords don't match."
-msgstr ""
-
-#, c-format
-msgid "lppasswd: Unable to copy password string: %s"
-msgstr ""
-
-#, c-format
-msgid "lppasswd: Unable to open password file: %s"
-msgstr ""
-
-#, c-format
-msgid "lppasswd: Unable to write to password file: %s"
-msgstr ""
-
-#, c-format
-msgid "lppasswd: failed to backup old password file: %s"
-msgstr ""
-
-#, c-format
-msgid "lppasswd: failed to rename password file: %s"
-msgstr ""
-
-#, c-format
-msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
-msgstr ""
-
-#, c-format
-msgid ""
-"lpstat: error - %s environment variable names non-existent destination \"%s"
-"\"."
-msgstr ""
-
-#, c-format
-msgid "members of class %s:"
-msgstr ""
-
-msgid "no entries"
-msgstr ""
-
-msgid "no system default destination"
-msgstr ""
-
-msgid "notify-events not specified."
-msgstr ""
-
-#, c-format
-msgid "notify-recipient-uri URI \"%s\" is already used."
-msgstr ""
-
-#, c-format
-msgid "notify-recipient-uri URI \"%s\" uses unknown scheme."
-msgstr ""
-
-msgid "pending"
-msgstr "ausstehend"
-
-#, c-format
-msgid "ppdc: Adding include directory \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Adding/updating UI text from %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Bad boolean value (%s) on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Bad font attribute: %s"
-msgstr ""
-
-#, c-format
-msgid "ppdc: Bad resolution name \"%s\" on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Bad status keyword %s on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Bad variable substitution ($%c) on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Choice found on line %d of %s with no Option."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Duplicate #po for locale %s on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected a filter definition on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected a program name on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected boolean value on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected charset after Font on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected choice code on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected choice name/text on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected color order for ColorModel on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected colorspace for ColorModel on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected compression for ColorModel on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected constraints string for UIConstraints on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid ""
-"ppdc: Expected driver type keyword following DriverType on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected duplex type after Duplex on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected encoding after Font on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected filename after #po %s on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected group name/text on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected include filename on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected integer on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected locale after #po on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name after %s on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name after FileName on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name after Font on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name after Manufacturer on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name after MediaSize on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name after ModelName on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name after PCFileName on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name/text after %s on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name/text after Installable on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name/text after Resolution on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name/text combination for ColorModel on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected option name/text on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected option section on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected option type on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected override field after Resolution on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected quoted string on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected real number on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid ""
-"ppdc: Expected resolution/mediatype following ColorProfile on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid ""
-"ppdc: Expected resolution/mediatype following SimpleColorProfile on line %d "
-"of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected selector after %s on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected status after Font on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected string after Copyright on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected string after Version on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected two option names on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected value after %s on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected version after Font on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Invalid #include/#po filename \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Invalid cost for filter on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Invalid empty MIME type for filter on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Invalid empty program name for filter on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Invalid option section \"%s\" on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Invalid option type \"%s\" on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Loading driver information file \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Loading messages for locale \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Loading messages from \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Missing #endif at end of \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Missing #if on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid ""
-"ppdc: Need a msgid line before any translation strings on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: No message catalog provided for locale %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Option %s defined in two different groups on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Option %s redefined with a different type on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Option constraint must *name on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Too many nested #if's on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unable to create PPD file \"%s\" - %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unable to create output directory %s: %s"
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unable to create output pipes: %s"
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unable to execute cupstestppd: %s"
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unable to find #po file %s on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unable to find include file \"%s\" on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unable to find localization for \"%s\" - %s"
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unable to load localization file \"%s\" - %s"
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unable to open %s: %s"
-msgstr ""
-
-#, c-format
-msgid "ppdc: Undefined variable (%s) on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unexpected text on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unknown driver type %s on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unknown duplex type \"%s\" on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unknown media size \"%s\" on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unknown message catalog format for \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unknown token \"%s\" seen on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid ""
-"ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unterminated string starting with %c on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Warning - overlapping filename \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Writing %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Writing PPD files to directory \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s."
-msgstr ""
-
-#, c-format
-msgid "ppdmerge: Ignoring PPD file %s."
-msgstr ""
-
-#, c-format
-msgid "ppdmerge: Unable to backup %s to %s - %s"
-msgstr ""
-
-#, c-format
-msgid "printer %s disabled since %s -"
-msgstr ""
-
-#, c-format
-msgid "printer %s is idle.  enabled since %s"
-msgstr ""
-
-#, c-format
-msgid "printer %s now printing %s-%d.  enabled since %s"
-msgstr ""
-
-#, c-format
-msgid "printer %s/%s disabled since %s -"
-msgstr ""
-
-#, c-format
-msgid "printer %s/%s is idle.  enabled since %s"
-msgstr ""
-
-#, c-format
-msgid "printer %s/%s now printing %s-%d.  enabled since %s"
-msgstr ""
-
-msgid "processing"
-msgstr "Bearbeiten"
-
-#, c-format
-msgid "request id is %s-%d (%d file(s))"
-msgstr ""
-
-msgid "request-id uses indefinite length"
-msgstr "Anfrage-ID hat unbestimmte Länge"
-
-msgid "scheduler is not running"
-msgstr ""
-
-msgid "scheduler is running"
-msgstr ""
-
-#, c-format
-msgid "stat of %s failed: %s"
-msgstr "Status von %s fehlgeschlagen: %s"
-
-msgid "status\t\tShow status of daemon and queue."
-msgstr ""
-
-msgid "stopped"
-msgstr "Gestoppt"
-
-#, c-format
-msgid "system default destination: %s"
-msgstr ""
-
-#, c-format
-msgid "system default destination: %s/%s"
-msgstr ""
-
-msgid "unknown"
-msgstr "Unbekannt"
-
-msgid "untitled"
-msgstr "Ohne Titel"
-
-msgid "variable-bindings uses indefinite length"
-msgstr "variable-bindings hat unbestimmte Länge"
-
-#~ msgid "\t\t(all)\n"
-#~ msgstr "\t\t(alles)\n"
-
-#~ msgid "\t\t(none)\n"
-#~ msgstr "\t\t(ohne)\n"
-
-#~ msgid "\t%d entries\n"
-#~ msgstr "\t%d Einträge\n"
-
-#~ msgid "\tAfter fault: continue\n"
-#~ msgstr "\tNach Fehler: fortsetzen\n"
-
-#~ msgid "\tAlerts:"
-#~ msgstr "\tWarnhinweise:"
-
-#~ msgid "\tBanner required\n"
-#~ msgstr "\tBanner erforderlich\n"
-
-#~ msgid "\tCharset sets:\n"
-#~ msgstr "\tZeichensätze:\n"
-
-#~ msgid "\tConnection: direct\n"
-#~ msgstr "\tVerbindung: direkt\n"
-
-#~ msgid "\tConnection: remote\n"
-#~ msgstr "\tVerbindung: enfernt\n"
-
-#~ msgid "\tDefault page size:\n"
-#~ msgstr "\tStandardseitengröße:\n"
-
-#~ msgid "\tDefault pitch:\n"
-#~ msgstr "\tStandardzeilenhöhe:\n"
-
-#~ msgid "\tDefault port settings:\n"
-#~ msgstr "\tStandard-Anschlusseinstellungen:\n"
-
-#~ msgid "\tDescription: %s\n"
-#~ msgstr "\tBeschreibung: %s\n"
-
-#~ msgid ""
-#~ "\tForm mounted:\n"
-#~ "\tContent types: any\n"
-#~ "\tPrinter types: unknown\n"
-#~ msgstr ""
-#~ "\tFormular aktiviert:\n"
-#~ "\tInhaltstypen: beliebig\n"
-#~ "\tDruckertypen: unbekannt\n"
-
-#~ msgid "\tForms allowed:\n"
-#~ msgstr "\tZugelassene Formulare:\n"
-
-#~ msgid "\tInterface: %s.ppd\n"
-#~ msgstr "\tSchnittstelle: %s.ppd\n"
-
-#~ msgid "\tInterface: %s/interfaces/%s\n"
-#~ msgstr "\tSchnittstelle: %s/interfaces/%s\n"
-
-#~ msgid "\tInterface: %s/ppd/%s.ppd\n"
-#~ msgstr "\tSchnittstelle: %s/ppd/%s.ppd\n"
-
-#~ msgid "\tLocation: %s\n"
-#~ msgstr "\tStandort: %s\n"
-
-#~ msgid "\tOn fault: no alert\n"
-#~ msgstr "\tBei Fehler: kein Warnhinweis\n"
-
-#~ msgid "\tUsers allowed:\n"
-#~ msgstr "\tZugelassene Benutzer:\n"
-
-#~ msgid "\tUsers denied:\n"
-#~ msgstr "\tGesperrte Benutzer:\n"
-
-#~ msgid "\tdaemon present\n"
-#~ msgstr "\tDaemon vorhanden\n"
-
-#~ msgid "\tno entries\n"
-#~ msgstr "\tkeine Einträge\n"
-
-#~ msgid "\tprinter is on device '%s' speed -1\n"
-#~ msgstr "\tDrucker ist auf Geschwindigkeit des Geräts „%s“ -1\n"
-
-#~ msgid "\tprinting is disabled\n"
-#~ msgstr "\tDrucken ist deaktiviert\n"
-
-#~ msgid "\tprinting is enabled\n"
-#~ msgstr "\tDrucken ist aktiviert\n"
-
-#~ msgid "\tqueued for %s\n"
-#~ msgstr "\tWarteliste für %s\n"
-
-#~ msgid "\tqueuing is disabled\n"
-#~ msgstr "\tWarteliste ist deaktiviert\n"
-
-#~ msgid "\tqueuing is enabled\n"
-#~ msgstr "\tWarteliste ist aktiviert\n"
-
-#~ msgid "\treason unknown\n"
-#~ msgstr "\tGrund unbekannt\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "    DETAILED CONFORMANCE TEST RESULTS\n"
-#~ msgstr ""
-#~ "\n"
-#~ "    AUSFÜHRLICHE KONFORMITÄTSTESTERGEBNISSE\n"
-
-#~ msgid "                REF: Page 15, section 3.1.\n"
-#~ msgstr "                REF: Seite 15, Abschnitt 3.1.\n"
-
-#~ msgid "                REF: Page 15, section 3.2.\n"
-#~ msgstr "                REF: Seite 15, Abschnitt 3.2.\n"
-
-#~ msgid "                REF: Page 19, section 3.3.\n"
-#~ msgstr "                REF: Seite 19, Abschnitt 3.3.\n"
-
-#~ msgid "                REF: Page 20, section 3.4.\n"
-#~ msgstr "                REF: Seite 20, Abschnitt 3.4.\n"
-
-#~ msgid "                REF: Page 27, section 3.5.\n"
-#~ msgstr "                REF: Seite 27, Abschnitt 3.5.\n"
-
-#~ msgid "                REF: Page 42, section 5.2.\n"
-#~ msgstr "                REF: Seite 42, Abschnitt 5.2.\n"
-
-#~ msgid "                REF: Pages 16-17, section 3.2.\n"
-#~ msgstr "                REF: Seite 16–17, Abschnitt 3.2.\n"
-
-#~ msgid "                REF: Pages 42-45, section 5.2.\n"
-#~ msgstr "                REF: Seite 42–45, Abschnitt 5.2.\n"
-
-#~ msgid "                REF: Pages 45-46, section 5.2.\n"
-#~ msgstr "                REF: Seite 45–46, Abschnitt 5.2.\n"
-
-#~ msgid "                REF: Pages 48-49, section 5.2.\n"
-#~ msgstr "                REF: Seite 48–49, Abschnitt 5.2.\n"
-
-#~ msgid "                REF: Pages 52-54, section 5.2.\n"
-#~ msgstr "                REF: Seite 52–54, Abschnitt 5.2.\n"
-
-#~ msgid "        %-39.39s %.0f bytes\n"
-#~ msgstr "        %-39.39s %.0f Byte\n"
-
-#~ msgid "        PASS    Default%s\n"
-#~ msgstr "        PASS    Default%s\n"
-
-#~ msgid "        PASS    DefaultImageableArea\n"
-#~ msgstr "        PASS    DefaultImageableArea\n"
-
-#~ msgid "        PASS    DefaultPaperDimension\n"
-#~ msgstr "        PASS    DefaultPaperDimension\n"
-
-#~ msgid "        PASS    FileVersion\n"
-#~ msgstr "        PASS    FileVersion\n"
-
-#~ msgid "        PASS    FormatVersion\n"
-#~ msgstr "        PASS    FormatVersion\n"
-
-#~ msgid "        PASS    LanguageEncoding\n"
-#~ msgstr "        PASS    LanguageEncoding\n"
-
-#~ msgid "        PASS    LanguageVersion\n"
-#~ msgstr "        PASS    LanguageVersion\n"
-
-#~ msgid "        PASS    Manufacturer\n"
-#~ msgstr "        PASS    Manufacturer\n"
-
-#~ msgid "        PASS    ModelName\n"
-#~ msgstr "        PASS    ModelName\n"
-
-#~ msgid "        PASS    NickName\n"
-#~ msgstr "        PASS    NickName\n"
-
-#~ msgid "        PASS    PCFileName\n"
-#~ msgstr "        PASS    PCFileName\n"
-
-#~ msgid "        PASS    PSVersion\n"
-#~ msgstr "        PASS    PSVersion\n"
-
-#~ msgid "        PASS    PageRegion\n"
-#~ msgstr "        PASS    PageRegion\n"
-
-#~ msgid "        PASS    PageSize\n"
-#~ msgstr "        PASS    PageSize\n"
-
-#~ msgid "        PASS    Product\n"
-#~ msgstr "        PASS    Product\n"
-
-#~ msgid "        PASS    ShortNickName\n"
-#~ msgstr "        PASS    ShortNickName\n"
-
-#~ msgid ""
-#~ "        WARN    \"%s %s\" conflicts with \"%s %s\"\n"
-#~ "                (constraint=\"%s %s %s %s\")\n"
-#~ msgstr ""
-#~ "        WARN    Konflikt zwischen „%s %s“ und „%s %s“\n"
-#~ "                (constraint=\"%s %s %s %s\")\n"
-
-#~ msgid "        WARN    %s has no corresponding options!\n"
-#~ msgstr "        WARN    %s hat keine passenden Optionen!\n"
-
-#~ msgid ""
-#~ "        WARN    %s shares a common prefix with %s\n"
-#~ "                REF: Page 15, section 3.2.\n"
-#~ msgstr ""
-#~ "        WARN    %s hat eine gemeinsames übliches Präfix mit %s\n"
-#~ "                REF: Seite 15, Abschnitt 3.2.\n"
-
-#~ msgid "        WARN    Default choices conflicting!\n"
-#~ msgstr "        WARN    Konflikt bei Standardauswahl!\n"
-
-#~ msgid ""
-#~ "        WARN    Duplex option keyword %s may not work as expected and "
-#~ "should be named Duplex!\n"
-#~ "                REF: Page 122, section 5.17\n"
-#~ msgstr ""
-#~ "        WARN    Duplex-Option-Keyword „%s“ funktioniert u. U. nicht wie "
-#~ "erwartet – es sollte „Duplex“ heißen!\n"
-#~ "                REF: Seite 122, Abschnitt 5.17\n"
-
-#~ msgid ""
-#~ "        WARN    File contains a mix of CR, LF, and CR LF line endings!\n"
-#~ msgstr ""
-#~ "        WARN    Datei enthält Mischung aus den Zeilenenden „CR“, „LF“ und "
-#~ "„CR LF“!\n"
-
-#~ msgid ""
-#~ "        WARN    LanguageEncoding required by PPD 4.3 spec.\n"
-#~ "                REF: Pages 56-57, section 5.3.\n"
-#~ msgstr ""
-#~ "        WARN    LanguageEncoding benötigt von PPD 4.3 Spezifikation.\n"
-#~ "                REF: Seite 56–57, Abschnitt 5.3.\n"
-
-#~ msgid "        WARN    Line %d only contains whitespace!\n"
-#~ msgstr "        WARN    Zeile %d enthält nur Leerzeichen!\n"
-
-#~ msgid ""
-#~ "        WARN    Manufacturer required by PPD 4.3 spec.\n"
-#~ "                REF: Pages 58-59, section 5.3.\n"
-#~ msgstr ""
-#~ "        WARN    Manufacturer benötigt von PPD 4.3 Spezifikation.\n"
-#~ "                REF: Seite 58–59, Abschnitt 5.3.\n"
-
-#~ msgid "        WARN    Missing APDialogExtension file \"%s\"\n"
-#~ msgstr "        WARN    APDialogExtension-Datei „%s“ fehlt\n"
-
-#~ msgid "        WARN    Missing APPrinterIconPath file \"%s\"\n"
-#~ msgstr "        WARN    APPrinterIconPath-Datei „%s“ fehlt\n"
-
-#~ msgid ""
-#~ "        WARN    Non-Windows PPD files should use lines ending with only "
-#~ "LF, not CR LF!\n"
-#~ msgstr ""
-#~ "        WARN    Windows-fremde PPD-Datei sollte nur Zeilenenden mit „LF“ "
-#~ "verwenden, nicht mit „CR LF“!\n"
-
-#~ msgid ""
-#~ "        WARN    Obsolete PPD version %.1f!\n"
-#~ "                REF: Page 42, section 5.2.\n"
-#~ msgstr ""
-#~ "        WARN    Veraltete PPD-Version %.1f!\n"
-#~ "                REF: Seite 42, Abschnitt 5.2.\n"
-
-#~ msgid ""
-#~ "        WARN    PCFileName longer than 8.3 in violation of PPD spec.\n"
-#~ "                REF: Pages 61-62, section 5.3.\n"
-#~ msgstr ""
-#~ "        WARN    PCFileName ist länger als 8.3 und verstößt gegen die PPD-"
-#~ "Spezifikation.\n"
-#~ "                REF: Seite 61–62, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ "        WARN    Protocols contains PJL but JCL attributes are not set.\n"
-#~ "                REF: Pages 78-79, section 5.7.\n"
-#~ msgstr ""
-#~ "        WARN    Protokolle enthalten PJL, aber JCL-Attribute sind nicht "
-#~ "festgelegt.\n"
-#~ "                REF: Seite 78–79, Abschnitt 5.7.\n"
-
-#~ msgid ""
-#~ "        WARN    Protocols contains both PJL and BCP; expected TBCP.\n"
-#~ "                REF: Pages 78-79, section 5.7.\n"
-#~ msgstr ""
-#~ "        WARN    Protokolle enthalten PJL sowie BCP; es wurde aber TBCP "
-#~ "erwartet.\n"
-#~ "                REF: Seite 78–79, section 5.7.\n"
-
-#~ msgid ""
-#~ "        WARN    ShortNickName required by PPD 4.3 spec.\n"
-#~ "                REF: Pages 64-65, section 5.3.\n"
-#~ msgstr ""
-#~ "        WARN    ShortNickName benötigt von PPD 4.3 Spezifikation.\n"
-#~ "                REF: Seite 64–65, Abschnitt 5.3.\n"
-
-#~ msgid "      %s  %s %s does not exist!\n"
-#~ msgstr "      %s  %s %s existiert nicht!\n"
-
-#~ msgid ""
-#~ "      %s  Bad %s choice %s!\n"
-#~ "                REF: Page 122, section 5.17\n"
-#~ msgstr ""
-#~ "      %s  Ungültig: %s Auswahl %s!\n"
-#~ "                REF: Seite 122, Abschnitt 5.17\n"
-
-#~ msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s!\n"
-#~ msgstr ""
-#~ "      %s  Ungültiger UTF-8 „%s“ Übersetzungsstring für Option „%s“!\n"
-
-#~ msgid ""
-#~ "      %s  Bad UTF-8 \"%s\" translation string for option %s, choice %s!\n"
-#~ msgstr ""
-#~ "      %s  Ungültiger UTF-8 „%s“ Übersetzungsstring für Option „%s“, "
-#~ "Auswahl „%s“!\n"
-
-#~ msgid "      %s  Bad cupsFilter value \"%s\"!\n"
-#~ msgstr "      %s  Ungültiger cupsFilter-Wert „%s“!\n"
-
-#~ msgid "      %s  Bad cupsICCProfile %s!\n"
-#~ msgstr "      %s  Ungültiges cupsICCProfile „%s“!\n"
-
-#~ msgid "      %s  Bad cupsPreFilter value \"%s\"!\n"
-#~ msgstr "      %s  Ungültiger cupsPreFilter-Wert „%s“!\n"
-
-#~ msgid "      %s  Bad cupsUIConstraints %s: \"%s\"!\n"
-#~ msgstr "      %s  Ungültiges cupsUIConstraints „%s“: „%s“!\n"
-
-#~ msgid "      %s  Bad language \"%s\"!\n"
-#~ msgstr "      %s  Ungültige Sprache „%s“!\n"
-
-#~ msgid "      %s  Empty cupsUIConstraints %s!\n"
-#~ msgstr "      %s  Leeres cupsUIConstraints „%s“!\n"
-
-#~ msgid "      %s  Missing \"%s\" translation string for option %s!\n"
-#~ msgstr "      %s  Fehlender „%s“-Übersetzungsstring für Option „%s“!\n"
-
-#~ msgid ""
-#~ "      %s  Missing \"%s\" translation string for option %s, choice %s!\n"
-#~ msgstr ""
-#~ "      %s  Fehlender „%s“-Übersetzungsstring für Option „%s“, Auswahl „%"
-#~ "s“!\n"
-
-#~ msgid ""
-#~ "      %s  Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"!\n"
-#~ msgstr ""
-#~ "      %s  Fehlende Auswahl „*%s %s“ in UIConstraints „*%s %s *%s %s“!\n"
-
-#~ msgid "      %s  Missing choice *%s %s in cupsUIConstraints %s: \"%s\"!\n"
-#~ msgstr ""
-#~ "      %s  Fehlende Auswahl „*%s %s“ in cupsUIConstraints „%s“: „%s“!\n"
-
-#~ msgid "      %s  Missing cupsFilter file \"%s\"\n"
-#~ msgstr "      %s  Fehlende cupsFilter-Datei „%s“\n"
-
-#~ msgid "      %s  Missing cupsICCProfile file \"%s\"!\n"
-#~ msgstr "      %s  Fehlende cupsICCProfile-Datei „%s“!\n"
-
-#~ msgid "      %s  Missing cupsPreFilter file \"%s\"\n"
-#~ msgstr "      %s  Fehlende cupsPreFilter-Datei „%s“\n"
-
-#~ msgid "      %s  Missing cupsUIResolver %s!\n"
-#~ msgstr "      %s  Fehlender cupsUIResolver „%s“!\n"
-
-#~ msgid "      %s  Missing option %s in UIConstraints \"*%s %s *%s %s\"!\n"
-#~ msgstr "      %s  Fehlende Option „%s“ in UIConstraints „*%s %s *%s %s“!\n"
-
-#~ msgid "      %s  Missing option %s in cupsUIConstraints %s: \"%s\"!\n"
-#~ msgstr "      %s  Fehlende Option „%s“ in cupsUIConstraints „%s“: „%s“!\n"
-
-#~ msgid "      %s  No base translation \"%s\" is included in file!\n"
-#~ msgstr "      %s  Keine Basisübersetzung „%s“ in der Datei enthalten!\n"
-
-#~ msgid ""
-#~ "      %s  REQUIRED %s does not define choice None!\n"
-#~ "                REF: Page 122, section 5.17\n"
-#~ msgstr ""
-#~ "      %s  BENÖTIGT: „%s“ definiert Auswahl nicht als „None“!\n"
-#~ "                REF: Seite 122, Abschnitt 5.17\n"
-
-#~ msgid "      %s  cupsICCProfile %s hash value collides with %s!\n"
-#~ msgstr "      %s  Hash-Wert von cupsICCProfile „%s“ in Konflikt mit „%s“!\n"
-
-#~ msgid "      %s  cupsUIResolver %s causes a loop!\n"
-#~ msgstr "      %s  cupsUIResolver „%s“ erzeugt eine Schleife!\n"
-
-#~ msgid "      **FAIL**  %s choice names %s and %s differ only by case!\n"
-#~ msgstr ""
-#~ "      **FEHLER**  %s-Auswahlnamen „%s“ und „%s“ unterscheiden sich nur "
-#~ "durch Groß-/Kleinschreibung!\n"
-
-#~ msgid ""
-#~ "      **FAIL**  %s must be 1284DeviceID!\n"
-#~ "                REF: Page 72, section 5.5\n"
-#~ msgstr ""
-#~ "      **FEHLER**  „%s“ muss 1284DeviceID sein!\n"
-#~ "                REF: Seite 72, Abschnitt 5.5\n"
-
-#~ msgid ""
-#~ "      **FAIL**  BAD Default%s %s\n"
-#~ "                REF: Page 40, section 4.5.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  UNGÜLTIG: Default%s „%s“\n"
-#~ "                REF: Seite 40, Abschnitt 4.5.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  BAD DefaultImageableArea %s!\n"
-#~ "                REF: Page 102, section 5.15.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  UNGÜLTIG: DefaultImageableArea „%s“!\n"
-#~ "                REF: Seite 102, Abschnitt 5.15.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  BAD DefaultPaperDimension %s!\n"
-#~ "                REF: Page 103, section 5.15.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  UNGÜLTIG: DefaultPaperDimension „%s“!\n"
-#~ "                REF: Seite 103, Abschnitt 5.15.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  BAD JobPatchFile attribute in file\n"
-#~ "                REF: Page 24, section 3.4.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  UNGÜLTIG: JobPatchFile-Attribut in Datei\n"
-#~ "                REF: Seite 24, Abschnitt 3.4.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  BAD Manufacturer (should be \"HP\")\n"
-#~ "                REF: Page 211, table D.1.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  UNGÜLTIG: Manufacturer (sollte „HP“ sein)\n"
-#~ "                REF: Seite 211, Tabelle D.1.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  BAD Manufacturer (should be \"Oki\")\n"
-#~ "                REF: Page 211, table D.1.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  UNGÜLTIG: Manufacturer (sollte „Oki“ sein)\n"
-#~ "                REF: Seite 211, Tabelle D.1.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  BAD ModelName - \"%c\" not allowed in string.\n"
-#~ "                REF: Pages 59-60, section 5.3.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  UNGÜLTIG: ModelName – „%c“ nicht zulässig im String.\n"
-#~ "                REF: Seite 59–60, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  BAD PSVersion - not \"(string) int\".\n"
-#~ "                REF: Pages 62-64, section 5.3.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  UNGÜLTIG: PSVersion – nicht „(string) int“.\n"
-#~ "                REF: Seite 62–64, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  BAD Product - not \"(string)\".\n"
-#~ "                REF: Page 62, section 5.3.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  UNGÜLTIG: Product – nicht „(string)“.\n"
-#~ "                REF: Seite 62, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  BAD ShortNickName - longer than 31 chars.\n"
-#~ "                REF: Pages 64-65, section 5.3.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  UNGÜLTIG: ShortNickName – länger als 31 Zeichen.\n"
-#~ "                REF: Seite 64–65, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  Bad %s choice %s!\n"
-#~ "                REF: Page 84, section 5.9\n"
-#~ msgstr ""
-#~ "      **FEHLER**  Ungültig: „%s“ Auswahl „%s“!\n"
-#~ "                REF: Seite 84, Abschnitt 5.9\n"
-
-#~ msgid ""
-#~ "      **FAIL**  Bad FileVersion \"%s\"\n"
-#~ "                REF: Page 56, section 5.3.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  Ungültige FileVersion „%s“\n"
-#~ "                REF: Seite 56, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  Bad FormatVersion \"%s\"\n"
-#~ "                REF: Page 56, section 5.3.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  Ungültige FormatVersion „%s“\n"
-#~ "                REF: Seite 56, Abschnitt 5.3.\n"
-
-#~ msgid "      **FAIL**  Bad LanguageEncoding %s - must be ISOLatin1!\n"
-#~ msgstr ""
-#~ "      **FEHLER**  Ungültiges LanguageEncoding „%s“ – muss „ISOLatin1“ "
-#~ "sein!\n"
-
-#~ msgid "      **FAIL**  Bad LanguageVersion %s - must be English!\n"
-#~ msgstr ""
-#~ "      **FEHLER**  Ungültige LanguageVersion „%s“ – muss „Englisch“ sein!\n"
-
-#~ msgid "      **FAIL**  Default option code cannot be interpreted: %s\n"
-#~ msgstr ""
-#~ "      **FEHLER**  Standardoptionscode kann nicht interpretiert werden: %"
-#~ "s\n"
-
-#~ msgid ""
-#~ "      **FAIL**  Default translation string for option %s choice %s "
-#~ "contains 8-bit characters!\n"
-#~ msgstr ""
-#~ "      **FEHLER**  Standard-Übersetzungsstring für Option „%s“ Auswahl „%"
-#~ "s“ enthält 8-Bit-Zeichen!\n"
-
-#~ msgid ""
-#~ "      **FAIL**  Default translation string for option %s contains 8-bit "
-#~ "characters!\n"
-#~ msgstr ""
-#~ "      **FEHLER**  Standard-Übersetzungsstring für Option „%s“ enthält 8-"
-#~ "Bit-Zeichen!\n"
-
-#~ msgid "      **FAIL**  Group names %s and %s differ only by case!\n"
-#~ msgstr ""
-#~ "      **FEHLER**  Gruppennamen „%s“ und „%s“ unterscheiden sich nur durch "
-#~ "Groß-/Kleinschreibung!\n"
-
-#~ msgid "      **FAIL**  Multiple occurrences of %s choice name %s!\n"
-#~ msgstr "      **FEHLER**  Mehrere Vorkommen des „%s“-Auswahlnamens „%s“!\n"
-
-#~ msgid "      **FAIL**  Option names %s and %s differ only by case!\n"
-#~ msgstr ""
-#~ "      **FEHLER**  Optionnamen „%s“ und „%s“ unterscheiden sich nur durch "
-#~ "Groß-/Kleinschreibung!\n"
-
-#~ msgid ""
-#~ "      **FAIL**  REQUIRED Default%s\n"
-#~ "                REF: Page 40, section 4.5.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  BENÖTIGT: Default%s\n"
-#~ "                REF: Seite 40, Abschnitt 4.5.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  REQUIRED DefaultImageableArea\n"
-#~ "                REF: Page 102, section 5.15.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  BENÖTIGT: DefaultImageableArea\n"
-#~ "                REF: Seite 102, Abschnitt 5.15.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  REQUIRED DefaultPaperDimension\n"
-#~ "                REF: Page 103, section 5.15.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  BENÖTIGT: DefaultPaperDimension\n"
-#~ "                REF: Seite 103, Abschnitt 5.15.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  REQUIRED FileVersion\n"
-#~ "                REF: Page 56, section 5.3.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  BENÖTIGT: FileVersion\n"
-#~ "                REF: Seite 56, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  REQUIRED FormatVersion\n"
-#~ "                REF: Page 56, section 5.3.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  BENÖTIGT: FormatVersion\n"
-#~ "                REF: Seite 56, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  REQUIRED ImageableArea for PageSize %s\n"
-#~ "                REF: Page 41, section 5.\n"
-#~ "                REF: Page 102, section 5.15.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  BENÖTIGT: ImageableArea für PageSize „%s“\n"
-#~ "                REF: Seite 41, Abschnitt 5.\n"
-#~ "                REF: Seite 102, Abschnitt 5.15.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  REQUIRED LanguageEncoding\n"
-#~ "                REF: Pages 56-57, section 5.3.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  BENÖTIGT: LanguageEncoding\n"
-#~ "                REF: Seite 56–57, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  REQUIRED LanguageVersion\n"
-#~ "                REF: Pages 57-58, section 5.3.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  BENÖTIGT: LanguageVersion\n"
-#~ "                REF: Seite 57–58, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  REQUIRED Manufacturer\n"
-#~ "                REF: Pages 58-59, section 5.3.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  BENÖTIGT: Manufacturer\n"
-#~ "                REF: Seite 58–59, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  REQUIRED ModelName\n"
-#~ "                REF: Pages 59-60, section 5.3.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  BENÖTIGT: ModelName\n"
-#~ "                REF: Seite 59–60, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  REQUIRED NickName\n"
-#~ "                REF: Page 60, section 5.3.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  BENÖTIGT: NickName\n"
-#~ "                REF: Seite 60, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  REQUIRED PCFileName\n"
-#~ "                REF: Pages 61-62, section 5.3.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  BENÖTIGT: PCFileName\n"
-#~ "                REF: Seite 61–62, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  REQUIRED PSVersion\n"
-#~ "                REF: Pages 62-64, section 5.3.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  BENÖTIGT: PSVersion\n"
-#~ "                REF: Seite 62–64, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  REQUIRED PageRegion\n"
-#~ "                REF: Page 100, section 5.14.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  BENÖTIGT: PageRegion\n"
-#~ "                REF: Seite 100, Abschnitt 5.14.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  REQUIRED PageSize\n"
-#~ "                REF: Page 41, section 5.\n"
-#~ "                REF: Page 99, section 5.14.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  BENÖTIGT: PageSize\n"
-#~ "                REF: Seite 41, Abschnitt 5.\n"
-#~ "                REF: Seite 99, Abschnitt 5.14.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  REQUIRED PageSize\n"
-#~ "                REF: Pages 99-100, section 5.14.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  BENÖTIGT: PageSize\n"
-#~ "                REF: Seite 99–100, Abschnitt 5.14.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  REQUIRED PaperDimension for PageSize %s\n"
-#~ "                REF: Page 41, section 5.\n"
-#~ "                REF: Page 103, section 5.15.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  BENÖTIGT: PaperDimension für PageSize „%s“\n"
-#~ "                REF: Seite 41, Abschnitt 5.\n"
-#~ "                REF: Seite 103, Abschnitt 5.15.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  REQUIRED Product\n"
-#~ "                REF: Page 62, section 5.3.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  BENÖTIGT: Product\n"
-#~ "                REF: Seite 62, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ "      **FAIL**  REQUIRED ShortNickName\n"
-#~ "                REF: Page 64-65, section 5.3.\n"
-#~ msgstr ""
-#~ "      **FEHLER**  BENÖTIGT: ShortNickName\n"
-#~ "                REF: Seite 64–65, Abschnitt 5.3.\n"
-
-#~ msgid "    %d ERRORS FOUND\n"
-#~ msgstr "    %d FEHLER GEFUNDEN\n"
-
-#~ msgid ""
-#~ "    Bad %%%%BoundingBox: on line %d!\n"
-#~ "        REF: Page 39, %%%%BoundingBox:\n"
-#~ msgstr ""
-#~ "    Ungültige %%%%BoundingBox: in Zeile %d!\n"
-#~ "        REF: Seite 39, %%%%BoundingBox:\n"
-
-#~ msgid ""
-#~ "    Bad %%%%Page: on line %d!\n"
-#~ "        REF: Page 53, %%%%Page:\n"
-#~ msgstr ""
-#~ "    Ungültige %%%%Page: in Zeile %d!\n"
-#~ "        REF: Seite 53, %%%%Page:\n"
-
-#~ msgid ""
-#~ "    Bad %%%%Pages: on line %d!\n"
-#~ "        REF: Page 43, %%%%Pages:\n"
-#~ msgstr ""
-#~ "    Ungültige %%%%Pages: in Zeile %d!\n"
-#~ "        REF: Seite 43, %%%%Pages:\n"
-
-#~ msgid ""
-#~ "    Line %d is longer than 255 characters (%d)!\n"
-#~ "        REF: Page 25, Line Length\n"
-#~ msgstr ""
-#~ "    Zeile %d ist länger als 255 Zeichen (%d)!\n"
-#~ "        REF: Seite 25, Line Length\n"
-
-#~ msgid ""
-#~ "    Missing %!PS-Adobe-3.0 on first line!\n"
-#~ "        REF: Page 17, 3.1 Conforming Documents\n"
-#~ msgstr ""
-#~ "    %!PS-Adobe-3.0 fehlt in der ersten Zeile!\n"
-#~ "        REF: Seite 17, 3.1 Conforming Documents\n"
-
-#~ msgid ""
-#~ "    Missing %%EndComments comment!\n"
-#~ "        REF: Page 41, %%EndComments\n"
-#~ msgstr ""
-#~ "    %%EndComments-Kommentar fehlt!\n"
-#~ "        REF: Seite 41, %%EndComments\n"
-
-#~ msgid ""
-#~ "    Missing or bad %%BoundingBox: comment!\n"
-#~ "        REF: Page 39, %%BoundingBox:\n"
-#~ msgstr ""
-#~ "    %%BoundingBox fehlt oder ist ungültig: Kommentar!\n"
-#~ "        REF: Seite 39, %%BoundingBox:\n"
-
-#~ msgid ""
-#~ "    Missing or bad %%Page: comments!\n"
-#~ "        REF: Page 53, %%Page:\n"
-#~ msgstr ""
-#~ "    %%Page fehlt oder ist ungültig: Kommentare!\n"
-#~ "        REF: Seite 53, %%Page:\n"
-
-#~ msgid ""
-#~ "    Missing or bad %%Pages: comment!\n"
-#~ "        REF: Page 43, %%Pages:\n"
-#~ msgstr ""
-#~ "    %%Pages fehlt oder ist ungültig: Kommentar!\n"
-#~ "        REF: Seite 43, %%Pages:\n"
-
-#~ msgid "    NO ERRORS FOUND\n"
-#~ msgstr "    KEINE FEHLER GEFUNDEN\n"
-
-#~ msgid "    Saw %d lines that exceeded 255 characters!\n"
-#~ msgstr "    %d Zeilen mit über 255 Zeichen gefunden!\n"
-
-#~ msgid "    Too many %%BeginDocument comments!\n"
-#~ msgstr "    Zu viele %%BeginDocument-Kommentare!\n"
-
-#~ msgid "    Too many %%EndDocument comments!\n"
-#~ msgstr "    Zu viele %%EndDocument-Kommentare!\n"
-
-#~ msgid "    Warning: file contains binary data!\n"
-#~ msgstr "    Achtung: Datei enthält Binärdaten!\n"
-
-#~ msgid "    Warning: no %%EndComments comment in file!\n"
-#~ msgstr "    Achtung: kein %%EndComments-Kommentar in der Datei!\n"
-
-#~ msgid "    Warning: obsolete DSC version %.1f in file!\n"
-#~ msgstr "    Achtung: veraltete DSC-Version %.1f in der Datei!\n"
-
-#~ msgid " FAIL\n"
-#~ msgstr " FEHLER\n"
-
-#~ msgid ""
-#~ " FAIL\n"
-#~ "      **FAIL**  Unable to open PPD file - %s\n"
-#~ msgstr ""
-#~ " FEHLER\n"
-#~ "      **FEHLER**  PPD-Datei konnte nicht geöffnet werden – %s.\n"
-
-#~ msgid ""
-#~ " FAIL\n"
-#~ "      **FAIL**  Unable to open PPD file - %s on line %d.\n"
-#~ msgstr ""
-#~ " FEHLER\n"
-#~ "      **FEHLER**  PPD-Datei konnte nicht geöffnet werden – %s in Zeile %"
-#~ "d.\n"
-
-#~ msgid " PASS\n"
-#~ msgstr " PASS\n"
-
-#~ msgid "#10 Envelope"
-#~ msgstr "US #10 Umschlag"
-
-#~ msgid "#11 Envelope"
-#~ msgstr "US #11 Umschlag"
-
-#~ msgid "#12 Envelope"
-#~ msgstr "US #12 Umschlag"
-
-#~ msgid "#14 Envelope"
-#~ msgstr "US #14 Umschlag"
-
-#~ msgid "#9 Envelope"
-#~ msgstr "US #9 Umschlag"
-
-#~ msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes\n"
-#~ msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f Byte\n"
-
-#~ msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes\n"
-#~ msgstr "%-7s %-7.7s %-7d %-31.31s %.0f Byte\n"
-
-#~ msgid "%s accepting requests since %s\n"
-#~ msgstr "%s akzeptiert Anfragen seit %s\n"
-
-#~ msgid "%s is not implemented by the CUPS version of lpc.\n"
-#~ msgstr "%s ist nicht implementiert in der CUPS-Version von lpc.\n"
-
-#~ msgid "%s is not ready\n"
-#~ msgstr "%s ist nicht bereit\n"
-
-#~ msgid "%s is ready\n"
-#~ msgstr "%s ist bereit\n"
-
-#~ msgid "%s is ready and printing\n"
-#~ msgstr "%s ist bereit und druckt\n"
-
-#~ msgid ""
-#~ "%s not accepting requests since %s -\n"
-#~ "\t%s\n"
-#~ msgstr ""
-#~ "%s akzeptiert keine Anfragen seit %s -\n"
-#~ "\t%s\n"
-
-#~ msgid "%s not supported!"
-#~ msgstr "%s nicht unterstützt!"
-
-#~ msgid "%s/%s accepting requests since %s\n"
-#~ msgstr "%s/%s akzeptiert Anfragen seit %s\n"
-
-#~ msgid ""
-#~ "%s/%s not accepting requests since %s -\n"
-#~ "\t%s\n"
-#~ msgstr ""
-#~ "%s/%s akzeptiert keine Anfragen seit %s -\n"
-#~ "\t%s\n"
-
-#~ msgid "%s: %-33.33s [job %d localhost]\n"
-#~ msgstr "%s: %-33.33s [Druckauftrag %d localhost]\n"
-
-#~ msgid "%s: %s failed: %s\n"
-#~ msgstr "%s: %s fehlgeschlagen: %s\n"
-
-#~ msgid "%s: Don't know what to do!\n"
-#~ msgstr "%s: Weiß nicht, was ich tun soll!\n"
-
-#~ msgid ""
-#~ "%s: Error - %s environment variable names non-existent destination \"%s"
-#~ "\"!\n"
-#~ msgstr ""
-#~ "%s: Fehler – %s Umgebungsvariablennamen nicht vorhanden für Ziel „%s“!\n"
-
-#~ msgid "%s: Error - bad job ID!\n"
-#~ msgstr "%s: Fehler – ungültige Druckauftrags-ID!\n"
-
-#~ msgid "%s: Error - cannot print files and alter jobs simultaneously!\n"
-#~ msgstr ""
-#~ "%s: Fehler – kann nicht gleichzeitig Dateien drucken und Druckaufträge "
-#~ "ändern!\n"
-
-#~ msgid ""
-#~ "%s: Error - cannot print from stdin if files or a job ID are provided!\n"
-#~ msgstr ""
-#~ "%s: Fehler – kann nicht von „stdin“, wenn Dateien oder eine Druckauftrags-"
-#~ "ID übergeben werden!\n"
-
-#~ msgid "%s: Error - expected character set after '-S' option!\n"
-#~ msgstr "%s: Fehler – Zeichensatz erwartet nach '-S'-Option!\n"
-
-#~ msgid "%s: Error - expected content type after '-T' option!\n"
-#~ msgstr "%s: Fehler – Inhaltstyp erwartet nach '-T'-Option!\n"
-
-#~ msgid "%s: Error - expected copies after '-n' option!\n"
-#~ msgstr "%s: Fehler – Kopien erwartet nach '-n'-Option!\n"
-
-#~ msgid "%s: Error - expected copy count after '-#' option!\n"
-#~ msgstr "%s: Fehler – Kopienanzahl erwartet nach '-#'-Option!\n"
-
-#~ msgid "%s: Error - expected destination after '-P' option!\n"
-#~ msgstr "%s: Fehler – Ziel erwartet nach '-P'-Option!\n"
-
-#~ msgid "%s: Error - expected destination after '-b' option!\n"
-#~ msgstr "%s: Fehler – Ziel erwartet nach '-b'-Option!\n"
-
-#~ msgid "%s: Error - expected destination after '-d' option!\n"
-#~ msgstr "%s: Fehler – Ziel erwartet nach '-d'-Option!\n"
-
-#~ msgid "%s: Error - expected form after '-f' option!\n"
-#~ msgstr "%s: Fehler – Form erwartet nach '-f'-Option!\n"
-
-#~ msgid "%s: Error - expected hold name after '-H' option!\n"
-#~ msgstr "%s: Fehler – Name halten erwartet nach '-H'-Option!\n"
-
-#~ msgid "%s: Error - expected hostname after '-H' option!\n"
-#~ msgstr "%s: Fehler – Hostname erwartet nach '-H'-Option!\n"
-
-#~ msgid "%s: Error - expected hostname after '-h' option!\n"
-#~ msgstr "%s: Fehler – Hostname erwartet nach '-h'-Option!\n"
-
-#~ msgid "%s: Error - expected mode list after '-y' option!\n"
-#~ msgstr "%s: Fehler – Modusliste erwartet nach '-y'-Option!\n"
-
-#~ msgid "%s: Error - expected name after '-%c' option!\n"
-#~ msgstr "%s: Fehler – Name erwartet nach '-%c'-Option!\n"
-
-#~ msgid "%s: Error - expected option string after '-o' option!\n"
-#~ msgstr "%s: Fehler – Optionsstring erwartet nach '-o'-Option!\n"
-
-#~ msgid "%s: Error - expected page list after '-P' option!\n"
-#~ msgstr "%s: Fehler – Seitenliste erwartet nach '-P'-Option!\n"
-
-#~ msgid "%s: Error - expected priority after '-%c' option!\n"
-#~ msgstr "%s: Fehler – Priorität erwartet nach '-%c'-Option!\n"
-
-#~ msgid "%s: Error - expected reason text after '-r' option!\n"
-#~ msgstr "%s: Fehler – Text mit Grund erwartet nach '-r'-Option!\n"
-
-#~ msgid "%s: Error - expected title after '-t' option!\n"
-#~ msgstr "%s: Fehler – Titel erwartet nach '-t'-Option!\n"
-
-#~ msgid "%s: Error - expected username after '-U' option!\n"
-#~ msgstr "%s: Fehler – Benutzername erwartet nach '-U'-Option!\n"
-
-#~ msgid "%s: Error - expected username after '-u' option!\n"
-#~ msgstr "%s: Fehler – Benutzername erwartet nach '-u'-Option!\n"
-
-#~ msgid "%s: Error - expected value after '-%c' option!\n"
-#~ msgstr "%s: Fehler – Wert erwartet nach '-%c'-Option!\n"
-
-#~ msgid ""
-#~ "%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' "
-#~ "option!\n"
-#~ msgstr ""
-#~ "%s: Fehler – benötigt „completed“, „not-completed“ oder „all“ nach '-W'-"
-#~ "Option!\n"
-
-#~ msgid "%s: Error - no default destination available.\n"
-#~ msgstr "%s: Fehler – kein Standardziel verfügbar.\n"
-
-#~ msgid "%s: Error - priority must be between 1 and 100.\n"
-#~ msgstr "%s: Fehler – Priorität muss zwischen 1 und 100 sein.\n"
-
-#~ msgid "%s: Error - scheduler not responding!\n"
-#~ msgstr "%s: Fehler – Scheduler reagiert nicht!\n"
-
-#~ msgid "%s: Error - too many files - \"%s\"\n"
-#~ msgstr "%s: Fehler – zu viele Dateien – „%s“\n"
-
-#~ msgid "%s: Error - unable to access \"%s\" - %s\n"
-#~ msgstr "%s: Fehler – kein Zugriff auf „%s“ – %s\n"
-
-#~ msgid "%s: Error - unable to queue from stdin - %s\n"
-#~ msgstr "%s: Fehler – keine Warteliste für „stdin“ – %s\n"
-
-#~ msgid "%s: Error - unknown destination \"%s\"!\n"
-#~ msgstr "%s: Fehler – unbekanntes Ziel „%s“!\n"
-
-#~ msgid "%s: Error - unknown destination \"%s/%s\"!\n"
-#~ msgstr "%s: Fehler – unbekanntes Ziel „%s/%s“!\n"
-
-#~ msgid "%s: Error - unknown option '%c'!\n"
-#~ msgstr "%s: Fehler – unbekannte Option '%c'!\n"
-
-#~ msgid "%s: Error - unknown option '%s'!\n"
-#~ msgstr "%s: Fehler – unbekannte Option '%s'!\n"
-
-#~ msgid "%s: Expected job ID after '-i' option!\n"
-#~ msgstr "%s: Druckauftrags-ID erwartet nach '-i'-Option!\n"
-
-#~ msgid "%s: Filter \"%s\" not available: %s\n"
-#~ msgstr "%s: Filter „%s“ nicht verfügbar: %s\n"
-
-#~ msgid "%s: Invalid destination name in list \"%s\"!\n"
-#~ msgstr "%s: Ungültiger Zielname in Liste „%s“!\n"
-
-#~ msgid "%s: Invalid filter string \"%s\"\n"
-#~ msgstr "%s: Ungültiger Filterstring „%s“\n"
-
-#~ msgid "%s: Need job ID ('-i jobid') before '-H restart'!\n"
-#~ msgstr "%s: Druckauftrags-ID ('-i jobid') benötigt vor '-H restart'!\n"
-
-#~ msgid "%s: No filter to convert from %s/%s to %s/%s!\n"
-#~ msgstr "%s: Kein Filter für Konvertierung von %s/%s zu %s/%s!\n"
-
-#~ msgid "%s: Operation failed: %s\n"
-#~ msgstr "%s: Aktion fehlgeschlagen: %s\n"
-
-#~ msgid "%s: Sorry, no encryption support compiled in!\n"
-#~ msgstr "%s: Verschlüsselungsunterstützung nicht verfügbar!\n"
-
-#~ msgid "%s: Unable to connect to server\n"
-#~ msgstr "%s: Verbindung mit Server fehlgeschlagen\n"
-
-#~ msgid "%s: Unable to contact server!\n"
-#~ msgstr "%s: Verbindungsaufbau zum Server fehlgeschlagen!\n"
-
-#~ msgid "%s: Unable to determine MIME type of \"%s\"!\n"
-#~ msgstr "%s: MIME-Typ von „%s“ konnte nicht bestimmt werden!\n"
-
-#~ msgid "%s: Unable to open %s - %s\n"
-#~ msgstr "%s: „%s“ konnte nicht geöffnet werden – %s\n"
-
-#~ msgid "%s: Unable to open %s - %s on line %d.\n"
-#~ msgstr "%s: „%s“ konnte nicht geöffnet werden – %s in Zeile %d.\n"
-
-#~ msgid "%s: Unable to open %s: %s\n"
-#~ msgstr "%s: „%s“ konnte nicht geöffnet werden: %s\n"
-
-#~ msgid "%s: Unable to open PPD file: %s on line %d\n"
-#~ msgstr "%s: PPD-Datei konnte nicht geöffnet werden – %s in Zeile %d\n"
-
-#~ msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"!\n"
-#~ msgstr ""
-#~ "%s: MIME-Datenbank von „%s“ oder „%s“ konnte nicht gelesen werden!\n"
-
-#~ msgid "%s: Unknown destination \"%s\"!\n"
-#~ msgstr "%s: Unbekanntes Ziel „%s“!\n"
-
-#~ msgid "%s: Unknown destination MIME type %s/%s!\n"
-#~ msgstr "%s: Unbekannter Ziel-MIME-Typ „%s/%s“!\n"
-
-#~ msgid "%s: Unknown option '%c'!\n"
-#~ msgstr "%s: Unbekannte Option '%c'!\n"
-
-#~ msgid "%s: Unknown source MIME type %s/%s!\n"
-#~ msgstr "%s: Unbekannter Quell-MIME-Typ „%s/%s“!\n"
-
-#~ msgid ""
-#~ "%s: Warning - '%c' format modifier not supported - output may not be "
-#~ "correct!\n"
-#~ msgstr ""
-#~ "%s: Achtung – '%c'-Format-Modifier nicht unterstützt – Ausgabe ist u. U. "
-#~ "nicht korrekt!\n"
-
-#~ msgid "%s: Warning - character set option ignored!\n"
-#~ msgstr "%s: Achtung – Zeichensatzoption ignoriert!\n"
-
-#~ msgid "%s: Warning - content type option ignored!\n"
-#~ msgstr "%s: Achtung – Inhaltstypoption ignoriert!\n"
-
-#~ msgid "%s: Warning - form option ignored!\n"
-#~ msgstr "%s: Achtung – Formoption ignoriert!\n"
-
-#~ msgid "%s: Warning - mode option ignored!\n"
-#~ msgstr "%s: Achtung – Modusoption ignoriert!\n"
-
-#~ msgid ""
-#~ "%s: error - %s environment variable names non-existent destination \"%s"
-#~ "\"!\n"
-#~ msgstr ""
-#~ "%s: Fehler – %s Umgebungsvariablennamen nicht vorhanden für Ziel „%s“!\n"
-
-#~ msgid "%s: error - expected option=value after '-o' option!\n"
-#~ msgstr "%s: Fehler – „option=value“ erwartet nach '-o'-Option!\n"
-
-#~ msgid "%s: error - no default destination available.\n"
-#~ msgstr "%s: Fehler – kein Standardziel verfügbar.\n"
-
-#~ msgid "10 x 11\""
-#~ msgstr "10 x 11 Zoll"
-
-#~ msgid "10 x 13\""
-#~ msgstr "10 x 13 Zoll"
-
-#~ msgid "10 x 14\""
-#~ msgstr "10 x 14 Zoll"
-
-#~ msgid "12 x 11\""
-#~ msgstr "12 x 11 Zoll"
-
-#~ msgid "15 x 11\""
-#~ msgstr "15 x 11 Zoll"
-
-#~ msgid "600 DPI Grayscale"
-#~ msgstr "600 DPI Graustufen"
-
-#~ msgid "60x720dpi"
-#~ msgstr "60x720 dpi"
-
-#~ msgid "7 x 9\""
-#~ msgstr "7 x 9 Zoll"
-
-#~ msgid "8 x 10\""
-#~ msgstr "8 x 10 Zoll"
-
-#~ msgid "9 x 11\""
-#~ msgstr "9 x 11 Zoll"
-
-#~ msgid "9 x 12\""
-#~ msgstr "9 x 12 Zoll"
-
-#~ msgid "?Invalid help command unknown\n"
-#~ msgstr "?Ungültiger Hilfebefehl ist unbekannt\n"
-
-#~ msgid "A Samba password is required to export printer drivers!"
-#~ msgstr ""
-#~ "Es wird ein Samba-Kennwort benötigt, um Druckertreiber exportieren zu "
-#~ "können!"
-
-#~ msgid "A Samba username is required to export printer drivers!"
-#~ msgstr ""
-#~ "Es wird ein Samba-Benutzername benötigt, um Druckertreiber exportieren zu "
-#~ "können!"
-
-#~ msgid "A class named \"%s\" already exists!"
-#~ msgstr "Es gibt bereits eine Klasse mit dem Namen „%s“!"
-
-#~ msgid "A printer named \"%s\" already exists!"
-#~ msgstr "Es gibt bereits einen Drucker mit dem Namen „%s“!"
-
-#~ msgid "A3 (Oversize)"
-#~ msgstr "A3 (Übergröße)"
-
-#~ msgid "A4 (Oversize)"
-#~ msgstr "A4 (Übergröße)"
-
-#~ msgid "A4 (Small)"
-#~ msgstr "A4 (klein)"
-
-#~ msgid "A5 (Oversize)"
-#~ msgstr "A5 (Übergröße)"
-
-#~ msgid "ARCH A"
-#~ msgstr "ARCH A"
-
-#~ msgid "ARCH B"
-#~ msgstr "ARCH B"
-
-#~ msgid "Attempt to set %s printer-state to bad value %d!"
-#~ msgstr ""
-#~ "Versuch, den Druckerstatus für „%s“ auf den ungültigen Wert „%d“ zu "
-#~ "setzen!"
-
-#~ msgid "Attribute groups are out of order (%x < %x)!"
-#~ msgstr "Attributgruppen sind durcheinander (%x < %x)!"
-
-#~ msgid "Bad device URI \"%s\"!\n"
-#~ msgstr "Ungültige Geräte-URI „%s“!\n"
-
-#~ msgid "Bad device-uri \"%s\"!"
-#~ msgstr "Ungültige Geräte-URI „%s“!"
-
-#~ msgid "Bad device-uri scheme \"%s\"!"
-#~ msgstr "Ungültiges Geräte-URI-Schema „%s“!"
-
-#~ msgid "Bad document-format \"%s\"!"
-#~ msgstr "Ungültiges Dokumentformat „%s“!"
-
-#~ msgid "Bad filename buffer!"
-#~ msgstr "Ungültiger Dateinamen-Puffer!"
-
-#~ msgid "Bad font attribute: %s\n"
-#~ msgstr "Ungültiges Schriftattribut: %s\n"
-
-#~ msgid "Bad job-priority value!"
-#~ msgstr "Ungültiger Wert für Druckauftragspriorität!"
-
-#~ msgid "Bad job-sheets value \"%s\"!"
-#~ msgstr "Ungültiger Wert „%s“ für Druckauftragslisten!"
-
-#~ msgid "Bad job-sheets value type!"
-#~ msgstr "Ungültiger Wertetyp für Druckauftragslisten!"
-
-#~ msgid "Bad job-state value!"
-#~ msgstr "Ungültiger Wert für Druckauftragsstatus!"
-
-#~ msgid "Bad job-uri attribute \"%s\"!"
-#~ msgstr "Ungültiges Druckauftrags-URI-Attribut „%s“!"
-
-#~ msgid "Bad notify-pull-method \"%s\"!"
-#~ msgstr "Ungültige Notify-Pull-Methode „%s“!"
-
-#~ msgid "Bad notify-recipient-uri URI \"%s\"!"
-#~ msgstr "Ungültige Notify-Recipient-URI: URI „%s“!"
-
-#~ msgid "Bad option + choice on line %d!"
-#~ msgstr "Ungültige Option + Auswahl in Zeile %d!"
-
-#~ msgid "Bad port-monitor \"%s\"!"
-#~ msgstr "Ungültiger Port-Monitor „%s“!"
-
-#~ msgid "Bad printer-state value %d!"
-#~ msgstr "Ungültiger Wert „%d“ für Druckerstatus!"
-
-#~ msgid "Bad request version number %d.%d!"
-#~ msgstr "Ungültige Anfrage-Versionsnummer %d.%d!"
-
-#~ msgid "Bad subscription ID!"
-#~ msgstr "Ungültige Subskriptions-ID!"
-
-#~ msgid "C0 Envelope"
-#~ msgstr "DIN C0 Umschlag"
-
-#~ msgid "C1 Envelope"
-#~ msgstr "DIN C1 Umschlag"
-
-#~ msgid "C2 Envelope"
-#~ msgstr "DIN C2 Umschlag"
-
-#~ msgid "C3 Envelope"
-#~ msgstr "DIN C3 Umschlag"
-
-#~ msgid "C4"
-#~ msgstr "DIN C4"
-
-#~ msgid "C4 Envelope"
-#~ msgstr "DIN C4 Umschlag"
-
-#~ msgid "C5"
-#~ msgstr "DIN C5"
-
-#~ msgid "C5 Envelope"
-#~ msgstr "DIN C5 Umschlag"
-
-#~ msgid "C6"
-#~ msgstr "DIN C6"
-
-#~ msgid "C6 Envelope"
-#~ msgstr "DIN C6 Umschlag"
-
-#~ msgid "C65 Envelope"
-#~ msgstr "DIN C65 Umschlag"
-
-#~ msgid "C7 Envelope"
-#~ msgstr "DIN C7 Umschlag"
-
-#~ msgid "Character set \"%s\" not supported!"
-#~ msgstr "Zeichensatz „%s“ nicht unterstützt!"
-
-#~ msgid "Chou3 Envelope"
-#~ msgstr "Chou3 Umschlag"
-
-#~ msgid "Chou4 Envelope"
-#~ msgstr "Chou4 Umschlag"
-
-#~ msgid ""
-#~ "Commands may be abbreviated.  Commands are:\n"
-#~ "\n"
-#~ "exit    help    quit    status  ?\n"
-#~ msgstr ""
-#~ "Befehle können abgekürzt werden. Befehle sind:\n"
-#~ "\n"
-#~ "exit    help    quit    status  ?\n"
-
-#~ msgid "Could not scan type \"%s\"!"
-#~ msgstr "Typ „%s“ konnte nicht durchsucht werden!"
-
-#~ msgid "Cover open."
-#~ msgstr "Die Abdeckung ist offen."
-
-#~ msgid "DL"
-#~ msgstr "DL"
-
-#~ msgid "DL Envelope"
-#~ msgstr "DL Umschlag"
-
-#~ msgid "Developer almost empty."
-#~ msgstr "Der Entwickler ist fast leer."
-
-#~ msgid "Developer empty!"
-#~ msgstr "Der Entwickler ist leer!"
-
-#~ msgid ""
-#~ "Device: uri = %s\n"
-#~ "        class = %s\n"
-#~ "        info = %s\n"
-#~ "        make-and-model = %s\n"
-#~ "        device-id = %s\n"
-#~ "        location = %s\n"
-#~ msgstr ""
-#~ "Gerät: URI = %s\n"
-#~ "        Klasse = %s\n"
-#~ "        Info = %s\n"
-#~ "        Hersteller und Modell = %s\n"
-#~ "        Geräte-ID = %s\n"
-#~ "        Standort = %s\n"
-
-#~ msgid "Document %d not found in job %d."
-#~ msgstr "Dokument „%d“ nicht gefunden in Druckauftrag „%d“."
-
-#~ msgid "Door open."
-#~ msgstr "Die Tür ist offen."
-
-#~ msgid "Double Postcard"
-#~ msgstr "Doppelpostkarte"
-
-#~ msgid "EMERG: Unable to allocate memory for page info: %s\n"
-#~ msgstr "EMERG: Speicher für Seiteninfo konnte nicht zugewiesen werden: %s\n"
-
-#~ msgid "EMERG: Unable to allocate memory for pages array: %s\n"
-#~ msgstr ""
-#~ "EMERG: Speicher für Seiten-Array konnte nicht zugewiesen werden: %s\n"
-
-#~ msgid "ERROR: Bad %%BoundingBox: comment seen!\n"
-#~ msgstr "ERROR: Ungültige %%BoundingBox: Kommentar gesehen!\n"
-
-#~ msgid "ERROR: Bad %%IncludeFeature: comment!\n"
-#~ msgstr "ERROR: Ungültiges %%IncludeFeature: Kommentar!\n"
-
-#~ msgid "ERROR: Bad %%Page: comment in file!\n"
-#~ msgstr "ERROR: Ungültige %%Page: Kommentar in Datei!\n"
-
-#~ msgid "ERROR: Bad %%PageBoundingBox: comment in file!\n"
-#~ msgstr "ERROR: Ungültige %%PageBoundingBox: Kommentar in Datei!\n"
-
-#~ msgid "ERROR: Bad SCSI device file \"%s\"!\n"
-#~ msgstr "ERROR: Ungültige SCSI-Gerätedatei „%s“!\n"
-
-#~ msgid "ERROR: Bad charset file %s\n"
-#~ msgstr "ERROR: Ungültige Zeichensatzdatei „%s“\n"
-
-#~ msgid "ERROR: Bad charset type %s\n"
-#~ msgstr "ERROR: Ungültiger Zeichensatztyp „%s“\n"
-
-#~ msgid "ERROR: Bad columns value %d!\n"
-#~ msgstr "ERROR: Ungültiger Spaltenwert „%d“!\n"
-
-#~ msgid "ERROR: Bad cpi value %f!\n"
-#~ msgstr "ERROR: Ungültiger cpi-Wert „%f“!\n"
-
-#~ msgid "ERROR: Bad font description line: %s\n"
-#~ msgstr "ERROR: Ungültige Schriftbeschreibungszeile: „%s“\n"
-
-#~ msgid "ERROR: Bad lpi value %f!\n"
-#~ msgstr "ERROR: Ungültiger lpi-Wert „%f“!\n"
-
-#~ msgid "ERROR: Bad page setup!\n"
-#~ msgstr "ERROR: Ungültiges Seitenformat!\n"
-
-#~ msgid "ERROR: Bad text direction %s\n"
-#~ msgstr "ERROR: Ungültige Textrichtung „%s“\n"
-
-#~ msgid "ERROR: Bad text width %s\n"
-#~ msgstr "ERROR: Ungültige Textweite „%s“\n"
-
-#~ msgid "ERROR: Destination printer does not exist!\n"
-#~ msgstr "ERROR: Zieldrucker existiert nicht!\n"
-
-#~ msgid "ERROR: Duplicate %%BoundingBox: comment seen!\n"
-#~ msgstr "ERROR: Doppelte %%BoundingBox: Kommentar gesehen!\n"
-
-#~ msgid "ERROR: Duplicate %%Pages: comment seen!\n"
-#~ msgstr "ERROR: Doppelte %%Pages: Kommentar gesehen!\n"
-
-#~ msgid "ERROR: Empty print file!\n"
-#~ msgstr "ERROR: Leere Druckdatei!\n"
-
-#~ msgid "ERROR: Error %d sending PAPSendData request: %s\n"
-#~ msgstr "ERROR: Fehler „%d“ beim Senden der PAPSendData-Anfrage: %s\n"
-
-#~ msgid "ERROR: Expected quoted string on line %d of %s!\n"
-#~ msgstr "ERROR: String mit Anführungszeichen erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ERROR: Fatal USB error!\n"
-#~ msgstr "ERROR: Schwerwiegender USB-Fehler!\n"
-
-#~ msgid "ERROR: Invalid HP-GL/2 command seen, unable to print file!\n"
-#~ msgstr ""
-#~ "ERROR: Ungültiger HP-GL/2-Befehl aufgetreten; Datei konnte nicht gedruckt "
-#~ "werden!\n"
-
-#~ msgid "ERROR: Missing %%EndProlog!\n"
-#~ msgstr "ERROR: Fehlender %%EndProlog!\n"
-
-#~ msgid "ERROR: Missing %%EndSetup!\n"
-#~ msgstr "ERROR: Fehlendes %%EndSetup!\n"
-
-#~ msgid ""
-#~ "ERROR: Missing device URI on command-line and no DEVICE_URI environment "
-#~ "variable!\n"
-#~ msgstr ""
-#~ "ERROR: Geräte-URI fehlt in der Befehlszeile und keine DEVICE_URI "
-#~ "Umgebungsvariable vorhanden!\n"
-
-#~ msgid "ERROR: Missing value on line %d of banner file!\n"
-#~ msgstr "ERROR: Wert fehlt in Zeile %d der Bannerdatei!\n"
-
-#~ msgid ""
-#~ "ERROR: Need a msgid line before any translation strings on line %d of %"
-#~ "s!\n"
-#~ msgstr ""
-#~ "ERROR: msgid-Zeile benötigt vor allen Übersetzungsstrings in Zeile %d von "
-#~ "%s!\n"
-
-#~ msgid "ERROR: No %%BoundingBox: comment in header!\n"
-#~ msgstr "ERROR: Keine %%BoundingBox: Kommentar im Header!\n"
-
-#~ msgid "ERROR: No %%Pages: comment in header!\n"
-#~ msgstr "ERROR: Keine %%Pages: Kommentar im Header!\n"
-
-#~ msgid ""
-#~ "ERROR: No device URI found in argv[0] or in DEVICE_URI environment "
-#~ "variable!\n"
-#~ msgstr ""
-#~ "ERROR: Keine Geräte-URI gefunden in „argv[0]“ oder in DEVICE_URI "
-#~ "Umgebungsvariable!\n"
-
-#~ msgid "ERROR: No fonts in charset file %s\n"
-#~ msgstr "ERROR: Keine Schriften in Zeichensatzdatei „%s“\n"
-
-#~ msgid "ERROR: No pages found!\n"
-#~ msgstr "ERROR: Keine Seiten gefunden!\n"
-
-#~ msgid "ERROR: Out of paper!\n"
-#~ msgstr "ERROR: Kein Papier mehr!\n"
-
-#~ msgid "ERROR: PRINTER environment variable not defined!\n"
-#~ msgstr "ERROR: DRUCKER: Umgebungsvariable nicht definiert!\n"
-
-#~ msgid "ERROR: Print file was not accepted (%s)!\n"
-#~ msgstr "ERROR: Druckdatei wurde nicht akzeptiert (%s)!\n"
-
-#~ msgid "ERROR: Printer not responding\n"
-#~ msgstr "ERROR: Drucker reagiert nicht\n"
-
-#~ msgid "ERROR: Printer not responding!\n"
-#~ msgstr "ERROR: Drucker reagiert nicht!\n"
-
-#~ msgid "ERROR: Printer sent unexpected EOF\n"
-#~ msgstr "ERROR: Drucker sendete unerwartet EOF\n"
-
-#~ msgid "ERROR: Remote host did not accept control file (%d)\n"
-#~ msgstr ""
-#~ "ERROR: Entfernter Host hat die Steuerungsdatei nicht akzeptiert (%d)\n"
-
-#~ msgid "ERROR: Remote host did not accept data file (%d)\n"
-#~ msgstr "ERROR: Entfernter Host hat Datendatei nicht akzeptiert (%d)\n"
-
-#~ msgid "ERROR: There was a timeout error while sending data to the printer\n"
-#~ msgstr ""
-#~ "ERROR: Beim Senden der Daten an den Drucker ist ein Fehler wegen "
-#~ "Zeitüberschreitung aufgetreten.\n"
-
-#~ msgid "ERROR: Unable to add file %d to job: %s\n"
-#~ msgstr ""
-#~ "ERROR: Datei „%d“ konnte nicht zu Druckauftrag hinzugefügt werden: %s\n"
-
-#~ msgid "ERROR: Unable to cancel job %d: %s\n"
-#~ msgstr "ERROR: Druckauftrag „%d“ konnte nicht abgebrochen werden: %s\n"
-
-#~ msgid "ERROR: Unable to copy PDF file"
-#~ msgstr "ERROR: PDF-Datei konnte nicht kopiert werden"
-
-#~ msgid "ERROR: Unable to create socket"
-#~ msgstr "ERROR: Socket konnte nicht erstellt werden"
-
-#~ msgid "ERROR: Unable to create temporary compressed print file: %s\n"
-#~ msgstr ""
-#~ "ERROR: Temporäre komprimierte Druckdatei konnte nicht erstellt werden: %"
-#~ "s\n"
-
-#~ msgid "ERROR: Unable to create temporary file"
-#~ msgstr "ERROR: Temporäre Datei konnte nicht erstellt werden"
-
-#~ msgid "ERROR: Unable to create temporary file - %s.\n"
-#~ msgstr "ERROR: Temporäre Datei konnte nicht erstellt werden – %s.\n"
-
-#~ msgid "ERROR: Unable to create temporary file: %s\n"
-#~ msgstr "ERROR: Temporäre Datei konnte nicht erstellt werden: %s.\n"
-
-#~ msgid "ERROR: Unable to exec pictwpstops: %s\n"
-#~ msgstr "ERROR: pictwpstops konnte nicht ausgeführt werden: %s\n"
-
-#~ msgid "ERROR: Unable to execute gs program"
-#~ msgstr "ERROR: gs-Programm konnte nicht ausgeführt werden"
-
-#~ msgid "ERROR: Unable to execute pdftops program"
-#~ msgstr "ERROR: pdftops-Programm konnte nicht ausgeführt werden"
-
-#~ msgid "ERROR: Unable to fork pictwpstops: %s\n"
-#~ msgstr "ERROR: Fork für pictwpstops konnte nicht ausgeführt werden: %s\n"
-
-#~ msgid "ERROR: Unable to get PAP request"
-#~ msgstr "ERROR: PAP-Anfrage konnte nicht empfangen werden"
-
-#~ msgid "ERROR: Unable to get PAP response"
-#~ msgstr "ERROR: PAP-Antwort konnte nicht empfangen werden"
-
-#~ msgid "ERROR: Unable to get PPD file for printer \"%s\" - %s.\n"
-#~ msgstr ""
-#~ "ERROR: PPD-Datei für Drucker „%s“ konnte nicht abgefragt werden – %s.\n"
-
-#~ msgid "ERROR: Unable to get default AppleTalk zone"
-#~ msgstr "ERROR: AppleTalk-Standardzone konnte nicht abgefragt werden"
-
-#~ msgid "ERROR: Unable to get job %d attributes (%s)!\n"
-#~ msgstr ""
-#~ "ERROR: Attribute für Druckauftrag „%d“ konnten nicht abgefragt werden (%"
-#~ "s)!\n"
-
-#~ msgid "ERROR: Unable to get printer status (%s)!\n"
-#~ msgstr "ERROR: Druckerstatus konnte nicht abgefragt werden (%s)!\n"
-
-#~ msgid "ERROR: Unable to locate printer '%s'!\n"
-#~ msgstr "ERROR: Drucker „%s“ konnte nicht gefunden werden!\n"
-
-#~ msgid "ERROR: Unable to look for PAP response"
-#~ msgstr "ERROR: Abfrage der PAP-Antwort nicht möglich"
-
-#~ msgid "ERROR: Unable to lookup AppleTalk printers"
-#~ msgstr "ERROR: Suche nach AppleTalk-Druckern nicht möglich"
-
-#~ msgid "ERROR: Unable to make AppleTalk address"
-#~ msgstr "ERROR: Erstellen der AppleTalk-Adresse nicht möglich"
-
-#~ msgid "ERROR: Unable to open \"%s\" - %s\n"
-#~ msgstr "ERROR: „%s“ konnte nicht geöffnet werden – %s\n"
-
-#~ msgid "ERROR: Unable to open %s: %s\n"
-#~ msgstr "ERROR: „%s“ konnte nicht geöffnet werden: %s\n"
-
-#~ msgid "ERROR: Unable to open banner file \"%s\" - %s\n"
-#~ msgstr "ERROR: Bannerdatei „%s“ konnte nicht geöffnet werden – %s\n"
-
-#~ msgid "ERROR: Unable to open device file \"%s\": %s\n"
-#~ msgstr "ERROR: Gerätedatei „%s“ konnte nicht geöffnet werden – %s\n"
-
-#~ msgid "ERROR: Unable to open file \"%s\" - %s\n"
-#~ msgstr "ERROR: Datei „%s“ konnte nicht geöffnet werden – %s\n"
-
-#~ msgid "ERROR: Unable to open file \"%s\": %s\n"
-#~ msgstr "ERROR: Datei „%s“ konnte nicht geöffnet werden: %s\n"
-
-#~ msgid "ERROR: Unable to open image file for printing!\n"
-#~ msgstr "ERROR: Bilddatei konnte nicht zum Drucken geöffnet werden!\n"
-
-#~ msgid "ERROR: Unable to open print file \"%s\": %s\n"
-#~ msgstr "ERROR: Druckdatei „%s“ konnte nicht geöffnet werden: %s\n"
-
-#~ msgid "ERROR: Unable to open print file %s - %s\n"
-#~ msgstr "ERROR: Druckdatei „%s“ konnte nicht geöffnet werden – %s\n"
-
-#~ msgid "ERROR: Unable to open print file %s: %s\n"
-#~ msgstr "ERROR: Druckdatei „%s“ konnte nicht geöffnet werden: %s\n"
-
-#~ msgid "ERROR: Unable to open temporary compressed print file: %s\n"
-#~ msgstr ""
-#~ "ERROR: Temporäre komprimierte Druckdatei konnte nicht geöffnet werden: %"
-#~ "s\n"
-
-#~ msgid "ERROR: Unable to open temporary file"
-#~ msgstr "ERROR: Temporäre Datei konnte nicht geöffnet werden"
-
-#~ msgid "ERROR: Unable to print %d text columns!\n"
-#~ msgstr "ERROR: %d Textspalten konnten nicht gedruckt werden!\n"
-
-#~ msgid "ERROR: Unable to print %dx%d text page!\n"
-#~ msgstr "ERROR: %dx%d Textseite konnte nicht gedruckt werden!\n"
-
-#~ msgid "ERROR: Unable to read print data"
-#~ msgstr "ERROR: Druckdaten konnten nicht gelesen werden"
-
-#~ msgid "ERROR: Unable to read print data!\n"
-#~ msgstr "ERROR: Druckdaten konnten nicht gelesen werden!\n"
-
-#~ msgid "ERROR: Unable to reserve port"
-#~ msgstr "ERROR: Anschluss konnte nicht reserviert werden"
-
-#~ msgid "ERROR: Unable to seek to offset %ld in file - %s\n"
-#~ msgstr ""
-#~ "ERROR: Nach dem Versatz „%ld“ in der Datei konnte nicht gesucht werden – %"
-#~ "s\n"
-
-#~ msgid "ERROR: Unable to seek to offset %lld in file - %s\n"
-#~ msgstr ""
-#~ "ERROR: Nach dem Versatz „%lld“ in der Datei konnte nicht gesucht werden – "
-#~ "%s\n"
-
-#~ msgid "ERROR: Unable to send LPD command"
-#~ msgstr "ERROR: LPD-Befehl konnte nicht gesendet werden"
-
-#~ msgid "ERROR: Unable to send PAP tickle request"
-#~ msgstr "ERROR: PAP-Rückkopplungsanfrage konnte nicht gesendet werden"
-
-#~ msgid "ERROR: Unable to send initial PAP send data request"
-#~ msgstr ""
-#~ "ERROR: Erste PAP-Anfrage zum Senden von Daten konnte nicht gesendet werden"
-
-#~ msgid "ERROR: Unable to send print data (%d)\n"
-#~ msgstr "ERROR: Druckdaten konnten nicht gesendet werden (%d)\n"
-
-#~ msgid "ERROR: Unable to send print data!\n"
-#~ msgstr "ERROR: Druckdaten konnten nicht gesendet werden!\n"
-
-#~ msgid "ERROR: Unable to send print file to printer"
-#~ msgstr "ERROR: Druckdatei konnte nicht an den Drucker gesendet werden"
-
-#~ msgid "ERROR: Unable to send trailing nul to printer"
-#~ msgstr ""
-#~ "ERROR: Nachfolgende Nullen konnten nicht an den Drucker gesendet werden"
-
-#~ msgid "ERROR: Unable to wait for pictwpstops: %s\n"
-#~ msgstr "ERROR: Warten auf pictwpstops nicht möglich: %s\n"
-
-#~ msgid "ERROR: Unable to write %d bytes to \"%s\": %s\n"
-#~ msgstr "ERROR: %d Byte konnten nicht auf „%s“ geschrieben werden: %s\n"
-
-#~ msgid "ERROR: Unable to write %d bytes to printer!\n"
-#~ msgstr "ERROR: %d Byte konnten nicht auf den Drucker geschrieben werden!\n"
-
-#~ msgid "ERROR: Unable to write control file"
-#~ msgstr "ERROR: Steuerungsdatei konnte nicht geschrieben werden"
-
-#~ msgid "ERROR: Unable to write print data"
-#~ msgstr "ERROR: Druckdaten konnten nicht geschrieben werden"
-
-#~ msgid "ERROR: Unable to write print data: %s\n"
-#~ msgstr "ERROR: Druckdaten konnten nicht geschrieben werden: %s\n"
-
-#~ msgid "ERROR: Unable to write raster data to driver!\n"
-#~ msgstr ""
-#~ "ERROR: Rasterdaten konnten nicht auf den Treiber geschrieben werden!\n"
-
-#~ msgid "ERROR: Unable to write to temporary file"
-#~ msgstr "ERROR: Temporäre Datei konnte nicht geschrieben werden"
-
-#~ msgid "ERROR: Unable to write uncompressed document data: %s\n"
-#~ msgstr ""
-#~ "ERROR: Unkomprimierte Dokumentdaten konnten nicht geschrieben werden: %s\n"
-
-#~ msgid "ERROR: Unexpected text on line %d of %s!\n"
-#~ msgstr "ERROR: Unerwarteter Text in Zeile %d von %s!\n"
-
-#~ msgid "ERROR: Unknown encryption option value \"%s\"!\n"
-#~ msgstr "ERROR: Unbekannter Verschlüsselungsoptionswert „%s“!\n"
-
-#~ msgid "ERROR: Unknown file order \"%s\"\n"
-#~ msgstr "ERROR: Unbekannte Dateianordnung „%s“\n"
-
-#~ msgid "ERROR: Unknown format character \"%c\"\n"
-#~ msgstr "ERROR: Unbekanntes Formatzeichen „%c“\n"
-
-#~ msgid "ERROR: Unknown message catalog format for \"%s\"!\n"
-#~ msgstr "ERROR: Unbekanntes Message-Catalog-Format für „%s“!\n"
-
-#~ msgid "ERROR: Unknown option \"%s\" with value \"%s\"!\n"
-#~ msgstr "ERROR: Unbekannte Option „%s“ mit Wert „%s“!\n"
-
-#~ msgid "ERROR: Unknown print mode \"%s\"\n"
-#~ msgstr "ERROR: Unbekannter Druckmodus „%s“\n"
-
-#~ msgid "ERROR: Unknown version option value \"%s\"!\n"
-#~ msgstr "ERROR: Unbekannter Versionsoptionswert „%s“!\n"
-
-#~ msgid "ERROR: Unsupported brightness value %s, using brightness=100!\n"
-#~ msgstr ""
-#~ "ERROR: Nicht unterstützter Helligkeitswert „%s“; „brightness=100“ "
-#~ "verwenden!\n"
-
-#~ msgid "ERROR: Unsupported gamma value %s, using gamma=1000!\n"
-#~ msgstr ""
-#~ "ERROR: Nicht unterstützter Gammawert „%s“; „gamma=1000“ verwenden!\n"
-
-#~ msgid "ERROR: Unsupported number-up value %d, using number-up=1!\n"
-#~ msgstr ""
-#~ "ERROR: Nicht unterstützter Number-Up-Wert „%d“; „number-up=1“ verwenden!\n"
-
-#~ msgid ""
-#~ "ERROR: Unsupported number-up-layout value %s, using number-up-"
-#~ "layout=lrtb!\n"
-#~ msgstr ""
-#~ "ERROR: Nicht unterstützter Number-Up-Layout-Wert „%s“; „number-up-"
-#~ "layout=lrtb“ verwenden!\n"
-
-#~ msgid "ERROR: Unsupported page-border value %s, using page-border=none!\n"
-#~ msgstr ""
-#~ "ERROR: Nicht unterstützter Seitenrandwert „%s“; „page-border=none“ "
-#~ "verwenden!\n"
-
-#~ msgid "ERROR: doc_printf overflow (%d bytes) detected, aborting!\n"
-#~ msgstr "ERROR: doc_printf-Overflow (%d Byte) festgestellt; abbrechen!\n"
-
-#~ msgid "ERROR: pdftops filter crashed on signal %d!\n"
-#~ msgstr "ERROR: pdftops-Filter fehlgeschlagen bei Signal „%d“!\n"
-
-#~ msgid "ERROR: pdftops filter exited with status %d!\n"
-#~ msgstr "ERROR: pdftops-Filter ausgestiegen mit Status „%d“!\n"
-
-#~ msgid "ERROR: pictwpstops exited on signal %d!\n"
-#~ msgstr "ERROR: pictwpstops-Filter ausgestiegen bei Signal „%d“!\n"
-
-#~ msgid "ERROR: pictwpstops exited with status %d!\n"
-#~ msgstr "ERROR: pictwpstops-Filter ausgestiegen mit Status „%d“!\n"
-
-#~ msgid ""
-#~ "ERROR: recoverable: Unable to connect to printer; will retry in 30 "
-#~ "seconds...\n"
-#~ msgstr ""
-#~ "ERROR: wiederherstellbar: Verbindung zum Drucker nicht möglich, erneuter "
-#~ "Versuch in 30 Sekunden …\n"
-
-#~ msgid "ERROR: select() failed"
-#~ msgstr "ERROR: Auswahl() fehlgeschlagen"
-
-#~ msgid "ERROR: unable to stat print file"
-#~ msgstr "ERROR: „stat“ für Druckdatei nicht möglich"
-
-#~ msgid "Empty PPD file!"
-#~ msgstr "Leere PPD-Datei!"
-
-#~ msgid "Error: need hostname after '-h' option!\n"
-#~ msgstr "Fehler: Hostname benötigt nach '-h'-Option!\n"
-
-#~ msgid "FAIL\n"
-#~ msgstr "FEHLER\n"
-
-#~ msgid ""
-#~ "File device URIs have been disabled! To enable, see the FileDevice "
-#~ "directive in \"%s/cupsd.conf\"."
-#~ msgstr ""
-#~ "Dateigeräte-URIs wurden deaktiviert! Infos zum Aktivieren finden Sie im "
-#~ "FileDevice-Verzeichnis unter „%s/cupsd.conf“."
-
-#~ msgid "Fuser temperature high!"
-#~ msgstr "Die Temperatur des Fixierers ist zu hoch!"
-
-#~ msgid "Fuser temperature low!"
-#~ msgstr "Die Temperatur des Fixierers ist zu niedrig!"
-
-#~ msgid "German FanFold"
-#~ msgstr "Deutsch Endlospapier"
-
-#~ msgid "German FanFold Legal"
-#~ msgstr "Deutsch Endlospapier (Brief)"
-
-#~ msgid "Got a printer-uri attribute but no job-id!"
-#~ msgstr "Drucker-URI-Attribute vorhanden, aber keine Druckauftrags-ID!"
-
-#~ msgid "INFO: AppleTalk disabled in System Preferences\n"
-#~ msgstr "INFO: AppleTalk wurde in den Systemeinstellungen deaktiviert.\n"
-
-#~ msgid "INFO: AppleTalk disabled in System Preferences.\n"
-#~ msgstr "INFO: AppleTalk wurde in den Systemeinstellungen deaktiviert.\n"
-
-#~ msgid "INFO: Canceling print job...\n"
-#~ msgstr "INFO: Druckauftrag abbrechen …\n"
-
-#~ msgid "INFO: Connected to printer...\n"
-#~ msgstr "INFO: Mit Drucker verbunden …\n"
-
-#~ msgid "INFO: Connecting to printer...\n"
-#~ msgstr "INFO: Mit Drucker verbinden …\n"
-
-#~ msgid "INFO: Control file sent successfully\n"
-#~ msgstr "INFO: Steuerungsdatei erfolgreich übertragen\n"
-
-#~ msgid "INFO: Data file sent successfully\n"
-#~ msgstr "INFO: Datendatei erfolgreich übertragen\n"
-
-#~ msgid "INFO: Formatting page %d...\n"
-#~ msgstr "INFO: Seite %d formatieren …\n"
-
-#~ msgid "INFO: Loading image file...\n"
-#~ msgstr "INFO: Bilddatei laden …\n"
-
-#~ msgid "INFO: Looking for printer...\n"
-#~ msgstr "INFO: Drucker suchen …\n"
-
-#~ msgid "INFO: Opening connection\n"
-#~ msgstr "INFO: Verbindung herstellen\n"
-
-#~ msgid "INFO: Print file sent, waiting for printer to finish...\n"
-#~ msgstr "INFO: Druckdatei gesendet, warten auf Abschließen des Druckers …\n"
-
-#~ msgid "INFO: Printer busy; will retry in 10 seconds...\n"
-#~ msgstr "INFO: Drucker ist ausgelastet, erneuter Versuch in 10 Sekunden …\n"
-
-#~ msgid "INFO: Printer busy; will retry in 30 seconds...\n"
-#~ msgstr "INFO: Drucker ist ausgelastet, erneuter Versuch in 30 Sekunden …\n"
-
-#~ msgid "INFO: Printer busy; will retry in 5 seconds...\n"
-#~ msgstr "INFO: Drucker ist ausgelastet, erneuter Versuch in 5 Sekunden …\n"
-
-#~ msgid "INFO: Printer does not support IPP/%d.%d, trying IPP/1.0...\n"
-#~ msgstr ""
-#~ "INFO: Drucker unterstützt IPP/%d.%d nicht, erneuter Versuch mit IPP/1.0 "
-#~ "…\n"
-
-#~ msgid "INFO: Printer is busy; will retry in 5 seconds...\n"
-#~ msgstr "INFO: Drucker ausgelastet, erneuter Versuch in 5 Sekunden …\n"
-
-#~ msgid "INFO: Printer is currently off-line.\n"
-#~ msgstr "INFO: Drucker ist derzeit offline.\n"
-
-#~ msgid "INFO: Printer is currently offline.\n"
-#~ msgstr "INFO: Drucker ist derzeit offline.\n"
-
-#~ msgid "INFO: Printer is now online.\n"
-#~ msgstr "INFO: Drucker ist jetzt online.\n"
-
-#~ msgid "INFO: Printer is offline.\n"
-#~ msgstr "INFO: Drucker ist offline.\n"
-
-#~ msgid "INFO: Printer not connected; will retry in 30 seconds...\n"
-#~ msgstr "INFO: Drucker nicht verbunden, erneuter Versuch in 30 Sekunden …\n"
-
-#~ msgid "INFO: Printing page %d, %d%% complete...\n"
-#~ msgstr "INFO: Seite %d drucken, %d %% abgeschlossen …\n"
-
-#~ msgid "INFO: Printing page %d...\n"
-#~ msgstr "INFO: Seite %d drucken …\n"
-
-#~ msgid "INFO: Ready to print.\n"
-#~ msgstr "INFO: Bereit zum Drucken\n"
-
-#~ msgid "INFO: Sending control file (%lu bytes)\n"
-#~ msgstr "INFO: Steuerungsdatei senden (%lu Byte)\n"
-
-#~ msgid "INFO: Sending control file (%u bytes)\n"
-#~ msgstr "INFO: Steuerungsdatei senden (%u Byte)\n"
-
-#~ msgid "INFO: Sending data\n"
-#~ msgstr "INFO: Daten senden\n"
-
-#~ msgid "INFO: Sending data file (%ld bytes)\n"
-#~ msgstr "INFO: Datendatei senden (%ld Byte)\n"
-
-#~ msgid "INFO: Sending data file (%lld bytes)\n"
-#~ msgstr "INFO: Datendatei senden (%lld Byte)\n"
-
-#~ msgid "INFO: Sending print data...\n"
-#~ msgstr "INFO: Druckdaten senden …\n"
-
-#~ msgid "INFO: Sent print file, %ld bytes...\n"
-#~ msgstr "INFO: Druckdatei gesendet, %ld Byte …\n"
-
-#~ msgid "INFO: Sent print file, %lld bytes...\n"
-#~ msgstr "INFO: Druckdatei gesendet, %lld Byte …\n"
-
-#~ msgid "INFO: Spooling LPR job, %.0f%% complete...\n"
-#~ msgstr "INFO: LPR-Druckauftrag aufzeichnen, %.0f %% abgeschlossen …\n"
-
-#~ msgid ""
-#~ "INFO: Unable to contact printer, queuing on next printer in class...\n"
-#~ msgstr ""
-#~ "INFO: Verbindung zum Drucker nicht möglich; an den nächsten Drucker der "
-#~ "Klasse senden …\n"
-
-#~ msgid "INFO: Using default AppleTalk zone \"%s\"\n"
-#~ msgstr "INFO: Standard-AppleTalk-Zone „%s“ verwenden\n"
-
-#~ msgid "INFO: Waiting for job to complete...\n"
-#~ msgstr "INFO: Warten, bis der Druckauftrag agbeschlossen ist …\n"
-
-#~ msgid "INFO: Waiting for printer to become available...\n"
-#~ msgstr "INFO: Warten, bis der Drucker verfügbar ist …\n"
-
-#~ msgid "ISO B0"
-#~ msgstr "ISO B0"
-
-#~ msgid "ISO B1"
-#~ msgstr "ISO B1"
-
-#~ msgid "ISO B10"
-#~ msgstr "ISO B10"
-
-#~ msgid "ISO B2"
-#~ msgstr "ISO B2"
-
-#~ msgid "ISO B3"
-#~ msgstr "ISO B3"
-
-#~ msgid "ISO B4"
-#~ msgstr "ISO B4"
-
-#~ msgid "ISO B4 Envelope"
-#~ msgstr "ISO B4 Umschlag"
-
-#~ msgid "ISO B5"
-#~ msgstr "ISO B5"
-
-#~ msgid "ISO B5 (Oversize)"
-#~ msgstr "ISO B5 (Übergröße)"
-
-#~ msgid "ISO B5 Envelope"
-#~ msgstr "ISO B5 Umschlag"
-
-#~ msgid "ISO B6"
-#~ msgstr "ISO B6"
-
-#~ msgid "ISO B6 Envelope"
-#~ msgstr "ISO B6 Umschlag"
-
-#~ msgid "ISO B7"
-#~ msgstr "ISO B7"
-
-#~ msgid "ISO B8"
-#~ msgstr "ISO B8"
-
-#~ msgid "ISO B9"
-#~ msgstr "ISO B9"
-
-#~ msgid "Ink/toner almost empty."
-#~ msgstr "Tinte/Toner fast leer."
-
-#~ msgid "Ink/toner empty!"
-#~ msgstr "Tinte/Toner leer!"
-
-#~ msgid "Ink/toner waste bin almost full."
-#~ msgstr "Tinten/Toner-Abfallbehälter fast voll."
-
-#~ msgid "Ink/toner waste bin full!"
-#~ msgstr "Tinten/Toner-Abfallbehälter voll!"
-
-#~ msgid "Interlock open."
-#~ msgstr "Die Verriegelung ist offen."
-
-#~ msgid "Invite Envelope"
-#~ msgstr "Einladung Umschlag"
-
-#~ msgid "Italian Envelope"
-#~ msgstr "Italienisch Umschlag"
-
-#~ msgid "Job #%d cannot be restarted - no files!"
-#~ msgstr ""
-#~ "Druckauftrag  Nr. %d kann nicht neu gestartet werden – keine Dateien "
-#~ "vorhanden!"
-
-#~ msgid "Job #%d does not exist!"
-#~ msgstr "Druckauftrag Nr. %d existiert nicht!"
-
-#~ msgid "Job #%d is finished and cannot be altered!"
-#~ msgstr ""
-#~ "Druckauftrag Nr. %d ist abgeschlossen und kann nicht geändert werden!"
-
-#~ msgid "Job #%d is not complete!"
-#~ msgstr "Druckauftrag Nr. %d ist nicht abgeschlossen!"
-
-#~ msgid "Job #%d is not held for authentication!"
-#~ msgstr "Druckauftrag Nr. %d benötigt keine Authentifizierung!"
-
-#~ msgid "Job #%d is not held!"
-#~ msgstr "Druckauftrag Nr. %d wird nicht gehalten!"
-
-#~ msgid "Job #%s does not exist!"
-#~ msgstr "Druckauftrag Nr. %s existiert nicht!"
-
-#~ msgid "Job %d not found!"
-#~ msgstr "Druckauftrag %d wurde nicht gefunden!"
-
-#~ msgid "Job subscriptions cannot be renewed!"
-#~ msgstr "Druckauftrags-Subskription kann nicht erneuert werden."
-
-#~ msgid "Kaku2 Envelope"
-#~ msgstr "Kaku2 Umschlag"
-
-#~ msgid "Kaku3 Envelope"
-#~ msgstr "Kaku3 Umschlag"
-
-#~ msgid "Language \"%s\" not supported!"
-#~ msgstr "Sprache „%s“ nicht unterstützt!"
-
-#~ msgid "Media jam!"
-#~ msgstr "Papierstau im Medienfach!"
-
-#~ msgid "Media tray almost empty."
-#~ msgstr "Das Medienfach ist fast leer."
-
-#~ msgid "Media tray empty!"
-#~ msgstr "Das Medienfach ist leer!"
-
-#~ msgid "Media tray missing!"
-#~ msgstr "Das Medienfach fehlt!"
-
-#~ msgid "Media tray needs to be filled."
-#~ msgstr "Das Medienfach muss aufgefüllt werden."
-
-#~ msgid "Missing document-number attribute!"
-#~ msgstr "Attribut „document-number“ fehlt!"
-
-#~ msgid "Missing double quote on line %d!"
-#~ msgstr "Doppeltes Anführungszeichen in Zeile %d fehlt!"
-
-#~ msgid "Missing form variable!"
-#~ msgstr "Formvariable fehlt!"
-
-#~ msgid "Missing notify-subscription-ids attribute!"
-#~ msgstr "Attribut „notify-subscription-ids“ fehlt!"
-
-#~ msgid "Missing requesting-user-name attribute!"
-#~ msgstr "Attribut „requesting-user-name“ fehlt!"
-
-#~ msgid "Missing required attributes!"
-#~ msgstr "Benötigte Attribute fehlen!"
-
-#~ msgid "Missing value on line %d!"
-#~ msgstr "Wert in Zeile %d fehlt!"
-
-#~ msgid ""
-#~ "Model:  name = %s\n"
-#~ "        natural_language = %s\n"
-#~ "        make-and-model = %s\n"
-#~ "        device-id = %s\n"
-#~ msgstr ""
-#~ "Modell:  Name = %s\n"
-#~ "        Standardsprache = %s\n"
-#~ "        Hersteller und Modell = %s\n"
-#~ "        Geräte-ID = %s\n"
-
-#~ msgid "Monarch"
-#~ msgstr "Monarch"
-
-#~ msgid "Monarch Envelope"
-#~ msgstr "US Monarch Umschlag"
-
-#~ msgid "NOTICE: Print file accepted - job ID %d.\n"
-#~ msgstr "NOTICE: Druckdatei akzeptiert – Druckauftrags-ID %d.\n"
-
-#~ msgid "NOTICE: Print file accepted - job ID unknown.\n"
-#~ msgstr "NOTICE: Druckdatei akzeptiert – Druckauftrags-ID unbekannt.\n"
-
-#~ msgid "No PPD name!"
-#~ msgstr "Kein PPD-Name!"
-
-#~ msgid "No Windows printer drivers are installed!"
-#~ msgstr "Es sind keine Windows-Druckertreiber installiert!"
-
-#~ msgid "No active jobs on %s!"
-#~ msgstr "Keine aktiven Druckaufträge auf %s!"
-
-#~ msgid "No attributes in request!"
-#~ msgstr "Keine Attribute abgerufen!"
-
-#~ msgid "No authentication information provided!"
-#~ msgstr "Keine Authentifizierungs-Informationen übergeben!"
-
-#~ msgid "No default printer"
-#~ msgstr "Kein Standarddrucker"
-
-#~ msgid "No file!?!"
-#~ msgstr "Keine Datei!?!"
-
-#~ msgid "No modification time!"
-#~ msgstr "Kein Änderungsdatum!"
-
-#~ msgid "No printer name!"
-#~ msgstr "Kein Druckername!"
-
-#~ msgid "No printer-uri found for class!"
-#~ msgstr "Keine Drucker-URI gefunden für Klasse!"
-
-#~ msgid "No printer-uri found!"
-#~ msgstr "Keine Drucker-URI gefunden!"
-
-#~ msgid "No printer-uri in request!"
-#~ msgstr "Keine Drucker-URI abgerufen!"
-
-#~ msgid "No subscription attributes in request!"
-#~ msgstr "Keine Subskriptionsattribute abgerufen!"
-
-#~ msgid "OPC almost at end-of-life."
-#~ msgstr "Die Bildtrommel (OPC) muss bald ausgetauscht werden."
-
-#~ msgid "OPC at end-of-life!"
-#~ msgstr "Die Bildtrommel (OPC) muss ausgetauscht werden!"
-
-#~ msgid "Out of toner!"
-#~ msgstr "Der Toner ist leer!"
-
-#~ msgid "Output bin almost full."
-#~ msgstr "Das Ausgabefach ist fast voll."
-
-#~ msgid "Output bin full!"
-#~ msgstr "Das Ausgabefach ist voll!"
-
-#~ msgid "Output for printer %s is sent to %s\n"
-#~ msgstr "Ausgabe für Drucker „%s“ wird an „%s“ gesendet\n"
-
-#~ msgid "Output for printer %s is sent to remote printer %s on %s\n"
-#~ msgstr ""
-#~ "Ausgabe für Drucker „%s“ wird an den entfernten Drucker „%s“ auf „%s“ "
-#~ "gesendet\n"
-
-#~ msgid "Output for printer %s/%s is sent to %s\n"
-#~ msgstr "Ausgabe für Drucker „%s/%s“ wird an „%s“ gesendet\n"
-
-#~ msgid "Output for printer %s/%s is sent to remote printer %s on %s\n"
-#~ msgstr ""
-#~ "Ausgabe für Drucker „%s/%s“ wird an den entfernten Drucker „%s“ auf „%s“ "
-#~ "gesendet\n"
-
-#~ msgid "Output tray missing!"
-#~ msgstr "Das Ausgabefach fehlt!"
-
-#~ msgid "PASS\n"
-#~ msgstr "PASS\n"
-
-#~ msgid "PRC1 Envelope"
-#~ msgstr "PRC1 Umschlag"
-
-#~ msgid "PRC10 Envelope"
-#~ msgstr "PRC10 Umschlag"
-
-#~ msgid "PRC2 Envelope"
-#~ msgstr "PRC2 Umschlag"
-
-#~ msgid "PRC3 Envelope"
-#~ msgstr "PRC3 Umschlag"
-
-#~ msgid "PRC32K (Oversize)"
-#~ msgstr "PRC32K (Übergröße)"
-
-#~ msgid "PRC4 Envelope"
-#~ msgstr "PRC4 Umschlag"
-
-#~ msgid "PRC5 Envelope"
-#~ msgstr "PRC5 Umschlag"
-
-#~ msgid "PRC6 Envelope"
-#~ msgstr "PRC6 Umschlag"
-
-#~ msgid "PRC7 Envelope"
-#~ msgstr "PRC7 Umschlag"
-
-#~ msgid "PRC8 Envelope"
-#~ msgstr "PRC8 Umschlag"
-
-#~ msgid "PRC9 Envelope"
-#~ msgstr "PRC9 Umschlag"
-
-#~ msgid "Personal Envelope"
-#~ msgstr "Persönlicher Umschlag"
-
-#~ msgid "Printer offline."
-#~ msgstr "Der Drucker ist offline."
-
-#~ msgid "Rank    Owner   Job     File(s)                         Total Size\n"
-#~ msgstr ""
-#~ "Rang    Eigentümer   Druckauftrag     Datei(en)                         "
-#~ "Gesamtgröße\n"
-
-#~ msgid ""
-#~ "Rank   Owner      Pri  Job        Files                       Total Size\n"
-#~ msgstr ""
-#~ "Rang   Eigentümer      Druckauftrag        Dateien                       "
-#~ "Gesamtgröße\n"
-
-#~ msgid "Running command: %s %s -N -A %s -c '%s'\n"
-#~ msgstr "Befehl ausführen: %s %s -N -A %s -c '%s'\n"
-
-#~ msgid "SCSI Printer"
-#~ msgstr "SCSI-Drucker"
-
-#~ msgid "Tabloid (Oversize)"
-#~ msgstr "US Tabloid (Übergröße)"
-
-#~ msgid "The notify-user-data value is too large (%d > 63 octets)!"
-#~ msgstr "Der Wert für „notify-user-data“ ist zu groß (%d > 63 Oktetts)!"
-
-#~ msgid "The printer or class is not shared!"
-#~ msgstr "Der Drucker oder die Klasse sind nicht freigegeben!"
-
-#~ msgid "The printer or class was not found."
-#~ msgstr "Der Drucker oder die Klasse wurden nicht gefunden!"
-
-#~ msgid "The printer-uri attribute is required!"
-#~ msgstr "Das Drucker-URI-Attribut wird benötigt!"
-
-#~ msgid "Toner low."
-#~ msgstr "Wenig Toner."
-
-#~ msgid "Too many job-sheets values (%d > 2)!"
-#~ msgstr "Zu viele job-sheets-Werte (%d > 2)!"
-
-#~ msgid "Too many printer-state-reasons values (%d > %d)!"
-#~ msgstr "Zu viele printer-state-reasons-Werte (%d > %d)!"
-
-#~ msgid "US Executive"
-#~ msgstr "US Executive"
-
-#~ msgid "US Fanfold"
-#~ msgstr "US Endlospapier"
-
-#~ msgid "US Legal (Oversize)"
-#~ msgstr "US Lang (Übergröße)"
-
-#~ msgid "US Letter (Oversize)"
-#~ msgstr "US Brief (Übergröße)"
-
-#~ msgid "US Letter (Small)"
-#~ msgstr "US Brief (klein)"
-
-#~ msgid "Unable to add job for destination \"%s\"!"
-#~ msgstr "Druckauftrag für das Ziel „%s“ konnte nicht hinzugefügt werden!"
-
-#~ msgid "Unable to allocate memory for file types!"
-#~ msgstr "Der Speicher für die Dateitypen konnte nicht zugeordnet werden."
-
-#~ msgid "Unable to copy 64-bit CUPS printer driver files (%d)!"
-#~ msgstr ""
-#~ "64-Bit CUPS-Druckertreiberdateien konnten nicht kopiert werden (%d)!"
-
-#~ msgid "Unable to copy 64-bit Windows printer driver files (%d)!"
-#~ msgstr ""
-#~ "64-Bit Windows-Druckertreiberdateien konnten nicht kopiert werden (%d)!"
-
-#~ msgid "Unable to copy CUPS printer driver files (%d)!"
-#~ msgstr "CUPS-Druckertreiberdateien konnten nicht kopiert werden (%d)!"
-
-#~ msgid "Unable to copy PPD file - %s!"
-#~ msgstr "PPD-Datei konnte nicht kopiert werden – %s!"
-
-#~ msgid "Unable to copy PPD file!"
-#~ msgstr "PPD-Datei konnte nicht kopiert werden!"
-
-#~ msgid "Unable to copy Windows 2000 printer driver files (%d)!"
-#~ msgstr ""
-#~ "Windows 2000 Druckertreiberdateien konnten nicht kopiert werden (%d)!"
-
-#~ msgid "Unable to copy Windows 9x printer driver files (%d)!"
-#~ msgstr "Windows 9x Druckertreiberdateien konnten nicht kopiert werden (%d)!"
-
-#~ msgid "Unable to copy interface script - %s!"
-#~ msgstr "Schnittstellenskript konnte nicht kopiert werden – %s!"
-
-#~ msgid "Unable to create printer-uri!"
-#~ msgstr "Drucker-URI konnte nicht erstellt werden!"
-
-#~ msgid "Unable to edit cupsd.conf files larger than 1MB!"
-#~ msgstr ""
-#~ "„cupsd.conf“-Dateien größer als 1 MB können nicht bearbeitet werden!"
-
-#~ msgid "Unable to find destination for job!"
-#~ msgstr "Ziel für den Druckauftrag konnte nicht gefunden werden!"
-
-#~ msgid "Unable to find printer!\n"
-#~ msgstr "Drucker konnte nicht gefunden werden!\n"
-
-#~ msgid "Unable to install Windows 2000 printer driver files (%d)!"
-#~ msgstr ""
-#~ "Windows 2000 Druckertreiberdateien konnten nicht installiert werden (%d)!"
-
-#~ msgid "Unable to install Windows 9x printer driver files (%d)!"
-#~ msgstr ""
-#~ "Windows 9x Druckertreiberdateien konnten nicht installiert werden (%d)!"
-
-#~ msgid "Unable to open document %d in job %d!"
-#~ msgstr ""
-#~ "Das Dokument „%d“ in Druckauftrag „%d“ konnte nicht geöffnet werden!"
-
-#~ msgid "Unable to run \"%s\": %s\n"
-#~ msgstr "„%s“ konnte nicht ausgeführt werden: %s\n"
-
-#~ msgid "Unable to send command to printer driver!"
-#~ msgstr "Befehl konnte nicht an den Druckertreiber gesendet werden!"
-
-#~ msgid "Unable to set Windows printer driver (%d)!"
-#~ msgstr "Windows-Druckertreiber konnte nicht festgelegt werden (%d)!"
-
-#~ msgid "Unable to use legacy USB class driver!\n"
-#~ msgstr "Alte USB-Klasse-Treiber konnten nicht verwendet werden!\n"
-
-#~ msgid "Unknown printer error (%s)!"
-#~ msgstr "Unbekannter Druckerfehler (%s)!"
-
-#~ msgid "Unsupported character set \"%s\"!"
-#~ msgstr "Zeichensatz „%s“ nicht unterstützt!"
-
-#~ msgid "Unsupported compression \"%s\"!"
-#~ msgstr "Komprimierung „%s“ nicht unterstützt!"
-
-#~ msgid "Unsupported compression attribute %s!"
-#~ msgstr "Komprimierungsattribut „%s“ nicht unterstützt!"
-
-#~ msgid "Unsupported format \"%s\"!"
-#~ msgstr "Format „%s“ nicht unterstützt!"
-
-#~ msgid "Unsupported format '%s'!"
-#~ msgstr "Format „%s“ nicht unterstützt!"
-
-#~ msgid "Unsupported format '%s/%s'!"
-#~ msgstr "Format „%s/%s“ nicht unterstützt!"
-
-#~ msgid ""
-#~ "Usage:\n"
-#~ "\n"
-#~ "    lpadmin [-h server] -d destination\n"
-#~ "    lpadmin [-h server] -x destination\n"
-#~ "    lpadmin [-h server] -p printer [-c add-class] [-i interface] [-m "
-#~ "model]\n"
-#~ "                       [-r remove-class] [-v device] [-D description]\n"
-#~ "                       [-P ppd-file] [-o name=value]\n"
-#~ "                       [-u allow:user,user] [-u deny:user,user]\n"
-#~ "\n"
-#~ msgstr ""
-#~ "Usage:\n"
-#~ "\n"
-#~ "    lpadmin [-h server] -d destination\n"
-#~ "    lpadmin [-h server] -x destination\n"
-#~ "    lpadmin [-h server] -p printer [-c add-class] [-i interface] [-m "
-#~ "model]\n"
-#~ "                       [-r remove-class] [-v device] [-D description]\n"
-#~ "                       [-P ppd-file] [-o name=value]\n"
-#~ "                       [-u allow:user,user] [-u deny:user,user]\n"
-#~ "\n"
-
-#~ msgid "Usage: %s job user title copies options [filename]\n"
-#~ msgstr "Usage: %s job user title copies options [filename]\n"
-
-#~ msgid "Usage: %s job-id user title copies options [file]\n"
-#~ msgstr "Usage: %s job-id user title copies options [file]\n"
-
-#~ msgid "Usage: %s job-id user title copies options file\n"
-#~ msgstr "Usage: %s job-id user title copies options file\n"
-
-#~ msgid ""
-#~ "Usage: convert [ options ]\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ "  -f filename          Set file to be converted (otherwise stdin)\n"
-#~ "  -o filename          Set file to be generated (otherwise stdout)\n"
-#~ "  -i mime/type         Set input MIME type (otherwise auto-typed)\n"
-#~ "  -j mime/type         Set output MIME type (otherwise application/pdf)\n"
-#~ "  -P filename.ppd      Set PPD file\n"
-#~ "  -a 'name=value ...'  Set option(s)\n"
-#~ "  -U username          Set username for job\n"
-#~ "  -J title             Set title\n"
-#~ "  -c copies            Set number of copies\n"
-#~ "  -u                   Remove the PPD file when finished\n"
-#~ "  -D                   Remove the input file when finished\n"
-#~ msgstr ""
-#~ "Usage: convert [ options ]\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ "  -f filename          Set file to be converted (otherwise stdin)\n"
-#~ "  -o filename          Set file to be generated (otherwise stdout)\n"
-#~ "  -i mime/type         Set input MIME type (otherwise auto-typed)\n"
-#~ "  -j mime/type         Set output MIME type (otherwise application/pdf)\n"
-#~ "  -P filename.ppd      Set PPD file\n"
-#~ "  -a 'name=value ...'  Set option(s)\n"
-#~ "  -U username          Set username for job\n"
-#~ "  -J title             Set title\n"
-#~ "  -c copies            Set number of copies\n"
-#~ "  -u                   Remove the PPD file when finished\n"
-#~ "  -D                   Remove the input file when finished\n"
-
-#~ msgid ""
-#~ "Usage: cupsaddsmb [options] printer1 ... printerN\n"
-#~ "       cupsaddsmb [options] -a\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "  -E               Encrypt the connection to the server\n"
-#~ "  -H samba-server  Use the named SAMBA server\n"
-#~ "  -U samba-user    Authenticate using the named SAMBA user\n"
-#~ "  -a               Export all printers\n"
-#~ "  -h cups-server   Use the named CUPS server\n"
-#~ "  -v               Be verbose (show commands)\n"
-#~ msgstr ""
-#~ "Usage: cupsaddsmb [options] printer1 ... printerN\n"
-#~ "       cupsaddsmb [options] -a\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "  -E               Encrypt the connection to the server\n"
-#~ "  -H samba-server  Use the named SAMBA server\n"
-#~ "  -U samba-user    Authenticate using the named SAMBA user\n"
-#~ "  -a               Export all printers\n"
-#~ "  -h cups-server   Use the named CUPS server\n"
-#~ "  -v               Be verbose (show commands)\n"
-
-#~ msgid ""
-#~ "Usage: cupsctl [options] [param=value ... paramN=valueN]\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ "    -E                      Enable encryption\n"
-#~ "    -U username             Specify username\n"
-#~ "    -h server[:port]        Specify server address\n"
-#~ "\n"
-#~ "    --[no-]debug-logging    Turn debug logging on/off\n"
-#~ "    --[no-]remote-admin     Turn remote administration on/off\n"
-#~ "    --[no-]remote-any       Allow/prevent access from the Internet\n"
-#~ "    --[no-]remote-printers  Show/hide remote printers\n"
-#~ "    --[no-]share-printers   Turn printer sharing on/off\n"
-#~ "    --[no-]user-cancel-any  Allow/prevent users to cancel any job\n"
-#~ msgstr ""
-#~ "Usage: cupsctl [options] [param=value ... paramN=valueN]\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ "    -E                      Enable encryption\n"
-#~ "    -U username             Specify username\n"
-#~ "    -h server[:port]        Specify server address\n"
-#~ "\n"
-#~ "    --[no-]debug-logging    Turn debug logging on/off\n"
-#~ "    --[no-]remote-admin     Turn remote administration on/off\n"
-#~ "    --[no-]remote-any       Allow/prevent access from the Internet\n"
-#~ "    --[no-]remote-printers  Show/hide remote printers\n"
-#~ "    --[no-]share-printers   Turn printer sharing on/off\n"
-#~ "    --[no-]user-cancel-any  Allow/prevent users to cancel any job\n"
-
-#~ msgid ""
-#~ "Usage: cupsd [-c config-file] [-f] [-F] [-h] [-l]\n"
-#~ "\n"
-#~ "-c config-file      Load alternate configuration file\n"
-#~ "-f                  Run in the foreground\n"
-#~ "-F                  Run in the foreground but detach\n"
-#~ "-h                  Show this usage message\n"
-#~ "-l                  Run cupsd from launchd(8)\n"
-#~ msgstr ""
-#~ "Usage: cupsd [-c config-file] [-f] [-F] [-h] [-l]\n"
-#~ "\n"
-#~ "-c config-file      Load alternate configuration file\n"
-#~ "-f                  Run in the foreground\n"
-#~ "-F                  Run in the foreground but detach\n"
-#~ "-h                  Show this usage message\n"
-#~ "-l                  Run cupsd from launchd(8)\n"
-
-#~ msgid ""
-#~ "Usage: cupsfilter -m mime/type [ options ] filename\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ "  -c cupsd.conf    Set cupsd.conf file to use\n"
-#~ "  -j job-id[,N]    Filter file N from the specified job (default is file "
-#~ "1)\n"
-#~ "  -n copies        Set number of copies\n"
-#~ "  -o name=value    Set option(s)\n"
-#~ "  -p filename.ppd  Set PPD file\n"
-#~ "  -t title         Set title\n"
-#~ msgstr ""
-#~ "Usage: cupsfilter -m mime/type [ options ] filename\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ "  -c cupsd.conf    Set cupsd.conf file to use\n"
-#~ "  -j job-id[,N]    Filter file N from the specified job (default is file "
-#~ "1)\n"
-#~ "  -n copies        Set number of copies\n"
-#~ "  -o name=value    Set option(s)\n"
-#~ "  -p filename.ppd  Set PPD file\n"
-#~ "  -t title         Set title\n"
-
-#~ msgid ""
-#~ "Usage: cupstestdsc [options] filename.ps [... filename.ps]\n"
-#~ "       cupstestdsc [options] -\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ "    -h       Show program usage\n"
-#~ "\n"
-#~ "    Note: this program only validates the DSC comments, not the "
-#~ "PostScript itself.\n"
-#~ msgstr ""
-#~ "Usage: cupstestdsc [options] filename.ps [... filename.ps]\n"
-#~ "       cupstestdsc [options] -\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ "    -h       Show program usage\n"
-#~ "\n"
-#~ "    Note: this program only validates the DSC comments, not the "
-#~ "PostScript itself.\n"
-
-#~ msgid ""
-#~ "Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]\n"
-#~ "       program | cupstestppd [options] -\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ "    -R root-directory    Set alternate root\n"
-#~ "    -W {all,none,constraints,defaults,duplex,filters,translations}\n"
-#~ "                         Issue warnings instead of errors\n"
-#~ "    -q                   Run silently\n"
-#~ "    -r                   Use 'relaxed' open mode\n"
-#~ "    -v                   Be slightly verbose\n"
-#~ "    -vv                  Be very verbose\n"
-#~ msgstr ""
-#~ "Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]\n"
-#~ "       program | cupstestppd [options] -\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ "    -R root-directory    Set alternate root\n"
-#~ "    -W {all,none,constraints,defaults,duplex,filters,translations}\n"
-#~ "                         Issue warnings instead of errors\n"
-#~ "    -q                   Run silently\n"
-#~ "    -r                   Use 'relaxed' open mode\n"
-#~ "    -v                   Be slightly verbose\n"
-#~ "    -vv                  Be very verbose\n"
-
-#~ msgid "Usage: lpmove job/src dest\n"
-#~ msgstr "Usage: lpmove job/src dest\n"
-
-#~ msgid ""
-#~ "Usage: lpoptions [-h server] [-E] -d printer\n"
-#~ "       lpoptions [-h server] [-E] [-p printer] -l\n"
-#~ "       lpoptions [-h server] [-E] -p printer -o option[=value] ...\n"
-#~ "       lpoptions [-h server] [-E] -x printer\n"
-#~ msgstr ""
-#~ "Usage: lpoptions [-h server] [-E] -d printer\n"
-#~ "       lpoptions [-h server] [-E] [-p printer] -l\n"
-#~ "       lpoptions [-h server] [-E] -p printer -o option[=value] ...\n"
-#~ "       lpoptions [-h server] [-E] -x printer\n"
-
-#~ msgid "Usage: lppasswd [-g groupname]\n"
-#~ msgstr "Usage: lppasswd [-g groupname]\n"
-
-#~ msgid ""
-#~ "Usage: lppasswd [-g groupname] [username]\n"
-#~ "       lppasswd [-g groupname] -a [username]\n"
-#~ "       lppasswd [-g groupname] -x [username]\n"
-#~ msgstr ""
-#~ "Usage: lppasswd [-g groupname] [username]\n"
-#~ "       lppasswd [-g groupname] -a [username]\n"
-#~ "       lppasswd [-g groupname] -x [username]\n"
-
-#~ msgid ""
-#~ "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
-#~ msgstr ""
-#~ "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
-
-#~ msgid ""
-#~ "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]\n"
-#~ "Options:\n"
-#~ "  -D name=value        Set named variable to value.\n"
-#~ "  -I include-dir       Add include directory to search path.\n"
-#~ "  -c catalog.po        Load the specified message catalog.\n"
-#~ "  -d output-dir        Specify the output directory.\n"
-#~ "  -l lang[,lang,...]   Specify the output language(s) (locale).\n"
-#~ "  -m                   Use the ModelName value as the filename.\n"
-#~ "  -t                   Test PPDs instead of generating them.\n"
-#~ "  -v                   Be verbose (more v's for more verbosity).\n"
-#~ "  -z                   Compress PPD files using GNU zip.\n"
-#~ "  --cr                 End lines with CR (Mac OS 9).\n"
-#~ "  --crlf               End lines with CR + LF (Windows).\n"
-#~ "  --lf                 End lines with LF (UNIX/Linux/Mac OS X).\n"
-#~ msgstr ""
-#~ "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]\n"
-#~ "Options:\n"
-#~ "  -D name=value        Set named variable to value.\n"
-#~ "  -I include-dir       Add include directory to search path.\n"
-#~ "  -c catalog.po        Load the specified message catalog.\n"
-#~ "  -d output-dir        Specify the output directory.\n"
-#~ "  -l lang[,lang,...]   Specify the output language(s) (locale).\n"
-#~ "  -m                   Use the ModelName value as the filename.\n"
-#~ "  -t                   Test PPDs instead of generating them.\n"
-#~ "  -v                   Be verbose (more v's for more verbosity).\n"
-#~ "  -z                   Compress PPD files using GNU zip.\n"
-#~ "  --cr                 End lines with CR (Mac OS 9).\n"
-#~ "  --crlf               End lines with CR + LF (Windows).\n"
-#~ "  --lf                 End lines with LF (UNIX/Linux/Mac OS X).\n"
-
-#~ msgid ""
-#~ "Usage: ppdhtml [options] filename.drv >filename.html\n"
-#~ "  -D name=value        Set named variable to value.\n"
-#~ "Options:\n"
-#~ "  -I include-dir    Add include directory to search path.\n"
-#~ msgstr ""
-#~ "Usage: ppdhtml [options] filename.drv >filename.html\n"
-#~ "  -D name=value        Set named variable to value.\n"
-#~ "Options:\n"
-#~ "  -I include-dir    Add include directory to search path.\n"
-
-#~ msgid ""
-#~ "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]\n"
-#~ "Options:\n"
-#~ "  -I include-dir\n"
-#~ "  -o filename.drv\n"
-#~ msgstr ""
-#~ "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]\n"
-#~ "Options:\n"
-#~ "  -I include-dir\n"
-#~ "  -o filename.drv\n"
-
-#~ msgid ""
-#~ "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]\n"
-#~ "Options:\n"
-#~ "  -o filename.ppd[.gz]\n"
-#~ msgstr ""
-#~ "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]\n"
-#~ "Options:\n"
-#~ "  -o filename.ppd[.gz]\n"
-
-#~ msgid ""
-#~ "Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]\n"
-#~ "Options:\n"
-#~ "  -D name=value        Set named variable to value.\n"
-#~ "  -I include-dir    Add include directory to search path.\n"
-#~ "  -v                Be verbose (more v's for more verbosity).\n"
-#~ msgstr ""
-#~ "Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]\n"
-#~ "Options:\n"
-#~ "  -D name=value        Set named variable to value.\n"
-#~ "  -I include-dir    Add include directory to search path.\n"
-#~ "  -v                Be verbose (more v's for more verbosity).\n"
-
-#~ msgid "Usage: snmp [host-or-ip-address]\n"
-#~ msgstr "Usage: snmp [host-or-ip-address]\n"
-
-#~ msgid "WARNING: Adding only the first %d printers found"
-#~ msgstr "WARNING: Nur die ersten %d gefundenen Drucker werden hinzugefügt"
-
-#~ msgid "WARNING: Boolean expected for waiteof option \"%s\"\n"
-#~ msgstr "WARNING: Boolscher Wert erwartet für waiteof-Option „%s“\n"
-
-#~ msgid "WARNING: Failed to read side-channel request!\n"
-#~ msgstr "WARNING: Lesen der Side-Channel-Anfrage fehlgeschlagen!\n"
-
-#~ msgid "WARNING: Option \"%s\" cannot be included via IncludeFeature!\n"
-#~ msgstr ""
-#~ "WARNING: Option „%s“ kann nicht mithilfe von „IncludeFeature“ "
-#~ "eingeschlossen werden!\n"
-
-#~ msgid "WARNING: Printer not responding\n"
-#~ msgstr "WARNING: Drucker reagiert nicht\n"
-
-#~ msgid "WARNING: Printer sent unexpected EOF\n"
-#~ msgstr "WARNING: Drucker sendete unerwartet EOF\n"
-
-#~ msgid ""
-#~ "WARNING: Remote host did not respond with command status byte after %d "
-#~ "seconds!\n"
-#~ msgstr ""
-#~ "WARNING: Entfernter Host hat nicht mit dem Befehlstatusbyte geantwortet "
-#~ "nach %d Sekunden!\n"
-
-#~ msgid ""
-#~ "WARNING: Remote host did not respond with control status byte after %d "
-#~ "seconds!\n"
-#~ msgstr ""
-#~ "WARNING: Entfernter Host hat nicht mit dem Steuerungsstatusbyte "
-#~ "geantwortet nach %d Sekunden!\n"
-
-#~ msgid ""
-#~ "WARNING: Remote host did not respond with data status byte after %d "
-#~ "seconds!\n"
-#~ msgstr ""
-#~ "WARNING: Entfernter Host hat nicht mit dem Datenstatusbyte geantwortet "
-#~ "nach %d Sekunden!\n"
-
-#~ msgid "WARNING: SCSI command timed out (%d); retrying...\n"
-#~ msgstr ""
-#~ "WARNING: Zeitüberschreitung bei SCSI-Befehl (%d); erneut versuchen …\n"
-
-#~ msgid ""
-#~ "WARNING: This document does not conform to the Adobe Document Structuring "
-#~ "Conventions and may not print correctly!\n"
-#~ msgstr ""
-#~ "WARNING: Dieses Dokument entspricht nicht den Dokumentstruktur-"
-#~ "Konventionen von Adobe und wird u. U. nicht korrekt gedruckt!\n"
-
-#~ msgid "WARNING: Unable to open \"%s:%s\": %s\n"
-#~ msgstr "WARNING: „%s:%s“ konnte nicht geöffnet werden: %s\n"
-
-#~ msgid "WARNING: Unable to send PAP status request"
-#~ msgstr "WARNING: PAP-Statusanfrage konnte nicht gesendet werden"
-
-#~ msgid "WARNING: Unexpected PAP packet of type %d\n"
-#~ msgstr "WARNING: Unerwartetes PAP-Paket des Typs „%d“\n"
-
-#~ msgid "WARNING: Unknown PAP packet of type %d\n"
-#~ msgstr "WARNING: Unbekanntes PAP-Paket des Typs „%d“\n"
-
-#~ msgid "WARNING: Unknown choice \"%s\" for option \"%s\"!\n"
-#~ msgstr "WARNING: Unbekannte Auswahl „%s“ für Option „%s“!\n"
-
-#~ msgid "WARNING: Unknown option \"%s\"!\n"
-#~ msgstr "WARNING: Unbekannte Option „%s“!\n"
-
-#~ msgid "WARNING: Unsupported baud rate %s!\n"
-#~ msgstr "WARNING: Baud-Rate „%s“ wird nicht unterstützt!\n"
-
-#~ msgid "WARNING: number expected for status option \"%s\"\n"
-#~ msgstr "WARNING: Zahlwert erwartet für Statusoption „%s“\n"
-
-#~ msgid ""
-#~ "WARNING: recoverable: Network host '%s' is busy; will retry in %d "
-#~ "seconds...\n"
-#~ msgstr ""
-#~ "WARNING: wiederherstellbar: Netzwerkhost „%s“ ist ausgelastet; erneuter "
-#~ "Versuch in %d Sekunden …\n"
-
-#~ msgid "Warning, no Windows 2000 printer drivers are installed!"
-#~ msgstr "Achtung: Es sind keine Windows 2000 Druckertreiber installiert!"
-
-#~ msgid "You4 Envelope"
-#~ msgstr "You4 Umschlag"
-
-#~ msgid "convert: Use the -f option to specify a file to convert.\n"
-#~ msgstr ""
-#~ "konvertieren: Mit der -f Option eine Datei zum Konvertieren festlegen.\n"
-
-#~ msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s\n"
-#~ msgstr "cupsaddsmb: keine PPD-Datei für Drucker „%s“ – %s\n"
-
-#~ msgid "cupsctl: Unable to connect to server: %s\n"
-#~ msgstr "cupsctl: Verbindungsaufbau zum Server fehlgeschlagen: %s\n"
-
-#~ msgid "cupsctl: Unknown option \"%s\"!\n"
-#~ msgstr "cupsctl: unbekannte Option „%s“!\n"
-
-#~ msgid "cupsctl: Unknown option \"-%c\"!\n"
-#~ msgstr "cupsctl: unbekannte Option „-%c“!\n"
-
-#~ msgid "cupsd: Expected config filename after \"-c\" option!\n"
-#~ msgstr "cupsd: „config filename“ erwartet nach '-c'-Option!\n"
-
-#~ msgid "cupsd: Unable to get current directory!\n"
-#~ msgstr "cupsd: Aktueller Ordner konnte nicht gefunden werden!\n"
-
-#~ msgid "cupsd: Unknown argument \"%s\" - aborting!\n"
-#~ msgstr "cupsd: unbekanntes Argument „%s“ – abbrechen!\n"
-
-#~ msgid "cupsd: Unknown option \"%c\" - aborting!\n"
-#~ msgstr "cupsd: unbekannte Option „%c“ – abbrechen!\n"
-
-#~ msgid "cupsd: launchd(8) support not compiled in, running in normal mode.\n"
-#~ msgstr ""
-#~ "cupsd: „launchd(8) support“ nicht übersetzt, in „normal mode“ ausführen.\n"
-
-#~ msgid "cupsfilter: Invalid document number %d!\n"
-#~ msgstr "cupsfilter: ungültige Dokumentnummer %d!\n"
-
-#~ msgid "cupsfilter: Invalid job ID %d!\n"
-#~ msgstr "cupsfilter: ungültige Druckauftrags-ID %d!\n"
-
-#~ msgid "cupsfilter: Only one filename can be specified!\n"
-#~ msgstr "cupsfilter: Nur ein Dateiname kann angegeben werden!\n"
-
-#~ msgid "cupsfilter: Unable to create temporary file: %s\n"
-#~ msgstr "cupsfilter: Temporäre Datei konnte nicht erstellt werden: %s\n"
-
-#~ msgid "cupsfilter: Unable to get job file - %s\n"
-#~ msgstr "cupsfilter: Druckauftragsdatei konnte nicht geladen werden – %s\n"
-
-#~ msgid "cupstestppd: The -q option is incompatible with the -v option.\n"
-#~ msgstr ""
-#~ "cupstestppd: '-q'-Option ist nicht kompatibel mit der '-v'-Option.\n"
-
-#~ msgid "cupstestppd: The -v option is incompatible with the -q option.\n"
-#~ msgstr ""
-#~ "cupstestppd: '-v'-Option ist nicht kompatibel mit der '-q'-Option.\n"
-
-#~ msgid "device for %s/%s: %s\n"
-#~ msgstr "Gerät für %s/%s: %s\n"
-
-#~ msgid "device for %s: %s\n"
-#~ msgstr "Gerät für %s: %s\n"
-
-#~ msgid "help\t\tget help on commands\n"
-#~ msgstr "help\t\tget help on commands\n"
-
-#~ msgid "job-printer-uri attribute missing!"
-#~ msgstr "job-printer-URI-Attribut fehlt!"
-
-#~ msgid "lpadmin: Class name can only contain printable characters!\n"
-#~ msgstr "lpadmin: Klassenname kann nur druckbare Zeichen enthalten!\n"
-
-#~ msgid "lpadmin: Expected PPD after '-P' option!\n"
-#~ msgstr "lpadmin: PPD erwartet nach '-P'-Option!\n"
-
-#~ msgid "lpadmin: Expected allow/deny:userlist after '-u' option!\n"
-#~ msgstr "lpadmin: „allow/deny:userlist“ erwartet nach '-u'-Option!\n"
-
-#~ msgid "lpadmin: Expected class after '-r' option!\n"
-#~ msgstr "lpadmin: Klasse erwartet nach '-r'-Option!\n"
-
-#~ msgid "lpadmin: Expected class name after '-c' option!\n"
-#~ msgstr "lpadmin: Klassenname erwartet nach '-c'-Option!\n"
-
-#~ msgid "lpadmin: Expected description after '-D' option!\n"
-#~ msgstr "lpadmin: Beschreibung erwartet nach '-D'-Option!\n"
-
-#~ msgid "lpadmin: Expected device URI after '-v' option!\n"
-#~ msgstr "lpadmin: Geräte-URI erwartet nach '-v'-Option!\n"
-
-#~ msgid "lpadmin: Expected file type(s) after '-I' option!\n"
-#~ msgstr "lpadmin: Dateityp(en) erwartet nach '-I'-Option!\n"
-
-#~ msgid "lpadmin: Expected hostname after '-h' option!\n"
-#~ msgstr "lpadmin: Hostname erwartet nach '-h'-Option!\n"
-
-#~ msgid "lpadmin: Expected interface after '-i' option!\n"
-#~ msgstr "lpadmin: Schnittstelle erwartet nach '-i'-Option!\n"
-
-#~ msgid "lpadmin: Expected location after '-L' option!\n"
-#~ msgstr "lpadmin: Standort erwartet nach '-L'-Option!\n"
-
-#~ msgid "lpadmin: Expected model after '-m' option!\n"
-#~ msgstr "lpadmin: Modell erwartet nach '-m'-Option!\n"
-
-#~ msgid "lpadmin: Expected name=value after '-o' option!\n"
-#~ msgstr "lpadmin: name=value erwartet nach '-o'-Option!\n"
-
-#~ msgid "lpadmin: Expected printer after '-p' option!\n"
-#~ msgstr "lpadmin: Drucker erwartet nach '-p'-Option!\n"
-
-#~ msgid "lpadmin: Expected printer name after '-d' option!\n"
-#~ msgstr "lpadmin: Druckername erwartet nach '-d'-Option!\n"
-
-#~ msgid "lpadmin: Expected printer or class after '-x' option!\n"
-#~ msgstr "lpadmin: Drucker oder Klasse erwartet nach '-x'-Option!\n"
-
-#~ msgid "lpadmin: No member names were seen!\n"
-#~ msgstr "lpadmin: Keine zugehörigen Namen gefunden!\n"
-
-#~ msgid "lpadmin: Printer %s is already a member of class %s.\n"
-#~ msgstr "lpadmin: Drucker „%s“ gehört bereits zur Klasse „%s“.\n"
-
-#~ msgid "lpadmin: Printer %s is not a member of class %s.\n"
-#~ msgstr "lpadmin: Drucker „%s“ gehört bereits zur Klasse „%s“.\n"
-
-#~ msgid "lpadmin: Printer name can only contain printable characters!\n"
-#~ msgstr "lpadmin: Druckername kann nur druckbare Zeichen enthalten!\n"
-
-#~ msgid ""
-#~ "lpadmin: Unable to add a printer to the class:\n"
-#~ "         You must specify a printer name first!\n"
-#~ msgstr ""
-#~ "lpadmin: Drucker konnte nicht zu der Klasse hinzugefügt werden:\n"
-#~ "         Legen Sie zuerst einen Druckernamen fest!\n"
-
-#~ msgid "lpadmin: Unable to connect to server: %s\n"
-#~ msgstr "lpadmin: Verbindungsaufbau zum Server fehlgeschlagen: %s\n"
-
-#~ msgid "lpadmin: Unable to create temporary file - %s\n"
-#~ msgstr "lpadmin: Temporäre Datei konnte nicht erstellt werden – %s\n"
-
-#~ msgid "lpadmin: Unable to create temporary file: %s\n"
-#~ msgstr "lpadmin: Temporäre Datei konnte nicht erstellt werden: %s\n"
-
-#~ msgid "lpadmin: Unable to open PPD file \"%s\" - %s\n"
-#~ msgstr "lpadmin: PPD-Datei „%s“ konnte nicht geöffnet werden – %s\n"
-
-#~ msgid "lpadmin: Unable to open file \"%s\": %s\n"
-#~ msgstr "lpadmin: Datei „%s“ konnte nicht geöffnet werden: %s\n"
-
-#~ msgid ""
-#~ "lpadmin: Unable to remove a printer from the class:\n"
-#~ "         You must specify a printer name first!\n"
-#~ msgstr ""
-#~ "lpadmin: Drucker konnte nicht aus der Klasse entfernt werden:\n"
-#~ "         Legen Sie zuerst einen Druckernamen fest!\n"
-
-#~ msgid ""
-#~ "lpadmin: Unable to set the PPD file:\n"
-#~ "         You must specify a printer name first!\n"
-#~ msgstr ""
-#~ "lpadmin: Die PPD-Datei konnte nicht festgelegt werden:\n"
-#~ "         Legen Sie zuerst einen Druckernamen fest!\n"
-
-#~ msgid ""
-#~ "lpadmin: Unable to set the device URI:\n"
-#~ "         You must specify a printer name first!\n"
-#~ msgstr ""
-#~ "lpadmin: Die Geräte-URI konnte nicht festgelegt werden:\n"
-#~ "         Legen Sie zuerst einen Druckernamen fest!\n"
-
-#~ msgid ""
-#~ "lpadmin: Unable to set the interface script or PPD file:\n"
-#~ "         You must specify a printer name first!\n"
-#~ msgstr ""
-#~ "lpadmin: Das Schnittstellenskript oder die PPD-Datei konnten nicht "
-#~ "festgelegt werden:\n"
-#~ "         Legen Sie zuerst einen Druckernamen fest!\n"
-
-#~ msgid ""
-#~ "lpadmin: Unable to set the interface script:\n"
-#~ "         You must specify a printer name first!\n"
-#~ msgstr ""
-#~ "lpadmin: Das Schnittstellenskript konnte nicht festgelegt werden:\n"
-#~ "         Legen Sie zuerst einen Druckernamen fest!\n"
-
-#~ msgid ""
-#~ "lpadmin: Unable to set the printer description:\n"
-#~ "         You must specify a printer name first!\n"
-#~ msgstr ""
-#~ "lpadmin: Die Druckerbeschreibung konnte nicht festgelegt werden:\n"
-#~ "         Legen Sie zuerst einen Druckernamen fest!\n"
-
-#~ msgid ""
-#~ "lpadmin: Unable to set the printer location:\n"
-#~ "         You must specify a printer name first!\n"
-#~ msgstr ""
-#~ "lpadmin: Der Druckerstandort konnte nicht festgelegt werden:\n"
-#~ "         Legen Sie zuerst einen Druckernamen fest!\n"
-
-#~ msgid ""
-#~ "lpadmin: Unable to set the printer options:\n"
-#~ "         You must specify a printer name first!\n"
-#~ msgstr ""
-#~ "lpadmin: Die Druckeroptionen konnten nicht festgelegt werden:\n"
-#~ "         Legen Sie zuerst einen Druckernamen fest!\n"
-
-#~ msgid "lpadmin: Unknown allow/deny option \"%s\"!\n"
-#~ msgstr "lpadmin: unbekannte allow/deny-Option „%s“!\n"
-
-#~ msgid "lpadmin: Unknown argument '%s'!\n"
-#~ msgstr "lpadmin: unbekanntes Argument „%s“!\n"
-
-#~ msgid "lpadmin: Unknown option '%c'!\n"
-#~ msgstr "lpadmin: unbekannte Option '%c'!\n"
-
-#~ msgid "lpadmin: Warning - content type list ignored!\n"
-#~ msgstr "lpadmin: Achtung – Inhaltstypliste ignoriert!\n"
-
-#~ msgid "lpinfo: Expected 1284 device ID string after --device-id!\n"
-#~ msgstr "lpinfo: 1284 Geräte-ID String erwartet nach „--device-id“!\n"
-
-#~ msgid "lpinfo: Expected language after --language!\n"
-#~ msgstr "lpinfo: Sprache erwartet nach „--language“!\n"
-
-#~ msgid "lpinfo: Expected make and model after --make-and-model!\n"
-#~ msgstr "lpinfo: Hersteller und Modell erwartet nach „--make-and-model“!\n"
-
-#~ msgid "lpinfo: Expected product string after --product!\n"
-#~ msgstr "lpinfo: Produktstring erwartet nach „--product“!\n"
-
-#~ msgid "lpinfo: Expected scheme list after --exclude-schemes!\n"
-#~ msgstr "lpinfo: Schemaliste erwartet nach „--exclude-schemes“!\n"
-
-#~ msgid "lpinfo: Expected scheme list after --include-schemes!\n"
-#~ msgstr "lpinfo: Schemaliste erwartet nach „--include-schemes“!\n"
-
-#~ msgid "lpinfo: Expected timeout after --timeout!\n"
-#~ msgstr "lpinfo: Zeitüberschreitung erwartet nach „--timeout“!\n"
-
-#~ msgid "lpinfo: Unknown argument '%s'!\n"
-#~ msgstr "lpinfo: unbekanntes Argument „%s“!\n"
-
-#~ msgid "lpinfo: Unknown option '%c'!\n"
-#~ msgstr "lpinfo: unbekannte Option '%c'!\n"
-
-#~ msgid "lpinfo: Unknown option '%s'!\n"
-#~ msgstr "lpinfo: unbekannte Option '%s'!\n"
-
-#~ msgid "lpmove: Unable to connect to server: %s\n"
-#~ msgstr "lpmove: Verbindungsaufbau zum Server fehlgeschlagen: %s\n"
-
-#~ msgid "lpmove: Unknown argument '%s'!\n"
-#~ msgstr "lpmove: unbekanntes Argument „%s“!\n"
-
-#~ msgid "lpmove: Unknown option '%c'!\n"
-#~ msgstr "lpmove: unbekannte Option '%c'!\n"
-
-#~ msgid "lpoptions: No printers!?!\n"
-#~ msgstr "lpoptions: Keine Drucker!?!\n"
-
-#~ msgid "lpoptions: Unable to add printer or instance: %s\n"
-#~ msgstr ""
-#~ "lpoptions: Drucker oder Instanz konnten nicht hinzugefügt werden: %s\n"
-
-#~ msgid "lpoptions: Unable to get PPD file for %s: %s\n"
-#~ msgstr "lpoptions: PPD-Datei für „%s“ konnte nicht geladen werden: %s\n"
-
-#~ msgid "lpoptions: Unable to open PPD file for %s!\n"
-#~ msgstr "lpoptions: PPD-Datei für „%s“ konnte nicht geöffnet werden!\n"
-
-#~ msgid "lpoptions: Unknown printer or class!\n"
-#~ msgstr "lpoptions: Drucker oder Klasse unbekannt!\n"
-
-#~ msgid "lppasswd: Only root can add or delete passwords!\n"
-#~ msgstr "lppasswd: Nur „root“ kann Kennwörter hinzufügen und löschen!\n"
-
-#~ msgid "lppasswd: Password file busy!\n"
-#~ msgstr "lppasswd: Kennwortdatei wird gerade verwendet!\n"
-
-#~ msgid "lppasswd: Password file not updated!\n"
-#~ msgstr "lppasswd: Kennwortdatei ist nicht aktualisiert!\n"
-
-#~ msgid "lppasswd: Sorry, password doesn't match!\n"
-#~ msgstr "lppasswd: Kennwörter stimmen nicht überein!\n"
-
-#~ msgid ""
-#~ "lppasswd: Sorry, password rejected.\n"
-#~ "Your password must be at least 6 characters long, cannot contain\n"
-#~ "your username, and must contain at least one letter and number.\n"
-#~ msgstr ""
-#~ "lppasswd: Kennwort abgelehnt.\n"
-#~ "Das Kennwort muss mindestens 6 Zeichen lang sein, darf nicht Ihren "
-#~ "Benutzernamen enthalten und muss mindestens einen Buchstaben und eine "
-#~ "Zahl enthalten.\n"
-
-#~ msgid "lppasswd: Sorry, passwords don't match!\n"
-#~ msgstr "lppasswd: Kennwörter stimmen nicht überein!\n"
-
-#~ msgid "lppasswd: Unable to copy password string: %s\n"
-#~ msgstr "lppasswd: Kennwortstring konnte nicht kopiert werden: %s\n"
-
-#~ msgid "lppasswd: Unable to open password file: %s\n"
-#~ msgstr "lppasswd: Kennwortdatei konnte nicht geöffnet werden: %s\n"
-
-#~ msgid "lppasswd: Unable to write to password file: %s\n"
-#~ msgstr ""
-#~ "lppasswd: In die Kennwortdatei konnte nicht geschrieben werden: %s\n"
-
-#~ msgid "lppasswd: failed to backup old password file: %s\n"
-#~ msgstr "lppasswd: Sichern der alten Kennwortdatei fehlgeschlagen: %s\n"
-
-#~ msgid "lppasswd: failed to rename password file: %s\n"
-#~ msgstr "lppasswd: Kennwortdatei konnte nicht umbenannt werden: %s\n"
-
-#~ msgid "lppasswd: user \"%s\" and group \"%s\" do not exist.\n"
-#~ msgstr "lppasswd: Benutzer „%s“ und Gruppe „%s“ existieren nicht.\n"
-
-#~ msgid ""
-#~ "lpstat: error - %s environment variable names non-existent destination \"%"
-#~ "s\"!\n"
-#~ msgstr ""
-#~ "lpstat: Fehler – %s Umgebungsvariablennamen nicht vorhanden für Ziel „%"
-#~ "s“!\n"
-
-#~ msgid "members of class %s:\n"
-#~ msgstr "gehört zu Klasse „%s“:\n"
-
-#~ msgid "no entries\n"
-#~ msgstr "keine Einträge\n"
-
-#~ msgid "no system default destination\n"
-#~ msgstr "kein System-Standardzielort\n"
-
-#~ msgid "notify-events not specified!"
-#~ msgstr "„notify-events“ nicht festgelegt!"
-
-#~ msgid "notify-recipient-uri URI \"%s\" is already used!"
-#~ msgstr "notify-recipient-uri URI „%s“ wird bereits verwendet!"
-
-#~ msgid "notify-recipient-uri URI \"%s\" uses unknown scheme!"
-#~ msgstr "notify-recipient-uri URI „%s“ verwendet unbekanntes Schema!"
-
-#~ msgid "notify-subscription-id %d no good!"
-#~ msgstr "notify-subscription-id „%d“ ist ungültig!"
-
-#~ msgid "ppdc: Adding include directory \"%s\"...\n"
-#~ msgstr "ppdc: Ordner „%s“ hinzufügen …\n"
-
-#~ msgid "ppdc: Adding/updating UI text from %s...\n"
-#~ msgstr "ppdc: UI-Text von „%s“ hinzufügen/aktualisieren …\n"
-
-#~ msgid "ppdc: Bad boolean value (%s) on line %d of %s.\n"
-#~ msgstr "ppdc: Ungültiger Boolscher Wert (%s) in Zeile %d von %s.\n"
-
-#~ msgid "ppdc: Bad resolution name \"%s\" on line %d of %s!\n"
-#~ msgstr "ppdc: Ungültiger aufzulösender Name „%s“ in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Bad status keyword %s on line %d of %s!\n"
-#~ msgstr "ppdc: Ungültiges Status-Keyword „%s“ in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Bad variable substitution ($%c) on line %d of %s.\n"
-#~ msgstr "ppdc: Ungültige Variablenersetzung ($%c) in Zeile %d von %s.\n"
-
-#~ msgid "ppdc: Choice found on line %d of %s with no Option!\n"
-#~ msgstr "ppdc: Auswahl in Zeile %d von %s gefunden ohne Option!\n"
-
-#~ msgid "ppdc: Duplicate #po for locale %s on line %d of %s!\n"
-#~ msgstr "ppdc: Duplikat #po für Locale „%s“ in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected a filter definition on line %d of %s!\n"
-#~ msgstr "ppdc: Filterdefinition erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected a program name on line %d of %s!\n"
-#~ msgstr "ppdc: Programmname erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected boolean value on line %d of %s.\n"
-#~ msgstr "ppdc: Boolschen Wert erwartet in Zeile %d von %s.\n"
-
-#~ msgid "ppdc: Expected charset after Font on line %d of %s!\n"
-#~ msgstr "ppdc: Zeichensatz nach Schrift erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected choice code on line %d of %s.\n"
-#~ msgstr "ppdc: Auswahlcode erwartet in Zeile %d von %s.\n"
-
-#~ msgid "ppdc: Expected choice name/text on line %d of %s.\n"
-#~ msgstr "ppdc: Auswahlname/-text erwartet in Zeile %d von %s.\n"
-
-#~ msgid "ppdc: Expected color order for ColorModel on line %d of %s!\n"
-#~ msgstr "ppdc: Farbreihenfolge für ColorModel erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected colorspace for ColorModel on line %d of %s!\n"
-#~ msgstr "ppdc: Farbraum für ColorModel erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected compression for ColorModel on line %d of %s!\n"
-#~ msgstr "ppdc: Komprimierung für ColorModel erwartet in Zeile %d von %s!\n"
-
-#~ msgid ""
-#~ "ppdc: Expected constraints string for UIConstraints on line %d of %s!\n"
-#~ msgstr ""
-#~ "ppdc: Constraints String für UIConstraints erwartet in Zeile %d von %s!\n"
-
-#~ msgid ""
-#~ "ppdc: Expected driver type keyword following DriverType on line %d of %"
-#~ "s!\n"
-#~ msgstr ""
-#~ "ppdc: Treibertyp-Keyword nach DriverType erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected duplex type after Duplex on line %d of %s!\n"
-#~ msgstr "ppdc: Duplextyp nach Duplex erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected encoding after Font on line %d of %s!\n"
-#~ msgstr "ppdc: Codierung nach Schrift erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected filename after #po %s on line %d of %s!\n"
-#~ msgstr "ppdc: Dateiname nach #po %s erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected group name/text on line %d of %s!\n"
-#~ msgstr "ppdc: Gruppenname/-text erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected include filename on line %d of %s!\n"
-#~ msgstr "ppdc: „include filename“ erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected integer on line %d of %s!\n"
-#~ msgstr "ppdc: „integer“ erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected locale after #po on line %d of %s!\n"
-#~ msgstr "ppdc: Locale nach #po erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected name after %s on line %d of %s!\n"
-#~ msgstr "ppdc: Name nach „%s“ erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected name after FileName on line %d of %s!\n"
-#~ msgstr "ppdc: Name nach FileName erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected name after Font on line %d of %s!\n"
-#~ msgstr "ppdc: Name nach Font erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected name after Manufacturer on line %d of %s!\n"
-#~ msgstr "ppdc: Name nach Manufacturer erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected name after MediaSize on line %d of %s!\n"
-#~ msgstr "ppdc: Name nach MediaSize erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected name after ModelName on line %d of %s!\n"
-#~ msgstr "ppdc: Name nach ModelName erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected name after PCFileName on line %d of %s!\n"
-#~ msgstr "ppdc: Name nach PCFileName erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected name/text after %s on line %d of %s!\n"
-#~ msgstr "ppdc: Name/Text nach „%s“ erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected name/text after Installable on line %d of %s!\n"
-#~ msgstr "ppdc: Name/Text nach Installable erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected name/text after Resolution on line %d of %s!\n"
-#~ msgstr "ppdc: Name/Text nach Resolution erwartet in Zeile %d von %s!\n"
-
-#~ msgid ""
-#~ "ppdc: Expected name/text combination for ColorModel on line %d of %s!\n"
-#~ msgstr ""
-#~ "ppdc: Kombination aus Name/Text für ColorModel erwartet in Zeile %d von %"
-#~ "s!\n"
-
-#~ msgid "ppdc: Expected option name/text on line %d of %s!\n"
-#~ msgstr "ppdc: Optionsname/-text erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected option section on line %d of %s!\n"
-#~ msgstr "ppdc: „option section“ erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected option type on line %d of %s!\n"
-#~ msgstr "ppdc: „option type“ erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected override field after Resolution on line %d of %s!\n"
-#~ msgstr ""
-#~ "ppdc: „override field“ nach Resolution erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected real number on line %d of %s!\n"
-#~ msgstr "ppdc: „real number“ erwartet in Zeile %d von %s!\n"
-
-#~ msgid ""
-#~ "ppdc: Expected resolution/mediatype following ColorProfile on line %d of %"
-#~ "s!\n"
-#~ msgstr ""
-#~ "ppdc: „resolution/mediatype“ nach ColorProfile erwartet in Zeile %d von %"
-#~ "s!\n"
-
-#~ msgid ""
-#~ "ppdc: Expected resolution/mediatype following SimpleColorProfile on line %"
-#~ "d of %s!\n"
-#~ msgstr ""
-#~ "ppdc: „resolution/mediatype“ nach SimpleColorProfile erwartet in Zeile %d "
-#~ "von %s!\n"
-
-#~ msgid "ppdc: Expected selector after %s on line %d of %s!\n"
-#~ msgstr "ppdc: „selector“ nach „%s“ erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected status after Font on line %d of %s!\n"
-#~ msgstr "ppdc: Status nach Font erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected string after Copyright on line %d of %s!\n"
-#~ msgstr "ppdc: „string“ nach Copyright erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected string after Version on line %d of %s!\n"
-#~ msgstr "ppdc: „string“ nach Version erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected two option names on line %d of %s!\n"
-#~ msgstr "ppdc: Zwei Optionsnamen erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected value after %s on line %d of %s!\n"
-#~ msgstr "ppdc: „value“ nach „%s“ erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected version after Font on line %d of %s!\n"
-#~ msgstr "ppdc: Version nach Font erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Invalid #include/#po filename \"%s\"!\n"
-#~ msgstr "ppdc: ungültiger #include/#po Dateiname „%s“!\n"
-
-#~ msgid "ppdc: Invalid cost for filter on line %d of %s!\n"
-#~ msgstr "ppdc: Ungültiges „cost“ für Filter in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Invalid empty MIME type for filter on line %d of %s!\n"
-#~ msgstr "ppdc: Ungültiger leerer MIME-Typ für Filter in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Invalid empty program name for filter on line %d of %s!\n"
-#~ msgstr ""
-#~ "ppdc: Ungültiger leerer Programmname für Filter in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Invalid option section \"%s\" on line %d of %s!\n"
-#~ msgstr "ppdc: Ungültiger Optionsabschnitt „%s“ in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Invalid option type \"%s\" on line %d of %s!\n"
-#~ msgstr "ppdc: Ungültiger Optionstyp „%s“ in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Loading driver information file \"%s\"...\n"
-#~ msgstr "ppdc: Treiberinfodatei „%s“ laden …\n"
-
-#~ msgid "ppdc: Loading messages for locale \"%s\"...\n"
-#~ msgstr "ppdc: Meldungen für Locale „%s“ laden …\n"
-
-#~ msgid "ppdc: Loading messages from \"%s\"...\n"
-#~ msgstr "ppdc: Meldungen von „%s“ laden …\n"
-
-#~ msgid "ppdc: Missing #endif at end of \"%s\"!\n"
-#~ msgstr "ppdc: #endif fehlt am Ende von „%s“!\n"
-
-#~ msgid "ppdc: Missing #if on line %d of %s!\n"
-#~ msgstr "ppdc: #if fehlt in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: No message catalog provided for locale %s!\n"
-#~ msgstr "ppdc: Kein Message-Catalog verfügbar für Locale „%s“!\n"
-
-#~ msgid "ppdc: Option %s redefined with a different type on line %d of %s!\n"
-#~ msgstr ""
-#~ "ppdc: Option „%s“ neu definiert durch anderen Typ in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Option constraint must *name on line %d of %s!\n"
-#~ msgstr "ppdc: Option „constraint must *name“ in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Too many nested #if's on line %d of %s!\n"
-#~ msgstr "ppdc: Zu viele verschachtelte #if in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Unable to create PPD file \"%s\" - %s.\n"
-#~ msgstr "ppdc: PPD-Datei „%s“ konnte nicht erstellt werden – %s.\n"
-
-#~ msgid "ppdc: Unable to create output directory %s: %s\n"
-#~ msgstr "ppdc: Ausgabeordner „%s“ konnte nicht erstellt werden: %s\n"
-
-#~ msgid "ppdc: Unable to create output pipes: %s\n"
-#~ msgstr "ppdc: Ausgabekanäle konnten nicht erstellt werden: %s\n"
-
-#~ msgid "ppdc: Unable to execute cupstestppd: %s\n"
-#~ msgstr "ppdc: cupstestppd konnte nicht ausgeführt werden: %s\n"
-
-#~ msgid "ppdc: Unable to find #po file %s on line %d of %s!\n"
-#~ msgstr "ppdc: #po-Datei „%s“ wurde nicht gefunden in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Unable to find include file \"%s\" on line %d of %s!\n"
-#~ msgstr "ppdc: include-Datei „%s“ wurde nicht gefunden in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Unable to find localization for \"%s\" - %s\n"
-#~ msgstr "ppdc: Lokalisierung für „%s“ wurde nicht gefunden – %s\n"
-
-#~ msgid "ppdc: Unable to load localization file \"%s\" - %s\n"
-#~ msgstr "ppdc: Lokalisierungsdatei „%s“ konnte nicht geladen werden – %s\n"
-
-#~ msgid "ppdc: Undefined variable (%s) on line %d of %s.\n"
-#~ msgstr "ppdc: Nicht defnierte Variable (%s) in Zeile %d von %s.\n"
-
-#~ msgid "ppdc: Unknown driver type %s on line %d of %s!\n"
-#~ msgstr "ppdc: Unbekannter Treibertyp „%s“ in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Unknown duplex type \"%s\" on line %d of %s!\n"
-#~ msgstr "ppdc: Unbekannter Duplextyp „%s“ in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Unknown media size \"%s\" on line %d of %s!\n"
-#~ msgstr "ppdc: Unbekannte Mediengröße „%s“ in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Unknown token \"%s\" seen on line %d of %s!\n"
-#~ msgstr "ppdc: Unbekannter Token „%s“ gefunden in Zeile %d von %s!\n"
-
-#~ msgid ""
-#~ "ppdc: Unknown trailing characters in real number \"%s\" on line %d of %"
-#~ "s!\n"
-#~ msgstr ""
-#~ "ppdc: Unbekannte nachfolgende Zeichen in Real Number „%s“ in Zeile %d von "
-#~ "%s!\n"
-
-#~ msgid "ppdc: Unterminated string starting with %c on line %d of %s!\n"
-#~ msgstr "ppdc: Unvollständiger String beginnend mit %c in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Writing %s...\n"
-#~ msgstr "ppdc: %s schreiben …\n"
-
-#~ msgid "ppdc: Writing PPD files to directory \"%s\"...\n"
-#~ msgstr "ppdc: PPD-Dateien schreiben in Ordner „%s“ …\n"
-
-#~ msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s!\n"
-#~ msgstr "ppdmerge: Ungültige LanguageVersion „%s“ in %s!\n"
-
-#~ msgid "ppdmerge: Ignoring PPD file %s...\n"
-#~ msgstr "ppdmerge: PPD-Datei „%s“ ignorieren …\n"
-
-#~ msgid "ppdmerge: Unable to backup %s to %s- %s\n"
-#~ msgstr "ppdmerge: Backup von „%s“ auf %s fehlgeschlagen – %s\n"
-
-#~ msgid "printer %s disabled since %s -\n"
-#~ msgstr "Drucker „%s“ deaktiviert seit %s -\n"
-
-#~ msgid "printer %s is idle.  enabled since %s\n"
-#~ msgstr "Drucker „%s“ ist inaktiv; aktiviert seit %s\n"
-
-#~ msgid "printer %s now printing %s-%d.  enabled since %s\n"
-#~ msgstr "Drucker „%s“ druckt gerade %s–%d; aktiviert seit %s\n"
-
-#~ msgid "printer %s/%s disabled since %s -\n"
-#~ msgstr "Drucker „%s/%s“ deaktiviert seit %s -\n"
-
-#~ msgid "printer %s/%s is idle.  enabled since %s\n"
-#~ msgstr "Drucker „%s/%s“ ist inaktiv; aktiviert seit %s\n"
-
-#~ msgid "printer %s/%s now printing %s-%d.  enabled since %s\n"
-#~ msgstr "Drucker „%s/%s“ druckt gerade %s–%d; aktiviert seit %s\n"
-
-#~ msgid "request id is %s-%d (%d file(s))\n"
-#~ msgstr "Anfrage-ID ist %s–%d (%d Datei(en))\n"
-
-#~ msgid "scheduler is not running\n"
-#~ msgstr "Scheduler ist nicht aktiv\n"
-
-#~ msgid "scheduler is running\n"
-#~ msgstr "Scheduler ist aktiv\n"
-
-#~ msgid "status\t\tshow status of daemon and queue\n"
-#~ msgstr "Status\t\tStatus für Daemon und Warteliste anzeigen\n"
-
-#~ msgid "system default destination: %s\n"
-#~ msgstr "System-Standardzielort: %s\n"
-
-#~ msgid "system default destination: %s/%s\n"
-#~ msgstr "System-Standardzielort: %s/%s\n"
index 6ed3795c0df1c8e66133f2b5eaa41627de940486..461553c9abb205a7ed22be00b79430d4b2363bee 100644 (file)
@@ -16,7 +16,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 1.6\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2014-05-09 13:32-0700\n"
+"POT-Creation-Date: 2014-06-26 14:29-0400\n"
 "PO-Revision-Date: 2012-07-01 20:21+0100\n"
 "Last-Translator: Juan Pablo González Riopedre <riopedre13@yahoo.es>\n"
 "Language-Team: Spanish\n"
@@ -974,6 +974,9 @@ msgstr ""
 msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
 msgstr "  --lf                    Finalizar líneas con LF (UNIX/Linux/OS X)."
 
+msgid "  --list-filters          List filters that will be used."
+msgstr ""
+
 msgid "  --local                 True if service is local."
 msgstr ""
 
@@ -1171,8 +1174,8 @@ msgstr ""
 msgid "  -l                      List attributes."
 msgstr ""
 
-msgid "  -l                      Run cupsd from launchd(8)."
-msgstr "  -l                      Ejecuta cupsd desde launchd(8)."
+msgid "  -l                      Run cupsd on demand."
+msgstr ""
 
 msgid "  -l lang[,lang,...]      Specify the output language(s) (locale)."
 msgstr ""
@@ -1512,14 +1515,38 @@ msgid ""
 "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 2911 section 4.1.6)."
 msgstr ""
 
-#, 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 ""
+
+#, c-format
+msgid "%g x %g"
+msgstr ""
+
+#, c-format
+msgid "%s (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s (%s, %s)"
+msgstr ""
+
+#, c-format
+msgid "%s (Borderless)"
+msgstr ""
+
+#, c-format
+msgid "%s (Borderless, %s)"
+msgstr ""
+
+#, c-format
+msgid "%s (Borderless, %s, %s)"
+msgstr ""
+
 #, c-format
 msgid "%s accepting requests since %s"
 msgstr "%s aceptando peticiones desde %s"
@@ -1751,6 +1778,10 @@ msgstr "%s: Nombre de destino no válido en la lista \"%s\"."
 msgid "%s: Invalid filter string \"%s\"."
 msgstr "%s: Cadena de filtro \"%s\" no válida."
 
+#, c-format
+msgid "%s: Missing filename for \"-P\"."
+msgstr ""
+
 #, c-format
 msgid "%s: Missing timeout for \"-T\"."
 msgstr ""
@@ -1788,6 +1819,10 @@ msgstr "%s: No se ha podido contactar con el servidor."
 msgid "%s: Unable to determine MIME type of \"%s\"."
 msgstr "%s: No se ha podido determinar el tipo MIME de \"%s\"."
 
+#, c-format
+msgid "%s: Unable to open \"%s\": %s"
+msgstr ""
+
 #, c-format
 msgid "%s: Unable to open %s: %s"
 msgstr "%s: No se pudo abrir %s: %s"
@@ -2668,6 +2703,9 @@ msgstr "Número de versión SNMP incorrecto"
 msgid "Bad UIConstraints"
 msgstr "UIConstraints incorrecto"
 
+msgid "Bad arguments to function"
+msgstr ""
+
 #, c-format
 msgid "Bad copies value %d."
 msgstr "Valor de copias %d incorrecto."
@@ -2694,6 +2732,9 @@ msgstr "document-format-default \"%s\" incorrecto."
 msgid "Bad filename buffer"
 msgstr "Nombre de archivo del búfer incorrecto"
 
+msgid "Bad hostname/address in URI"
+msgstr ""
+
 #, c-format
 msgid "Bad job-name value: %s"
 msgstr ""
@@ -2738,17 +2779,20 @@ msgstr "Opción + preferencia incorrectas en línea %d."
 msgid "Bad page-ranges values %d-%d."
 msgstr "Valores de page-ranges %d-%d incorrectos."
 
+msgid "Bad port number in URI"
+msgstr ""
+
 #, c-format
 msgid "Bad port-monitor \"%s\"."
 msgstr "port-monitor \"%s\" incorrecto."
 
-msgid "Bad printer URI."
-msgstr "URI de impresora incorrecto."
-
 #, c-format
 msgid "Bad printer-state value %d."
 msgstr "Valor printer-state %d incorrecto."
 
+msgid "Bad printer-uri."
+msgstr ""
+
 #, c-format
 msgid "Bad request ID %d."
 msgstr "Petición incorrecta de ID %d."
@@ -2757,12 +2801,24 @@ msgstr "Petición incorrecta de ID %d."
 msgid "Bad request version number %d.%d."
 msgstr "Petición incorrecta de número de versión %d.%d."
 
+msgid "Bad resource in URI"
+msgstr ""
+
+msgid "Bad scheme in URI"
+msgstr ""
+
 msgid "Bad subscription ID"
 msgstr "ID de subscripción incorrecto"
 
+msgid "Bad username in URI"
+msgstr ""
+
 msgid "Bad value string"
 msgstr "Cadena de valores incorrecta"
 
+msgid "Bad/empty URI"
+msgstr ""
+
 msgid "Banners"
 msgstr "Rótulos"
 
@@ -2782,6 +2838,9 @@ msgstr "CMYK"
 msgid "CPCL Label Printer"
 msgstr "Impresora de etiquetas CPCL"
 
+msgid "Cancel Jobs"
+msgstr ""
+
 msgid "Cancel RSS Subscription"
 msgstr "Cancelar subscripción RSS"
 
@@ -2950,6 +3009,9 @@ msgstr "Editar archivo de configuración"
 msgid "Empty PPD file."
 msgstr "Archivo PPD vacío."
 
+msgid "Encryption is not supported."
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet after the print job.
 msgid "Ending Banner"
 msgstr "Rótulo final"
@@ -2957,15 +3019,6 @@ msgstr "Rótulo final"
 msgid "English"
 msgstr "Spanish"
 
-msgid "Enter old password:"
-msgstr "Introduzca la contraseña antigua:"
-
-msgid "Enter password again:"
-msgstr "Introduzca nuevamente la contraseña:"
-
-msgid "Enter password:"
-msgstr "Introduzca la contraseña:"
-
 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 "
@@ -3537,6 +3590,9 @@ msgstr "Línea más larga que el máximo permitido (255 caracteres)"
 msgid "List Available Printers"
 msgstr "Listar impresoras disponibles"
 
+msgid "Load paper."
+msgstr ""
+
 msgid "Long-Edge (Portrait)"
 msgstr "Lado largo (retrato)"
 
@@ -3604,6 +3660,12 @@ msgstr "Falta el atributo requesting-user-name."
 msgid "Missing required attributes."
 msgstr "Faltan atributos necesarios."
 
+msgid "Missing resource in URI"
+msgstr ""
+
+msgid "Missing scheme in URI"
+msgstr ""
+
 #, c-format
 msgid "Missing value on line %d."
 msgstr "Falta un valor en la línea %d."
@@ -3740,6 +3802,12 @@ msgstr "No se encontró printer-uri para la clase"
 msgid "No printer-uri in request."
 msgstr "No hay printer-uri en la petición."
 
+msgid "No request URI."
+msgstr ""
+
+msgid "No request protocol version."
+msgstr ""
+
 msgid "No request sent."
 msgstr ""
 
@@ -3838,23 +3906,14 @@ msgstr "Sin memoria."
 msgid "Output Mode"
 msgstr "Modo de salida"
 
-#, c-format
-msgid "Output for printer %s is sent to %s"
-msgstr "La salida de la impresora %s se ha enviado a %s"
-
-#, c-format
-msgid "Output for printer %s is sent to remote printer %s on %s"
+msgid "Output bin is almost full."
 msgstr ""
-"La salida de la impresora %s se ha enviado a la impresora remota %s en %s"
 
-#, c-format
-msgid "Output for printer %s/%s is sent to %s"
-msgstr "La salida de la impresora %s/%s se ha enviado a %s"
+msgid "Output bin is full."
+msgstr ""
 
-#, c-format
-msgid "Output for printer %s/%s is sent to remote printer %s on %s"
+msgid "Output bin is missing."
 msgstr ""
-"La salida de la impresora %s/%s se ha enviado a la impresora remota %s en %s"
 
 msgid "PASS"
 msgstr "PASA"
@@ -3886,6 +3945,18 @@ 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 jam."
+msgstr ""
+
+msgid "Paper tray is almost empty."
+msgstr ""
+
+msgid "Paper tray is empty."
+msgstr ""
+
+msgid "Paper tray is missing."
+msgstr ""
+
 msgid "ParamCustominCutInterval"
 msgstr "ParamCustominCutInterval"
 
@@ -4012,11 +4083,8 @@ msgid "Printers"
 msgstr "Impresoras"
 
 #, c-format
-msgid "Printing page %d, %d%% complete."
-msgstr "Imprimiendo página %d, %d%% completado."
-
-msgid "Purge Jobs"
-msgstr "Purgar trabajos"
+msgid "Printing page %d, %u%% complete."
+msgstr ""
 
 msgid "Quarto"
 msgstr "Quarto"
@@ -4027,12 +4095,6 @@ 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"
 
-#. TRANSLATORS: Pri is job priority.
-msgid ""
-"Rank   Owner      Pri  Job        Files                       Total Size"
-msgstr ""
-"Rango  Propiet.   Pri  Trabajo    Archivos                    Tamaño total"
-
 msgid "Reject Jobs"
 msgstr "Rechazar trabajos"
 
@@ -4093,6 +4155,9 @@ msgstr "Servidor iniciado"
 msgid "Server Stopped"
 msgstr "Servidor parado"
 
+msgid "Server credentials not set."
+msgstr ""
+
 msgid "Service Unavailable"
 msgstr "Servicio no disponible"
 
@@ -4248,27 +4313,6 @@ msgstr "El fotoconductor óptico necesita ser cambiado."
 msgid "The optical photoconductor will need to be replaced soon."
 msgstr "El fotoconductor óptico necesitará ser cambiado pronto."
 
-msgid "The output bin is almost full."
-msgstr "Recipiente de salida casi lleno"
-
-msgid "The output bin is full."
-msgstr "Bandeja de salida llena."
-
-msgid "The output bin is missing."
-msgstr "Falta la bandeja de salida."
-
-msgid "The paper tray is almost empty."
-msgstr "Bandeja de papel casi vacía."
-
-msgid "The paper tray is empty."
-msgstr "Bandeja de papel vacía."
-
-msgid "The paper tray is missing."
-msgstr "Falta la bandeja de papel."
-
-msgid "The paper tray needs to be filled."
-msgstr "Hay que poner papel en la bandeja."
-
 msgid "The printer configuration is incorrect or the printer no longer exists."
 msgstr ""
 
@@ -4278,6 +4322,12 @@ msgstr "La impresora no respondió."
 msgid "The printer is in use."
 msgstr "La impresora está en uso."
 
+msgid "The printer is low on ink."
+msgstr ""
+
+msgid "The printer is low on toner."
+msgstr ""
+
 msgid "The printer is not connected."
 msgstr "La impresora no está conectada."
 
@@ -4293,12 +4343,6 @@ msgstr "La impresora está ahora en línea."
 msgid "The printer is offline."
 msgstr "La impresora está fuera de línea."
 
-msgid "The printer is running low on ink."
-msgstr "La impresora está funcionando con poca tinta."
-
-msgid "The printer is running low on toner."
-msgstr "La impresora está funcionando con poco toner."
-
 msgid "The printer is unreachable at this time."
 msgstr "La impresora es inalcanzable en este momento."
 
@@ -4379,9 +4423,6 @@ msgstr "No se admite el uso del valor which-jobs \"%s\"."
 msgid "There are too many subscriptions."
 msgstr "Hay demasiadas subscripciones."
 
-msgid "There is a paper jam."
-msgstr "Hay un atasco de papel."
-
 msgid "There was an unrecoverable USB error."
 msgstr "Ha habido un error USB irrecuperable."
 
@@ -4420,6 +4461,9 @@ msgstr "Bandeja 4"
 msgid "URI Too Long"
 msgstr "URI demasiado largo"
 
+msgid "URI too large"
+msgstr ""
+
 msgid "US Ledger"
 msgstr "Libro Mayor, 17 x 11 pulg."
 
@@ -4553,6 +4597,9 @@ msgstr "No se ha podido copiar el script de interfaz - %s"
 msgid "Unable to create printer-uri"
 msgstr "No se ha podido crear printer-uri"
 
+msgid "Unable to create server credentials."
+msgstr ""
+
 msgid "Unable to create temporary file"
 msgstr "No se ha podido crear el archivo temporal"
 
@@ -4618,6 +4665,9 @@ msgstr "No se ha podido encontrar destino para el trabajo"
 msgid "Unable to find printer."
 msgstr "No se ha podido encontrar la impresora."
 
+msgid "Unable to find server credentials."
+msgstr ""
+
 msgid "Unable to get backend exit status."
 msgstr "No se ha podido obtener el estado de salida del programa backend"
 
@@ -4704,8 +4754,8 @@ msgstr "No se ha podido imprimir la página de prueba"
 msgid "Unable to read print data."
 msgstr "No se han podido leer los datos de impresión."
 
-msgid "Unable to resolve printer URI."
-msgstr "No se ha podido resolver el URI de la impresora."
+msgid "Unable to resolve printer-uri."
+msgstr ""
 
 #, c-format
 msgid "Unable to run \"%s\": %s"
@@ -4796,6 +4846,15 @@ msgstr "printer-error-policy \"%s\" incorrecto."
 msgid "Unknown printer-op-policy \"%s\"."
 msgstr "printer-op-policy \"%s\" incorrecto."
 
+msgid "Unknown request method."
+msgstr ""
+
+msgid "Unknown request version."
+msgstr ""
+
+msgid "Unknown scheme in URI"
+msgstr ""
+
 msgid "Unknown service name."
 msgstr "Nombre de servicio desconocido."
 
@@ -4898,8 +4957,8 @@ msgstr "Uso: cupsctl [opciones] [param=valor ... paramN=valorN]"
 msgid "Usage: cupsd [options]"
 msgstr "Uso: cupsd [opciones)"
 
-msgid "Usage: cupsfilter [ options ] filename"
-msgstr "Uso: cupsfilter ( opciones ) archivo"
+msgid "Usage: cupsfilter [ options ] [ -- ] filename"
+msgstr ""
 
 msgid "Usage: cupstestdsc [options] filename.ps [... filename.ps]"
 msgstr "Uso: cupstestdsc [opciones] nombre_archivo.ps [... nombre_archivo.ps]"
@@ -4941,18 +5000,6 @@ msgstr ""
 "     lpoptions [-h servidor] [-E] -p impresora -o opción[=valor] ...\n"
 "     lpoptions [-h servidor] [-E] -x impresora"
 
-msgid "Usage: lppasswd [-g groupname]"
-msgstr "Uso: lppasswd [-g nombre_grupo]"
-
-msgid ""
-"Usage: lppasswd [-g groupname] [username]\n"
-"       lppasswd [-g groupname] -a [username]\n"
-"       lppasswd [-g groupname] -x [username]"
-msgstr ""
-"Uso: lppasswd [-g nombre_grupo] [nombre_usuario]\n"
-"     lppasswd [-g nombre_grupo] -a [nombre_usuario]\n"
-"     lppasswd [-g nombre_grupo] -x [nombre_usuario]"
-
 msgid ""
 "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
 msgstr ""
@@ -5018,13 +5065,6 @@ msgstr ""
 "Debe acceder a esta página usando el 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."
-msgstr ""
-"Su contraseña debe tener al menos 6 caracteres, no puede contener su nombre "
-"de usuario, y debe tener al menos una letra y un número."
-
 msgid "ZPL Label Printer"
 msgstr "Impresora de etiquetas ZPL"
 
@@ -5073,6 +5113,9 @@ msgstr ""
 msgid "cupsd: Expected cups-files.conf filename after \"-s\" option."
 msgstr ""
 
+msgid "cupsd: On-demand support not compiled in, running in normal mode."
+msgstr ""
+
 msgid "cupsd: Relative cups-files.conf filename not allowed."
 msgstr ""
 
@@ -5090,11 +5133,6 @@ msgstr "cupsd: Argumento \"%s\" desconocido - cancelando."
 msgid "cupsd: Unknown option \"%c\" - aborting."
 msgstr "cupsd: Opción \"%c\" desconocida - cancelando."
 
-msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
-msgstr ""
-"cupsd: el uso de launchd(8) no ha sido compilado, ejecutándose en modo "
-"normal."
-
 #, c-format
 msgid "cupsfilter: Invalid document number %d."
 msgstr "cupsfilter: Número de documento %d no válido."
@@ -5215,8 +5253,8 @@ msgstr ""
 msgid "ippfind: Unknown variable \"{%s}\"."
 msgstr ""
 
-msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
-msgstr "ipptool: \"-i\" y \"-n\" son incompatibles with -X\"."
+msgid "ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"."
+msgstr ""
 
 #, c-format
 msgid "ipptool: Bad URI - %s."
@@ -5439,50 +5477,6 @@ msgstr "lpoptions: No se ha podido abrir el archivo PPD para %s."
 msgid "lpoptions: Unknown printer or class."
 msgstr "lpoptions: Impresora o clase desconocida."
 
-msgid "lppasswd: Only root can add or delete passwords."
-msgstr "lppasswd: Solo el usuario root puede añadir o borrar contraseñas."
-
-msgid "lppasswd: Password file busy."
-msgstr "lppasswd: Archivo de contraseñas ocupado."
-
-msgid "lppasswd: Password file not updated."
-msgstr "lppasswd: Archivo de contraseñas no actualizado."
-
-msgid "lppasswd: Sorry, password doesn't match."
-msgstr "lppasswd: Lo siento, la contraseña no coincide."
-
-msgid "lppasswd: Sorry, password rejected."
-msgstr "lppasswd: Lo siento, la contraseña ha sido rechazada."
-
-msgid "lppasswd: Sorry, passwords don't match."
-msgstr "lppasswd: Lo siento, las contraseñas no coinciden."
-
-#, c-format
-msgid "lppasswd: Unable to copy password string: %s"
-msgstr "lppasswd: No se ha podido copiar la cadena de contraseña: %s"
-
-#, c-format
-msgid "lppasswd: Unable to open password file: %s"
-msgstr "lppasswd: No se ha podido abrir el archivo de contraseñas: %s"
-
-#, c-format
-msgid "lppasswd: Unable to write to password file: %s"
-msgstr "lppasswd: No se ha podido escribir en el archivo de contraseñas: %s"
-
-#, c-format
-msgid "lppasswd: failed to backup old password file: %s"
-msgstr ""
-"lppasswd: falló al hacer una copia de seguridad del antiguo archivo de "
-"contraseñas: %s"
-
-#, c-format
-msgid "lppasswd: failed to rename password file: %s"
-msgstr "lppasswd: falló al cambiar de nombre al archivo de contraseñas: %s"
-
-#, c-format
-msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
-msgstr "lppasswd: el usuario \"%s\" y el grupo \"%s\" no existen."
-
 #, c-format
 msgid ""
 "lpstat: error - %s environment variable names non-existent destination \"%s"
@@ -5990,9 +5984,42 @@ msgstr "sin título"
 msgid "variable-bindings uses indefinite length"
 msgstr "variable-bindings usa una longitud indefinida"
 
+#~ msgid "  -l                      Run cupsd from launchd(8)."
+#~ msgstr "  -l                      Ejecuta cupsd desde launchd(8)."
+
+#~ msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
+#~ msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
+
 #~ msgid "%s: Error - expected destination after \"-b\" option."
 #~ msgstr "%s: Error - se esperaba un destino tras la opción \"-b\"."
 
+#~ msgid "Bad printer URI."
+#~ msgstr "URI de impresora incorrecto."
+
+#~ msgid "Enter old password:"
+#~ msgstr "Introduzca la contraseña antigua:"
+
+#~ msgid "Enter password again:"
+#~ msgstr "Introduzca nuevamente la contraseña:"
+
+#~ msgid "Enter password:"
+#~ msgstr "Introduzca la contraseña:"
+
+#~ msgid "Output for printer %s is sent to %s"
+#~ msgstr "La salida de la impresora %s se ha enviado a %s"
+
+#~ msgid "Output for printer %s is sent to remote printer %s on %s"
+#~ msgstr ""
+#~ "La salida de la impresora %s se ha enviado a la impresora remota %s en %s"
+
+#~ msgid "Output for printer %s/%s is sent to %s"
+#~ msgstr "La salida de la impresora %s/%s se ha enviado a %s"
+
+#~ msgid "Output for printer %s/%s is sent to remote printer %s on %s"
+#~ msgstr ""
+#~ "La salida de la impresora %s/%s se ha enviado a la impresora remota %s en "
+#~ "%s"
+
 #~ msgid "Print file accepted - job ID %d."
 #~ msgstr "Archivo de impresión aceptado: ID de trabajo %d."
 
@@ -6002,12 +6029,53 @@ msgstr "variable-bindings usa una longitud indefinida"
 #~ msgid "Print file was not accepted."
 #~ msgstr "No se ha aceptado el archivo de impresión."
 
+#~ msgid "Printing page %d, %d%% complete."
+#~ msgstr "Imprimiendo página %d, %d%% completado."
+
+#~ msgid "Purge Jobs"
+#~ msgstr "Purgar trabajos"
+
+#~ msgid ""
+#~ "Rank   Owner      Pri  Job        Files                       Total Size"
+#~ msgstr ""
+#~ "Rango  Propiet.   Pri  Trabajo    Archivos                    Tamaño total"
+
+#~ msgid "The output bin is almost full."
+#~ msgstr "Recipiente de salida casi lleno"
+
+#~ msgid "The output bin is full."
+#~ msgstr "Bandeja de salida llena."
+
+#~ msgid "The output bin is missing."
+#~ msgstr "Falta la bandeja de salida."
+
+#~ msgid "The paper tray is almost empty."
+#~ msgstr "Bandeja de papel casi vacía."
+
+#~ msgid "The paper tray is empty."
+#~ msgstr "Bandeja de papel vacía."
+
+#~ msgid "The paper tray is missing."
+#~ msgstr "Falta la bandeja de papel."
+
+#~ msgid "The paper tray needs to be filled."
+#~ msgstr "Hay que poner papel en la bandeja."
+
 #~ msgid "The printer URI is incorrect or no longer exists."
 #~ msgstr "El URI de la impresora es incorrecto o ya no existe."
 
 #~ msgid "The printer does not support IPP/%d.%d, trying IPP/%s."
 #~ msgstr "La impresora no es compatible con IPP/%d.%d, probando IPP/%s."
 
+#~ msgid "The printer is running low on ink."
+#~ msgstr "La impresora está funcionando con poca tinta."
+
+#~ msgid "The printer is running low on toner."
+#~ msgstr "La impresora está funcionando con poco toner."
+
+#~ msgid "There is a paper jam."
+#~ msgstr "Hay un atasco de papel."
+
 #~ msgid "Unable to create compressed print file"
 #~ msgstr "No se ha podido crear el archivo de impresión comprimido"
 
@@ -6017,6 +6085,39 @@ msgstr "variable-bindings usa una longitud indefinida"
 #~ msgid "Unable to open compressed print file"
 #~ msgstr "No se ha podido abrir el archivo de impresión comprimido"
 
+#~ msgid "Unable to resolve printer URI."
+#~ msgstr "No se ha podido resolver el URI de la impresora."
+
+#~ msgid "Usage: cupsfilter [ options ] filename"
+#~ msgstr "Uso: cupsfilter ( opciones ) archivo"
+
+#~ msgid "Usage: lppasswd [-g groupname]"
+#~ msgstr "Uso: lppasswd [-g nombre_grupo]"
+
+#~ msgid ""
+#~ "Usage: lppasswd [-g groupname] [username]\n"
+#~ "       lppasswd [-g groupname] -a [username]\n"
+#~ "       lppasswd [-g groupname] -x [username]"
+#~ msgstr ""
+#~ "Uso: lppasswd [-g nombre_grupo] [nombre_usuario]\n"
+#~ "     lppasswd [-g nombre_grupo] -a [nombre_usuario]\n"
+#~ "     lppasswd [-g nombre_grupo] -x [nombre_usuario]"
+
+#~ msgid ""
+#~ "Your password must be at least 6 characters long, cannot contain your "
+#~ "username, and must contain at least one letter and number."
+#~ msgstr ""
+#~ "Su contraseña debe tener al menos 6 caracteres, no puede contener su "
+#~ "nombre de usuario, y debe tener al menos una letra y un número."
+
+#~ msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
+#~ msgstr ""
+#~ "cupsd: el uso de launchd(8) no ha sido compilado, ejecutándose en modo "
+#~ "normal."
+
+#~ msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
+#~ msgstr "ipptool: \"-i\" y \"-n\" son incompatibles with -X\"."
+
 #~ msgid "ipptool: Bad version %s for \"-V\"."
 #~ msgstr "ipptool: Versión %s para \"-V\" incorrecta."
 
@@ -6025,3 +6126,41 @@ msgstr "variable-bindings usa una longitud indefinida"
 
 #~ msgid "ipptool: Missing version for \"-V\"."
 #~ msgstr "ipptool: Falta la versión para \"-V\"."
+
+#~ msgid "lppasswd: Only root can add or delete passwords."
+#~ msgstr "lppasswd: Solo el usuario root puede añadir o borrar contraseñas."
+
+#~ msgid "lppasswd: Password file busy."
+#~ msgstr "lppasswd: Archivo de contraseñas ocupado."
+
+#~ msgid "lppasswd: Password file not updated."
+#~ msgstr "lppasswd: Archivo de contraseñas no actualizado."
+
+#~ msgid "lppasswd: Sorry, password doesn't match."
+#~ msgstr "lppasswd: Lo siento, la contraseña no coincide."
+
+#~ msgid "lppasswd: Sorry, password rejected."
+#~ msgstr "lppasswd: Lo siento, la contraseña ha sido rechazada."
+
+#~ msgid "lppasswd: Sorry, passwords don't match."
+#~ msgstr "lppasswd: Lo siento, las contraseñas no coinciden."
+
+#~ msgid "lppasswd: Unable to copy password string: %s"
+#~ msgstr "lppasswd: No se ha podido copiar la cadena de contraseña: %s"
+
+#~ msgid "lppasswd: Unable to open password file: %s"
+#~ msgstr "lppasswd: No se ha podido abrir el archivo de contraseñas: %s"
+
+#~ msgid "lppasswd: Unable to write to password file: %s"
+#~ msgstr "lppasswd: No se ha podido escribir en el archivo de contraseñas: %s"
+
+#~ msgid "lppasswd: failed to backup old password file: %s"
+#~ msgstr ""
+#~ "lppasswd: falló al hacer una copia de seguridad del antiguo archivo de "
+#~ "contraseñas: %s"
+
+#~ msgid "lppasswd: failed to rename password file: %s"
+#~ msgstr "lppasswd: falló al cambiar de nombre al archivo de contraseñas: %s"
+
+#~ msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
+#~ msgstr "lppasswd: el usuario \"%s\" y el grupo \"%s\" no existen."
index 7735eeac0797f5cd50d98f389ca49822e07edb8b..402e54a39679761249aea53ce7bd54d17de43762 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: 2014-05-09 13:32-0700\n"
+"POT-Creation-Date: 2014-06-26 14:29-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"
@@ -835,6 +835,9 @@ msgstr ""
 msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
 msgstr ""
 
+msgid "  --list-filters          List filters that will be used."
+msgstr ""
+
 msgid "  --local                 True if service is local."
 msgstr ""
 
@@ -1015,7 +1018,7 @@ msgstr ""
 msgid "  -l                      List attributes."
 msgstr ""
 
-msgid "  -l                      Run cupsd from launchd(8)."
+msgid "  -l                      Run cupsd on demand."
 msgstr ""
 
 msgid "  -l lang[,lang,...]      Specify the output language(s) (locale)."
@@ -1346,11 +1349,35 @@ msgid ""
 msgstr ""
 
 #, c-format
-msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
+msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
 msgstr ""
 
 #, c-format
-msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
+msgid "%d x %d mm"
+msgstr ""
+
+#, c-format
+msgid "%g x %g"
+msgstr ""
+
+#, c-format
+msgid "%s (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s (%s, %s)"
+msgstr ""
+
+#, c-format
+msgid "%s (Borderless)"
+msgstr ""
+
+#, c-format
+msgid "%s (Borderless, %s)"
+msgstr ""
+
+#, c-format
+msgid "%s (Borderless, %s, %s)"
 msgstr ""
 
 #, c-format
@@ -1577,6 +1604,10 @@ msgstr ""
 msgid "%s: Invalid filter string \"%s\"."
 msgstr ""
 
+#, c-format
+msgid "%s: Missing filename for \"-P\"."
+msgstr ""
+
 #, c-format
 msgid "%s: Missing timeout for \"-T\"."
 msgstr ""
@@ -1613,6 +1644,10 @@ msgstr ""
 msgid "%s: Unable to determine MIME type of \"%s\"."
 msgstr ""
 
+#, c-format
+msgid "%s: Unable to open \"%s\": %s"
+msgstr ""
+
 #, c-format
 msgid "%s: Unable to open %s: %s"
 msgstr ""
@@ -2486,6 +2521,9 @@ msgstr ""
 msgid "Bad UIConstraints"
 msgstr ""
 
+msgid "Bad arguments to function"
+msgstr ""
+
 #, c-format
 msgid "Bad copies value %d."
 msgstr ""
@@ -2512,6 +2550,9 @@ msgstr ""
 msgid "Bad filename buffer"
 msgstr ""
 
+msgid "Bad hostname/address in URI"
+msgstr ""
+
 #, c-format
 msgid "Bad job-name value: %s"
 msgstr ""
@@ -2556,17 +2597,20 @@ msgstr ""
 msgid "Bad page-ranges values %d-%d."
 msgstr "Intervalle de pages erroné : %d-%d."
 
-#, c-format
-msgid "Bad port-monitor \"%s\"."
+msgid "Bad port number in URI"
 msgstr ""
 
-msgid "Bad printer URI."
+#, c-format
+msgid "Bad port-monitor \"%s\"."
 msgstr ""
 
 #, c-format
 msgid "Bad printer-state value %d."
 msgstr ""
 
+msgid "Bad printer-uri."
+msgstr ""
+
 #, c-format
 msgid "Bad request ID %d."
 msgstr ""
@@ -2575,12 +2619,24 @@ msgstr ""
 msgid "Bad request version number %d.%d."
 msgstr ""
 
+msgid "Bad resource in URI"
+msgstr ""
+
+msgid "Bad scheme in URI"
+msgstr ""
+
 msgid "Bad subscription ID"
 msgstr ""
 
+msgid "Bad username in URI"
+msgstr ""
+
 msgid "Bad value string"
 msgstr ""
 
+msgid "Bad/empty URI"
+msgstr ""
+
 msgid "Banners"
 msgstr "Bannières"
 
@@ -2600,6 +2656,9 @@ msgstr "CMJN"
 msgid "CPCL Label Printer"
 msgstr "Imprimante pour étiquettes CPCL"
 
+msgid "Cancel Jobs"
+msgstr ""
+
 msgid "Cancel RSS Subscription"
 msgstr "Annuler abonnement RSS"
 
@@ -2759,6 +2818,9 @@ msgstr "Modifier le fichier de configuration"
 msgid "Empty PPD file."
 msgstr ""
 
+msgid "Encryption is not supported."
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet after the print job.
 msgid "Ending Banner"
 msgstr "Fin de la bannière"
@@ -2766,15 +2828,6 @@ msgstr "Fin de la bannière"
 msgid "English"
 msgstr "French"
 
-msgid "Enter old password:"
-msgstr "Ancien mot de passe :"
-
-msgid "Enter password again:"
-msgstr "Confirmez le nouveau mot de passe :"
-
-msgid "Enter password:"
-msgstr "Entrez le nouveau mot de passe :"
-
 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 "
@@ -3341,6 +3394,9 @@ msgstr "Ligne dépassant la longueur maximale autorisée (255 caractères)"
 msgid "List Available Printers"
 msgstr ""
 
+msgid "Load paper."
+msgstr ""
+
 msgid "Long-Edge (Portrait)"
 msgstr "Bord le plus long (Portrait)"
 
@@ -3408,6 +3464,12 @@ msgstr ""
 msgid "Missing required attributes."
 msgstr ""
 
+msgid "Missing resource in URI"
+msgstr ""
+
+msgid "Missing scheme in URI"
+msgstr ""
+
 #, c-format
 msgid "Missing value on line %d."
 msgstr ""
@@ -3538,6 +3600,12 @@ msgstr ""
 msgid "No printer-uri in request."
 msgstr ""
 
+msgid "No request URI."
+msgstr ""
+
+msgid "No request protocol version."
+msgstr ""
+
 msgid "No request sent."
 msgstr ""
 
@@ -3635,20 +3703,13 @@ msgstr ""
 msgid "Output Mode"
 msgstr "Mode de sortie"
 
-#, c-format
-msgid "Output for printer %s is sent to %s"
-msgstr ""
-
-#, c-format
-msgid "Output for printer %s is sent to remote printer %s on %s"
+msgid "Output bin is almost full."
 msgstr ""
 
-#, c-format
-msgid "Output for printer %s/%s is sent to %s"
+msgid "Output bin is full."
 msgstr ""
 
-#, c-format
-msgid "Output for printer %s/%s is sent to remote printer %s on %s"
+msgid "Output bin is missing."
 msgstr ""
 
 msgid "PASS"
@@ -3681,6 +3742,18 @@ 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 jam."
+msgstr ""
+
+msgid "Paper tray is almost empty."
+msgstr ""
+
+msgid "Paper tray is empty."
+msgstr ""
+
+msgid "Paper tray is missing."
+msgstr ""
+
 msgid "ParamCustominCutInterval"
 msgstr "ParamCustominCutInterval"
 
@@ -3807,12 +3880,9 @@ msgid "Printers"
 msgstr ""
 
 #, c-format
-msgid "Printing page %d, %d%% complete."
+msgid "Printing page %d, %u%% complete."
 msgstr ""
 
-msgid "Purge Jobs"
-msgstr "Purger les tâches"
-
 msgid "Quarto"
 msgstr "Quarto"
 
@@ -3822,11 +3892,6 @@ msgstr ""
 msgid "Rank    Owner   Job     File(s)                         Total Size"
 msgstr ""
 
-#. TRANSLATORS: Pri is job priority.
-msgid ""
-"Rank   Owner      Pri  Job        Files                       Total Size"
-msgstr ""
-
 msgid "Reject Jobs"
 msgstr "Refuser les tâches"
 
@@ -3887,6 +3952,9 @@ msgstr "Le serveur a démarré"
 msgid "Server Stopped"
 msgstr "Le serveur s’est arrêté"
 
+msgid "Server credentials not set."
+msgstr ""
+
 msgid "Service Unavailable"
 msgstr "Service indisponible"
 
@@ -4040,34 +4108,19 @@ msgstr ""
 msgid "The optical photoconductor will need to be replaced soon."
 msgstr ""
 
-msgid "The output bin is almost full."
-msgstr ""
-
-msgid "The output bin is full."
-msgstr ""
-
-msgid "The output bin is missing."
-msgstr ""
-
-msgid "The paper tray is almost empty."
-msgstr ""
-
-msgid "The paper tray is empty."
-msgstr ""
-
-msgid "The paper tray is missing."
+msgid "The printer configuration is incorrect or the printer no longer exists."
 msgstr ""
 
-msgid "The paper tray needs to be filled."
+msgid "The printer did not respond."
 msgstr ""
 
-msgid "The printer configuration is incorrect or the printer no longer exists."
+msgid "The printer is in use."
 msgstr ""
 
-msgid "The printer did not respond."
+msgid "The printer is low on ink."
 msgstr ""
 
-msgid "The printer is in use."
+msgid "The printer is low on toner."
 msgstr ""
 
 msgid "The printer is not connected."
@@ -4085,12 +4138,6 @@ msgstr ""
 msgid "The printer is offline."
 msgstr ""
 
-msgid "The printer is running low on ink."
-msgstr ""
-
-msgid "The printer is running low on toner."
-msgstr ""
-
 msgid "The printer is unreachable at this time."
 msgstr ""
 
@@ -4169,9 +4216,6 @@ msgstr ""
 msgid "There are too many subscriptions."
 msgstr "Les abonnements sont trop nombreux."
 
-msgid "There is a paper jam."
-msgstr ""
-
 msgid "There was an unrecoverable USB error."
 msgstr ""
 
@@ -4210,6 +4254,9 @@ msgstr "Bac 4"
 msgid "URI Too Long"
 msgstr "URI trop long"
 
+msgid "URI too large"
+msgstr ""
+
 msgid "US Ledger"
 msgstr "US Ledger"
 
@@ -4331,6 +4378,9 @@ msgstr ""
 msgid "Unable to create printer-uri"
 msgstr ""
 
+msgid "Unable to create server credentials."
+msgstr ""
+
 msgid "Unable to create temporary file"
 msgstr "Impossible de créer le fichier temporaire :"
 
@@ -4382,6 +4432,9 @@ msgstr ""
 msgid "Unable to find printer."
 msgstr ""
 
+msgid "Unable to find server credentials."
+msgstr ""
+
 msgid "Unable to get backend exit status."
 msgstr ""
 
@@ -4464,7 +4517,7 @@ msgstr "Impossible d’imprimer la page de test :"
 msgid "Unable to read print data."
 msgstr ""
 
-msgid "Unable to resolve printer URI."
+msgid "Unable to resolve printer-uri."
 msgstr ""
 
 #, c-format
@@ -4554,6 +4607,15 @@ msgstr "Paramètre printer-error-policy « %s » inconnu."
 msgid "Unknown printer-op-policy \"%s\"."
 msgstr "Paramètre printer-op-policy « %s » inconnu."
 
+msgid "Unknown request method."
+msgstr ""
+
+msgid "Unknown request version."
+msgstr ""
+
+msgid "Unknown scheme in URI"
+msgstr ""
+
 msgid "Unknown service name."
 msgstr ""
 
@@ -4643,7 +4705,7 @@ msgstr ""
 msgid "Usage: cupsd [options]"
 msgstr ""
 
-msgid "Usage: cupsfilter [ options ] filename"
+msgid "Usage: cupsfilter [ options ] [ -- ] filename"
 msgstr ""
 
 msgid "Usage: cupstestdsc [options] filename.ps [... filename.ps]"
@@ -4680,15 +4742,6 @@ msgid ""
 "       lpoptions [-h server] [-E] -x printer"
 msgstr ""
 
-msgid "Usage: lppasswd [-g groupname]"
-msgstr ""
-
-msgid ""
-"Usage: lppasswd [-g groupname] [username]\n"
-"       lppasswd [-g groupname] -a [username]\n"
-"       lppasswd [-g groupname] -x [username]"
-msgstr ""
-
 msgid ""
 "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
 msgstr ""
@@ -4747,11 +4800,6 @@ msgstr ""
 "Vous devez accéder à cette page par l’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."
-msgstr ""
-
 msgid "ZPL Label Printer"
 msgstr "Imprimante pour étiquettes ZPL"
 
@@ -4798,6 +4846,9 @@ msgstr ""
 msgid "cupsd: Expected cups-files.conf filename after \"-s\" option."
 msgstr ""
 
+msgid "cupsd: On-demand support not compiled in, running in normal mode."
+msgstr ""
+
 msgid "cupsd: Relative cups-files.conf filename not allowed."
 msgstr ""
 
@@ -4815,9 +4866,6 @@ msgstr ""
 msgid "cupsd: Unknown option \"%c\" - aborting."
 msgstr ""
 
-msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
-msgstr ""
-
 #, c-format
 msgid "cupsfilter: Invalid document number %d."
 msgstr ""
@@ -4938,7 +4986,7 @@ msgstr ""
 msgid "ippfind: Unknown variable \"{%s}\"."
 msgstr ""
 
-msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
+msgid "ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"."
 msgstr ""
 
 #, c-format
@@ -5150,48 +5198,6 @@ msgstr ""
 msgid "lpoptions: Unknown printer or class."
 msgstr ""
 
-msgid "lppasswd: Only root can add or delete passwords."
-msgstr ""
-
-msgid "lppasswd: Password file busy."
-msgstr ""
-
-msgid "lppasswd: Password file not updated."
-msgstr ""
-
-msgid "lppasswd: Sorry, password doesn't match."
-msgstr ""
-
-msgid "lppasswd: Sorry, password rejected."
-msgstr ""
-
-msgid "lppasswd: Sorry, passwords don't match."
-msgstr ""
-
-#, c-format
-msgid "lppasswd: Unable to copy password string: %s"
-msgstr ""
-
-#, c-format
-msgid "lppasswd: Unable to open password file: %s"
-msgstr ""
-
-#, c-format
-msgid "lppasswd: Unable to write to password file: %s"
-msgstr ""
-
-#, c-format
-msgid "lppasswd: failed to backup old password file: %s"
-msgstr ""
-
-#, c-format
-msgid "lppasswd: failed to rename password file: %s"
-msgstr ""
-
-#, c-format
-msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
-msgstr ""
-
 #, c-format
 msgid ""
 "lpstat: error - %s environment variable names non-existent destination \"%s"
@@ -5670,3 +5676,15 @@ msgstr "sans titre"
 
 msgid "variable-bindings uses indefinite length"
 msgstr ""
+
+#~ msgid "Enter old password:"
+#~ msgstr "Ancien mot de passe :"
+
+#~ msgid "Enter password again:"
+#~ msgstr "Confirmez le nouveau mot de passe :"
+
+#~ msgid "Enter password:"
+#~ msgstr "Entrez le nouveau mot de passe :"
+
+#~ msgid "Purge Jobs"
+#~ msgstr "Purger les tâches"
index 7b015fb6758b373e2bca1b2642e226311f2e449e..30b10277233940ad28af8a8fe7e9881a67602a02 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: 2014-05-09 13:32-0700\n"
+"POT-Creation-Date: 2014-06-26 14:29-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"
@@ -985,6 +985,9 @@ msgstr ""
 msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
 msgstr "  --lf                    Termina le righe con LF (UNIX/Linux/OS X)."
 
+msgid "  --list-filters          List filters that will be used."
+msgstr ""
+
 msgid "  --local                 True if service is local."
 msgstr "  --local                 Vero se il servizio è locale."
 
@@ -1199,8 +1202,8 @@ msgstr ""
 msgid "  -l                      List attributes."
 msgstr "  -l                      Elenca gli attributi."
 
-msgid "  -l                      Run cupsd from launchd(8)."
-msgstr "  -l                      Avvia cupsd da launchd(8)."
+msgid "  -l                      Run cupsd on demand."
+msgstr ""
 
 msgid "  -l lang[,lang,...]      Specify the output language(s) (locale)."
 msgstr "  -l lang[,lang,...]      Specifica la lingua(e) (locale) di output."
@@ -1597,14 +1600,38 @@ msgstr ""
 "\"%s\": il valore di uriScheme non è valido \"%s\" - la lunghezza non è "
 "valida %d (RFC 2911 sezione 4.1.6)."
 
-#, c-format
-msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
-msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f byte"
-
 #, c-format
 msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
 msgstr "%-7s %-7.7s %-7d %-31.31s %.0f byte"
 
+#, c-format
+msgid "%d x %d mm"
+msgstr ""
+
+#, c-format
+msgid "%g x %g"
+msgstr ""
+
+#, c-format
+msgid "%s (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s (%s, %s)"
+msgstr ""
+
+#, c-format
+msgid "%s (Borderless)"
+msgstr ""
+
+#, c-format
+msgid "%s (Borderless, %s)"
+msgstr ""
+
+#, c-format
+msgid "%s (Borderless, %s, %s)"
+msgstr ""
+
 #, c-format
 msgid "%s accepting requests since %s"
 msgstr "%s sta accettando richieste da %s"
@@ -1839,6 +1866,10 @@ msgstr "%s: il nome della destinazione non è valido nella lista \"%s\"."
 msgid "%s: Invalid filter string \"%s\"."
 msgstr "%s: la stringa del filtro non è valida \"%s\"."
 
+#, c-format
+msgid "%s: Missing filename for \"-P\"."
+msgstr ""
+
 #, c-format
 msgid "%s: Missing timeout for \"-T\"."
 msgstr "%s: manca il timeout di \"-T\"."
@@ -1876,6 +1907,10 @@ msgstr "%s: non è possibile contattare il server."
 msgid "%s: Unable to determine MIME type of \"%s\"."
 msgstr "%s: non è possibile determinare il tipo di MIME di \"%s\"."
 
+#, c-format
+msgid "%s: Unable to open \"%s\": %s"
+msgstr ""
+
 #, c-format
 msgid "%s: Unable to open %s: %s"
 msgstr "%s: non è possibile aprire %s: %s"
@@ -2754,6 +2789,9 @@ msgstr "Il numero di versione di SNMP non è valido"
 msgid "Bad UIConstraints"
 msgstr "UIConstraints non è valido"
 
+msgid "Bad arguments to function"
+msgstr ""
+
 #, c-format
 msgid "Bad copies value %d."
 msgstr "Il valore %d delle copie non è valido."
@@ -2780,6 +2818,9 @@ msgstr "Il document-format-default \"%s\" non è valido."
 msgid "Bad filename buffer"
 msgstr "Il buffer del file non è valido"
 
+msgid "Bad hostname/address in URI"
+msgstr ""
+
 #, c-format
 msgid "Bad job-name value: %s"
 msgstr "Il valore di job-name non è valido: %s"
@@ -2824,17 +2865,20 @@ msgstr "L'opzione + scelta alla riga %d non è valida."
 msgid "Bad page-ranges values %d-%d."
 msgstr "Il valore di page-ranges %d-%d non è valido."
 
+msgid "Bad port number in URI"
+msgstr ""
+
 #, c-format
 msgid "Bad port-monitor \"%s\"."
 msgstr "Il valore di port-monitor \"%s\" non è valido."
 
-msgid "Bad printer URI."
-msgstr "L'URI della stampante non è valido."
-
 #, c-format
 msgid "Bad printer-state value %d."
 msgstr "Il valore di printer-state %d non è valido."
 
+msgid "Bad printer-uri."
+msgstr ""
+
 #, c-format
 msgid "Bad request ID %d."
 msgstr "L'ID della richiesta %d non è valido."
@@ -2843,12 +2887,24 @@ msgstr "L'ID della richiesta %d non è valido."
 msgid "Bad request version number %d.%d."
 msgstr "Il numero della versione richiesta %d.%d non è valido."
 
+msgid "Bad resource in URI"
+msgstr ""
+
+msgid "Bad scheme in URI"
+msgstr ""
+
 msgid "Bad subscription ID"
 msgstr "L'ID della sottoscrizione non è valido"
 
+msgid "Bad username in URI"
+msgstr ""
+
 msgid "Bad value string"
 msgstr "La stringa ha un valore che non è valido"
 
+msgid "Bad/empty URI"
+msgstr ""
+
 msgid "Banners"
 msgstr "Banner"
 
@@ -2868,6 +2924,9 @@ msgstr "CMYK"
 msgid "CPCL Label Printer"
 msgstr "CPCL Label Printer"
 
+msgid "Cancel Jobs"
+msgstr ""
+
 msgid "Cancel RSS Subscription"
 msgstr "Eliminare l'abbonamento RSS"
 
@@ -3037,6 +3096,9 @@ msgstr "Edita il file di configurazione"
 msgid "Empty PPD file."
 msgstr "Il file PPD è vuoto."
 
+msgid "Encryption is not supported."
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet after the print job.
 msgid "Ending Banner"
 msgstr "Termine del banner"
@@ -3044,15 +3106,6 @@ msgstr "Termine del banner"
 msgid "English"
 msgstr "Inglese"
 
-msgid "Enter old password:"
-msgstr "Digitare la vecchia password:"
-
-msgid "Enter password again:"
-msgstr "Digitare di nuovo la password:"
-
-msgid "Enter password:"
-msgstr "Digitare la password:"
-
 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 "
@@ -3624,6 +3677,9 @@ msgstr "Linea più lunga di quella massima consentita (255 caratteri)"
 msgid "List Available Printers"
 msgstr "Elenco delle stampanti disponibili"
 
+msgid "Load paper."
+msgstr ""
+
 msgid "Long-Edge (Portrait)"
 msgstr "Long-Edge (Portrait)"
 
@@ -3691,6 +3747,12 @@ msgstr "Manca l'attributo di requesting-user-name."
 msgid "Missing required attributes."
 msgstr "Mancano gli attributi richiesti."
 
+msgid "Missing resource in URI"
+msgstr ""
+
+msgid "Missing scheme in URI"
+msgstr ""
+
 #, c-format
 msgid "Missing value on line %d."
 msgstr "Manca il valore alla riga %d."
@@ -3827,6 +3889,12 @@ msgstr "Non è stato trovato printer-uri per la classe"
 msgid "No printer-uri in request."
 msgstr "Nessun printer-uri nella richiesta."
 
+msgid "No request URI."
+msgstr ""
+
+msgid "No request protocol version."
+msgstr ""
+
 msgid "No request sent."
 msgstr ""
 
@@ -3926,23 +3994,14 @@ msgstr "Memoria insufficiente."
 msgid "Output Mode"
 msgstr "Modalità di output"
 
-#, c-format
-msgid "Output for printer %s is sent to %s"
-msgstr "L'output della stampante %s è stato inviato a %s"
-
-#, c-format
-msgid "Output for printer %s is sent to remote printer %s on %s"
+msgid "Output bin is almost full."
 msgstr ""
-"L'output della stampante %s è stato inviato alla stampante remota %s su %s"
 
-#, c-format
-msgid "Output for printer %s/%s is sent to %s"
-msgstr "L'output della stampante %s/%s è stato inviato a %s"
+msgid "Output bin is full."
+msgstr ""
 
-#, c-format
-msgid "Output for printer %s/%s is sent to remote printer %s on %s"
+msgid "Output bin is missing."
 msgstr ""
-"L'output della stampante %s/%s è stato inviato alla stampante remota %s su %s"
 
 msgid "PASS"
 msgstr "OPERAZIONE RIUSCITA CON SUCCESSO"
@@ -3974,6 +4033,18 @@ 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 jam."
+msgstr ""
+
+msgid "Paper tray is almost empty."
+msgstr ""
+
+msgid "Paper tray is empty."
+msgstr ""
+
+msgid "Paper tray is missing."
+msgstr ""
+
 msgid "ParamCustominCutInterval"
 msgstr "ParamCustominCutInterval"
 
@@ -4100,11 +4171,8 @@ msgid "Printers"
 msgstr "Stampanti"
 
 #, c-format
-msgid "Printing page %d, %d%% complete."
-msgstr "Stampa della pagina %d, %d%% completato."
-
-msgid "Purge Jobs"
-msgstr "Elimina le stampe"
+msgid "Printing page %d, %u%% complete."
+msgstr ""
 
 msgid "Quarto"
 msgstr "Quarto"
@@ -4115,12 +4183,6 @@ msgstr "Il limite della quota è stato raggiunto."
 msgid "Rank    Owner   Job     File(s)                         Total Size"
 msgstr "Rank    Owner   Job     File(s)                         Total Size"
 
-#. TRANSLATORS: Pri is job priority.
-msgid ""
-"Rank   Owner      Pri  Job        Files                       Total Size"
-msgstr ""
-"Rank   Owner      Pri  Job        Files                       Total Size"
-
 msgid "Reject Jobs"
 msgstr "Stampe rifiutate"
 
@@ -4181,6 +4243,9 @@ msgstr "Il server è stato avviato"
 msgid "Server Stopped"
 msgstr "Il server è stato fermato"
 
+msgid "Server credentials not set."
+msgstr ""
+
 msgid "Service Unavailable"
 msgstr "Servizio non disponibile"
 
@@ -4338,27 +4403,6 @@ msgstr "Il fotoconduttore ottico deve essere sostituito."
 msgid "The optical photoconductor will need to be replaced soon."
 msgstr "Il fotoconduttore ottico dovrà essere sostituito a breve."
 
-msgid "The output bin is almost full."
-msgstr "Il raccoglitore di uscita è quasi pieno."
-
-msgid "The output bin is full."
-msgstr "Il raccoglitore di uscita è pieno."
-
-msgid "The output bin is missing."
-msgstr "Manca il raccoglitore di uscita."
-
-msgid "The paper tray is almost empty."
-msgstr "Il vassoio della carta è quasi vuoto."
-
-msgid "The paper tray is empty."
-msgstr "Il vassoio della carta è vuoto."
-
-msgid "The paper tray is missing."
-msgstr "Manca il vassoio della carta."
-
-msgid "The paper tray needs to be filled."
-msgstr "Il vassoio della carta deve essere riempito."
-
 msgid "The printer configuration is incorrect or the printer no longer exists."
 msgstr ""
 "La configurazione della stampante è errata oppure la stampante non esiste "
@@ -4370,6 +4414,12 @@ msgstr "La stampante non ha risposto."
 msgid "The printer is in use."
 msgstr "La stampante è in uso."
 
+msgid "The printer is low on ink."
+msgstr ""
+
+msgid "The printer is low on toner."
+msgstr ""
+
 msgid "The printer is not connected."
 msgstr "La stampante non è connessa."
 
@@ -4385,12 +4435,6 @@ msgstr "Adesso la stampante è online."
 msgid "The printer is offline."
 msgstr "La stampante è offline."
 
-msgid "The printer is running low on ink."
-msgstr "L'inchiostro della stampante sta per esaurirsi."
-
-msgid "The printer is running low on toner."
-msgstr "Il toner della stampante sta per esaurirsi."
-
 msgid "The printer is unreachable at this time."
 msgstr "In questo momento la stampante non è raggiungibile."
 
@@ -4473,9 +4517,6 @@ msgstr "Il valore which-jobs \"%s\" non è supportato."
 msgid "There are too many subscriptions."
 msgstr "Ci sono troppe sottoscrizioni."
 
-msgid "There is a paper jam."
-msgstr "Vi è un inceppamento della carta."
-
 msgid "There was an unrecoverable USB error."
 msgstr "Si è verificato un errore irreversibile sulla porta USB."
 
@@ -4514,6 +4555,9 @@ msgstr "Vassoio 4"
 msgid "URI Too Long"
 msgstr "L'URI è troppo lungo"
 
+msgid "URI too large"
+msgstr ""
+
 msgid "US Ledger"
 msgstr "US Ledger"
 
@@ -4639,6 +4683,9 @@ msgstr "Non è possibile copiare lo script dell'interfaccia - %s"
 msgid "Unable to create printer-uri"
 msgstr "Non è possibile creare il printer-uri"
 
+msgid "Unable to create server credentials."
+msgstr ""
+
 msgid "Unable to create temporary file"
 msgstr "Non è possibile creare un file temporaneo"
 
@@ -4704,6 +4751,9 @@ msgstr "Non è possibile trovare la destinazione del processo"
 msgid "Unable to find printer."
 msgstr "Non è possibile trovare la stampante."
 
+msgid "Unable to find server credentials."
+msgstr ""
+
 msgid "Unable to get backend exit status."
 msgstr "Non è possibile ottenere lo stato del backend."
 
@@ -4788,8 +4838,8 @@ msgstr "Non è possibile stampare la pagina di prova"
 msgid "Unable to read print data."
 msgstr "Non è possibile leggere i dati della stampa."
 
-msgid "Unable to resolve printer URI."
-msgstr "Non è possibile risolvere l'URI della stampante."
+msgid "Unable to resolve printer-uri."
+msgstr ""
 
 #, c-format
 msgid "Unable to run \"%s\": %s"
@@ -4878,6 +4928,15 @@ msgstr "printer-error-policy sconosciuta \"%s\"."
 msgid "Unknown printer-op-policy \"%s\"."
 msgstr "printer-op-policy sconosciuta \"%s\"."
 
+msgid "Unknown request method."
+msgstr ""
+
+msgid "Unknown request version."
+msgstr ""
+
+msgid "Unknown scheme in URI"
+msgstr ""
+
 msgid "Unknown service name."
 msgstr "Nome del servizio sconosciuto."
 
@@ -4978,8 +5037,8 @@ msgstr "Uso: cupsctl [opzioni] [param=valore ... paramN=valoreN]"
 msgid "Usage: cupsd [options]"
 msgstr "Uso: cupsd [opzioni]"
 
-msgid "Usage: cupsfilter [ options ] filename"
-msgstr "Uso: cupsfilter [ opzioni ] file"
+msgid "Usage: cupsfilter [ options ] [ -- ] filename"
+msgstr ""
 
 msgid "Usage: cupstestdsc [options] filename.ps [... filename.ps]"
 msgstr "Uso: cupstestdsc [opzioni] file.ps [... file.ps]"
@@ -5027,18 +5086,6 @@ msgstr ""
 "     lpoptions [-h server] [-E] -p stampante -o opzione[=valore] ...\n"
 "     lpoptions [-h server] [-E] -x stampante"
 
-msgid "Usage: lppasswd [-g groupname]"
-msgstr "Uso: lppasswd [-g groupname]"
-
-msgid ""
-"Usage: lppasswd [-g groupname] [username]\n"
-"       lppasswd [-g groupname] -a [username]\n"
-"       lppasswd [-g groupname] -x [username]"
-msgstr ""
-"Uso: lppasswd [-g groupname] [username]\n"
-"     lppasswd [-g groupname] -a [username]\n"
-"     lppasswd [-g groupname] -x [username]"
-
 msgid ""
 "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
 msgstr ""
@@ -5099,13 +5146,6 @@ msgstr ""
 "Bisogna accedere a questa pagina, usando l'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."
-msgstr ""
-"La password deve contenere almeno 6 caratteri, non può contenere l'username "
-"e deve contenere almeno una lettera ed un numero."
-
 msgid "ZPL Label Printer"
 msgstr "ZPL Label Printer"
 
@@ -5152,6 +5192,9 @@ msgstr "cupsd: dopo l'opzione \"-c\" è previsto il file di configurazione."
 msgid "cupsd: Expected cups-files.conf filename after \"-s\" option."
 msgstr "cupsd: dopo l'opzione \"-s\" è previsto il file cups-files.conf."
 
+msgid "cupsd: On-demand support not compiled in, running in normal mode."
+msgstr ""
+
 msgid "cupsd: Relative cups-files.conf filename not allowed."
 msgstr "cupsd: non è consentito il file relativo cups-files.conf."
 
@@ -5169,10 +5212,6 @@ msgstr "cupsd: argomento sconosciuto \"%s\" - operazione interrotta."
 msgid "cupsd: Unknown option \"%c\" - aborting."
 msgstr "cupsd: opzione sconosciuta \"%c\" - operazione interrotta."
 
-msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
-msgstr ""
-"cupsd: launchd(8) non supporta i compilati, quando è in modalità normale."
-
 #, c-format
 msgid "cupsfilter: Invalid document number %d."
 msgstr "cupsfilter: il numero del documento non è valido %d."
@@ -5293,8 +5332,8 @@ msgstr "ippfind: non è possibile utilizzare Bonjour: %s"
 msgid "ippfind: Unknown variable \"{%s}\"."
 msgstr "ippfind: variabile sconosciuta \"{%s}\"."
 
-msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
-msgstr "ipptool: \"-i\" e \"-n\" sono incompatibili con -X\"."
+msgid "ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"."
+msgstr ""
 
 #, c-format
 msgid "ipptool: Bad URI - %s."
@@ -5515,51 +5554,6 @@ msgstr "lpoptions: non è possibile aprire il file PPD per %s."
 msgid "lpoptions: Unknown printer or class."
 msgstr "lpoptions: stampante o classe sconosciuta."
 
-msgid "lppasswd: Only root can add or delete passwords."
-msgstr "lppasswd: solo root può aggiungere o eliminare le password."
-
-msgid "lppasswd: Password file busy."
-msgstr "lppasswd: il file delle password è già in uso."
-
-msgid "lppasswd: Password file not updated."
-msgstr "lppasswd: il file delle password non è aggiornato."
-
-msgid "lppasswd: Sorry, password doesn't match."
-msgstr "lppasswd: spiacenti, la password non è esatta."
-
-msgid "lppasswd: Sorry, password rejected."
-msgstr "lppasswd: spiacenti, la password è stata rifiutata."
-
-msgid "lppasswd: Sorry, passwords don't match."
-msgstr "lppasswd: spiacenti, le password non sono esatte."
-
-#, c-format
-msgid "lppasswd: Unable to copy password string: %s"
-msgstr "lppasswd: non è possibile copiare la stringa della password: %s"
-
-#, c-format
-msgid "lppasswd: Unable to open password file: %s"
-msgstr "lppasswd: non è possibile aprire il file delle password: %s"
-
-#, c-format
-msgid "lppasswd: Unable to write to password file: %s"
-msgstr ""
-"lppasswd: non è possibile scrivere all'interno del file delle password: %s"
-
-#, c-format
-msgid "lppasswd: failed to backup old password file: %s"
-msgstr ""
-"lppasswd: non è possibile eseguire il backup del vecchio file delle "
-"password: %s"
-
-#, c-format
-msgid "lppasswd: failed to rename password file: %s"
-msgstr "lppasswd: non è possibile rinominare il file delle password: %s"
-
-#, c-format
-msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
-msgstr "lppasswd: l'utente \"%s\" ed il gruppo \"%s\" non esistono."
-
 #, c-format
 msgid ""
 "lpstat: error - %s environment variable names non-existent destination \"%s"
@@ -6065,3 +6059,148 @@ msgstr "senza titolo"
 
 msgid "variable-bindings uses indefinite length"
 msgstr "variable-bindings utilizza una lunghezza indefinita"
+
+#~ msgid "  -l                      Run cupsd from launchd(8)."
+#~ msgstr "  -l                      Avvia cupsd da launchd(8)."
+
+#~ msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
+#~ msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f byte"
+
+#~ msgid "Bad printer URI."
+#~ msgstr "L'URI della stampante non è valido."
+
+#~ msgid "Enter old password:"
+#~ msgstr "Digitare la vecchia password:"
+
+#~ msgid "Enter password again:"
+#~ msgstr "Digitare di nuovo la password:"
+
+#~ msgid "Enter password:"
+#~ msgstr "Digitare la password:"
+
+#~ msgid "Output for printer %s is sent to %s"
+#~ msgstr "L'output della stampante %s è stato inviato a %s"
+
+#~ msgid "Output for printer %s is sent to remote printer %s on %s"
+#~ msgstr ""
+#~ "L'output della stampante %s è stato inviato alla stampante remota %s su %s"
+
+#~ msgid "Output for printer %s/%s is sent to %s"
+#~ msgstr "L'output della stampante %s/%s è stato inviato a %s"
+
+#~ msgid "Output for printer %s/%s is sent to remote printer %s on %s"
+#~ msgstr ""
+#~ "L'output della stampante %s/%s è stato inviato alla stampante remota %s "
+#~ "su %s"
+
+#~ msgid "Printing page %d, %d%% complete."
+#~ msgstr "Stampa della pagina %d, %d%% completato."
+
+#~ msgid "Purge Jobs"
+#~ msgstr "Elimina le stampe"
+
+#~ msgid ""
+#~ "Rank   Owner      Pri  Job        Files                       Total Size"
+#~ msgstr ""
+#~ "Rank   Owner      Pri  Job        Files                       Total Size"
+
+#~ msgid "The output bin is almost full."
+#~ msgstr "Il raccoglitore di uscita è quasi pieno."
+
+#~ msgid "The output bin is full."
+#~ msgstr "Il raccoglitore di uscita è pieno."
+
+#~ msgid "The output bin is missing."
+#~ msgstr "Manca il raccoglitore di uscita."
+
+#~ msgid "The paper tray is almost empty."
+#~ msgstr "Il vassoio della carta è quasi vuoto."
+
+#~ msgid "The paper tray is empty."
+#~ msgstr "Il vassoio della carta è vuoto."
+
+#~ msgid "The paper tray is missing."
+#~ msgstr "Manca il vassoio della carta."
+
+#~ msgid "The paper tray needs to be filled."
+#~ msgstr "Il vassoio della carta deve essere riempito."
+
+#~ msgid "The printer is running low on ink."
+#~ msgstr "L'inchiostro della stampante sta per esaurirsi."
+
+#~ msgid "The printer is running low on toner."
+#~ msgstr "Il toner della stampante sta per esaurirsi."
+
+#~ msgid "There is a paper jam."
+#~ msgstr "Vi è un inceppamento della carta."
+
+#~ 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: lppasswd [-g groupname]"
+#~ msgstr "Uso: lppasswd [-g groupname]"
+
+#~ msgid ""
+#~ "Usage: lppasswd [-g groupname] [username]\n"
+#~ "       lppasswd [-g groupname] -a [username]\n"
+#~ "       lppasswd [-g groupname] -x [username]"
+#~ msgstr ""
+#~ "Uso: lppasswd [-g groupname] [username]\n"
+#~ "     lppasswd [-g groupname] -a [username]\n"
+#~ "     lppasswd [-g groupname] -x [username]"
+
+#~ msgid ""
+#~ "Your password must be at least 6 characters long, cannot contain your "
+#~ "username, and must contain at least one letter and number."
+#~ msgstr ""
+#~ "La password deve contenere almeno 6 caratteri, non può contenere "
+#~ "l'username e deve contenere almeno una lettera ed un numero."
+
+#~ msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
+#~ msgstr ""
+#~ "cupsd: launchd(8) non supporta i compilati, quando è in modalità normale."
+
+#~ msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
+#~ msgstr "ipptool: \"-i\" e \"-n\" sono incompatibili con -X\"."
+
+#~ msgid "lppasswd: Only root can add or delete passwords."
+#~ msgstr "lppasswd: solo root può aggiungere o eliminare le password."
+
+#~ msgid "lppasswd: Password file busy."
+#~ msgstr "lppasswd: il file delle password è già in uso."
+
+#~ msgid "lppasswd: Password file not updated."
+#~ msgstr "lppasswd: il file delle password non è aggiornato."
+
+#~ msgid "lppasswd: Sorry, password doesn't match."
+#~ msgstr "lppasswd: spiacenti, la password non è esatta."
+
+#~ msgid "lppasswd: Sorry, password rejected."
+#~ msgstr "lppasswd: spiacenti, la password è stata rifiutata."
+
+#~ msgid "lppasswd: Sorry, passwords don't match."
+#~ msgstr "lppasswd: spiacenti, le password non sono esatte."
+
+#~ msgid "lppasswd: Unable to copy password string: %s"
+#~ msgstr "lppasswd: non è possibile copiare la stringa della password: %s"
+
+#~ msgid "lppasswd: Unable to open password file: %s"
+#~ msgstr "lppasswd: non è possibile aprire il file delle password: %s"
+
+#~ msgid "lppasswd: Unable to write to password file: %s"
+#~ msgstr ""
+#~ "lppasswd: non è possibile scrivere all'interno del file delle password: %s"
+
+#~ msgid "lppasswd: failed to backup old password file: %s"
+#~ msgstr ""
+#~ "lppasswd: non è possibile eseguire il backup del vecchio file delle "
+#~ "password: %s"
+
+#~ msgid "lppasswd: failed to rename password file: %s"
+#~ msgstr "lppasswd: non è possibile rinominare il file delle password: %s"
+
+#~ msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
+#~ msgstr "lppasswd: l'utente \"%s\" ed il gruppo \"%s\" non esistono."
index c95bbe6986dbab888c9ebb3b726d12a3c615fb6d..9f3dd4f8e22d164075720ca252381920cae008f8 100644 (file)
@@ -28,7 +28,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 1.7\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2014-05-09 13:32-0700\n"
+"POT-Creation-Date: 2014-06-26 14:29-0400\n"
 "PO-Revision-Date: 2013-08-19 11:51+0900\n"
 "Last-Translator: OPFC TRANSCUPS <opfc-transcups@sourceforge.jp>\n"
 "Language-Team: OPFC TRANSCUPS <opfc-transcups@sourceforge.jp>\n"
@@ -981,6 +981,9 @@ msgstr "  --host <正規表現>       ホスト名が正規表現にマッチす
 msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
 msgstr "  --lf                    行末を LF とする (UNIX/Linux/OS X)。"
 
+msgid "  --list-filters          List filters that will be used."
+msgstr ""
+
 msgid "  --local                 True if service is local."
 msgstr "  --local                 サービスがローカルなら真。"
 
@@ -1180,8 +1183,8 @@ msgstr ""
 msgid "  -l                      List attributes."
 msgstr "  -l                      属性の一覧を表示する。"
 
-msgid "  -l                      Run cupsd from launchd(8)."
-msgstr "  -l                      launchd(8) から cupsd を実行する。"
+msgid "  -l                      Run cupsd on demand."
+msgstr ""
 
 msgid "  -l lang[,lang,...]      Specify the output language(s) (locale)."
 msgstr "  -l lang[,lang,...]      出力言語を指定する。(複数可能)"
@@ -1557,14 +1560,38 @@ msgid ""
 "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 2911 section 4.1.6)."
 msgstr ""
 
-#, c-format
-msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
-msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f バイト"
-
 #, c-format
 msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
 msgstr "%-7s %-7.7s %-7d %-31.31s %.0f バイト"
 
+#, c-format
+msgid "%d x %d mm"
+msgstr ""
+
+#, c-format
+msgid "%g x %g"
+msgstr ""
+
+#, c-format
+msgid "%s (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s (%s, %s)"
+msgstr ""
+
+#, c-format
+msgid "%s (Borderless)"
+msgstr ""
+
+#, c-format
+msgid "%s (Borderless, %s)"
+msgstr ""
+
+#, c-format
+msgid "%s (Borderless, %s, %s)"
+msgstr ""
+
 #, c-format
 msgid "%s accepting requests since %s"
 msgstr "%s は %s からリクエストを受け付けています"
@@ -1794,6 +1821,10 @@ msgstr "%s: リスト \"%s\" に無効な宛先名があります。"
 msgid "%s: Invalid filter string \"%s\"."
 msgstr "%s: 無効なフィルター文字列です \"%s\""
 
+#, c-format
+msgid "%s: Missing filename for \"-P\"."
+msgstr ""
+
 #, c-format
 msgid "%s: Missing timeout for \"-T\"."
 msgstr "%s: \"-T\" オプションにタイムアウトが設定されていません。"
@@ -1830,6 +1861,10 @@ msgstr "%s: サーバーに連絡できません。"
 msgid "%s: Unable to determine MIME type of \"%s\"."
 msgstr "%s: \"%s\" の MIME タイプを判別できません。"
 
+#, c-format
+msgid "%s: Unable to open \"%s\": %s"
+msgstr ""
+
 #, c-format
 msgid "%s: Unable to open %s: %s"
 msgstr "%s: %s を開けません: %s"
@@ -2708,6 +2743,9 @@ msgstr "不正な SNMP バージョン番号"
 msgid "Bad UIConstraints"
 msgstr "不正な UIConstraints"
 
+msgid "Bad arguments to function"
+msgstr ""
+
 #, c-format
 msgid "Bad copies value %d."
 msgstr "%d は不正なコピー値です。"
@@ -2734,6 +2772,9 @@ msgstr "\"%s\" は不正な document-format-default です。"
 msgid "Bad filename buffer"
 msgstr "不正なファイル名バッファーです。"
 
+msgid "Bad hostname/address in URI"
+msgstr ""
+
 #, c-format
 msgid "Bad job-name value: %s"
 msgstr "誤った job-name 値: %s"
@@ -2778,17 +2819,20 @@ msgstr "%d 行に不正なオプションと選択があります。"
 msgid "Bad page-ranges values %d-%d."
 msgstr "%d-%d は不正な page-ranges 値です。"
 
+msgid "Bad port number in URI"
+msgstr ""
+
 #, c-format
 msgid "Bad port-monitor \"%s\"."
 msgstr "\"%s\" は無効な port-monitor です。"
 
-msgid "Bad printer URI."
-msgstr "不正なプリンター URI です。"
-
 #, c-format
 msgid "Bad printer-state value %d."
 msgstr "%d は無効な printer-state 値です。"
 
+msgid "Bad printer-uri."
+msgstr ""
+
 #, c-format
 msgid "Bad request ID %d."
 msgstr "%d は無効なリクエストIDです。"
@@ -2797,12 +2841,24 @@ msgstr "%d は無効なリクエストIDです。"
 msgid "Bad request version number %d.%d."
 msgstr "バージョン番号 %d.%d は無効なリクエストです。"
 
+msgid "Bad resource in URI"
+msgstr ""
+
+msgid "Bad scheme in URI"
+msgstr ""
+
 msgid "Bad subscription ID"
 msgstr "不正なサブスクリプション ID です。"
 
+msgid "Bad username in URI"
+msgstr ""
+
 msgid "Bad value string"
 msgstr "値文字列がありません"
 
+msgid "Bad/empty URI"
+msgstr ""
+
 msgid "Banners"
 msgstr "バナー"
 
@@ -2822,6 +2878,9 @@ msgstr "CMYK"
 msgid "CPCL Label Printer"
 msgstr "CPCL ラベルプリンター"
 
+msgid "Cancel Jobs"
+msgstr ""
+
 msgid "Cancel RSS Subscription"
 msgstr "RSS 購読をキャンセル"
 
@@ -2993,6 +3052,9 @@ msgstr "設定ファイルの編集"
 msgid "Empty PPD file."
 msgstr "PPD ファイルが空です。"
 
+msgid "Encryption is not supported."
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet after the print job.
 msgid "Ending Banner"
 msgstr "終了バナー"
@@ -3000,15 +3062,6 @@ msgstr "終了バナー"
 msgid "English"
 msgstr "English"
 
-msgid "Enter old password:"
-msgstr "古いパスワードを入力:"
-
-msgid "Enter password again:"
-msgstr "パスワードを再度入力:"
-
-msgid "Enter password:"
-msgstr "パスワードを入力:"
-
 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 "
@@ -3582,6 +3635,9 @@ msgstr "1 行が最大値 (255 文字) を超えています"
 msgid "List Available Printers"
 msgstr "使用可能なプリンターをリスト化"
 
+msgid "Load paper."
+msgstr ""
+
 msgid "Long-Edge (Portrait)"
 msgstr "長辺給紙 (縦向き)"
 
@@ -3649,6 +3705,12 @@ msgstr "requesting-user-name 属性が設定されていません。"
 msgid "Missing required attributes."
 msgstr "必須の属性が設定されていません。"
 
+msgid "Missing resource in URI"
+msgstr ""
+
+msgid "Missing scheme in URI"
+msgstr ""
+
 #, c-format
 msgid "Missing value on line %d."
 msgstr "%d 行に値がありません。"
@@ -3783,6 +3845,12 @@ msgstr "クラスのプリンター URI が見つかりません。"
 msgid "No printer-uri in request."
 msgstr "プリンター URI のリクエストがありません。"
 
+msgid "No request URI."
+msgstr ""
+
+msgid "No request protocol version."
+msgstr ""
+
 msgid "No request sent."
 msgstr ""
 
@@ -3882,21 +3950,14 @@ msgstr "メモリーが足りません。"
 msgid "Output Mode"
 msgstr "出力モード"
 
-#, c-format
-msgid "Output for printer %s is sent to %s"
-msgstr "プリンター %s の出力は %s に送られます"
-
-#, c-format
-msgid "Output for printer %s is sent to remote printer %s on %s"
-msgstr "プリンター %s の出力は、リモートプリンター %s (%s 上) に送られます"
+msgid "Output bin is almost full."
+msgstr ""
 
-#, c-format
-msgid "Output for printer %s/%s is sent to %s"
-msgstr "プリンター %s/%s の出力は %s に送られます"
+msgid "Output bin is full."
+msgstr ""
 
-#, c-format
-msgid "Output for printer %s/%s is sent to remote printer %s on %s"
-msgstr "プリンター %s/%s の出力は、リモートプリンター %s (%s 上) に送られます"
+msgid "Output bin is missing."
+msgstr ""
 
 msgid "PASS"
 msgstr "合格"
@@ -3928,6 +3989,18 @@ msgstr "パケットが Get-Response-PDU を含んでいません"
 msgid "Packet does not start with SEQUENCE"
 msgstr "パケットが SEQUENCE から始まりません"
 
+msgid "Paper jam."
+msgstr ""
+
+msgid "Paper tray is almost empty."
+msgstr ""
+
+msgid "Paper tray is empty."
+msgstr ""
+
+msgid "Paper tray is missing."
+msgstr ""
+
 msgid "ParamCustominCutInterval"
 msgstr "ParamCustominCutInterval"
 
@@ -4054,11 +4127,8 @@ msgid "Printers"
 msgstr "プリンター"
 
 #, c-format
-msgid "Printing page %d, %d%% complete."
-msgstr "ページ %d を印刷中、%d%% 完了しました。"
-
-msgid "Purge Jobs"
-msgstr "ジョブの削除"
+msgid "Printing page %d, %u%% complete."
+msgstr ""
 
 msgid "Quarto"
 msgstr "Quarto"
@@ -4069,12 +4139,6 @@ msgstr "クォータの制限に達しました。"
 msgid "Rank    Owner   Job     File(s)                         Total Size"
 msgstr "ランク  所有者  ジョブ  ファイル                        合計サイズ"
 
-#. TRANSLATORS: Pri is job priority.
-msgid ""
-"Rank   Owner      Pri  Job        Files                       Total Size"
-msgstr ""
-"ランク 所有者     優先 ジョブ     ファイル                    合計サイズ"
-
 msgid "Reject Jobs"
 msgstr "ジョブの拒否"
 
@@ -4135,6 +4199,9 @@ msgstr "開始されたサーバー"
 msgid "Server Stopped"
 msgstr "停止されたサーバー"
 
+msgid "Server credentials not set."
+msgstr ""
+
 msgid "Service Unavailable"
 msgstr "利用できないサービス"
 
@@ -4288,27 +4355,6 @@ msgstr "感光体の交換が必要です。"
 msgid "The optical photoconductor will need to be replaced soon."
 msgstr "もうすぐ感光体の交換時期です。"
 
-msgid "The output bin is almost full."
-msgstr "排紙トレイがほとんど一杯です。"
-
-msgid "The output bin is full."
-msgstr "排紙トレイが一杯です。"
-
-msgid "The output bin is missing."
-msgstr "排紙トレイが見つかりません。"
-
-msgid "The paper tray is almost empty."
-msgstr "用紙トレイが空になりかけています。"
-
-msgid "The paper tray is empty."
-msgstr "用紙トレイが空です。"
-
-msgid "The paper tray is missing."
-msgstr "用紙トレイが見つかりません。"
-
-msgid "The paper tray needs to be filled."
-msgstr "用紙トレイに補充が必要です。"
-
 msgid "The printer configuration is incorrect or the printer no longer exists."
 msgstr "プリンターの設定が正しくないかプリンターはすでに存在しません。"
 
@@ -4318,6 +4364,12 @@ msgstr "プリンターが応答しません。"
 msgid "The printer is in use."
 msgstr "プリンターは使用中です。"
 
+msgid "The printer is low on ink."
+msgstr ""
+
+msgid "The printer is low on toner."
+msgstr ""
+
 msgid "The printer is not connected."
 msgstr "プリンターは接続されていません。"
 
@@ -4333,12 +4385,6 @@ msgstr "プリンターは現在オンラインです。"
 msgid "The printer is offline."
 msgstr "プリンターはオフラインです。"
 
-msgid "The printer is running low on ink."
-msgstr "プリンターのインクがもうすぐなくなります。"
-
-msgid "The printer is running low on toner."
-msgstr "プリンターのトナーがもうすぐなくなります。"
-
 msgid "The printer is unreachable at this time."
 msgstr "プリンターには現在到達できません。"
 
@@ -4419,9 +4465,6 @@ msgstr "which-jobs の値 \"%s\" はサポートされていません。"
 msgid "There are too many subscriptions."
 msgstr "サブスクリプションが多すぎます。"
 
-msgid "There is a paper jam."
-msgstr "用紙づまりが発生しています。"
-
 msgid "There was an unrecoverable USB error."
 msgstr "回復不可能な USB のエラーが発生しています。"
 
@@ -4460,6 +4503,9 @@ msgstr "トレイ 4"
 msgid "URI Too Long"
 msgstr "URI が長すぎます"
 
+msgid "URI too large"
+msgstr ""
+
 msgid "US Ledger"
 msgstr "US レジャー"
 
@@ -4583,6 +4629,9 @@ msgstr "インターフェイススクリプトをコピーできません - %s"
 msgid "Unable to create printer-uri"
 msgstr "printer-uri を作成できません。"
 
+msgid "Unable to create server credentials."
+msgstr ""
+
 msgid "Unable to create temporary file"
 msgstr "テンポラリーファイルを作成できません"
 
@@ -4635,6 +4684,9 @@ msgstr "ジョブの宛先が見つかりません"
 msgid "Unable to find printer."
 msgstr "プリンターが見つかりません。"
 
+msgid "Unable to find server credentials."
+msgstr ""
+
 msgid "Unable to get backend exit status."
 msgstr "バックエンドの終了ステータスを取得できません。"
 
@@ -4720,8 +4772,8 @@ msgstr "テストページを印刷できません"
 msgid "Unable to read print data."
 msgstr "プリントデータを読み込めません。"
 
-msgid "Unable to resolve printer URI."
-msgstr "プリンター URI を解決できません。"
+msgid "Unable to resolve printer-uri."
+msgstr ""
 
 #, c-format
 msgid "Unable to run \"%s\": %s"
@@ -4810,6 +4862,15 @@ msgstr "\"%s\" は未知の printer-error-policy です。"
 msgid "Unknown printer-op-policy \"%s\"."
 msgstr "\"%s\" は未知の printer-op-policy です。"
 
+msgid "Unknown request method."
+msgstr ""
+
+msgid "Unknown request version."
+msgstr ""
+
+msgid "Unknown scheme in URI"
+msgstr ""
+
 msgid "Unknown service name."
 msgstr "未知のサービス名です。"
 
@@ -4912,8 +4973,8 @@ msgstr "Usage: cupsctl [オプション] [パラメータ=値 ... パラメー
 msgid "Usage: cupsd [options]"
 msgstr "使い方: cupsd [オプション]"
 
-msgid "Usage: cupsfilter [ options ] filename"
-msgstr "使い方: cupsfilter [オプション] ファイル名"
+msgid "Usage: cupsfilter [ options ] [ -- ] filename"
+msgstr ""
 
 msgid "Usage: cupstestdsc [options] filename.ps [... filename.ps]"
 msgstr "使い方: cupstestdsc [オプション] filename.ps [... filename.ps]"
@@ -4963,18 +5024,6 @@ msgstr ""
 "        lpoptions [-h サーバー] [-E] -p プリンター -o オプション[=値] ...\n"
 "        lpoptions [-h サーバー] [-E] -x プリンター"
 
-msgid "Usage: lppasswd [-g groupname]"
-msgstr "使い方: lppasswd [-g グループ名]"
-
-msgid ""
-"Usage: lppasswd [-g groupname] [username]\n"
-"       lppasswd [-g groupname] -a [username]\n"
-"       lppasswd [-g groupname] -x [username]"
-msgstr ""
-"使い方: lppasswd [-g グループ名] [ユーザー名]\n"
-"        lppasswd [-g グループ名] -a [ユーザー名]\n"
-"        lppasswd [-g グループ名] -x [ユーザー名]"
-
 msgid ""
 "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
 msgstr ""
@@ -5036,13 +5085,6 @@ msgstr ""
 "このページには 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."
-msgstr ""
-"パスワードは少なくとも 6 文字以上で、あなたのユーザー名を含んではならず、少な"
-"くとも 1 つの英字および数値を含んでなければなりません。"
-
 msgid "ZPL Label Printer"
 msgstr "ZPL ラベルプリンター"
 
@@ -5090,6 +5132,9 @@ msgid "cupsd: Expected cups-files.conf filename after \"-s\" option."
 msgstr ""
 "cupsd: cups-files.conf ファイル名は \"-s\" オプションの後ろにあるべきです。"
 
+msgid "cupsd: On-demand support not compiled in, running in normal mode."
+msgstr ""
+
 msgid "cupsd: Relative cups-files.conf filename not allowed."
 msgstr "cupsd: 相対パスでの cups-files.conf の指定はできません。"
 
@@ -5107,11 +5152,6 @@ msgstr "cupsd: \"%s\" は未知の引数です - 停止します。"
 msgid "cupsd: Unknown option \"%c\" - aborting."
 msgstr "cupsd: \"%c\" は未知のオプションです - 停止します。"
 
-msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
-msgstr ""
-"cupsd: launchd(8) サポートがコンパイルされていないので、通常モードで動作しま"
-"す。"
-
 #, c-format
 msgid "cupsfilter: Invalid document number %d."
 msgstr "cupsfilter: 不正な文書番号 %d です。"
@@ -5232,8 +5272,8 @@ msgstr "ippfind: Bonjour を利用できません。: %s"
 msgid "ippfind: Unknown variable \"{%s}\"."
 msgstr "ippfind: \"{%s}\" は不明な変数です。"
 
-msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
-msgstr "ipptool: \"-i\" と \"-n\" は \"-X\" と組み合わせられません。"
+msgid "ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"."
+msgstr ""
 
 #, c-format
 msgid "ipptool: Bad URI - %s."
@@ -5463,48 +5503,6 @@ msgstr "lpoptions: %s の PPD ファイルを開けません。"
 msgid "lpoptions: Unknown printer or class."
 msgstr "lpoptions: 未知のプリンターまたはクラスです。"
 
-msgid "lppasswd: Only root can add or delete passwords."
-msgstr "lppasswd: root だけがパスワードの追加と削除を行えます。"
-
-msgid "lppasswd: Password file busy."
-msgstr "lppasswd: パスワードファイルがビジー状態です。"
-
-msgid "lppasswd: Password file not updated."
-msgstr "lppasswd: パスワードファイルは更新されません。"
-
-msgid "lppasswd: Sorry, password doesn't match."
-msgstr "lppasswd: 残念ながら、パスワードがマッチしません。"
-
-msgid "lppasswd: Sorry, password rejected."
-msgstr "lppasswd: 残念ながら、パスワードは拒否されました。"
-
-msgid "lppasswd: Sorry, passwords don't match."
-msgstr "lppasswd: 残念ながら、パスワードがマッチしません。"
-
-#, c-format
-msgid "lppasswd: Unable to copy password string: %s"
-msgstr "lppasswd: パスワード文字列をコピーできません: %s"
-
-#, c-format
-msgid "lppasswd: Unable to open password file: %s"
-msgstr "lppasswd: パスワードファイルを開けません: %s"
-
-#, c-format
-msgid "lppasswd: Unable to write to password file: %s"
-msgstr "lppasswd: パスワードファイルに書き込めません: %s"
-
-#, c-format
-msgid "lppasswd: failed to backup old password file: %s"
-msgstr "lppasswd: 古いパスワードファイルのバックアップに失敗しました: %s"
-
-#, c-format
-msgid "lppasswd: failed to rename password file: %s"
-msgstr "lppasswd: パスワードファイルの名前の変更に失敗しました: %s"
-
-#, c-format
-msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
-msgstr "lppasswd: ユーザー \"%s\" およびグループ \"%s\" は存在しません。"
-
 #, c-format
 msgid ""
 "lpstat: error - %s environment variable names non-existent destination \"%s"
@@ -6038,15 +6036,46 @@ msgstr "タイトルなし"
 msgid "variable-bindings uses indefinite length"
 msgstr "variable-bindings の長さが不定"
 
+#~ msgid "  -l                      Run cupsd from launchd(8)."
+#~ msgstr "  -l                      launchd(8) から cupsd を実行する。"
+
 #~ msgid ""
 #~ "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 2911 4.1.6 節)."
 #~ msgstr ""
 #~ "\"%s\": uriScheme 値 \"%s\" が誤っています - 誤った長さ %d (RFC 2911 "
 #~ "4.1.6 節)."
 
+#~ msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
+#~ msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f バイト"
+
 #~ msgid "%s: Error - expected destination after \"-b\" option."
 #~ msgstr "%s: エラー - \"-b\" オプションのあとに宛先が必要です。"
 
+#~ msgid "Bad printer URI."
+#~ msgstr "不正なプリンター URI です。"
+
+#~ msgid "Enter old password:"
+#~ msgstr "古いパスワードを入力:"
+
+#~ msgid "Enter password again:"
+#~ msgstr "パスワードを再度入力:"
+
+#~ msgid "Enter password:"
+#~ msgstr "パスワードを入力:"
+
+#~ msgid "Output for printer %s is sent to %s"
+#~ msgstr "プリンター %s の出力は %s に送られます"
+
+#~ msgid "Output for printer %s is sent to remote printer %s on %s"
+#~ msgstr "プリンター %s の出力は、リモートプリンター %s (%s 上) に送られます"
+
+#~ msgid "Output for printer %s/%s is sent to %s"
+#~ msgstr "プリンター %s/%s の出力は %s に送られます"
+
+#~ msgid "Output for printer %s/%s is sent to remote printer %s on %s"
+#~ msgstr ""
+#~ "プリンター %s/%s の出力は、リモートプリンター %s (%s 上) に送られます"
+
 #~ msgid "Print file accepted - job ID %d."
 #~ msgstr "プリントファイルを受け付けました - ジョブ ID %d。"
 
@@ -6056,12 +6085,53 @@ msgstr "variable-bindings の長さが不定"
 #~ msgid "Print file was not accepted."
 #~ msgstr "プリントファイルが受け付けられませんでした。"
 
+#~ msgid "Printing page %d, %d%% complete."
+#~ msgstr "ページ %d を印刷中、%d%% 完了しました。"
+
+#~ msgid "Purge Jobs"
+#~ msgstr "ジョブの削除"
+
+#~ msgid ""
+#~ "Rank   Owner      Pri  Job        Files                       Total Size"
+#~ msgstr ""
+#~ "ランク 所有者     優先 ジョブ     ファイル                    合計サイズ"
+
+#~ msgid "The output bin is almost full."
+#~ msgstr "排紙トレイがほとんど一杯です。"
+
+#~ msgid "The output bin is full."
+#~ msgstr "排紙トレイが一杯です。"
+
+#~ msgid "The output bin is missing."
+#~ msgstr "排紙トレイが見つかりません。"
+
+#~ msgid "The paper tray is almost empty."
+#~ msgstr "用紙トレイが空になりかけています。"
+
+#~ msgid "The paper tray is empty."
+#~ msgstr "用紙トレイが空です。"
+
+#~ msgid "The paper tray is missing."
+#~ msgstr "用紙トレイが見つかりません。"
+
+#~ msgid "The paper tray needs to be filled."
+#~ msgstr "用紙トレイに補充が必要です。"
+
 #~ msgid "The printer URI is incorrect or no longer exists."
 #~ msgstr "プリンター URI が誤っているか、もう存在しません。"
 
 #~ msgid "The printer does not support IPP/%d.%d, trying IPP/%s."
 #~ msgstr "プリンターが IPP/%d.%d をサポートしていません。IPP/%s を試します。"
 
+#~ msgid "The printer is running low on ink."
+#~ msgstr "プリンターのインクがもうすぐなくなります。"
+
+#~ msgid "The printer is running low on toner."
+#~ msgstr "プリンターのトナーがもうすぐなくなります。"
+
+#~ msgid "There is a paper jam."
+#~ msgstr "用紙づまりが発生しています。"
+
 #~ msgid "Unable to create compressed print file"
 #~ msgstr "圧縮プリントファイルを作成できません"
 
@@ -6071,6 +6141,39 @@ msgstr "variable-bindings の長さが不定"
 #~ msgid "Unable to open compressed print file"
 #~ msgstr "圧縮プリントファイルを開けません"
 
+#~ msgid "Unable to resolve printer URI."
+#~ msgstr "プリンター URI を解決できません。"
+
+#~ msgid "Usage: cupsfilter [ options ] filename"
+#~ msgstr "使い方: cupsfilter [オプション] ファイル名"
+
+#~ msgid "Usage: lppasswd [-g groupname]"
+#~ msgstr "使い方: lppasswd [-g グループ名]"
+
+#~ msgid ""
+#~ "Usage: lppasswd [-g groupname] [username]\n"
+#~ "       lppasswd [-g groupname] -a [username]\n"
+#~ "       lppasswd [-g groupname] -x [username]"
+#~ msgstr ""
+#~ "使い方: lppasswd [-g グループ名] [ユーザー名]\n"
+#~ "        lppasswd [-g グループ名] -a [ユーザー名]\n"
+#~ "        lppasswd [-g グループ名] -x [ユーザー名]"
+
+#~ msgid ""
+#~ "Your password must be at least 6 characters long, cannot contain your "
+#~ "username, and must contain at least one letter and number."
+#~ msgstr ""
+#~ "パスワードは少なくとも 6 文字以上で、あなたのユーザー名を含んではならず、"
+#~ "少なくとも 1 つの英字および数値を含んでなければなりません。"
+
+#~ msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
+#~ msgstr ""
+#~ "cupsd: launchd(8) サポートがコンパイルされていないので、通常モードで動作し"
+#~ "ます。"
+
+#~ msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
+#~ msgstr "ipptool: \"-i\" と \"-n\" は \"-X\" と組み合わせられません。"
+
 #~ msgid "ipptool: Bad version %s for \"-V\"."
 #~ msgstr "ipptool: \"-V\" オプションに不正なバージョン %s が指定されました。"
 
@@ -6079,3 +6182,39 @@ msgstr "variable-bindings の長さが不定"
 
 #~ msgid "ipptool: Missing version for \"-V\"."
 #~ msgstr "ipptool: \"-V\" にバージョンの指定がありません。"
+
+#~ msgid "lppasswd: Only root can add or delete passwords."
+#~ msgstr "lppasswd: root だけがパスワードの追加と削除を行えます。"
+
+#~ msgid "lppasswd: Password file busy."
+#~ msgstr "lppasswd: パスワードファイルがビジー状態です。"
+
+#~ msgid "lppasswd: Password file not updated."
+#~ msgstr "lppasswd: パスワードファイルは更新されません。"
+
+#~ msgid "lppasswd: Sorry, password doesn't match."
+#~ msgstr "lppasswd: 残念ながら、パスワードがマッチしません。"
+
+#~ msgid "lppasswd: Sorry, password rejected."
+#~ msgstr "lppasswd: 残念ながら、パスワードは拒否されました。"
+
+#~ msgid "lppasswd: Sorry, passwords don't match."
+#~ msgstr "lppasswd: 残念ながら、パスワードがマッチしません。"
+
+#~ msgid "lppasswd: Unable to copy password string: %s"
+#~ msgstr "lppasswd: パスワード文字列をコピーできません: %s"
+
+#~ msgid "lppasswd: Unable to open password file: %s"
+#~ msgstr "lppasswd: パスワードファイルを開けません: %s"
+
+#~ msgid "lppasswd: Unable to write to password file: %s"
+#~ msgstr "lppasswd: パスワードファイルに書き込めません: %s"
+
+#~ msgid "lppasswd: failed to backup old password file: %s"
+#~ msgstr "lppasswd: 古いパスワードファイルのバックアップに失敗しました: %s"
+
+#~ msgid "lppasswd: failed to rename password file: %s"
+#~ msgstr "lppasswd: パスワードファイルの名前の変更に失敗しました: %s"
+
+#~ msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
+#~ msgstr "lppasswd: ユーザー \"%s\" およびグループ \"%s\" は存在しません。"
diff --git a/locale/cups_pt_BR.po b/locale/cups_pt_BR.po
deleted file mode 100644 (file)
index 7b070c1..0000000
+++ /dev/null
@@ -1,6019 +0,0 @@
-#
-# "$Id$"
-#
-#   Brazilian Portuguese message catalog for CUPS.
-#
-#   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
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: CUPS 1.7.4\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"
-"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"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-msgid "\t\t(all)"
-msgstr "\t\t(todos)"
-
-msgid "\t\t(none)"
-msgstr "\t\t(nenhum)"
-
-#, c-format
-msgid "\t%d entries"
-msgstr "\t%d registros"
-
-#, c-format
-msgid "\t%s"
-msgstr "\t%s"
-
-msgid "\tAfter fault: continue"
-msgstr "\tApós a falha: continuar"
-
-#, c-format
-msgid "\tAlerts: %s"
-msgstr "\tAlertas: %s"
-
-msgid "\tBanner required"
-msgstr "\tBanner é necessário"
-
-msgid "\tCharset sets:"
-msgstr "\tDefinições de conjunto de caracteres:"
-
-msgid "\tConnection: direct"
-msgstr "\tConexão: direta"
-
-msgid "\tConnection: remote"
-msgstr "\tConexão: remota"
-
-msgid "\tContent types: any"
-msgstr "\tTipos de conteúdos: qualquer"
-
-msgid "\tDefault page size:"
-msgstr "\tTamanho de página padrão:"
-
-msgid "\tDefault pitch:"
-msgstr "\tPitch padrão:"
-
-msgid "\tDefault port settings:"
-msgstr "\tConfiguração de porta padrão:"
-
-#, c-format
-msgid "\tDescription: %s"
-msgstr "\tDescrição: %s"
-
-msgid "\tForm mounted:"
-msgstr "\tFormulário montado:"
-
-msgid "\tForms allowed:"
-msgstr "\tFormulários permitidos:"
-
-#, c-format
-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"
-
-#, c-format
-msgid "\tLocation: %s"
-msgstr "\tLocalização: %s"
-
-msgid "\tOn fault: no alert"
-msgstr "\tCaso de falha: nenhum alerta"
-
-msgid "\tPrinter types: unknown"
-msgstr "\tTipos de impressoras: desconhecido"
-
-#, c-format
-msgid "\tStatus: %s"
-msgstr "\tEstado: %s"
-
-msgid "\tUsers allowed:"
-msgstr "\tUsuários permitidos:"
-
-msgid "\tUsers denied:"
-msgstr "\tUsuários proibidos:"
-
-msgid "\tdaemon present"
-msgstr "\tdaemon presente"
-
-msgid "\tno entries"
-msgstr "\tnenhum registro"
-
-#, c-format
-msgid "\tprinter is on device '%s' speed -1"
-msgstr "\timpressora está na velocidade -1 do dispositivo \"%s\""
-
-msgid "\tprinting is disabled"
-msgstr "\timpressão está desabilitada"
-
-msgid "\tprinting is enabled"
-msgstr "\timpressão está habilitada"
-
-#, c-format
-msgid "\tqueued for %s"
-msgstr "\tna fila de %s"
-
-msgid "\tqueuing is disabled"
-msgstr "\tenfileiramento está desabilitado"
-
-msgid "\tqueuing is enabled"
-msgstr "\tenfileiramento está habilitado"
-
-msgid "\treason unknown"
-msgstr "\tmotivo desconhecido"
-
-msgid ""
-"\n"
-"    DETAILED CONFORMANCE TEST RESULTS"
-msgstr ""
-"\n"
-"    RESULTADOS DETALHADOS DE TESTE DE CONFORMIDADE"
-
-msgid "                          Ignore specific warnings."
-msgstr "                          Ignora aviso específicos."
-
-msgid "                          Issue warnings instead of errors."
-msgstr "                          Emite avisos ao invés de erros."
-
-msgid "                REF: Page 15, section 3.1."
-msgstr "                REF: Página 15, seção 3.1."
-
-msgid "                REF: Page 15, section 3.2."
-msgstr "                REF: Página 15, seção 3.2."
-
-msgid "                REF: Page 19, section 3.3."
-msgstr "                REF: Página 19, seção 3.3."
-
-msgid "                REF: Page 20, section 3.4."
-msgstr "                REF: Página 20, seção 3.4."
-
-msgid "                REF: Page 27, section 3.5."
-msgstr "                REF: Página 27, seção 3.5."
-
-msgid "                REF: Page 42, section 5.2."
-msgstr "                REF: Página 42, seção 5.2."
-
-msgid "                REF: Pages 16-17, section 3.2."
-msgstr "                REF: Página 16-17, seção 3.2."
-
-msgid "                REF: Pages 42-45, section 5.2."
-msgstr "                REF: Página 42-45, seção 5.2."
-
-msgid "                REF: Pages 45-46, section 5.2."
-msgstr "                REF: Página 45-46, seção 5.2."
-
-msgid "                REF: Pages 48-49, section 5.2."
-msgstr "                REF: Página 48-49, seção 5.2."
-
-msgid "                REF: Pages 52-54, section 5.2."
-msgstr "                REF: Página 52-54, seção 5.2."
-
-#, c-format
-msgid "        %-39.39s %.0f bytes"
-msgstr "        %-39.39s %.0f bytes"
-
-#, c-format
-msgid "        PASS    Default%s"
-msgstr "        PASSOU  Default%s"
-
-msgid "        PASS    DefaultImageableArea"
-msgstr "        PASSOU  DefaultImageableArea"
-
-msgid "        PASS    DefaultPaperDimension"
-msgstr "        PASSOU  DefaultPaperDimension"
-
-msgid "        PASS    FileVersion"
-msgstr "        PASSOU  FileVersion"
-
-msgid "        PASS    FormatVersion"
-msgstr "        PASSOU  FormatVersion"
-
-msgid "        PASS    LanguageEncoding"
-msgstr "        PASSOU  LanguageEncoding"
-
-msgid "        PASS    LanguageVersion"
-msgstr "        PASSOU  LanguageVersion"
-
-msgid "        PASS    Manufacturer"
-msgstr "        PASSOU  Manufacturer"
-
-msgid "        PASS    ModelName"
-msgstr "        PASSOU  ModelName"
-
-msgid "        PASS    NickName"
-msgstr "        PASSOU  NickName"
-
-msgid "        PASS    PCFileName"
-msgstr "        PASSOU  PCFileName"
-
-msgid "        PASS    PSVersion"
-msgstr "        PASSOU  PSVersion"
-
-msgid "        PASS    PageRegion"
-msgstr "        PASSOU  PageRegion"
-
-msgid "        PASS    PageSize"
-msgstr "        PASSOU  PageSize"
-
-msgid "        PASS    Product"
-msgstr "        PASSOU  Product"
-
-msgid "        PASS    ShortNickName"
-msgstr "        PASSOU  ShortNickName"
-
-#, c-format
-msgid "        WARN    %s has no corresponding options."
-msgstr "        AVISO   %s não possui opções correspondentes."
-
-#, c-format
-msgid ""
-"        WARN    %s shares a common prefix with %s\n"
-"                REF: Page 15, section 3.2."
-msgstr ""
-"        AVISO   %s compartilha um prefixo comum com %s\n"
-"                REF: Página 15, seção 3.2."
-
-#, 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 ""
-"        AVISO   A opção Duplex de palavra-chave %s pode não funcionar como "
-"esperado e deve ser renomeada para Duplex.\n"
-"                REF: Página 122, seção 5.17"
-
-msgid "        WARN    File contains a mix of CR, LF, and CR LF line endings."
-msgstr ""
-"        AVISO   Arquivo contém fim das linhas com uma mistura de CR, LF e CR "
-"LF."
-
-msgid ""
-"        WARN    LanguageEncoding required by PPD 4.3 spec.\n"
-"                REF: Pages 56-57, section 5.3."
-msgstr ""
-"        AVISO   LanguageEncoding é necessário pela especificação PPD 4.3.\n"
-"                REF: Páginas 56-57, seção 5.3."
-
-#, c-format
-msgid "        WARN    Line %d only contains whitespace."
-msgstr "        AVISO   Linha %d contém somente espaço em branco."
-
-msgid ""
-"        WARN    Manufacturer required by PPD 4.3 spec.\n"
-"                REF: Pages 58-59, section 5.3."
-msgstr ""
-"        AVISO   Fabricante é necessário pela especificação PPD 4.3.\n"
-"                REF: Páginas 58-59, seção 5.3."
-
-msgid ""
-"        WARN    Non-Windows PPD files should use lines ending with only LF, "
-"not CR LF."
-msgstr ""
-"        AVISO   Arquivos PPD de sistemas não-Windows deveriam usar fim de "
-"linhas somente com LR, e não CR LF."
-
-#, c-format
-msgid ""
-"        WARN    Obsolete PPD version %.1f.\n"
-"                REF: Page 42, section 5.2."
-msgstr ""
-"        AVISO   PPD versão %.1f está obsoleto.\n"
-"                REF: Página 42, seção 5.2."
-
-msgid ""
-"        WARN    PCFileName longer than 8.3 in violation of PPD spec.\n"
-"                REF: Pages 61-62, section 5.3."
-msgstr ""
-"        AVISO   PCFileName maior que 8.3 em violação com especificação PPD.\n"
-"                REF: Páginas 61-62, seção 5.3."
-
-msgid ""
-"        WARN    PCFileName should contain a unique filename.\n"
-"                REF: Pages 61-62, section 5.3."
-msgstr ""
-"        AVISO   PCFileName deveria conter um nome de arquivo único.\n"
-"                REF: Páginas 61-62, seção 5.3."
-
-msgid ""
-"        WARN    Protocols contains PJL but JCL attributes are not set.\n"
-"                REF: Pages 78-79, section 5.7."
-msgstr ""
-"        AVISO   Protocolos contêm PJL, mas atributos de JCL não estão "
-"definidos.\n"
-"                REF: Páginas 78-79, seção 5.7."
-
-msgid ""
-"        WARN    Protocols contains both PJL and BCP; expected TBCP.\n"
-"                REF: Pages 78-79, section 5.7."
-msgstr ""
-"        AVISO   Protocolos contêm ambos PJL e BCP; esperava-se TBCP.\n"
-"                REF: Páginas 78-79, seção 5.7."
-
-msgid ""
-"        WARN    ShortNickName required by PPD 4.3 spec.\n"
-"                REF: Pages 64-65, section 5.3."
-msgstr ""
-"        AVISO   ShortNickName é necessário pela especificação PPD 4.3.\n"
-"                REF: Páginas 64-65, seção 5.3."
-
-msgid "       cupsaddsmb [options] -a"
-msgstr "     cupsaddsmb [opções] -a"
-
-msgid "       cupstestdsc [options] -"
-msgstr "     cupstestdsc [opções] -"
-
-msgid "       program | cupstestppd [options] -"
-msgstr "     programa | cupstestppd [opções] -"
-
-#, c-format
-msgid ""
-"      %s  \"%s %s\" conflicts with \"%s %s\"\n"
-"                (constraint=\"%s %s %s %s\")."
-msgstr ""
-"      %s  \"%s %s\" conflita com \"%s %s\"\n"
-"                (restrição=\"%s %s %s %s\")."
-
-#, c-format
-msgid "      %s  %s %s does not exist."
-msgstr "      %s  %s %s não existe."
-
-#, c-format
-msgid "      %s  %s file \"%s\" has the wrong capitalization."
-msgstr "      %s  Arquivo de %s \"%s\" possui letra maiúscula incorreta."
-
-#, c-format
-msgid ""
-"      %s  Bad %s choice %s.\n"
-"                REF: Page 122, section 5.17"
-msgstr ""
-"      %s  Escolha %s inválida para %s.\n"
-"                REF: Página 122, seção 5.17"
-
-#, c-format
-msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s, choice %s."
-msgstr ""
-"      %s  Má string de tradução de \"%s\" em UTF-8 para a opção %s, escolha "
-"%s."
-
-#, c-format
-msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s."
-msgstr "      %s  Má string de tradução de \"%s\" em UTF-8 para a opção %s."
-
-#, c-format
-msgid "      %s  Bad cupsFilter value \"%s\"."
-msgstr "      %s  Valor \"%s\" inválido para cupsFilter."
-
-#, c-format
-msgid "      %s  Bad cupsFilter2 value \"%s\"."
-msgstr "      %s  Valor \"%s\" inválido para cupsFilter2."
-
-#, c-format
-msgid "      %s  Bad cupsICCProfile %s."
-msgstr "      %s  cupsICCProfile %s inválido."
-
-#, c-format
-msgid "      %s  Bad cupsPreFilter value \"%s\"."
-msgstr "      %s  Valor \"%s\" inválido para cupsPreFilter."
-
-#, c-format
-msgid "      %s  Bad cupsUIConstraints %s: \"%s\""
-msgstr "      %s  cupsUIConstraints %s inválido: \"%s\""
-
-#, c-format
-msgid "      %s  Bad language \"%s\"."
-msgstr "      %s  Idioma \"%s\" inválido."
-
-#, c-format
-msgid "      %s  Bad permissions on %s file \"%s\"."
-msgstr "      %s  Permissões inválidas no arquivo %s \"%s\"."
-
-#, c-format
-msgid "      %s  Bad spelling of %s - should be %s."
-msgstr "      %s  Pronúncia incorreta de %s - deveria ser %s."
-
-#, c-format
-msgid "      %s  Cannot provide both APScanAppPath and APScanAppBundleID."
-msgstr ""
-"      %s  Não é possível fornecer ambos APScanAppPath e APScanAppBundleID."
-
-#, c-format
-msgid "      %s  Default choices conflicting."
-msgstr "      %s  Escolhas padrão conflitando."
-
-#, c-format
-msgid "      %s  Empty cupsUIConstraints %s"
-msgstr "      %s  cupsUIConstraints %s vazia"
-
-#, c-format
-msgid "      %s  Missing \"%s\" translation string for option %s, choice %s."
-msgstr ""
-"      %s  Faltando string de tradução de \"%s\" para a opção %s, escolha %s."
-
-#, c-format
-msgid "      %s  Missing \"%s\" translation string for option %s."
-msgstr "      %s  Faltando string de tradução de \"%s\" para a opção %s."
-
-#, c-format
-msgid "      %s  Missing %s file \"%s\"."
-msgstr "      %s  Faltando %s arquivo \"%s\"."
-
-#, c-format
-msgid ""
-"      %s  Missing REQUIRED PageRegion option.\n"
-"                REF: Page 100, section 5.14."
-msgstr ""
-"      %s  Faltando opção NECESSÁRIA PageRegion.\n"
-"                REF: Página 100, seção 5.14."
-
-#, c-format
-msgid ""
-"      %s  Missing REQUIRED PageSize option.\n"
-"                REF: Page 99, section 5.14."
-msgstr ""
-"      %s  Faltando opção NECESSÁRIA PageSize.\n"
-"                REF: Página 99, seção 5.14."
-
-#, c-format
-msgid "      %s  Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"."
-msgstr ""
-"      %s  Faltando escolha de *%s %s em UIConstraints \"*%s %s *%s %s\"."
-
-#, c-format
-msgid "      %s  Missing choice *%s %s in cupsUIConstraints %s: \"%s\""
-msgstr "      %s  Faltando escolha *%s %s em cupsUIConstraints %s: \"%s\""
-
-#, c-format
-msgid "      %s  Missing cupsUIResolver %s"
-msgstr "      %s  Faltando cupsUIResolver %s"
-
-#, c-format
-msgid "      %s  Missing option %s in UIConstraints \"*%s %s *%s %s\"."
-msgstr "      %s  Faltando a opção %s em UIConstraints \"*%s %s *%s %s\"."
-
-#, c-format
-msgid "      %s  Missing option %s in cupsUIConstraints %s: \"%s\""
-msgstr "      %s  Faltando a opção %s em cupsUIConstraints %s: \"%s\""
-
-#, c-format
-msgid "      %s  No base translation \"%s\" is included in file."
-msgstr "      %s  Nenhuma tradução base de \"%s\" está inclusa no arquivo."
-
-#, c-format
-msgid ""
-"      %s  REQUIRED %s does not define choice None.\n"
-"                REF: Page 122, section 5.17"
-msgstr ""
-"      %s  %s NECESSÁRIO não define a escolha None.\n"
-"                REF: Página 122, seção 5.17"
-
-#, c-format
-msgid "      %s  Size \"%s\" defined for %s but not for %s."
-msgstr "      %s  Tamanho \"%s\" definido para %s, mas não para %s."
-
-#, c-format
-msgid "      %s  Size \"%s\" has unexpected dimensions (%gx%g)."
-msgstr "      %s  Tamanho \"%s\" tem dimensões inesperadas (%gx%g)."
-
-#, c-format
-msgid "      %s  Size \"%s\" should be \"%s\"."
-msgstr "      %s  Tamanho \"%s\" deveria ser \"%s\"."
-
-#, c-format
-msgid "      %s  Size \"%s\" should be the Adobe standard name \"%s\"."
-msgstr ""
-"      %s  Tamanho \"%s\" deveria ser no padrão do Adobo chamado \"%s\"."
-
-#, c-format
-msgid "      %s  cupsICCProfile %s hash value collides with %s."
-msgstr "      %s  Valor de hash de cupsICCProfile %s colide com %s."
-
-#, c-format
-msgid "      %s  cupsUIResolver %s causes a loop."
-msgstr "      %s  cupsUIResolver %s causa um loop."
-
-#, c-format
-msgid ""
-"      %s  cupsUIResolver %s does not list at least two different options."
-msgstr ""
-"      %s  cupsUIResolver %s não lista pelo menos duas opções diferentes."
-
-#, c-format
-msgid ""
-"      **FAIL**  %s must be 1284DeviceID\n"
-"                REF: Page 72, section 5.5"
-msgstr ""
-"      **FALHA** %s deve ser 1284DeviceID\n"
-"                REF: Página 72, seção 5.5"
-
-#, c-format
-msgid ""
-"      **FAIL**  Bad Default%s %s\n"
-"                REF: Page 40, section 4.5."
-msgstr ""
-"      **FALHA** Default%s inválido %s\n"
-"                REF: Página 40, seção 4.5."
-
-#, c-format
-msgid ""
-"      **FAIL**  Bad DefaultImageableArea %s\n"
-"                REF: Page 102, section 5.15."
-msgstr ""
-"      **FALHA** DefaultImageableArea inválido %s\n"
-"                REF: Página 102, seção 5.15."
-
-#, c-format
-msgid ""
-"      **FAIL**  Bad DefaultPaperDimension %s\n"
-"                REF: Page 103, section 5.15."
-msgstr ""
-"      **FALHA** DefaultPaperDimension inválido %s\n"
-"                REF: Página 103, seção 5.15."
-
-#, c-format
-msgid ""
-"      **FAIL**  Bad FileVersion \"%s\"\n"
-"                REF: Page 56, section 5.3."
-msgstr ""
-"      **FALHA** FileVersion inválido \"%s\"\n"
-"                REF: Página 56, seção 5.3."
-
-#, c-format
-msgid ""
-"      **FAIL**  Bad FormatVersion \"%s\"\n"
-"                REF: Page 56, section 5.3."
-msgstr ""
-"      **FALHA** FormatVersion inválido \"%s\"\n"
-"                REF: Página 56, seção 5.3."
-
-msgid ""
-"      **FAIL**  Bad JobPatchFile attribute in file\n"
-"                REF: Page 24, section 3.4."
-msgstr ""
-"      **FALHA** Atributo inválido de JobPatchFile no arquivo\n"
-"                REF: Página 24, seção 3.4."
-
-#, c-format
-msgid "      **FAIL**  Bad LanguageEncoding %s - must be ISOLatin1."
-msgstr "      **FALHA** LanguageEncoding inválido %s - tem que ser ISOLatin1."
-
-#, c-format
-msgid "      **FAIL**  Bad LanguageVersion %s - must be English."
-msgstr "      **FALHA** LanguageVersion inválido %s - deve ser Inglês."
-
-#, c-format
-msgid ""
-"      **FAIL**  Bad Manufacturer (should be \"%s\")\n"
-"                REF: Page 211, table D.1."
-msgstr ""
-"      **FALHA** Manufacturer inválido (deveria ser \"%s\")\n"
-"                REF: Página 211, tabela D.1."
-
-#, c-format
-msgid ""
-"      **FAIL**  Bad ModelName - \"%c\" not allowed in string.\n"
-"                REF: Pages 59-60, section 5.3."
-msgstr ""
-"      **FALHA** ModelName inválido - \"%c\" não permitido na string.\n"
-"                REF: Páginas 59-60, seção 5.3."
-
-msgid ""
-"      **FAIL**  Bad PSVersion - not \"(string) int\".\n"
-"                REF: Pages 62-64, section 5.3."
-msgstr ""
-"      **FALHA** PSVersion inválida - não \"(string) int\".\n"
-"                REF: Páginas 62-64, seção 5.3."
-
-msgid ""
-"      **FAIL**  Bad Product - not \"(string)\".\n"
-"                REF: Page 62, section 5.3."
-msgstr ""
-"      **FALHA** Product inválido - não \"(string)\".\n"
-"                REF: Página 62, seção 5.3."
-
-msgid ""
-"      **FAIL**  Bad ShortNickName - longer than 31 chars.\n"
-"                REF: Pages 64-65, section 5.3."
-msgstr ""
-"      **FALHA** ShortNickName inválido - maior do que 31 caracteres.\n"
-"                REF: Páginas 64-65, seção 5.3."
-
-#, c-format
-msgid ""
-"      **FAIL**  Bad option %s choice %s\n"
-"                REF: Page 84, section 5.9"
-msgstr ""
-"      **FALHA** Opção inválido %s escolha %s\n"
-"                REF: Página 84, seção 5.9"
-
-#, c-format
-msgid "      **FAIL**  Default option code cannot be interpreted: %s"
-msgstr "      **FALHA** Código de opção padrão não pode ser interpretado: %s"
-
-#, c-format
-msgid ""
-"      **FAIL**  Default translation string for option %s choice %s contains "
-"8-bit characters."
-msgstr ""
-"      **FALHA** String de tradução padrão para opção %s escolha %s contém "
-"caracteres de 8-bit."
-
-#, c-format
-msgid ""
-"      **FAIL**  Default translation string for option %s contains 8-bit "
-"characters."
-msgstr ""
-"      **FALHA** String de tradução padrão para opção %s contém caracteres de "
-"8-bit."
-
-#, c-format
-msgid "      **FAIL**  Group names %s and %s differ only by case."
-msgstr ""
-"      **FALHA** Nomes dos grupos %s e %s se diferem somente por maiúsculo/"
-"minúsculo."
-
-#, c-format
-msgid "      **FAIL**  Multiple occurrences of option %s choice name %s."
-msgstr "      **FALHA** Múltiplas ocorrências da opção %s escolha de nome %s."
-
-#, c-format
-msgid "      **FAIL**  Option %s choice names %s and %s differ only by case."
-msgstr ""
-"      **FALHA** Opção %s escolha de nomes %s e %s se diferem somente por "
-"maiúsculo/minúsculo."
-
-#, c-format
-msgid "      **FAIL**  Option names %s and %s differ only by case."
-msgstr ""
-"      **FALHA** Os nomes de opção %s e %s se diferem somente por maiúsculo/"
-"minúsculo."
-
-#, c-format
-msgid ""
-"      **FAIL**  REQUIRED Default%s\n"
-"                REF: Page 40, section 4.5."
-msgstr ""
-"      **FALHA** NECESSÁRIO Default%s\n"
-"                REF: Página 40, seção 4.5."
-
-msgid ""
-"      **FAIL**  REQUIRED DefaultImageableArea\n"
-"                REF: Page 102, section 5.15."
-msgstr ""
-"      **FALHA** NECESSÁRIO DefaultImageableArea\n"
-"                REF: Página 102, seção 5.15."
-
-msgid ""
-"      **FAIL**  REQUIRED DefaultPaperDimension\n"
-"                REF: Page 103, section 5.15."
-msgstr ""
-"      **FALHA** NECESSÁRIO DefaultPaperDimension\n"
-"                REF: Página 103, seção 5.15."
-
-msgid ""
-"      **FAIL**  REQUIRED FileVersion\n"
-"                REF: Page 56, section 5.3."
-msgstr ""
-"      **FALHA** NECESSÁRIO FileVersion\n"
-"                REF: Página 56, seção 5.3."
-
-msgid ""
-"      **FAIL**  REQUIRED FormatVersion\n"
-"                REF: Page 56, section 5.3."
-msgstr ""
-"      **FALHA** NECESSÁRIO FormatVersion\n"
-"                REF: Página 56, seção 5.3."
-
-#, c-format
-msgid ""
-"      **FAIL**  REQUIRED ImageableArea for PageSize %s\n"
-"                REF: Page 41, section 5.\n"
-"                REF: Page 102, section 5.15."
-msgstr ""
-"      **FALHA** NECESSÁRIO ImageableArea para PageSize %s\n"
-"                REF: Página 41, seção 5.\n"
-"                REF: Página 102, seção 5.15."
-
-msgid ""
-"      **FAIL**  REQUIRED LanguageEncoding\n"
-"                REF: Pages 56-57, section 5.3."
-msgstr ""
-"      **FALHA** NECESSÁRIO LanguageEncoding\n"
-"                REF: Páginas 56-57, seção 5.3."
-
-msgid ""
-"      **FAIL**  REQUIRED LanguageVersion\n"
-"                REF: Pages 57-58, section 5.3."
-msgstr ""
-"      **FALHA** NECESSÁRIO LanguageVersion\n"
-"                REF: Páginas 57-58, seção 5.3."
-
-msgid ""
-"      **FAIL**  REQUIRED Manufacturer\n"
-"                REF: Pages 58-59, section 5.3."
-msgstr ""
-"      **FALHA** NECESSÁRIO Manufacturer\n"
-"                REF: Páginas 58-59, seção 5.3."
-
-msgid ""
-"      **FAIL**  REQUIRED ModelName\n"
-"                REF: Pages 59-60, section 5.3."
-msgstr ""
-"      **FALHA** NECESSÁRIO ModelName\n"
-"                REF: Páginas 59-60, seção 5.3."
-
-msgid ""
-"      **FAIL**  REQUIRED NickName\n"
-"                REF: Page 60, section 5.3."
-msgstr ""
-"      **FALHA** NECESSÁRIO NickName\n"
-"                REF: Página 60, seção 5.3."
-
-msgid ""
-"      **FAIL**  REQUIRED PCFileName\n"
-"                REF: Pages 61-62, section 5.3."
-msgstr ""
-"      **FALHA** NECESSÁRIO PCFileName\n"
-"                REF: Páginas 61-62, seção 5.3."
-
-msgid ""
-"      **FAIL**  REQUIRED PSVersion\n"
-"                REF: Pages 62-64, section 5.3."
-msgstr ""
-"      **FALHA** NECESSÁRIO PSVersion\n"
-"                REF: Páginas 62-64, seção 5.3."
-
-msgid ""
-"      **FAIL**  REQUIRED PageRegion\n"
-"                REF: Page 100, section 5.14."
-msgstr ""
-"      **FALHA** NECESSÁRIO PageRegion\n"
-"                REF: Página 100, seção 5.14."
-
-msgid ""
-"      **FAIL**  REQUIRED PageSize\n"
-"                REF: Page 41, section 5.\n"
-"                REF: Page 99, section 5.14."
-msgstr ""
-"      **FALHA** NECESSÁRIO PageSize\n"
-"                REF: Página 41, seção 5.\n"
-"                REF: Página 99, seção 5.14."
-
-msgid ""
-"      **FAIL**  REQUIRED PageSize\n"
-"                REF: Pages 99-100, section 5.14."
-msgstr ""
-"      **FALHA** NECESSÁRIO PageSize\n"
-"                REF: Páginas 99-100, seção 5.14."
-
-#, c-format
-msgid ""
-"      **FAIL**  REQUIRED PaperDimension for PageSize %s\n"
-"                REF: Page 41, section 5.\n"
-"                REF: Page 103, section 5.15."
-msgstr ""
-"      **FALHA** NECESSÁRIO PaperDimension para PageSize %s\n"
-"                REF: Página 41, seção 5.\n"
-"                REF: Página 103, seção 5.15."
-
-msgid ""
-"      **FAIL**  REQUIRED Product\n"
-"                REF: Page 62, section 5.3."
-msgstr ""
-"      **FALHA** NECESSÁRIO Product\n"
-"                REF: Página 62, seção 5.3."
-
-msgid ""
-"      **FAIL**  REQUIRED ShortNickName\n"
-"                REF: Page 64-65, section 5.3."
-msgstr ""
-"      **FALHA** NECESSÁRIO ShortNickName\n"
-"                REF: Página 64-65, seção 5.3."
-
-#, c-format
-msgid "      **FAIL**  Unable to open PPD file - %s on line %d."
-msgstr "      **FALHA** Não foi possível abrir o arquivo PPD - %s na linha %d."
-
-#, c-format
-msgid "    %d ERRORS FOUND"
-msgstr "    %d ERROS ENCONTRADOS"
-
-msgid "    -h       Show program usage"
-msgstr "    -h       Mostra formas de uso do programa"
-
-#, c-format
-msgid ""
-"    Bad %%%%BoundingBox: on line %d.\n"
-"        REF: Page 39, %%%%BoundingBox:"
-msgstr ""
-"    %%%%BoundingBox inválida: na linha %d.\n"
-"        REF: Página 39, %%%%BoundingBox:"
-
-#, c-format
-msgid ""
-"    Bad %%%%Page: on line %d.\n"
-"        REF: Page 53, %%%%Page:"
-msgstr ""
-"    %%%%Page inválida: na linha %d.\n"
-"        REF: Página 53, %%%%Page:"
-
-#, c-format
-msgid ""
-"    Bad %%%%Pages: on line %d.\n"
-"        REF: Page 43, %%%%Pages:"
-msgstr ""
-"    %%%%Pages inválida: na linha %d.\n"
-"        REF: Página 43, %%%%Pages:"
-
-#, c-format
-msgid ""
-"    Line %d is longer than 255 characters (%d).\n"
-"        REF: Page 25, Line Length"
-msgstr ""
-"    Linha %d é maior do que 255 caracteres (%d).\n"
-"        REF: Página 25, Line Length"
-
-msgid ""
-"    Missing %!PS-Adobe-3.0 on first line.\n"
-"        REF: Page 17, 3.1 Conforming Documents"
-msgstr ""
-"    Faltando %!PS-Adobe-3.0 na primeira linha.\n"
-"        REF: Página 17, 3.1 Conforming Documents"
-
-#, c-format
-msgid "    Missing %%EndComments comment.        REF: Page 41, %%EndComments"
-msgstr ""
-"    Faltando comentário de %%EndComments.        REF: Página 41, "
-"%%EndComments"
-
-#, c-format
-msgid ""
-"    Missing or bad %%BoundingBox: comment.\n"
-"        REF: Page 39, %%BoundingBox:"
-msgstr ""
-"    Faltando %%BoundingBox ou é inválido: comentário.\n"
-"        REF: Página 39, %%BoundingBox:"
-
-#, c-format
-msgid ""
-"    Missing or bad %%Page: comments.\n"
-"        REF: Page 53, %%Page:"
-msgstr ""
-"    Faltando %%Page ou inválido: comentários.\n"
-"        REF: Página 53, %%Page:"
-
-#, c-format
-msgid ""
-"    Missing or bad %%Pages: comment.\n"
-"        REF: Page 43, %%Pages:"
-msgstr ""
-"    Faltando %%Pages ou inválido: comentário.\n"
-"        REF: Página 43, %%Pages:"
-
-msgid "    NO ERRORS FOUND"
-msgstr "    NENHUM ERRO ENCONTRADO"
-
-#, c-format
-msgid "    Saw %d lines that exceeded 255 characters."
-msgstr "    Cortadas %d linhas que excederam a 255 caracteres."
-
-#, c-format
-msgid "    Too many %%BeginDocument comments."
-msgstr "    Número excessivo de comentários de %%BeginDocument."
-
-#, c-format
-msgid "    Too many %%EndDocument comments."
-msgstr "    Número excessivo de comentários de %%EndDocument."
-
-msgid "    Warning: file contains binary data."
-msgstr "    Aviso: arquivo contém dados binários."
-
-#, c-format
-msgid "    Warning: no %%EndComments comment in file."
-msgstr "    Aviso: nenhum comentário de %%EndComments no arquivo."
-
-#, c-format
-msgid "    Warning: obsolete DSC version %.1f in file."
-msgstr "    Aviso: versão %.1f obsoleta de DSC no arquivo."
-
-msgid "  ! expression            Unary NOT of expression."
-msgstr "  ! expressão             Unário NÃO de expressão."
-
-msgid "  ( expressions )         Group expressions."
-msgstr "  ( expressões )          Grupo de expressões."
-
-msgid "  --[no-]debug-logging    Turn debug logging on/off."
-msgstr "  --[no-]debug-logging    Habilita ou desabilita depuração dos logs."
-
-msgid "  --[no-]remote-admin     Turn remote administration on/off."
-msgstr "  --[no-]remote-admin     Habilita ou desabilita administração remota."
-
-msgid "  --[no-]remote-any       Allow/prevent access from the Internet."
-msgstr "  --[no-]remote-any       Permite/proíbe acesso por meio da Internet."
-
-msgid "  --[no-]share-printers   Turn printer sharing on/off."
-msgstr ""
-"  --[no-]share-printers   Habilita ou desabilita compartilhamento de "
-"impressora."
-
-msgid "  --[no-]user-cancel-any  Allow/prevent users to cancel any job."
-msgstr ""
-"  --[no-]user-cancel-any  Permite/proíbe os usuários cancelar qualquer "
-"trabalho."
-
-msgid "  --cr                    End lines with CR (Mac OS 9)."
-msgstr "  --cr                    Fim de linhas com CR (Mac OS 9)."
-
-msgid "  --crlf                  End lines with CR + LF (Windows)."
-msgstr "  --crlf                  Fim de linhas com CR + LF (Windows)."
-
-msgid "  --domain regex          Match domain to regular expression."
-msgstr "  --domain regex          Corresponde o domínio à expressão regular."
-
-msgid ""
-"  --exec utility [argument ...] ;\n"
-"                          Execute program if true."
-msgstr ""
-"  --exec utilitário [argumento ...] ;\n"
-"                          Executa o programa se verdadeiro."
-
-msgid "  --false                 Always false."
-msgstr "  --false                 Sempre falso."
-
-msgid "  --help                  Show this help."
-msgstr "  --help                  Mostra esta ajuda."
-
-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 "  --local                 True if service is local."
-msgstr "  --local                 Verdadeiro se o serviço for local."
-
-msgid "  --ls                    List attributes."
-msgstr "  --ls                    Lista os atributos."
-
-msgid "  --name regex            Match service name to regular expression."
-msgstr ""
-"  --name regex            Corresponde o nome do serviço à expressão regular."
-
-msgid "  --not expression        Unary NOT of expression."
-msgstr "  --not expressão         Unário NÃO da expressão."
-
-msgid "  --path regex            Match resource path to regular expression."
-msgstr ""
-"  --path regex            Corresponde o caminho do recurso à expressão "
-"regular."
-
-msgid "  --port number[-number]  Match port to number or range."
-msgstr "  --port número[-número]  Corresponde a porta ao número ou faixa."
-
-msgid "  --print                 Print URI if true."
-msgstr "  --print                 Exibe a URI se verdadeiro."
-
-msgid "  --print-name            Print service name if true."
-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."
-
-msgid "  --remote                True if service is remote."
-msgstr "  --remote                Verdeiro se o serviço for remoto."
-
-msgid "  --true                  Always true."
-msgstr "  --true                  Sempre verdadeiro."
-
-msgid "  --txt key               True if the TXT record contains the key."
-msgstr ""
-"  --txt chave             Verdadeiro se o registro TXT contiver a chave."
-
-msgid "  --txt-* regex           Match TXT record key to regular expression."
-msgstr ""
-"  --txt-* regex           Corresponde a chave de registro TXT à expressão "
-"regular."
-
-msgid "  --uri regex             Match URI to regular expression."
-msgstr "  --uri regex             Corresponde a URI à expressão regular."
-
-msgid "  --version               Show program version."
-msgstr "  --version               Mostra a versão do programa."
-
-msgid "  -4                      Connect using IPv4."
-msgstr "  -4                      Conecta usando IPv4."
-
-msgid "  -6                      Connect using IPv6."
-msgstr "  -6                      Conecta usando IPv6."
-
-msgid "  -C                      Send requests using chunking (default)."
-msgstr "  -C                      Envia requisições usando chunking (padrão)."
-
-msgid "  -D                      Remove the input file when finished."
-msgstr "  -D                      Remove o arquivo de entrada ao finalizar."
-
-msgid "  -D name=value           Set named variable to value."
-msgstr "  -D nome=valor           Define a variável \"nome\" com \"valor\"."
-
-msgid "  -E                      Encrypt the connection."
-msgstr "  -E                      Criptografa a conexão."
-
-msgid "  -E                      Test with HTTP Upgrade to TLS."
-msgstr "  -E                      Testa com HTTP Upgrade para TLS."
-
-msgid ""
-"  -F                      Run in the foreground but detach from console."
-msgstr ""
-"  -F                      Executa em primeiro plano, mas desanexa do console."
-
-msgid "  -H samba-server         Use the named SAMBA server."
-msgstr ""
-"  -H servidor-samba       Usa o servidor SAMBA chamado  \"servidor-samba\"."
-
-msgid "  -I                      Ignore errors."
-msgstr "  -I                      Ignora erros."
-
-msgid "  -I include-dir          Add include directory to search path."
-msgstr ""
-"  -I dir-include          Adiciona diretório de include ao caminho de "
-"pesquisa."
-
-msgid "  -I {filename,filters,none,profiles}"
-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.ppd         Set PPD file."
-msgstr "  -P arquivo.ppd          Define arquivo PPD."
-
-msgid "  -P number[-number]      Match port to number or range."
-msgstr "  -P número[-número]      Corresponde a porta ao número ou faixa."
-
-msgid "  -R root-directory       Set alternate root."
-msgstr "  -R diretório-raiz       Define diretório-raiz alternativo."
-
-msgid "  -S                      Test with SSL encryption."
-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."
-
-msgid "  -T seconds              Set the receive/send timeout in seconds."
-msgstr ""
-"  -T segundos             Define o limite de tempo de recebimento/envio "
-"em                                segundos."
-
-msgid "  -U username             Specify username."
-msgstr "  -U usuário              Especifica nome do usuário."
-
-msgid "  -V version              Set default IPP version."
-msgstr "  -V versão               Define versão padrão de IPP."
-
-msgid ""
-"  -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,"
-"translations}"
-msgstr ""
-"  -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,"
-"translations}"
-
-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 catalog.po           Load the specified message catalog."
-msgstr ""
-"  -c catálogo.po          Carrega o catálogo de mensagens especificado."
-
-msgid "  -c cups-files.conf      Set cups-files.conf file to use."
-msgstr ""
-"  -c cups-files.conf      Define o arquivo cups-files.conf para ser usado."
-
-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\"."
-
-msgid "  -d output-dir           Specify the output directory."
-msgstr "  -d dir-saída            Especifica o diretório de saída."
-
-msgid "  -d printer              Use the named printer."
-msgstr "  -d impressora           Usa a impressora informada."
-
-msgid "  -d regex                Match domain to regular expression."
-msgstr "  -d regex                Corresponde o domínio à expressão regular."
-
-msgid "  -e                      Use every filter from the PPD file."
-msgstr "  -e                      Usa todos os filtros do arquivo PPD."
-
-msgid "  -f                      Run in the foreground."
-msgstr "  -f                      Executa em primeiro plano."
-
-msgid "  -f filename             Set default request filename."
-msgstr ""
-"  -f arquivo              Define o nome de arquivo de requisição padrão."
-
-msgid "  -h                      Show this usage message."
-msgstr "  -h                      Exibe esta mensagem de uso."
-
-msgid "  -h regex                Match hostname to regular expression."
-msgstr ""
-"  -h regex                Corresponde o nome da máquina à expressão regular."
-
-msgid "  -h server[:port]        Specify server address."
-msgstr "  -h servidor[:porta]     Especifica o endereço do servidor."
-
-msgid "  -i mime/type            Set input MIME type (otherwise auto-typed)."
-msgstr ""
-"  -i tipo-mime            Define o tipo MIME de entrada (caso "
-"contrário,                                  tipo automático)."
-
-msgid ""
-"  -i seconds              Repeat the last file with the given time interval."
-msgstr ""
-"  -i segundos             Repete o último arquivo com o tempo de intervalo "
-"dado."
-
-msgid ""
-"  -j job-id[,N]           Filter file N from the specified job (default is "
-"file 1)."
-msgstr ""
-"  -j job-id[,N]           Filtra o arquivo N do trabalho especificado "
-"(o                                  padrão é o arquivo 1)."
-
-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 lang[,lang,...]      Specify the output language(s) (locale)."
-msgstr "  -l idioma[,idioma,...]  Especifica o(s) idioma(s) de saída (locale)."
-
-msgid "  -m                      Use the ModelName value as the filename."
-msgstr ""
-"  -m                      Usa o valor de ModelName como o nome de arquivo."
-
-msgid ""
-"  -m mime/type            Set output MIME type (otherwise application/pdf)."
-msgstr ""
-"  -m tipo-mime            Define o tipo MIME de saída (caso "
-"contrário,                                    aplicação/pdf)."
-
-msgid "  -n copies               Set number of copies."
-msgstr "  -n cópias               Define número de cópias."
-
-msgid ""
-"  -n count                Repeat the last file the given number of times."
-msgstr ""
-"  -n contagem             Repete o último arquivo o número de vezes dado."
-
-msgid "  -n regex                Match service name to regular expression."
-msgstr ""
-"  -n regex                Corresponde o nome do serviço à expressão regular."
-
-msgid ""
-"  -o filename.drv         Set driver information file (otherwise ppdi.drv)."
-msgstr ""
-"  -o arquivo.drv          Define o arquivo de informações do "
-"driver                          (caso contrário, ppdi.drv)."
-
-msgid "  -o filename.ppd[.gz]    Set output file (otherwise stdout)."
-msgstr ""
-"  -o arquivo.ppd[.gz]     Define arquivo de saída (caso contrário, stdout)."
-
-msgid "  -o name=value           Set option(s)."
-msgstr "  -o nome=valor           Define opção/opções."
-
-msgid "  -p                      Print URI if true."
-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 "
-"código                              de saída."
-
-msgid "  -q                      Run silently."
-msgstr "  -q                      Executa silenciosamente."
-
-msgid "  -r                      True if service is remote."
-msgstr "  -r                      Verdadeiro se o serviço for remoto."
-
-msgid "  -r                      Use 'relaxed' open mode."
-msgstr "  -r                      Usa modo aberto \"relaxado\"."
-
-msgid "  -s                      Print service name if true."
-msgstr "  -s                      Exibe o nome do serviço se verdadeiro."
-
-msgid "  -t                      Produce a test report."
-msgstr "  -t                      Produz um relatório de teste."
-
-msgid "  -t                      Test PPDs instead of generating them."
-msgstr "  -t                      Testa PPDs ao invés de criá-los."
-
-msgid "  -t                      Test the configuration file."
-msgstr "  -t                      Testa o arquivo de configuração."
-
-msgid "  -t key                  True if the TXT record contains the key."
-msgstr ""
-"  -t chave                Verdadeiro se o registro TXT contiver a chave."
-
-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."
-
-msgid "  -u regex                Match URI to regular expression."
-msgstr "  -u regex                Corresponde a URI à expressão regular."
-
-msgid "  -v                      Be verbose."
-msgstr "  -v                      Modo detalhado."
-
-msgid "  -vv                     Be very verbose."
-msgstr "  -vv                     Modo muito detalhado."
-
-msgid ""
-"  -x utility [argument ...] ;\n"
-"                          Execute program if true."
-msgstr ""
-"  -x utilitário [argumento ...] ;\n"
-"                          Executa o programa se verdadeiro."
-
-msgid "  -z                      Compress PPD files using GNU zip."
-msgstr "  -z                      Compacta arquivos PPD usando GNU zip."
-
-msgid "  IPPFIND_SERVICE_DOMAIN  Domain name"
-msgstr "  IPPFIND_SERVICE_DOMAIN  Nome do domínio"
-
-msgid ""
-"  IPPFIND_SERVICE_HOSTNAME\n"
-"                          Fully-qualified domain name"
-msgstr ""
-"  IPPFIND_SERVICE_HOSTNAME\n"
-"                          Nome completo do domínio (FQDN)"
-
-msgid "  IPPFIND_SERVICE_NAME    Service instance name"
-msgstr "  IPPFIND_SERVICE_NAME    Nome da instância do serviço"
-
-msgid "  IPPFIND_SERVICE_PORT    Port number"
-msgstr "  IPPFIND_SERVICE_PORT    Número da porta"
-
-msgid "  IPPFIND_SERVICE_REGTYPE DNS-SD registration type"
-msgstr "  IPPFIND_SERVICE_REGTYPE Tipo de registro DNS-SD"
-
-msgid "  IPPFIND_SERVICE_SCHEME  URI scheme"
-msgstr "  IPPFIND_SERVICE_SCHEME  Esquema URI"
-
-msgid "  IPPFIND_SERVICE_URI     URI"
-msgstr "  IPPFIND_SERVICE_URI     URI"
-
-msgid "  IPPFIND_TXT_*           Value of TXT record key"
-msgstr "  IPPFIND_TXT_*           Valor da chave de registro TXT"
-
-msgid ""
-"  expression --and expression\n"
-"                          Logical AND."
-msgstr ""
-"  expressão --and expressão\n"
-"                          AND lógico."
-
-msgid ""
-"  expression --or expression\n"
-"                          Logical OR."
-msgstr ""
-"  expressão --or expressão\n"
-"                          OR lógico."
-
-msgid "  expression expression   Logical AND."
-msgstr "  expressão expressão     AND lógico."
-
-msgid "  {service_domain}        Domain name"
-msgstr "  {service_domain}        Nome do domínio"
-
-msgid "  {service_hostname}      Fully-qualified domain name"
-msgstr "  {service_hostname}      Nome completo do domínio (FQDN)"
-
-msgid "  {service_name}          Service instance name"
-msgstr "  {service_name}          Nome da instância do serviço"
-
-msgid "  {service_port}          Port number"
-msgstr "  {service_port}          Número da porta"
-
-msgid "  {service_regtype}       DNS-SD registration type"
-msgstr "  {service_regtype}       Tipo de registro DNS-SD"
-
-msgid "  {service_scheme}        URI scheme"
-msgstr "  {service_scheme}        Esquema URI"
-
-msgid "  {service_uri}           URI"
-msgstr "  {service_uri}           URI"
-
-msgid "  {txt_*}                 Value of TXT record key"
-msgstr "  {txt_*}                 Valor da chave de registro TXT"
-
-msgid "  {}                      URI"
-msgstr "  {}                      URI"
-
-msgid " FAIL"
-msgstr " FALHA"
-
-msgid " PASS"
-msgstr " PASSOU"
-
-#, c-format
-msgid "\"%s\": Bad URI value \"%s\" - %s (RFC 2911 section 4.1.5)."
-msgstr "\"%s\": Valor inválido de URI \"%s\" - %s (RFC 2911 seção 4.1.5)."
-
-#, c-format
-msgid "\"%s\": Bad URI value \"%s\" - bad length %d (RFC 2911 section 4.1.5)."
-msgstr ""
-"\"%s\": Valor inválido de URI \"%s\" - comprimento inválido %d (RFC 2911 "
-"seção 4.1.5)."
-
-#, c-format
-msgid "\"%s\": Bad attribute name - bad length %d (RFC 2911 section 4.1.3)."
-msgstr ""
-"\"%s\": Nome de atributo inválido - comprimento inválido %d (RFC 2911 seção "
-"4.1.3)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad attribute name - invalid character (RFC 2911 section 4.1.3)."
-msgstr ""
-"\"%s\": Nome de atributo inválido - caractere inválido (RFC 2911 seção "
-"4.1.3)."
-
-#, c-format
-msgid "\"%s\": Bad boolen value %d (RFC 2911 section 4.1.11)."
-msgstr "\"%s\": Valor booleano inválido %d (RFC 2911 seção 4.1.11)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad charset value \"%s\" - bad characters (RFC 2911 section 4.1.7)."
-msgstr ""
-"\"%s\": Valor de conjunto de caracteres inválido \"%s\" - caracteres "
-"inválido (RFC 2911 seção 4.1.7)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad charset value \"%s\" - bad length %d (RFC 2911 section 4.1.7)."
-msgstr ""
-"\"%s\": Valor de conjunto de caracteres inválido \"%s\" - comprimento "
-"inválido %d (RFC 2911 seção 4.1.7)."
-
-#, c-format
-msgid "\"%s\": Bad dateTime UTC hours %u (RFC 2911 section 4.1.14)."
-msgstr "\"%s\": Horas de UTC dateTime inválidas %u (RFC 2911 seção 4.1.14)."
-
-#, c-format
-msgid "\"%s\": Bad dateTime UTC minutes %u (RFC 2911 section 4.1.14)."
-msgstr "\"%s\": Minutos de UTC dateTime inválidos %u (RFC 2911 seção 4.1.14)."
-
-#, c-format
-msgid "\"%s\": Bad dateTime UTC sign '%c' (RFC 2911 section 4.1.14)."
-msgstr "\"%s\": Sinal de UTC dateTime inválido \"%c\" (RFC 2911 seção 4.1.14)."
-
-#, c-format
-msgid "\"%s\": Bad dateTime day %u (RFC 2911 section 4.1.14)."
-msgstr "\"%s\": Dia de dateTime inválido %u (RFC 2911 seção 4.1.14)."
-
-#, c-format
-msgid "\"%s\": Bad dateTime deciseconds %u (RFC 2911 section 4.1.14)."
-msgstr ""
-"\"%s\": Décimos de segundos de dateTime inválidos %u (RFC 2911 seção 4.1.14)."
-
-#, c-format
-msgid "\"%s\": Bad dateTime hours %u (RFC 2911 section 4.1.14)."
-msgstr "\"%s\": Horas de dateTime inválidas %u (RFC 2911 seção 4.1.14)."
-
-#, c-format
-msgid "\"%s\": Bad dateTime minutes %u (RFC 2911 section 4.1.14)."
-msgstr "\"%s\": Minutos de dateTime inválidos %u (RFC 2911 seção 4.1.14)."
-
-#, c-format
-msgid "\"%s\": Bad dateTime month %u (RFC 2911 section 4.1.14)."
-msgstr "\"%s\": Mês de dateTime inválido %u (RFC 2911 seção 4.1.14)."
-
-#, c-format
-msgid "\"%s\": Bad dateTime seconds %u (RFC 2911 section 4.1.14)."
-msgstr "\"%s\": Segundos de dateTime inválidos %u (RFC 2911 seção 4.1.14)."
-
-#, c-format
-msgid "\"%s\": Bad enum value %d - out of range (RFC 2911 section 4.1.4)."
-msgstr ""
-"\"%s\": Valor de enum inválido %d - fora da faixa (RFC 2911 seção 4.1.4)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad keyword value \"%s\" - bad length %d (RFC 2911 section 4.1.3)."
-msgstr ""
-"\"%s\": Valor de keyword inválido \"%s\" - comprimento inválido %d (RFC 2911 "
-"seção 4.1.3)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad keyword value \"%s\" - invalid character (RFC 2911 section "
-"4.1.3)."
-msgstr ""
-"\"%s\": Valor de keyword inválido \"%s\" - caractere inválido (RFC 2911 "
-"seção 4.1.3)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad mimeMediaType value \"%s\" - bad characters (RFC 2911 section "
-"4.1.9)."
-msgstr ""
-"\"%s\": Valor de mimeMediaType inválido \"%s\" - caracteres inválidos (RFC "
-"2911 seção 4.1.9)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad mimeMediaType value \"%s\" - bad length %d (RFC 2911 section "
-"4.1.9)."
-msgstr ""
-"\"%s\": Valor de mimeMediaType inválido \"%s\" - comprimento inválido %d "
-"(RFC 2911 seção 4.1.9)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad name value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.2)."
-msgstr ""
-"\"%s\": Valor de name inválido \"%s\" - sequência UTF-8 inválida (RFC 2911 "
-"seção 4.1.2)."
-
-#, c-format
-msgid "\"%s\": Bad name value \"%s\" - bad length %d (RFC 2911 section 4.1.2)."
-msgstr ""
-"\"%s\": Valor de name inválido \"%s\" - comprimento inválido %d (RFC 2911 "
-"seção 4.1.2)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad naturalLanguage value \"%s\" - bad characters (RFC 2911 section "
-"4.1.8)."
-msgstr ""
-"\"%s\": Valor de naturalLanguage inválido \"%s\" - caracteres inválidos (RFC "
-"2911 seção 4.1.8)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad naturalLanguage value \"%s\" - bad length %d (RFC 2911 section "
-"4.1.8)."
-msgstr ""
-"\"%s\": Valor de naturalLanguage inválido \"%s\" - comprimento inválido %d "
-"(RFC 2911 seção 4.1.8)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad octetString value - bad length %d (RFC 2911 section 4.1.10)."
-msgstr ""
-"\"%s\": Valor de octetString inválido - comprimento inválido %d (RFC 2911 "
-"seção 4.1.10)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad rangeOfInteger value %d-%d - lower greater than upper (RFC 2911 "
-"section 4.1.13)."
-msgstr ""
-"\"%s\": Valor de rangeOfInteger inválido %d-%d - inferior maior do que o "
-"superior (RFC 2911 seção 4.1.13)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad resolution value %dx%d%s - bad units value (RFC 2911 section "
-"4.1.15)."
-msgstr ""
-"\"%s\": Valor de resolução inválido %dx%d%s - valor de unidades inválido "
-"(RFC 2911 seção 4.1.15)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad resolution value %dx%d%s - cross feed resolution must be "
-"positive (RFC 2911 section 4.1.15)."
-msgstr ""
-"\"%s\": Valor de resolução inválido %dx%d%s - resolução de cross-feed deve "
-"ser positiva (RFC 2911 seção 4.1.15)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad resolution value %dx%d%s - feed resolution must be positive (RFC "
-"2911 section 4.1.15)."
-msgstr ""
-"\"%s\": Valor de resolução inválido %dx%d%s - resolução de feed deve ser "
-"positiva (RFC 2911 seção 4.1.15)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad text value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.1)."
-msgstr ""
-"\"%s\": Valor de texto inválido \"%s\" - sequência UTF-8 inválida (RFC 2911 "
-"seção 4.1.1)."
-
-#, c-format
-msgid "\"%s\": Bad text value \"%s\" - bad length %d (RFC 2911 section 4.1.1)."
-msgstr ""
-"\"%s\": Valor de texto inválido \"%s\" - comprimento inválido %d (RFC 2911 "
-"seção 4.1.1)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad uriScheme value \"%s\" - bad characters (RFC 2911 section 4.1.6)."
-msgstr ""
-"\"%s\": Valor de uriScheme inválido \"%s\" - caracteres inválidos (RFC 2911 "
-"seção 4.1.6)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 2911 section 4.1.6)."
-msgstr ""
-"\"%s\": Valor de uriScheme inválido \"%s\" - comprimento inválido %d (RFC "
-"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 "%s accepting requests since %s"
-msgstr "%s está aceitando requisições desde %s"
-
-#, c-format
-msgid "%s cannot be changed."
-msgstr "%s não pode ser alterada."
-
-#, c-format
-msgid "%s is not implemented by the CUPS version of lpc."
-msgstr "%s não está implementada pela versão CUPS do lpc."
-
-#, c-format
-msgid "%s is not ready"
-msgstr "%s não está pronta"
-
-#, c-format
-msgid "%s is ready"
-msgstr "%s está pronta"
-
-#, c-format
-msgid "%s is ready and printing"
-msgstr "%s está pronta e imprimindo"
-
-#, c-format
-msgid "%s job-id user title copies options [file]"
-msgstr "%s job-id usuário título cópia opções [arquivo]"
-
-#, c-format
-msgid "%s not accepting requests since %s -"
-msgstr "%s não está aceitando requisições desde %s -"
-
-#, c-format
-msgid "%s not supported."
-msgstr "%s não é suportada."
-
-#, c-format
-msgid "%s/%s accepting requests since %s"
-msgstr "%s/%s está aceitando requisições desde %s"
-
-#, c-format
-msgid "%s/%s not accepting requests since %s -"
-msgstr "%s/%s não está aceitando requisições desde %s -"
-
-#, c-format
-msgid "%s: %-33.33s [job %d localhost]"
-msgstr "%s: %-33.33s [trabalho %d localhost]"
-
-#. TRANSLATORS: Message is "subject: error"
-#, c-format
-msgid "%s: %s"
-msgstr "%s: %s"
-
-#, c-format
-msgid "%s: %s failed: %s"
-msgstr "%s: %s falhou: %s"
-
-#, c-format
-msgid "%s: Bad version %s for \"-V\"."
-msgstr "%s: Versão inválida %s para \"-V\"."
-
-#, c-format
-msgid "%s: Don't know what to do."
-msgstr "%s: Não sei o que fazer."
-
-#, c-format
-msgid ""
-"%s: Error - %s environment variable names non-existent destination \"%s\"."
-msgstr ""
-"%s: Erro - A variável de ambiente %s contém destino inexistente \"%s\"."
-
-#, c-format
-msgid "%s: Error - add '/version=1.1' to server name."
-msgstr "%s: Erro - adicione '/version=1.1' ao nome do servidor."
-
-#, c-format
-msgid "%s: Error - bad job ID."
-msgstr "%s: Erro - ID de trabalho inválido."
-
-#, c-format
-msgid "%s: Error - cannot print files and alter jobs simultaneously."
-msgstr ""
-"%s: Erro - não é possível imprimir arquivos e alterar trabalhos "
-"simultaneamente."
-
-#, c-format
-msgid "%s: Error - cannot print from stdin if files or a job ID are provided."
-msgstr ""
-"%s: Erro - não é possível imprimir de stdin se os arquivos ou um ID de "
-"trabalho forem fornecidos."
-
-#, 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\"."
-
-#, c-format
-msgid "%s: Error - expected content type after \"-T\" option."
-msgstr "%s: Erro - esperava um tipo de conteúdo após a opção \"-T\"."
-
-#, c-format
-msgid "%s: Error - expected copies after \"-#\" option."
-msgstr "%s: Erro - esperava cópias após a opção \"-#\"."
-
-#, c-format
-msgid "%s: Error - expected copies after \"-n\" option."
-msgstr "%s: Erro - esperava cópias após a opção \"-n\"."
-
-#, c-format
-msgid "%s: Error - expected destination after \"-P\" option."
-msgstr "%s: Erro - esperava um destino após a opção \"-P\"."
-
-#, c-format
-msgid "%s: Error - expected destination after \"-d\" option."
-msgstr "%s: Erro - esperava um destino após a opção \"-d\"."
-
-#, c-format
-msgid "%s: Error - expected form after \"-f\" option."
-msgstr "%s: Erro - esperava um formulário após a opção \"-f\"."
-
-#, c-format
-msgid "%s: Error - expected hold name after \"-H\" option."
-msgstr "%s: Erro - esperava um nome para segurar após a opção \"-H\"."
-
-#, c-format
-msgid "%s: Error - expected hostname after \"-H\" option."
-msgstr "%s: Erro - esperava o nome da máquina após a opção \"-H\"."
-
-#, c-format
-msgid "%s: Error - expected hostname after \"-h\" option."
-msgstr "%s: Erro - esperava o nome da máquina após a opção \"-h\"."
-
-#, c-format
-msgid "%s: Error - expected mode list after \"-y\" option."
-msgstr "%s: Erro - esperava uma lista de modos após a opção \"-y\"."
-
-#, c-format
-msgid "%s: Error - expected name after \"-%c\" option."
-msgstr "%s: Erro - esperava um nome após a opção \"-%c\"."
-
-#, c-format
-msgid "%s: Error - expected option=value after \"-o\" option."
-msgstr "%s: Erro - esperava opção=valor após a opção \"-o\"."
-
-#, c-format
-msgid "%s: Error - expected page list after \"-P\" option."
-msgstr "%s: Erro - esperava uma lista de página após a opção \"-P\"."
-
-#, c-format
-msgid "%s: Error - expected priority after \"-%c\" option."
-msgstr "%s: Erro - esperava uma prioridade após a opção \"-%c\"."
-
-#, c-format
-msgid "%s: Error - expected reason text after \"-r\" option."
-msgstr "%s: Erro - esperava um texto com motivo após a opção \"-r\"."
-
-#, c-format
-msgid "%s: Error - expected title after \"-t\" option."
-msgstr "%s: Erro - esperava um título após a opção \"-t\"."
-
-#, c-format
-msgid "%s: Error - expected username after \"-U\" option."
-msgstr "%s: Erro - esperava um nome de usuário após a opção \"-U\"."
-
-#, c-format
-msgid "%s: Error - expected username after \"-u\" option."
-msgstr "%s: Erro - esperava um nome de usuário após a opção \"-u\"."
-
-#, c-format
-msgid "%s: Error - expected value after \"-%c\" option."
-msgstr "%s: Erro - esperava um valor após a opção \"-%c\"."
-
-#, c-format
-msgid ""
-"%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" "
-"option."
-msgstr ""
-"%s: Erro - precisa de \"completed\", \"not-completed\" ou \"all\" após a "
-"opção \"-W\"."
-
-#, c-format
-msgid "%s: Error - no default destination available."
-msgstr "%s: Erro - nenhum destino padrão disponível."
-
-#, c-format
-msgid "%s: Error - priority must be between 1 and 100."
-msgstr "%s: Erro - prioridade deve estar entre 1 e 100."
-
-#, c-format
-msgid "%s: Error - scheduler not responding."
-msgstr "%s: Erro - agendador não está respondendo."
-
-#, c-format
-msgid "%s: Error - too many files - \"%s\"."
-msgstr "%s: Erro - arquivos demais - \"%s\"."
-
-#, c-format
-msgid "%s: Error - unable to access \"%s\" - %s"
-msgstr "%s: Erro - não foi possível acessar \"%s\" - %s"
-
-#, c-format
-msgid "%s: Error - unable to queue from stdin - %s."
-msgstr "%s: Erro - não foi possível enfilerar de stdin - %s."
-
-#, c-format
-msgid "%s: Error - unknown destination \"%s\"."
-msgstr "%s: Erro - destino desconhecido \"%s\"."
-
-#, c-format
-msgid "%s: Error - unknown destination \"%s/%s\"."
-msgstr "%s: Erro - destino desconhecido \"%s/%s\"."
-
-#, c-format
-msgid "%s: Error - unknown option \"%c\"."
-msgstr "%s: Erro - opção desconhecida \"%c\"."
-
-#, c-format
-msgid "%s: Error - unknown option \"%s\"."
-msgstr "%s: Erro - opção desconhecida \"%s\"."
-
-#, c-format
-msgid "%s: Expected job ID after \"-i\" option."
-msgstr "%s: Esperava ID do trabalho após a \"-i\"."
-
-#, c-format
-msgid "%s: Invalid destination name in list \"%s\"."
-msgstr "%s: Nome de destino inválido na lista \"%s\"."
-
-#, c-format
-msgid "%s: Invalid filter string \"%s\"."
-msgstr "%s: String de filtro inválida \"%s\"."
-
-#, c-format
-msgid "%s: Missing timeout for \"-T\"."
-msgstr "%s: Faltando tempo de espera para \"-T\"."
-
-#, c-format
-msgid "%s: Missing version for \"-V\"."
-msgstr "%s: Faltando versão para \"-V\"."
-
-#, c-format
-msgid "%s: Need job ID (\"-i jobid\") before \"-H restart\"."
-msgstr "%s: Precisa de ID de trabalho (\"-i jobid\") antes de \"-H restart\"."
-
-#, c-format
-msgid "%s: No filter to convert from %s/%s to %s/%s."
-msgstr "%s: Nenhum filtro para converter de %s/%s para %s/%s."
-
-#, c-format
-msgid "%s: Operation failed: %s"
-msgstr "%s: Operação falhou: %s"
-
-#, c-format
-msgid "%s: Sorry, no encryption support."
-msgstr "%s: Desculpa, não há suporte a criptografia."
-
-#, c-format
-msgid "%s: Unable to connect to server."
-msgstr "%s: Não foi possível conectar ao servidor."
-
-#, c-format
-msgid "%s: Unable to contact server."
-msgstr "%s: Não foi possível contactar o servidor."
-
-#, 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 PPD file: %s on line %d."
-msgstr "%s: Não foi possível abrir o arquivo PPD: %s na linha %d."
-
-#, c-format
-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: Unknown destination \"%s\"."
-msgstr "%s: Destino desconhecido \"%s\"."
-
-#, c-format
-msgid "%s: Unknown destination MIME type %s/%s."
-msgstr "%s: Tipo de MIME de destino desconhecido %s/%s."
-
-#, c-format
-msgid "%s: Unknown option \"%c\"."
-msgstr "%s: Opção desconhecida \"%c\"."
-
-#, c-format
-msgid "%s: Unknown option \"%s\"."
-msgstr "%s: Opção desconhecida \"%s\"."
-
-#, c-format
-msgid "%s: Unknown option \"-%c\"."
-msgstr "%s: Opção desconhecida \"-%c\"."
-
-#, c-format
-msgid "%s: Unknown source MIME type %s/%s."
-msgstr "%s: Tipo MIME de origem desconhecida %s/%s."
-
-#, c-format
-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."
-
-#, c-format
-msgid "%s: Warning - character set option ignored."
-msgstr "%s: Aviso - opção de conjunto de caracteres ignorada."
-
-#, c-format
-msgid "%s: Warning - content type option ignored."
-msgstr "%s: Aviso - opção de tipo de conteúdo ignorada."
-
-#, c-format
-msgid "%s: Warning - form option ignored."
-msgstr "%s: Aviso - opção de formulário ignorada."
-
-#, c-format
-msgid "%s: Warning - mode option ignored."
-msgstr "%s: Aviso - opção modo ignorada."
-
-msgid "-1"
-msgstr "-1"
-
-msgid "-10"
-msgstr "-10"
-
-msgid "-100"
-msgstr "-100"
-
-msgid "-105"
-msgstr "-105"
-
-msgid "-11"
-msgstr "-11"
-
-msgid "-110"
-msgstr "-110"
-
-msgid "-115"
-msgstr "-115"
-
-msgid "-12"
-msgstr "-12"
-
-msgid "-120"
-msgstr "-120"
-
-msgid "-13"
-msgstr "-13"
-
-msgid "-14"
-msgstr "-14"
-
-msgid "-15"
-msgstr "-15"
-
-msgid "-2"
-msgstr "-2"
-
-msgid "-20"
-msgstr "-20"
-
-msgid "-25"
-msgstr "-25"
-
-msgid "-3"
-msgstr "-3"
-
-msgid "-30"
-msgstr "-30"
-
-msgid "-35"
-msgstr "-35"
-
-msgid "-4"
-msgstr "-4"
-
-msgid "-40"
-msgstr "-40"
-
-msgid "-45"
-msgstr "-45"
-
-msgid "-5"
-msgstr "-5"
-
-msgid "-50"
-msgstr "-50"
-
-msgid "-55"
-msgstr "-55"
-
-msgid "-6"
-msgstr "-6"
-
-msgid "-60"
-msgstr "-60"
-
-msgid "-65"
-msgstr "-65"
-
-msgid "-7"
-msgstr "-7"
-
-msgid "-70"
-msgstr "-70"
-
-msgid "-75"
-msgstr "-75"
-
-msgid "-8"
-msgstr "-8"
-
-msgid "-80"
-msgstr "-80"
-
-msgid "-85"
-msgstr "-85"
-
-msgid "-9"
-msgstr "-9"
-
-msgid "-90"
-msgstr "-90"
-
-msgid "-95"
-msgstr "-95"
-
-msgid "0"
-msgstr "0"
-
-msgid "1"
-msgstr "1"
-
-msgid "1 inch/sec."
-msgstr "1 pol/seg."
-
-msgid "1.25x0.25\""
-msgstr "1.25x0.25\""
-
-msgid "1.25x2.25\""
-msgstr "1.25x2.25\""
-
-msgid "1.5 inch/sec."
-msgstr "1.5 pol/seg."
-
-msgid "1.50x0.25\""
-msgstr "1.50x0.25\""
-
-msgid "1.50x0.50\""
-msgstr "1.50x0.50\""
-
-msgid "1.50x1.00\""
-msgstr "1.50x1.00\""
-
-msgid "1.50x2.00\""
-msgstr "1.50x2.00\""
-
-msgid "10"
-msgstr "10"
-
-msgid "10 inches/sec."
-msgstr "10 pol/seg."
-
-msgid "10 x 11"
-msgstr "10 x 11"
-
-msgid "10 x 13"
-msgstr "10 x 13"
-
-msgid "10 x 14"
-msgstr "10 x 14"
-
-msgid "100"
-msgstr "100"
-
-msgid "100 mm/sec."
-msgstr "100 mm/s"
-
-msgid "105"
-msgstr "105"
-
-msgid "11"
-msgstr "11"
-
-msgid "11 inches/sec."
-msgstr "11 pol/s"
-
-msgid "110"
-msgstr "110"
-
-msgid "115"
-msgstr "115"
-
-msgid "12"
-msgstr "12"
-
-msgid "12 inches/sec."
-msgstr "12 pol/s"
-
-msgid "12 x 11"
-msgstr "12 x 11"
-
-msgid "120"
-msgstr "120"
-
-msgid "120 mm/sec."
-msgstr "120 mm/s"
-
-msgid "120x60dpi"
-msgstr "120x60dpi"
-
-msgid "120x72dpi"
-msgstr "120x72dpi"
-
-msgid "13"
-msgstr "13"
-
-msgid "136dpi"
-msgstr "136dpi"
-
-msgid "14"
-msgstr "14"
-
-msgid "15"
-msgstr "15"
-
-msgid "15 mm/sec."
-msgstr "15 mm/s"
-
-msgid "15 x 11"
-msgstr "15 x 11"
-
-msgid "150 mm/sec."
-msgstr "150 mm/s"
-
-msgid "150dpi"
-msgstr "150dpi"
-
-msgid "16"
-msgstr "16"
-
-msgid "17"
-msgstr "17"
-
-msgid "18"
-msgstr "18"
-
-msgid "180dpi"
-msgstr "180dpi"
-
-msgid "19"
-msgstr "19"
-
-msgid "2"
-msgstr "2"
-
-msgid "2 inches/sec."
-msgstr "2 pol/s"
-
-msgid "2-Sided Printing"
-msgstr "Frente e Verso"
-
-msgid "2.00x0.37\""
-msgstr "2.00x0.37\""
-
-msgid "2.00x0.50\""
-msgstr "2.00x0.50\""
-
-msgid "2.00x1.00\""
-msgstr "2.00x1.00\""
-
-msgid "2.00x1.25\""
-msgstr "2.00x1.25\""
-
-msgid "2.00x2.00\""
-msgstr "2.00x2.00\""
-
-msgid "2.00x3.00\""
-msgstr "2.00x3.00\""
-
-msgid "2.00x4.00\""
-msgstr "2.00x4.00\""
-
-msgid "2.00x5.50\""
-msgstr "2.00x5.50\""
-
-msgid "2.25x0.50\""
-msgstr "2.25x0.50\""
-
-msgid "2.25x1.25\""
-msgstr "2.25x1.25\""
-
-msgid "2.25x4.00\""
-msgstr "2.25x4.00\""
-
-msgid "2.25x5.50\""
-msgstr "2.25x5.50\""
-
-msgid "2.38x5.50\""
-msgstr "2.38x5.50\""
-
-msgid "2.5 inches/sec."
-msgstr "2.5 pol/s"
-
-msgid "2.50x1.00\""
-msgstr "2.50x1.00\""
-
-msgid "2.50x2.00\""
-msgstr "2.50x2.00\""
-
-msgid "2.75x1.25\""
-msgstr "2.75x1.25\""
-
-msgid "2.9 x 1\""
-msgstr "2.9 x 1\""
-
-msgid "20"
-msgstr "20"
-
-msgid "20 mm/sec."
-msgstr "20 mm/s"
-
-msgid "200 mm/sec."
-msgstr "200 mm/s"
-
-msgid "203dpi"
-msgstr "203dpi"
-
-msgid "21"
-msgstr "21"
-
-msgid "22"
-msgstr "22"
-
-msgid "23"
-msgstr "23"
-
-msgid "24"
-msgstr "24"
-
-msgid "24-Pin Series"
-msgstr "Séries de 24 agulhas"
-
-msgid "240x72dpi"
-msgstr "240x72dpi"
-
-msgid "25"
-msgstr "25"
-
-msgid "250 mm/sec."
-msgstr "250 mm/s"
-
-msgid "26"
-msgstr "26"
-
-msgid "27"
-msgstr "27"
-
-msgid "28"
-msgstr "28"
-
-msgid "29"
-msgstr "29"
-
-msgid "3"
-msgstr "3"
-
-msgid "3 inches/sec."
-msgstr "3 pol/s"
-
-msgid "3 x 5"
-msgstr "3 x 5"
-
-msgid "3.00x1.00\""
-msgstr "3.00x1.00\""
-
-msgid "3.00x1.25\""
-msgstr "3.00x1.25\""
-
-msgid "3.00x2.00\""
-msgstr "3.00x2.00\""
-
-msgid "3.00x3.00\""
-msgstr "3.00x3.00\""
-
-msgid "3.00x5.00\""
-msgstr "3.00x5.00\""
-
-msgid "3.25x2.00\""
-msgstr "3.25x2.00\""
-
-msgid "3.25x5.00\""
-msgstr "3.25x5.00\""
-
-msgid "3.25x5.50\""
-msgstr "3.25x5.50\""
-
-msgid "3.25x5.83\""
-msgstr "3.25x5.83\""
-
-msgid "3.25x7.83\""
-msgstr "3.25x7.83\""
-
-msgid "3.5 x 5"
-msgstr "3.5 x 5"
-
-msgid "3.5\" Disk"
-msgstr "Disco de 3.5\""
-
-msgid "3.50x1.00\""
-msgstr "3.50x1.00\""
-
-msgid "30"
-msgstr "30"
-
-msgid "30 mm/sec."
-msgstr "30 mm/s"
-
-msgid "300 mm/sec."
-msgstr "300 mm/s"
-
-msgid "300dpi"
-msgstr "300dpi"
-
-msgid "35"
-msgstr "35"
-
-msgid "360dpi"
-msgstr "360dpi"
-
-msgid "360x180dpi"
-msgstr "360x180dpi"
-
-msgid "4"
-msgstr "4"
-
-msgid "4 inches/sec."
-msgstr "4 pol/s"
-
-msgid "4.00x1.00\""
-msgstr "4.00x1.00\""
-
-msgid "4.00x13.00\""
-msgstr "4.00x13.00\""
-
-msgid "4.00x2.00\""
-msgstr "4.00x2.00\""
-
-msgid "4.00x2.50\""
-msgstr "4.00x2.50\""
-
-msgid "4.00x3.00\""
-msgstr "4.00x3.00\""
-
-msgid "4.00x4.00\""
-msgstr "4.00x4.00\""
-
-msgid "4.00x5.00\""
-msgstr "4.00x5.00\""
-
-msgid "4.00x6.00\""
-msgstr "4.00x6.00\""
-
-msgid "4.00x6.50\""
-msgstr "4.00x6.50\""
-
-msgid "40"
-msgstr "40"
-
-msgid "40 mm/sec."
-msgstr "40 mm/s"
-
-msgid "45"
-msgstr "45"
-
-msgid "5"
-msgstr "5"
-
-msgid "5 inches/sec."
-msgstr "5 pol/s"
-
-msgid "5 x 7"
-msgstr "5 x 7"
-
-msgid "50"
-msgstr "50"
-
-msgid "55"
-msgstr "55"
-
-msgid "6"
-msgstr "6"
-
-msgid "6 inches/sec."
-msgstr "6 pol/s"
-
-msgid "6.00x1.00\""
-msgstr "6.00x1.00\""
-
-msgid "6.00x2.00\""
-msgstr "6.00x2.00\""
-
-msgid "6.00x3.00\""
-msgstr "6.00x3.00\""
-
-msgid "6.00x4.00\""
-msgstr "6.00x4.00\""
-
-msgid "6.00x5.00\""
-msgstr "6.00x5.00\""
-
-msgid "6.00x6.00\""
-msgstr "6.00x6.00\""
-
-msgid "6.00x6.50\""
-msgstr "6.00x6.50\""
-
-msgid "60"
-msgstr "60"
-
-msgid "60 mm/sec."
-msgstr "60 mm/s"
-
-msgid "600dpi"
-msgstr "600dpi"
-
-msgid "60dpi"
-msgstr "60dpi"
-
-msgid "60x72dpi"
-msgstr "60x72dpi"
-
-msgid "65"
-msgstr "65"
-
-msgid "7"
-msgstr "7"
-
-msgid "7 inches/sec."
-msgstr "7 pol/s"
-
-msgid "7 x 9"
-msgstr "7 x 9"
-
-msgid "70"
-msgstr "70"
-
-msgid "720dpi"
-msgstr "720dpi"
-
-msgid "75"
-msgstr "75"
-
-msgid "8"
-msgstr "8"
-
-msgid "8 inches/sec."
-msgstr "8 pol/s"
-
-msgid "8 x 10"
-msgstr "8 x 10"
-
-msgid "8.00x1.00\""
-msgstr "8.00x1.00\""
-
-msgid "8.00x2.00\""
-msgstr "8.00x2.00\""
-
-msgid "8.00x3.00\""
-msgstr "8.00x3.00\""
-
-msgid "8.00x4.00\""
-msgstr "8.00x4.00\""
-
-msgid "8.00x5.00\""
-msgstr "8.00x5.00\""
-
-msgid "8.00x6.00\""
-msgstr "8.00x6.00\""
-
-msgid "8.00x6.50\""
-msgstr "8.00x6.50\""
-
-msgid "80"
-msgstr "80"
-
-msgid "80 mm/sec."
-msgstr "80 mm/s"
-
-msgid "85"
-msgstr "85"
-
-msgid "9"
-msgstr "9"
-
-msgid "9 inches/sec."
-msgstr "9 pol/s"
-
-msgid "9 x 11"
-msgstr "9 x 11"
-
-msgid "9 x 12"
-msgstr "9 x 12"
-
-msgid "9-Pin Series"
-msgstr "Série de 9 agulhas"
-
-msgid "90"
-msgstr "90"
-
-msgid "95"
-msgstr "95"
-
-msgid "?Invalid help command unknown."
-msgstr "?Comando de ajuda inválido desconhecido."
-
-msgid "A Samba password is required to export printer drivers"
-msgstr "Uma senha do Samba é necessária para exportar drivers de impressora"
-
-msgid "A Samba username is required to export printer drivers"
-msgstr ""
-"Um nome de usuário do Samba é necessário para exportar drivers de impressora"
-
-#, c-format
-msgid "A class named \"%s\" already exists."
-msgstr "Uma classe chamada \"%s\" já existe."
-
-#, c-format
-msgid "A printer named \"%s\" already exists."
-msgstr "Uma impressora chamada \"%s\" já existe."
-
-msgid "A0"
-msgstr "A0"
-
-msgid "A0 Long Edge"
-msgstr "A0 borda maior"
-
-msgid "A1"
-msgstr "A1"
-
-msgid "A1 Long Edge"
-msgstr "A1 borda maior"
-
-msgid "A10"
-msgstr "A10"
-
-msgid "A2"
-msgstr "A2"
-
-msgid "A2 Long Edge"
-msgstr "A2 borda maior"
-
-msgid "A3"
-msgstr "A3"
-
-msgid "A3 Long Edge"
-msgstr "A3 borda maior"
-
-msgid "A3 Oversize"
-msgstr "A3 grande"
-
-msgid "A3 Oversize Long Edge"
-msgstr "A3 borda muito maior"
-
-msgid "A4"
-msgstr "A4"
-
-msgid "A4 Long Edge"
-msgstr "A4 borda maior"
-
-msgid "A4 Oversize"
-msgstr "A4 grande"
-
-msgid "A4 Small"
-msgstr "A4 pequeno"
-
-msgid "A5"
-msgstr "A5"
-
-msgid "A5 Long Edge"
-msgstr "A5 borda maior"
-
-msgid "A5 Oversize"
-msgstr "A5 grande"
-
-msgid "A6"
-msgstr "A6"
-
-msgid "A6 Long Edge"
-msgstr "A6 borda maior"
-
-msgid "A7"
-msgstr "A7"
-
-msgid "A8"
-msgstr "A8"
-
-msgid "A9"
-msgstr "A9"
-
-msgid "ANSI A"
-msgstr "ANSI A"
-
-msgid "ANSI B"
-msgstr "ANSI B"
-
-msgid "ANSI C"
-msgstr "ANSI C"
-
-msgid "ANSI D"
-msgstr "ANSI D"
-
-msgid "ANSI E"
-msgstr "ANSI E"
-
-msgid "ARCH C"
-msgstr "ARCH C"
-
-msgid "ARCH C Long Edge"
-msgstr "ARCH C borda maior"
-
-msgid "ARCH D"
-msgstr "ARCH D"
-
-msgid "ARCH D Long Edge"
-msgstr "ARCH D borda maior"
-
-msgid "ARCH E"
-msgstr "ARCH E"
-
-msgid "ARCH E Long Edge"
-msgstr "ARCH E borda maior"
-
-msgid "Accept Jobs"
-msgstr "Aceitando trabalhos"
-
-msgid "Accepted"
-msgstr "Aceitou"
-
-msgid "Add Class"
-msgstr "Adicionar classe"
-
-msgid "Add Printer"
-msgstr "Adicionar impressora"
-
-msgid "Add RSS Subscription"
-msgstr "Adicionar inscrição RSS"
-
-msgid "Address"
-msgstr "Endereço"
-
-msgid "Administration"
-msgstr "Administração"
-
-msgid "Always"
-msgstr "Sempre"
-
-msgid "AppSocket/HP JetDirect"
-msgstr "AppSocket/HP JetDirect"
-
-msgid "Applicator"
-msgstr "Aplicador"
-
-#, 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 groups are out of order (%x < %x)."
-msgstr "Grupos de atributos estão fora de ordem (%x < %x)."
-
-msgid "B0"
-msgstr "B0"
-
-msgid "B1"
-msgstr "B1"
-
-msgid "B10"
-msgstr "B10"
-
-msgid "B2"
-msgstr "B2"
-
-msgid "B3"
-msgstr "B3"
-
-msgid "B4"
-msgstr "B4"
-
-msgid "B5"
-msgstr "B5"
-
-msgid "B5 Oversize"
-msgstr "B5 grande"
-
-msgid "B6"
-msgstr "B6"
-
-msgid "B7"
-msgstr "B7"
-
-msgid "B8"
-msgstr "B8"
-
-msgid "B9"
-msgstr "B9"
-
-#, c-format
-msgid "Bad 'document-format' value \"%s\"."
-msgstr "Valor de \"document-format\" inválido \"%s\"."
-
-msgid "Bad NULL dests pointer"
-msgstr "Ponteiro de destinatário NULO inválido"
-
-msgid "Bad OpenGroup"
-msgstr "OpenGroup inválido"
-
-msgid "Bad OpenUI/JCLOpenUI"
-msgstr "OpenUI/JCLOpenUI inválido"
-
-msgid "Bad OrderDependency"
-msgstr "OrderDependency inválido"
-
-msgid "Bad PPD cache file."
-msgstr "Arquivo de cache de PPD inválido."
-
-msgid "Bad Request"
-msgstr "Requisição inválida"
-
-msgid "Bad SNMP version number"
-msgstr "Número de versão SNMP inválido"
-
-msgid "Bad UIConstraints"
-msgstr "UIConstraints inválido"
-
-#, c-format
-msgid "Bad copies value %d."
-msgstr "Valor de cópias inválido %d."
-
-msgid "Bad custom parameter"
-msgstr "Parâmetro personalizado inválido"
-
-#, c-format
-msgid "Bad device-uri \"%s\"."
-msgstr "device-uri inválido \"%s\"."
-
-#, c-format
-msgid "Bad device-uri scheme \"%s\"."
-msgstr "Esquema device-uri inválido \"%s\"."
-
-#, c-format
-msgid "Bad document-format \"%s\"."
-msgstr "document-format inválido \"%s\"."
-
-#, c-format
-msgid "Bad document-format-default \"%s\"."
-msgstr "document-format-default inválido \"%s\"."
-
-msgid "Bad filename buffer"
-msgstr "Buffer de nome de arquivo inválido"
-
-#, c-format
-msgid "Bad job-name value: %s"
-msgstr "Valor de job-name inválido: %s"
-
-msgid "Bad job-name value: Wrong type or count."
-msgstr "Valor de job-name inválido: Quantidade ou tipo inválido."
-
-msgid "Bad job-priority value."
-msgstr "Valor job-priority inválido."
-
-#, c-format
-msgid "Bad job-sheets value \"%s\"."
-msgstr "Valor de job-sheets inválido \"%s\"."
-
-msgid "Bad job-sheets value type."
-msgstr "Tipo de valor de job-sheets inválido."
-
-msgid "Bad job-state value."
-msgstr "Valor de job-state inválido."
-
-#, c-format
-msgid "Bad job-uri \"%s\"."
-msgstr "job-uri inválido \"%s\"."
-
-#, c-format
-msgid "Bad notify-pull-method \"%s\"."
-msgstr "notify-pull-method inválido \"%s\"."
-
-#, c-format
-msgid "Bad notify-recipient-uri \"%s\"."
-msgstr "notify-recipient-uri inválido \"%s\"."
-
-#, c-format
-msgid "Bad number-up value %d."
-msgstr "Valor de number-up inválido %d."
-
-#, c-format
-msgid "Bad option + choice on line %d."
-msgstr "Opção + escolha inválidas na linha %d."
-
-#, c-format
-msgid "Bad page-ranges values %d-%d."
-msgstr "Valor de page-ranges inválido %d-%d."
-
-#, 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."
-
-#, c-format
-msgid "Bad request ID %d."
-msgstr "ID da requisição inválido %d."
-
-#, c-format
-msgid "Bad request version number %d.%d."
-msgstr "Número da versão de requisição inválido %d.%d."
-
-msgid "Bad subscription ID"
-msgstr "ID de inscrição inválido"
-
-msgid "Bad value string"
-msgstr "String de valor inválido"
-
-msgid "Banners"
-msgstr "Banners"
-
-msgid "Bond Paper"
-msgstr "Papel autocolante"
-
-#, c-format
-msgid "Boolean expected for waiteof option \"%s\"."
-msgstr "Esperava booleano para opção waiteof \"%s\"."
-
-msgid "Buffer overflow detected, aborting."
-msgstr "Estouro de pilha do buffer detectado, abortando."
-
-msgid "CMYK"
-msgstr "CMYK"
-
-msgid "CPCL Label Printer"
-msgstr "Impressora de etiqueta CPCL"
-
-msgid "Cancel RSS Subscription"
-msgstr "Cancelar inscrição RSS"
-
-msgid "Canceling print job."
-msgstr "Cancelando trabalho de impressão."
-
-msgid "Cannot share a remote Kerberized printer."
-msgstr "Não foi possível compartilhar uma impressora remota via Kerberos."
-
-msgid "Cassette"
-msgstr "Cassette"
-
-msgid "Change Settings"
-msgstr "Alterar configurações"
-
-#, c-format
-msgid "Character set \"%s\" not supported."
-msgstr "Conjunto de caracteres \"%s\" não é suportado."
-
-msgid "Classes"
-msgstr "Classes"
-
-msgid "Clean Print Heads"
-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 "Color"
-msgstr "Cor"
-
-msgid "Color Mode"
-msgstr "Modo colorido"
-
-msgid ""
-"Commands may be abbreviated.  Commands are:\n"
-"\n"
-"exit    help    quit    status  ?"
-msgstr ""
-"Comandos podem ser abreviados. Os comandos são:\n"
-"\n"
-"exit    help    quit    status  ?"
-
-msgid "Community name uses indefinite length"
-msgstr "Nome da comunidade usa comprimento indefinido"
-
-msgid "Connected to printer."
-msgstr "Conectado à impressora."
-
-msgid "Connecting to printer."
-msgstr "Conectando à impressora."
-
-msgid "Continue"
-msgstr "Continuar"
-
-msgid "Continuous"
-msgstr "Contínuo"
-
-msgid "Control file sent successfully."
-msgstr "Arquivo de controle enviado com sucesso."
-
-msgid "Copying print data."
-msgstr "Copiando dados de impressão."
-
-msgid "Created"
-msgstr "Criada"
-
-msgid "Custom"
-msgstr "Personalizar"
-
-msgid "CustominCutInterval"
-msgstr "CustominCutInterval"
-
-msgid "CustominTearInterval"
-msgstr "CustominTearInterval"
-
-msgid "Cut"
-msgstr "Cortar"
-
-msgid "Cutter"
-msgstr "Cortador"
-
-msgid "Dark"
-msgstr "Escuro"
-
-msgid "Darkness"
-msgstr "Escuridão"
-
-msgid "Data file sent successfully."
-msgstr "Arquivo de dados enviado com sucesso."
-
-msgid "Delete Class"
-msgstr "Excluir classe"
-
-msgid "Delete Printer"
-msgstr "Excluir impressora"
-
-msgid "DeskJet Series"
-msgstr "DeskJet Séries"
-
-#, c-format
-msgid "Destination \"%s\" is not accepting jobs."
-msgstr "Destino \"%s\" não está aceitando trabalhos."
-
-#, c-format
-msgid ""
-"Device: uri = %s\n"
-"        class = %s\n"
-"        info = %s\n"
-"        make-and-model = %s\n"
-"        device-id = %s\n"
-"        location = %s"
-msgstr ""
-"Dispositivo: uri = %s\n"
-"             classe = %s\n"
-"             info = %s\n"
-"             marca-e-modelo = %s\n"
-"             dispo-id = %s\n"
-"             localização = %s"
-
-msgid "Direct Thermal Media"
-msgstr "Mídia Térmica Direta"
-
-#, c-format
-msgid "Directory \"%s\" contains a relative path."
-msgstr "Diretório \"%s\" contém um caminho relativo."
-
-#, c-format
-msgid "Directory \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
-msgstr "Diretório \"%s\" contém permissões inseguras (0%o/uid=%d/gid=%d)."
-
-#, c-format
-msgid "Directory \"%s\" is a file."
-msgstr "Diretório \"%s\" é um arquivo."
-
-#, c-format
-msgid "Directory \"%s\" not available: %s"
-msgstr "Diretório \"%s\" não está disponível: %s"
-
-#, c-format
-msgid "Directory \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
-msgstr "Permissões do diretório \"%s\" estão OK (0%o/uid=%d/gid=%d)."
-
-msgid "Disabled"
-msgstr "Desabilitado"
-
-#, c-format
-msgid "Document #%d does not exist in job #%d."
-msgstr "Documento #%d não existe no trabalho #%d."
-
-msgid "Duplexer"
-msgstr "Duplexador"
-
-msgid "Dymo"
-msgstr "Dymo"
-
-msgid "EPL1 Label Printer"
-msgstr "Impressora de etiqueta EPL1"
-
-msgid "EPL2 Label Printer"
-msgstr "Impressora de etiqueta EPL2"
-
-msgid "Edit Configuration File"
-msgstr "Editar arquivo de configuração"
-
-msgid "Empty PPD file."
-msgstr "Arquivo PPD vazio."
-
-#. TRANSLATORS: Banner/cover sheet after the print job.
-msgid "Ending Banner"
-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 "
-"valid Kerberos ticket."
-msgstr ""
-"Digite seu nome de usuário e senha, ou do usuário root, para acessar esta "
-"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 #11"
-msgstr "Envelope #11"
-
-msgid "Envelope #12"
-msgstr "Envelope #12"
-
-msgid "Envelope #14"
-msgstr "Envelope #14"
-
-msgid "Envelope #9"
-msgstr "Envelope #9"
-
-msgid "Envelope B4"
-msgstr "Envelope B4"
-
-msgid "Envelope B5"
-msgstr "Envelope B5"
-
-msgid "Envelope B6"
-msgstr "Envelope B6"
-
-msgid "Envelope C0"
-msgstr "Envelope C0"
-
-msgid "Envelope C1"
-msgstr "Envelope C1"
-
-msgid "Envelope C2"
-msgstr "Envelope C2"
-
-msgid "Envelope C3"
-msgstr "Envelope C3"
-
-msgid "Envelope C4"
-msgstr "Envelope C4"
-
-msgid "Envelope C5"
-msgstr "Envelope C5"
-
-msgid "Envelope C6"
-msgstr "Envelope C6"
-
-msgid "Envelope C65"
-msgstr "Envelope C65"
-
-msgid "Envelope C7"
-msgstr "Envelope C7"
-
-msgid "Envelope Choukei 3"
-msgstr "Envelope Choukei 3"
-
-msgid "Envelope Choukei 3 Long Edge"
-msgstr "Envelope Choukei 3 borda maior"
-
-msgid "Envelope Choukei 4"
-msgstr "Envelope Choukei 4"
-
-msgid "Envelope Choukei 4 Long Edge"
-msgstr "Envelope Choukei 4 borda maior"
-
-msgid "Envelope DL"
-msgstr "Envelope DL"
-
-msgid "Envelope Feed"
-msgstr "Alimentação de Envelope"
-
-msgid "Envelope Invite"
-msgstr "Envelope Convite"
-
-msgid "Envelope Italian"
-msgstr "Envelope Italiano"
-
-msgid "Envelope Kaku2"
-msgstr "Envelope Kaku2"
-
-msgid "Envelope Kaku2 Long Edge"
-msgstr "Envelope Kaku2 borda maior"
-
-msgid "Envelope Kaku3"
-msgstr "Envelope Kaku3"
-
-msgid "Envelope Kaku3 Long Edge"
-msgstr "Envelope Kaku3 borda maior"
-
-msgid "Envelope Monarch"
-msgstr "Envelope Monarch"
-
-msgid "Envelope PRC1 "
-msgstr "Envelope PRC1 "
-
-msgid "Envelope PRC1 Long Edge"
-msgstr "Envelope PRC1 borda maior"
-
-msgid "Envelope PRC10"
-msgstr "Envelope PRC10"
-
-msgid "Envelope PRC10 Long Edge"
-msgstr "Envelope PRC10 borda maior"
-
-msgid "Envelope PRC2"
-msgstr "Envelope PRC2"
-
-msgid "Envelope PRC2 Long Edge"
-msgstr "Envelope PRC2 borda maior"
-
-msgid "Envelope PRC3"
-msgstr "Envelope PRC3"
-
-msgid "Envelope PRC3 Long Edge"
-msgstr "Envelope PRC3 borda maior"
-
-msgid "Envelope PRC4"
-msgstr "Envelope PRC4"
-
-msgid "Envelope PRC4 Long Edge"
-msgstr "Envelope PRC4 borda maior"
-
-msgid "Envelope PRC5 Long Edge"
-msgstr "Envelope PRC5 borda maior"
-
-msgid "Envelope PRC5PRC5"
-msgstr "Envelope PRC5"
-
-msgid "Envelope PRC6"
-msgstr "Envelope PRC6"
-
-msgid "Envelope PRC6 Long Edge"
-msgstr "Envelope PRC6 borda maior"
-
-msgid "Envelope PRC7"
-msgstr "Envelope PRC7"
-
-msgid "Envelope PRC7 Long Edge"
-msgstr "Envelope PRC7 borda maior"
-
-msgid "Envelope PRC8"
-msgstr "Envelope PRC8"
-
-msgid "Envelope PRC8 Long Edge"
-msgstr "Envelope PRC8 borda maior"
-
-msgid "Envelope PRC9"
-msgstr "Envelope PRC9"
-
-msgid "Envelope PRC9 Long Edge"
-msgstr "Envelope PRC9 borda maior"
-
-msgid "Envelope Personal"
-msgstr "Envelope Pessoal"
-
-msgid "Envelope You4"
-msgstr "Envelope You4"
-
-msgid "Envelope You4 Long Edge"
-msgstr "Envelope You4 borda maior"
-
-msgid "Environment Variables:"
-msgstr "Variáveis de ambiente:"
-
-msgid "Epson"
-msgstr "Epson"
-
-msgid "Error Policy"
-msgstr "Política de erro"
-
-msgid "Error sending raster data."
-msgstr "Erro ao enviar dados de rasterização."
-
-msgid "Error: need hostname after \"-h\" option."
-msgstr "Erro: precisa de nome da máquina após a opção \"-h\"."
-
-msgid "Every 10 Labels"
-msgstr "A cada 10 etiquetas"
-
-msgid "Every 2 Labels"
-msgstr "A cada 2 etiquetas"
-
-msgid "Every 3 Labels"
-msgstr "A cada 3 etiquetas"
-
-msgid "Every 4 Labels"
-msgstr "A cada 4 etiquetas"
-
-msgid "Every 5 Labels"
-msgstr "A cada 5 etiquetas"
-
-msgid "Every 6 Labels"
-msgstr "A cada 6 etiquetas"
-
-msgid "Every 7 Labels"
-msgstr "A cada 7 etiquetas"
-
-msgid "Every 8 Labels"
-msgstr "A cada 8 etiquetas"
-
-msgid "Every 9 Labels"
-msgstr "A cada 9 etiquetas"
-
-msgid "Every Label"
-msgstr "A cada etiqueta"
-
-msgid "Executive"
-msgstr "Executivo"
-
-msgid "Expectation Failed"
-msgstr "Falhou a expectativa"
-
-msgid "Export Printers to Samba"
-msgstr "Exportar impressoras para o Samba"
-
-msgid "Expressions:"
-msgstr "Expressões:"
-
-msgid "FAIL"
-msgstr "FALHA"
-
-msgid "FanFold German"
-msgstr "FanFold German"
-
-msgid "FanFold Legal German"
-msgstr "FanFold Legal German"
-
-msgid "Fanfold US"
-msgstr "Fanfold US"
-
-#, c-format
-msgid "File \"%s\" contains a relative path."
-msgstr "Arquivo \"%s\" contém um caminho relativo."
-
-#, c-format
-msgid "File \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
-msgstr "Arquivo \"%s\" tem permissões inseguras (0%o/uid=%d/gid=%d)."
-
-#, c-format
-msgid "File \"%s\" is a directory."
-msgstr "Arquivo \"%s\" é um diretório."
-
-#, c-format
-msgid "File \"%s\" not available: %s"
-msgstr "Arquivo \"%s\" não está disponível: %s"
-
-#, c-format
-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 "
-
-#, c-format
-msgid ""
-"File device URIs have been disabled. To enable, see the FileDevice directive "
-"in \"%s/cups-files.conf\"."
-msgstr ""
-"URIs de arquivos de dispositivo foram desabilitadas. Para habilitar, veja a "
-"diretiva FileDevice em \"%s/cups-files.conf\"."
-
-#, c-format
-msgid "Finished page %d."
-msgstr "Terminou página %d."
-
-msgid "Folio"
-msgstr "Fólio"
-
-msgid "Forbidden"
-msgstr "Proibido"
-
-msgid "General"
-msgstr "Geral"
-
-msgid "Generic"
-msgstr "Genérico"
-
-msgid "Get-Response-PDU uses indefinite length"
-msgstr "Get-Response-PDU usa comprimento indefinido"
-
-msgid "Glossy Paper"
-msgstr "Papel brilhante"
-
-msgid "Got a printer-uri attribute but no job-id."
-msgstr "Atributo printer-ui obtido, mas nenhum job-id."
-
-msgid "Grayscale"
-msgstr "Escalas de cinza"
-
-msgid "HP"
-msgstr "HP"
-
-msgid "Hanging Folder"
-msgstr "Pasta suspensa"
-
-msgid "Help file not in index."
-msgstr "Arquivo de ajuda não está no índice."
-
-msgid "IPP 1setOf attribute with incompatible value tags."
-msgstr "Atributo 1setOf de IPP com tags de valor incompatível."
-
-msgid "IPP attribute has no name."
-msgstr "Atributo de IPP não tem nome."
-
-msgid "IPP attribute is not a member of the message."
-msgstr "Atributo de IPP não é um membro da mensagem."
-
-msgid "IPP begCollection value not 0 bytes."
-msgstr "Valor begCollection de IPP não contém 0 bytes."
-
-msgid "IPP boolean value not 1 byte."
-msgstr "Valor booleano de IPP não contém 1 byte."
-
-msgid "IPP date value not 11 bytes."
-msgstr "Valor de data de IPP não contém 11 bytes."
-
-msgid "IPP endCollection value not 0 bytes."
-msgstr "Valor endCollection IPP não contém 0 bytes."
-
-msgid "IPP enum value not 4 bytes."
-msgstr "Valor enum de IPP não contém 4 bytes."
-
-msgid "IPP extension tag larger than 0x7FFFFFFF."
-msgstr "Tag de extensão de IPP maior do que 0x7FFFFFFF."
-
-msgid "IPP integer value not 4 bytes."
-msgstr "Valor inteiro de IPP não contém 4 bytes."
-
-msgid "IPP language length overflows value."
-msgstr "Comprimento do idioma de IPP excede o valor."
-
-msgid "IPP language length too large."
-msgstr "Comprimento do idioma de IPP muito grande."
-
-msgid "IPP member name is not empty."
-msgstr "Nome de membro de IPP não está vazio."
-
-msgid "IPP memberName value is empty."
-msgstr "Valor de memberName de IPP está vazio."
-
-msgid "IPP memberName with no attribute."
-msgstr "memberName de IPP sem atributo algum."
-
-msgid "IPP name larger than 32767 bytes."
-msgstr "Nome de IPP maior do que 32767 bytes."
-
-msgid "IPP nameWithLanguage value less than minimum 4 bytes."
-msgstr "Valor de nameWithLanguage de IPP menor do que o mínimo de 4 bytes."
-
-msgid "IPP octetString length too large."
-msgstr "Comprimento de octetString de IPP muito grande."
-
-msgid "IPP rangeOfInteger value not 8 bytes."
-msgstr "Valor de rangeOfInteger de IPP não contém 8 bytes."
-
-msgid "IPP resolution value not 9 bytes."
-msgstr "Valor de resolução de IPP não contém 9 bytes."
-
-msgid "IPP string length overflows value."
-msgstr "Comprimento da string de IPP excede o valor."
-
-msgid "IPP textWithLanguage value less than minimum 4 bytes."
-msgstr "Valor de textWithLanguage de IPP menor do que o mínimo de 4 bytes."
-
-msgid "IPP value larger than 32767 bytes."
-msgstr "Valor de IPP maior do que 32767 bytes."
-
-msgid "ISOLatin1"
-msgstr "ISOLatin1"
-
-msgid "Illegal control character"
-msgstr "Caractere de controle é ilegal"
-
-msgid "Illegal main keyword string"
-msgstr "String ilegal de palavra-chave principal"
-
-msgid "Illegal option keyword string"
-msgstr "String ilegal de palavra-chave de opção"
-
-msgid "Illegal translation string"
-msgstr "String ilegal de tradução"
-
-msgid "Illegal whitespace character"
-msgstr "Caractere ilegal de espaço em branco"
-
-msgid "Installable Options"
-msgstr "Opções instaláveis"
-
-msgid "Installed"
-msgstr "Instalada"
-
-msgid "IntelliBar Label Printer"
-msgstr "Impressora de etiqueta IntelliBar"
-
-msgid "Intellitech"
-msgstr "Intellitech"
-
-msgid "Internal Server Error"
-msgstr "Erro interno de servidor"
-
-msgid "Internal error"
-msgstr "Erro interno"
-
-msgid "Internet Postage 2-Part"
-msgstr "Internet Postage Parte-2"
-
-msgid "Internet Postage 3-Part"
-msgstr "Internet Postage Parte-3"
-
-msgid "Internet Printing Protocol"
-msgstr "Protocolo de Impressão para Internet"
-
-msgid "Invalid media name arguments."
-msgstr "Argumentos de nome de mídia inválidos."
-
-msgid "Invalid media size."
-msgstr "Tamanho de mídia inválido."
-
-#, c-format
-msgid "Invalid printer command \"%s\"."
-msgstr "Comando de impressora \"%s\" inválido."
-
-msgid "JCL"
-msgstr "JCL"
-
-msgid "JIS B0"
-msgstr "JIS B0"
-
-msgid "JIS B1"
-msgstr "JIS B1"
-
-msgid "JIS B10"
-msgstr "JIS B10"
-
-msgid "JIS B2"
-msgstr "JIS B2"
-
-msgid "JIS B3"
-msgstr "JIS B3"
-
-msgid "JIS B4"
-msgstr "JIS B4"
-
-msgid "JIS B4 Long Edge"
-msgstr "JIS B4 borda maior"
-
-msgid "JIS B5"
-msgstr "JIS B5"
-
-msgid "JIS B5 Long Edge"
-msgstr "JIS B5 borda maior"
-
-msgid "JIS B6"
-msgstr "JIS B6"
-
-msgid "JIS B6 Long Edge"
-msgstr "JIS B6 borda maior"
-
-msgid "JIS B7"
-msgstr "JIS B7"
-
-msgid "JIS B8"
-msgstr "JIS B8"
-
-msgid "JIS B9"
-msgstr "JIS B9"
-
-#, c-format
-msgid "Job #%d cannot be restarted - no files."
-msgstr "O trabalho #%d não pode ser reiniciado - nenhum arquivo."
-
-#, c-format
-msgid "Job #%d does not exist."
-msgstr "Trabalho #%d não existe."
-
-#, c-format
-msgid "Job #%d is already aborted - can't cancel."
-msgstr "Trabalho #%d já foi abortado - não é possível cancelar."
-
-#, c-format
-msgid "Job #%d is already canceled - can't cancel."
-msgstr "Trabalho #%d já foi cancelado - não é possível cancelar."
-
-#, c-format
-msgid "Job #%d is already completed - can't cancel."
-msgstr "Trabalho #%d já concluiu - não é possível cancelar."
-
-#, c-format
-msgid "Job #%d is finished and cannot be altered."
-msgstr "Trabalho #%d já finalizou e não pode ser alterado."
-
-#, c-format
-msgid "Job #%d is not complete."
-msgstr "Trabalho #%d não concluiu."
-
-#, c-format
-msgid "Job #%d is not held for authentication."
-msgstr "Trabalho #%d não está agarrado para autenticação."
-
-#, c-format
-msgid "Job #%d is not held."
-msgstr "Trabalho #%d não está agarrado."
-
-msgid "Job Completed"
-msgstr "Trabalho concluiu"
-
-msgid "Job Created"
-msgstr "Trabalho criado"
-
-msgid "Job Options Changed"
-msgstr "Opções do trabalho alteradas"
-
-msgid "Job Stopped"
-msgstr "Trabalho parou"
-
-msgid "Job is completed and cannot be changed."
-msgstr "Trabalho está concluído e não pode ser alterado."
-
-msgid "Job operation failed"
-msgstr "Operação do trabalho falhou"
-
-msgid "Job state cannot be changed."
-msgstr "Estado do trabalho não pode ser alterado."
-
-msgid "Job subscriptions cannot be renewed."
-msgstr "Inscrições de trabalho não podem ser renovadas."
-
-msgid "Jobs"
-msgstr "Trabalhos"
-
-msgid "LPD/LPR Host or Printer"
-msgstr "Impressora ou máquina LPD/LPR"
-
-msgid "Label Printer"
-msgstr "Impressora de etiqueta"
-
-msgid "Label Top"
-msgstr "Parte superior da etiqueta"
-
-#, c-format
-msgid "Language \"%s\" not supported."
-msgstr "Idioma \"%s\" não suportado."
-
-msgid "Large Address"
-msgstr "Endereço grande"
-
-msgid "LaserJet Series PCL 4/5"
-msgstr "LaserJet Series PCL 4/5"
-
-msgid "Letter Oversize"
-msgstr "Carta grande"
-
-msgid "Letter Oversize Long Edge"
-msgstr "Carta borda muito maior"
-
-msgid "Light"
-msgstr "Leve"
-
-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 "Long-Edge (Portrait)"
-msgstr "Borda maior (retrato)"
-
-msgid "Looking for printer."
-msgstr "Procurando impressoras."
-
-msgid "Manual Feed"
-msgstr "Alimentação manual"
-
-msgid "Media Size"
-msgstr "Tamanho de mídia"
-
-msgid "Media Source"
-msgstr "Fonte de mídia"
-
-msgid "Media Tracking"
-msgstr "Rastreamento de mídia"
-
-msgid "Media Type"
-msgstr "Tipo de mídia"
-
-msgid "Medium"
-msgstr "Médio"
-
-msgid "Memory allocation error"
-msgstr "Erro de alocação de memória"
-
-msgid "Missing CloseGroup"
-msgstr "Faltando CloseGroup"
-
-msgid "Missing PPD-Adobe-4.x header"
-msgstr "Faltando cabeçalho PPD-Adobe-4.x"
-
-msgid "Missing asterisk in column 1"
-msgstr "Faltando asterisco na coluna 1"
-
-msgid "Missing document-number attribute."
-msgstr "Faltando atributo document-number."
-
-#, c-format
-msgid "Missing double quote on line %d."
-msgstr "Faltando aspas duplas na linha %d."
-
-msgid "Missing form variable"
-msgstr "Faltando variável de formulário"
-
-msgid "Missing last-document attribute in request."
-msgstr "Faltando atributo last-document na requisição."
-
-msgid "Missing media or media-col."
-msgstr "Faltando media ou media-col."
-
-msgid "Missing media-size in media-col."
-msgstr "Faltando media-size em media-col."
-
-msgid "Missing notify-subscription-ids attribute."
-msgstr "Faltando atributo notify-subscription-ids."
-
-msgid "Missing option keyword"
-msgstr "Faltando palavra-chave de opção"
-
-msgid "Missing requesting-user-name attribute."
-msgstr "Faltando atributo requesting-user-name."
-
-msgid "Missing required attributes."
-msgstr "Faltando atributos necessários."
-
-#, c-format
-msgid "Missing value on line %d."
-msgstr "Faltando valor na linha %d."
-
-msgid "Missing value string"
-msgstr "Faltando string de valor"
-
-msgid "Missing x-dimension in media-size."
-msgstr "Faltando dimensão-x em media-size."
-
-msgid "Missing y-dimension in media-size."
-msgstr "Faltando dimensão-y em media-size."
-
-#, c-format
-msgid ""
-"Model:  name = %s\n"
-"        natural_language = %s\n"
-"        make-and-model = %s\n"
-"        device-id = %s"
-msgstr ""
-"Modelo:  nome = %s\n"
-"         idioma_natural = %s\n"
-"         marca-e-modelo = %s\n"
-"         id-dispositivo = %s"
-
-msgid "Modifiers:"
-msgstr "Modificadores:"
-
-msgid "Modify Class"
-msgstr "Modificar classe"
-
-msgid "Modify Printer"
-msgstr "Modificar impressora"
-
-msgid "Move All Jobs"
-msgstr "Mover todos trabalhos"
-
-msgid "Move Job"
-msgstr "Mover trabalho"
-
-msgid "Moved Permanently"
-msgstr "Mover permanentemente"
-
-msgid "NULL PPD file pointer"
-msgstr "Ponteiro NULO para arquivo PPD"
-
-msgid "Name OID uses indefinite length"
-msgstr "OID de nome usa comprimento indefinido"
-
-msgid "Nested classes are not allowed."
-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 Stylus Photo Series"
-msgstr "Nova Stylus Photos Séries"
-
-msgid "No"
-msgstr "Não"
-
-msgid "No Content"
-msgstr "Nenhum conteúdo"
-
-msgid "No PPD name"
-msgstr "Nenhum nome PPD"
-
-msgid "No VarBind SEQUENCE"
-msgstr "Nenhuma SEQUENCE de VarBind"
-
-msgid "No Windows printer drivers are installed."
-msgstr "Nenhum driver de impressora Windows está instalado."
-
-msgid "No active connection"
-msgstr "Nenhuma conexão ativa"
-
-msgid "No active connection."
-msgstr "Nenhuma conexão ativa."
-
-#, c-format
-msgid "No active jobs on %s."
-msgstr "Nenhum trabalho ativo em %s"
-
-msgid "No attributes in request."
-msgstr "Nenhum atributo na requisição."
-
-msgid "No authentication information provided."
-msgstr "Nenhuma informação de autenticação foi fornecida."
-
-msgid "No community name"
-msgstr "Nenhum nome de comunidade"
-
-msgid "No default printer."
-msgstr "Nenhuma impressora padrão."
-
-msgid "No destinations added."
-msgstr "Nenhuma destinação foi adicionada."
-
-msgid "No device URI found in argv[0] or in DEVICE_URI environment variable."
-msgstr ""
-"Nenhum URI de dispositivo encontrado em argv[0] ou na variável de ambiente "
-"DEVICE_URI."
-
-msgid "No error-index"
-msgstr "Nenhum error-index"
-
-msgid "No error-status"
-msgstr "Nenhum error-status"
-
-msgid "No file in print request."
-msgstr "Nenhum arquivo na requisição de impressão."
-
-msgid "No modification time"
-msgstr "Nenhum horário de modificação"
-
-msgid "No name OID"
-msgstr "Nenhum OID de nome"
-
-msgid "No pages were found."
-msgstr "Nenhuma página foi encontrada."
-
-msgid "No printer name"
-msgstr "Nenhum nome de impressora"
-
-msgid "No printer-uri found"
-msgstr "Nenhum printer-uri foi encontrado"
-
-msgid "No printer-uri found for class"
-msgstr "Nenhum printer-uri foi encontrado para classe"
-
-msgid "No printer-uri in request."
-msgstr "Nenhum printer-uri na requisição."
-
-msgid "No request sent."
-msgstr "Nenhuma requisição enviada."
-
-msgid "No request-id"
-msgstr "Nenhum request-id"
-
-msgid "No subscription attributes in request."
-msgstr "Nenhum atributo de inscrição na requisição."
-
-msgid "No subscriptions found."
-msgstr "Nenhuma inscrição encontrada."
-
-msgid "No variable-bindings SEQUENCE"
-msgstr "Nenhum SEQUENCE em variable-bindings"
-
-msgid "No version number"
-msgstr "Nenhum número de versão"
-
-msgid "Non-continuous (Mark sensing)"
-msgstr "Não-contíguo (Mark sensing)"
-
-msgid "Non-continuous (Web sensing)"
-msgstr "Não-contíguo (Web sensing)"
-
-msgid "Normal"
-msgstr "Normal"
-
-msgid "Not Found"
-msgstr "Não encontrado"
-
-msgid "Not Implemented"
-msgstr "Não implementado"
-
-msgid "Not Installed"
-msgstr "Não instalado"
-
-msgid "Not Modified"
-msgstr "Não modificado"
-
-msgid "Not Supported"
-msgstr "Não suportado"
-
-msgid "Not allowed to print."
-msgstr "Sem permissão para imprimir."
-
-msgid "Note"
-msgstr "Nota"
-
-msgid ""
-"Note: this program only validates the DSC comments, not the PostScript "
-"itself."
-msgstr ""
-"Nota: esse programa só valida os comentários DSC, e não o próprio PostScript."
-
-msgid "OK"
-msgstr "OK"
-
-msgid "Off (1-Sided)"
-msgstr "Off (1 lado)"
-
-msgid "Oki"
-msgstr "Oki"
-
-msgid "Online Help"
-msgstr "Ajuda online"
-
-#, c-format
-msgid "Open of %s failed: %s"
-msgstr "Abertura de %s falhou: %s"
-
-msgid "OpenGroup without a CloseGroup first"
-msgstr "OpenGroup sem um CloseGroup primeiro"
-
-msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first"
-msgstr "OpenUI/JCLOpenUI sem um CloseUI/JCLCloseUI primeiro"
-
-msgid "Operation Policy"
-msgstr "Política de operação"
-
-#, c-format
-msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
-msgstr "Opção \"%s\" não pode ser incluída via %%%%IncludeFeature."
-
-msgid "Options Installed"
-msgstr "Opções instaladas"
-
-msgid "Options:"
-msgstr "Opções:"
-
-msgid "Out of date PPD cache file."
-msgstr "Cache de arquivo PPD está desatualizado."
-
-msgid "Out of memory."
-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"
-
-#, 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"
-
-#, 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 "PASS"
-msgstr "PASSOU"
-
-msgid "PCL Laser Printer"
-msgstr "Impressora Laser PCL"
-
-msgid "PRC16K"
-msgstr "PRC16K"
-
-msgid "PRC16K Long Edge"
-msgstr "PRC16K borda maior"
-
-msgid "PRC32K"
-msgstr "PRC32K"
-
-msgid "PRC32K Long Edge"
-msgstr "PRC32K borda maior"
-
-msgid "PRC32K Oversize"
-msgstr "PRC32K grande"
-
-msgid "PRC32K Oversize Long Edge"
-msgstr "PRC32K borda muito maior"
-
-msgid "Packet does not contain a Get-Response-PDU"
-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 "ParamCustominCutInterval"
-msgstr "ParamCustominCutInterval"
-
-msgid "ParamCustominTearInterval"
-msgstr "ParamCustominTearInterval"
-
-#, c-format
-msgid "Password for %s on %s? "
-msgstr "Senha para %s em %s? "
-
-#, c-format
-msgid "Password for %s required to access %s via SAMBA: "
-msgstr "Senha para %s é necessária para acessar %s via SAMBA: "
-
-msgid "Pause Class"
-msgstr "Pausar classe"
-
-msgid "Pause Printer"
-msgstr "Pausar impressora"
-
-# peel-off seria descolar etiqueta do papel?
-msgid "Peel-Off"
-msgstr "Descolar"
-
-msgid "Photo"
-msgstr "Foto"
-
-msgid "Photo Labels"
-msgstr "Foto pequena"
-
-msgid "Plain Paper"
-msgstr "Papel normal"
-
-msgid "Policies"
-msgstr "Políticas"
-
-msgid "Port Monitor"
-msgstr "Monitor de porta"
-
-msgid "PostScript Printer"
-msgstr "Impressora PostScript"
-
-msgid "Postcard"
-msgstr "Postal"
-
-msgid "Postcard Double "
-msgstr "Postal duplo"
-
-msgid "Postcard Double Long Edge"
-msgstr "Postal duplo borda maior"
-
-msgid "Postcard Long Edge"
-msgstr "Postal borda maior"
-
-msgid "Preparing to print."
-msgstr "Preparando para imprimir."
-
-msgid "Print Density"
-msgstr "Densidade de impressão"
-
-msgid "Print Job:"
-msgstr "Trabalho de impressão:"
-
-msgid "Print Mode"
-msgstr "Modo de impressão"
-
-msgid "Print Rate"
-msgstr "Taxa de impressão"
-
-msgid "Print Self-Test Page"
-msgstr "Imprimir página de auto-teste"
-
-msgid "Print Speed"
-msgstr "Velocidade de impressão"
-
-msgid "Print Test Page"
-msgstr "Imprimir página de teste"
-
-msgid "Print and Cut"
-msgstr "Imprimir e cortar"
-
-msgid "Print and Tear"
-msgstr "Imprimir e rasgar"
-
-msgid "Print file sent."
-msgstr "Arquivo de impressão enviado."
-
-msgid "Print job canceled at printer."
-msgstr "Trabalho de impressão cancelado na impressora."
-
-msgid "Print job too large."
-msgstr "Trabalho de impressão muito grande."
-
-msgid "Print job was not accepted."
-msgstr "Trabalho de impressão não foi aceito."
-
-msgid "Printer Added"
-msgstr "Impressora adicionada"
-
-msgid "Printer Default"
-msgstr "Impressora padrão"
-
-msgid "Printer Deleted"
-msgstr "Impressora excluída"
-
-msgid "Printer Modified"
-msgstr "Impressora modificada"
-
-msgid "Printer Paused"
-msgstr "Impressora pausada"
-
-msgid "Printer Settings"
-msgstr "Configurações de impressora"
-
-msgid "Printer cannot print supplied content."
-msgstr "Impressora não consegue imprimir o conteúdo fornecido."
-
-msgid "Printer cannot print with supplied options."
-msgstr "Impressora não consegue imprimir os opções fornecidas."
-
-msgid "Printer:"
-msgstr "Impressora:"
-
-msgid "Printers"
-msgstr "Impressoras"
-
-#, c-format
-msgid "Printing page %d, %d%% complete."
-msgstr "Imprimindo página %d, %d%% completo."
-
-msgid "Purge Jobs"
-msgstr "Apagar trabalhos"
-
-msgid "Quarto"
-msgstr "Quarto"
-
-msgid "Quota limit reached."
-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"
-msgstr ""
-"Ordem   Dono      Pri  Trab       Arquivos                    Tamanho total"
-
-msgid "Reject Jobs"
-msgstr "Rejeitar trabalhos"
-
-#, c-format
-msgid "Remote host did not accept control file (%d)."
-msgstr "Máquina remota não aceitou arquivo de controle (%d)."
-
-#, c-format
-msgid "Remote host did not accept data file (%d)."
-msgstr "Máquina remota não aceitou arquivo de dados (%d)."
-
-msgid "Reprint After Error"
-msgstr "Erro após reimpressão"
-
-msgid "Request Entity Too Large"
-msgstr "Entidade de requisição muito grande"
-
-msgid "Resolution"
-msgstr "Resolução"
-
-msgid "Resume Class"
-msgstr "Resumir classe"
-
-msgid "Resume Printer"
-msgstr "Resumir impressora"
-
-msgid "Return Address"
-msgstr "Retornar endereço"
-
-msgid "Rewind"
-msgstr "Rebobinar"
-
-#, c-format
-msgid "Running command: %s %s -N -A %s -c '%s'"
-msgstr "Executando comando: %s %s -N -A %s -c '%s'"
-
-msgid "SEQUENCE uses indefinite length"
-msgstr "SEQUENCE usa comprimento indefinido"
-
-msgid "SSL/TLS Negotiation Error"
-msgstr "Erro de negociação SSL/TLS"
-
-msgid "See Other"
-msgstr "Veja outro"
-
-msgid "Sending data to printer."
-msgstr "Enviando dados à impressora."
-
-msgid "Server Restarted"
-msgstr "Servidor reiniciado"
-
-msgid "Server Security Auditing"
-msgstr "Auditoria de segurança de servidor"
-
-msgid "Server Started"
-msgstr "Servidor iniciou"
-
-msgid "Server Stopped"
-msgstr "Servidor parou"
-
-msgid "Service Unavailable"
-msgstr "Serviço indisponível"
-
-msgid "Set Allowed Users"
-msgstr "Definir usuários permitidos"
-
-msgid "Set As Server Default"
-msgstr "Definir como servidor padrão"
-
-msgid "Set Class Options"
-msgstr "Definir opções de classe"
-
-msgid "Set Printer Options"
-msgstr "Definir opções de impressora"
-
-msgid "Set Publishing"
-msgstr "Definir publicação"
-
-msgid "Shipping Address"
-msgstr "Endereço de entrega"
-
-msgid "Short-Edge (Landscape)"
-msgstr "Borda menor (paisagem)"
-
-msgid "Special Paper"
-msgstr "Papel especial"
-
-#, c-format
-msgid "Spooling job, %.0f%% complete."
-msgstr "Trabalho de impressão, %.0f%% completo."
-
-msgid "Standard"
-msgstr "Padrão"
-
-#. TRANSLATORS: Banner/cover sheet before the print job.
-msgid "Starting Banner"
-msgstr "Iniciando banner"
-
-#, c-format
-msgid "Starting page %d."
-msgstr "Iniciando página %d."
-
-msgid "Statement"
-msgstr "Declaração"
-
-msgid "Stylus Color Series"
-msgstr "Stylus Color Séries"
-
-msgid "Stylus Photo Series"
-msgstr "Stylus Photo Séries"
-
-#, c-format
-msgid "Subscription #%d does not exist."
-msgstr "Inscrição #%d não existe."
-
-msgid "Substitutions:"
-msgstr "Substituições:"
-
-msgid "Super A"
-msgstr "Super A"
-
-msgid "Super B"
-msgstr "Super B"
-
-msgid "Super B/A3"
-msgstr "Super B/A3"
-
-msgid "Switching Protocols"
-msgstr "Alternando protocolos"
-
-msgid "Tabloid"
-msgstr "Tabloide"
-
-msgid "Tabloid Oversize"
-msgstr "Tabloide grande"
-
-msgid "Tabloid Oversize Long Edge"
-msgstr "Tabloide borda muito maior"
-
-msgid "Tear"
-msgstr "Destacar"
-
-msgid "Tear-Off"
-msgstr "Destacar"
-
-msgid "Tear-Off Adjust Position"
-msgstr "Ajuste da posição de destaque"
-
-#, c-format
-msgid "The \"%s\" attribute is required for print jobs."
-msgstr "O atributo \"%s\" é necessário para imprimir os trabalhos."
-
-#, c-format
-msgid "The %s attribute cannot be provided with job-ids."
-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."
-msgstr ""
-"O atributo Job Description \"%s\" não pode ser fornecido em uma requisição "
-"de criação de trabalho."
-
-#, c-format
-msgid ""
-"The '%s' operation attribute cannot be supplied in a Create-Job request."
-msgstr ""
-"O atributo de operação '%s' não pode ser fornecido em uma requisição de "
-"criação de trabalho."
-
-#, c-format
-msgid "The PPD file \"%s\" could not be found."
-msgstr "O arquivo PPD \"%s\" não pôde ser encontrado."
-
-#, c-format
-msgid "The PPD file \"%s\" could not be opened: %s"
-msgstr "O arquivo PPD \"%s\" não pôde ser aberto: %s"
-
-msgid "The PPD file could not be opened."
-msgstr "O arquivo PPD não pôde ser aberto."
-
-msgid ""
-"The class name may only contain up to 127 printable characters and may not "
-"contain spaces, slashes (/), or the pound sign (#)."
-msgstr ""
-"O nome da classe pode conter somente até 127 caracteres imprimíveis e não "
-"pode conter espaços, barras (/), ou sinal de tralha (#)."
-
-msgid "The developer unit needs to be replaced."
-msgstr "A unidade de desenvolvedor precisa ser substituído."
-
-msgid "The developer unit will need to be replaced soon."
-msgstr "A unidade de desenvolvedor precisará ser substituído em breve."
-
-msgid "The fuser's temperature is high."
-msgstr "A temperatura do fusor está alta."
-
-msgid "The fuser's temperature is low."
-msgstr "A temperatura do fusor está baixa."
-
-msgid ""
-"The notify-lease-duration attribute cannot be used with job subscriptions."
-msgstr ""
-"O atributo notify-lease-duration não pode ser usado para inscrições de "
-"trabalhos."
-
-#, c-format
-msgid "The notify-user-data value is too large (%d > 63 octets)."
-msgstr "O valor de notify-user-data está muito grande (%d > 63 octetos)."
-
-msgid "The optical photoconductor needs to be replaced."
-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."
-
-msgid "The printer did not respond."
-msgstr "A impressora não respondeu."
-
-msgid "The printer is in use."
-msgstr "A impressora está em uso."
-
-msgid "The printer is not connected."
-msgstr "A impressora não está conectada."
-
-msgid "The printer is not responding."
-msgstr "A impressora não está respondendo."
-
-msgid "The printer is now connected."
-msgstr "A impressora está agora conectada."
-
-msgid "The printer is now online."
-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."
-
-msgid "The printer may be out of ink."
-msgstr "A impressora pode estar sem tinta."
-
-msgid "The printer may be out of toner."
-msgstr "A impressora pode estar sem toner."
-
-msgid "The printer may not exist or is unavailable at this time."
-msgstr "A impressora pode não existir ou está indisponível neste momento."
-
-msgid ""
-"The printer name may only contain up to 127 printable characters and may not "
-"contain spaces, slashes (/), or the pound sign (#)."
-msgstr ""
-"O nome da impressora pode conter somente até 127 caracteres imprimíveis e "
-"não pode conter espaços, barras (/), ou sinal de tralha (#)."
-
-msgid "The printer or class does not exist."
-msgstr "A impressora ou classe não existe."
-
-msgid "The printer or class is not shared."
-msgstr "A impressora ou classe não está compartilhada."
-
-msgid "The printer's cover is open."
-msgstr "A tampa superior da impressora está aberta."
-
-msgid "The printer's door is open."
-msgstr "A tampa da impressora está aberta."
-
-msgid "The printer's interlock is open."
-msgstr "A interlock da impressora está aberta."
-
-msgid "The printer's waste bin is almost full."
-msgstr "A lixeira da impressora está quase completa."
-
-msgid "The printer's waste bin is full."
-msgstr "A lixeira da impressora está completa."
-
-#, c-format
-msgid "The printer-uri \"%s\" contains invalid characters."
-msgstr "O printer-uri \"%s\" contém caracteres inválidos."
-
-msgid "The printer-uri attribute is required."
-msgstr "O atributo printer-uri é necessário."
-
-msgid ""
-"The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
-msgstr ""
-"O printer-uri deve estar no formato \"ipp://MAQUINA/classes/NOMECLASSE\"."
-
-msgid ""
-"The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
-msgstr ""
-"O printer-uri deve estar no formato \"ipp://MAQUINA/printers/NOMEIMPRESSORA"
-"\"."
-
-msgid ""
-"The subscription name may not contain spaces, slashes (/), question marks "
-"(?), or the pound sign (#)."
-msgstr ""
-"O nome da inscrição não pode conter espaços, barras (/), sinais de "
-"interrogação (?), ou sinal de tralha (#)."
-
-msgid ""
-"The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to "
-"enable it."
-msgstr ""
-"A interface web está desabilitada no momento. Execute \"cupsctl "
-"WebInterface=yes\" para habilitá-la."
-
-#, c-format
-msgid "The which-jobs value \"%s\" is not supported."
-msgstr "O valor de which-jobs \"%s\" não é suportado."
-
-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."
-
-msgid "Thermal Transfer Media"
-msgstr "Mídia de transferência térmica"
-
-msgid "Too many active jobs."
-msgstr "Há trabalhos demais ativos."
-
-#, c-format
-msgid "Too many job-sheets values (%d > 2)."
-msgstr "Há valores de job-sheets demais (%d > 2)."
-
-#, c-format
-msgid "Too many printer-state-reasons values (%d > %d)."
-msgstr "Há valores de printer-state-reasons demais (%d >%d)."
-
-msgid "Transparency"
-msgstr "Transparência"
-
-msgid "Tray"
-msgstr "Bandeja"
-
-msgid "Tray 1"
-msgstr "Bandeja 1"
-
-msgid "Tray 2"
-msgstr "Bandeja 2"
-
-msgid "Tray 3"
-msgstr "Bandeja 3"
-
-msgid "Tray 4"
-msgstr "Bandeja 4"
-
-msgid "URI Too Long"
-msgstr "URI muito longa"
-
-msgid "US Ledger"
-msgstr "US Ledger"
-
-msgid "US Legal"
-msgstr "US Legal"
-
-msgid "US Legal Oversize"
-msgstr "US Legal grande"
-
-msgid "US Letter"
-msgstr "US Letter"
-
-msgid "US Letter Long Edge"
-msgstr "US Letter borda maior"
-
-msgid "US Letter Oversize"
-msgstr "US Letter grande"
-
-msgid "US Letter Oversize Long Edge"
-msgstr "US Letter borda muito maior"
-
-msgid "US Letter Small"
-msgstr "US Letter pequena"
-
-msgid "Unable to access cupsd.conf file"
-msgstr "Não foi possível acessar o arquivo cupsd.conf"
-
-msgid "Unable to access help file."
-msgstr "Não foi possível acessar o arquivo de ajuda."
-
-msgid "Unable to add RSS subscription"
-msgstr "Não foi possível adicionar inscrição RSS"
-
-msgid "Unable to add class"
-msgstr "Não foi possível adicionar classe"
-
-msgid "Unable to add document to print job."
-msgstr "Não foi possível adicionar o documento ao trabalho de impressão."
-
-#, c-format
-msgid "Unable to add job for destination \"%s\"."
-msgstr "Não foi possível adicionar trabalho para destino \"%s\"."
-
-msgid "Unable to add printer"
-msgstr "Não foi possível adicionar impressora"
-
-msgid "Unable to allocate memory for file types."
-msgstr "Não foi possível alocar memória para os tipos de arquivos."
-
-msgid "Unable to allocate memory for page info"
-msgstr "Não foi possível alocar memória para informação de página"
-
-msgid "Unable to allocate memory for pages array"
-msgstr "Não foi possível alocar memória para vetor de páginas"
-
-msgid "Unable to cancel RSS subscription"
-msgstr "Não foi possível cancelar inscrição RSS"
-
-msgid "Unable to cancel print job."
-msgstr "Não foi possível cancelar trabalho de impressão."
-
-msgid "Unable to change printer"
-msgstr "Não foi possível alterar a impressora"
-
-msgid "Unable to change printer-is-shared attribute"
-msgstr "Não foi possível alterar o atributo printer-is-shared"
-
-msgid "Unable to change server settings"
-msgstr "Não foi possível alterar as configurações do servidor"
-
-#, c-format
-msgid "Unable to compile mimeMediaType regular expression: %s."
-msgstr "Não foi possível compilar a expressão regular de mimeMediaType: %s."
-
-#, c-format
-msgid "Unable to compile naturalLanguage regular expression: %s."
-msgstr "Não foi possível compilar a expressão regular de naturalLanguage: %s."
-
-msgid "Unable to configure printer options."
-msgstr "Não foi possível configurar opções de impressora."
-
-msgid "Unable to connect to host."
-msgstr "Não foi possível conectar à máquina."
-
-msgid "Unable to contact printer, queuing on next printer in class."
-msgstr ""
-"Não foi possível contactar a impressora, enfileirando na próxima impressora "
-"na classe."
-
-#, c-format
-msgid "Unable to copy 64-bit CUPS printer driver files (%d)."
-msgstr ""
-"Não foi possível copiar arquivos de driver de impressora CUPS 64-bit (%d)."
-
-#, c-format
-msgid "Unable to copy 64-bit Windows printer driver files (%d)."
-msgstr ""
-"Não foi possível copiar arquivos de driver de impressora (%d) de Windows 64-"
-"bit."
-
-#, c-format
-msgid "Unable to copy CUPS printer driver files (%d)."
-msgstr "Não foi possível copiar arquivos de driver de impressora (%d) de CUPS."
-
-#, c-format
-msgid "Unable to copy PPD file - %s"
-msgstr "Não foi possível copiar arquivo PPD - %s"
-
-msgid "Unable to copy PPD file."
-msgstr "Não foi possível copiar arquivo PPD."
-
-#, c-format
-msgid "Unable to copy Windows 2000 printer driver files (%d)."
-msgstr ""
-"Não foi possível copiar arquivos de driver de impressora (%d) de Windows "
-"2000."
-
-#, c-format
-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 printer-uri"
-msgstr "Não foi possível criar uri de impressora"
-
-msgid "Unable to create temporary file"
-msgstr "Não foi possível criar arquivo temporário"
-
-msgid "Unable to delete class"
-msgstr "Não foi possível excluir classe"
-
-msgid "Unable to delete printer"
-msgstr "Não foi possível excluir impressora"
-
-msgid "Unable to do maintenance command"
-msgstr "Não foi possível executar comando de manutenção"
-
-msgid "Unable to edit cupsd.conf files larger than 1MB"
-msgstr "Não foi possível editar arquivos de cupsd.conf maiores que 1MB"
-
-msgid ""
-"Unable to establish a secure connection to host (certificate chain invalid)."
-msgstr ""
-"Não foi possível estabelecer uma conexão segura com a máquina (cadeia de "
-"certificação inválida)."
-
-msgid ""
-"Unable to establish a secure connection to host (certificate not yet valid)."
-msgstr ""
-"Não foi possível estabelecer uma conexão segura com a máquina (certificado "
-"inválido no momento)."
-
-msgid "Unable to establish a secure connection to host (expired certificate)."
-msgstr ""
-"Não foi possível estabelecer uma conexão segura com a máquina (certificado "
-"expirou)."
-
-msgid "Unable to establish a secure connection to host (host name mismatch)."
-msgstr ""
-"Não foi possível estabelecer uma conexão segura com a máquina (nome da "
-"máquina incorreto)."
-
-msgid ""
-"Unable to establish a secure connection to host (peer dropped connection "
-"before responding)."
-msgstr ""
-"Não foi possível estabelecer uma conexão segura com a máquina (terminou a "
-"conexão sem a resposta)."
-
-msgid ""
-"Unable to establish a secure connection to host (self-signed certificate)."
-msgstr ""
-"Não foi possível estabelecer uma conexão segura com a máquina (certificado "
-"auto-assinado)."
-
-msgid ""
-"Unable to establish a secure connection to host (untrusted certificate)."
-msgstr ""
-"Não foi possível estabelecer uma conexão segura com a máquina (certificado "
-"não confiado)."
-
-msgid "Unable to establish a secure connection to host."
-msgstr "Não foi possível estabelecer uma conexão segura com a máquina."
-
-msgid "Unable to find destination for job"
-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 get backend exit status."
-msgstr "Não foi possível obter o estado de saída do backend."
-
-msgid "Unable to get class list"
-msgstr "Não foi possível obter lista de classes"
-
-msgid "Unable to get class status"
-msgstr "Não foi possível obter o estado da classe"
-
-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"
-
-msgid "Unable to get printer list"
-msgstr "Não foi possível obter lista de impressora"
-
-msgid "Unable to get printer status"
-msgstr "Não foi possível obter status de impressora"
-
-msgid "Unable to get printer status."
-msgstr "Não foi possível obter o estado de impressora."
-
-#, c-format
-msgid "Unable to install Windows 2000 printer driver files (%d)."
-msgstr ""
-"Não foi possível instalar arquivos de driver de impressora Windows 2000 (%d)."
-
-#, c-format
-msgid "Unable to install Windows 9x printer driver files (%d)."
-msgstr ""
-"Não foi possível instalar arquivos de driver de impressora Windows 9x (%d)."
-
-msgid "Unable to load help index."
-msgstr "Não foi possível carregar índice de ajuda."
-
-#, c-format
-msgid "Unable to locate printer \"%s\"."
-msgstr "Não foi possível localizar a impressora \"%s\"."
-
-msgid "Unable to locate printer."
-msgstr "Não foi possível localizar a impressora."
-
-msgid "Unable to modify class"
-msgstr "Não foi possível modificar classe"
-
-msgid "Unable to modify printer"
-msgstr "Não foi possível modificar impressora"
-
-msgid "Unable to move job"
-msgstr "Não foi possível mover trabalho"
-
-msgid "Unable to move jobs"
-msgstr "Não foi possível mover trabalhos"
-
-msgid "Unable to open PPD file"
-msgstr "Não foi possível abrir arquivo PPD"
-
-msgid "Unable to open cupsd.conf file:"
-msgstr "Não foi possível abrir arquivo cupsd.conf:"
-
-msgid "Unable to open device file"
-msgstr "Não foi possível abrir arquivo dispositivo"
-
-#, c-format
-msgid "Unable to open document #%d in job #%d."
-msgstr "Não foi possível abrir documento #%d no trabalho #%d."
-
-msgid "Unable to open help file."
-msgstr "Não foi possível abrir arquivo de ajuda."
-
-msgid "Unable to open print file"
-msgstr "Não foi possível abrir arquivo de impressão"
-
-msgid "Unable to open raster file"
-msgstr "Não foi possível arquivo de rasterização"
-
-msgid "Unable to print test page"
-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."
-
-#, c-format
-msgid "Unable to run \"%s\": %s"
-msgstr "Não foi possível executar \"%s\": %s"
-
-msgid "Unable to see in file"
-msgstr "Não foi possível ler o arquivo"
-
-msgid "Unable to send command to printer driver"
-msgstr "Não foi possível enviar comando ao driver da impressora"
-
-msgid "Unable to send data to printer."
-msgstr "Não foi possível enviar dados à impressora."
-
-#, c-format
-msgid "Unable to set Windows printer driver (%d)."
-msgstr "Não foi possível definir driver de impressora Windows (%d)."
-
-msgid "Unable to set options"
-msgstr "Não foi possível definir opções"
-
-msgid "Unable to set server default"
-msgstr "Não foi possível definir servidor padrão"
-
-msgid "Unable to start backend process."
-msgstr "Não foi possível iniciar processo de backend."
-
-msgid "Unable to upload cupsd.conf file"
-msgstr "Não foi possível atualizar o arquivo cupsd.conf"
-
-msgid "Unable to use legacy USB class driver."
-msgstr "Não foi possível usar driver de classe USB legado."
-
-msgid "Unable to write print data"
-msgstr "Não foi possível escrever dados de impressão"
-
-#, c-format
-msgid "Unable to write uncompressed print data: %s"
-msgstr "Não foi possível escrever dados descompactados de impressão: %s"
-
-msgid "Unauthorized"
-msgstr "Não autorizado"
-
-msgid "Units"
-msgstr "Unidades"
-
-msgid "Unknown"
-msgstr "Desconhecido"
-
-#, c-format
-msgid "Unknown choice \"%s\" for option \"%s\"."
-msgstr "Escolha desconhecida \"%s\" para opção \"%s\"."
-
-#, c-format
-msgid "Unknown encryption option value: \"%s\"."
-msgstr "Valor da opção de criptografia desconhecido: \"%s\"."
-
-#, c-format
-msgid "Unknown file order: \"%s\"."
-msgstr "Ordem de arquivo desconhecida: \"%s\"."
-
-#, c-format
-msgid "Unknown format character: \"%c\"."
-msgstr "Caractere de formato desconhecido: \"%c\"."
-
-msgid "Unknown media size name."
-msgstr "Nome de tamanho de mídia desconhecido."
-
-#, c-format
-msgid "Unknown option \"%s\" with value \"%s\"."
-msgstr "Opção \"%s\" desconhecida com valor \"%s\"."
-
-#, c-format
-msgid "Unknown option \"%s\"."
-msgstr "Opção \"%s\" desconhecida."
-
-#, c-format
-msgid "Unknown print mode: \"%s\"."
-msgstr "Modo de impressão desconhecido: \"%s\"."
-
-#, c-format
-msgid "Unknown printer-error-policy \"%s\"."
-msgstr "printer-error-policy \"%s\" desconhecido."
-
-#, c-format
-msgid "Unknown printer-op-policy \"%s\"."
-msgstr "printer-op-policy \"%s\" desconhecido."
-
-msgid "Unknown service name."
-msgstr "Nome de serviço desconhecido."
-
-#, c-format
-msgid "Unknown version option value: \"%s\"."
-msgstr "Valor de opção de versão desconhecido: \"%s\"."
-
-#, c-format
-msgid "Unsupported 'compression' value \"%s\"."
-msgstr "Valor de \"compression\" sem suporte \"%s\"."
-
-#, c-format
-msgid "Unsupported 'document-format' value \"%s\"."
-msgstr "Valor de \"document-format\" sem suporte \"%s\"."
-
-msgid "Unsupported 'job-name' value."
-msgstr "Valor de \"job-name\" sem suporte."
-
-#, c-format
-msgid "Unsupported character set \"%s\"."
-msgstr "Conjunto de caracteres \"%s\" sem suporte."
-
-#, c-format
-msgid "Unsupported compression \"%s\"."
-msgstr "Compressão \"%s\" sem suporte."
-
-#, c-format
-msgid "Unsupported document-format \"%s\"."
-msgstr "document-format \"%s\" sem suporte."
-
-#, c-format
-msgid "Unsupported document-format \"%s/%s\"."
-msgstr "document-format \"%s/%s\" sem suporte."
-
-#, c-format
-msgid "Unsupported format \"%s\"."
-msgstr "Formato \"%s\" sem suporte."
-
-msgid "Unsupported margins."
-msgstr "Margens sem suporte."
-
-msgid "Unsupported media value."
-msgstr "Valor de mídia sem suporte."
-
-#, c-format
-msgid "Unsupported number-up value %d, using number-up=1."
-msgstr "Valor de number-up %d sem suporte; 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."
-
-#, c-format
-msgid "Unsupported page-border value %s, using page-border=none."
-msgstr "Valor de page-border %s sem suporte; usando page-border=none."
-
-msgid "Unsupported raster data."
-msgstr "Dados de rasterização sem suporte."
-
-msgid "Unsupported value type"
-msgstr "Tipo de valor sem suporte"
-
-msgid "Upgrade Required"
-msgstr "Atualização necessária"
-
-msgid ""
-"Usage:\n"
-"\n"
-"    lpadmin [-h server] -d destination\n"
-"    lpadmin [-h server] -x destination\n"
-"    lpadmin [-h server] -p printer [-c add-class] [-i interface] [-m model]\n"
-"                       [-r remove-class] [-v device] [-D description]\n"
-"                       [-P ppd-file] [-o name=value]\n"
-"                       [-u allow:user,user] [-u deny:user,user]"
-msgstr ""
-"Uso:\n"
-"\n"
-"    lpadmin [-h servidor] -d destino\n"
-"    lpadmin [-h servidor] -x destino\n"
-"    lpadmin [-h servidor] -p impressora [-c add-classe] [-i interface]\n"
-"                       [-m modelo] [-r remove-classe] [-v dispositivo]\n"
-"                       [-D descrição] [-P arquivo-ppd] [-o nome=valor]\n"
-"                       [-u allow:usuário,usuário] [-u deny:usuário,usuário]"
-
-#, c-format
-msgid "Usage: %s job-id user title copies options [file]"
-msgstr "Uso: %s job-id usuário título cópias opções [arquivo]"
-
-msgid "Usage: cupsaddsmb [options] printer1 ... printerN"
-msgstr "Uso: cupsaddsmb [opções] impressora1 ... impressoraN"
-
-msgid "Usage: cupsctl [options] [param=value ... paramN=valueN]"
-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: cupstestdsc [options] filename.ps [... filename.ps]"
-msgstr "Uso: cupstestdsc [opções] arquivo.ps [... arquivo.ps]"
-
-msgid ""
-"Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]"
-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"
-"       ippfind --version"
-msgstr ""
-"Uso: ippfind [opções] tiporeg[,tiposub][.domínio.] ... [expressões]\n"
-"     ippfind [opções] nome[.tiporeg[.domínio.]] ... [expressões]\n"
-"     ippfind --help\n"
-"     ippfind --version"
-
-msgid "Usage: ipptool [options] URI filename [ ... filenameN ]"
-msgstr "Uso: ipptool [opções] URI arquivo [ ... arquivoN ]"
-
-msgid "Usage: lpmove job/src dest"
-msgstr "Uso: lpmove trabalho/fonte dest"
-
-msgid ""
-"Usage: lpoptions [-h server] [-E] -d printer\n"
-"       lpoptions [-h server] [-E] [-p printer] -l\n"
-"       lpoptions [-h server] [-E] -p printer -o option[=value] ...\n"
-"       lpoptions [-h server] [-E] -x printer"
-msgstr ""
-"Uso: lpoptions [-h servidor] [-E] -d impressora\n"
-"     lpoptions [-h servidor] [-E] [-p impressora] -l\n"
-"     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]"
-
-msgid "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]"
-msgstr "Uso: ppdc [opções] arquivo.drv [ ... arquivoN.drv ]"
-
-msgid "Usage: ppdhtml [options] filename.drv >filename.html"
-msgstr "Uso: ppdhtml [opções] arquivo.drv >arquivo.html"
-
-msgid "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]"
-msgstr "Uso: ppdi [opções] arquivo.ppd [ ... arquivoN.ppd ]"
-
-msgid "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]"
-msgstr "Uso: ppdmerge [opções] arquivo.ppd [ ... arquivoN.ppd ]"
-
-msgid ""
-"Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]"
-msgstr "Uso: ppdpo [opções] -o arquivo.po arquivo.drv [ ... arquivoN.drv ]"
-
-msgid "Usage: snmp [host-or-ip-address]"
-msgstr "Uso: snmp [máquina-ou-endereço-ip]"
-
-msgid "Value uses indefinite length"
-msgstr "Valor usa comprimento indefinido"
-
-msgid "VarBind uses indefinite length"
-msgstr "VarBind usa comprimento indefinido"
-
-msgid "Version uses indefinite length"
-msgstr "Version usa comprimento indefinido"
-
-msgid "Waiting for job to complete."
-msgstr "Esperando o trabalho completar."
-
-msgid "Waiting for printer to become available."
-msgstr "Esperando a impressora ficar disponível."
-
-msgid "Waiting for printer to finish."
-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 "Web Interface is Disabled"
-msgstr "Interface web está desabilitada"
-
-msgid "Yes"
-msgstr "Sim"
-
-#, c-format
-msgid ""
-"You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://"
-"%s:%d%s</A>."
-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."
-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"
-
-msgid "Zebra"
-msgstr "Zebra"
-
-msgid "aborted"
-msgstr "abortado"
-
-msgid "canceled"
-msgstr "cancelado"
-
-msgid "completed"
-msgstr "completou"
-
-msgid "cups-deviced failed to execute."
-msgstr "cups-deviced falhou na execução."
-
-msgid "cups-driverd failed to execute."
-msgstr "cups-driverd falhou na execução."
-
-#, c-format
-msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s"
-msgstr "cupsaddsmb: Nenhum arquivo PPD para a impressora \"%s\" - %s"
-
-msgid "cupsctl: Cannot set Listen or Port directly."
-msgstr "cupsctl: Não foi possível definir diretamente Porta ou Listen."
-
-#, c-format
-msgid "cupsctl: Unable to connect to server: %s"
-msgstr "cupsctl: Não foi possível conectar o servidor: %s"
-
-#, c-format
-msgid "cupsctl: Unknown option \"%s\""
-msgstr "cupsctl: Opção desconhecida \"%s\""
-
-#, c-format
-msgid "cupsctl: Unknown option \"-%c\""
-msgstr "cupsctl: Opção desconhecida \"-%c\""
-
-msgid "cupsd: Expected config filename after \"-c\" option."
-msgstr "cupsd: Esperava nome de arquivo de configuração após a opção \"-c\"."
-
-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: Relative cups-files.conf filename not allowed."
-msgstr "cupsd: Nome de arquivo relativo para cups-files.conf não é permitido."
-
-msgid "cupsd: Unable to get current directory."
-msgstr "cupsd: Não é possível obter diretório atual."
-
-msgid "cupsd: Unable to get path to cups-files.conf file."
-msgstr ""
-"cupsd: Não foi possível obter o caminho para o arquivo cups-files.conf."
-
-#, c-format
-msgid "cupsd: Unknown argument \"%s\" - aborting."
-msgstr "cupsd: Argumento desconhecido \"%s\" - abortando."
-
-#, c-format
-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."
-
-#, c-format
-msgid "cupsfilter: Invalid job ID %d."
-msgstr "cupsfilter: ID de trabalho inválido %d."
-
-msgid "cupsfilter: Only one filename can be specified."
-msgstr "cupsfilter: Somente um nome de arquivo pode ser especificado."
-
-#, c-format
-msgid "cupsfilter: Unable to get job file - %s"
-msgstr "cupsfilter: Não é possível obter o arquivo do trabalho - %s"
-
-msgid "cupstestppd: The -q option is incompatible with the -v option."
-msgstr "cupstestppd: A opção -q é incompatível com a opção -v."
-
-msgid "cupstestppd: The -v option is incompatible with the -q option."
-msgstr "cupstestppd: A opção -v é incompatível com a opção -q."
-
-#, c-format
-msgid "device for %s/%s: %s"
-msgstr "dispositivo de %s/%s: %s"
-
-#, c-format
-msgid "device for %s: %s"
-msgstr "dispositivo de %s: %s"
-
-msgid "error-index uses indefinite length"
-msgstr "error-index usa comprimento indefinido"
-
-msgid "error-status uses indefinite length"
-msgstr "error-status usa comprimento indefinido"
-
-msgid "held"
-msgstr "retido"
-
-msgid "help\t\tGet help on commands."
-msgstr "help\t\tObtém ajuda sobre os comandos."
-
-msgid "idle"
-msgstr "inativo"
-
-#, c-format
-msgid "ippfind: Bad regular expression: %s"
-msgstr "ippfind: Expressão regular inválida: %s"
-
-msgid "ippfind: Cannot use --and after --or."
-msgstr "ippfind: Não é possível usar --and após --or."
-
-#, c-format
-msgid "ippfind: Expected key name after %s."
-msgstr "ippfind: Esperava nome da chave após %s."
-
-#, c-format
-msgid "ippfind: Expected port range after %s."
-msgstr "ippfind: Esperava faixa de portas após %s."
-
-#, c-format
-msgid "ippfind: Expected program after %s."
-msgstr "ippfind: Esperava o programa após %s."
-
-#, c-format
-msgid "ippfind: Expected semi-colon after %s."
-msgstr "ippfind: Esperava ponto-e-vírgula após %s."
-
-msgid "ippfind: Missing close brace in substitution."
-msgstr "ippfind: Faltando chave de fechamento na substituição."
-
-msgid "ippfind: Missing close parenthesis."
-msgstr "ippfind: Faltando parênteses de fechamento."
-
-msgid "ippfind: Missing expression before \"--and\"."
-msgstr "ippfind: Faltando expressão antes de \"--and\"."
-
-msgid "ippfind: Missing expression before \"--or\"."
-msgstr "ippfind: Faltando expressão antes de \"--or\"."
-
-#, c-format
-msgid "ippfind: Missing key name after %s."
-msgstr "ippfind: Faltando nome da chave após %s."
-
-msgid "ippfind: Missing open parenthesis."
-msgstr "ippfind: Faltando parênteses de abertura."
-
-#, c-format
-msgid "ippfind: Missing program after %s."
-msgstr "ippfind: Faltando programa após %s."
-
-#, c-format
-msgid "ippfind: Missing regular expression after %s."
-msgstr "ippfind: Faltando expressão regular após %s."
-
-#, c-format
-msgid "ippfind: Missing semi-colon after %s."
-msgstr "ippfind: Faltando dois-pontos após %s."
-
-msgid "ippfind: Out of memory."
-msgstr "ippfind: Memória insuficiente."
-
-msgid "ippfind: Too many parenthesis."
-msgstr "ippfind: Número excessivo de parênteses."
-
-#, c-format
-msgid "ippfind: Unable to browse or resolve: %s"
-msgstr "ippfind: Não foi possível navegar ou resolver: %s"
-
-#, c-format
-msgid "ippfind: Unable to execute \"%s\": %s"
-msgstr "ippfind: Não foi possível executar \"%s\": %s"
-
-#, c-format
-msgid "ippfind: Unable to use Bonjour: %s"
-msgstr "ippfind: Não foi possível usar Bonjour: %s"
-
-#, c-format
-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\"."
-
-#, c-format
-msgid "ipptool: Bad URI - %s."
-msgstr "ipptool: URI inválida - %s."
-
-msgid "ipptool: Invalid seconds for \"-i\"."
-msgstr "ipptool: Segundos inválidos para \"-i\"."
-
-msgid "ipptool: May only specify a single URI."
-msgstr "ipptool: Só é possível especificar uma única URI."
-
-msgid "ipptool: Missing count for \"-n\"."
-msgstr "ipptool: Contagem faltando para \"-n\"."
-
-msgid "ipptool: Missing filename for \"-f\"."
-msgstr "ipptool: Faltando nome de arquivo para \"-f\"."
-
-msgid "ipptool: Missing name=value for \"-d\"."
-msgstr "ipptool: Faltando nome=valor para\"-d\"."
-
-msgid "ipptool: Missing seconds for \"-i\"."
-msgstr "ipptool: Faltando segundos para \"-i\"."
-
-msgid "ipptool: URI required before test file."
-msgstr "ipptool: URI necessária antes do arquivo de teste."
-
-#, c-format
-msgid "ipptool: Unknown option \"-%c\"."
-msgstr "ipptool: Opção desconhecida \"-%c\"."
-
-msgid "job-printer-uri attribute missing."
-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\"."
-
-msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
-msgstr ""
-"lpadmin: Esperava permitir/negar lista de usuários após a opção \"-u\"."
-
-msgid "lpadmin: Expected class after \"-r\" option."
-msgstr "lpadmin: Esperava a classe após a opção \"-r\"."
-
-msgid "lpadmin: Expected class name after \"-c\" option."
-msgstr "lpadmin: Esperava nome de classe após a opção \"-c\"."
-
-msgid "lpadmin: Expected description after \"-D\" option."
-msgstr "lpadmin: Esperava descrição após a opção \"-D\"."
-
-msgid "lpadmin: Expected device URI after \"-v\" option."
-msgstr "lpadmin: Esperava URI de dispositivo após a opção \"-v\"."
-
-msgid "lpadmin: Expected file type(s) after \"-I\" option."
-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\"."
-
-msgid "lpadmin: Expected model after \"-m\" option."
-msgstr "lpadmin: Esperava modelo após a opção \"-m\"."
-
-msgid "lpadmin: Expected name after \"-R\" option."
-msgstr "lpadmin: Esperava nome após a opção \"-R\"."
-
-msgid "lpadmin: Expected name=value after \"-o\" option."
-msgstr "lpadmin: Esperava nome=valor após a opção \"-o\"."
-
-msgid "lpadmin: Expected printer after \"-p\" option."
-msgstr "lpadmin: Esperava impressora após a opção \"-p\"."
-
-msgid "lpadmin: Expected printer name after \"-d\" option."
-msgstr "lpadmin: Esperava nome da impressora após a opção \"-d\"."
-
-msgid "lpadmin: Expected printer or class after \"-x\" option."
-msgstr "lpadmin: Esperava impressora ou classe após a opção \"-x\"."
-
-msgid "lpadmin: No member names were seen."
-msgstr "lpadmin: Nenhum nome de membros foi encontrado."
-
-#, c-format
-msgid "lpadmin: Printer %s is already a member of class %s."
-msgstr "lpadmin: Impressora %s já é um membro da classe %s."
-
-#, c-format
-msgid "lpadmin: Printer %s is not a member of class %s."
-msgstr "lpadmin: Impressora %s não é membro da classe %s."
-
-msgid "lpadmin: Printer name can only contain printable characters."
-msgstr "lpadmin: Nome da impressora só pode conter caracteres imprimíveis."
-
-msgid ""
-"lpadmin: Unable to add a printer to the class:\n"
-"         You must specify a printer name first."
-msgstr ""
-"lpadmin: Não é possível adicionar impressora à classe\n"
-"         Você deve primeiro especificar o nome da impressora."
-
-#, c-format
-msgid "lpadmin: Unable to connect to server: %s"
-msgstr "lpadmin: Não foi possível conectar ao servidor: %s"
-
-msgid "lpadmin: Unable to create temporary file"
-msgstr "lpadmin: Não foi possível criar arquivo temporário"
-
-msgid ""
-"lpadmin: Unable to delete option:\n"
-"         You must specify a printer name first."
-msgstr ""
-"lpadmin: Não foi possível excluir opção:\n"
-"         Você deve primeiro especificar o nome da impressora."
-
-#, c-format
-msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
-msgstr "lpadmin: Não foi possível abrir o arquivo PPD \"%s\" - %s"
-
-msgid ""
-"lpadmin: Unable to remove a printer from the class:\n"
-"         You must specify a printer name first."
-msgstr ""
-"lpadmin: Não foi possível excluir impressora da classe:\n"
-"         Você deve primeiro especificar o nome da impressora."
-
-msgid ""
-"lpadmin: Unable to set the printer options:\n"
-"         You must specify a printer name first."
-msgstr ""
-"lpadmin: Não foi possível definir as opções da impressora:\n"
-"         Você deve primeiro especificar o nome da impressora."
-
-#, c-format
-msgid "lpadmin: Unknown allow/deny option \"%s\"."
-msgstr "lpadmin: Opção de permitir/negar desconhecida \"%s\"."
-
-#, c-format
-msgid "lpadmin: Unknown argument \"%s\"."
-msgstr "lpadmin: Argumento desconhecido \"%s\"."
-
-#, c-format
-msgid "lpadmin: Unknown option \"%c\"."
-msgstr "lpadmin: Opção desconhecida \"%c\"."
-
-msgid "lpadmin: Warning - content type list ignored."
-msgstr "lpadmin: Aviso - lista de tipos de conteúdos ignorada."
-
-msgid "lpc> "
-msgstr "lpc> "
-
-msgid "lpinfo: Expected 1284 device ID string after \"--device-id\"."
-msgstr ""
-"lpinfo: Esperava string de ID de dispositivo 1284 após \"--device-id\"."
-
-msgid "lpinfo: Expected language after \"--language\"."
-msgstr "lpinfo: Esperava idioma após \"--language\"."
-
-msgid "lpinfo: Expected make and model after \"--make-and-model\"."
-msgstr "lpinfo: Esperava marca e modelo após \"--make-and-model\"."
-
-msgid "lpinfo: Expected product string after \"--product\"."
-msgstr "lpinfo: Esperava string de produto após \"--product\"."
-
-msgid "lpinfo: Expected scheme list after \"--exclude-schemes\"."
-msgstr "lpinfo: Esperava lista de esquemas após \"--exclude-schemes\"."
-
-msgid "lpinfo: Expected scheme list after \"--include-schemes\"."
-msgstr "lpinfo: Esperava lista de esquemas após \"--include-schemes\"."
-
-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"
-
-#, c-format
-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."
-
-#, c-format
-msgid "lpoptions: Unable to add printer or instance: %s"
-msgstr "lpoptions: Não foi possível adicionar impressora ou instância: %s"
-
-#, c-format
-msgid "lpoptions: Unable to get PPD file for %s: %s"
-msgstr "lpoptions: Não foi possível obter o arquivo PPD para %s: %s"
-
-#, c-format
-msgid "lpoptions: Unable to open PPD file for %s."
-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"
-"\"."
-msgstr ""
-"lpstat: Erro - variável de ambiente %s contém destino inexistente \"%s\"."
-
-#, c-format
-msgid "members of class %s:"
-msgstr "membros da classe %s:"
-
-msgid "no entries"
-msgstr "nenhum registro"
-
-msgid "no system default destination"
-msgstr "nenhum destino padrão de sistema"
-
-msgid "notify-events not specified."
-msgstr "notify-events não especificado."
-
-#, c-format
-msgid "notify-recipient-uri URI \"%s\" is already used."
-msgstr "URI de notify-recipient-uri \"%s\" já está sendo usada."
-
-#, c-format
-msgid "notify-recipient-uri URI \"%s\" uses unknown scheme."
-msgstr "URI de notify-recipient-uri \"%s\" usa um esquema desconhecido."
-
-msgid "pending"
-msgstr "pendente"
-
-#, c-format
-msgid "ppdc: Adding include directory \"%s\"."
-msgstr "ppdc: Adicionando diretório de include \"%s\"."
-
-#, c-format
-msgid "ppdc: Adding/updating UI text from %s."
-msgstr "ppdc: Adicionando/atualizando texto de UI de %s."
-
-#, c-format
-msgid "ppdc: Bad boolean value (%s) on line %d of %s."
-msgstr "ppdc: Valor booleano inválido (%s) na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Bad font attribute: %s"
-msgstr "ppdc: Atributo de fonte inválido: %s"
-
-#, c-format
-msgid "ppdc: Bad resolution name \"%s\" on line %d of %s."
-msgstr "ppdc: Nome de resolução inválido \"%s\" na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Bad status keyword %s on line %d of %s."
-msgstr "ppdc: palavra-chave de estado inválida %s na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Bad variable substitution ($%c) on line %d of %s."
-msgstr "ppdc: Substituição de variável inválida ($%c) na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Choice found on line %d of %s with no Option."
-msgstr "ppdc: Escolha encontrada na linha %d de %s com nenhuma opção."
-
-#, c-format
-msgid "ppdc: Duplicate #po for locale %s on line %d of %s."
-msgstr "ppdc: Duplicata de #po para o local %s na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected a filter definition on line %d of %s."
-msgstr "ppdc: Esperava a definição de um filtro na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected a program name on line %d of %s."
-msgstr "ppdc: Esperava o nome de um programa na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected boolean value on line %d of %s."
-msgstr "ppdc: Esperava um valor booleano na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected charset after Font on line %d of %s."
-msgstr "ppdc: Esperava conjunto de caracteres após Font na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected choice code on line %d of %s."
-msgstr "ppdc: Esperava código de escolha na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected choice name/text on line %d of %s."
-msgstr "ppdc: Esperava texto/nome de escolha na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected color order for ColorModel on line %d of %s."
-msgstr "ppdc: Esperava ordem de cores para ColorModel na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected colorspace for ColorModel on line %d of %s."
-msgstr "ppdc: Esperava espaço de cores para ColorModel na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected compression for ColorModel on line %d of %s."
-msgstr "ppdc: Esperava compressão para ColorModel na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected constraints string for UIConstraints on line %d of %s."
-msgstr ""
-"ppdc: Esperava string de restrições para UIConstraints na linha %d de %s."
-
-#, c-format
-msgid ""
-"ppdc: Expected driver type keyword following DriverType on line %d of %s."
-msgstr ""
-"ppdc: Esperava palavra-chave de tipo de driver seguindo DriverType na linha "
-"%d de %s."
-
-#, c-format
-msgid "ppdc: Expected duplex type after Duplex on line %d of %s."
-msgstr "ppdc: Esperava tipo Duplex após Duplex na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected encoding after Font on line %d of %s."
-msgstr "ppdc: Esperava codificação após Font na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected filename after #po %s on line %d of %s."
-msgstr "ppdc: Esperava nome de arquivo após #po %s na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected group name/text on line %d of %s."
-msgstr "ppdc: Esperava text/nome de grupo na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected include filename on line %d of %s."
-msgstr "ppdc: Esperava inclusão de nome de arquivo na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected integer on line %d of %s."
-msgstr "ppdc: Esperava número inteiro na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected locale after #po on line %d of %s."
-msgstr "ppdc: Esperava local após #po na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name after %s on line %d of %s."
-msgstr "ppdc: Esperava nome após %s na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name after FileName on line %d of %s."
-msgstr "ppdc: Esperava nome após FileName na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name after Font on line %d of %s."
-msgstr "ppdc: Esperava nome após Font na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name after Manufacturer on line %d of %s."
-msgstr "ppdc: Esperava nome após Manufacturer na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name after MediaSize on line %d of %s."
-msgstr "ppdc: Esperava nome após MediaSize na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name after ModelName on line %d of %s."
-msgstr "ppdc: Esperava nome após ModelName na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name after PCFileName on line %d of %s."
-msgstr "ppdc: Esperava nome após PCFileName na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name/text after %s on line %d of %s."
-msgstr "ppdc: Esperava nome/texto após %s na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name/text after Installable on line %d of %s."
-msgstr "ppdc: Esperava nome/texto após Installable na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name/text after Resolution on line %d of %s."
-msgstr "ppdc: Esperava nome/texto após Resolution na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name/text combination for ColorModel on line %d of %s."
-msgstr ""
-"ppdc: Esperava combinação de nome/texto para ColorModel na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected option name/text on line %d of %s."
-msgstr "ppdc: Esperava opção de nome/texto na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected option section on line %d of %s."
-msgstr "ppdc: Esperava opção de seção na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected option type on line %d of %s."
-msgstr "ppdc: Esperava tipo da opção na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected override field after Resolution on line %d of %s."
-msgstr ""
-"ppdc: Esperava um campo de substituição após Resolution na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected quoted string on line %d of %s."
-msgstr "ppdc: Esperava string em aspas na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected real number on line %d of %s."
-msgstr "ppdc: Esperava número real na linha %d de %s."
-
-#, c-format
-msgid ""
-"ppdc: Expected resolution/mediatype following ColorProfile on line %d of %s."
-msgstr ""
-"ppdc: Esperava resolução/tipo de mídia seguindo ColorProfile na linha %d de "
-"%s."
-
-#, c-format
-msgid ""
-"ppdc: Expected resolution/mediatype following SimpleColorProfile on line %d "
-"of %s."
-msgstr ""
-"ppdc: Esperava resolução/tipo de mídia seguindo SimpleColorProfile na linha "
-"%d de %s."
-
-#, c-format
-msgid "ppdc: Expected selector after %s on line %d of %s."
-msgstr "ppdc: Esperava seletor após %s na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected status after Font on line %d of %s."
-msgstr "ppdc: Esperava estado após Font na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected string after Copyright on line %d of %s."
-msgstr "ppdc: Esperava string após Copyright na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected string after Version on line %d of %s."
-msgstr "ppdc: Esperava string após Version na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected two option names on line %d of %s."
-msgstr "ppdc: Esperava nomes de duas opções na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected value after %s on line %d of %s."
-msgstr "ppdc: Esperava valor após %s na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected version after Font on line %d of %s."
-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. "
-
-#, c-format
-msgid "ppdc: Invalid cost for filter on line %d of %s."
-msgstr "ppdc: Custo inválido para filtro na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Invalid empty MIME type for filter on line %d of %s."
-msgstr "ppdc: Tipo MIME vazio inválido para filtro na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Invalid empty program name for filter on line %d of %s."
-msgstr "ppdc: Nome de programa vazio inválido na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Invalid option section \"%s\" on line %d of %s."
-msgstr "ppdc: Seção \"%s\" inválida de opção na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Invalid option type \"%s\" on line %d of %s."
-msgstr "ppdc: Tipo \"%s\" inválido de opção na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Loading driver information file \"%s\"."
-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\" ."
-
-#, c-format
-msgid "ppdc: Loading messages from \"%s\"."
-msgstr "ppdc: Carregando mensagens de \"%s\"."
-
-#, c-format
-msgid "ppdc: Missing #endif at end of \"%s\"."
-msgstr "ppdc: Faltando #endif ao final de \"%s\"."
-
-#, c-format
-msgid "ppdc: Missing #if on line %d of %s."
-msgstr "ppdc: Faltando #if na linha %d de %s."
-
-#, c-format
-msgid ""
-"ppdc: Need a msgid line before any translation strings on line %d of %s."
-msgstr ""
-"ppdc: Precisa de uma linha de msgid antes de qualquer string de tradução na "
-"linha %d de %s."
-
-#, c-format
-msgid "ppdc: No message catalog provided for locale %s."
-msgstr "ppdc: Nenhum catálogo de mensagens fornecido para o locale %s."
-
-#, c-format
-msgid "ppdc: Option %s defined in two different groups on line %d of %s."
-msgstr "ppdc: Opção %s definida em dois grupos diferentes na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Option %s redefined with a different type on line %d of %s."
-msgstr "ppdc: Opção %s redefinida com um tipo diferente na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Option constraint must *name on line %d of %s."
-msgstr "ppdc: Restrição da opção deve *name na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Too many nested #if's on line %d of %s."
-msgstr "ppdc: Muitos #if aninhados demais na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Unable to create PPD file \"%s\" - %s."
-msgstr "ppdc: Não foi possível criar o arquivo PPD \"%s\" - %s."
-
-#, c-format
-msgid "ppdc: Unable to create output directory %s: %s"
-msgstr "ppdc: Não foi possível criar diretório de saída %s: %s"
-
-#, c-format
-msgid "ppdc: Unable to create output pipes: %s"
-msgstr "ppdc: Não foi possível criar redirecionamento de saída: %s"
-
-#, c-format
-msgid "ppdc: Unable to execute cupstestppd: %s"
-msgstr "ppdc: Não foi possível executar cupstestppd: %s"
-
-#, c-format
-msgid "ppdc: Unable to find #po file %s on line %d of %s."
-msgstr "ppdc: Não foi possível encontrar arquivo #po %s na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Unable to find include file \"%s\" on line %d of %s."
-msgstr ""
-"ppdc: Não foi possível encontrar o arquivo include \"%s\" na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Unable to find localization for \"%s\" - %s"
-msgstr "ppdc: Não foi possível encontrar localização para \"%s\" - %s"
-
-#, c-format
-msgid "ppdc: Unable to load localization file \"%s\" - %s"
-msgstr "ppdc: Não foi possível carregar arquivo de localização \"%s\" - %s"
-
-#, c-format
-msgid "ppdc: Unable to open %s: %s"
-msgstr "ppdc: Não foi possível abrir %s: %s"
-
-#, c-format
-msgid "ppdc: Undefined variable (%s) on line %d of %s."
-msgstr "ppdc: Variável indefinida (%s) na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Unexpected text on line %d of %s."
-msgstr "ppdc: Texto inesperado na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Unknown driver type %s on line %d of %s."
-msgstr "ppdc: Tipo de driver %s desconhecido na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Unknown duplex type \"%s\" on line %d of %s."
-msgstr "ppdc: Tipo de duplex desconhecido \"%s\" na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Unknown media size \"%s\" on line %d of %s."
-msgstr "ppdc: Tamanho de mídia desconhecido \"%s\" na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Unknown message catalog format for \"%s\"."
-msgstr "ppdc: Formato de catálogo de mensagens desconhecido para \"%s\"."
-
-#, c-format
-msgid "ppdc: Unknown token \"%s\" seen on line %d of %s."
-msgstr "ppdc: Token desconhecido \"%s\" visto na linha %d de %s."
-
-#, c-format
-msgid ""
-"ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s."
-msgstr ""
-"ppdc: Caractere final desconhecido em número real \"%s\" na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Unterminated string starting with %c on line %d of %s."
-msgstr "ppdc: Início de string não terminada com %c na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Warning - overlapping filename \"%s\"."
-msgstr "ppdc: Aviso - nome de arquivo em sobreposição \"%s\"."
-
-#, c-format
-msgid "ppdc: Writing %s."
-msgstr "ppdc: Gravando %s."
-
-#, c-format
-msgid "ppdc: Writing PPD files to directory \"%s\"."
-msgstr "ppdc: Gravando arquivos PPD para a pasta \"%s\"."
-
-#, c-format
-msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s."
-msgstr "ppdmerge: LanguageVersion incorreto \"%s\" em %s."
-
-#, c-format
-msgid "ppdmerge: Ignoring PPD file %s."
-msgstr "ppdmerge: Ignorando o arquivo PPD %s."
-
-#, c-format
-msgid "ppdmerge: Unable to backup %s to %s - %s"
-msgstr "ppdmerge: Não é possível fazer backup de %s para %s - %s"
-
-#, c-format
-msgid "printer %s disabled since %s -"
-msgstr "impressora %s desabilitada desde %s -"
-
-#, c-format
-msgid "printer %s is idle.  enabled since %s"
-msgstr "impressora %s está inativa; habilitada desde %s"
-
-#, c-format
-msgid "printer %s now printing %s-%d.  enabled since %s"
-msgstr "impressora %s está imprimindo %s-%d; habilitada desde %s"
-
-#, c-format
-msgid "printer %s/%s disabled since %s -"
-msgstr "impressora %s/%s desabilitada desde %s -"
-
-#, c-format
-msgid "printer %s/%s is idle.  enabled since %s"
-msgstr "impressora %s/%s está inativa; habilitada desde %s"
-
-#, c-format
-msgid "printer %s/%s now printing %s-%d.  enabled since %s"
-msgstr "impressora %s/%s está imprimindo %s-%d; habilitada desde %s"
-
-msgid "processing"
-msgstr "processando"
-
-#, c-format
-msgid "request id is %s-%d (%d file(s))"
-msgstr "id de requisição é %s-%d (%d arquivo(s))"
-
-msgid "request-id uses indefinite length"
-msgstr "request-id usa comprimento indefinido"
-
-msgid "scheduler is not running"
-msgstr "Agendador não está em execução"
-
-msgid "scheduler is running"
-msgstr "Agendador está em execução"
-
-#, c-format
-msgid "stat of %s failed: %s"
-msgstr "falhou o estado de %s: %s"
-
-msgid "status\t\tShow status of daemon and queue."
-msgstr "status\t\tMostra estado do daemon e da fila."
-
-msgid "stopped"
-msgstr "parou"
-
-#, c-format
-msgid "system default destination: %s"
-msgstr "destino padrão do sistema: %s"
-
-#, c-format
-msgid "system default destination: %s/%s"
-msgstr "destino padrão do sistema: %s/%s"
-
-msgid "unknown"
-msgstr "desconhecido"
-
-msgid "untitled"
-msgstr "sem título"
-
-msgid "variable-bindings uses indefinite length"
-msgstr "variable-bindings usa comprimento indefinido"
index 4fd8397131085c6077fdb8b47ed275947a3b2ae0..425dbdf49cd461756693c4eb67fdbd7b88bb31d0 100644 (file)
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 1.4\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2014-05-09 13:32-0700\n"
+"POT-Creation-Date: 2014-06-26 14:29-0400\n"
 "PO-Revision-Date: 2009-02-16 12:00-0800\n"
 "Last-Translator: Apple Inc.\n"
 "Language-Team: Apple Inc.\n"
@@ -808,6 +808,9 @@ msgstr ""
 msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
 msgstr ""
 
+msgid "  --list-filters          List filters that will be used."
+msgstr ""
+
 msgid "  --local                 True if service is local."
 msgstr ""
 
@@ -988,7 +991,7 @@ msgstr ""
 msgid "  -l                      List attributes."
 msgstr ""
 
-msgid "  -l                      Run cupsd from launchd(8)."
+msgid "  -l                      Run cupsd on demand."
 msgstr ""
 
 msgid "  -l lang[,lang,...]      Specify the output language(s) (locale)."
@@ -1319,11 +1322,35 @@ msgid ""
 msgstr ""
 
 #, c-format
-msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
+msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
 msgstr ""
 
 #, c-format
-msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
+msgid "%d x %d mm"
+msgstr ""
+
+#, c-format
+msgid "%g x %g"
+msgstr ""
+
+#, c-format
+msgid "%s (%s)"
+msgstr ""
+
+#, c-format
+msgid "%s (%s, %s)"
+msgstr ""
+
+#, c-format
+msgid "%s (Borderless)"
+msgstr ""
+
+#, c-format
+msgid "%s (Borderless, %s)"
+msgstr ""
+
+#, c-format
+msgid "%s (Borderless, %s, %s)"
 msgstr ""
 
 #, c-format
@@ -1550,6 +1577,10 @@ msgstr ""
 msgid "%s: Invalid filter string \"%s\"."
 msgstr ""
 
+#, c-format
+msgid "%s: Missing filename for \"-P\"."
+msgstr ""
+
 #, c-format
 msgid "%s: Missing timeout for \"-T\"."
 msgstr ""
@@ -1586,6 +1617,10 @@ msgstr ""
 msgid "%s: Unable to determine MIME type of \"%s\"."
 msgstr ""
 
+#, c-format
+msgid "%s: Unable to open \"%s\": %s"
+msgstr ""
+
 #, c-format
 msgid "%s: Unable to open %s: %s"
 msgstr ""
@@ -2459,6 +2494,9 @@ msgstr "Неверный номер версии SNMP"
 msgid "Bad UIConstraints"
 msgstr "Неверное значение UIConstraints"
 
+msgid "Bad arguments to function"
+msgstr ""
+
 #, c-format
 msgid "Bad copies value %d."
 msgstr "Неверное значение количества копий %d."
@@ -2485,6 +2523,9 @@ msgstr ""
 msgid "Bad filename buffer"
 msgstr "Ошибка в буфере filename"
 
+msgid "Bad hostname/address in URI"
+msgstr ""
+
 #, c-format
 msgid "Bad job-name value: %s"
 msgstr ""
@@ -2529,17 +2570,20 @@ msgstr ""
 msgid "Bad page-ranges values %d-%d."
 msgstr "Неверные значения page-ranges %d-%d."
 
-#, c-format
-msgid "Bad port-monitor \"%s\"."
+msgid "Bad port number in URI"
 msgstr ""
 
-msgid "Bad printer URI."
+#, c-format
+msgid "Bad port-monitor \"%s\"."
 msgstr ""
 
 #, c-format
 msgid "Bad printer-state value %d."
 msgstr ""
 
+msgid "Bad printer-uri."
+msgstr ""
+
 #, c-format
 msgid "Bad request ID %d."
 msgstr ""
@@ -2548,12 +2592,24 @@ msgstr ""
 msgid "Bad request version number %d.%d."
 msgstr ""
 
+msgid "Bad resource in URI"
+msgstr ""
+
+msgid "Bad scheme in URI"
+msgstr ""
+
 msgid "Bad subscription ID"
 msgstr "Неверный ID подписки"
 
+msgid "Bad username in URI"
+msgstr ""
+
 msgid "Bad value string"
 msgstr "Неверная строка значений"
 
+msgid "Bad/empty URI"
+msgstr ""
+
 msgid "Banners"
 msgstr "Баннеры"
 
@@ -2573,6 +2629,9 @@ msgstr "CMYK"
 msgid "CPCL Label Printer"
 msgstr "Принтер для печати этикеток CPCL"
 
+msgid "Cancel Jobs"
+msgstr ""
+
 msgid "Cancel RSS Subscription"
 msgstr "Отменить подписку на RSS"
 
@@ -2732,6 +2791,9 @@ msgstr "Редактировать файл конфигурации"
 msgid "Empty PPD file."
 msgstr ""
 
+msgid "Encryption is not supported."
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet after the print job.
 msgid "Ending Banner"
 msgstr "Конечный баннер"
@@ -2739,15 +2801,6 @@ msgstr "Конечный баннер"
 msgid "English"
 msgstr "Russian"
 
-msgid "Enter old password:"
-msgstr "Введите старый пароль:"
-
-msgid "Enter password again:"
-msgstr "Введите пароль снова:"
-
-msgid "Enter password:"
-msgstr "Введите пароль:"
-
 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 "
@@ -3317,6 +3370,9 @@ msgstr "Строка длиннее разрешенного предела (255
 msgid "List Available Printers"
 msgstr "Список доступных принтеров"
 
+msgid "Load paper."
+msgstr ""
+
 msgid "Long-Edge (Portrait)"
 msgstr "По длинной стороне (книжная)"
 
@@ -3384,6 +3440,12 @@ msgstr ""
 msgid "Missing required attributes."
 msgstr ""
 
+msgid "Missing resource in URI"
+msgstr ""
+
+msgid "Missing scheme in URI"
+msgstr ""
+
 #, c-format
 msgid "Missing value on line %d."
 msgstr ""
@@ -3514,6 +3576,12 @@ msgstr "Не указан адрес printer-uri для класса"
 msgid "No printer-uri in request."
 msgstr ""
 
+msgid "No request URI."
+msgstr ""
+
+msgid "No request protocol version."
+msgstr ""
+
 msgid "No request sent."
 msgstr ""
 
@@ -3611,20 +3679,13 @@ msgstr ""
 msgid "Output Mode"
 msgstr "Режим вывода"
 
-#, c-format
-msgid "Output for printer %s is sent to %s"
+msgid "Output bin is almost full."
 msgstr ""
 
-#, c-format
-msgid "Output for printer %s is sent to remote printer %s on %s"
-msgstr ""
-
-#, c-format
-msgid "Output for printer %s/%s is sent to %s"
+msgid "Output bin is full."
 msgstr ""
 
-#, c-format
-msgid "Output for printer %s/%s is sent to remote printer %s on %s"
+msgid "Output bin is missing."
 msgstr ""
 
 msgid "PASS"
@@ -3657,6 +3718,18 @@ msgstr "В пакете нет Get-Response-PDU"
 msgid "Packet does not start with SEQUENCE"
 msgstr "Нет индикатора SEQUENCE в начале пакета"
 
+msgid "Paper jam."
+msgstr ""
+
+msgid "Paper tray is almost empty."
+msgstr ""
+
+msgid "Paper tray is empty."
+msgstr ""
+
+msgid "Paper tray is missing."
+msgstr ""
+
 msgid "ParamCustominCutInterval"
 msgstr "ParamCustominCutInterval"
 
@@ -3783,12 +3856,9 @@ msgid "Printers"
 msgstr "Принтеры"
 
 #, c-format
-msgid "Printing page %d, %d%% complete."
+msgid "Printing page %d, %u%% complete."
 msgstr ""
 
-msgid "Purge Jobs"
-msgstr "Удалить задания"
-
 msgid "Quarto"
 msgstr "Кватро"
 
@@ -3798,11 +3868,6 @@ msgstr "Предел квоты достигнут."
 msgid "Rank    Owner   Job     File(s)                         Total Size"
 msgstr ""
 
-#. TRANSLATORS: Pri is job priority.
-msgid ""
-"Rank   Owner      Pri  Job        Files                       Total Size"
-msgstr ""
-
 msgid "Reject Jobs"
 msgstr "Отклонить задания"
 
@@ -3863,6 +3928,9 @@ msgstr "Сервер загружен"
 msgid "Server Stopped"
 msgstr "Сервер остановлен"
 
+msgid "Server credentials not set."
+msgstr ""
+
 msgid "Service Unavailable"
 msgstr "Служба недоступна"
 
@@ -4016,27 +4084,6 @@ msgstr "Оптический фоторегистратор должен быт
 msgid "The optical photoconductor will need to be replaced soon."
 msgstr "Необходимо переместить оптический фоторегистратор."
 
-msgid "The output bin is almost full."
-msgstr "Лоток вывода почти заполнен."
-
-msgid "The output bin is full."
-msgstr "Лоток вывода заполнен."
-
-msgid "The output bin is missing."
-msgstr "Отсутствует лоток вывода."
-
-msgid "The paper tray is almost empty."
-msgstr "Лоток с бумагой почти пуст."
-
-msgid "The paper tray is empty."
-msgstr "Лоток с бумагой пуст."
-
-msgid "The paper tray is missing."
-msgstr "Лоток с бумагой отсутствует."
-
-msgid "The paper tray needs to be filled."
-msgstr "Необходимо наполнить лоток с бумагой."
-
 msgid "The printer configuration is incorrect or the printer no longer exists."
 msgstr ""
 
@@ -4046,6 +4093,12 @@ msgstr ""
 msgid "The printer is in use."
 msgstr ""
 
+msgid "The printer is low on ink."
+msgstr ""
+
+msgid "The printer is low on toner."
+msgstr "Заканчивается тонер."
+
 msgid "The printer is not connected."
 msgstr ""
 
@@ -4061,12 +4114,6 @@ msgstr ""
 msgid "The printer is offline."
 msgstr "Принтер выключен."
 
-msgid "The printer is running low on ink."
-msgstr ""
-
-msgid "The printer is running low on toner."
-msgstr ""
-
 msgid "The printer is unreachable at this time."
 msgstr ""
 
@@ -4141,9 +4188,6 @@ msgstr ""
 msgid "There are too many subscriptions."
 msgstr "Слишком много подписок."
 
-msgid "There is a paper jam."
-msgstr "Зажевало бумагу."
-
 msgid "There was an unrecoverable USB error."
 msgstr ""
 
@@ -4182,6 +4226,9 @@ msgstr "Лоток 4"
 msgid "URI Too Long"
 msgstr "Слишком длинный адрес URI"
 
+msgid "URI too large"
+msgstr ""
+
 msgid "US Ledger"
 msgstr "US Ledger"
 
@@ -4303,6 +4350,9 @@ msgstr "Не удается копировать скрипт интерфейс
 msgid "Unable to create printer-uri"
 msgstr "Не удается создать printer-uri"
 
+msgid "Unable to create server credentials."
+msgstr ""
+
 msgid "Unable to create temporary file"
 msgstr ""
 
@@ -4354,6 +4404,9 @@ msgstr "Не удается найти назначение для задани
 msgid "Unable to find printer."
 msgstr ""
 
+msgid "Unable to find server credentials."
+msgstr ""
+
 msgid "Unable to get backend exit status."
 msgstr ""
 
@@ -4436,7 +4489,7 @@ msgstr ""
 msgid "Unable to read print data."
 msgstr ""
 
-msgid "Unable to resolve printer URI."
+msgid "Unable to resolve printer-uri."
 msgstr ""
 
 #, c-format
@@ -4526,6 +4579,15 @@ msgstr "Неизвестная политика printer-error-policy «%s»."
 msgid "Unknown printer-op-policy \"%s\"."
 msgstr "Неизвестная политика printer-op-policy «%s»."
 
+msgid "Unknown request method."
+msgstr ""
+
+msgid "Unknown request version."
+msgstr ""
+
+msgid "Unknown scheme in URI"
+msgstr ""
+
 msgid "Unknown service name."
 msgstr ""
 
@@ -4615,7 +4677,7 @@ msgstr ""
 msgid "Usage: cupsd [options]"
 msgstr ""
 
-msgid "Usage: cupsfilter [ options ] filename"
+msgid "Usage: cupsfilter [ options ] [ -- ] filename"
 msgstr ""
 
 msgid "Usage: cupstestdsc [options] filename.ps [... filename.ps]"
@@ -4652,15 +4714,6 @@ msgid ""
 "       lpoptions [-h server] [-E] -x printer"
 msgstr ""
 
-msgid "Usage: lppasswd [-g groupname]"
-msgstr ""
-
-msgid ""
-"Usage: lppasswd [-g groupname] [username]\n"
-"       lppasswd [-g groupname] -a [username]\n"
-"       lppasswd [-g groupname] -x [username]"
-msgstr ""
-
 msgid ""
 "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
 msgstr ""
@@ -4719,11 +4772,6 @@ msgstr ""
 "Вы должны получить доступ к этой странице с помощью 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."
-msgstr ""
-
 msgid "ZPL Label Printer"
 msgstr "Принтер для печати этикеток ZPL"
 
@@ -4770,6 +4818,9 @@ msgstr ""
 msgid "cupsd: Expected cups-files.conf filename after \"-s\" option."
 msgstr ""
 
+msgid "cupsd: On-demand support not compiled in, running in normal mode."
+msgstr ""
+
 msgid "cupsd: Relative cups-files.conf filename not allowed."
 msgstr ""
 
@@ -4787,9 +4838,6 @@ msgstr ""
 msgid "cupsd: Unknown option \"%c\" - aborting."
 msgstr ""
 
-msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
-msgstr ""
-
 #, c-format
 msgid "cupsfilter: Invalid document number %d."
 msgstr ""
@@ -4910,7 +4958,7 @@ msgstr ""
 msgid "ippfind: Unknown variable \"{%s}\"."
 msgstr ""
 
-msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
+msgid "ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"."
 msgstr ""
 
 #, c-format
@@ -5122,48 +5170,6 @@ msgstr ""
 msgid "lpoptions: Unknown printer or class."
 msgstr ""
 
-msgid "lppasswd: Only root can add or delete passwords."
-msgstr ""
-
-msgid "lppasswd: Password file busy."
-msgstr ""
-
-msgid "lppasswd: Password file not updated."
-msgstr ""
-
-msgid "lppasswd: Sorry, password doesn't match."
-msgstr ""
-
-msgid "lppasswd: Sorry, password rejected."
-msgstr ""
-
-msgid "lppasswd: Sorry, passwords don't match."
-msgstr ""
-
-#, c-format
-msgid "lppasswd: Unable to copy password string: %s"
-msgstr ""
-
-#, c-format
-msgid "lppasswd: Unable to open password file: %s"
-msgstr ""
-
-#, c-format
-msgid "lppasswd: Unable to write to password file: %s"
-msgstr ""
-
-#, c-format
-msgid "lppasswd: failed to backup old password file: %s"
-msgstr ""
-
-#, c-format
-msgid "lppasswd: failed to rename password file: %s"
-msgstr ""
-
-#, c-format
-msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
-msgstr ""
-
 #, c-format
 msgid ""
 "lpstat: error - %s environment variable names non-existent destination \"%s"
@@ -8131,6 +8137,15 @@ msgstr "Для variable-bindings длина не установлена"
 #~ msgid "Empty PPD file!"
 #~ msgstr "Пустой PPD-файл!"
 
+#~ msgid "Enter old password:"
+#~ msgstr "Введите старый пароль:"
+
+#~ msgid "Enter password again:"
+#~ msgstr "Введите пароль снова:"
+
+#~ msgid "Enter password:"
+#~ msgstr "Введите пароль:"
+
 #~ msgid "Error: need hostname after '-h' option\n"
 #~ msgstr "ERROR: Требуется имя хоста после параметра '-h'\n"
 
@@ -8694,6 +8709,9 @@ msgstr "Для variable-bindings длина не установлена"
 #~ msgid "Printer offline."
 #~ msgstr "Принтер в режиме не подключен к сети."
 
+#~ msgid "Purge Jobs"
+#~ msgstr "Удалить задания"
+
 #~ msgid "Rank    Owner   Job     File(s)                         Total Size\n"
 #~ msgstr ""
 #~ "Ранг    Владелец   Задание     Файл(ы)                         Общий "
@@ -8729,12 +8747,30 @@ msgstr "Для variable-bindings длина не установлена"
 #~ msgid "The notify-user-data value is too large (%d > 63 octets)!"
 #~ msgstr "Значение notify-user-data слишком длинное (%d > 63 октетов)!"
 
+#~ msgid "The output bin is almost full."
+#~ msgstr "Лоток вывода почти заполнен."
+
+#~ msgid "The output bin is full."
+#~ msgstr "Лоток вывода заполнен."
+
+#~ msgid "The output bin is missing."
+#~ msgstr "Отсутствует лоток вывода."
+
+#~ msgid "The paper tray is almost empty."
+#~ msgstr "Лоток с бумагой почти пуст."
+
+#~ msgid "The paper tray is empty."
+#~ msgstr "Лоток с бумагой пуст."
+
+#~ msgid "The paper tray is missing."
+#~ msgstr "Лоток с бумагой отсутствует."
+
+#~ msgid "The paper tray needs to be filled."
+#~ msgstr "Необходимо наполнить лоток с бумагой."
+
 #~ msgid "The printer is almost out of ink."
 #~ msgstr "Заканчиваются чернила."
 
-#~ msgid "The printer is low on toner."
-#~ msgstr "Заканчивается тонер."
-
 #~ msgid "The printer is out of ink."
 #~ msgstr "Чернила закончились."
 
@@ -8756,6 +8792,9 @@ msgstr "Для variable-bindings длина не установлена"
 #~ msgid "The printer-uri attribute is required!"
 #~ msgstr "Требуется атрибут printer-uri!"
 
+#~ msgid "There is a paper jam."
+#~ msgstr "Зажевало бумагу."
+
 #~ msgid "Title: "
 #~ msgstr "Заголовок: "
 
index 49fba46b3a254247bd5d011fbeaa665eb5bcc2c4..bb8da28262a57c644f166fe1398a36c31e13b2e9 100644 (file)
@@ -1,15 +1,15 @@
 /*
- * "$Id: po2strings.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: po2strings.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Convert a GNU gettext .po file to an Apple .strings file.
+ * Convert a GNU gettext .po file to an Apple .strings file.
  *
- *   Copyright 2007-2012 by Apple Inc.
+ * Copyright 2007-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/".
+ * These coded instructions, statements, and computer programs 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 po2strings po2strings.c `cups-config --libs`
- *
- * Contents:
- *
- *   main() - Convert .po file to .strings.
  */
 
 #include <cups/cups-private.h>
@@ -71,7 +67,7 @@ main(int  argc,                               /* I - Number of command-line args */
                        *temp,          /* New string */
                        *msgid,         /* msgid string */
                        *msgstr;        /* msgstr string */
-  int                  length;         /* Length of combined strings */
+  size_t               length;         /* Length of combined strings */
   int                  use_msgid;      /* Use msgid strings for msgstr? */
 
 
@@ -215,7 +211,7 @@ main(int  argc,                             /* I - Number of command-line args */
 
         size_t ptrlen = strlen(ptr);   /* Length of string */
 
-       length = (int)strlen(msgstr ? msgstr : msgid);
+       length = strlen(msgstr ? msgstr : msgid);
 
        if ((temp = realloc(msgstr ? msgstr : msgid,
                            length + ptrlen + 1)) == NULL)
@@ -292,5 +288,5 @@ main(int  argc,                             /* I - Number of command-line args */
 
 
 /*
- * End of "$Id: po2strings.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: po2strings.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 489893238b71ed54dea3d99e62bd5cf27bc91d4e..6c2864c94392ece9d87dd7ab7218c826c5e71a32 100644 (file)
@@ -1,8 +1,16 @@
 /*
- * "$Id: strings2po.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$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.
+ *
+ * These coded instructions, statements, and computer programs 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:
  *
  *   strings2po filename.strings filename.po
  * Compile with:
  *
  *   gcc -o strings2po strings2po.c
- *
- * Contents:
- *
- *   main()         - Convert .strings file to .po.
- *   read_strings() - Read a line from a .strings file.
- *   write_po()     - Write a line to the .po file.
  */
 
 #include <stdio.h>
@@ -116,7 +118,7 @@ read_strings(FILE   *strings,               /* I - .strings file */
   char *bufptr;                        /* Pointer into buffer */
 
 
-  while (fgets(buffer, bufsize, strings))
+  while (fgets(buffer, (int)bufsize, strings))
   {
     if (buffer[0] != '\"')
       continue;
@@ -171,5 +173,5 @@ write_po(FILE       *po,            /* I - .po file */
 
 
 /*
- * End of "$Id: strings2po.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: strings2po.c 11558 2014-02-06 18:33:34Z msweet $".
  */
diff --git a/locale/translate.c b/locale/translate.c
deleted file mode 100644 (file)
index 9523da9..0000000
+++ /dev/null
@@ -1,439 +0,0 @@
-/*
- * "$Id: translate.c 10996 2013-05-29 11:51:34Z msweet $"
- *
- *   HTTP-based translation program for CUPS.
- *
- *   This program uses Google to translate the CUPS template (cups.pot) to
- *   several different languages.  The translation isn't perfect, but it's
- *   a start (better than working from scratch.)
- *
- *   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()               - Main entry.
- *   save_messages()      - Save messages to a .po file.
- *   translate_messages() - Translate messages using Google.
- *   write_string()       - Write a quoted string to a file.
- */
-
-/*
- * Include necessary headers...
- */
-
-#include <cups/cups-private.h>
-#include <unistd.h>
-
-
-/*
- * Local functions...
- */
-
-int    save_messages(cups_array_t *cat, const char *filename);
-int    translate_messages(cups_array_t *cat, const char *lang);
-int    write_string(cups_file_t *fp, const char *s);
-
-
-/*
- * 'main()' - Main entry.
- */
-
-int                                    /* O - Exit status */
-main(int  argc,                                /* I - Number of command-line arguments */
-     char *argv[])                     /* I - Command-line arguments */
-{
-  cups_array_t *cat;                   /* Message catalog */
-
-
-  if (argc != 3)
-  {
-    fputs("Usage: translate cups_language.po language\n", stderr);
-    return (1);
-  }
-
-  if (access(argv[1], 0))
-    cat = _cupsMessageLoad("cups.pot", 1);
-  else
-    cat = _cupsMessageLoad(argv[1], 1);
-
-  if (!cat)
-  {
-    puts("Unable to load message catalog.");
-    return (1);
-  }
-
-  if (!translate_messages(cat, argv[2]))
-  {
-    puts("Unable to translate message catalog.");
-    return (1);
-  }
-
-  if (!save_messages(cat, argv[1]))
-  {
-    puts("Unable to save message catalog.");
-    return (1);
-  }
-
-  return (0);
-}
-
-
-/*
- * 'save_messages()' - Save messages to a .po file.
- */
-
-int                                    /* O - 1 on success, 0 on error */
-save_messages(cups_array_t *cat,       /* I - Message catalog */
-              const char   *filename)  /* I - File to save to */
-{
-  _cups_message_t *m;                  /* Current message */
-  cups_file_t  *fp;                    /* File pointer */
-
-
- /*
-  * Open the message catalog...
-  */
-
-  if ((fp = cupsFileOpen(filename, "w")) == NULL)
-    return (0);
-
- /*
-  * Save the messages to a file...
-  */
-
-  for (m = (_cups_message_t *)cupsArrayFirst(cat);
-       m;
-       m = (_cups_message_t *)cupsArrayNext(cat))
-  {
-    if (cupsFilePuts(fp, "msgid \"") < 0)
-      break;
-
-    if (!write_string(fp, m->id))
-      break;
-
-    if (cupsFilePuts(fp, "\"\nmsgstr \"") < 0)
-      break;
-
-    if (m->str)
-    {
-      if (!write_string(fp, m->str))
-       break;
-    }
-
-    if (cupsFilePuts(fp, "\"\n") < 0)
-      break;
-  }
-
-  cupsFileClose(fp);
-
-  return (!m);
-}
-
-
-/*
- * 'translate_messages()' - Translate messages using Google.
- */
-
-int                                    /* O - 1 on success, 0 on error */
-translate_messages(cups_array_t *cat,  /* I - Message catalog */
-                   const char *lang)   /* I - Output language... */
-{
- /*
-  * Google provides a simple translation/language tool for translating
-  * from one language to another.  It is far from perfect, however it
-  * can be used to get a basic translation done or update an existing
-  * translation when no other resources are available.
-  *
-  * Translation requests are sent as HTTP POSTs to
-  * "http://translate.google.com/translate_t" with the following form
-  * variables:
-  *
-  *   Name      Description                         Value
-  *   --------  ----------------------------------  ----------------
-  *   hl        Help language?                      "en"
-  *   ie        Input encoding                      "UTF8"
-  *   langpair  Language pair                       "en|" + language
-  *   oe        Output encoding                     "UTF8"
-  *   text      Text to translate                   translation string
-  */
-
-  int          ret;                    /* Return value */
-  _cups_message_t *m;                  /* Current message */
-  int          tries;                  /* Number of tries... */
-  http_t       *http;                  /* HTTP connection */
-  http_status_t        status;                 /* Status of POST request */
-  char         *idptr,                 /* Pointer into msgid */
-               buffer[65536],          /* Input/output buffer */
-               *bufptr,                /* Pointer into buffer */
-               *bufend,                /* Pointer to end of buffer */
-               length[16];             /* Content length */
-  int          bytes;                  /* Number of bytes read */
-
-
- /*
-  * Connect to translate.google.com...
-  */
-
-  puts("Connecting to translate.google.com...");
-
-  if ((http = httpConnect("translate.google.com", 80)) == NULL)
-  {
-    perror("Unable to connect to translate.google.com");
-    return (0);
-  }
-
- /*
-  * Scan the current messages, requesting a translation of any untranslated
-  * messages...
-  */
-
-  for (m = (_cups_message_t *)cupsArrayFirst(cat), ret = 1;
-       m;
-       m = (_cups_message_t *)cupsArrayNext(cat))
-  {
-   /*
-    * Skip messages that are already translated...
-    */
-
-    if (m->str && m->str[0])
-      continue;
-
-   /*
-    * Encode the form data into the buffer...
-    */
-
-    snprintf(buffer, sizeof(buffer),
-             "hl=en&ie=UTF8&langpair=en|%s&oe=UTF8&text=", lang);
-    bufptr = buffer + strlen(buffer);
-    bufend = buffer + sizeof(buffer) - 5;
-
-    for (idptr = m->id; *idptr && bufptr < bufend; idptr ++)
-      if (*idptr == ' ')
-        *bufptr++ = '+';
-      else if (*idptr < ' ' || *idptr == '%')
-      {
-        sprintf(bufptr, "%%%02X", *idptr & 255);
-       bufptr += 3;
-      }
-      else if (*idptr != '&')
-        *bufptr++ = *idptr;
-
-    *bufptr++ = '&';
-    *bufptr = '\0';
-
-    sprintf(length, "%d", (int)(bufptr - buffer));
-
-   /*
-    * Send the request...
-    */
-
-    printf("\"%s\" = ", m->id);
-    fflush(stdout);
-
-    tries = 0;
-
-    do
-    {
-      httpClearFields(http);
-      httpSetField(http, HTTP_FIELD_CONTENT_TYPE,
-                   "application/x-www-form-urlencoded");
-      httpSetField(http, HTTP_FIELD_CONTENT_LENGTH, length);
-
-      if (httpPost(http, "/translate_t"))
-      {
-       httpReconnect(http);
-       httpPost(http, "/translate_t");
-      }
-
-      httpWrite2(http, buffer, bufptr - buffer);
-
-      while ((status = httpUpdate(http)) == HTTP_CONTINUE);
-
-      if (status != HTTP_OK && status != HTTP_ERROR)
-        httpFlush(http);
-
-      tries ++;
-    }
-    while (status == HTTP_ERROR && tries < 10);
-
-    if (status == HTTP_OK)
-    {
-     /*
-      * OK, read the translation back...
-      */
-
-      bufptr = buffer;
-      bufend = buffer + sizeof(buffer) - 1;
-
-      while ((bytes = httpRead2(http, bufptr, bufend - bufptr)) > 0)
-        bufptr += bytes;
-
-      if (bytes < 0)
-      {
-       /*
-        * Read error, abort!
-       */
-
-        puts("READ ERROR!");
-       ret = 0;
-       break;
-      }
-
-      *bufptr = '\0';
-
-     /*
-      * Find the div containing translation
-      */
-
-      if ((bufptr = strstr(buffer, "<div id=result_box")) == NULL)
-      {
-       /*
-        * No textarea, abort!
-       */
-
-        puts("NO div id=result_box!");
-       ret = 0;
-       break;
-      }
-
-      if ((bufptr = strchr(bufptr, '>')) == NULL)
-      {
-       /*
-        * textarea doesn't end, abort!
-       */
-
-        puts("DIV SHORT DATA!");
-       ret = 0;
-       break;
-      }
-
-      bufptr ++;
-
-      if ((bufend = strstr(bufptr, "</div>")) == NULL)
-      {
-       /*
-        * textarea doesn't close, abort!
-       */
-
-        puts("/DIV SHORT DATA!");
-       ret = 0;
-       break;
-      }
-
-      *bufend = '\0';
-
-     /*
-      * Copy the translation...
-      */
-
-      m->str = strdup(bufptr);
-
-     /*
-      * Convert character entities to regular chars...
-      */
-
-      for (bufptr = strchr(m->str, '&');
-           bufptr;
-          bufptr = strchr(bufptr + 1, '&'))
-      {
-        if (!strncmp(bufptr, "&lt;", 4))
-       {
-         *bufptr = '<';
-         _cups_strcpy(bufptr + 1, bufptr + 4);
-       }
-        else if (!strncmp(bufptr, "&gt;", 4))
-       {
-         *bufptr = '>';
-         _cups_strcpy(bufptr + 1, bufptr + 4);
-       }
-        else if (!strncmp(bufptr, "&amp;", 5))
-         _cups_strcpy(bufptr + 1, bufptr + 5);
-      }
-
-      printf("\"%s\"\n", m->str);
-    }
-    else if (status == HTTP_ERROR)
-    {
-      printf("NETWORK ERROR (%s)!\n", strerror(httpError(http)));
-      ret = 0;
-      break;
-    }
-    else
-    {
-      printf("HTTP ERROR %d!\n", status);
-      ret = 0;
-      break;
-    }
-  }
-
-  httpClose(http);
-
-  return (ret);
-}
-
-
-/*
- * 'write_string()' - Write a quoted string to a file.
- */
-
-int                                    /* O - 1 on success, 0 on failure */
-write_string(cups_file_t *fp,          /* I - File to write to */
-             const char  *s)           /* I - String */
-{
-  while (*s)
-  {
-    switch (*s)
-    {
-      case '\n' :
-          if (cupsFilePuts(fp, "\\n") < 0)
-           return (0);
-         break;
-
-      case '\r' :
-          if (cupsFilePuts(fp, "\\r") < 0)
-           return (0);
-         break;
-
-      case '\t' :
-          if (cupsFilePuts(fp, "\\t") < 0)
-           return (0);
-         break;
-
-      case '\\' :
-          if (cupsFilePuts(fp, "\\\\") < 0)
-           return (0);
-         break;
-
-      case '\"' :
-          if (cupsFilePuts(fp, "\\\"") < 0)
-           return (0);
-         break;
-
-      default :
-          if ((*s & 255) < ' ')
-         {
-            if (cupsFilePrintf(fp, "\\%o", *s) < 0)
-             return (0);
-         }
-         else if (cupsFilePutChar(fp, *s) < 0)
-           return (0);
-         break;
-    }
-
-    s ++;
-  }
-
-  return (1);
-}
-
-
-/*
- * End of "$Id: translate.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index 6074d0c344ba25b8f0840ed04ac92622f9e07c0a..dc1a8c0a4f57edcd6f52c93259df941af9d0656e 100644 (file)
@@ -1,16 +1,16 @@
 #
-# "$Id: Makefile 11024 2013-06-06 23:11:13Z msweet $"
+# "$Id: Makefile 11919 2014-06-11 15:38:28Z msweet $"
 #
-#   Man page makefile for CUPS.
+# Man page makefile for CUPS.
 #
-#   Copyright 2007-2013 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
@@ -21,6 +21,7 @@ include ../Makedefs
 #
 
 MAN1   =       cancel.$(MAN1EXT) \
+               cups.$(MAN1EXT) \
                cups-config.$(MAN1EXT) \
                cupstestdsc.$(MAN1EXT) \
                cupstestppd.$(MAN1EXT) \
@@ -28,7 +29,6 @@ MAN1  =       cancel.$(MAN1EXT) \
                ipptool.$(MAN1EXT) \
                lp.$(MAN1EXT) \
                lpoptions.$(MAN1EXT) \
-               lppasswd.$(MAN1EXT) \
                lpq.$(MAN1EXT) \
                lprm.$(MAN1EXT) \
                lpr.$(MAN1EXT) \
@@ -57,11 +57,11 @@ MAN8        =       cupsaccept.$(MAN8EXT) \
                cupsaddsmb.$(MAN8EXT) \
                cupsctl.$(MAN8EXT) \
                cupsfilter.$(MAN8EXT) \
-               cups-deviced.$(MAN8EXT) \
-               cups-driverd.$(MAN8EXT) \
                cups-lpd.$(MAN8EXT) \
                cups-snmp.$(MAN8EXT) \
                cupsd.$(MAN8EXT) \
+               cupsd-helper.$(MAN8EXT) \
+               cupsd-logs.$(MAN8EXT) \
                cupsenable.$(MAN8EXT) \
                lpadmin.$(MAN8EXT) \
                lpinfo.$(MAN8EXT) \
@@ -144,6 +144,10 @@ install-data: all
        done
        $(RM) $(AMANDIR)/man$(MAN8DIR)/cupsdisable.$(MAN8EXT)
        $(LN) cupsenable.$(MAN8EXT) $(AMANDIR)/man$(MAN8DIR)/cupsdisable.$(MAN8EXT)
+       for file in cups-deviced cups-driverd cups-exec; do \
+               $(RM) $(AMANDIR)/man$(MAN8DIR)/$$file.$(MAN8EXT); \
+               $(LN) cupsd-helper.$(MAN8EXT) $(AMANDIR)/man$(MAN8DIR)/$$file.$(MAN8EXT); \
+       done
 
 
 #
@@ -217,10 +221,12 @@ html:     $(MAN1) $(MAN5) $(MAN7) $(MAN8) mantohtml
                ./mantohtml `basename $$file .$(MAN8EXT)`.man >../doc/help/man-`basename $$file .$(MAN8EXT)`.html; \
        done
 
-mantohtml:     mantohtml.o
-       $(CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ mantohtml.o
+mantohtml:     mantohtml.o ../cups/$(LIBCUPSSTATIC)
+       $(CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ mantohtml.o \
+               ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) \
+               $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
 
 
 #
-# End of "$Id: Makefile 11024 2013-06-06 23:11:13Z msweet $".
+# End of "$Id: Makefile 11919 2014-06-11 15:38:28Z msweet $".
 #
index a5fca5c0018a58c5b9a481aedc3c531f08492fc8..16070da8047a1d0d492867a9a245d62eff10325a 100644 (file)
 .\"
-.\" "$Id: backend.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: backend.man 11793 2014-04-04 19:02:20Z msweet $"
 .\"
-.\"   Backend man page for CUPS.
+.\" Backend man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH backend 7 "CUPS" "23 April 2012" "Apple Inc."
-
+.TH backend 7 "CUPS" "4 April 2014" "Apple Inc."
 .SH NAME
 backend \- cups backend transmission interfaces
 .SH SYNOPSIS
 .B backend
 .br
 .B backend
-job user title num-copies options [
+.I job
+.I user
+.I title
+.I num-copies
+.I options
+[
 .I filename
 ]
+.nf
+
+\fB#include <cups/cups.h>\fR
+
+\fBconst char *cupsBackendDeviceURI\fR(\fBchar **\fIargv\fR);
+
+\fBvoid cupsBackendReport\fR(\fBconst char *\fIdevice_scheme\fR,
+                       \fBconst char *\fIdevice_uri\fR,
+                       \fBconst char *\fIdevice_make_and_model\fR,
+                       \fBconst char *\fIdevice_info\fR,
+                       \fBconst char *\fIdevice_id\fR,
+                       \fBconst char *\fIdevice_location\fR);
+
+\fBssize_t cupsBackChannelWrite\fR(\fBconst char *\fIbuffer\fR,
+                             \fBsize_t \fIbytes\fR, \fBdouble \fItimeout\fR);
+
+\fBint cupsSideChannelRead\fR(\fBcups_sc_command_t *\fIcommand\fR,
+                        \fBcups_sc_status_t *\fIstatus\fR, \fBchar *\fIdata\fR,
+                        \fBint *\fIdatalen\fR, \fBdouble \fItimeout\fR);
+
+\fBint cupsSideChannelWrite\fR(\fBcups_sc_command_t \fIcommand\fR,
+                         \fBcups_sc_status_t \fIstatus\fR, \fBconst char *\fIdata\fR,
+                         \fBint \fIdatalen\fR, \fBdouble \fItimeout\fR);
+.fi
 .SH DESCRIPTION
-Backends are a special type of \fIfilter(7)\fR which is used to send print data
-to and discover different devices on the system.
+Backends are a special type of
+.BR filter (7)
+which is used to send print data to and discover different devices on the system.
 .LP
-Like filters, backends must be capable of reading from a filename on the
-command-line or from the standard input, copying the standard input to a
-temporary file as required by the physical interface.
+Like filters, backends must be capable of reading from a filename on the command-line or from the standard input, copying the standard input to a temporary file as required by the physical interface.
 .LP
-The command name (argv[0]) is set to the device URI of the destination printer.
-Starting with CUPS 1.1.22, any authentication information in argv[0] is removed,
-so backend developers are urged to use the DEVICE_URI environment variable
-whenever authentication information is required. The CUPS API includes a
-\fIcupsBackendDeviceURI\fR function for retrieving the correct device URI.
+The command name (\fIargv[0]\fR) is set to the device URI of the destination printer. Authentication information in
+.I argv[0]
+is removed, so backend developers are urged to use the
+.B DEVICE_URI
+environment variable whenever authentication information is required. The
+.BR cupsBackendDeviceURI ()
+function may be used to retrieve the correct device URI.
 .LP
-Back-channel data from the device should be relayed to the job
-filters by writing to file descriptor 3. The CUPS API includes
-the \fIcupsBackChannelWrite\fR function for this purpose.
-.SH WARNING
-CUPS backends are not generally design to be run directly by the user. Aside
-from the device URI issue (argv[0] and 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.
+Back-channel data from the device should be relayed to the job filters using the \fIcupsBackChannelWrite\fR function.
 .LP
-Unless you are a developer and know what you are doing, please do not run
-backends directly. Instead, use the \fIlp(1)\fR or \fIlpr(1)\fR programs to send
-a print job or \fIlpinfo(8)\fR program to query for available printers using the
-backend. The one exception is the SNMP backend - see \fIsnmpbackend(8)\fR for
-more information.
-.SH DEVICE DISCOVERY
-When run with no arguments, the backend should list the devices and schemes it
-supports or is advertising to stdout. The output consists of zero or more lines
-consisting of any of the following forms:
-
+Backends are responsible for reading side-channel requests using the
+.BR cupsSideChannelRead ()
+function and responding with the
+.BR cupsSideChannelWrite()
+function. The
+.B CUPS_SC_FD
+constant defines the file descriptor that should be monitored for incoming requests.
+.SS DEVICE DISCOVERY
+When run with no arguments, the backend should list the devices and schemes it supports or is advertising to the standard output. The output consists of zero or more lines consisting of any of the following forms:
 .nf
+
     device-class scheme "Unknown" "device-info"
     device-class device-uri "device-make-and-model" "device-info"
     device-class device-uri "device-make-and-model" "device-info" "device-id"
     device-class device-uri "device-make-and-model" "device-info" "device-id" "device-location"
 .fi
 .LP
-The \fIdevice-class\fR field is one of the following values:
+The
+.BR cupsBackendReport ()
+function can be used to generate these lines and handle any necessary escaping of characters in the various strings.
+.LP
+The
+.I device-class
+field is one of the following values:
 .TP 5
-direct
-.br
-The device-uri refers to a specific direct-access device with no options, such
-as a parallel, USB, or SCSI device.
+.B direct
+The device-uri refers to a specific direct-access device with no options, such as a parallel, USB, or SCSI device.
 .TP 5
-file
-.br
+.B file
 The device-uri refers to a file on disk.
 .TP 5
-network
-.br
+.B network
 The device-uri refers to a networked device and conforms to the general form for
 network URIs.
 .TP 5
-serial
-.br
-The device-uri refers to a serial device with configurable baud rate and other
-options. If the device-uri contains a baud value, it represents the maximum baud
-rate supported by the device.
+.B serial
+The device-uri refers to a serial device with configurable baud rate and other options. If the device-uri contains a baud value, it represents the maximum baud rate supported by the device.
 .LP
-The \fIscheme\fR field provides the URI scheme that is supported by the backend.
-Backends should use this form only when the backend supports any URI using that
-scheme. The \fIdevice-uri\fR field specifies the full URI to use when
-communicating with the device.
+The 
+.I scheme
+field provides the URI scheme that is supported by the backend. Backends should use this form only when the backend supports any URI using that scheme. The
+.I device-uri
+field specifies the full URI to use when communicating with the device.
 .LP
-The \fIdevice-make-and-model\fR field specifies the make and model of the
-device, e.g. "Example Foojet 2000". If the make and model is not known, you must
-report "Unknown".
+The
+.I device-make-and-model
+field specifies the make and model of the device, e.g. "Example Foojet 2000". If the make and model is not known, you must report "Unknown".
 .LP
-The \fIdevice-info\fR field specifies additional information about the device.
-Typically this includes the make and model along with the port number or network
-address, e.g. "Example Foojet 2000 USB #1".
+The
+.I device-info
+field specifies additional information about the device. Typically this includes the make and model along with the port number or network address, e.g. "Example Foojet 2000 USB #1".
 .LP
-The optional \fIdevice-id\fR field specifies the IEEE-1284 device ID string for
-the device, which is used to select a matching driver.
+The optional
+.I device-id
+field specifies the IEEE-1284 device ID string for the device, which is used to select a matching driver.
 .LP
-The optional \fIdevice-location\fR field specifies the physical location of
-the device, which is often used to pre-populate the printer-location attribute
-when adding a printer.
-.SH PERMISSIONS
-Backends without world execute permissions are run as the root user. Otherwise,
-the backend is run using an unprivileged user account, typically "lp".
-.SH EXIT CODES
-The following exit codes are defined for backends; C API constants defined in
-the <cups/backend.h> header file are defined in parenthesis:
+The optional
+.I device-location
+field specifies the physical location of the device, which is often used to pre-populate the printer-location attribute when adding a printer.
+.SS PERMISSIONS
+Backends without world read and execute permissions are run as the root user. Otherwise, the backend is run using an unprivileged user account, typically "lp".
+.SH EXIT STATUS
+The following exit codes are defined for backends:
 .TP 5
-0 (CUPS_BACKEND_OK)
-.br
+.B CUPS_BACKEND_OK
 The print file was successfully transmitted to the device or remote server.
 .TP 5
-1 (CUPS_BACKEND_FAILED)
+.B CUPS_BACKEND_FAILED
 .br
-The print file was not successfully transmitted to the device or remote server.
-The scheduler will respond to this by canceling the job, retrying the job, or
-stopping the queue depending on the state of the error-policy attribute.
-.TP 5
-2 (CUPS_BACKEND_AUTH_REQUIRED)
-.br
-The print file was not successfully transmitted because valid authentication
-information is required. The scheduler will respond to this by holding the job
-and adding the "cups-held-for-authentication" keyword to the "job-reasons"
+The print file was not successfully transmitted to the device or remote server. The scheduler will respond to this by canceling the job, retrying the job, or stopping the queue depending on the state of the
+.I printer-error-policy
 attribute.
 .TP 5
-3 (CUPS_BACKEND_HOLD)
-.br
-The print file was not successfully transmitted because it cannot be printed at
-this time. The scheduler will respond to this by holding the job.
+.B CUPS_BACKEND_AUTH_REQUIRED
+The print file was not successfully transmitted because valid authentication information is required. The scheduler will respond to this by holding the job and adding the 'cups-held-for-authentication' keyword to the "job-reasons" Job Description attribute.
 .TP 5
-4 (CUPS_BACKEND_STOP)
-.br
-The print file was not successfully transmitted because it cannot be printed at
-this time. The scheduler will respond to this by stopping the queue.
+.B CUPS_BACKEND_HOLD
+The print file was not successfully transmitted because it cannot be printed at this time. The scheduler will respond to this by holding the job.
 .TP 5
-5 (CUPS_BACKEND_CANCEL)
-.br
-The print file was not successfully transmitted because one or more attributes
-are not supported or the job was canceled at the printer. The scheduler will
-respond to this by canceling the job.
+.B CUPS_BACKEND_STOP
+The print file was not successfully transmitted because it cannot be printed at this time. The scheduler will respond to this by stopping the queue.
 .TP 5
-6 (CUPS_BACKEND_RETRY)
-.br
-The print file was not successfully transmitted because of a temporary issue.
-The scheduler will retry the job at a future time - other jobs may print before
-this one.
+.B CUPS_BACKEND_CANCEL
+The print file was not successfully transmitted because one or more attributes are not supported or the job was canceled at the printer. The scheduler will respond to this by canceling the job.
 .TP 5
-7 (CUPS_BACKEND_RETRY_CURRENT)
-.br
-The print file was not successfully transmitted because of a temporary issue.
-The scheduler will retry the job immediately without allowing intervening jobs.
+.B CUPS_BACKEND_RETRY
+The print file was not successfully transmitted because of a temporary issue. The scheduler will retry the job at a future time - other jobs may print before this one.
+.TP 5
+.B CUPS_BACKEND_RETRY_CURRENT
+The print file was not successfully transmitted because of a temporary issue. The scheduler will retry the job immediately without allowing intervening jobs.
 .PP
 All other exit code values are reserved.
+.SH ENVIRONMENT
+In addition to the environment variables listed in
+.BR cups (1)
+and
+.BR filter (7),
+CUPS backends can expect the following environment variable:
+.TP 5
+.B DEVICE_URI
+The device URI associated with the printer.
+.SH FILES
+.I /etc/cups/cups-files.conf
+.SH NOTES
+CUPS backends are not generally design to be run directly by the user. Aside from the device URI issue (
+.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.
+.LP
+Unless you are a developer and know what you are doing, please do not run backends directly. Instead, use the
+.BR lp (1)
+or
+.BR lpr (1)
+programs to send print jobs or
+.BR lpinfo (8)
+to query for available printers using the backend. The one exception is the SNMP backend - see
+.BR cups-snmp (8)
+for more information.
 .SH SEE ALSO
-\fIcups-snmp(8)\fR, \fIcupsd(8)\fR, \fIcupsd.conf(5)\fR, \fIfilter(7)\fR,
-\fIlpinfo(8)\fR,
+.IR cups (1),
+.IR cups-files.conf (5),
+.IR cups-snmp (8),
+.IR cupsd (8),
+.IR filter (7),
+.IR lp (1),
+.IR lpinfo (8),
+.IR lpr (1),
 .br
-http://localhost:631/help
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: backend.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: backend.man 11793 2014-04-04 19:02:20Z msweet $".
 .\"
index 17380fa0cc12770d053f42a890ea37af72cc77b3..5f5501d07d44708ec599e3e8667410e0ec9fe451 100644 (file)
@@ -1,79 +1,99 @@
 .\"
-.\" "$Id: cancel.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: cancel.man 11905 2014-06-03 18:46:30Z msweet $"
 .\"
-.\"   cancel man page for CUPS.
+.\" cancel man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH cancel 1 "CUPS" "21 January 2013" "Apple Inc."
+.TH cancel 1 "CUPS" "15 April 2014" "Apple Inc."
 .SH NAME
-cancel - cancel jobs
+cancel \- cancel jobs
 .SH SYNOPSIS
 .B cancel
-[ -E ] [ -U
+[
+.B \-E
+] [
+.B \-U
 .I username
-] [ -a ] [ -h
+] [
+.B \-a
+] [
+.B \-h
 .I hostname[:port]
-] [ -u
+] [
+.B \-u
 .I username
-] [ -x ] [
+] [
+.B \-x
+] [
 .I id
 ] [
 .I destination
 ] [
-.I destination-id
+.I destination\-id
 ]
 .SH DESCRIPTION
-\fIcancel\fR cancels existing print jobs. The \fI-a\fR option will remove
-all jobs from the specified destination.
+The \fBcancel\fR command cancels print jobs.
+If no \fIdestination\fR or \fIid\fR is specified, the currently printing job on the default destination is canceled.
 .SH OPTIONS
-The following options are recognized by \fIcancel\fR:
-.TP 5
--E
-.br
-Forces encryption when connecting to the server.
-.TP 5
--U username
-.br
-Specifies the username to use when connecting to the server.
+The following options are recognized by \fBcancel\fR:
 .TP 5
--a
-.br
+.B \-a
 Cancel all jobs on the named destination, or all jobs on all
 destinations if none is provided.
 .TP 5
--h hostname[:port]
-.br
-Chooses an alternate server.
+.B \-E
+Forces encryption when connecting to the server.
+.TP 5
+\fB\-h \fIhostname\fR[\fI:port\fR]
+Specifies an alternate server.
+.TP 5
+\fB\-U \fIusername\fR
+Specifies the username to use when connecting to the server.
 .TP 5
--u username
-.br
+\fB\-u \fIusername\fR
 Cancels jobs owned by \fIusername\fR.
 .TP 5
--x
-.br
+.B \-x
 Deletes job data files in addition to canceling.
-.SH COMPATIBILITY
-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.
+.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.
+.SH EXAMPLES
+Cancel the current print job:
+.nf
+
+    cancel
+
+.fi
+Cancel job "myprinter-42":
+.nf
+
+    cancel myprinter\-42
+
+.fi
+Cancel all jobs:
+.nf
+
+    cancel \-a
+.fi
 .SH NOTES
-Administrators wishing to prevent unauthorized cancellation of
-jobs via the \fI-u\fR option should require authentication for
-Cancel-Jobs operations in \fIcupsd.conf(5)\fR.
+Administrators wishing to prevent unauthorized cancellation of jobs via the \fI\-u\fR option should require authentication for Cancel-Jobs operations in
+.BR cupsd.conf (5).
 .SH SEE ALSO
-\fIlp(1)\fR, \fIlpmove(8)\fR, \fIlpstat(1)\fR,
-.br
-http://localhost:631/help
+.BR cupsd.conf (5),
+.BR lp (1),
+.BR lpmove (8),
+.BR lpstat (1),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: cancel.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: cancel.man 11905 2014-06-03 18:46:30Z msweet $".
 .\"
index 2e93fc8fd39747f063615845d117121b66c97ad0..1cbac426bfeddef0792845b50a3b0aacd41319e8 100644 (file)
 .\"
-.\" "$Id: classes.conf.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: classes.conf.man 11817 2014-04-15 16:31:11Z msweet $"
 .\"
-.\"   classes.conf man page for CUPS.
+.\" classes.conf man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH classes.conf 5 "CUPS" "29 April 2009" "Apple Inc."
+.TH classes.conf 5 "CUPS" "15 April 2014" "Apple Inc."
 .SH NAME
 classes.conf \- class configuration file for cups
 .SH DESCRIPTION
-The \fIclasses.conf\fR file defines the local printer classes that are
-available. It is normally located in the \fI/etc/cups\fR directory and
-is generated automatically by the \fIcupsd(8)\fR program when printer
-classes are added or deleted.
-.LP
-Each line in the file can be a configuration directive, a blank line,
-or a comment. Comment lines start with the # character.
-.SH DIRECTIVES
-.TP 5
-<Class name> ... </Class>
-.br
-Defines a specific printer class.
-.TP 5
-<DefaultClass name> ... </Class>
-.br
-Defines a default printer class.
-.TP 5
-Accepting Yes
-.TP 5
-Accepting No
-.br
-Specifies whether the printer is accepting new jobs.
-.TP 5
-AllowUser [ user @group ... ]
-.br
-Allows specific users and groups to print to the printer.
-.TP 5
-DenyUser [ user @group ... ]
-.br
-Prevents specific users and groups from printing to the printer.
-.TP 5
-Info text
-.br
-Specifies human-readable text describing the printer.
-.TP 5
-JobSheets banner banner
-.br
-Specifies the banner pages to use for the printer.
-.TP 5
-KLimit number
-.br
-Specifies the job-k-limit value for the printer.
-.TP 5
-Location text
-.br
-Specifies human-readable text describing the location of the printer.
-.TP 5
-OpPolicy name
-.br
-Specifies the operation policy for the printer.
-.TP 5
-PageLimit number
-.br
-Specifies the job-page-limit value for the printer.
-.TP 5
-Printer
-.br
-Specifies a printer that is a member of the printer class.
-.TP 5
-QuotaPeriod seconds
-.br
-Specifies the job-quota-period value for the printer.
-.TP 5
-Shared Yes
-.TP 5
-Shared No
-.br
-Specifies whether the printer is shared.
-.TP 5
-State idle
-.TP 5
-State stopped
-.br
-Specifies the initial state of the printer (Idle or Stopped)
-.TP 5
-StateMessage text
-.br
-Specifies the message associated with the state.
-.TP 5
-StateTime seconds
-.br
-Specifies the date/time associated with the state.
+The \fBclasses.conf\fR file defines the local printer classes that are available. It is normally located in the \fI/etc/cups\fR directory and is maintained by the
+.BR cupsd (8)
+program. This file is not intended to be edited or managed manually.
+.SH NOTES
+The name, location, and format of this file are an implementation detail that will change in future releases of CUPS.
 .SH SEE ALSO
-\fIcupsd(8)\fR, \fIcupsd.conf(5)\fR, \fImime.convs(5)\fR,
-\fImime.types(5)\fR, \fIprinters.conf(5)\fR,
-.br
-http://localhost:631/help
+.BR cupsd (8),
+.BR cupsd.conf (5),
+.BR mime.convs (5),
+.BR mime.types (5),
+.BR printers.conf (5),
+.BR subscriptions.conf (5),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: classes.conf.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: classes.conf.man 11817 2014-04-15 16:31:11Z msweet $".
 .\"
index fd523698796f77c62f1d89f278648cc72da9d751..a32316e91166cd135dbf5e0d850a4d85ab29919a 100644 (file)
@@ -1,65 +1,76 @@
 .\"
-.\" "$Id: client.conf.man.in 11109 2013-07-08 21:15:13Z msweet $"
+.\" "$Id: client.conf.man.in 11851 2014-05-07 23:55:35Z msweet $"
 .\"
-.\"   client.conf man page for CUPS.
+.\" client.conf man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH client.conf 5 "CUPS" "8 July 2013" "Apple Inc."
+.TH client.conf 5 "CUPS" "7 May 2014" "Apple Inc."
 .SH NAME
-client.conf \- client configuration file for cups
+client.conf \- client configuration file for cups (deprecated)
 .SH DESCRIPTION
-The \fIclient.conf\fR file configures the CUPS client and is
-normally located in the \fI/etc/cups\fR or \fI~/.cups\fR
-directory. Each line in the file can be a configuration
-directive, a blank line, or a comment. Comment lines start with
-the # character.
-.SH DIRECTIVES
-The following directives are understood by the client. Consult the
-on-line help for detailed descriptions:
+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.
+The \fBServerName\fR directive is not supported on OS X at all.
+.SS DIRECTIVES
+The following directives are understood by the client. Consult the online help for detailed descriptions:
 .TP 5
-Encryption IfRequested
+\fBAllowAnyRoot Yes\fR
 .TP 5
-Encryption Never
+\fBAllowAnyRoot No\fR
+Specifies whether to allow TLS with certificates that have not been signed by a trusted Certificate Authority.
+The default is "Yes".
 .TP 5
-Encryption Required
-.br
-Specifies the level of encryption that is required for a particular
-location.
+\fBAllowExpiredCerts Yes\fR
 .TP 5
-GSSServiceName name
-Specifies the Kerberos service name that is used for authentication, typically
-"host", "http", or "ipp". CUPS adds the remote hostname
-("name@server.example.com") for you. The default name is
-"http".
+\fBAllowExpiredCerts No\fR
+Specifies whether to allow TLS with expired certificates.
+The default is "Yes".
 .TP 5
-ServerName hostname-or-ip-address[:port]
+\fBEncryption IfRequested\fR
 .TP 5
-ServerName /domain/socket
-.br
-Specifies the address and optionally the port to use when connecting to the
-server. \fBNote: Not supported on OS X 10.7 or later.\fR
+\fBEncryption Never\fR
 .TP 5
-ServerName hostname-or-ip-address[:port]/version=1.1
-.br
-Specifies the address and optionally the port to use when connecting to a
-server running CUPS 1.3.12 and earlier. \fBNote: Not supported on OS X 10.7 or
-later.\fR
+\fBEncryption Required\fR
+Specifies the level of encryption that should be used.
 .TP 5
-User name
-.br
+\fBGSSServiceName \fIname\fR
+Specifies the Kerberos service name that is used for authentication, typically "host", "http", or "ipp".
+CUPS adds the remote hostname ("name@server.example.com") for you. The default name is "http".
+.TP 5
+\fBServerName \fIhostname-or-ip-address\fR[\fI:port\fR]
+.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
+.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.
+.TP 5
+\fBUser \fIname\fR
 Specifies the default user name to use for requests.
+.TP 5
+\fBValidateCerts Yes\fR
+.TP 5
+\fBValidateCerts No\fR
+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.
 .SH SEE ALSO
-http://localhost:631/help
+.BR cups (1),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: client.conf.man.in 11109 2013-07-08 21:15:13Z msweet $".
+.\" End of "$Id: client.conf.man.in 11851 2014-05-07 23:55:35Z msweet $".
 .\"
index b75527db56ab3a9296a70afab4a60a41b174624a..731ae0cb3d28a2cdc0114a86abb8b59f718b0050 100644 (file)
 .\"
-.\" "$Id: cups-config.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: cups-config.man 11817 2014-04-15 16:31:11Z msweet $"
 .\"
-.\"   cups-config man page for CUPS.
+.\" cups-config man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH cups-config 1 "CUPS" "23 October 2008" "Apple Inc."
+.TH cups-config 1 "CUPS" "15 April 2014" "Apple Inc."
 .SH NAME
-cups-config \- get cups api, compiler, directory, and link information.
+cups\-config \- get cups api, compiler, directory, and link information.
 .SH SYNOPSIS
-.B cups-config
---api-version
+.B cups\-config
+.I \-\-api\-version
 .br
-.B cups-config
---build
+.B cups\-config
+.I \-\-build
 .br
-.B cups-config
---cflags
+.B cups\-config
+.I \-\-cflags
 .br
-.B cups-config
---datadir
+.B cups\-config
+.I \-\-datadir
 .br
-.B cups-config
---help
+.B cups\-config
+.I \-\-help
 .br
-.B cups-config
---ldflags
+.B cups\-config
+.I \-\-ldflags
 .br
-.B cups-config
+.B cups\-config
 [
-.I --image
+.I \-\-image
 ] [
-.I --static
-] --libs
+.I \-\-static
+]
+.I \-\-libs
 .br
-.B cups-config
---serverbin
+.B cups\-config
+.I \-\-serverbin
 .br
-.B cups-config
---serverroot
+.B cups\-config
+.I \-\-serverroot
 .br
 .B cups-config
---version
+.I \-\-version
 .br
 .SH DESCRIPTION
-\fBcups-config\fR is the CUPS program configuration utility. It should be
-used by application developers to determine the necessary command-line
-options for the compiler and linker, as well as determining installation
-directories for filters, configuration files, and drivers.
+The \fBcups-config\fR command allows application developers to determine the necessary command-line options for the compiler and linker, as well as the installation directories for filters, configuration files, and drivers.
+All values are reported to the standard output.
 .SH OPTIONS
+The \fBcups-config\fR command accepts the following command-line options:
 .TP 5
---api-version
-.br
-Displays the current API version (major.minor).
+.B \-\-api-version
+Reports the current API version (major.minor).
 .TP 5
---build
-.br
-Displays a system-specific build number.
+.B \-\-build
+Reports a system-specific build number.
 .TP 5
---cflags
-.br
-Displays the necessary compiler options.
+.B \-\-cflags
+Reports the necessary compiler options.
 .TP 5
---datadir
-.br
-Displays the default CUPS data directory.
+.B \-\-datadir
+Reports the default CUPS data directory.
 .TP 5
---help
-.br
-Displays the program usage message.
+.B \-\-help
+Reports the program usage message.
 .TP 5
---image
-.br
-When used with \fI--libs\fR, adds the CUPS imaging library to the
-list of displayed libraries.
+.B \-\-image
+When used with \fI\-\-libs\fR, adds the CUPS imaging library to the
+list of libraries.
 .TP 5
---ldflags
-.br
-Displays the necessary linker options.
+.B \-\-ldflags
+Reports the necessary linker options.
 .TP 5
---libs
-.br
-Displays the necessary librarys to link to.
+.B \-\-libs
+Reports the necessary libraries to link to.
 .TP 5
---serverbin
-.br
-Displays the default CUPS binary directory,
-where filters and backends are stored.
+.B \-\-serverbin
+Reports the default CUPS binary directory, where filters and backends are stored.
 .TP 5
---serverroot
-.br
-Displays the default CUPS configuration file directory.
+.B \-\-serverroot
+Reports the default CUPS configuration file directory.
 .TP 5
---static
-.br
-When used with \fI--libs\fR, shows the static libraries instead
-of the default (shared) libraries.
+.B \-\-static
+When used with \fI\-\-libs\fR, reports the static libraries instead of the default (shared) libraries.
 .TP 5
---version
-.br
-Displays the full version number of the CUPS installation
-(major.minor.patch).
+.B \-\-version
+Reports the full version number of the CUPS installation (major.minor.patch).
+.SH EXAMPLES
+Show the currently installed version of CUPS:
+.nf
+
+    cups-config \-\-version
+
+.fi
+Compile a simple one-file CUPS filter:
+.nf
+
+    cc `cups\-config \-\-cflags \-\-ldflags` \-o filter filter.c \\
+        `cups\-config \-\-libs`
+.fi
 .SH SEE ALSO
-http://localhost:631/help
+.BR cups (1),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: cups-config.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: cups-config.man 11817 2014-04-15 16:31:11Z msweet $".
 .\"
diff --git a/man/cups-deviced.man.in b/man/cups-deviced.man.in
deleted file mode 100644 (file)
index 1c75f68..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-.\"
-.\" "$Id: cups-deviced.man.in 11109 2013-07-08 21:15:13Z msweet $"
-.\"
-.\"   cups-deviced man page for CUPS.
-.\"
-.\"   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/".
-.\"
-.TH cups-deviced 8 "CUPS" "8 July 2013" "Apple Inc."
-.SH NAME
-cups-deviced \- cups device daemon
-.SH SYNOPSIS
-.B cups-deviced
-.I request-id limit user-id options
-.SH DESCRIPTION
-\fIcups-deviced\fR polls the backends in
-\fI/usr/lib/cups/backend\fR or \fI/usr/libexec/cups/backend\fR (OS X) for a
-list of available devices. It is run by \fIcupsd(8)\fR in response to a
-\fICUPS-Get-Devices\fR request. The output format is an IPP
-response message. The \fIrequest-id\fR argument is the request ID
-from the original IPP request, typically 1. The \fIlimit\fR
-argument is the limit value from the original IPP request - 0
-means no limit. The \fIuser-id\fR argument is the
-requesting-user-name value from the original IPP request.
-Finally, the \fIoptions\fR argument is a space-delimited list of
-attributes ("name=value name=value \...") that were passed in
-with the request. Currently \fIcups-deviced\fR looks for the
-\fIrequested-attributes\fR attribute and tailors the output
-accordingly.
-.SH SEE ALSO
-backend(7), cupsd(8), cupsd.conf(5),
-.br
-http://localhost:631/help
-.SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
-.\"
-.\" End of "$Id: cups-deviced.man.in 11109 2013-07-08 21:15:13Z msweet $".
-.\"
diff --git a/man/cups-driverd.man.in b/man/cups-driverd.man.in
deleted file mode 100644 (file)
index a3dd8d0..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-.\"
-.\" "$Id: cups-driverd.man.in 11109 2013-07-08 21:15:13Z msweet $"
-.\"
-.\"   cups-driverd man page for CUPS.
-.\"
-.\"   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/".
-.\"
-.TH cups-driverd 8 "CUPS" "8 July 2013" "Apple Inc."
-.SH NAME
-cups-driverd \- cups driver daemon
-.SH SYNOPSIS
-.B cups-driverd
-cat
-.I ppd-name
-.br
-.B cups-driverd
-list
-.I request_id limit options
-.SH DESCRIPTION
-\fIcups-driverd\fR shows or lists PPD files. It is run in
-response to CUPS-Add-Modify-Printer or CUPS-Get-Devices requests.
-The first form ("cups-driverd cat ppd-name") writes the named PPD
-file to stdout. The output format is an uncompressed PPD file.
-.LP
-The second form lists the available manufacturers or PPD files to
-stdout as indicated by the \fIoptions\fR argument. The output
-format is an IPP response message. The \fIrequest_id\fR argument
-is the request ID from the original IPP request, typically 1. The
-\fIlimit\fR argument is the limit value from the original IPP
-request - 0 means no limit. Finally, the \fIoptions\fR argument
-is a space-delimited list of attributes ("name=value name=value
-\&...") that were passed in with the request. Currently
-\fIcups-driverd\fR looks for the \fIppd-make\fR and
-\fIrequested-attributes\fR attributes and tailors the output
-accordingly.
-.SH DRIVERS
-Drivers can be static PPD files under the
-\fI/usr/share/cups/model\fR directory or programs under the
-\fI/usr/lib/cups/driver\fR or \fI/usr/libexec/cups/driver\fR (OS X) directories.
-Static PPD files must conform to the Adobe PPD File Format Specification version
-4.3 and may be compressed using the \fIgzip(1)\fR program. Driver
-programs must implement the command-line interface shown in the
-next section.
-.SS DRIVER PROGRAMS
-Driver programs provide a  interface to dynamically-generated PPD
-files. The following arguments are currently defined:
-.TP 5
-drivername list
-.br
-Lists the supported PPD files to stdout.
-.TP 5
-drivername cat ppdname
-.br
-Writes the named PPD file to stdout.
-.PP
-Driver programs MUST NOT query hardware or make other long-term operations that
-would delay the return of a driver list. See the NOTES section below for
-specific recommendations.
-.SS LISTING FILES (drivername list)
-When run with the single argument "list", the program must list
-the available PPD files it can generate to stdout using the
-following format:
-.nf
-    "drivername:ppdname" language "make" "make and model"
-    "drivername:ppdname" language "make" "make and model" "1284 device id"
-    "drivername:ppdname" language "make" "make and model" "1284 device id" "(PPD product)"
-    "drivername:ppdname" language "make" "make and model" "1284 device id" "(PPD product)" "PostScript version"
-    "drivername:ppdname" language "make" "make and model" "1284 device id" "(PPD product)" "PostScript version" "type"
-.fi
-.LP
-\fIDrivername\fR is the name of the driver program. \fIPpdname\fR
-is the name used to select the given driver. \fILanguage\fR is
-the locale associated with the default language of the PPD file,
-typically "en". \fIMake\fR is the Manufacturer name from the PPD
-file. \fIMake and model\fR is the NickName name from the PPD
-file. \fI1284 device id\fR is the 1284DeviceId from the PPD file,
-if any. \fI(PPD product)\fR is the Product string as it would appear in the PPD
-file or from a PostScript query. \fIPostScript version\fR is the PSVersion
-string as it would appear in the PPD file or from a PostScript query. \fIType\fR
-is "postscript" for PostScript printers, "pdf" for PDF printers, "raster" for
-raster printers, or "fax" for facsimile devices.
-.SS WRITING FILES (drivername cat ppdname)
-When the driver program is run with the "cat ppdname" arguments,
-it must write the named PPD file to stdout, uncompressed. If the
-named PPD file does not exist, the driver program must not write
-any output to stdout and report the error to stderr instead.
-.SS DRIVER ERROR MESSAGES
-Error messages can be relayed back to \fIcupsd\fR by writing them
-to stderr. The following prefixes are recognized:
-.TP 5
-DEBUG: [drivername]
-.br
-Debugging messages
-.TP 5
-ERROR: [drivername]
-.br
-Error messages
-.TP 5
-INFO: [drivername]
-.br
-Informational messages
-.SH NOTES
-Due to performance considerations, driver programs have been officially
-deprecated and should not be used for new development. Currently only the
-CUPS web interface and \fIlpinfo(8)\fR command will request lists from all
-driver programs.
-.SH SEE ALSO
-cupsd(8), cupsd.conf(5), cupstestppd(1), lpinfo(8),
-.br
-http://localhost:631/help
-.SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
-.\"
-.\" End of "$Id: cups-driverd.man.in 11109 2013-07-08 21:15:13Z msweet $".
-.\"
index bfc46e70fc17dd70d03a6261a9fddb82230d0fae..c6c7bf9c768884327d34a12a4e67aadc73417341 100644 (file)
 .\"
-.\" "$Id: cups-files.conf.man.in 11201 2013-07-26 21:27:27Z msweet $"
+.\" "$Id: cups-files.conf.man.in 11927 2014-06-13 00:01:23Z msweet $"
 .\"
-.\"   cupsd.conf man page for CUPS.
+.\" cups-files.conf man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH cups-files.conf 5 "CUPS" "26 July 2013" "Apple Inc."
+.TH cups-files.conf 5 "CUPS" "11 June 2014" "Apple Inc."
 .SH NAME
-cups-files.conf \- file and directory configuration file for cups
+cups\-files.conf \- file and directory configuration file for cups
 .SH DESCRIPTION
-The \fIcups-files.conf\fR file configures the files and directories used by the
-CUPS scheduler, \fIcupsd(8)\fR.  It is normally located in the
-\fI/etc/cups\fR directory.
+The \fBcups\-files.conf\fR file configures the files and directories used by the CUPS scheduler,
+.BR cupsd (8).
+It is normally located in the \fI/etc/cups\fR directory.
 .LP
-Each line in the file can be a configuration directive, a blank line,
-or a comment. Comment lines start with the # character.
-.SH DIRECTIVES
-The following directives are understood by \fIcupsd(8)\fR. Consult the
-on-line help for detailed descriptions:
+Each line in the file can be a configuration directive, a blank line, or a comment.
+Configuration directives typically consist of a name and zero or more values separated by whitespace.
+The configuration directive name and values are case-insensitive.
+Comment lines start with the # character.
+.SS DIRECTIVES
+The following directives are understood by
+.BR cupsd (8):
 .TP 5
-AccessLog filename
+\fBAccessLog\fR
 .TP 5
-AccessLog syslog
-.br
+\fBAccessLog \fIfilename\fR
+.TP 5
+\fBAccessLog syslog\fR
 Defines the access log filename.
+Specifying a blank filename disables access log generation.
+The value "syslog" causes log entries to be sent to the system log daemon.
+The server name may be included in filenames using the string "%s", for example:
+.nf
+
+    AccessLog /var/log/cups/%s-access_log
+
+.fi
+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.
+.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.
+There is no way to disable this security feature.
+.TP 5
+\fBDataDir \fIpath\fR
+Specifies the directory where data files can be found.
+The default is usually "/usr/share/cups".
+.TP 5
+\fBDocumentRoot \fIdirectory\fR
+Specifies the root directory for the CUPS web interface content.
+The default is usually "/usr/share/doc/cups".
+.TP 5
+\fBErrorLog\fR
+.TP 5
+\fBErrorLog \fIfilename\fR
+.TP 5
+\fBErrorLog syslog\fR
+Defines the error log filename.
+Specifying a blank filename disables error log generation.
+The value "syslog" causes log entries to be sent to the system log daemon.
+The server name may be included in filenames using the string "%s", for example:
+.nf
+
+    ErrorLog /var/log/cups/%s-error_log
+
+.fi
+The default is "/var/log/cups/error_log".
+.TP 5
+\fBFatalErrors none\fR
 .TP 5
-ConfigFilePerm mode
-.br
-Specifies the permissions for all configuration files that the scheduler
-writes.
+\fBFatalErrors all \fI\-kind \fR[ ... \fI\-kind \fR]
 .TP 5
-DataDir path
-.br
-Specified the directory where data files can be found.
+\fBFatalErrors \fIkind \fR[ ... \fIkind \fR]
+Specifies which errors are fatal, causing the scheduler to exit.
+The default is "config".
+The \fIkind\fR strings are:
+.RS 5
 .TP 5
-DocumentRoot directory
-.br
-Specifies the root directory for the internal web server documents.
+.B none
+No errors are fatal.
 .TP 5
-ErrorLog filename
+.B all
+All of the errors below are fatal.
 .TP 5
-ErrorLog syslog
-.br
-Specifies the error log filename.
+.B browse
+Browsing initialization errors are fatal, for example failed connections to the DNS-SD daemon.
 .TP 5
-FatalErrors none
+.B config
+Configuration file syntax errors are fatal.
 .TP 5
-FatalErrors all -kind [... -kind]
+.B listen
+Listen or Port errors are fatal, except for IPv6 failures on the loopback or "any" addresses.
 .TP 5
-FatalErrors kind [... kind]
-.br
-Specifies which errors are fatal, causing the scheduler to exit. "Kind" is
-"browse", "config", "listen", "log", or "permissions".
+.B log
+Log file creation or write errors are fatal.
 .TP 5
-FileDevice Yes
+.B permissions
+Bad startup file permissions are fatal, for example shared TLS certificate and key files with world-read permissions.
+.RE
 .TP 5
-FileDevice No
-.br
-Specifies whether the file pseudo-device can be used for new
-printer queues.
+\fBFileDevice Yes\fR
 .TP 5
-FontPath directory[:directory:...]
-.br
-Specifies the search path for fonts.
+\fBFileDevice No\fR
+Specifies whether the file pseudo-device can be used for new printer queues.
+The URI "file:///dev/null" is always allowed.
 .TP 5
-Group group-name-or-number
-.br
-Specifies the group name or ID that will be used when executing
-external programs.
+\fBGroup \fIgroup-name-or-number\fR
+Specifies the group name or ID that will be used when executing external programs.
+The default group is operating system specific but is usually "lp" or "nobody".
 .TP 5
-LogFilePerm mode
-.br
-Specifies the permissions for all log files that the scheduler writes.
+\fBLogFilePerm \fImode\fR
+Specifies the permissions of all log files that the scheduler writes.
+The default is "0644".
 .TP 5
-PageLog filename
+\fBPageLog \fR[ \fIfilename\fR ]
 .TP 5
-PageLog syslog
-.br
-Specifies the page log filename.
+\fBPageLog syslog\fR
+Defines the page log filename.
+The value "syslog" causes log entries to be sent to the system log daemon.
+Specifying a blank filename disables page log generation.
+The server name may be included in filenames using the string "%s", for example:
+.nf
+
+    PageLog /var/log/cups/%s-page_log
+
+.fi
+The default is "/var/log/cups/page_log".
 .TP 5
-Printcap
+\fBRemoteRoot \fIusername\fR
+Specifies the username that is associated with unauthenticated accesses by clients claiming to be the root user.
+The default is "remroot".
 .TP 5
-Printcap filename
-.br
-Specifies the filename for a printcap file that is updated
-automatically with a list of available printers (needed for
-legacy applications); specifying Printcap with no filename
-disables printcap generation.
+\fBRequestRoot \fIdirectory\fR
+Specifies the directory that contains print jobs and other HTTP request data.
+The default is "/var/spool/cups".
 .TP 5
-RemoteRoot user-name
-.br
-Specifies the username that is associated with unauthenticated root
-accesses.
+\fBSandboxing off\fR
 .TP 5
-RequestRoot directory
-.br
-Specifies the directory to store print jobs and other HTTP request
-data.
+\fBSandboxing relaxed\fR
 .TP 5
-ServerBin directory
-.br
-Specifies the directory where backends, CGIs, daemons, and filters may
-be found.
+\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.
 .TP 5
-ServerCertificate filename
-.br
-Specifies the encryption certificate to use.
+\fBServerBin \fIdirectory\fR
+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.
 .TP 5
-ServerKey filename
-.br
-Specifies the encryption key to use.
+\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.
 .TP 5
-ServerRoot directory
-.br
-Specifies the directory where the server configuration files can be found.
+\fBServerRoot \fIdirectory\fR
+Specifies the directory containing the server configuration files.
+The default is "/etc/cups".
 .TP 5
-SyncOnClose Yes
+\fBSyncOnClose Yes\fR
 .TP 5
-SyncOnClose No
-Specifies whether the scheduler calls \fIfsync(2)\fR after writing configuration
-or state files. The default is No.
+\fBSyncOnClose No\fR
+Specifies whether the scheduler calls
+.BR fsync (2)
+after writing configuration or state files.
+The default is "No".
 .TP 5
-SystemGroup group-name [group-name ...]
-.br
-Specifies the group(s) to use for System class authentication.
+\fBSystemGroup \fIgroup-name \fR[ ... \fIgroup-name\fR ]
+Specifies the group(s) to use for \fI@SYSTEM\fR group authentication.
+The default contains "admin", "lpadmin", "root", "sys", and/or "system".
 .TP 5
-TempDir directory
-.br
+\fBTempDir \fIdirectory\fR
 Specifies the directory where temporary files are stored.
+The default is "/var/spool/cups/tmp".
 .TP 5
-User user-name
-.br
+\fBUser \fIusername\fR
 Specifies the user name or ID that is used when running external programs.
+The default is "lp".
 .SH SEE ALSO
-\fIclasses.conf(5)\fR, \fIcupsd(8)\fR, \fIcupsd.conf(5)\fR, \fImime.convs(5)\fR,
-\fImime.types(5)\fR, \fIprinters.conf(5)\fR,
-\fIsubscriptions.conf(5)\fR,
-.br
-http://localhost:631/help
+.BR classes.conf (5),
+.BR cups (1),
+.BR cupsd (8),
+.BR cupsd.conf (5),
+.BR mime.convs (5),
+.BR mime.types (5),
+.BR printers.conf (5),
+.BR subscriptions.conf (5),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: cups-files.conf.man.in 11201 2013-07-26 21:27:27Z msweet $".
+.\" End of "$Id: cups-files.conf.man.in 11927 2014-06-13 00:01:23Z msweet $".
 .\"
index d1cb61786eb78d27b80cd6b38c160474d88ba21c..9c3f7ba88a39b673524f10a16fcc11cf264e601d 100644 (file)
 .\"
-.\" "$Id: cups-lpd.man.in 11109 2013-07-08 21:15:13Z msweet $"
+.\" "$Id: cups-lpd.man.in 11905 2014-06-03 18:46:30Z msweet $"
 .\"
-.\"   cups-lpd man page for CUPS.
+.\" cups-lpd man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH cups-lpd 8 "CUPS" "8 July 2013" "Apple Inc."
+.TH cups-lpd 8 "CUPS" "3 June 2014" "Apple Inc."
 .SH NAME
 cups-lpd \- receive print jobs and report printer status to lpd clients
 .SH SYNOPSIS
 .B cups-lpd
-[ -h
-.I hostname[:port]
-] [ -n ] [ -o
+[
+\fB\-h \fIhostname\fR[\fB:\fIport\fR]
+] [
+.B -n
+] [
+.B -o
 .I option=value
 ]
 .SH DESCRIPTION
-\fIcups-lpd\fR is the CUPS Line Printer Daemon ("LPD")
-mini-server that supports legacy client systems that use the LPD
-protocol. \fIcups-lpd\fR does not act as a standalone network
-daemon but instead operates using the Internet "super-server"
-\fIinetd(8)\fR or \fIxinetd(8)\fR. If you are using \fIinetd\fR,
-add the following line to the \fIinetd.conf\fR file to enable the
-\fIcups-lpd\fR mini-server:
-.br
-.nf
-
-    printer stream tcp nowait lp /usr/lib/cups/daemon/cups-lpd cups-lpd \\
-        -o document-format=application/octet-stream
-.fi
-.LP
-.LP
-\fBNote:\fR If you are using Solaris 10 or higher, you must run
-the \fIinetdconv(1m)\fR program to register the changes to the
-inetd.conf file.
-.LP
-If you are using the newer \fIxinetd(8)\fR daemon, create a file
-named \fI/etc/xinetd.d/cups\fR containing the following lines:
-.br
-.nf
-
-    service printer
-    {
-        socket_type = stream
-        protocol = tcp
-        wait = no
-        user = lp
-       group = sys
-       passenv =
-        server = /usr/lib/cups/daemon/cups-lpd
-       server_args = -o document-format=application/octet-stream
-    }
-.fi
+.B cups-lpd
+is the CUPS Line Printer Daemon ("LPD") mini-server that supports legacy client systems that use the LPD protocol.
+.B cups-lpd
+does not act as a standalone network daemon but instead operates using any of the Internet "super-servers" such as
+.BR inetd (8),
+.BR launchd (8),
+and
+.BR systemd (8).
 .SH OPTIONS
 .TP 5
--h hostname[:port]
-.br
+\fB-h \fIhostname\fR[\fB:\fIport\fR]
 Sets the CUPS server (and port) to use.
 .TP 5
--n
-.br
-Disables reverse address lookups; normally \fIcups-lpd\fR will
-try to discover the hostname of the client via a reverse DNS
-lookup.
+.B -n
+Disables reverse address lookups; normally
+.B cups-lpd
+will try to discover the hostname of the client via a reverse DNS lookup.
 .TP 5
--o name=value
-.br
-Inserts options for all print queues. Most often this is used to
-disable the "l" filter so that remote print jobs are filtered as
-needed for printing; the examples in the previous section set the
-"document-format" option to "application/octet-stream" which
-forces autodetection of the print file format.
-.SH PERFORMANCE
-\fIcups-lpd\fR performs well with small numbers of clients and
-printers. However, since a new process is created for each
-connection and since each process must query the printing system
-before each job submission, it does not scale to larger
-configurations. We highly recommend that large configurations
-use the native IPP support provided by CUPS instead.
-.SH SECURITY
-\fIcups-lpd\fR currently does not perform any access control
-based on the settings in \fIcupsd.conf(5)\fR or in the
-\fIhosts.allow(5)\fR or \fIhosts.deny(5)\fR files used by TCP
-wrappers. Therefore, running \fIcups-lpd\fR on your server will
-allow any computer on your network (and perhaps the entire
+\fB-o \fIname=value\fR
+Inserts options for all print queues. Most often this is used to disable the "l" filter so that remote print jobs are filtered as needed for printing; the
+.BR inetd (8)
+example below sets the "document-format" option to "application/octet-stream" which forces autodetection of the print file format.
+.SH CONFORMING TO
+.B cups-lpd
+does not enforce the restricted source port number specified in RFC 1179, as using restricted ports does not prevent users from submitting print jobs.
+While this behavior is different than standard Berkeley LPD implementations, it should not affect normal client operations.
+.LP
+The output of the status requests follows RFC 2569, Mapping between LPD and IPP Protocols. Since many LPD implementations stray from this definition, remote status reporting to LPD clients may be unreliable.
+.SH ERRORS
+Errors are sent to the system log.
+.SH FILES
+.nf
+.I /etc/inetd.conf
+.I /etc/xinetd.d/cups-lpd
+.I /System/Library/LaunchDaemons/org.cups.cups-lpd.plist
+.fi
+.SH NOTES
+.SS PERFORMANCE
+.B cups-lpd
+performs well with small numbers of clients and printers.
+However, since a new process is created for each connection and since each process must query the printing system before each job submission, it does not scale to larger configurations.
+We highly recommend that large configurations use the native IPP support provided by CUPS instead.
+.SS SECURITY
+.B cups-lpd
+currently does not perform any access control based on the settings in \fIcupsd.conf(5)\fR or in the \fIhosts.allow(5)\fR or \fIhosts.deny(5)\fR files used by TCP wrappers.
+Therefore, running
+.B cups-lpd
+on your server will allow any computer on your network (and perhaps the entire
 Internet) to print to your server.
 .LP
-While \fIxinetd\fR has built-in access control support, you
-should use the TCP wrappers package with \fIinetd\fR to limit
-access to only those computers that should be able to print
-through your server.
+While
+.BR xinetd (8)
+has built-in access control support, you should use the TCP wrappers package with
+.BR inetd (8)
+to limit access to only those computers that should be able to print through your server.
+.LP
+.B cups-lpd
+is not enabled by the standard CUPS distribution.
+Please consult with your operating system vendor to determine whether it is enabled by default on your system.
+.SH EXAMPLE
+If you are using
+.BR inetd (8),
+add the following line to the \fIinetd.conf\fR file to enable the
+.B cups-lpd
+mini-server:
+.nf
+
+    printer stream tcp nowait lp /usr/lib/cups/daemon/cups\-lpd cups\-lpd \\
+        \-o document\-format=application/octet\-stream
+
+.fi
 .LP
-\fIcups-lpd\fR is not enabled by the standard CUPS distribution.
-Please consult with your operating system vendor to determine
-whether it is enabled on your system.
-.SH COMPATIBILITY
-\fIcups-lpd\fR does not enforce the restricted source port
-number specified in RFC 1179, as using restricted ports does not
-prevent users from submitting print jobs. While this behavior is
-different than standard Berkeley LPD implementations, it should
-not affect normal client operations.
+\fINote:\fR If you are using Solaris 10 or higher, you must run the
+.BR inetdconv (1m)
+program to register the changes to the \fIinetd.conf\fR file.
 .LP
-The output of the status requests follows RFC 2569, Mapping
-between LPD and IPP Protocols. Since many LPD implementations
-stray from this definition, remote status reporting to LPD
-clients may be unreliable.
+CUPS includes configuration files for
+.BR launchd (8),
+.BR systemd (8),
+and
+.BR xinetd(8).
+Simply enable the
+.B cups-lpd
+service using the corresponding control program.
 .SH SEE ALSO
-\fIcups(1)\fR, \fIcupsd(8)\fR, \fIinetconv(1m)\fR,
-\fIinetd(8)\fR, \fIxinetd(8)\fR,
-.br
-http://localhost:631/help
+.BR cups (1),
+.BR cupsd (8),
+.BR inetconv (1m),
+.BR inetd (8),
+.BR launchd (8),
+.BR xinetd (8),
+CUPS Online Help (http://localhost:631/help),
+RFC 2569
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: cups-lpd.man.in 11109 2013-07-08 21:15:13Z msweet $".
+.\" End of "$Id: cups-lpd.man.in 11905 2014-06-03 18:46:30Z msweet $".
 .\"
index 261704fde38f4d25586e280b5556251ebeeea68c..4de799ee114c55ffa27f27b5fb72f3abcdbbe293 100644 (file)
@@ -1,78 +1,69 @@
 .\"
-.\" "$Id: cups-snmp.conf.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: cups-snmp.conf.man 11913 2014-06-10 19:00:24Z msweet $"
 .\"
-.\"   snmp.conf man page for CUPS.
+.\" snmp.conf man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH snmp.conf 5 "CUPS" "23 April 2012" "Apple Inc."
-
+.TH snmp.conf 5 "CUPS" "10 June 2014" "Apple Inc."
 .SH NAME
 snmp.conf \- snmp configuration file for cups
 .SH DESCRIPTION
-The \fIsnmp.conf\fR file configures how the standard CUPS network backends
-(http, https, ipp, ipps, lpd, snmp, and socket) access printer information using
-SNMPv1 and is normally located in the \fI/etc/cups\fR directory. Each line in
-the file can be a configuration directive, a blank line, or a comment. Comment
-lines start with the # character.
+The
+.B snmp.conf
+file configures how the standard CUPS network backends (http, https, ipp, ipps, lpd, snmp, and socket) access printer information using SNMPv1 and is normally located in the \fI/etc/cups\fR directory.
+Each line in the file can be a configuration directive, a blank line, or a comment. Comment lines start with the # character.
 .LP
-The Community and DebugLevel directives are used by all backends. The remainder
-apply only to the SNMP backend (\fIcups-snmp(8)\fR).
+The Community and DebugLevel directives are used by all backends. The remainder apply only to the SNMP backend -
+.BR cups-snmp (8).
 .SH DIRECTIVES
-The following directives are understood by the CUPS network backends. Consult
-the on-line help for detailed descriptions:
+The following directives are understood by the CUPS network backends:
 .TP 5
-Address @IF(\fIname\fR)
+\fBAddress @IF(\fIname\fB)\fR
 .TP 5
-Address @LOCAL
+\fBAddress @LOCAL\fR
 .TP 5
-Address \fIaddress\fR
-.br
-Sends SNMP broadcast queries to the specified address(es). There is no default
-for the broadcast address.
+\fBAddress \fIaddress\fR
+Sends SNMP broadcast queries (for discovery) to the specified address(es).
+There is no default for the broadcast address.
 .TP 5
-Community \fIname\fR
-.br
-Specifies the community name to use. Only a single community name may be
-specified. The default community name is "public".
+\fBCommunity \fIname\fR
+Specifies the community name to use.
+Only a single community name may be specified.
+The default community name is "public".
 .TP 5
-DebugLevel number
-.br
-Specifies the logging level from 0 (none) to 3 (everything). Typically only used
-for debugging (thus the name). The default debug level is 0.
+\fBDebugLevel \fInumber\fR
+Specifies the logging level from 0 (none) to 3 (everything).
+Typically only used for debugging (thus the name).
+The default debug level is 0.
 .TP 5
-DeviceURI "regular expression" device-uri [... device-uri]
-.br
-Specifies one or more device URIs that should be used for a given make and model
-string. The regular expression is used to match the detected make and model, and
-the device URI strings must be of the form "scheme://%s[:port]/[path]", where
-"%s" represents the detected address or hostname. There are no default device
-URI matching rules.
+\fBDeviceURI "\fIregular expression\fB" \fIdevice-uri \fR[... \fIdevice-uri\fR]
+Specifies one or more device URIs that should be used for a given make and model string.
+The regular expression is used to match the detected make and model, and the device URI strings must be of the form "scheme://%s[:port]/[path]", where "%s" represents the detected address or hostname.
+There are no default device URI matching rules.
 .TP 5
-HostNameLookups on
+\fBHostNameLookups on\fR
 .TP 5
-HostNameLookups off
-.br
-Specifies whether the addresses of printers should be converted to hostnames or
-left as numeric IP addresses. The default is "off".
+\fBHostNameLookups off\fR
+Specifies whether the addresses of printers should be converted to hostnames or left as numeric IP addresses.
+The default is "off".
 .TP 5
-MaxRunTime \fIseconds\fR
-.br
+\fBMaxRunTime \fIseconds\fR
 Specifies the maximum number of seconds that the SNMP backend will scan the
-network for printers. The default is 120 seconds (2 minutes).
+network for printers.
+The default is 120 seconds (2 minutes).
 .SH SEE ALSO
-cups-snmp(8),
-.br
-http://localhost:631/help
+.BR cups-snmp (8),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: cups-snmp.conf.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: cups-snmp.conf.man 11913 2014-06-10 19:00:24Z msweet $".
 .\"
index 03ab2e077fa854be087ced4a12964587b348ade9..89ddf489c2226ee9880a0df5cb22c1662f6cf0ab 100644 (file)
@@ -1,17 +1,17 @@
 .\"
-.\" "$Id: cups-snmp.man.in 11109 2013-07-08 21:15:13Z msweet $"
+.\" "$Id: cups-snmp.man.in 11913 2014-06-10 19:00:24Z msweet $"
 .\"
-.\"   SNMP backend man page for CUPS.
+.\" SNMP backend man page for CUPS.
 .\"
-.\"   Copyright 2012-2013 by Apple Inc.
+.\" Copyright 2012-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/".
+.\" These coded instructions, statements, and computer programs 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 cups-snmp 8 "CUPS" "8 July 2013" "Apple Inc."
+.TH cups-snmp 8 "CUPS" "10 June 2014" "Apple Inc."
 .SH NAME
 snmp \- cups snmp backend
 .SH SYNOPSIS
@@ -21,42 +21,41 @@ snmp \- cups snmp backend
 .B /usr/libexec/cups/backend/snmp
 .I ip-address-or-hostname
 .br
-.B lpinfo -v --include-schemes snmp
+.B lpinfo
+.B \-v
+.B \-\-include-schemes
+snmp
 .SH DESCRIPTION
-The CUPS SNMP backend provides legacy discovery and identification of network
-printers using SNMPv1. When used for discovery through the scheduler, the
-backend will list all printers that respond to a broadcast SNMPv1 query with the
-"public" community name. Additional queries are then sent to printers that
-respond in order to determine the correct device URI, make and model, and other
-information needed for printing.
+The CUPS SNMP backend provides legacy discovery and identification of network printers using SNMPv1.
+When used for discovery through the scheduler, the backend will list all printers that respond to a broadcast SNMPv1 query with the "public" community name.
+Additional queries are then sent to printers that respond in order to determine the correct device URI, make and model, and other information needed for printing.
 .LP
-In the first form, the SNMP backend is run directly by the user to look up the
-device URI and other information when you have an IP address or hostname. This
-can be used for programs that need to configure print queues where the user has
-supplied an address but nothing else.
+In the first form, the SNMP backend is run directly by the user to look up the device URI and other information when you have an IP address or hostname.
+This can be used for programs that need to configure print queues where the user has supplied an address but nothing else.
 .LP
-In the second form, the SNMP backend is run indirectly using the \fIlpinfo(8)\fR
-command. The output provides all printers detected via SNMP on the configured
-broadcast addresses. \fBNote\fR: no broadcast addresses are configured by
-default.
-.SH MIBS
-The CUPS SNMP backend uses the information from the Host, Printer, and Port
-Monitor MIBs along with some vendor private MIBs and intelligent port probes to
-determine the correct device URI and make and model for each printer.
-.SH CONFIGURATION
-The SNMP backend reads the /etc/cups/snmp.conf configuration file, if
+In the second form, the SNMP backend is run indirectly using the
+.BR lpinfo (8)
+command.
+The output provides all printers detected via SNMP on the configured
+broadcast addresses.
+\fINote: no broadcast addresses are configured by default.\fR
+.SH ENVIRONMENT
+The DebugLevel value can be overridden using the CUPS_DEBUG_LEVEL environment variable.
+The MaxRunTime value can be overridden using the CUPS_MAX_RUN_TIME environment variable.
+.SH FILES
+The SNMP backend reads the \fI/etc/cups/snmp.conf\fR configuration file, if
 present, to set the default broadcast address, community name, and logging
-level. The configuration file is documented in \fIcups-snmp.conf(5)\fR. The
-DebugLevel value can be overridden using the CUPS_DEBUG_LEVEL environment
-variable and the MaxRunTime value can be overridden using the CUPS_MAX_RUN_TIME
-environment variable.
+level.
+.SH CONFORMING TO
+The CUPS SNMP backend uses the information from the Host, Printer, and Port Monitor MIBs along with some vendor private MIBs and intelligent port probes to determine the correct device URI and make and model for each printer.
 .SH SEE ALSO
-\fIbackend(7)\fR, \fIcups-snmp.conf(5)\fR, \fIcupsd(8)\fR, \fIcupsd.conf(5)\fR,
-\fIfilter(7)\fR, \fIlpinfo(8)\fR,
-.br
-http://localhost:631/help
+.BR backend (7),
+.BR cups-snmp.conf (5),
+.BR cupsd (8),
+.BR lpinfo (8),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: cups-snmp.man.in 11109 2013-07-08 21:15:13Z msweet $".
+.\" End of "$Id: cups-snmp.man.in 11913 2014-06-10 19:00:24Z msweet $".
 .\"
diff --git a/man/cups.man b/man/cups.man
new file mode 100644 (file)
index 0000000..357be21
--- /dev/null
@@ -0,0 +1,147 @@
+.\"
+.\" "$Id: cups.man 11822 2014-04-21 11:49:06Z msweet $"
+.\"
+.\" cups (intro) man page for CUPS.
+.\"
+.\" Copyright 2007-2014 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/".
+.\"
+.TH cups 1 "CUPS" "16 April 2014" "Apple Inc."
+.SH NAME
+cups \- a standards-based, open source printing system
+.SH DESCRIPTION
+.B CUPS
+is the software you use to print from applications like word processors, email readers, photo editors, and web browsers. It converts the page descriptions produced by your application (put a paragraph here, draw a line there, and so forth) into something your printer can understand and then sends the information to the printer for printing.
+.LP
+Now, since every printer manufacturer does things differently, printing can be very complicated.
+.B CUPS
+does its best to hide this from you and your application so that you can concentrate on printing and less on how to print. Generally, the only time you need to know anything about your printer is when you use it for the first time, and even then
+.B CUPS
+can often figure things out on its own.
+.SS HOW DOES IT WORK?
+The first time you print to a printer,
+.B CUPS
+creates a queue to keep track of the current status of the printer (everything OK, out of paper, etc.) and any pages you have printed. Most of the time the queue points to a printer connected directly to your computer via a USB port, however it can also point to a printer on your network, a printer on the Internet, or multiple printers depending on the configuration. Regardless of where the queue points, it will look like any other printer to you and your applications.
+.LP
+Every time you print something,
+.B CUPS
+creates a job which contains the queue you are sending the print to, the name of the document you are printing, and the page descriptions. Job are numbered (queue-1, queue-2, and so forth) so you can monitor the job as it is printed or cancel it if you see a mistake. When
+.B CUPS
+gets a job for printing, it determines the best programs (filters, printer drivers, port monitors, and backends) to convert the pages into a printable format and then runs them to actually print the job.
+.LP
+When the print job is completely printed,
+.B CUPS
+removes the job from the queue and moves on to any other jobs you have submitted. You can also be notified when the job is finished, or if there are any errors during printing, in several different ways.
+.SS WHERE DO I BEGIN?
+The easiest way to start is by using the web interface to configure your printer. Go to "http://localhost:631" and choose the Administration tab at the top of the page. Click/press on the Add Printer button and follow the prompts.
+.LP
+When you are asked for a username and password, enter your login username and password or the "root" username and password.
+.LP
+After the printer is added you will be asked to set the default printer options (paper size, output mode, etc.) for the printer. Make any changes as needed and then click/press on the Set Default Options button to save them. Some printers also support auto-configuration - click/press on the Query Printer for Default Options button to update the options automatically.
+.LP
+Once you have added the printer, you can print to it from any application. You can also choose Print Test Page from the maintenance menu to print a simple test page and verify that everything is working properly.
+.LP
+You can also use the
+.BR lpadmin (8)
+and
+.BR lpinfo (8)
+commands to add printers to
+.BR CUPS .
+Additionally, your operating system may include graphical user interfaces or automatically create printer queues when you connect a printer to your computer.
+.SS HOW DO I GET HELP?
+The
+.B CUPS
+web site (http://www.CUPS.org) provides access to the
+.I cups
+and
+.I cups-devel
+mailing lists, additional documentation and resources, and a bug report database. Most vendors also provide online discussion forums to ask printing questions for your operating system of choice.
+.SH ENVIRONMENT
+.B CUPS
+commands use the following environment variables to override the default locations of files and so forth. For security reasons, these environment variables are ignored for setuid programs:
+.TP 5
+.B CUPS_ANYROOT
+Whether to allow any X.509 certificate root (Y or N).
+.TP 5
+.B CUPS_CACHEDIR
+The directory where semi-persistent cache files can be found.
+.TP 5
+.B CUPS_DATADIR
+The directory where data files can be found.
+.TP 5
+.B CUPS_ENCRYPTION
+The default level of encryption (Always, IfRequested, Never, Required).
+.TP 5
+.B CUPS_EXPIREDCERTS
+Whether to allow expired X.509 certificates (Y or N).
+.TP 5
+.B CUPS_GSSSERVICENAME
+The Kerberos service name used for authentication.
+.TP 5
+.B CUPS_SERVER
+The hostname/IP address and port number of the CUPS scheduler (hostname:port or ipaddress:port).
+.TP 5
+.B CUPS_SERVERBIN
+The directory where server helper programs, filters, backend, etc. can be found.
+.TP 5
+.B CUPS_SERVERROOT
+The root directory of the server.
+.TP 5
+.B CUPS_STATEDIR
+The directory where state files can be found.
+.TP 5
+.B CUPS_USER
+Specifies the name of the user for print requests.
+.TP 5
+.B HOME
+Specifies the home directory of the current user.
+.TP 5
+.B IPP_PORT
+Specifies the default port number for IPP requests.
+.TP 5
+.B LOCALEDIR
+Specifies the location of localization files.
+.TP 5
+.B LPDEST
+Specifies the default print queue (System V standard).
+.TP 5
+.B PRINTER
+Specifies the default print queue (Berkeley standard).
+.TP 5
+.B TMPDIR
+Specifies the location of temporary files.
+.SH FILES
+.nf
+.I ~/.cups/client.conf
+.I ~/.cups/lpoptions
+.fi
+.SH CONFORMING TO
+.B CUPS
+conforms to the Internet Printing Protocol version 2.1 and implements the Berkeley and System V UNIX print commands.
+.SH SEE ALSO
+.BR cancel (1),
+.BR client.conf (7),
+.BR cupsctl (8),
+.BR cupsd (8),
+.BR lp (1),
+.BR lpadmin (8),
+.BR lpinfo (8),
+.BR lpoptions (1),
+.BR lpr (1),
+.BR lprm (1),
+.BR lpq (1),
+.BR lpstat (1),
+CUPS Online Help (http://localhost:631/help),
+CUPS Web Site (http://www.CUPS.org),
+PWG Internet Printing Protocol Workgroup (http://www.pwg.org/ipp)
+.SH COPYRIGHT
+Copyright \[co] 2007-2014 by Apple Inc.
+.\"
+.\" End of "$Id: cups.man 11822 2014-04-21 11:49:06Z msweet $".
+.\"
index 35f2cbfde1614d1e39ddd86573a8132248d652ea..8d34b866f12f7c3b9de9cc098ee71aa686c59457 100644 (file)
@@ -1,79 +1,94 @@
 .\"
-.\" "$Id: cupsaccept.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: cupsaccept.man 11913 2014-06-10 19:00:24Z msweet $"
 .\"
-.\"   accept/reject man page for CUPS.
+.\" accept/reject man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH cupsaccept 8 "CUPS" "12 February 2006" "Apple Inc."
+.TH cupsaccept 8 "CUPS" "10 June 2014" "Apple Inc."
 .SH NAME
 cupsaccept/cupsreject \- accept/reject jobs sent to a destination
 .SH SYNOPSIS
 .B cupsaccept
-[ -E ] [ -U
+[
+.B \-E
+] [
+.B \-U
 .I username
-] [ -h
+] [
+.B \-h
 .I hostname[:port]
-] destination(s)
+]
+.I destination(s)
 .br
 .B cupsreject
-[ -E ] [ -U
+[
+.B \-E
+] [
+.B \-U
 .I username
-] [ -h
+] [
+.B \-h
 .I hostname[:port]
-] [ -r
+] [
+.B \-r
 .I reason
-] destination(s)
+]
+.I destination(s)
 .SH DESCRIPTION
-\fIcupsaccept\fR instructs the printing system to accept print jobs to the
-specified destinations.
+The
+.B cupsaccept
+command instructs the printing system to accept print jobs to the specified destinations.
 .LP
-\fIcupsreject\fR instructs the printing system to reject print jobs to the
-specified destinations. The \fI-r\fR option sets the reason for rejecting
-print jobs. If not specified the reason defaults to "Reason Unknown".
+The
+.B cupsreject
+command instructs the printing system to reject print jobs to the
+specified destinations.
+The \fI-r\fR option sets the reason for rejecting print jobs. If not specified, the reason defaults to "Reason Unknown".
 .SH OPTIONS
-The following options are supported by both \fIcupsaccept\fR and
-\fIcupsreject\fR:
+The following options are supported by both
+.B cupsaccept
+and
+.BR cupsreject :
 .TP 5
--E
-.br
+.B \-E
 Forces encryption when connecting to the server.
 .TP 5
--U username
-.br
+\fB-U \fIusername\fR
 Sets the username that is sent when connecting to the server.
 .TP 5
--h hostname[:port]
-.br
+\fB-h \fIhostname[:port]\fR
 Chooses an alternate server.
 .TP 5
--r "reason"
-.br
-Sets the reason string that is shown for a printer that is
-rejecting jobs.
-.SH COMPATIBILITY
-Unlike the System V printing system, CUPS allows printer names to
-contain any printable character except SPACE, TAB, "/", or "#".
+\fB-r \fR"\fIreason\fR"
+Sets the reason string that is shown for a printer that is rejecting jobs.
+.SH CONFORMING TO
+The
+.B cupsaccept
+and
+.B cupsreject
+commands correspond to the System V printing system commands "accept" and "reject", respectively.
+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.
 .LP
-The CUPS versions of \fIaccept\fR and \fIreject\fR may ask the
-user for an access password depending on the printing system
-configuration. This differs from the System V versions which
-require the root user to execute these commands.
+Finally, the CUPS versions may ask the user for an access password depending on the printing system configuration.
 .SH SEE ALSO
-\fIcancel(1)\fR, \fIcupsenable(8)\fR, \fIlp(1)\fR,
-\fIlpadmin(8)\fR, \fIlpstat(1)\fR,
+.BR cancel (1),
+.BR cupsenable (8),
+.BR lp (1),
+.BR lpadmin (8),
+.BR lpstat (1),
 .br
-http://localhost:631/help
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: cupsaccept.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: cupsaccept.man 11913 2014-06-10 19:00:24Z msweet $".
 .\"
index 6117edd011d463e3a9d34d1856ef619385b1b788..4d3a06905004cb37925a55de14a71cb024d74acc 100644 (file)
@@ -1,81 +1,63 @@
 .\"
-.\" "$Id: cupsaddsmb.man.in 11206 2013-07-31 18:16:09Z msweet $"
+.\" "$Id: cupsaddsmb.man.in 11920 2014-06-11 19:03:59Z msweet $"
 .\"
-.\"   cupsaddsmb man page for CUPS.
+.\" cupsaddsmb man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH cupsaddsmb 8 "CUPS" "8 July 2013" "Apple Inc."
+.TH cupsaddsmb 8 "CUPS" "11 June 2014" "Apple Inc."
 .SH NAME
 cupsaddsmb \- export printers to samba for windows clients
 
 .SH SYNOPSIS
 .B cupsaddsmb
-[ -H
+[
+.B \-H
 .I samba-server
-] [ -U
+] [
+.B \-U
 .I samba-user[%samba-password]
-] [ -h
+] [
+.B \-h
 .I cups-server[:port]
-] [ -v ] -a
+] [
+.B \-v
+]
+.B \-a
 .br
 .B cupsaddsmb
-[ -H
+[
+.B \-H
 .I samba-server
-] [ -U
+] [
+.B \-U
 .I samba-user[%samba-password]
-] [ -h
+] [
+.B \-h
 .I cups-server[:port]
-] [ -v ] printer [ ... printer ]
-
+] [
+.B \-v
+]
+.I printer
+[ ...
+.I printer
+]
 .SH DESCRIPTION
-\fIcupsaddsmb\fR exports printers to the SAMBA software (version
-2.2.0 or higher) for use with Windows clients. Depending on the
-SAMBA configuration, you may need to provide a password to
-export the printers. This program requires the Windows printer
-driver files described below.
-
-.SH OPTIONS
-\fIcupsaddsmb\fR supports the following options:
-.TP 5
--H samba-server
-.br
-Specifies the SAMBA server which defaults to the CUPS server.
-.TP 5
--U samba-user[%samba-password]
-.br
-Specifies the SAMBA print admin username which defaults to your
-current username. If the username contains a percent (%)
-character, then the text following the percent is treated as the
-SAMBA password to use.
-.TP 5
--a
-.br
-Exports all known printers. Otherwise only the named printers are
-exported.
-.TP 5
--h cups-server[:port]
-.br
-Specifies a different CUPS server to use.
-.TP 5
--v
-.br
-Specifies that verbose information should be shown. This is
-useful for debugging SAMBA configuration problems.
-
-.SH SAMBA CONFIGURATION
-\fIcupsaddsmb\fR uses the new RPC-based printing support in
-SAMBA 2.2.x to provide printer drivers and PPD files to Windows
-client machines. In order to use this functionality, you must
-first configure the SAMBA \fIsmb.conf(5)\fR file to support
-printing through CUPS and provide a printer driver download
+The \fBcupsaddsmb\fR program exports printers to the SAMBA software (version 2.2.0 or higher) for use with Windows clients.
+Depending on the SAMBA configuration, you may need to provide a password to export the printers.
+This program requires the Windows printer driver files described below.
+.SS SAMBA CONFIGURATION
+\fBcupsaddsmb\fR uses the RPC-based printing support in SAMBA to provide printer drivers and PPD files to Windows client machines.
+In order to use this functionality, you must first configure the SAMBA
+.BR smb.conf (5)
+file to support printing through CUPS and provide a printer driver download
 share, as follows:
 .nf
 
@@ -100,77 +82,50 @@ share, as follows:
        guest ok = no
        read only = yes
        write list = root
-.fi
-.LP
-This configuration assumes a FHS-compliant installation of
-SAMBA; adjust the [printers] and [print$] share paths
-accordingly on your system as needed.
 
-.SH MICROSOFT POSTSCRIPT DRIVERS FOR WINDOWS
-The base driver for Windows 2000 and higher is the Microsoft
-PostScript driver, which is available on any system running
-Windows 2000 or higher in the
-%WINDIR%\\SYSTEM32\\SPOOL\\DRIVERS\\W32X86\\3 folder for 32-bit
-drivers and
-%WINDIR%\\SYSTEM32\\SPOOL\\DRIVERS\\X64\\3 folder for 64-bit
-drivers.
-.LP
-However, currently only Windows 2000 and higher is supported by the Microsoft
-driver, so you will also need to get the Adobe driver to support
-Windows 95, 98, and Me clients. The Adobe and Microsoft drivers
-for Windows 2000 are identical.
+.fi
+This configuration assumes a FHS-compliant installation of SAMBA; adjust the [printers] and [print$] share paths accordingly on your system as needed.
+.SS MICROSOFT POSTSCRIPT DRIVERS FOR WINDOWS
+The base driver for Windows 2000 and higher is the Microsoft PostScript driver, which is available on any system running Windows 2000 or higher in the %WINDIR%\\SYSTEM32\\SPOOL\\DRIVERS\\W32X86\\3 folder for 32-bit drivers and %WINDIR%\\SYSTEM32\\SPOOL\\DRIVERS\\X64\\3 folder for 64-bit drivers.
 .LP
-Once you have extracted the driver files, copy the 32-bit drivers
-to the \fI/usr/share/cups/drivers\fR directory and the 64-bit
-drivers to the \fI/usr/share/cups/drivers/x64\fR directory exactly
-as named below:
+Copy the 32-bit drivers to the \fI/usr/share/cups/drivers\fR directory and the 64-bit drivers to the \fI/usr/share/cups/drivers/x64\fR directory exactly as named below:
 .nf
 
-    [Windows 2000 and higher]
     ps5ui.dll
     pscript.hlp
     pscript.ntf
     pscript5.dll
-.fi
-.LP
-\fBNote:\fR Unlike Windows, case is significant - make sure that
-you use the lowercase filenames shown above, otherwise
-\fIcupsaddsmb\fR will fail to export the drivers.
-
-.SH ADOBE POSTSCRIPT DRIVERS FOR WINDOWS 95, 98, AND ME
-\fIcupsaddsmb\fR can use the Adobe PostScript printer driver for
-Windows 95, 98, and ME, which are available for download from the
-Adobe web site (http://www.adobe.com).
-.LP
-The Adobe driver does not support the page-label, job-billing, or
-job-hold-until options.
-.LP
-Once you have installed the driver on a Windows system, copy the
-following files to the \fI/usr/share/cups/drivers\fR directory
-exactly as named below:
-.nf
 
-    [Windows 95, 98, and Me]
-    ADFONTS.MFM
-    ADOBEPS4.DRV
-    ADOBEPS4.HLP
-    ICONLIB.DLL
-    PSMON.DLL
 .fi
-.LP
-\fBNote:\fR Unlike Windows, case is significant - make sure that
-you use the UPPERCASE filenames shown above, otherwise
-\fIcupsaddsmb\fR will fail to export the drivers.
-
-.SH KNOWN ISSUES
-Getting the full set of Windows driver files should be easier.
-
+\fBNote:\fR Unlike Windows, case is significant - make sure that you use the lowercase filenames shown above, otherwise \fBcupsaddsmb\fR will fail to export the drivers.
+.SH OPTIONS
+\fBcupsaddsmb\fR supports the following options:
+.TP 5
+\fB\-H \fIsamba-server\fR
+Specifies the SAMBA server which defaults to the CUPS server.
+.TP 5
+\fB\-U \fIsamba-user\fR[\fB%\fIsamba-password\fR]
+Specifies the SAMBA print admin username which defaults to your current username.
+If the username contains a percent (%) character, then the text following the percent is treated as the SAMBA password to use.
+.TP 5
+.B \-a
+Exports all known printers.
+Otherwise only the named printers are exported.
+.TP 5
+\fB\-h \fIcups-server\fR[\fB:\fIport\fR]
+Specifies a different CUPS server to use.
+.TP 5
+.B \-v
+Specifies that verbose information should be shown.
+This is useful for debugging SAMBA configuration problems.
 .SH SEE ALSO
-\fIsmbd(8)\fR, \fIsmb.conf(5)\fR,
-http://localhost:631/help
-
+.BR rpcclient (1),
+.BR smbclient (1),
+.BR smbd (8),
+.BR smb.conf (5),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: cupsaddsmb.man.in 11206 2013-07-31 18:16:09Z msweet $".
+.\" End of "$Id: cupsaddsmb.man.in 11920 2014-06-11 19:03:59Z msweet $".
 .\"
index 692d15a8cc29ec5256bce107b561a968e21174e8..38684b87dd842b8e7d054cffb4ba50dab2cb5009 100644 (file)
 .\"
-.\" "$Id: cupsctl.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: cupsctl.man 11920 2014-06-11 19:03:59Z msweet $"
 .\"
-.\"   cupsctl man page for CUPS.
+.\" cupsctl man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 2007 by Easy Software Products.
+.\" Copyright 2007-2014 by Apple Inc.
+.\" Copyright 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/".
 .\"
-.TH cupsctl 8 "CUPS" "11 January 2013" "Apple Inc."
+.TH cupsctl 8 "CUPS" "11 June 2014" "Apple Inc."
 .SH NAME
 cupsctl \- configure cupsd.conf options
 .SH SYNOPSIS
 .B cupsctl
-[ -E ] [-U
-.I username
-] [ -h
-.I server[:port]
-] [ --[no-]debug-logging ] [ --[no-]remote-admin ] [ --[no-]remote-any ]
-[ --[no-]share-printers ] [ --[no-]user-cancel-any ]
 [
+.B \-E
+] [
+.B \-U
+.I username
+] [
+.B \-h
+\fIserver\fR[\fB:\fIport\fR]
+] [
+\fB\-\-\fR[\fBno\-\fR]\fBdebug\-logging\fR
+] [
+\fB\-\-\fR[\fBno\-\fR]\fBremote\-admin\fR
+] [
+\fB\-\-\fR[\fBno\-\fR]\fBremote\-any\fR
+] [
+\fB\-\-\fR[\fBno\-\fR]\fBshare\-printers\fR
+] [
+\fB\-\-\fR[\fBno\-\fR]\fBuser\-cancel\-any\fR
+] [
 .I name=value
 ]
 .SH DESCRIPTION
-\fIcupsctl\fR updates or queries the \fBcupsd.conf\fR file for a server. When
+\fBcupsctl\fR updates or queries the \fIcupsd.conf\fR file for a server. When
 no changes are requested, the current configuration values are written to the
 standard output in the format "name=value", one per line.
 .SH OPTIONS
 The following options are recognized:
 .TP 5
--E
-.br
+.B \-E
 Enables encryption on the connection to the scheduler.
 .TP 5
--U \fIusername\fR
-.br
+\fB\-U \fIusername\fR
 Specifies an alternate username to use when authenticating with the scheduler.
 .TP 5
--h \fIserver[:port]\fR
-.br
+\fB\-h \fIserver\fR[\fB:\fIport\fR]
 Specifies the server address.
 .TP 5
---[no-]debug-logging
-.br
-Enables or disables debug logging in the \fBerror_log\fR file.
+.B \-\-\fR[\fBno\-\fR]\fBdebug\-logging
+Enables (disables) debug logging to the \fIerror_log\fR file.
 .TP 5
---[no-]remote-admin
-.br
-Enables or disables remote administration.
+.B \-\-\fR[\fBno\-\fR]\fBremote\-admin
+Enables (disables) remote administration.
 .TP 5
---[no-]remote-any
-.br
-Enables or disables printing from any address, e.g. the Internet.
+.B \-\-\fR[\fBno\-\fR]\fBremote\-any
+Enables (disables) printing from any address, e.g., the Internet.
 .TP 5
---[no-]share-printers
-.br
-Enables or disables sharing of local printers with other computers.
+.B \-\-\fR[\fBno\-\fR]\fBshare\-printers
+Enables (disables) sharing of local printers with other computers.
 .TP 5
---[no-]user-cancel-any
-.br
-Allows or prevents users from canceling jobs owned by others.
+.B \-\-\fR[\fBno\-\fR]\fBuser\-cancel\-any
+Allows (prevents) users to cancel jobs owned by others.
 .SH EXAMPLES
 Display the current settings:
 .nf
+
     cupsctl
+
 .fi
-.LP
 Enable debug logging:
 .nf
+
     cupsctl --debug-logging
+
 .fi
-.LP
 Get the current debug logging state:
 .nf
+
     cupsctl | grep '^_debug_logging' | awk -F= '{print $2}'
+
 .fi
-.LP
 Disable printer sharing:
 .nf
+
     cupsctl --no-share-printers
 .fi
 .SH KNOWN ISSUES
-You cannot set the Listen or Port directives using \fIcupsctl\fR.
+You cannot set the Listen or Port directives using \fBcupsctl\fR.
 .SH SEE ALSO
-\fIcupsd.conf(5)\fR, \fIcupsd(8)\fR,
+.BR cupsd.conf (5),
+.BR cupsd (8),
 .br
-http://localhost:631/help
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: cupsctl.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: cupsctl.man 11920 2014-06-11 19:03:59Z msweet $".
 .\"
diff --git a/man/cupsd-helper.man b/man/cupsd-helper.man
new file mode 100644 (file)
index 0000000..213fb79
--- /dev/null
@@ -0,0 +1,94 @@
+.\"
+.\" "$Id: cupsd-helper.man 11817 2014-04-15 16:31:11Z msweet $"
+.\"
+.\" cupsd-helper man page for CUPS.
+.\"
+.\" Copyright 2007-2014 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/".
+.\"
+.TH cupsd-helper 8 "CUPS" "15 April 2014" "Apple Inc."
+.SH NAME
+cupsd\-helper \- cupsd helper programs
+.SH SYNOPSIS
+.B cups\-deviced
+.I request-id
+.I limit
+.I user-id
+.I options
+.br
+.B cups\-driverd
+.B cat
+.I ppd-name
+.br
+.B cups\-driverd
+.B list
+.I request_id
+.I limit
+.I options
+.br
+.B cups\-exec
+.I sandbox-profile
+[
+.I \-g
+.I group-id
+] [
+.I \-n
+.I nice-value
+] [
+.I \-u
+.I user-id
+]
+.I /path/to/program
+.I argv0
+.I ...
+.I argvN
+.SH DESCRIPTION
+The \fBcupsd\-helper\fR programs perform long-running operations on behalf of the scheduler,
+.BR cupsd (8).
+The \fBcups-deviced\fR helper program runs each CUPS
+.BR backend (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.
+.SH FILES
+The \fBcups-driverd\fR program looks for PPD and driver information files in the following directories:
+.nf
+
+    \fI/Library/Printers\fR
+    \fI/opt/share/ppd\fR
+    \fI/System/Library/Printers\fR
+    \fI/usr/local/share/ppd\fR
+    \fI/usr/share/cups/drv\fR
+    \fI/usr/share/cups/model\fR
+    \fI/usr/share/ppd\fR
+.fi
+.LP
+PPD files can be compressed using the
+.BR gzip (1)
+program or placed in compressed
+.BR tar (1)
+archives to further reduce their size.
+.LP
+Driver information files must conform to the format defined in
+.BR ppdcfile (5).
+.SH SEE ALSO
+.BR backend (7),
+.BR cups (1),
+.BR cupsd (8),
+.BR cupsd.conf (5),
+.BR filter (7),
+.BR ppdcfile (5),
+CUPS Online Help (http://localhost:631/help)
+.SH COPYRIGHT
+Copyright \[co] 2007-2014 by Apple Inc.
+.\"
+.\" End of "$Id: cupsd-helper.man 11817 2014-04-15 16:31:11Z msweet $".
+.\"
diff --git a/man/cupsd-logs.man b/man/cupsd-logs.man
new file mode 100644 (file)
index 0000000..8b8e0c8
--- /dev/null
@@ -0,0 +1,241 @@
+.\"
+.\" "$Id: cupsd-logs.man 11920 2014-06-11 19:03:59Z msweet $"
+.\"
+.\" cupsd-logs man page for CUPS.
+.\"
+.\" Copyright 2007-2014 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/".
+.\"
+.TH cupsd-logs 5 "CUPS" "11 June 2014" "Apple Inc."
+.SH NAME
+cupsd\-logs \- cupsd log files (access_log, error_log, and page_log)
+.SH DESCRIPTION
+.BR cupsd (8)
+normally maintains three log files: \fIaccess_log\fR to track requests that are submitted to the scheduler, \fIerror_log\fR to track progress and errors, and \fIpage_log\fR to track pages that are printed.
+Configuration directives in
+.BR cupsd.conf (5)
+and
+.BR cups-files.conf (5)
+control what information is logged and where it is stored.
+.SS ACCESS LOG FILE FORMAT
+The \fIaccess_log\fR file lists each HTTP resource that is accessed by a web browser or client.
+Each line is in an extended version of the so-called "Common Log Format" used by many web servers and web reporting tools:
+.nf
+
+    \fIhost group user date-time \fR"\fImethod resource version\fR" \fIstatus bytes
+      ipp-operation ipp-status\fR
+
+.fi
+For example:
+.nf
+
+    10.0.1.2 - - [01/Dec/2005:21:50:28 +0000] "POST / HTTP/1.1" 200 317
+      CUPS-Get-Printers successful-ok-ignored-or-substituted-attributes
+    localhost - - [01/Dec/2005:21:50:32 +0000] "GET /admin HTTP/1.1"
+      200 0 - -
+    localhost - - [01/Dec/2005:21:50:32 +0000] "POST / HTTP/1.1"
+      200 157 CUPS-Get-Printers
+      successful-ok-ignored-or-substituted-attributes
+    localhost - - [01/Dec/2005:21:50:32 +0000] "POST / HTTP/1.1"
+      200 1411 CUPS-Get-Devices -
+    localhost - - [01/Dec/2005:21:50:32 +0000] "GET /admin HTTP/1.1"
+      200 6667 - -
+
+.fi
+The \fIhost\fR field will normally only be an IP address unless you have enabled the HostNameLookups directive in the \fIcupsd.conf\fR file or if the IP address corresponds to your local machine.
+.LP
+The \fIgroup\fR field always contains "-".
+.LP
+The \fIuser\fR field is the authenticated username of the requesting user.
+If no username and password is supplied for the request then this field contains "-".
+.LP
+The \fIdate-time\fR field is the date and time of the request in local time and is in the format "[DD/MON/YYYY:HH:MM:SS +ZZZZ]".
+.LP
+The \fImethod\fR field is the HTTP method used: "GET", "HEAD", "OPTIONS", "POST", or "PUT".
+"GET" requests are used to get files from the server, both for the web interface and to get configuration and log files.
+"HEAD" requests are used to get information about a resource prior to a "GET".
+"OPTIONS" requests are used to upgrade connections to TLS encryption.
+"POST" requests are used for web interface forms and IPP requests.
+"PUT" requests are used to upload configuration files.
+.LP
+The \fIresource\fR field is the filename of the requested resource.
+.LP
+The \fIversion\fR field is the HTTP specification version used by the client.
+For CUPS clients this will always be "HTTP/1.1".
+.LP
+The \fIstatus\fR field contains the HTTP result status of the request, as follows:
+.RS 5
+.TP 5
+200
+Successful operation.
+.TP 5
+201
+File created/modified successfully.
+.TP 5
+304
+The requested file has not changed.
+.TP 5
+400
+Bad HTTP request; typically this means that you have a malicious program trying to access your server.
+.TP 5
+401
+Unauthorized, authentication (username + password) is required.
+.TP 5
+403
+Access is forbidden; typically this means that a client tried to access a file or resource they do not have permission to access.
+.TP 5
+404
+The file or resource does not exist.
+.TP 5
+405
+URL access method is not allowed; typically this means you have a web browser using your server as a proxy.
+.TP 5
+413
+Request too large; typically this means that a client tried to print a file larger than the MaxRequestSize allows.
+.TP 5
+426
+Upgrading to TLS-encrypted connection.
+.TP 5
+500
+Server error; typically this happens when the server is unable to open/create a file - consult the error_log file for details.
+.TP 5
+501
+The client requested encryption but encryption support is not enabled/compiled in.
+.TP 5
+505
+HTTP version number not supported; typically this means that you have a malicious program trying to access your server.
+.RE
+.LP
+The \fIbytes\fR field contains the number of bytes in the request.
+For POST requests the bytes field contains the number of bytes of non-IPP data that is received from the client.
+.LP
+The \fIipp-operation\fR field contains either "-" for non-IPP requests or the IPP operation name for POST requests containing an IPP request.
+.LP
+The \fIipp-status\fR field contains either "-" for non-IPP requests or the IPP status code name for POST requests containing an IPP response.
+.SS ERROR LOG FILE FORMAT
+The \fIerror_log\fR file lists messages from the scheduler - errors, warnings, etc. The LogLevel directive in the
+.BR cupsd.conf (5)
+file controls which messages are logged:
+.nf
+
+    level date-time message
+
+.fi
+For example:
+.nf
+
+    I [20/May/1999:19:18:28 +0000] [Job 1] Queued on 'DeskJet' by 'mike'.
+    D [20/May/1999:19:18:28 +0000] [Job 1] argv[0]="DeskJet"
+    D [20/May/1999:19:18:28 +0000] [Job 1] argv[1]="1"
+    D [20/May/1999:19:18:28 +0000] [Job 1] argv[2]="mike"
+    D [20/May/1999:19:18:28 +0000] [Job 1] argv[3]="myjob"
+    D [20/May/1999:19:18:28 +0000] [Job 1] argv[4]="1"
+    D [20/May/1999:19:18:28 +0000] [Job 1] argv[5]="media=
+      na_letter_8.5x11in sides=one-sided"
+    D [20/May/1999:19:18:28 +0000] [Job 1] argv[6]="/var/spool/cups/
+      d000001-001"
+    I [20/May/1999:19:21:02 +0000] [Job 2] Queued on 'DeskJet' by 'mike'.
+    I [20/May/1999:19:22:24 +0000] [Job 2] Canceled by 'mike'.
+
+.fi
+The \fIlevel\fR field contains the type of message:
+.TP 5
+A
+Alert message (LogLevel alert)
+.TP 5
+C
+Critical error message (LogLevel crit)
+.TP 5
+D
+Debugging message (LogLevel debug)
+.TP 5
+d
+Detailed debugging message (LogLevel debug2)
+.TP 5
+E
+Normal error message (LogLevel error)
+.TP 5
+I
+Informational message (LogLevel info)
+.TP 5
+N
+Notice message (LogLevel notice)
+.TP 5
+W
+Warning message (LogLevel warn)
+.TP 5
+X
+Emergency error message (LogLevel emerg)
+.LP
+The \fIdate-time\fR field contains the date and time of when the page started printing. The format of this field is identical to the data-time field in the \fIaccess_log\fR file.
+.LP
+The \fImessage\fR field contains a free-form textual message.
+Messages from job filters are prefixed with "[Job NNN]" where "NNN" is the job ID.
+.SS PAGE LOG FILE FORMAT
+The \fIpage_log\fR file lists each page or group of pages that are sent to a printer.
+By default, each line contains the following information:
+.nf
+
+    \fIprinter user job-id date-time page-number num-copies job-billing
+      job-originating-host-name job-name media sides\fR
+
+    \fIprinter user job-id date-time \fBtotal \fInum-impressions job-billing
+      job-originating-host-name job-name media sides\fR
+
+.fi
+For example the entries for a two page job called "myjob" might look like:
+.nf
+
+    DeskJet root 1 [20/May/1999:19:21:05 +0000] 1 1 acme-123
+      localhost myjob na_letter_8.5x11in one-sided
+    DeskJet root 1 [20/May/1999:19:21:05 +0000] 2 1 acme-123
+      localhost myjob na_letter_8.5x11in one-sided
+
+    DeskJet root 1 [20/May/1999:19:21:06 +0000] total 2 acme-123
+      localhost myjob na_letter_8.5x11in one-sided
+
+.fi
+The PageLogFormat directive in the
+.BR cupsd.conf (5)
+file can be used to change this information.
+.LP
+The \fIprinter\fR field contains the name of the printer that printed the page.
+If you send a job to a printer class, this field will contain the name of the printer that was assigned the job.
+.LP
+The \fIuser\fR field contains the name of the user (the IPP requesting-user-name attribute) that submitted this file for printing.
+.LP
+The \fIjob-id\fR field contains the job number of the page being printed.
+.LP
+The \fIdate-time\fR field contains the date and time of when the page started printing.
+The format of this field is identical to the data-time field in the \fIaccess_log\fR file.
+.LP
+The \fIpage-number\fR and \fInum-copies\fR fields contain the page number and number of copies being printed of that page.
+For printers that cannot produce copies on their own, the num-copies field will always be 1.
+.LP
+Lines containing the keyword "total" have a \fInum-impressions\fR field instead which provides the total number of impressions (sides) that have been printed on for the job.
+.LP
+The \fIjob-billing\fR field contains a copy of the job-billing or job-account-id attributes provided with the IPP Create-Job or Print-Job requests or "-" if neither was provided.
+.LP
+The \fIjob-originating-host-name\fR field contains the hostname or IP address of the client that printed the job.
+.LP
+The \fIjob-name\fR field contains a copy of the job-name attribute provided with the IPP Create-Job or Print-Job requests or "-" if none was provided.
+.LP
+The \fImedia\fR field contains a copy of the media or media-col/media-size attribute provided with the IPP Create-Job or Print-Job requests or "-" if none was provided.
+.LP
+The \fIsides\fR field contains a copy of the sides attribute provided with the IPP Create-Job or Print-Job requests or "-" if none was provided.
+.SH SEE ALSO
+.BR cupsd (8),
+.BR cupsd.conf (5),
+.BR cups-files.conf (5),
+CUPS Online Help (http://localhost:631/help)
+.SH COPYRIGHT
+Copyright \[co] 2007-2014 by Apple Inc.
+.\"
+.\" End of "$Id: cupsd-logs.man 11920 2014-06-11 19:03:59Z msweet $".
+.\"
index 3e427c33adba5f2ce51219415d0991cdecd46c3c..3926a5324271644f299b8e89e795e9534bfb20ca 100644 (file)
 .\"
-.\" "$Id: cupsd.conf.man.in 12060 2014-07-28 14:04:41Z msweet $"
+.\" "$Id: cupsd.conf.man.in 12059 2014-07-28 14:04:32Z msweet $"
 .\"
-.\"   cupsd.conf man page for CUPS.
+.\" cupsd.conf man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
 .TH cupsd.conf 5 "CUPS" "28 July 2014" "Apple Inc."
 .SH NAME
 cupsd.conf \- server configuration file for cups
 .SH DESCRIPTION
-The \fIcupsd.conf\fR file configures the CUPS scheduler, \fIcupsd(8)\fR.  It
-is normally located in the \fI/etc/cups\fR directory. \fBNote:\fR
-File, directory, and user configuration directives that used to be allowed in
-the \fIcupsd.conf\fR file are now stored in the \fIcups-files.conf(5)\fR instead
-in order to prevent certain types of privilege escalation attacks.
+The
+.I cupsd.conf
+file configures the CUPS scheduler,
+.BR cupsd (8).
+It is normally located in the
+.I /etc/cups
+directory.
+\fBNote:\fR File, directory, and user configuration directives that used to be allowed in the \fBcupsd.conf\fR file are now stored in the
+.BR cups-files.conf (5)
+file instead in order to prevent certain types of privilege escalation attacks.
 .LP
-Each line in the file can be a configuration directive, a blank line,
-or a comment. Comment lines start with the # character. The
-configuration directives are intentionally similar to those used by the
-popular Apache web server software and are described below.
-.SH DIRECTIVES
-The following directives are understood by \fIcupsd(8)\fR. Consult the
-on-line help for detailed descriptions:
+Each line in the file can be a configuration directive, a blank line, or a comment.
+Configuration directives typically consist of a name and zero or more values separated by whitespace.
+The configuration directive name and values are case-insensitive.
+Comment lines start with the # character.
+.SS TOP-LEVEL DIRECTIVES
+The following top-level directives are understood by
+.BR cupsd (8):
 .TP 5
-AccessLogLevel config
+\fBAccessLogLevel config\fR
 .TP 5
-AccessLogLevel actions
+\fBAccessLogLevel actions\fR
 .TP 5
-AccessLogLevel all
-.br
+\fBAccessLogLevel all\fR
 Specifies the logging level for the AccessLog file.
+The "config" level logs when printers and classes are added, deleted, or modified and when configuration files are accessed or updated.
+The "actions" level logs when print jobs are submitted, held, released, modified, or canceled, and any of the conditions for "config".
+The "all" level logs all requests.
+The default access log level is "actions".
 .TP 5
-Allow all
+\fBAutoPurgeJobs Yes\fR
 .TP 5
-Allow none
+\fBAutoPurgeJobs No\fR
+.br
+Specifies whether to purge job history data automatically when it is no longer required for quotas.
+The default is "No".
 .TP 5
-Allow host.domain.com
+\fBBrowseLocalProtocols all\fR
 .TP 5
-Allow *.domain.com
+\fBBrowseLocalProtocols dnssd\fR
 .TP 5
-Allow ip-address
+\fBBrowseLocalProtocols none\fR
+Specifies which protocols to use for local printer sharing.
+The default is "dnssd" on systems that support Bonjour and "none" otherwise.
 .TP 5
-Allow ip-address/netmask
+\fBBrowseWebIF Yes\fR
 .TP 5
-Allow ip-address/mm
+\fBBrowseWebIF No\fR
+.br
+Specifies whether the CUPS web interface is advertised.
+The default is "No".
 .TP 5
-Allow @IF(name)
+\fBBrowsing Yes\fR
 .TP 5
-Allow @LOCAL
+\fBBrowsing No\fR
 .br
-Allows access from the named hosts or addresses.
+Specifies whether shared printers are advertised.
+The default is "No".
 .TP 5
-AuthType None
+\fBClassification \fIbanner\fR
+.br
+Specifies the security classification of the server.
+Any valid banner name can be used, including "classified", "confidential", "secret", "topsecret", and "unclassified", or the banner can be omitted to disable secure printing functions.
+The default is no classification banner.
 .TP 5
-AuthType Basic
+\fBClassifyOverride Yes\fR
 .TP 5
-AuthType BasicDigest
+\fBClassifyOverride No\fR
+.br
+Specifies whether users may override the classification (cover page) of individual print jobs using the "job-sheets" option.
+The default is "No".
 .TP 5
-AuthType Digest
+\fBDefaultAuthType Basic\fR
 .TP 5
-AuthType Negotiate
+\fBDefaultAuthType Negotiate\fR
 .br
-Specifies the authentication type (None, Basic, BasicDigest, Digest, Negotiate)
+Specifies the default type of authentication to use.
+The default is "Basic".
 .TP 5
-AutoPurgeJobs Yes
+\fBDefaultEncryption Never\fR
 .TP 5
-AutoPurgeJobs No
-.br
-Specifies whether to purge job history data automatically when
-it is no longer required for quotas.
+\fBDefaultEncryption IfRequested\fR
 .TP 5
-BrowseLocalProtocols [All] [DNSSD]
-.br
-Specifies the protocols to use for local printer sharing.
+\fBDefaultEncryption Required\fR
+Specifies whether encryption will be used for authenticated requests.
+The default is "Required".
 .TP 5
-BrowseWebIF Yes
+\fBDefaultLanguage \fIlocale\fR
+Specifies the default language to use for text and web content.
+The default is "en".
 .TP 5
-BrowseWebIF No
-.br
-Specifies whether the CUPS web interface is advertised via DNS-SD.
+\fBDefaultPaperSize Auto\fR
 .TP 5
-Browsing Yes
+\fBDefaultPaperSize None\fR
 .TP 5
-Browsing No
-.br
-Specifies whether or not shared printers should be advertised.
+\fBDefaultPaperSize \fIsizename\fR
+Specifies the default paper size for new print queues. "Auto" uses a locale-specific default, while "None" specifies there is no default paper size.
+Specific size names are typically "Letter" or "A4".
+The default is "Auto".
 .TP 5
-Classification banner
-.br
-Specifies the security classification of the server.
+\fBDefaultPolicy \fIpolicy-name\fR
+Specifies the default access policy to use.
+The default access policy is "default".
 .TP 5
-ClassifyOverride Yes
+\fBDefaultShared Yes\fR
 .TP 5
-ClassifyOverride No
-.br
-Specifies whether to allow users to override the classification
-of individual print jobs.
+\fBDefaultShared No\fR
+Specifies whether local printers are shared by default.
+The default is "Yes".
 .TP 5
-DefaultAuthType Basic
+\fBDirtyCleanInterval \fIseconds\fR
+Specifies the delay for updating of configuration and state files.
+A value of 0 causes the update to happen as soon as possible, typically within a few milliseconds.
+The default value is "30".
 .TP 5
-DefaultAuthType BasicDigest
+\fBErrorPolicy abort-job\fR
+Specifies that a failed print job should be aborted (discarded) unless otherwise specified for the printer.
 .TP 5
-DefaultAuthType Digest
+\fBErrorPolicy retry-job\fR
+Specifies that a failed print job should be retried at a later time unless otherwise specified for the printer.
 .TP 5
-DefaultAuthType Negotiate
-.br
-Specifies the default type of authentication to use.
+\fBErrorPolicy retry-this-job\fR
+Specifies that a failed print job should be retried immediately unless otherwise specified for the printer.
 .TP 5
-DefaultEncryption Never
+\fBErrorPolicy stop-printer\fR
+Specifies that a failed print job should stop the printer unless otherwise specified for the printer. The 'stop-printer' error policy is the default.
 .TP 5
-DefaultEncryption IfRequested
+\fBFilterLimit \fIlimit\fR
+Specifies the maximum cost of filters that are run concurrently, which can be used to minimize disk, memory, and CPU resource problems.
+A limit of 0 disables filter limiting.
+An average print to a non-PostScript printer needs a filter limit of about 200.
+A PostScript printer needs about half that (100).
+Setting the limit below these thresholds will effectively limit the scheduler to printing a single job at any time.
+The default limit is "0".
+.TP 5
+\fBFilterNice \fInice-value\fR
+Specifies the scheduling priority (
+.BR nice (8)
+value) of filters that are run to print a job.
+The nice value ranges from 0, the highest priority, to 19, the lowest priority.
+The default is 0.
+.TP 5
+\fBGSSServiceName \fIname\fR
+Specifies the service name when using Kerberos authentication.
+The default service name is "http."
+.TP 5
+\fBHostNameLookups On\fR
+.TP 5
+\fBHostNameLookups Off\fR
+.TP 5
+\fBHostNameLookups Double\fR
+Specifies whether to do reverse lookups on connecting clients.
+The "Double" setting causes
+.BR cupsd (8)
+to verify that the hostname resolved from the address matches one of the addresses returned for that hostname.
+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.
+.TP 5
+\fBJobKillDelay \fIseconds\fR
+Specifies the number of seconds to wait before killing the filters and backend associated with a canceled or held job.
+The default is "30".
+.TP 5
+\fBJobRetryInterval \fIseconds\fR
+Specifies the interval between retries of jobs in seconds.
+This is typically used for fax queues but can also be used with normal print queues whose error policy is "retry-job" or "retry-current-job".
+The default is "30".
 .TP 5
-DefaultEncryption Required
-.br
-Specifies the type of encryption to use for authenticated requests.
+\fBJobRetryLimit \fIcount\fR
+Specifies the number of retries that are done for jobs.
+This is typically used for fax queues but can also be used with normal print queues whose error policy is "retry-job" or "retry-current-job".
+The default is "5".
 .TP 5
-DefaultLanguage locale
-.br
-Specifies the default language to use for text and web content.
+\fBKeepAlive Yes\fR
 .TP 5
-DefaultPaperSize Auto
+\fBKeepAlive No\fR
+Specifies whether to support HTTP keep-alive connections.
+The default is "Yes".
 .TP 5
-DefaultPaperSize None
+\fBKeepAliveTimeout \fIseconds\fR
+Specifies how long an idle client connection remains open.
+The default is "30".
 .TP 5
-DefaultPaperSize sizename
-.br
-Specifies the default paper size for new print queues. "Auto" uses a locale-
-specific default, while "None" specifies there is no default paper size.
+\fB<Limit \fIoperation \fR...\fB> \fR... \fB</Limit>\fR
+Specifies the IPP operations that are being limited inside a Policy section. IPP operation names are listed below in the section "IPP OPERATIONS".
 .TP 5
-DefaultPolicy policy-name
-.br
-Specifies the default access policy to use.
+\fB<Limit \fImethod \fR...\fB> \fR... \fB</Limit>\fR
 .TP 5
-DefaultShared Yes
+\fB<LimitExcept \fImethod \fR...\fB> \fR... \fB</LimitExcept>\fR
+Specifies the HTTP methods that are being limited inside a Location section. HTTP method names are listed below in the section "HTTP METHODS".
 .TP 5
-DefaultShared No
-.br
-Specifies whether local printers are shared by default.
+\fBLimitRequestBody \fIsize\fR
+Specifies the maximum size of print files, IPP requests, and HTML form data.
+The default is "0" which disables the limit check.
 .TP 5
-Deny all
+\fBListen \fIipv4-address\fB:\fIport\fR
 .TP 5
-Deny none
+\fBListen [\fIipv6-address\fB]:\fIport\fR
 .TP 5
-Deny host.domain.com
+\fBListen *:\fIport\fR
 .TP 5
-Deny *.domain.com
+\fBListen \fI/path/to/domain/socket\fR
+Listens to the specified address and port or domain socket path for connections.
+Multiple Listen directives can be provided to listen on multiple addresses.
+The Listen directive is similar to the Port directive but allows you to restrict access to specific interfaces or networks.
 .TP 5
-Deny ip-address
+\fBListenBackLog \fInumber\fR
+Specifies the number of pending connections that will be allowed.
+This normally only affects very busy servers that have reached the MaxClients limit, but can also be triggered by large numbers of simultaneous connections.
+When the limit is reached, the operating system will refuse additional connections until the scheduler can accept the pending ones.
+The default is the OS-defined default limit, typically either "5" for older operating systems or "128" for newer operating systems.
 .TP 5
-Deny ip-address/netmask
+\fB<Location \fI/path\fB> \fR... \fB</Location>\fR
+Specifies access control for the named location.
+Paths are documented below in the section "LOCATION PATHS".
 .TP 5
-Deny ip-address/mm
+\fBLogDebugHistory \fInumber\fR
+Specifies the number of debugging messages that are retained for logging if an error occurs in a print job. Debug messages are logged regardless of the LogLevel setting.
 .TP 5
-Deny @IF(name)
+\fBLogLevel \fRnone
 .TP 5
-Deny @LOCAL
-.br
-Denies access to the named host or address.
+\fBLogLevel \fRemerg
 .TP 5
-DirtyCleanInterval seconds
-.br
-Specifies the delay for updating of configuration and state files. A value of 0
-causes the update to happen as soon as possible, typically within a few
-milliseconds.
+\fBLogLevel \fRalert
 .TP 5
-Encryption IfRequested
+\fBLogLevel \fRcrit
 .TP 5
-Encryption Never
+\fBLogLevel \fRerror
 .TP 5
-Encryption Required
-.br
-Specifies the level of encryption that is required for a particular
-location.
+\fBLogLevel \fRwarn
 .TP 5
-ErrorPolicy abort-job
-Specifies that a failed print job should be aborted (discarded) unless otherwise specified for the printer.
+\fBLogLevel \fRnotice
 .TP 5
-ErrorPolicy retry-job
-Specifies that a failed print job should be retried at a later time unless otherwise specified for the printer.
+\fBLogLevel \fRinfo
 .TP 5
-ErrorPolicy retry-this-job
-Specifies that a failed print job should be retried immediately unless otherwise specified for the printer.
+\fBLogLevel \fRdebug
 .TP 5
-ErrorPolicy stop-printer
-Specifies that a failed print job should stop the printer unless otherwise specified for the printer. The 'stop-printer' error policy is the default.
+\fBLogLevel \fRdebug2
+Specifies the level of logging for the ErrorLog file.
+The value "none" stops all logging while "debug2" logs everything.
+The default is "warn".
 .TP 5
-FilterLimit limit
-.br
-Specifies the maximum cost of filters that are run concurrently.
+\fBLogTimeFormat \fRstandard
 .TP 5
-FilterNice nice-value
-.br
-Specifies the scheduling priority ("nice" value) of filters that
-are run to print a job.
+\fBLogTimeFormat \fRusecs
+Specifies the format of the date and time in the log files.
+The value "standard" is the default and logs whole seconds while "usecs" logs microseconds.
 .TP 5
-GSSServiceName name
-.br
-Specifies the service name when using Kerberos authentication. The default
-service name is "http".
+\fBMaxClients \fInumber\fR
+Specifies the maximum number of simultaneous clients that are allowed by the scheduler.
+The default is "100".
 .TP 5
-HostNameLookups On
+\fBMaxClientsPerHost \fInumber\fR
+Specifies the maximum number of simultaneous clients that are allowed from a
+single address.
+The default is the MaxClients value.
 .TP 5
-HostNameLookups Off
+\fBMaxCopies \fInumber\fR
+Specifies the maximum number of copies that a user can print of each job.
+The default is "9999".
+.TP 5
+\fBMaxHoldTime \fIseconds\fR
+Specifies the maximum time a job may remain in the "indefinite" hold state before it is canceled.
+The default is "0" which disables cancellation of held jobs.
+.TP 5
+\fBMaxJobs \fInumber\fR
+Specifies the maximum number of simultaneous jobs that are allowed.
+Set to "0" to allow an unlimited number of jobs.
+The default is "500".
+.TP 5
+\fBMaxJobsPerPrinter \fInumber\fR
+Specifies the maximum number of simultaneous jobs that are allowed per printer.
+The default is "0" which allows up to MaxJobs jobs per printer.
+.TP 5
+\fBMaxJobsPerUser \fInumber\fR
+Specifies the maximum number of simultaneous jobs that are allowed per user.
+The default is "0" which allows up to MaxJobs jobs per user.
+.TP 5
+\fBMaxJobTime \fIseconds\fR
+Specifies the maximum time a job may take to print before it is canceled.
+Set to "0" to disable cancellation of "stuck" jobs.
+The default is "10800" (3 hours).
+.TP 5
+\fBMaxLogSize \fIsize\fR
+Specifies the maximum size of the log files before they are rotated.
+The value "0" disables log rotation.
+The default is "1048576" (1MB).
+.TP 5
+\fBMultipleOperationTimeout \fIseconds\fR
+Specifies the maximum amount of time to allow between files in a multiple file print job.
+The default is "300" (5 minutes).
+.TP 5
+\fBPageLogFormat \fIformat-string\fR
+Specifies the format of PageLog lines.
+Sequences beginning with percent (%) characters are replaced with the corresponding information, while all other characters are copied literally.
+The following percent sequences are recognized:
+.nf
+
+    "%%" inserts a single percent character.
+    "%{name}" inserts the value of the specified IPP attribute.
+    "%C" inserts the number of copies for the current page.
+    "%P" inserts the current page number.
+    "%T" inserts the current date and time in common log format.
+    "%j" inserts the job ID.
+    "%p" inserts the printer name.
+    "%u" inserts the username.
+
+.fi
+The default is "%p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}".
+.TP 5
+\fBPassEnv \fIvariable \fR[ ... \fIvariable \fR]
+Passes the specified environment variable(s) to child processes.
 .TP 5
-HostNameLookups Double
-.br
-Specifies whether or not to do reverse lookups on client addresses.
+\fB<Policy \fIname\fB> \fR... \fB</Policy>\fR
+Specifies access control for the named policy.
 .TP 5
-Include filename
-.br
-Includes the named file.
+\fBPort \fInumber\fR
+Listens to the specified port number for connections.
 .TP 5
-JobKillDelay seconds
-.br
-Specifies the number of seconds to wait before killing the filters and backend
-associated with a canceled or held job.
+\fBPreserveJobFiles Yes\fR
 .TP 5
-JobPrivateAccess all
+\fBPreserveJobFiles No\fR
 .TP 5
-JobPrivateAccess default
+\fBPreserveJobFiles \fIseconds\fR
+Specifies whether job files (documents) are preserved after a job is printed.
+If a numeric value is specified, job files are preserved for the indicated number of seconds after printing.
+The default is "86400" (preserve 1 day).
 .TP 5
-JobPrivateAccess {user|@group|@ACL|@OWNER|@SYSTEM}+
-.br
-Specifies an access list for a job's private values. The "default" access list
-is "@OWNER @SYSTEM". "@ACL" maps to the printer's requesting-user-name-allowed
-or requesting-user-name-denied values.
+\fBPreserveJobHistory Yes\fR
 .TP 5
-JobPrivateValues all
+\fBPreserveJobHistory No\fR
 .TP 5
-JobPrivateValues default
+\fBPreserveJobHistory \fIseconds\fR
+Specifies whether the job history is preserved after a job is printed.
+If a numeric value is specified, the job history is preserved for the indicated number of seconds after printing.
+If "Yes", the job history is preserved until the MaxJobs limit is reached.
+The default is "Yes".
 .TP 5
-JobPrivateValues none
+\fBReloadTimeout \fIseconds\fR
+Specifies the amount of time to wait for job completion before restarting the scheduler.
+The default is "30".
 .TP 5
-JobPrivateValues attribute-name-1 [ ... attribute-name-N ]
-Specifies the list of job values to make private. The "default" values are
-"job-name", "job-originating-host-name", and "job-originating-user-name".
+\fBRIPCache \fIsize\fR
+Specifies the maximum amount of memory to use when converting documents into bitmaps for a printer.
+The default is "128m".
 .TP 5
-JobRetryInterval seconds
-.br
-Specifies the interval between retries of jobs in seconds.
+\fBServerAdmin \fIemail-address\fR
+Specifies the email address of the server administrator.
+The default value is "root@ServerName".
 .TP 5
-JobRetryLimit count
-.br
-Specifies the number of retries that are done for jobs.
+\fBServerAlias \fIhostname \fR[ ... \fIhostname \fR]
 .TP 5
-KeepAlive Yes
+\fBServerAlias *\fR
+The ServerAlias directive is used for HTTP Host header validation when clients connect to the scheduler from external interfaces.
+Using the special name "*" can expose your system to known browser-based DNS rebinding attacks, even when accessing sites through a firewall.
+If the auto-discovery of alternate names does not work, we recommend listing each alternate name with a ServerAlias directive instead of using "*".
 .TP 5
-KeepAlive No
-.br
-Specifies whether to support HTTP keep-alive connections.
+\fBServerName \fIhostname\fR
+Specifies the fully-qualified hostname of the server.
+The default is the value reported by the
+.BR hostname (1)
+command.
 .TP 5
-KeepAliveTimeout seconds
-.br
-Specifies the amount of time that connections are kept alive.
+\fBServerTokens None\fR
 .TP 5
-<Limit operations> ... </Limit>
-.br
-Specifies the IPP operations that are being limited inside a policy.
+\fBServerTokens ProductOnly\fR
 .TP 5
-<Limit methods> ... </Limit>
+\fBServerTokens Major\fR
 .TP 5
-<LimitExcept methods> ... </LimitExcept>
-.br
-Specifies the HTTP methods that are being limited inside a location.
+\fBServerTokens Minor\fR
 .TP 5
-LimitRequestBody
-.br
-Specifies the maximum size of any print job request.
+\fBServerTokens Minimal\fR
 .TP 5
-Listen ip-address:port
+\fBServerTokens OS\fR
 .TP 5
-Listen *:port
+\fBServerTokens Full\fR
+Specifies what information is included in the Server header of HTTP responses.
+"None" disables the Server header.
+"ProductOnly" reports "CUPS".
+"Major" reports "CUPS 2".
+"Minor" reports "CUPS 2.0".
+"Minimal" reports "CUPS 2.0.0".
+"OS" reports "CUPS 2.0.0 (UNAME)" where UNAME is the output of the
+.BR uname (1)
+command.
+"Full" reports "CUPS 2.0.0 (UNAME) IPP/2.0".
+The default is "Minimal".
 .TP 5
-Listen /path/to/domain/socket
-.br
-Listens to the specified address and port or domain socket path.
+\fBSetEnv \fIvariable value\fR
+Set the specified environment variable to be passed to child processes.
 .TP 5
-<Location /path> ... </Location>
-.br
-Specifies access control for the named location.
 .TP 5
-LogDebugHistory #-messages
-.br
-Specifies the number of debugging messages that are logged when an error
-occurs in a print job.
+\fBSSLListen \fIipv4-address\fB:\fIport\fR
 .TP 5
-LogLevel alert
+\fBSSLListen [\fIipv6-address\fB]:\fIport\fR
 .TP 5
-LogLevel crit
+\fBSSLListen *:\fIport\fR
+Listens on the specified address and port for encrypted connections.
 .TP 5
-LogLevel debug2
+\fBSSLPort \fIport\fR
+Listens on the specified port for encrypted connections.
 .TP 5
-LogLevel debug
+\fBStrictConformance Yes\fR
 .TP 5
-LogLevel emerg
+\fBStrictConformance No\fR
+Specifies whether the scheduler requires clients to strictly adhere to the IPP specifications.
+The default is "No".
 .TP 5
-LogLevel error
+\fBTimeout \fIseconds\fR
+Specifies the HTTP request timeout.
+The default is "300" (5 minutes).
 .TP 5
-LogLevel info
+\fBWebInterface yes\fR
 .TP 5
-LogLevel none
+\fBWebInterface no\fR
+Specifies whether the web interface is enabled.
+The default is "No".
+.SS HTTP METHOD NAMES
+The following HTTP methods are supported by
+.BR cupsd (8):
 .TP 5
-LogLevel notice
+GET
+Used by a client to download icons and other printer resources and to access the CUPS web interface.
 .TP 5
-LogLevel warn
-.br
-Specifies the logging level for the ErrorLog file.
+HEAD
+Used by a client to get the type, size, and modification date of resources.
 .TP 5
-LogTimeFormat standard
+OPTIONS
+Used by a client to establish a secure (SSL/TLS) connection.
 .TP 5
-LogTimeFormat usecs
-.br
-Specifies the format of the date and time in the log files.
+POST
+Used by a client to submit IPP requests and HTML forms from the CUPS web interface.
 .TP 5
-MaxClients number
-.br
-Specifies the maximum number of simultaneous clients to support.
+PUT
+Used by a client to upload configuration files.
+.SS IPP OPERATION NAMES
+The following IPP operations are supported by
+.BR cupsd (8):
 .TP 5
-MaxClientsPerHost number
-.br
-Specifies the maximum number of simultaneous clients to support from a
-single address.
+CUPS\-Accept\-Jobs
+Allows a printer to accept new jobs.
 .TP 5
-MaxCopies number
-.br
-Specifies the maximum number of copies that a user can print of each job.
+CUPS\-Add\-Modify\-Class
+Adds or modifies a printer class.
 .TP 5
-MaxHoldTime seconds
-.br
-Specifies the maximum time a job may remain in the "indefinite" hold state
-before it is canceled. Set to 0 to disable cancellation of held jobs.
+CUPS\-Add\-Modify\-Printer
+Adds or modifies a printer.
 .TP 5
-MaxJobs number
-.br
-Specifies the maximum number of simultaneous jobs to support.
+CUPS\-Authenticate\-Job
+Releases a job that is held for authentication.
 .TP 5
-MaxJobsPerPrinter number
-.br
-Specifies the maximum number of simultaneous jobs per printer to support.
+CUPS\-Delete\-Class
+Deletes a printer class.
 .TP 5
-MaxJobsPerUser number
-.br
-Specifies the maximum number of simultaneous jobs per user to support.
+CUPS\-Delete\-Printer
+Deletes a printer.
 .TP 5
-MaxJobTime seconds
-.br
-Specifies the maximum time a job may take to print before it is canceled. The
-default is 10800 seconds (3 hours). Set to 0 to disable cancellation of "stuck"
-jobs.
+CUPS\-Get\-Classes
+Gets a list of printer classes.
 .TP 5
-MaxLogSize number-bytes
-.br
-Specifies the maximum size of the log files before they are
-rotated (0 to disable rotation)
+CUPS\-Get\-Default
+Gets the server default printer or printer class.
 .TP 5
-MaxRequestSize number-bytes
-.br
-Specifies the maximum request/file size in bytes (0 for no limit)
+CUPS\-Get\-Devices
+Gets a list of devices that are currently available.
 .TP 5
-MultipleOperationTimeout seconds
-.br
-Specifies the maximum amount of time to allow between files in a multiple file
-print job.
+CUPS\-Get\-Document
+Gets a document file for a job.
 .TP 5
-Order allow,deny
+CUPS\-Get\-PPD
+Gets a PPD file.
 .TP 5
-Order deny,allow
-.br
-Specifies the order of HTTP access control (allow,deny or deny,allow)
+CUPS\-Get\-PPDs
+Gets a list of installed PPD files.
 .TP 5
-PageLogFormat format string
-.br
-Specifies the format of page log lines.
+CUPS\-Get\-Printers
+Gets a list of printers.
 .TP 5
-PassEnv variable [... variable]
-.br
-Passes the specified environment variable(s) to child processes.
+CUPS\-Move\-Job
+Moves a job.
 .TP 5
-<Policy name> ... </Policy>
-.br
-Specifies access control for the named policy.
+CUPS\-Reject\-Jobs
+Prevents a printer from accepting new jobs.
 .TP 5
-Port number
-.br
-Specifies a port number to listen to for HTTP requests.
+CUPS\-Set\-Default
+Sets the server default printer or printer class.
 .TP 5
-PreserveJobFiles Yes
+Cancel\-Job
+Cancels a job.
 .TP 5
-PreserveJobFiles No
-.br
-Specifies whether or not to preserve job files after they are printed.
+Cancel\-Jobs
+Cancels one or more jobs.
 .TP 5
-PreserveJobHistory Yes
+Cancel\-My\-Jobs
+Cancels one or more jobs creates by a user.
 .TP 5
-PreserveJobHistory No
-.br
-Specifies whether or not to preserve the job history after they are
-printed.
+Cancel\-Subscription
+Cancels a subscription.
 .TP 5
-PrintcapFormat bsd
+Close\-Job
+Closes a job that is waiting for more documents.
 .TP 5
-PrintcapFormat plist
+Create\-Job
+Creates a new job with no documents.
 .TP 5
-PrintcapFormat solaris
-.br
-Specifies the format of the printcap file.
+Create\-Job\-Subscriptions
+Creates a subscription for job events.
 .TP 5
-ReloadTimeout seconds
-.br
-Specifies the amount of time to wait for job completion before
-restarting the scheduler.
+Create\-Printer\-Subscriptions
+Creates a subscription for printer events.
 .TP 5
-Require group group-name-list
+Get\-Job\-Attributes
+Gets information about a job.
 .TP 5
-Require user user-name-list
+Get\-Jobs
+Gets a list of jobs.
 .TP 5
-Require valid-user
-.br
-Specifies that user or group authentication is required.
+Get\-Notifications
+Gets a list of event notifications for a subscription.
 .TP 5
-RIPCache bytes
-.br
-Specifies the maximum amount of memory to use when converting images
-and PostScript files to bitmaps for a printer.
+Get\-Printer\-Attributes
+Gets information about a printer or printer class.
 .TP 5
-Satisfy all
+Get\-Subscription\-Attributes
+Gets information about a subscription.
 .TP 5
-Satisfy any
-.br
-Specifies whether all or any limits set for a Location must be
-satisfied to allow access.
+Get\-Subscriptions
+Gets a list of subscriptions.
 .TP 5
-ServerAdmin user@domain.com
-.br
-Specifies the email address of the server administrator.
+Hold\-Job
+Holds a job from printing.
 .TP 5
-ServerAlias hostname [... hostname]
+Hold\-New\-Jobs
+Holds all new jobs from printing.
 .TP 5
-ServerAlias *
-.br
-Specifies an alternate name that the server is known by. The special name "*"
-allows any name to be used.
+Pause\-Printer
+Stops processing of jobs by a printer or printer class.
 .TP 5
-ServerName hostname-or-ip-address
-.br
-Specifies the fully-qualified hostname of the server.
+Pause\-Printer\-After\-Current\-Job
+Stops processing of jobs by a printer or printer class after the current job is finished.
 .TP 5
-ServerTokens Full
+Print\-Job
+Creates a new job with a single document.
 .TP 5
-ServerTokens Major
+Purge\-Jobs
+Cancels one or more jobs and deletes the job history.
 .TP 5
-ServerTokens Minimal
+Release\-Held\-New\-Jobs
+Allows previously held jobs to print.
 .TP 5
-ServerTokens Minor
+Release\-Job
+Allows a job to print.
 .TP 5
-ServerTokens None
+Renew\-Subscription
+Renews a subscription.
 .TP 5
-ServerTokens OS
+Restart\-Job
+Reprints a job, if possible.
 .TP 5
-ServerTokens ProductOnly
-.br
-Specifies what information is included in the Server header of HTTP
-responses.
+Send\-Document
+Adds a document to a job.
 .TP 5
-SetEnv variable value
-.br
-Set the specified environment variable to be passed to child processes.
+Set\-Job\-Attributes
+Changes job information.
 .TP 5
-SSLListen
-.br
-Listens on the specified address and port for encrypted connections.
+Set\-Printer\-Attributes
+Changes printer or printer class information.
 .TP 5
-SSLOptions None
+Validate\-Job
+Validates options for a new job.
+.SS LOCATION PATHS
+The following paths are commonly used when configuring
+.BR cupsd (8):
 .TP 5
-SSLOptions NoEmptyFragments
-.br
-Sets SSL/TLS protocol options for encrypted connections.
+/
+The path for all get operations (get-printers, get-jobs, etc.)
 .TP 5
-SSLPort
-.br
-Listens on the specified port for encrypted connections.
+/admin
+The path for all administration operations (add-printer, delete-printer, start-printer, etc.)
 .TP 5
-StrictConformance Yes
+/admin/conf
+The path for access to the CUPS configuration files (cupsd.conf, client.conf, etc.)
 .TP 5
-StrictConformance No
-.br
-Specifies whether the scheduler requires clients to strictly adhere to the IPP
-specifications. The default is No.
+/admin/log
+The path for access to the CUPS log files (access_log, error_log, page_log)
 .TP 5
-SubscriptionPrivateAccess all
+/classes
+The path for all printer classes
 .TP 5
-SubscriptionPrivateAccess default
+/classes/name
+The resource for the named printer class
 .TP 5
-SubscriptionPrivateAccess {user|@group|@ACL|@OWNER|@SYSTEM}+
-.br
-Specifies an access list for a subscription's private values. The "default"
-access list is "@OWNER @SYSTEM". "@ACL" maps to the printer's
-requesting-user-name-allowed or requesting-user-name-denied values.
+/jobs
+The path for all jobs (hold-job, release-job, etc.)
 .TP 5
-SubscriptionPrivateValues all
+/jobs/id
+The path for the specified job.
 .TP 5
-SubscriptionPrivateValues default
+/printers
+The path for all printers
 .TP 5
-SubscriptionPrivateValues none
+/printers/name
+The path for the named printer
 .TP 5
-SubscriptionPrivateValues attribute-name-1 [ ... attribute-name-N ]
-Specifies the list of job values to make private. The "default" values are
-"notify-events", "notify-pull-method", "notify-recipient-uri",
-"notify-subscriber-user-name", and "notify-user-data".
+/printers/name.png
+The icon file path for the named printer
 .TP 5
-Timeout seconds
-.br
-Specifies the HTTP request timeout in seconds.
+/printers/name.ppd
+The PPD file path for the named printer
+.SS DIRECTIVES VALID WITHIN LOCATION AND LIMIT SECTIONS
+The following directives may be placed inside Location and Limit sections in the \fBcupsd.conf\fR file:
 .TP 5
-WebInterface yes
+\fBAllow all\fR
 .TP 5
-WebInterface no
-Specifies whether the web interface is enabled.
+\fBAllow none\fR
+.TP 5
+\fBAllow \fIhost.domain.com\fR
+.TP 5
+\fBAllow *.\fIdomain.com\fR
+.TP 5
+\fBAllow \fIipv4-address\fR
+.TP 5
+\fBAllow \fIipv4-address\fB/\fInetmask\fR
+.TP 5
+\fBAllow \fIipv4-address\fB/\fImm\fR
+.TP 5
+\fBAllow [\fIipv6-address\fB]\fR
+.TP 5
+\fBAllow [\fIipv6-address\fB]/\fImm\fR
+.TP 5
+\fBAllow @IF(\fIname\fB)\fR
+.TP 5
+\fBAllow @LOCAL\fR
+Allows access from the named hosts, domains, addresses, or interfaces.
+The Order directive controls whether Allow lines are evaluated before or after Deny lines.
+.TP 5
+\fBAuthType None\fR
+.TP 5
+\fBAuthType Basic\fR
+.TP 5
+\fBAuthType Default\fR
+.TP 5
+\fBAuthType Negotiate\fR
+Specifies the type of authentication required.
+The value "Default" corresponds to the DefaultAuthType value.
+.TP 5
+\fBDeny all\fR
+.TP 5
+\fBDeny none\fR
+.TP 5
+\fBDeny \fIhost.domain.com\fR
+.TP 5
+\fBDeny *.\fIdomain.com\fR
+.TP 5
+\fBDeny \fIipv4-address\fR
+.TP 5
+\fBDeny \fIipv4-address\fB/\fInetmask\fR
+.TP 5
+\fBDeny \fIipv4-address\fB/\fImm\fR
+.TP 5
+\fBDeny [\fIipv6-address\fB]\fR
+.TP 5
+\fBDeny [\fIipv6-address\fB]/\fImm\fR
+.TP 5
+\fBDeny @IF(\fIname\fB)\fR
+.TP 5
+\fBDeny @LOCAL\fR
+Denies access from the named hosts, domains, addresses, or interfaces.
+The Order directive controls whether Deny lines are evaluated before or after Allow lines.
+.TP 5
+\fBEncryption IfRequested\fR
+.TP 5
+\fBEncryption Never\fR
+.TP 5
+\fBEncryption Required\fR
+Specifies the level of encryption that is required for a particular location.
+The default value is "IfRequested".
+.TP 5
+\fBOrder allow,deny\fR
+Specifies that access is denied by default. Allow lines are then processed followed by Deny lines to determine whether a client may access a particular resource.
+.TP 5
+\fBOrder deny,allow\fR
+Specifies that access is allowed by default. Deny lines are then processed followed by Allow lines to determine whether a client may access a particular resource.
+.TP 5
+\fBRequire group \fIgroup-name \fR[ \fIgroup-name \fR... ]
+Specifies that an authenticated user must be a member of one of the named groups.
+.TP 5
+\fBRequire user {\fIuser-name\fR|\fB@\fIgroup-name\fR} ...
+Specifies that an authenticated user must match one of the named users or be a member of one of the named groups.
+The group name "@SYSTEM" corresponds to the list of groups defined by the SystemGroup directive in the
+.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.
+.TP 5
+\fBRequire valid-user\fR
+Specifies that any authenticated user is acceptable.
+.TP 5
+\fBSatisfy all\fR
+Specifies that all Allow, AuthType, Deny, Order, and Require conditions must be satisfied to allow access.
+.TP 5
+\fBSatisfy any\fR
+Specifies that any a client may access a resource if either the authentication (AuthType/Require) or address (Allow/Deny/Order) conditions are satisfied.
+For example, this can be used to require authentication only for remote accesses.
+.SS DIRECTIVES VALID WITHIN POLICY SECTIONS
+The following directives may be placed inside Policy sections in the \fBcupsd.conf\fR file:
+.TP 5
+\fBJobPrivateAccess all\fR
+.TP 5
+\fBJobPrivateAccess default\fR
+.TP 5
+\fBJobPrivateAccess \fR{\fIuser\fR|\fB@\fIgroup\fR|\fB@ACL\fR|\fB@OWNER\fR|\fB@SYSTEM\fR} ...
+Specifies an access list for a job's private values.
+The "default" access list is "@OWNER @SYSTEM".
+"@ACL" maps to the printer's requesting-user-name-allowed or requesting-user-name-denied values.
+"@OWNER" maps to the job's owner.
+"@SYSTEM" maps to the groups listed for the SystemGroup directive in the
+.BR cups-files.conf (5)
+file.
+.TP 5
+\fBJobPrivateValues all\fR
+.TP 5
+\fBJobPrivateValues default\fR
+.TP 5
+\fBJobPrivateValues none\fR
+.TP 5
+\fBJobPrivateValues \fIattribute-name \fR[ ... \fIattribute-name \fR]
+Specifies the list of job values to make private.
+The "default" values are "job-name", "job-originating-host-name", "job-originating-user-name", and "phone".
+.TP 5
+\fBSubscriptionPrivateAccess all\fR
+.TP 5
+\fBSubscriptionPrivateAccess default\fR
+.TP 5
+\fBSubscriptionPrivateAccess \fR{\fIuser\fR|\fB@\fIgroup\fR|\fB@ACL\fR|\fB@OWNER\fR|\fB@SYSTEM\fR} ...
+Specifies an access list for a subscription's private values.
+The "default" access list is "@OWNER @SYSTEM".
+"@ACL" maps to the printer's requesting-user-name-allowed or requesting-user-name-denied values.
+"@OWNER" maps to the job's owner.
+"@SYSTEM" maps to the groups listed for the SystemGroup directive in the
+.BR cups-files.conf (5)
+file.
+.TP 5
+\fBSubscriptionPrivateValues all\fR
+.TP 5
+\fBSubscriptionPrivateValues default\fR
+.TP 5
+\fBSubscriptionPrivateValues none\fR
+.TP 5
+\fBSubscriptionPrivateValues \fIattribute-name \fR[ ... \fIattribute-name \fR]
+Specifies the list of subscription values to make private.
+The "default" values are "notify-events", "notify-pull-method", "notify-recipient-uri", "notify-subscriber-user-name", and "notify-user-data".
+.SH CONFORMING TO
+The \fBcupsd.conf\fR file format is based on the Apache HTTP Server configuration file format.
+.SH EXAMPLES
+Log everything with a maximum log file size of 32 megabytes:
+.nf
+
+    AccessLogLevel all
+    LogLevel debug2
+    MaxLogSize 32m
+
+.fi
+Require authentication for accesses from outside the 10. network:
+.nf
+
+    <Location />
+    Order allow,deny
+    Allow from 10./8
+    AuthType Basic
+    Require valid-user
+    Satisfy any
+    </Location>
+.fi
 .SH SEE ALSO
-\fIclasses.conf(5)\fR, \fIcups-files.conf(5)\fR, \fIcupsd(8)\fR,
-\fImime.convs(5)\fR, \fImime.types(5)\fR, \fIprinters.conf(5)\fR,
-\fIsubscriptions.conf(5)\fR,
-.br
-http://localhost:631/help
+.BR classes.conf (5),
+.BR cups-files.conf (5),
+.BR cupsd (8),
+.BR mime.convs (5),
+.BR mime.types (5),
+.BR printers.conf (5),
+.BR subscriptions.conf (5),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: cupsd.conf.man.in 12060 2014-07-28 14:04:41Z msweet $".
+.\" End of "$Id: cupsd.conf.man.in 12059 2014-07-28 14:04:32Z msweet $".
 .\"
index 6193de6b8f8bc08773919ee03e5be76442ae1349..f410d4bdf385d6ab9713624f4f8d0f057a30faeb 100644 (file)
 .\"
-.\" "$Id: cupsd.man.in 11109 2013-07-08 21:15:13Z msweet $"
+.\" "$Id: cupsd.man.in 12003 2014-07-08 15:29:14Z msweet $"
 .\"
-.\"   cupsd man page for CUPS.
+.\" cupsd man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH cupsd 8 "CUPS" "8 July 2013" "Apple Inc."
+.TH cupsd 8 "CUPS" "8 July 2014" "Apple Inc."
 .SH NAME
 cupsd \- cups scheduler
 .SH SYNOPSIS
 .B cupsd
-[ -c
+[
+.B \-c
 .I config-file
-] [ -f ] [ -F ] [ -h ] [ -l ] [ -t ]
+] [ 
+.B \-f
+] [
+.B \-F
+] [
+.B \-h
+] [
+.B -l
+] [
+.B -t
+]
 .SH DESCRIPTION
-\fIcupsd\fR is the scheduler for CUPS. It implements a printing system based
-upon the Internet Printing Protocol, version 2.1.  If no options are specified
-on the command-line then the default configuration file
-\fI/etc/cups/cupsd.conf\fR will be used.
+.B cupsd
+is the scheduler for CUPS. It implements a printing system based upon the Internet Printing Protocol, version 2.1. If no options are specified on the command-line then the default configuration file
+.I /etc/cups/cupsd.conf
+will be used.
 .SH OPTIONS
 .TP 5
--c config-file
-.br
+.BI \-c \ config-file
 Uses the named configuration file.
 .TP 5
--f
-.br
-Run \fIcupsd\fR in the foreground; the default is to run in the
-background as a "daemon".
+.B \-f
+Run
+.B cupsd
+in the foreground; the default is to run in the background as a "daemon".
 .TP 5
--F
-.br
-Run \fIcupsd\fR in the foreground but detach the process from the
-controlling terminal and current directory. This is useful for
-running \fIcupsd\fR from \fIinit(8)\fR.
+.B \-F
+Run
+.B cupsd
+in the foreground but detach the process from the controlling terminal and current directory. This is useful for running
+.B cupsd
+from
+.BR init (8).
 .TP 5
--h
-.br
+.B \-h
 Shows the program usage.
 .TP 5
--l
-.br
-This option is passed to \fIcupsd\fR when it is run from
-\fIlaunchd(8)\fR.
+.B \-l
+This option is passed to
+.B cupsd
+when it is run from
+.BR launchd (8)
+or
+.BR systemd (8).
 .TP 5
--t
-.br
+.B \-t
 Test the configuration file for syntax errors.
-.SH COMPATIBILITY
-\fIcupsd\fR implements all of the required IPP/2.1 attributes and
-operations. It also implements several CUPS-specific administration
-operations.
+.SH FILES
+.nf
+.I /etc/cups/classes.conf
+.I /etc/cups/cups-files.conf
+.I /etc/cups/cupsd.conf
+.I /usr/share/cups/mime/mime.convs
+.I /usr/share/cups/mime/mime.types
+.I /etc/cups/printers.conf
+.I /etc/cups/subscriptions.conf
+.fi
+.SH CONFORMING TO
+.B cupsd
+implements all of the required IPP/2.1 attributes and operations. It also implements several CUPS-specific administrative operations.
+.SH EXAMPLES
+Run
+.B cupsd
+in the background with the default configuration file:
+.nf
+
+    cupsd
+
+.fi
+Test a configuration file called
+.IR test.conf :
+.nf
+
+    cupsd \-t \-c test.conf
+
+.fi
+Run
+.B cupsd
+in the foreground with a test configuration file called
+.IR test.conf :
+.nf
+
+    cupsd \-f \-c test.conf
+
+.fi
 .SH SEE ALSO
-\fIbackend(7)\fR, \fIclasses.conf(5)\fR, \fIcups-deviced(8)\fR,
-\fIcups-driverd(8)\fR, \fIcups-lpd(8)\fR, \fIcups-polld(8)\fR,
-\fIcupsd.conf(5)\fR, \fIfilter(7)\fR, \fIlaunchd(8)\fR,
-\fImime.convs(5)\fR, \fImime.types(5)\fR, \fIprinters.conf(5)\fR,
-.br
-http://localhost:631/help
+.BR backend (7),
+.BR classes.conf (5),
+.BR cups (1),
+.BR cups-lpd (8),
+.BR cupsd.conf (5),
+.BR cupsd-helper (8),
+.BR cupsd-logs (8),
+.BR filter (7),
+.BR launchd (8),
+.BR mime.convs (5),
+.BR mime.types (5),
+.BR printers.conf (5),
+.BR systemd (8),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: cupsd.man.in 11109 2013-07-08 21:15:13Z msweet $".
+.\" End of "$Id: cupsd.man.in 12003 2014-07-08 15:29:14Z msweet $".
 .\"
index 00d23eb2c29af683601adfa3672ceac62e3a6efd..752ccbe49467e8388a1f5379ee108f5e08846d34 100644 (file)
 .\"
-.\" "$Id: cupsenable.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: cupsenable.man 11920 2014-06-11 19:03:59Z msweet $"
 .\"
-.\"   cupsenable/cupsdisable man page for CUPS.
+.\" cupsenable/cupsdisable man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH cupsenable 8 "CUPS" "9 October 2008" "Apple Inc."
+.TH cupsenable 8 "CUPS" "11 June 2014" "Apple Inc."
 .SH NAME
 cupsdisable, cupsenable \- stop/start printers and classes
 .SH SYNOPSIS
 .B cupsdisable
-[ -E ] [-U
+[
+.B \-E
+] [
+.B \-U
 .I username
-] [ -c ] [ -h
-.I server[:port]
-] [ -r
+] [
+.B \-c
+] [
+\fB\-h \fIserver\fR[\fB:\fIport\fR]
+] [
+.B \-r
 .I reason
-] [ --hold ] destination(s)
+] [
+.B \-\-hold
+]
+.I destination(s)
 .br
 .B cupsenable
-[ -E ] [-U
+[
+.B \-E
+] [
+.B \-U
 .I username
-] [ -c ] [ -h
-.I server[:port]
-] [ --release ] destination(s)
+] [
+.B \-c
+] [
+\fB\-h \fIserver\fR[\fB:\fIport\fR]
+] [
+.B \-\-release
+]
+.I destination(s)
 .SH DESCRIPTION
-\fIcupsenable\fR starts the named printers or classes.
-.LP
-\fIcupsdisable\fR stops the named printers or classes.  The
-following options may be used:
+.B cupsenable
+starts the named printers or classes while
+.B cupsdisable
+stops the named printers or classes.
+.SH OPTIONS
+The following options may be used:
 .TP 5
--E
-.br
+.B \-E
 Forces encryption of the connection to the server.
 .TP 5
--U username
-.br
+\fB\-U \fIusername\fR
 Uses the specified username when connecting to the server.
 .TP 5
--c
-.br
+.B \-c
 Cancels all jobs on the named destination.
 .TP 5
--h server[:port]
-.br
+\fB\-h \fIserver\fR[\fB:\fIport\fR]
 Uses the specified server and port.
 .TP 5
---hold
-.br
-Holds remaining jobs on the named printer.  Useful for allowing the current
-job to complete before performing maintenance.
+.B \-\-hold
+Holds remaining jobs on the named printer.
+Useful for allowing the current job to complete before performing maintenance.
 .TP 5
--r "reason"
-.br
-Sets the message associated with the stopped state. If no reason is specified
-then the message is set to "Reason Unknown".
+\fB\-r "\fIreason\fB"\fR
+Sets the message associated with the stopped state.
+If no reason is specified then the message is set to "Reason Unknown".
 .TP 5
---release
-.br
-Releases pending jobs for printing. Use after running \fIcupsdisable\fR with
-the \fI--hold\fR option to resume printing.
-.SH COMPATIBILITY
-Unlike the System V printing system, CUPS allows printer names to
-contain any printable character except SPACE, TAB, "/", or "#".
+.B \-\-release
+Releases pending jobs for printing.
+Use after running \fBcupsdisable\fR with the \fI\-\-hold\fR option to resume printing.
+.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.
 .LP
-The System V versions of these commands are \fIdisable\fR and
-\fIenable\fR. They have been renamed to avoid conflicts with the
-\fIbash(1)\fR build-in commands of the same name.
+The System V versions of these commands are \fBdisable\fR and \fBenable\fR, respectively.
+They have been renamed to avoid conflicts with the
+.BR bash (1)
+build-in commands of the same names.
 .LP
-The CUPS versions of \fIdisable\fR and \fIenable\fR may ask the
-user for an access password depending on the printing system
-configuration.  This differs from the System V versions which
-require the root user to execute these commands.
+The CUPS versions of \fBdisable\fR and \fBenable\fR may ask the user for an access password depending on the printing system configuration.
+This differs from the System V versions which require the root user to execute these commands.
 .SH SEE ALSO
-\fIcupsaccept(8)\fR, \fIcupsreject(8)\fR, \fIcancel(1)\fR, \fIlp(1)\fR,
-\fIlpadmin(8)\fR, \fIlpstat(1)\fR,
-.br
-http://localhost:631/help
+.BR cupsaccept (8),
+.BR cupsreject (8),
+.BR cancel (1),
+.BR lp (1),
+.BR lpadmin (8),
+.BR lpstat (1),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 
 .\"
-.\" End of "$Id: cupsenable.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: cupsenable.man 11920 2014-06-11 19:03:59Z msweet $".
 .\"
index 4370f8f1569d52edc5adb7c3a334faff6e8e2d9f..6e3f133689b5f356a838208b5e8ecf56b6b8cd6e 100644 (file)
@@ -1,5 +1,5 @@
 .\"
-.\" "$Id: cupsfilter.man 11772 2014-03-28 15:08:30Z msweet $"
+.\" "$Id: cupsfilter.man 11920 2014-06-11 19:03:59Z msweet $"
 .\"
 .\" cupsfilter man page for CUPS.
 .\"
 .\" which 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 cupsfilter 8 "CUPS" "28 March 2014" "Apple Inc."
+.TH cupsfilter 8 "CUPS" "11 June 2014" "Apple Inc."
 .SH NAME
 cupsfilter \- convert a file to another format using cups filters
 .SH SYNOPSIS
 .B cupsfilter
-[ -D ] [ -U
+[
+.B \-\-list\-filters
+] [
+.B \-D
+] [
+.B \-U
 .I user
-] [ -c
+] [
+.B \-c
 .I config-file
-] [ -d
+] [
+.B \-d
 .I printer
-] [ -e ] [ -i
+] [
+.B \-e
+] [
+.B \-i
 .I mime/type
-] [ -j
+] [
+.B \-j
 .I job-id[,N]
-] [ -m
+] [
+.B \-m
 .I mime/type
-] [ -n
+] [
+.B \-n
 .I copies
-] [ -o
+] [
+.B \-o
 .I name=value
-] [ -p
+] [
+.B \-p
 .I filename.ppd
-] [ -t
+] [
+.B \-t
 .I title
-] [ -u ]
+] [
+.B \-u
+]
 .I filename
 .SH DESCRIPTION
-\fIcupsfilter\fR is a front-end to the CUPS filter subsystem which allows you
-to convert a file to a specific format, just as if you had printed the file
-through CUPS. By default, \fIcupsfilter\fR generates a PDF file. The converted
-file is sent to the standard output.
+.B cupsfilter
+is a front-end to the CUPS filter subsystem which allows you to convert a file to a specific format, just as if you had printed the file through CUPS. By default,
+.B cupsfilter
+generates a PDF file. The converted file is sent to the standard output.
 .SH OPTIONS
 .TP 5
--D
-.br
+.B \-\-list\-filters
+Do not actually run the filters, just print the filters used to stdout.
+.TP 5
+.B \-D
 Delete the input file after conversion.
 .TP 5
--U user
-.br
+\fB\-U \fIuser\fR
 Specifies the username passed to the filters. The default is the name of the current user.
 .TP 5
--c config-file
-.br
+\fB\-c \fIconfig-file\fR
 Uses the named cups-files.conf configuration file.
 .TP 5
--d printer
+\fB\-d \fIprinter\fR
 Uses information from the named printer.
 .TP 5
--e
-.br
+.B \-e
 Use every filter from the PPD file.
 .TP 5
--i mime/type
-.br
-Specifies the source file type. The default file type is guessed using the
-filename and contents of the file.
+\fB\-i \fImime/type\fR
+Specifies the source file type. The default file type is guessed using the filename and contents of the file.
 .TP 5
--j job-id[,N]
-.br
-Converts document N from the specified job. If N is omitted, document 1 is
-converted.
+\fB\-j \fIjob-id[,N]\fR
+Converts document N from the specified job. If N is omitted, document 1 is converted.
 .TP 5
--m mime/type
-.br
-Specifies the destination file type. The default file type is application/pdf.
-Use printer/foo to convert to the printer format defined by the filters in the
-PPD file.
+\fB\-m \fImime/type\fR
+Specifies the destination file type. The default file type is application/pdf. Use printer/foo to convert to the printer format defined by the filters in the PPD file.
 .TP 5
--n copies
-.br
+\fB\-n \fIcopies\fR
 Specifies the number of copies to generate.
 .TP 5
--o name=value
-.br
+\fB\-o \fIname=value\fR
 Specifies options to pass to the CUPS filters.
 .TP 5
--p filename.ppd
-.br
+\fB\-p \fIfilename.ppd\fR
 Specifies the PPD file to use.
 .TP 5
--t title
-.br
+\fB\-t \fItitle\fR
 Specifies the document title.
 .TP 5
--u
-.br
+.B \-u
 Delete the PPD file after conversion.
+.SH EXIT STATUS
+.B cupsfilter
+returns a non-zero exit status on any error.
+.SH ENVIRONMENT
+All of the standard
+.BR cups (1)
+environment variables affect the operation of
+.BR cupsfilter .
+.SH FILES
+.nf
+/etc/cups/cups-files.conf
+/etc/cups/*.convs
+/etc/cups/*.types
+/usr/share/cups/mime/*.convs
+/usr/share/cups/mime/*.types
+.SH NOTES
+Unlike when printing, filters run using the
+.B cupsfilter
+command use the current user and security session. This may result in different output or unexpected behavior.
+.SH EXAMPLE
+The following command will generate a PDF preview of job 42 for a printer named "myprinter" and save it to a file named "preview.pdf":
+.nf
+
+    cupsfilter -m application/pdf -d myprinter -j 42 >preview.pdf
+.fi
 .SH SEE ALSO
-\fIcups-files.conf(5)\fR
-.br
-http://localhost:631/help
+.BR cups (1),
+.BR cupsd.conf (5),
+.BR filter(7),
+.BR mime.convs (7),
+.BR mime.types (7),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: cupsfilter.man 11772 2014-03-28 15:08:30Z msweet $".
+.\" End of "$Id: cupsfilter.man 11920 2014-06-11 19:03:59Z msweet $".
 .\"
index dfc255ac4066bacf38ee57a553e17b4b06234131..5b07afd0c4ce38ddda08516f65f155d905ee63be 100644 (file)
@@ -1,50 +1,51 @@
 .\"
-.\" "$Id: cupstestdsc.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: cupstestdsc.man 11920 2014-06-11 19:03:59Z msweet $"
 .\"
-.\"   cupstestdsc man page for CUPS.
+.\" cupstestdsc man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH cupstestdsc 1 "CUPS" "20 March 2006" "Apple Inc."
+.TH cupstestdsc 1 "CUPS" "11 June 2014" "Apple Inc."
 .SH NAME
-cupstestdsc \- test conformance of postscript files
+cupstestdsc \- test conformance of postscript files (deprecated)
 .SH SYNOPSIS
 .B cupstestdsc
-[ -h ] filename.ps [ ...
+[
+.B \-h
+]
+.I filename.ps
+[ ...
 .I filenameN.ps
 ]
 .br
 .B cupstestdsc
-[ -h ] -
+[
+.B \-h
+]
+.B \-
 .SH DESCRIPTION
-\fIcupstestdsc\fR tests the conformance of PostScript files to
-the Adobe PostScript Language Document Structuring Conventions
-Specification version 3.0. The results of testing and any other
-output are sent to the standard output. The second form of the
-command reads PostScript from the standard input.
-.SH LIMITATIONS
-\fIcupstestdsc\fR only validates the DSC comments in a PostScript
-file and does not attempt to validate the PostScript code itself.
-Developers must ensure that the PostScript they generate follows
-the rules defined by Adobe. Specifically, all pages must be
-independent of each other, code outside page descriptions may not
-affect the graphics state (current font, color, transform matrix,
-etc.), and device-specific commands such as setpagedevice should
-not be used.
+\fBcupstestdsc\fR tests the conformance of PostScript files to the Adobe PostScript Language Document Structuring Conventions Specification version 3.0.
+The results of testing and any other output are sent to the standard output.
+The second form of the command reads PostScript from the standard input.
+.SH NOTES
+\fIThis program is deprecated and will be removed in a future release of CUPS.\fR
+.LP
+\fBcupstestdsc\fR only validates the DSC comments in a PostScript file and does not attempt to validate the PostScript code itself.
+Developers must ensure that the PostScript they generate follows the rules defined by Adobe.
+Specifically, all pages must be independent of each other, code outside page descriptions may not affect the graphics state (current font, color, transform matrix, etc.), and device-specific commands such as setpagedevice should not be used.
 .SH SEE ALSO
-http://localhost:631/help
-.br
+CUPS Online Help (http://localhost:631/help),
 Adobe PostScript Language Document Structuring Conventions
 Specification, Version 3.0.
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: cupstestdsc.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: cupstestdsc.man 11920 2014-06-11 19:03:59Z msweet $".
 .\"
index 6f0eecead9fcc33cce639a3d3341fc373559d827..153a48c9cd0f77386f571c5b32f796f4b6c7b5d5 100644 (file)
 .\"
-.\" "$Id: cupstestppd.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: cupstestppd.man 11920 2014-06-11 19:03:59Z msweet $"
 .\"
-.\"   cupstestppd man page for CUPS.
+.\" cupstestppd man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH cupstestppd 1 "CUPS" "19 November 2009" "Apple Inc."
+.TH cupstestppd 1 "CUPS" "11 June 2014" "Apple Inc."
 .SH NAME
 cupstestppd \- test conformance of ppd files
 .SH SYNOPSIS
 .B cupstestppd
-[ -I
+[
+.B \-I
 .I category
-] [ -R
+] [
+.B \-R
 .I rootdir
-] [ -W
+] [
+.B \-W
 .I category
-] [ -q ] [-r] [ -v[v] ] filename.ppd[.gz] [ ... filenameN.ppd[.gz] ]
+] [
+.B \-q
+] [
+.B \-r
+] [
+\fB\-v\fR[\fBv\fR]
+]
+.I filename.ppd[.gz]
+[ ...
+.I filename.ppd[.gz]
+]
 .br
 .B cupstestppd
-[ -R
+[
+.B \-R
 .I rootdir
-] [ -W
+] [
+.B \-W
 .I category
-] [ -q ] [-r] [ -v[v] ] -
+] [
+.B \-q
+] [
+.B \-r
+] [
+\fB\-v\fR[\fBv\fR]
+]
+.B \-
 .SH DESCRIPTION
-\fIcupstestppd\fR tests the conformance of PPD files to the
-Adobe PostScript Printer Description file format specification
-version 4.3. It can also be used to list the supported options
-and available fonts in a PPD file. The results of testing and
-any other output are sent to the standard output.
+\fBcupstestppd\fR tests the conformance of PPD files to the Adobe PostScript Printer Description file format specification version 4.3.
+It can also be used to list the supported options and available fonts in a PPD file.
+The results of testing and any other output are sent to the standard output.
 .LP
-The first form of \fIcupstestppd\fR tests one or more PPD files
-on the command-line. The second form tests the PPD file provided
-on the standard input.
+The first form of \fBcupstestppd\fR tests one or more PPD files on the command-line.
+The second form tests the PPD file provided on the standard input.
 .SH OPTIONS
-\fIcupstestppd\fR supports the following options:
+\fBcupstestppd\fR supports the following options:
 .TP 5
--I filename
-.br
+\fB\-I filename\fR
 Ignores all PCFileName warnings.
 .TP 5
--I filters
-.br
+\fB\-I filters\fR
 Ignores all filter errors.
 .TP 5
--I profiles
-.br
+\fB\-I profiles\fR
 Ignores all profile errors.
 .TP 5
--R rootdir
-.br
-Specifies an alternate root directory for the filter, pre-filter,
-and other support file checks.
+\fB\-R \fIrootdir\fR
+Specifies an alternate root directory for the filter, pre-filter, and other support file checks.
 .TP 5
--W constraints
-.br
+\fB\-W constraints\fR
 Report all UIConstraint errors as warnings.
 .TP 5
--W defaults
-.br
+\fB\-W defaults\fR
 Except for size-related options, report all default option errors as warnings.
 .TP 5
--W filters
-.br
+\fB\-W filters\fR
 Report all filter errors as warnings.
 .TP 5
--W profiles
-.br
+\fB\-W profiles\fR
 Report all profile errors as warnings.
 .TP 5
--W sizes
-.br
+\fB\-W sizes\fR
 Report all media size errors as warnings.
 .TP 5
--W translations
-.br
+\fB\-W translations\fR
 Report all translation errors as warnings.
 .TP 5
--W all
-.br
+\fB\-W all\fR
 Report all of the previous errors as warnings.
 .TP 5
--W none
-.br
+\fB\-W none\fR
 Report all of the previous errors as errors.
 .TP 5
--q
-.br
+.B \-q
 Specifies that no information should be displayed.
 .TP 5
--r
-.br
-Relaxes the PPD conformance requirements so that common
-whitespace, control character, and formatting problems are not
-treated as hard errors.
+.B \-r
+Relaxes the PPD conformance requirements so that common whitespace, control character, and formatting problems are not treated as hard errors.
 .TP 5
--v
-.br
-Specifies that detailed conformance testing results should be
-displayed rather than the concise PASS/FAIL/ERROR status.
+.B \-v
+Specifies that detailed conformance testing results should be displayed rather than the concise PASS/FAIL/ERROR status.
 .TP 5
--vv
-.br
-Specifies that all information in the PPD file should be
-displayed in addition to the detailed conformance testing
-results.
+.B \-vv
+Specifies that all information in the PPD file should be displayed in addition to the detailed conformance testing results.
 .LP
 The \fI-q\fR, \fI-v\fR, and \fI-vv\fR options are mutually exclusive.
 .SH EXIT STATUS
-\fIcupstestppd\fR returns zero on success and non-zero on error. The
-error codes are as follows:
+\fBcupstestppd\fR returns zero on success and non-zero on error.
+The error codes are as follows:
 .TP 5
 1
-.br
 Bad command-line arguments or missing PPD filename.
 .TP 5
 2
-.br
 Unable to open or read PPD file.
 .TP 5
 3
-.br
 The PPD file contains format errors that cannot be skipped.
 .TP 5
 4
-.br
 The PPD file does not conform to the Adobe PPD specification.
 .SH EXAMPLES
-The following command will test all PPD files under the current
-directory and print the names of each file that does not
-conform:
+The following command will test all PPD files under the current directory and print the names of each file that does not conform:
 .nf
 
-    find . -name \\*.ppd \\! -exec cupstestppd -q '{}' \\; -print
+    find . \-name \\*.ppd \\! \-exec cupstestppd \-q '{}' \\; \-print
 
 .fi
-The next command tests all PPD files under the current directory
-and print detailed conformance testing results for the files
-that do not conform:
+The next command tests all PPD files under the current directory and print detailed conformance testing results for the files that do not conform:
 .nf
 
-    find . -name \\*.ppd \\! -exec cupstestppd -q '{}' \\; \\
-        -exec cupstestppd -v '{}' \\;
-
+    find . \-name \\*.ppd \\! \-exec cupstestppd \-q '{}' \\; \\
+        \-exec cupstestppd \-v '{}' \\;
 .fi
 .SH SEE ALSO
-\fIlpadmin(8)\fR,
-.br
-http://localhost:631/help
-.br
+.BR lpadmin (8),
+CUPS Online Help (http://localhost:631/help),
 Adobe PostScript Printer Description File Format Specification, Version 4.3.
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: cupstestppd.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: cupstestppd.man 11920 2014-06-11 19:03:59Z msweet $".
 .\"
index 29239eace498672c526838ae69987d5794f18420..46d0b12498d15dda34b5ae5febe5c606dc2d7ed4 100644 (file)
 .\"
-.\" "$Id: filter.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: filter.man 11793 2014-04-04 19:02:20Z msweet $"
 .\"
-.\"   filter man page for CUPS.
+.\" filter man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2007 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH filter 7 "CUPS" "18 May 2012" "Apple Inc."
+.TH filter 7 "CUPS" "4 April 2014" "Apple Inc."
 .SH NAME
 filter \- cups file conversion filter interface
 .SH SYNOPSIS
 .B filter
-job user title num-copies options [
+.I job
+.I user
+.I title
+.I num-copies
+.I options
+[
 .I filename
 ]
+.nf
+
+\fB#include <cups/cups.h>\fR
+
+\fBssize_t cupsBackChannelRead\fR(\fBchar *\fIbuffer\fR, \fBsize_t \fIbytes\fR,
+                            \fBdouble \fItimeout\fR);
+
+\fBcups_sc_status_t cupsSideChannelDoRequest\fR(\fBcups_sc_command_t \fIcommand\fR,
+                                          \fBchar *\fIdata\fR, \fBint *\fIdatalen\fR,
+                                          \fBdouble \fItimeout\fR);
+
+\fB#include <cups/ppd.h>\fR
+
+\fBconst char *cupsGetOption\fR(\fBconst char *\fIname\fR, \fBint \fInum_options\fR,
+                 \fBcups_option_t *\fIoptions\fR);
+
+\fBint cupsMarkOptions\fR(\fBppd_file_t *\fIppd\fR, \fBint \fInum_options\fR,
+                    \fBcups_option_t *\fIoptions\fR);
+
+\fBint cupsParseOptions\fR(\fBconst char *\fIarg\fR, \fBint \fInum_options\fR,
+                     \fBcups_option_t **\fIoptions\fR);
+
+\fBppd_choice_t *ppdFindMarkedChoice\fR(\fBppd_file_t *\fIppd\fR, \fBconst char *\fIkeyword\fR);
+
+\fBvoid ppdMarkDefaults\fR(\fBppd_file_t *\fIppd\fR);
+
+\fBppd_file_t *ppdOpenFile\fR(\fBconst char *\fIfilename\fR);
+.fi
 .SH DESCRIPTION
-The CUPS filter interface provides a standard method for adding support for
-new document types to CUPS. Each filter is capable of converting from one
-or more input formats to another format that can either be printed directly
-or piped into another filter to get it to a printable format.
+The CUPS filter interface provides a standard method for adding support for new document types or printers to CUPS.
+Each filter is capable of converting from one or more input formats to another format that can either be printed directly or piped into another filter to get it to a printable format.
 .LP
-Filters \fBmust\fR be capable of reading from a filename on the command-line
-or from the standard input, copying the standard input to a temporary
-file as required by the file format. All output \fBmust\fR be sent to the
-standard output.
+Filters \fBMUST\fR be capable of reading from a filename on the command-line or from the standard input, copying the standard input to a temporary file as required by the file format.
+All output \fBMUST\fR be sent to the standard output.
+Filters \fBMUST NOT\fR attempt to communicate directly with the printer, other processes, or other services.
 .LP
-The command name (argv[0]) is set to the name of the destination printer but is
-also available in the PRINTER environment variable.
-.SH WARNING
-CUPS filters are not meant to be run directly by the user. Aside from the legacy
-System V interface issues (argv[0] 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. Unless you are a developer and know what you are doing, please do not run
-filters directly. Instead, use the \fIcupsfilter(8)\fR program to use the
-appropriate filters to do the conversions you need.
+The command name (\fIargv[0]\fR) is set to the name of the destination printer but is also available in the \fBPRINTER\fI environment variable.
 .SH OPTIONS
-Options passed on the command-line typically do not include the default choices
-the printer's PPD file. In addition, some options may be specified in multiple
-ways - "landscape" is a synonym for "orientation-requested=4", "media" is a
-synonym for "PageSize", "PageRegion", "InputSlot", and "MediaType", and "sides"
-is a synonym for the various "Duplex" options. Non-raster filters \fBmust\fR
-support both explicit and implicit specification of PPD options - use the
-ppdMarkDefaults and cupsMarkOptions functions in the CUPS library to use the
-correct mapping, and ppdFindMarkedChoice to get the user-selected choice.
+Options are passed in \fIargv[5]\fR and are encoded from the corresponding IPP attributes used when the job was submitted. Use the
+.BR cupsParseOptions ()
+function to load the options into a \fBcups_option_t\fR array and the
+.BR cupsGetOption ()
+function to get the value of a specific attribute.
+Be careful to look for common aliases of IPP attributes such as "lansdscape" for the IPP "orientation-requested" attribute.
 .LP
-Raster filters should use option choices set through the raster page header, as
-those reflect the options in effect for a given page. Options specified on the
-command-line determine the default values for the entire job, which can be
-overridden on a per-page basis.
+Options passed on the command-line typically do not include the default choices the printer's PPD file. Use the
+.BR ppdMarkDefaults ()
+and
+.BR cupsMarkOptions ()
+functions in the CUPS library to apply the options to the PPD defaults and map any IPP attributes to the corresponding PPD options.
+Use
+.BR ppdFindMarkedChoice ()
+to get the user-selected choice for a PPD option. For example, a filter might use the following code to determine the current value of the \fBDuplex\fR PPD option:
+.nf
+
+    ppd_file_t *ppd = ppdOpenFile(getenv("PPD"));
+    cups_option_t *options = NULL;
+    int num_options = cupsParseOptions(argv[5], 0, &options);
+
+    ppdMarkDefaults(ppd);
+    cupsMarkOptions(ppd, num_options, options);
+
+    ppd_choice_t *choice = ppdFindMarkedChoice(ppd, "Duplex");
+.fi
+.LP
+Raster filters should use option choices set through the raster page header, as those reflect the options in effect for a given page.
+Options specified on the command-line determine the default values for the entire job, which can be overridden on a per-page basis.
 .SH LOG MESSAGES
-Messages sent to stderr are generally logged to
-printer-state-message attribute and the current \fIErrorLog\fR.
+Messages sent to the standard error are generally stored in the printer's "printer-state-message" attribute and the current \fBErrorLog\fR file.
 Each line begins with a standard prefix:
 .TP 5
-ALERT: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "alert" log level.
+\fBALERT: \fImessage\fR
+Sets the "printer-state-message" attribute and adds the specified message to the current \fBErrorLog\fR using the "alert" log level.
 .TP 5
-ATTR: attribute=value [attribute=value]
-.br
-Sets the named job or printer attribute(s). The following job attributes can be
-set: "job-media-progress". The following printer attributes can be set:
+\fBATTR: \fIattribute=value \fR[ \fI... attribute=value\fR]
+Sets the named job or printer attribute(s). The following job attributes can be set: "job-media-progress". The following printer attributes can be set:
 "auth-info-required", "marker-colors", "marker-high-levels", "marker-levels",
 "marker-low-levels", "marker-message", "marker-names", "marker-types",
 "printer-alert", and "printer-alert-description".
 .TP 5
-CRIT: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "critical" log level.
+\fBCRIT: \fImessage\fR
+Sets the "printer-state-message" attribute and adds the specified message to the current \fBErrorLog\fR using the "critical" log level.
 .TP 5
-DEBUG: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "debug" log level.
+\fBDEBUG: \fImessage\fR
+Adds the specified message to the current \fBErrorLog\fR using the "debug" log level.
+\fBDEBUG\fR messages are never stored in the "printer-state-message" attribute.
 .TP 5
-DEBUG2: message
+\fBDEBUG2: \fImessage\fR
 .br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "debug2" log level.
+Adds the specified message to the current \fBErrorLog\fR using the "debug2" log level.
+\fBDEBUG2\fR messages are never stored in the "printer-state-message" attribute.
 .TP 5
-EMERG: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "emergency" log level.
+\fBEMERG: \fImessage\fR
+Sets the "printer-state-message" attribute and adds the specified message to the current \fBErrorLog\fR using the "emergency" log level.
 .TP 5
-ERROR: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "error" log level.
+\fBERROR:\fI message\fR
+Sets the "printer-state-message" attribute and adds the specified message to the current \fBErrorLog\fR using the "error" log level.
 .TP 5
-INFO: message
-.br
-Sets the printer-state-message attribute. If the current \fILogLevel\fR
-is set to "debug2", also adds the specified message to the
-current \fIErrorLog\fR using the "info" log level.
+\fBINFO:\fI message\fR
+Sets the "printer-state-message" attribute. If the current \fBLogLevel\fR is set to "debug2", also adds the specified message to the current \fBErrorLog\fR using the "info" log level.
 .TP 5
-NOTICE: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "notice" log level.
+\fBNOTICE:\fI message\fR
+Sets the "printer-state-message" attribute and adds the specified message to the current \fBErrorLog\fR using the "notice" log level.
 .TP 5
-PAGE: page-number #-copies
+\fBPAGE:\fI page-number #-copies\fR
 .TP 5
-PAGE: total #-pages
-.br
-Adds an entry to the current \fIPageLog\fR. The first form adds
-#-copies to the job-media-sheets-completed attribute. The second
-form sets the job-media-sheets-completed attribute to #-pages.
+\fBPAGE:\fI total #-pages\fR
+Adds an entry to the current \fBPageLog\fR. The first form adds \fI#-copies\fR to the "job-media-sheets-completed" attribute. The second form sets the "job-media-sheets-completed" attribute to \fI#-pages\fR.
 .TP 5
-PPD: Keyword=Value ... KeywordN=Value
-.br
-Sets the named keywords in the printer's PPD file. This is typically
-used to update default option keywords such as DefaultPageSize and
-the various installable options in the PPD file.
+\fBPPD:\fI Keyword=Value\fR [ \fI... KeywordN=Value\fR ]
+Sets the named keywords in the printer's PPD file. This is typically used to update default option keywords such as \fBDefaultPageSize\fR and the various installable options in the PPD file.
 .TP 5
-STATE: printer-state-reason [printer-state-reason ...]
+\fBSTATE:\fI printer-state-reason \fR[ \fI... printer-state-reason\fR ]
 .TP 5
-STATE: + printer-state-reason [printer-state-reason ...]
+\fBSTATE: +\fI printer-state-reason \fR[ \fI... printer-state-reason\fR ]
 .TP 5
-STATE: - printer-state-reason [printer-state-reason ...]
-.br
-Sets, adds, or removes printer-state-reason keywords to the
-current queue. Typically this is used to indicate media, ink, and
-toner conditions on a printer.
+\fBSTATE: -\fI printer-state-reason \fR[ \fI... printer-state-reason\fR ]
+Sets, adds, or removes "printer-state-reason" keywords for the current queue. Typically this is used to indicate media, ink, and toner conditions on a printer.
 .TP 5
-WARNING: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "warning" log level.
+\fBWARNING:\fI message\fR
+Sets the "printer-state-message" attribute and adds the specified message to the current \fBErrorLog\fR using the "warning" log level.
 .SH ENVIRONMENT VARIABLES
 The following environment variables are defined by the CUPS
 server when executing the filter:
 .TP 5
-CHARSET
-.br
-The default text character set, typically utf-8.
+.B CHARSET
+The default text character set, typically "utf-8".
 .TP 5
-CLASS
-.br
-When a job is submitted to a printer class, contains the name of
-the destination printer class. Otherwise this environment
-variable will not be set.
+.B CLASS
+When a job is submitted to a printer class, contains the name of the destination printer class. Otherwise this environment variable will not be set.
 .TP 5
-CONTENT_TYPE
-.br
-The MIME type associated with the file (e.g.
-application/postscript).
+.B CONTENT_TYPE
+The MIME media type associated with the submitted job file, for example "application/postscript".
 .TP 5
-CUPS_CACHEDIR
-.br
-The directory for semi-persistent cache files can be found.
+.B CUPS_CACHEDIR
+The directory where semi-persistent cache files can be found and stored.
 .TP 5
-CUPS_DATADIR
-.br
+.B CUPS_DATADIR
 The directory where data files can be found.
 .TP 5
-CUPS_FILETYPE
-.br
+.B CUPS_FILETYPE
 The type of file being printed: "job-sheet" for a banner page and "document"
 for a regular print file.
 .TP 5
-CUPS_MAX_MESSAGE
-.br
-The maximum size of a message sent to stderr, including any leading prefix and
-the trailing newline.
+.B CUPS_MAX_MESSAGE
+The maximum size of a message sent to \fIstderr\fR, including any leading prefix and the trailing newline.
 .TP 5
-CUPS_SERVERROOT
-.br
+.B CUPS_SERVERROOT
 The root directory of the server.
 .TP 5
-DEVICE_URI
-.br
-The device-uri associated with the printer.
-.TP 5
-FINAL_CONTENT_TYPE
-.br
-The MIME type associated with the printer (e.g.
-application/vnd.cups-postscript).
+.B FINAL_CONTENT_TYPE
+The MIME media type associated with the output destined for the printer, for example "application/vnd.cups-postscript".
 .TP 5
-LANG
-.br
+.B LANG
 The default language locale (typically C or en).
 .TP 5
-PATH
-.br
-The standard execution path for external programs that may be run by
-the filter.
+.B PATH
+The standard execution path for external programs that may be run by the filter.
 .TP 5
-PPD
-.br
-The full pathname of the PostScript Printer Description (PPD)
-file for this printer.
+.B PPD
+The full pathname of the PostScript Printer Description (PPD) file for this printer.
 .TP 5
-PRINTER
-.br
+.B PRINTER
 The name of the printer.
 .TP 5
-RIP_CACHE
-.br
-The recommended amount of memory to use for Raster Image
-Processors (RIPs).
+.B RIP_CACHE
+The recommended amount of memory to use for Raster Image Processors (RIPs).
 .TP 5
-SOFTWARE
-.br
-The name and version number of the server (typically CUPS/1.2).
+.B SOFTWARE
+The name and version number of the server (typically CUPS/\fImajor.minor\fR).
 .TP 5
-TZ
-.br
+.B TZ
 The timezone of the server.
 .TP 5
-USER
-.br
-The user executing the filter, typically "lp" or "root"; consult the
-\fIcupsd.conf(5)\fR file for the current setting.
-.SH COMPATIBILITY
+.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.
+.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.
+Unless you are a developer and know what you are doing, please do not run filters directly.
+Instead, use the
+.BR cupsfilter (8)
+program to use the appropriate filters to do the conversions you need.
 .SH SEE ALSO
-\fIbackend(7)\fR, \fIcupsd(8)\fR, \fIcupsfilter(8)\fR,
+.BR backend (7),
+.BR cups (1),
+.BR cups-files.conf (5),
+.BR cupsd (8),
+.BR cupsfilter (8),
 .br
-http://localhost:631/help
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: filter.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: filter.man 11793 2014-04-04 19:02:20Z msweet $".
 .\"
index ec2b5ce5593830f36b408c31376582fc38ab637f..c9f6c1328ce49b0d62bdf5d3bd89ac8b86703479 100644 (file)
@@ -1,69 +1,44 @@
 .\"
-.\" "$Id: ippfind.man 11027 2013-06-07 01:45:14Z msweet $"
+.\" "$Id: ippfind.man 11938 2014-06-22 12:44:05Z msweet $"
 .\"
-.\"   ippfind man page for CUPS.
+.\" ippfind man page for CUPS.
 .\"
-.\"   Copyright 2013 by Apple Inc.
+.\" Copyright 2013-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/".
+.\" These coded instructions, statements, and computer programs 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 ippfind 1 "CUPS" "6 June 2013" "Apple Inc."
+.TH ippfind 1 "CUPS" "11 June 2014" "Apple Inc."
 .SH NAME
-ippfind - find internet printing protocol printers
+ippfind \- find internet printing protocol printers
 .SH SYNOPSIS
 .B ippfind
 [
 .I options
-] regtype[,subtype][.domain.] ... [
-.I expression ...
-]
+] \fIregtype\fR[\fB,\fIsubtype\fR][\fB.\fIdomain\fB.\fR] ... [
+.I expression
+ ... ]
+.br
 .B ippfind
 [
 .I options
-] name[.regtype[.domain.]] ... [
-.I expression ...
-]
+] \fIname\fR[\fB.\fIregtype\fR[\fB.\fIdomain\fB.\fR]] ... [
+.I expression
+ ... ]
+.br
 .B ippfind
---help
+.B \-\-help
+.br
 .B ippfind
---version
-.SH OPTIONS
-.TP 5
---help
-Show program help
-.TP 5
---version
-Show program version
-.TP 5
--4
-Use IPv4 when listing
-.TP 5
--6
-Use IPv6 when listing
-.TP 5
--T seconds
-Specify find timeout in seconds. If 1 or less, \fIippfind\fR stops as soon as it thinks it has found everything. The default is 1 second.
-.TP 5
--V version
-Specifies the IPP version when listing. Supported values are 1.1, 2.0, 2.1, and 2.2.
-
+.B \-\-version
 .SH DESCRIPTION
-\fIippfind\fR finds services registered with a DNS server or available through local devices. Its primary purpose is to find IPP printers and show their URIs, show their current status, or run commands. For example, to show the status of all registered IPP printers on your network, run:
-.nf
-    ippfind --ls
-.fi
-Similarly, to send a PostScript test page to every PostScript printer, run:
-.nf
-    ippfind --txt-pdl application/postscript --exec ipptool \\
-        -f onepage-letter.ps '{}' print-job.test \\;
-.fi
-
-.SH REGISTRATION TYPES
-\fIippfind\fR supports the following registration types:
+\fBippfind\fR finds services registered with a DNS server or available through local devices.
+Its primary purpose is to find IPP printers and show their URIs, show their current status, or run commands.
+.SS REGISTRATION TYPES
+\fBippfind\fR supports the following registration types:
 .TP 5
 _http._tcp
 HyperText Transport Protocol (HTTP, RFC 2616)
@@ -79,169 +54,208 @@ Secure Internet Printing Protocol (IPPS, draft)
 .TP 5
 _printer._tcp
 Line Printer Daemon (LPD, RFC 1179)
-
-.SH EXPRESSIONS
-\fIippfind\fR supports expressions much like the \fIfind(1)\fR utility. However, unlike \fIfind\fR, \fIippfind\fR uses POSIX regular expressions instead of shell filename matching patterns. If --exec, -l, --ls, -p, --print, --print-name, -q, --quiet, -s, or -x is not specified, \fIippfind\fR adds --print to print the service URI of anything it finds. The following expressions are supported:
-.TP 5
--d regex
-.TP 5
---domain regex
+.SS EXPRESSIONS
+\fBippfind\fR supports expressions much like the
+.BR find (1)
+utility.
+However, unlike
+.BR find (1),
+\fBippfind\fR uses POSIX regular expressions instead of shell filename matching patterns.
+If \fI\-\-exec\fR, \fI\-l\fR, \fI\-\-ls\fR, \fI\-p\fR, \fI\-\-print\fR, \fI\-\-print\-name\fR, \fI\-q\fR, \fI\-\-quiet\fR, \fI\-s\fR, or \fI\-x\fR is not specified, \fBippfind\fR adds \fI\-\-print\fR to print the service URI of anything it finds.
+The following expressions are supported:
+.TP 5
+\fB\-d \fIregex\fR
+.TP 5
+\fB\-\-domain \fIregex\fR
 True if the domain matches the given regular expression.
 .TP 5
---false
+.B \-\-false
 Always false.
 .TP 5
--h regex
+\fB\-h \fIregex\fR
 .TP 5
---host regex
+\fB\-\-host \fIregex\fR
 True is the hostname matches the given regular expression.
 .TP 5
--l
+.B \-l
 .TP 5
---ls
-Lists attributes returned by Get-Printer-Attributes for IPP printers and traditional \fIfind\fR "-ls" output for HTTP URLs. The result is true if the URI is accessible, false otherwise.
+.B \-\-ls
+Lists attributes returned by Get-Printer-Attributes for IPP printers and traditional \fIfind\fR "-ls" output for HTTP URLs.
+The result is true if the URI is accessible, false otherwise.
 .TP 5
---local
+.B \-\-local
 True if the service is local to this computer.
 .TP 5
--n regex
+\fB\-n \fIregex\fR
 .TP 5
---name regex
+\fB\-\-name \fIregex\fR
 True if the service instance name matches the given regular expression.
 .TP 5
---path regex
+\fB\-\-path \fIregex\fR
 True if the URI resource path matches the given regular expression.
 .TP 5
--P number[-number]
+\fB\-P \fInumber\fR[\fB-\fInumber\fR]
 .TP 5
---port number[-number]
+\fB\-\-port \fInumber\fR[\fB-\fInumber\fR]
 True if the port matches the given number or range.
 .TP 5
--p
+.B \-p
 .TP 5
---print
-Prints the URI if the result of previous expressions is true. The result is always true.
+.B \-\-print
+Prints the URI if the result of previous expressions is true.
+The result is always true.
 .TP 5
--q
+.B \-q
 .TP 5
---quiet
+.B \-\-quiet
 Quiet mode - just returns the exit codes below.
 .TP 5
--r
+.B \-r
 .TP 5
---remote
+.B \-\-remote
 True if the service is not local to this computer.
 .TP 5
--s
+.B \-s
 .TP 5
---print-name
-Prints the service instance name if the result of previous expressions is true. The result is always true.
+.B \-\-print\-name
+Prints the service instance name if the result of previous expressions is true.
+The result is always true.
 .TP 5
---true
+.B \-\-true
 Always true.
 .TP 5
--t key
+\fB\-t \fIkey\fR
 .TP 5
---txt key
+\fB\-\-txt \fIkey\fR
 True if the TXT record contains the named key.
 .TP 5
---txt-\fIkey\fR regex
-True if the TXT record contains the named key and matches the given regular
-expression.
+\fB\-\-txt\-\fIkey regex\fR
+True if the TXT record contains the named key and matches the given regular expression.
 .TP 5
--u regex
+\fB\-u \fIregex\fR
 .TP 5
---uri regex
+\fB\-\-uri \fIregex\fR
 True if the URI matches the given regular expression.
 .TP 5
--x utility [argument ...] ;
+\fB\-x \fIutility \fR[ \fIargument \fR... ] \fB;\fR
 .TP 5
---exec utility [argument ...] ;
-Executes the specified program if the current result is true. "{foo}" arguments are replaced with the corresponding value - see SUBSTITUTIONS below.
+\fB\-\-exec \fIutility \fR[ \fIargument \fR... ] \fB;\fR
+Executes the specified program if the current result is true.
+"{foo}" arguments are replaced with the corresponding value - see SUBSTITUTIONS below.
 .PP
 Expressions may also contain modifiers:
 .TP 5
-( expression )
+\fB( \fIexpression \fB)\fR
 Group the result of expressions.
 .TP 5
-! expression
+\fB! \fIexpression\fR
 .TP 5
---not expression
+\fB\-\-not \fIexpression\fR
 Unary NOT of the expression.
 .TP 5
-expression expression
+\fIexpression expression\fR
 .TP 5
-expression --and expression
+\fIexpression \fB\-\-and \fIexpression\fR
 Logical AND of expressions.
 .TP 5
-expression --or expression
+\fIexpression \fB\-\-or \fIexpression\fR
 Logical OR of expressions.
-
-.SH SUBSTITUTIONS
-The substitutions for "{foo}" in -e and --exec are:
+.SS SUBSTITUTIONS
+The substitutions for "{foo}" in \fI\-e\fR and \fI\-\-exec\fR are:
 .TP 5
-{}
-URI
-.TP 5
-{service_domain}
+.B {service_domain}
 Domain name, e.g., "example.com.", "local.", etc.
 .TP 5
-{service_hostname}
+.B {service_hostname}
 Fully-qualified domain name, e.g., "printer.example.com.", "printer.local.", etc.
 .TP 5
-{service_name}
+.B {service_name}
 Service instance name, e.g., "My Fine Printer".
 .TP 5
-{service_port}
+.B {service_port}
 Port number for server, typically 631 for IPP and 80 for HTTP.
 .TP 5
-{service_regtype}
+.B {service_regtype}
 DNS-SD registration type, e.g., "_ipp._tcp", "_http._tcp", etc.
 .TP 5
-{service_scheme}
+.B {service_scheme}
 URI scheme for DNS-SD registration type, e.g., "ipp", "http", etc.
 .TP 5
-{service_uri}
+.B {}
+.TP 5
+.B {service_uri}
 URI for service, e.g., "ipp://printer.local./ipp/print", "http://printer.local./", etc.
 .TP 5
-{txt_\fIkey\fR}
+\fB{txt_\fIkey\fB}\fR
 Value of TXT record \fIkey\fR (lowercase).
-
-.SH ENVIRONMENT VARIABLES
-When executing a program, \fIippfind\fR sets the following environment variables for the matching service registration:
+.SH OPTIONS
+\fBippfind\fR supports the following options:
+.TP 5
+.B \-\-help
+Show program help.
+.TP 5
+.B \-\-version
+Show program version.
+.TP 5
+.B \-4
+Use IPv4 when listing.
+.TP 5
+.B \-6
+Use IPv6 when listing.
+.TP 5
+\fB\-T \fIseconds\fR
+Specify find timeout in seconds.
+If 1 or less, \fBippfind\fR stops as soon as it thinks it has found everything.
+The default timeout is 1 second.
 .TP 5
-IPPFIND_SERVICE_DOMAIN
+\fB\-V \fIversion\fR
+Specifies the IPP version when listing.
+Supported values are "1.1", "2.0", "2.1", and "2.2".
+.SH EXIT STATUS
+\fBippfind\fR returns 0 if the result for all processed expressions is true, 1 if the result of any processed expression is false, 2 if browsing or any query or resolution failed, 3 if an undefined option or invalid expression was specified, and 4 if it ran out of memory.
+.SH ENVIRONMENT
+When executing a program, \fBippfind\fR sets the following environment variables for the matching service registration:
+.TP 5
+.B IPPFIND_SERVICE_DOMAIN
 Domain name, e.g., "example.com.", "local.", etc.
 .TP 5
-IPPFIND_SERVICE_HOSTNAME
+.B IPPFIND_SERVICE_HOSTNAME
 Fully-qualified domain name, e.g., "printer.example.com.", "printer.local.", etc.
 .TP 5
-IPPFIND_SERVICE_NAME
+.B IPPFIND_SERVICE_NAME
 Service instance name, e.g., "My Fine Printer".
 .TP 5
-IPPFIND_SERVICE_PORT
+.B IPPFIND_SERVICE_PORT
 Port number for server, typically 631 for IPP and 80 for HTTP.
 .TP 5
-IPPFIND_SERVICE_REGTYPE
+.B IPPFIND_SERVICE_REGTYPE
 DNS-SD registration type, e.g., "_ipp._tcp", "_http._tcp", etc.
 .TP 5
-IPPFIND_SERVICE_SCHEME
+.B IPPFIND_SERVICE_SCHEME
 URI scheme for DNS-SD registration type, e.g., "ipp", "http", etc.
 .TP 5
-IPPFIND_SERVICE_URI
+.B IPPFIND_SERVICE_URI
 URI for service, e.g., "ipp://printer.local./ipp/print", "http://printer.local./", etc.
 .TP 5
-IPPFIND_TXT_\fIKEY\fR
+.B IPPFIND_TXT_\fIKEY\fR
 Values of TXT record \fIKEY\fR (uppercase).
+.SH EXAMPLES
+To show the status of all registered IPP printers on your network, run:
+.nf
 
-.SH EXIT CODES
-\fIippfind\fR returns 0 if the result for all processed expressions is true, 1 if the result of any processed expression is false, 2 if browsing or any query or resolution failed, 3 if an undefined option or invalid expression was specified, and 4 if it ran out of memory.
+    ippfind \-\-ls
 
-.SH SEE ALSO
-\fIipptool(1)\fR
+.fi
+Similarly, to send a PostScript test page to every PostScript printer, run:
+.nf
 
+    ippfind \-\-txt\-pdl application/postscript \-\-exec ipptool
+      \-f onepage\-letter.ps '{}' print\-job.test \\;
+.fi
+.SH SEE ALSO
+.BR ipptool (1)
 .SH COPYRIGHT
-Copyright 2013 by Apple Inc.
+Copyright \[co] 2013-2014 by Apple Inc.
 .\"
-.\" End of "$Id: ippfind.man 11027 2013-06-07 01:45:14Z msweet $".
+.\" End of "$Id: ippfind.man 11938 2014-06-22 12:44:05Z msweet $".
 .\"
index 5949d06f978a0df1b22ed1bfdf96314fed8eae8d..f88a0c1ad5b439fafb75b6947d4476bf74df4121 100644 (file)
@@ -1,5 +1,5 @@
 .\"
-.\" "$Id: ipptool.man 11642 2014-02-27 15:57:59Z msweet $"
+.\" "$Id: ipptool.man 11880 2014-05-16 06:14:11Z msweet $"
 .\"
 .\" ipptool man page for CUPS.
 .\"
 .\" which should have been included with this file.  If this file is
 .\" file is missing or damaged, see the license at "http://www.cups.org/".
 .\"
-.TH ipptool 1 "CUPS" "20 February 2014" "Apple Inc."
+.TH ipptool 1 "CUPS" "15 May 2014" "Apple Inc."
 .SH NAME
-ipptool - perform internet printing protocol requests
+ipptool \- perform internet printing protocol requests
 .SH SYNOPSIS
 .B ipptool
-[ --help ] [ --stop-after-include-error ] [ --version ]
-[ -4 ] [ -6 ] [ -C ] [ -E ] [ -I ] [ -L ] [ -S ] [ -T
+[
+.B \-\-help
+] [
+.B \-\-stop\-after\-include\-error
+] [
+.B \-\-version
+] [
+.B \-4
+] [
+.B \-6
+] [
+.B \-C
+] [
+.B \-E
+] [
+.B \-I
+] [
+.B \-L
+] [
+.B \-P
+.I filename.plist
+] [
+.B \-S
+] [
+.B \-T
 .I seconds
-] [ -V
+] [
+.B \-V
 .I version
-] [ -X ] [ -c ] [ -d
+] [
+.B \-X
+] [
+.B \-c
+] [
+.B \-d
 .I name=value
-] [ -f
+] [
+.B \-f
 .I filename
-] [ -i
+] [
+.B \-i
 .I seconds
-] [ -n
+] [
+.B \-n
 .I repeat-count
-] [ -q ] [ -t ] [ -v ]
-.I URI
-.I filename
-[
-.I ... filenameN
+] [
+.B \-q
+] [
+.B \-t
+] [
+.B \-v ]
+.I printer-uri
+.I testfile
+[ ...
+.I testfile
 ]
 .SH DESCRIPTION
-\fIipptool\fR sends IPP requests to the specified URI and tests and/or displays the results. Each named file defines one or more requests, including the expected response status, attributes, and values. Output is either a plain text, formatted text, CSV, or XML report on the standard output, with a non-zero exit status indicating that one or more tests have failed. The file format is described in \fIipptoolfile(5)\fR.
+.B ipptool
+sends IPP requests to the specified
+.I printer-uri
+and tests and/or displays the results. Each named
+.I testfile
+defines one or more requests, including the expected response status, attributes, and values. Output is either a plain text, formatted text, CSV, or XML report on the standard output, with a non-zero exit status indicating that one or more tests have failed. The
+.I testfile
+format is described in
+.BR ipptoolfile (5).
 .SH OPTIONS
-The following options are recognized by \fIipptool\fR:
+The following options are recognized by
+.B ipptool:
 .TP 5
---help
+.B \-\-help
 Shows program help.
 .TP 5
---stop-after-include-error
-Tells \fIipptool\fR to stop if an error occurs in an included file. Normally \fIipptool\fR will continue with subsequent tests after the INCLUDE directive.
+.B \-\-stop-after-include-error
+Tells
+.B ipptool
+to stop if an error occurs in an included file. Normally
+.B ipptool
+will continue with subsequent tests after the INCLUDE directive.
 .TP 5
---version
-Shows the version of \fIipptool\fR being used.
+.B \-\-version
+Shows the version of
+.B ipptool
+being used.
 .TP 5
--4
-Specifies that \fIipptool\fR must connect to the printer or server using IPv4.
+.B \-4
+Specifies that
+.B ipptool
+must connect to the printer or server using IPv4.
 .TP 5
--6
-Specifies that \fIipptool\fR must connect to the printer or server using IPv6.
+.B \-6
+Specifies that
+.B ipptool
+must connect to the printer or server using IPv6.
 .TP 5
--C
-Specifies that requests should be sent using the HTTP/1.1 "Transfer-Encoding: chunked" header, which is required for conformance by all versions of IPP. The default is to use "Transfer-Encoding: chunked" for requests with attached files and "Content-Length:" for requests without attached files.
+.B \-C
+Specifies that requests should be sent using the HTTP/1.1 "Transfer\-Encoding: chunked" header, which is required for conformance by all versions of IPP. The default is to use "Transfer\-Encoding: chunked" for requests with attached files and "Content\-Length:" for requests without attached files.
 .TP 5
--E
+.B \-E
 Forces TLS encryption when connecting to the server using the HTTP "Upgrade" header.
 .TP 5
--I
-Specifies that \fIipptool\fR will continue past errors.
+.B \-I
+Specifies that
+.B ipptool
+will continue past errors.
 .TP 5
--L
-Specifies that requests should be sent using the HTTP/1.0 "Content-Length:" header, which is required for conformance by all versions of IPP. The default is to use "Transfer-Encoding: chunked" for requests with attached files and "Content-Length:" for requests without attached files.
+.B \-L
+Specifies that requests should be sent using the HTTP/1.0 "Content\-Length:" header, which is required for conformance by all versions of IPP. The default is to use "Transfer\-Encoding: chunked" for requests with attached files and "Content\-Length:" for requests without attached files.
 .TP 5
--S
-Forces (dedicated) SSL encryption when connecting to the server.
+.BI \-P \ filename.plist
+Specifies that the test results should be written to the named XML (Apple plist) file in addition to the plain text report. This option is incompatible with the \fB\-i\fR (interval) and \fB\-n\fR (repeat\-count) options.
 .TP 5
--T seconds
+.B \-S
+Forces (dedicated) TLS encryption when connecting to the server.
+.TP 5
+.BI \-T \ seconds
 Specifies a timeout for IPP requests in seconds.
 .TP 5
--V version
+.BI \-V \ version
 Specifies the default IPP version to use: 1.0, 1.1, 2.0, 2.1, or 2.2. If not specified, version 1.1 is used.
 .TP 5
--X
-Specifies that XML (Apple plist) output is desired instead of the plain text report. This option is incompatible with the \fI-i\fR (interval) and \fI-n\fR (repeat-count) options.
+.B \-X
+Specifies that XML (Apple plist) output is desired instead of the plain text report. This option is incompatible with the \fB\-i\fR (interval) and \fB\-n\fR (repeat\-count) options.
 .TP 5
--c
-Specifies that CSV (comma-separated values) output is desired instead of the plain text output.
+.B \-c
+Specifies that CSV (comma\-separated values) output is desired instead of the plain text output.
 .TP 5
--d name=value
+.BI \-d \ name=value
 Defines the named variable.
 .TP 5
--f filename
+.BI \-f \ filename
 Defines the default request filename for tests.
 .TP 5
--i seconds
-Specifies that the (last) file should be repeated at the specified interval. This option is incompatible with the \fI-X\fR (XML plist output) option.
+.BI \-i \ seconds
+Specifies that the (last)
+.I testfile
+should be repeated at the specified interval. This option is incompatible with the \fB\-X\fR (XML plist output) option.
 .TP 5
--l
+.B \-l
 Specifies that plain text output is desired.
 .TP 5
--n repeat-count
-Specifies that the (last) file should be repeated the specified number of times. This option is incompatible with the \fI-X\fR (XML plist output) option.
+.BI \-n \ repeat\-count
+Specifies that the (last)
+.I testfile
+should be repeated the specified number of times. This option is incompatible with the \fI\-X\fR (XML plist output) option.
 .TP 5
--t
+.B \-t
 Specifies that CUPS test report output is desired instead of the plain text output.
 .TP 5
--v
-Specifies that all request and response attributes should be output in CUPS test mode (\fI-t\fR). This is the default for XML output.
-.SH EXIT CODE
-The \fIipptool\fR program returns 0 if all tests were sucessful and 1 otherwise.
-.SH COMPATIBILITY
-The \fIipptool\fR program is unique to CUPS.
+.B \-v
+Specifies that all request and response attributes should be output in CUPS test mode (\fB\-t\fR). This is the default for XML output.
+.SH EXIT STATUS
+The
+.B ipptool
+program returns 0 if all tests were sucessful and 1 otherwise.
+.SH FILES
+The following standard files are available:
+.nf
+.I color.jpg
+.I create\-printer\-subscription.test
+.I document\-a4.pdf
+.I document\-a4.ps
+.I document\-letter.pdf
+.I document\-letter.ps
+.I get\-completed\-jobs.test
+.I get\-jobs.test
+.I get\-notifications.test
+.I get\-printer\-attributes.test
+.I get\-subscriptions.test
+.I gray.jpg
+.I ipp\-1.1.test
+.I ipp\-2.0.test
+.I ipp\-2.1.test
+.I ipp\-2.2.test
+.I ipp\-everywhere.test
+.I onepage\-a4.pdf
+.I onepage\-a4.ps
+.I onepage\-letter.pdf
+.I onepage\-letter.ps
+.I print\-job.test
+.I print\-job\-deflate.test
+.I print\-job\-gzip.test
+.I testfile.jpg
+.I testfile.pcl
+.I testfile.pdf
+.I testfile.ps
+.I testfile.txt
+.I validate\-job.test
+.fi
+.SH CONFORMING TO
+The
+.B ipptool
+program is unique to CUPS and conforms to the Internet Printing Protocol up to version 2.2.
 .SH EXAMPLES
 Get a list of completed jobs for "myprinter":
 .nf
-    ipptool ipp://localhost/printers/myprinter get-completed-jobs.test
+
+    ipptool ipp://localhost/printers/myprinter get\-completed\-jobs.test
 .fi
 .LP
 Send email notifications to "user@example.com" when "myprinter" changes:
 .nf
-    ipptool -d recipient=mailto:user@example.com \
-        ipp://localhost/printers/myprinter create-printer-subscription.test
-.fi
-.SH STANDARD FILES
-The following standard files are available:
-.nf
-    color.jpg
-    create-printer-subscription.test
-    document-a4.pdf
-    document-a4.ps
-    document-letter.pdf
-    document-letter.ps
-    get-completed-jobs.test
-    get-jobs.test
-    get-notifications.test
-    get-printer-attributes.test
-    get-subscriptions.test
-    gray.jpg
-    ipp-1.1.test
-    ipp-2.0.test
-    ipp-2.1.test
-    ipp-2.2.test
-    ipp-everywhere.test
-    onepage-a4.pdf
-    onepage-a4.ps
-    onepage-letter.pdf
-    onepage-letter.ps
-    print-job.test
-    print-job-deflate.test
-    print-job-gzip.test
-    testfile.jpg
-    testfile.pcl
-    testfile.pdf
-    testfile.ps
-    testfile.txt
-    validate-job.test
+
+    ipptool \-d recipient=mailto:user@example.com \\
+        ipp://localhost/printers/myprinter create\-printer\-subscription.test
 .fi
 .SH SEE ALSO
-\fIipptoolfile(5)\fR, RFC 2911,
-.br
-http://localhost:631/help
-.br
-http://www.iana.org/assignments/ipp-registrations
-.br
-http://www.pwg.org/ipp
+.BR ipptoolfile (5),
+CUPS Online Help (http://localhost:631/help),
+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 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: ipptool.man 11642 2014-02-27 15:57:59Z msweet $".
+.\" End of "$Id: ipptool.man 11880 2014-05-16 06:14:11Z msweet $".
 .\"
index 3a15490090f5168e9def296f714165891e662ac4..2021184d2f3db4398bca517ebf499597ffcf1749 100644 (file)
@@ -1,5 +1,5 @@
 .\"
-.\" "$Id: ipptoolfile.man 11734 2014-03-25 18:01:47Z msweet $"
+.\" "$Id: ipptoolfile.man 11880 2014-05-16 06:14:11Z msweet $"
 .\"
 .\" ipptoolfile man page for CUPS.
 .\"
 .\" which 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 ipptoolfile 5 "CUPS" "25 March 2014" "Apple Inc."
+.TH ipptoolfile 5 "CUPS" "15 May 2014" "Apple Inc."
 .SH NAME
 ipptoolfile \- ipptool file format
-
 .SH DESCRIPTION
-The \fIipptool(1)\fR program accepts free-form plain text files that describe one or more IPP requests. Comments start with the "#" character and continue to the end of the line. Each request is enclosed by curly braces, for example:
+The
+.BR ipptool (1)
+program accepts free-form plain text files that describe one or more IPP requests. Comments start with the "#" character and continue to the end of the line. Each request is enclosed by curly braces, for example:
 .nf
 
     # This is a comment
     {
       # The name of the test
-      NAME "Print PostScript Job"
+      NAME "Print PostScript File"
 
       # The request to send
-      OPERATION Print-Job
-      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
+      OPERATION Print\-Job
+      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
       FILE testfile.ps
 
       # The response to expect
-      STATUS successful-ok
-      EXPECT attributes-charset OF-TYPE charset
-      EXPECT attributes-natural-language OF-TYPE naturalLanguage
-      EXPECT job-id OF-TYPE integer
-      EXPECT job-uri OF-TYPE uri
+      STATUS successful\-ok
+      EXPECT job\-id OF\-TYPE integer WITH\-VALUE >0
+      EXPECT job\-uri OF\-TYPE uri
     }
     {
       # The name of the test
       NAME "Get Attributes of PostScript Job"
 
       # The request to send
-      OPERATION Get-Job-Attributes
-      GROUP operation-attributes-tag
-      ATTR charset attributes-charset utf-8
-      ATTR language attributes-natural-language en
-      ATTR uri printer-uri $uri
-      ATTR integer job-id $job-id
-      ATTR name requesting-user-name $user
+      OPERATION Get\-Job\-Attributes
+      GROUP operation\-attributes\-tag
+      ATTR charset attributes\-charset utf\-8
+      ATTR language attributes\-natural\-language en
+      ATTR uri printer\-uri $uri
+      ATTR integer job\-id $job\-id
+      ATTR name requesting\-user\-name $user
 
       # The response to expect
-      STATUS successful-ok
-      EXPECT attributes-charset OF-TYPE charset
-      EXPECT attributes-natural-language OF-TYPE naturalLanguage
-      EXPECT job-id OF-TYPE integer
-      EXPECT job-uri OF-TYPE uri
-      EXPECT job-state OF-TYPE enum
-      EXPECT job-originating-user-name OF-TYPE name WITH-VALUE "$user"
+      STATUS successful\-ok
+      EXPECT job\-id OF\-TYPE integer WITH\-VALUE $job\-id
+      EXPECT job\-uri OF\-TYPE uri
+      EXPECT job\-state OF\-TYPE enum WITH\-VALUE 3,4,5,6,7,8,9
+      EXPECT job\-originating\-user\-name OF\-TYPE name WITH\-VALUE "$user"
     }
 .fi
-
-.SH TOP-LEVEL DIRECTIVES
-The following directives can be used outside of a test:
+.SS TOP-LEVEL DIRECTIVES
+The following directives can be used outside of a \fItest\fR:
 .TP 5
-{ test }
+\fB{ \fItest \fB}\fR
 Defines a test.
 .TP 5
-DEFINE variable-name value
-Defines the named variable to the given value. This is equivalent to specifying
-"-d variable-name=value" on the \fIipptool\fR command-line.
+\fBDEFINE \fIvariable-name value\fR
+Defines the named variable to the given value. This is equivalent to specifying \fI\-d variable-name=value\fR on the
+.BR ipptool (8)
+command-line.
 .TP 5
-DEFINE-DEFAULT variable-name value
-Defines the named variable to the given value if it does not already have a
-value.
+\fBDEFINE\-DEFAULT \fIvariable-name value\fR
+Defines the named variable to the given value if it does not already have a value.
 .TP 5
-FILE-ID "identifier"
+\fBFILE\-ID "\fIidentifier\fB"\fR
 Specifies an identifier string for the current file.
 .TP 5
-IGNORE-ERRORS yes
+\fBIGNORE\-ERRORS yes\fR
 .TP 5
-IGNORE-ERRORS no
-Specifies whether, by default, \fIipptool\fR will ignore errors and continue with
-subsequent tests.
+\fBIGNORE\-ERRORS no\fR
+Specifies whether, by default,
+.BR ipptool (8)
+will ignore errors and continue with subsequent tests.
 .TP 5
-INCLUDE "filename"
+\fBINCLUDE "\fIfilename\fB"\fR
 .TP 5
-INCLUDE <filename>
-Includes another test file. The first form includes a file relative to the
-current test file, while the second form includes a file from the \fIipptool\fR
+\fBINCLUDE <\fIfilename\fB>\fR
+Includes another test file. The first form includes a file relative to the current test file, while the second form includes a file from the
+.BR ipptool (8)
 include directory.
 .TP 5
-INCLUDE-IF-DEFINED name "filename"
+\fBINCLUDE\-IF\-DEFINED \fIname \fB"\fIfilename\fB"\fR
 .TP 5
-INCLUDE-IF-DEFINED name <filename>
-Includes another test file if the named variable is defined. The first form
-includes a file relative to the current test file, while the second form
-includes a file from the \fIipptool\fR include directory.
+\fBINCLUDE\-IF\-DEFINED \fIname \fB<\fIfilename\fB>\fR
+Includes another test file if the named variable is defined. The first form includes a file relative to the current test file, while the second form includes a file from the
+.BR ipptool (8)
+include directory.
 .TP 5
-INCLUDE-IF-NOT-DEFINED name "filename"
+\fBINCLUDE\-IF\-NOT\-DEFINED \fIname \fB"\fIfilename\fB"\fR
 .TP 5
-INCLUDE-IF-NOT-DEFINED name <filename>
-Includes another test file if the named variable is not defined. The first form
-includes a file relative to the current test file, while the second form
-includes a file from the \fIipptool\fR include directory.
+\fBINCLUDE\-IF\-NOT\-DEFINED \fIname \fB<\fIfilename\fB>\fR
+Includes another test file if the named variable is not defined. The first form includes a file relative to the current test file, while the second form includes a file from the
+.BR ipptool (8)
+include directory.
 .TP 5
-SKIP-IF-DEFINED variable-name
+\fBSKIP\-IF\-DEFINED \fIvariable-name\fR
 .TP 5
-SKIP-IF-NOT-DEFINED variable-name
-Specifies that the remainder of the test file should be skipped when the
-variable is or is not defined.
+\fBSKIP\-IF\-NOT\-DEFINED \fIvariable-name\fR
+Specifies that the remainder of the test file should be skipped when the variable is or is not defined.
 .TP 5
-STOP-AFTER-INCLUDE-ERROR no
+\fBSTOP\-AFTER\-INCLUDE\-ERROR no\fR
 .TP 5
-STOP-AFTER-INCLUDE-ERROR yes
+\fBSTOP\-AFTER\-INCLUDE\-ERROR yes\fR
 Specifies whether tests will be stopped after an error in an included file.
 .TP 5
-TRANSFER auto
-Specifies that tests will, by default, use "Transfer-Encoding: chunked" for
-requests with attached files and "Content-Length:" for requests without attached
-files.
+\fBTRANSFER auto\fR
+Specifies that tests will, by default, use "Transfer-Encoding: chunked" for requests with attached files and "Content-Length:" for requests without attached files.
 .TP 5
-TRANSFER chunked
-Specifies that tests will, by default, use the HTTP/1.1 "Transfer-Encoding:
-chunked" header. This is the default and is equivalent to specifying "-c" on the
-\fIipptool\fR command-line. Support for chunked requests is required for
-conformance with all versions of IPP.
+\fBTRANSFER chunked\fR
+Specifies that tests will, by default, use the HTTP/1.1 "Transfer-Encoding: chunked" header. This is the default and is equivalent to specifying \fI\-c\fR on the
+.BR ipptool (8)
+command-line. Support for chunked requests is required for conformance with all versions of IPP.
 .TP 5
-TRANSFER length
-Specifies that tests will, by default, use the HTTP/1.0 "Content-Length:"
-header. This is equivalent to specifying "-l" on the \fIipptool\fR command-line.
-Support for content length requests is required for conformance with all
-versions of IPP.
+\fBTRANSFER length\fR
+Specifies that tests will, by default, use the HTTP/1.0 "Content-Length:" header. This is equivalent to specifying \fI\-l\fR on the
+.BR ipptool (8)
+command-line. Support for content length requests is required for conformance with all versions of IPP.
 .TP 5
-VERSION 1.0
+\fBVERSION 1.0\fR
 .TP 5
-VERSION 1.1
+\fBVERSION 1.1\fR
 .TP 5
-VERSION 2.0
+\fBVERSION 2.0\fR
 .TP 5
-VERSION 2.1
+\fBVERSION 2.1\fR
 .TP 5
-VERSION 2.2
+\fBVERSION 2.2\fR
 Specifies the default IPP version number to use for the tests that follow.
-
-.SH TEST DIRECTIVES
-The following directives are understood in a test:
+.SS TEST DIRECTIVES
+The following directives are understood within a \fItest\fR:
 .TP 5
-ATTR tag attribute-name value(s)
-Adds an attribute to the test request. Values are separated by the comma (",")
-character - escape commas using the "\" character. Common attributes and values are listed in the IANA IPP registry - see references below.
+\fBATTR \fItag attribute-name value(s)\fR
+Adds an attribute to the test request. Values are separated by the comma (",") character - escape commas using the "\" character. Common attributes and values are listed in the IANA IPP registry - see references below.
 .TP 5
-ATTR collection attribute-name { MEMBER tag member-name value(s) ... } [ ... { ... } ]
-Adds a collection attribute to the test request. Member attributes follow the
-same syntax as regular attributes and can themselves be nested collections.
-Multiple collection values can be supplied as needed.
+\fBATTR collection \fIattribute-name \fB{ MEMBER \fItag member-name value(s) ... \fB}\fR [ \fI... \fB,{ \fI... \fB} \fR]
+Adds a collection attribute to the test request. Member attributes follow the same syntax as regular attributes and can themselves be nested collections. Multiple collection values can be supplied as needed, separated by commas.
 .TP 5
-COMPRESSION deflate
+\fBCOMPRESSION deflate\fR
 .TP 5
-COMPRESSION gzip
+\fBCOMPRESSION gzip\fR
 .TP 5
-COMPRESSION none
-.br
-Uses the specified compression on the document data following the attributes in
-a Print-Job or Send-Document request.
+\fBCOMPRESSION none\fR
+Uses the specified compression on the document data following the attributes in a Print-Job or Send-Document request.
 .TP 5
-DELAY seconds
+\fBDELAY \fIseconds\fR
 Specifies a delay before this test will be run.
 .TP 5
-DISPLAY attribute-name
+\fBDISPLAY \fIattribute-name\fR
 Specifies that value of the named attribute should be output as part of the
 test report.
 .TP 5
-EXPECT attribute-name [ predicate(s) ]
+\fBEXPECT \fIattribute-name \fR[ \fIpredicate(s) \fR]
 .TP 5
-EXPECT ?attribute-name predicate(s)
+\fBEXPECT ?\fIattribute-name predicate(s)\fR
 .TP 5
-EXPECT !attribute-name
-Specifies that the response must/may/must not include the named attribute.
-Additional requirements can be added as predicates - see the "EXPECT PREDICATES"
-section for more information on predicates.
+\fBEXPECT !\fIattribute-name\fR
+Specifies that the response must/may/must not include the named attribute. Additional requirements can be added as predicates - see the "EXPECT PREDICATES" section for more information on predicates. Attribute names can specify member attributes by separating the attribute and member names with the forward slash, for example "media\-col/media\-size/x\-dimension".
 .TP 5
-FILE filename
-Specifies a file to include at the end of the request. This is typically used
-when sending a test print file.
+\fBFILE filename\fR
+Specifies a file to include at the end of the request. This is typically used when sending a test print file.
 .TP 5
-GROUP tag
+\fBGROUP tag\fR
 Specifies the group tag for subsequent attributes in the request.
 .TP 5
-IGNORE-ERRORS yes
+\fBIGNORE\-ERRORS yes\fR
 .TP 5
-IGNORE-ERRORS no
-Specifies whether \fIipptool\fR will ignore errors and continue with subsequent
-tests.
+\fBIGNORE\-ERRORS no\fR
+Specifies whether
+.BR ipptool (8)
+will ignore errors and continue with subsequent tests.
 .TP 5
-NAME "literal string"
+\fBNAME "\fIliteral string\fB"\fR
 Specifies the human-readable name of the test.
 .TP 5
-OPERATION operation-code
+\fBOPERATION \fIoperation-code\fR
 Specifies the operation to be performed.
 .TP 5
-REQUEST-ID number
+\fBPAUSE "\fImessage\fB"\fR
+Displays the provided message and waits for the user to press a key to continue.
+.TP 5
+\fBREQUEST\-ID \fInumber\fR\fR
 .TP 5
-REQUEST-ID random
-Specifies the request-id value to use in the request, either an integer or the
-word "random" to use a randomly generated value (the default).
+\fBREQUEST\-ID random\fR
+Specifies the request-id value to use in the request, either an integer or the word "random" to use a randomly generated value (the default).
 .TP 5
-RESOURCE path
-Specifies an alternate resource path that is used for the HTTP POST request.
-The default is the resource from the URI provided to the \fIipptool\fR program.
+\fBRESOURCE \fIpath\fR
+Specifies an alternate resource path that is used for the HTTP POST request. The default is the resource from the URI provided to the
+.BR ipptool (8)
+program.
 .TP 5
-SKIP-IF-DEFINED variable-name
+\fBSKIP\-IF\-DEFINED \fIvariable-name\fR
 .TP 5
-SKIP-IF-NOT-DEFINED variable-name
-Specifies that the current test should be skipped when the variable is or is not
-defined.
+\fBSKIP\-IF\-NOT\-DEFINED \fIvariable-name\fR
+Specifies that the current test should be skipped when the variable is or is not defined.
 .TP 5
-SKIP-PREVIOUS-ERROR yes
+\fBSKIP\-PREVIOUS\-ERROR yes\fR
 .TP 5
-SKIP-PREVIOUS-ERROR no
-Specifies whether \fIipptool\fR will skip the current test if the previous test
-resulted in an error/failure.
+\fBSKIP\-PREVIOUS\-ERROR no\fR
+Specifies whether
+.BR ipptool (8)
+will skip the current test if the previous test resulted in an error/failure.
 .TP 5
-STATUS status-code [ predicate ]
-Specifies an expected response status-code value. Additional requirements can be
-added as predicates - see the "STATUS PREDICATES" section for more information
-on predicates.
+\fBSTATUS \fIstatus-code \fR[ \fIpredicate\fR ]
+Specifies an expected response status-code value. Additional requirements can be added as predicates - see the "STATUS PREDICATES" section for more information on predicates.
 .TP 5
-TEST-ID "identifier"
+\fBTEST\-ID "\fIidentifier\fR"
 Specifies an identifier string for the current test.
 .TP 5
-TRANSFER auto
-Specifies that this test will use "Transfer-Encoding: chunked" if it has an
-attached file or "Content-Length:" otherwise.
+\fBTRANSFER auto\fR
+Specifies that this test will use "Transfer-Encoding: chunked" if it has an attached file or "Content-Length:" otherwise.
 .TP 5
-TRANSFER chunked
-Specifies that this test will use the HTTP/1.1 "Transfer-Encoding: chunked"
-header.
+\fBTRANSFER chunked\fR
+Specifies that this test will use the HTTP/1.1 "Transfer-Encoding: chunked" header.
 .TP 5
-TRANSFER length
+\fBTRANSFER length\fR
 Specifies that this test will use the HTTP/1.0 "Content-Length:" header.
 .TP 5
-VERSION 1.0
+\fBVERSION 1.0\fR
 .TP 5
-VERSION 1.1
+\fBVERSION 1.1\fR
 .TP 5
-VERSION 2.0
+\fBVERSION 2.0\fR
 .TP 5
-VERSION 2.1
+\fBVERSION 2.1\fR
 .TP 5
-VERSION 2.2
+\fBVERSION 2.2\fR
 Specifies the IPP version number to use for this test.
-
-.SH EXPECT PREDICATES
-The following predicates are understood following the EXPECT test directive:
+.SS EXPECT PREDICATES
+The following predicates are understood following the \fBEXPECT\fR test directive:
 .TP 5
-COUNT number
-Requires the EXPECT attribute to have the specified number of values.
+\fBCOUNT \fInumber\fR
+Requires the \fBEXPECT\fR attribute to have the specified number of values.
 .TP 5
-DEFINE-MATCH variable-name
-Defines the variable to "1" when the EXPECT condition matches. A side-effect of
-this predicate is that this EXPECT will never fail a test.
+\fBDEFINE\-MATCH \fIvariable-name\fR
+Defines the variable to "1" when the \fBEXPECT\fR condition matches. A side-effect of this predicate is that this \fBEXPECT\fR will never fail a test.
 .TP 5
-DEFINE-NO-MATCH variable-name
-Defines the variable to "1" when the EXPECT condition does not match. A side-
-effect of this predicate is that this EXPECT will never fail a test.
+\fBDEFINE\-NO\-MATCH \fIvariable-name\fR
+Defines the variable to "1" when the \fBEXPECT\fR condition does not match. A side-effect of this predicate is that this \fBEXPECT\fR will never fail a test.
 .TP 5
-DEFINE-VALUE variable-name
-Defines the variable to the value of the attribute when the EXPECT condition
-matches. A side-effect of this predicate is that this EXPECT will never fail a test.
+\fBDEFINE\-VALUE \fIvariable-name\fR
+Defines the variable to the value of the attribute when the \fBEXPECT\fR condition matches. A side-effect of this predicate is that this \fBEXPECT\fR will never fail a test.
 .TP 5
-IF-DEFINED variable-name
-Makes the EXPECT conditions apply only if the specified variable is defined.
+\fBIF\-DEFINED \fIvariable-name\fR
+Makes the \fBEXPECT\fR conditions apply only if the specified variable is defined.
 .TP 5
-IF-NOT-DEFINED variable-name
-Makes the EXPECT conditions apply only if the specified variable is not
-defined.
+\fBIF\-NOT\-DEFINED \fIvariable-name\fR
+Makes the \fBEXPECT\fR conditions apply only if the specified variable is not defined.
 .TP 5
-IN-GROUP tag
-Requires the EXPECT attribute to be in the specified group tag.
+\fBIN\-GROUP \fItag\fR
+Requires the \fBEXPECT\fR attribute to be in the specified group tag.
 .TP 5
-OF-TYPE tag[,tag,...]
-Requires the EXPECT attribute to use the specified value tag(s).
+\fBOF\-TYPE \fItag[,tag,...]\fR
+Requires the \fBEXPECT\fR attribute to use one of the specified value tag(s).
 .TP 5
-REPEAT-LIMIT number
+\fBREPEAT\-LIMIT \fInumber\fR
 .br
-Specifies the maximum number of times to repeat. The default value is 1000.
+Specifies the maximum number of times to repeat if the \fBREPEAT-MATCH\fR or \fBREPEAT-NO-MATCH\fR predicate is specified. The default value is 1000.
 .TP 5
-REPEAT-MATCH
+\fBREPEAT\-MATCH\fR
 .TP 5
-REPEAT-NO-MATCH
-Specifies that the current test should be repeated when the EXPECT condition
-matches or does not match.
+\fBREPEAT\-NO\-MATCH\fR
+Specifies that the current test should be repeated when the \fBEXPECT\fR condition matches or does not match.
 .TP 5
-SAME-COUNT-AS attribute-name
-Requires the EXPECT attribute to have the same number of values as the specified
-parallel attribute.
+\fBSAME\-COUNT\-AS \fIattribute-name\fR
+Requires the \fBEXPECT\fR attribute to have the same number of values as the specified parallel attribute.
 .TP 5
-WITH-ALL-HOSTNAMES "literal string"
+\fBWITH\-ALL\-HOSTNAMES "\fIliteral string\fB"\fR
 .TP 5
-WITH-ALL-HOSTNAMES "/regular expression/"
+\fBWITH\-ALL\-HOSTNAMES "/\fIregular expression\fB/"\fR
 Requires that all URI values contain a matching hostname.
 .TP 5
-WITH-ALL-RESOURCES "literal string"
+\fBWITH\-ALL\-RESOURCES "\fIliteral string\fB"\fR
 .TP 5
-WITH-ALL-RESOURCES "/regular expression/"
+\fBWITH\-ALL\-RESOURCES "/\fIregular expression\fB/"\fR
 Requires that all URI values contain a matching resource (including leading /).
 .TP 5
-WITH-ALL-SCHEMES "literal string"
+\fBWITH\-ALL\-SCHEMES "\fIliteral string\fB"\fR
 .TP 5
-WITH-ALL-SCHEMES "/regular expression/"
+\fBWITH\-ALL-SCHEMES "/\fIregular expression\fB/"\fR
 Requires that all URI values contain a matching scheme.
 .TP 5
-WITH-ALL-VALUES "literal string"
-Requires that all values of the EXPECT attribute match the literal string. Comparisons are case-sensitive.
+\fBWITH\-ALL\-VALUES "\fIliteral string\fB"\fR
+Requires that all values of the \fBEXPECT\fR attribute match the literal string. Comparisons are case-sensitive.
 .TP 5
-WITH-ALL-VALUES <number
+\fBWITH\-ALL\-VALUES <\fInumber\fR
 .TP 5
-WITH-ALL-VALUES =number
+\fBWITH\-ALL\-VALUES =\fInumber\fR
 .TP 5
-WITH-ALL-VALUES >number
+\fBWITH\-ALL\-VALUES >\fInumber\fR
 .TP 5
-WITH-ALL-VALUES number[,number,...]
-Requires that all values of the EXPECT attribute match the number(s) or numeric comparison. When comparing rangeOfInteger values, the "<" and ">" operators only check the upper bound of the range.
+\fBWITH\-ALL\-VALUES \fInumber\fR[\fI,...,number\fR]
+Requires that all values of the \fBEXPECT\fR attribute match the number(s) or numeric comparison. When comparing rangeOfInteger values, the "<" and ">" operators only check the upper bound of the range.
 .TP 5
-WITH-ALL-VALUES "false"
+\fBWITH\-ALL\-VALUES "false"\fR
 .TP 5
-WITH-ALL-VALUES "true"
-Requires that all values of the EXPECT attribute match the boolean value given.
+\fBWITH\-ALL\-VALUES "true"\fR
+Requires that all values of the \fBEXPECT\fR attribute match the boolean value given.
 .TP 5
-WITH-ALL-VALUES "/regular expression/"
-Requires that all values of the EXPECT attribute match the regular expression, which must conform to the POSIX regular expression syntax. Comparisons are case-sensitive.
+\fBWITH\-ALL\-VALUES "/\fIregular expression\fB/"\fR
+Requires that all values of the \fBEXPECT\fR attribute match the regular expression, which must conform to the POSIX regular expression syntax. Comparisons are case-sensitive.
 .TP 5
-WITH-HOSTNAME "literal string"
+\fBWITH\-HOSTNAME "\fIliteral string\fB"\fR
 .TP 5
-WITH-HOSTNAME "/regular expression/"
+\fBWITH\-HOSTNAME "/\fIregular expression\fB/"\fR
 Requires that at least one URI value contains a matching hostname.
 .TP 5
-WITH-RESOURCE "literal string"
+\fBWITH\-RESOURCE "\fIliteral string\fB"\fR
 .TP 5
-WITH-RESOURCE "/regular expression/"
+\fBWITH\-RESOURCE "/\fIregular expression\fB/"\fR
 Requires that at least one URI value contains a matching resource (including leading /).
 .TP 5
-WITH-SCHEME "literal string"
+\fBWITH\-SCHEME "\fIliteral string\fB"\fR
 .TP 5
-WITH-SCHEME "/regular expression/"
+\fBWITH\-SCHEME "/\fIregular expression\fB/"\fR
 Requires that at least one URI value contains a matching scheme.
 .TP 5
-WITH-VALUE "literal string"
-Requires that at least one value of the EXPECT attribute matches the literal string. Comparisons are case-sensitive.
+\fBWITH\-VALUE "\fIliteral string\fB"\fR
+Requires that at least one value of the \fBEXPECT\fR attribute matches the literal string. Comparisons are case-sensitive.
 .TP 5
-WITH-VALUE <number
+\fBWITH\-VALUE <\fInumber\fR
 .TP 5
-WITH-VALUE =number
+\fBWITH\-VALUE =\fInumber\fR
 .TP 5
-WITH-VALUE >number
+\fBWITH\-VALUE >\fInumber\fR
 .TP 5
-WITH-VALUE number[,number,...]
-Requires that at least one value of the EXPECT attribute matches the number(s) or numeric comparison. When comparing rangeOfInteger values, the "<" and ">" operators only check the upper bound of the range.
+\fBWITH\-VALUE \fInumber\fR[\fI,...,number\fR]
+Requires that at least one value of the \fBEXPECT\fR attribute matches the number(s) or numeric comparison. When comparing rangeOfInteger values, the "<" and ">" operators only check the upper bound of the range.
 .TP 5
-WITH-VALUE "false"
+\fBWITH\-VALUE "false"\fR
 .TP 5
-WITH-VALUE "true"
-Requires that at least one value of the EXPECT attribute matches the boolean value given.
+\fBWITH\-VALUE "true"\fR
+Requires that at least one value of the \fBEXPECT\fR attribute matches the boolean value given.
 .TP 5
-WITH-VALUE "/regular expression/"
-Requires that at least one value of the EXPECT attribute matches the regular expression, which must conform to the POSIX regular expression syntax. Comparisons are case-sensitive.
-
-.SH STATUS PREDICATES
-The following predicates are understood following the STATUS test directive:
+\fBWITH\-VALUE "/\fIregular expression\fB/"\fR
+Requires that at least one value of the \fBEXPECT\fR attribute matches the regular expression, which must conform to the POSIX regular expression syntax. Comparisons are case-sensitive.
+.SS STATUS PREDICATES
+The following predicates are understood following the \fBSTATUS\fR test directive:
 .TP 5
-DEFINE-MATCH variable-name
-Defines the variable to "1" when the STATUS matches. A side-effect of this predicate is that this STATUS will never fail a test.
+\fBDEFINE\-MATCH \fIvariable-name\fR
+Defines the variable to "1" when the \fBSTATUS\fR matches. A side-effect of this predicate is that this \fBSTATUS\fR will never fail a test.
 .TP 5
-DEFINE-NO-MATCH variable-name
-Defines the variable to "1" when the STATUS does not match. A side-effect of this predicate is that this STATUS will never fail a test.
+\fBDEFINE\-NO\-MATCH \fIvariable-name\fR
+Defines the variable to "1" when the \fBSTATUS\fR does not match. A side-effect of this predicate is that this \fBSTATUS\fR will never fail a test.
 .TP 5
-IF-DEFINED variable-name
-Makes the STATUS apply only if the specified variable is defined.
+\fBIF\-DEFINED \fIvariable-name\fR
+Makes the \fBSTATUS\fR apply only if the specified variable is defined.
 .TP 5
-IF-NOT-DEFINED variable-name
-Makes the STATUS apply only if the specified variable is not defined.
+\fBIF\-NOT\-DEFINED \fIvariable-name\fR
+Makes the \fBSTATUS\fR apply only if the specified variable is not defined.
 .TP 5
-REPEAT-LIMIT number
+\fBREPEAT\-LIMIT \fInumber\fR
 .br
 Specifies the maximum number of times to repeat. The default value is 1000.
 .TP 5
-REPEAT-MATCH
+\fBREPEAT\-MATCH\fR
 .TP 5
-REPEAT-NO-MATCH
-Specifies that the current test should be repeated when the response status-code
-matches or does not match the value specified by the STATUS directive.
-
-.SH OPERATION CODES
-Operation codes correspond to the hexadecimal numbers (0xHHHH) and names from
-RFC 2911 and other IPP extension specifications. Here is a complete list:
+\fBREPEAT\-NO\-MATCH\fR
+Specifies that the current test should be repeated when the response status-code matches or does not match the value specified by the STATUS directive.
+.SS OPERATION CODES
+Operation codes correspond to the hexadecimal numbers (0xHHHH) and names from RFC 2911 and other IPP extension specifications. Here is a complete list of names supported by
+.BR ipptool (8):
 .nf
-    Activate-Printer
-    CUPS-Accept-Jobs
-    CUPS-Add-Modify-Class
-    CUPS-Add-Modify-Printer
-    CUPS-Authenticate-Job
-    CUPS-Delete-Class
-    CUPS-Delete-Printer
-    CUPS-Get-Classes
-    CUPS-Get-Default
-    CUPS-Get-Devices
-    CUPS-Get-Document
-    CUPS-Get-PPD
-    CUPS-Get-PPDs
-    CUPS-Get-Printers
-    CUPS-Move-Job
-    CUPS-Reject-Jobs
-    CUPS-Set-Default
-    Cancel-Current-Job
-    Cancel-Job
-    Cancel-Jobs
-    Cancel-My-Jobs
-    Cancel-Subscription
-    Close-Job
-    Create-Job
-    Create-Job-Subscriptions
-    Create-Printer-Subscriptions
-    Deactivate-Printer
-    Disable-Printer
-    Enable-Printer
-    Get-Job-Attributes
-    Get-Jobs
-    Get-Notifications
-    Get-Printer-Attributes
-    Get-Printer-Support-Files
-    Get-Printer-Supported-Values
-    Get-Subscription-Attributes
-    Get-Subscriptions
-    Hold-Job
-    Hold-New-Jobs
-    Identify-Printer
-    Pause-Printer
-    Pause-Printer-After-Current-Job
-    Print-Job
-    Print-URI
-    Promote-Job
-    Purge-Jobs
-    Release-Held-New-Jobs
-    Release-Job
-    Renew-Subscription
-    Reprocess-Job
-    Restart-Job
-    Restart-Printer
-    Resubmit-Job
-    Resume-Job
-    Resume-Printer
-    Schedule-Job-After
-    Send-Document
-    Send-Hardcopy-Document
-    Send-Notifications
-    Send-URI
-    Set-Job-Attributes
-    Set-Printer-Attributes
-    Shutdown-Printer
-    Startup-Printer
-    Suspend-Current-Job
-    Validate-Document
-    Validate-Job
-.fi
 
-.SH STATUS CODES
-Status codes correspond to the hexadecimal numbers (0xHHHH) and names from RFC
-2911 and other IPP extension specifications. Here is a complete list:
-.nf
-    client-error-attributes-not-settable
-    client-error-attributes-or-values-not-supported
-    client-error-bad-request
-    client-error-charset-not-supported
-    client-error-compression-error
-    client-error-compression-not-supported
-    client-error-conflicting-attributes
-    client-error-document-access-error
-    client-error-document-format-error
-    client-error-document-format-not-supported
-    client-error-document-password-error
-    client-error-document-permission-error
-    client-error-document-security-error
-    client-error-document-unprintable-error
-    client-error-forbidden
-    client-error-gone
-    client-error-ignored-all-notifications
-    client-error-ignored-all-subscriptions
-    client-error-not-authenticated
-    client-error-not-authorized
-    client-error-not-found
-    client-error-not-possible
-    client-error-print-support-file-not-found
-    client-error-request-entity-too-large
-    client-error-request-value-too-long
-    client-error-timeout
-    client-error-too-many-subscriptions
-    client-error-uri-scheme-not-supported
-    cups-see-other
-    redirection-other-site
-    server-error-busy
-    server-error-device-error
-    server-error-internal-error
-    server-error-job-canceled
-    server-error-multiple-document-jobs-not-supported
-    server-error-not-accepting-jobs
-    server-error-operation-not-supported
-    server-error-printer-is-deactivated
-    server-error-service-unavailable
-    server-error-temporary-error
-    server-error-version-not-supported
-    successful-ok
-    successful-ok-but-cancel-subscription
-    successful-ok-conflicting-attributes
-    successful-ok-events-complete
-    successful-ok-ignored-notifications
-    successful-ok-ignored-or-substituted-attributes
-    successful-ok-ignored-subscriptions
-    successful-ok-too-many-events
+    Activate\-Printer
+    CUPS\-Accept\-Jobs
+    CUPS\-Add\-Modify\-Class
+    CUPS\-Add\-Modify\-Printer
+    CUPS\-Authenticate\-Job
+    CUPS\-Delete\-Class
+    CUPS\-Delete\-Printer
+    CUPS\-Get\-Classes
+    CUPS\-Get\-Default
+    CUPS\-Get\-Devices
+    CUPS\-Get\-Document
+    CUPS\-Get\-PPD
+    CUPS\-Get\-PPDs
+    CUPS\-Get\-Printers
+    CUPS\-Move\-Job
+    CUPS\-Reject\-Jobs
+    CUPS\-Set\-Default
+    Cancel\-Current\-Job
+    Cancel\-Job
+    Cancel\-Jobs
+    Cancel\-My\-Jobs
+    Cancel\-Subscription
+    Close\-Job
+    Create\-Job
+    Create\-Job\-Subscriptions
+    Create\-Printer\-Subscriptions
+    Deactivate\-Printer
+    Disable\-Printer
+    Enable\-Printer
+    Get\-Job\-Attributes
+    Get\-Jobs
+    Get\-Notifications
+    Get\-Printer\-Attributes
+    Get\-Printer\-Support\-Files
+    Get\-Printer\-Supported\-Values
+    Get\-Subscription\-Attributes
+    Get\-Subscriptions
+    Hold\-Job
+    Hold\-New\-Jobs
+    Identify\-Printer
+    Pause\-Printer
+    Pause\-Printer\-After\-Current\-Job
+    Print\-Job
+    Print\-URI
+    Promote\-Job
+    Purge\-Jobs
+    Release\-Held\-New\-Jobs
+    Release\-Job
+    Renew\-Subscription
+    Reprocess\-Job
+    Restart\-Job
+    Restart\-Printer
+    Resubmit\-Job
+    Resume\-Job
+    Resume\-Printer
+    Schedule\-Job\-After
+    Send\-Document
+    Send\-Hardcopy\-Document
+    Send\-Notifications
+    Send\-URI
+    Set\-Job\-Attributes
+    Set\-Printer\-Attributes
+    Shutdown\-Printer
+    Startup\-Printer
+    Suspend\-Current\-Job
+    Validate\-Document
+    Validate\-Job
 .fi
+.SS STATUS CODES
+Status codes correspond to the hexadecimal numbers (0xHHHH) and names from RFC 2911 and other IPP extension specifications. Here is a complete list of the names supported by
+.BR ipptool (8):
+.nf
 
-.SH TAGS
-Value and group tags correspond to the names from RFC 2911 and other IPP
-extension specifications. Here are the group tags:
+    client\-error\-account\-authorization\-failed
+    client\-error\-account\-closed
+    client\-error\-account\-info\-needed
+    client\-error\-account\-limit\-reached
+    client\-error\-attributes\-not\-settable
+    client\-error\-attributes\-or\-values\-not\-supported
+    client\-error\-bad\-request
+    client\-error\-charset\-not\-supported
+    client\-error\-compression\-error
+    client\-error\-compression\-not\-supported
+    client\-error\-conflicting\-attributes
+    client\-error\-document\-access\-error
+    client\-error\-document\-format\-error
+    client\-error\-document\-format\-not\-supported
+    client\-error\-document\-password\-error
+    client\-error\-document\-permission\-error
+    client\-error\-document\-security\-error
+    client\-error\-document\-unprintable\-error
+    client\-error\-forbidden
+    client\-error\-gone
+    client\-error\-ignored\-all\-notifications
+    client\-error\-ignored\-all\-subscriptions
+    client\-error\-not\-authenticated
+    client\-error\-not\-authorized
+    client\-error\-not\-found
+    client\-error\-not\-possible
+    client\-error\-print\-support\-file\-not\-found
+    client\-error\-request\-entity\-too\-large
+    client\-error\-request\-value\-too\-long
+    client\-error\-timeout
+    client\-error\-too\-many\-subscriptions
+    client\-error\-uri\-scheme\-not\-supported
+    cups\-error\-account\-authorization\-failed
+    cups\-error\-account\-closed
+    cups\-error\-account\-info\-needed
+    cups\-error\-account\-limit\-reached
+    cups\-see\-other
+    redirection\-other\-site
+    server\-error\-busy
+    server\-error\-device\-error
+    server\-error\-internal\-error
+    server\-error\-job\-canceled
+    server\-error\-multiple\-document\-jobs\-not\-supported
+    server\-error\-not\-accepting\-jobs
+    server\-error\-operation\-not\-supported
+    server\-error\-printer\-is\-deactivated
+    server\-error\-service\-unavailable
+    server\-error\-temporary\-error
+    server\-error\-version\-not\-supported
+    successful\-ok
+    successful\-ok\-but\-cancel\-subscription
+    successful\-ok\-conflicting\-attributes
+    successful\-ok\-events\-complete
+    successful\-ok\-ignored\-notifications
+    successful\-ok\-ignored\-or\-substituted\-attributes
+    successful\-ok\-ignored\-subscriptions
+    successful\-ok\-too\-many\-events
+.fi
+.SS TAGS
+Value and group tags correspond to the names from RFC 2911 and other IPP extension specifications. Here are the group tags:
 .nf
-    event-notification-attributes-tag
-    job-attributes-tag
-    operation-attributes-tag
-    printer-attributes-tag
-    subscription-attributes-tag
-    unsupported-attributes-tag
+
+    document\-attributes\-tag
+    event\-notification\-attributes\-tag
+    job\-attributes\-tag
+    operation\-attributes\-tag
+    printer\-attributes\-tag
+    subscription\-attributes\-tag
+    unsupported\-attributes\-tag
 .fi
 .LP
 Here are the value tags:
 .nf
-    admin-define
+
+    admin\-define
     boolean
     charset
     collection
     dateTime
     default
-    delete-attribute
+    delete\-attribute
     enum
     integer
     keyword
@@ -551,8 +534,8 @@ Here are the value tags:
     nameWithLanguage
     nameWithoutLanguage
     naturalLanguage
-    no-value
-    not-settable
+    no\-value
+    not\-settable
     octetString
     rangeOfInteger
     resolution
@@ -563,66 +546,71 @@ Here are the value tags:
     uri
     uriScheme
 .fi
-
-.SH VARIABLES
-The \fIipptool\fR program maintains a list of variables that can be used in any
-literal string or attribute value by specifying "$variable-name". Aside from
-variables defined using the "-d" option or "DEFINE" directive, the following
-pre-defined variables are available:
+.SS VARIABLES
+The
+.BR ipptool (8)
+program maintains a list of variables that can be used in any literal string or attribute value by specifying "\fI$variable-name\fR". Aside from variables defined using the \fI-d\fR option or \fBDEFINE\fR directive, the following pre-defined variables are available:
 .TP 5
-$$
+\fB$$\fR
 Inserts a single "$" character.
 .TP 5
-$ENV[name]
-Inserts the value of the named environment variable, or an empty string if the
-environment variable is not defined.
+\fB$ENV[\fIname\fB]\fR
+Inserts the value of the named environment variable, or an empty string if the environment variable is not defined.
 .TP 5
-$filename
-Inserts the filename provided to \fIipptool\fR with the "-f" option.
+\fB$filename\fR
+Inserts the filename provided to
+.BR ipptool (8)
+with the \fI-f\fR option.
 .TP 5
-$hostname
-Inserts the hostname from the URI provided to \fIipptool\fR.
+\fB$filetype\fR
+Inserts the MIME media type for the filename provided to
+.BR ipptool (8)
+with the \fI-f\fR option.
 .TP 5
-$job-id
-Inserts the last job-id value returned in a test response or 0 if no job-id has
-been seen.
+\fB$hostname\fR
+Inserts the hostname from the URI provided to
+.BR ipptool (8).
 .TP 5
-$job-uri
-Inserts the last job-uri value returned in a test response or an empty string if
-no job-uri has been seen.
+\fB$job\-id\fR
+Inserts the last "job\-id" attribute value returned in a test response or 0 if no "job\-id" attribute has been seen.
 .TP 5
-$scheme
-Inserts the scheme from the URI provided to \fIipptool\fR.
+\fB$job\-uri\fR
+Inserts the last "job\-uri" attribute value returned in a test response or an empty string if no "job\-uri" attribute has been seen.
 .TP 5
-$notify-subscription-id
-Inserts the last notify-subscription-id value returned in a test response or 0 if
-no notify-subscription-id has been seen.
+\fB$notify\-subscription\-id\fR
+Inserts the last "notify\-subscription\-id" attribute value returned in a test response or 0 if no "notify\-subscription\-id" attribute has been seen.
 .TP 5
-$port
-Inserts the port number from the URI provided to \fIipptool\fR.
+\fB$port\fR
+Inserts the port number from the URI provided to
+.BR ipptool (8).
 .TP 5
-$resource
-Inserts the resource path from the URI provided to \fIipptool\fR.
+\fB$resource\fR
+Inserts the resource path from the URI provided to
+.BR ipptool (8).
 .TP 5
-$uri
-Inserts the URI provided to \fIipptool\fR.
+\fB$scheme\fR
+Inserts the scheme from the URI provided to
+.BR ipptool (8).
 .TP 5
-$user
-Inserts the current user's login name.
+\fB$uri\fR
+Inserts the URI provided to
+.BR ipptool (8).
 .TP 5
-$username
-Inserts the username from the URI provided to \fIipptool\fR, if any.
-
+\fB$uriuser\fR
+Inserts the username from the URI provided to
+.BR ipptool (8),
+if any.
+.TP 5
+\fB$user\fR
+Inserts the current user's login name.
 .SH SEE ALSO
-\fIipptool(1)\fR, RFC 2911,
-.br
-http://localhost:631/help
-.br
-http://www.iana.org/assignments/ipp-registrations
-.br
-http://www.pwg.org/ipp
+.BR ipptool (1),
+CUPS Online Help (http://localhost:631/help),
+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 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: ipptoolfile.man 11734 2014-03-25 18:01:47Z msweet $".
+.\" End of "$Id: ipptoolfile.man 11880 2014-05-16 06:14:11Z msweet $".
 .\"
index e07b3f1e119ccab36456314b6b5013b71b29da4a..6594282a37036b4f8027ff107e1110bb6a1976bf 100644 (file)
 .\"
-.\" "$Id: lp.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: lp.man 11922 2014-06-11 23:35:37Z msweet $"
 .\"
-.\"   lp man page for CUPS.
+.\" lp man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH lp 1 "CUPS" "16 July 2012" "Apple Inc."
+.TH lp 1 "CUPS" "11 June 2014" "Apple Inc."
 .SH NAME
-lp - print files
+lp \- print files
 .SH SYNOPSIS
 .B lp
-[ -E ] [ -U
+[
+.B \-E
+] [
+.B \-U
 .I username
-] [ -c ] [ -d
-.I destination[/instance]
-] [ -h
-.I hostname[:port]
-] [ -m ] [ -n
+] [
+.B \-c
+] [
+\fB\-d \fIdestination\fR[\fB/\fIinstance\fR]
+] [
+\fB\-h \fIhostname\fR[\fB:\fIport\fR]
+] [
+.B \-m
+] [
+.B \-n
 .I num-copies
-] [ -o
-.I option[=value]
-] [ -q
+] [
+\fB\-o \fIoption\fR[\fB=\fIvalue\fR]
+] [
+.B \-q
 .I priority
-] [ -s ] [ -t
+] [
+.B \-s
+] [
+.B \-t
 .I title
-] [ -H
+] [
+.B \-H
 .I handling
-] [ -P
+] [
+.B \-P
 .I page-list
-] [ -- ] [
+] [
+.B \-\-
+] [
 .I file(s)
 ]
 .br
 .B lp
-[ -E ] [ -U
+[
+.B \-E
+] [
+.B \-U
 .I username
-] [ -c ] [ -h
-.I hostname[:port]
-] [ -i
+] [
+.B \-c
+] [
+\fB\-h \fIhostname\fR[\fB:\fIport\fR]
+] [
+.B \-i
 .I job-id
-] [ -n
+] [
+.B \-n
 .I num-copies
-] [ -o
-.I option[=value]
-] [ -q
+] [
+\fB\-o \fIoption\fR[\fB=\fIvalue\fR]
+] [
+.B \-q
 .I priority
-] [ -t
+] [
+.B \-t
 .I title
-] [ -H
+] [
+.B \-H
 .I handling
-] [ -P
+] [
+.B \-P
 .I page-list
 ]
 .SH DESCRIPTION
-\fIlp\fR submits files for printing or alters a pending job. Use
-a filename of "-" to force printing from the standard input.
-.SH THE DEFAULT DESTINATION
-CUPS provides many ways to set the default destination. The "LPDEST" and
-"PRINTER" environment variables are consulted first. If neither are set,
-the current default set using the \fIlpoptions(1)\fR command is used,
-followed by the default set using the \fIlpadmin(8)\fR command.
+\fBlp\fR submits files for printing or alters a pending job.
+Use a filename of "-" to force printing from the standard input.
+.SS THE DEFAULT DESTINATION
+CUPS provides many ways to set the default destination. The \fBLPDEST\fR and \fBPRINTER\fR environment variables are consulted first.
+If neither are set, the current default set using the
+.BR lpoptions (1)
+command is used, followed by the default set using the
+.BR lpadmin (8)
+command.
 .SH OPTIONS
 The following options are recognized by \fIlp\fR:
 .TP 5
---
-.br
-Marks the end of options; use this to print a file whose name
-begins with a dash (-).
+.B \-\-
+Marks the end of options; use this to print a file whose name begins with a dash (\-).
 .TP 5
--E
-.br
+.B \-E
 Forces encryption when connecting to the server.
 .TP 5
--U username
-.br
+\fB\-U \fIusername\fR
 Specifies the username to use when connecting to the server.
 .TP 5
--c
-.br
-This option is provided for backwards-compatibility only. On
-systems that support it, this option forces the print file to be
-copied to the spool directory before printing. In CUPS, print
-files are always sent to the scheduler via IPP which has the
-same effect.
+.B \-c
+This option is provided for backwards-compatibility only. On systems that support it, this option forces the print file to be copied to the spool directory before printing.
+In CUPS, print files are always sent to the scheduler via IPP which has the same effect.
 .TP 5
--d destination
-.br
+\fB\-d \fIdestination\fR
 Prints files to the named printer.
 .TP 5
--h hostname[:port]
-.br
+\fB\-h \fIhostname\fR[\fB:\fIport\fR]
 Chooses an alternate server.
 .TP 5
--i job-id
-.br
+\fB\-i \fIjob-id\fR
 Specifies an existing job to modify.
 .TP 5
--m
-.br
+.B \-m
 Sends an email when the job is completed.
 .TP 5
--n copies
-.br
-Sets the number of copies to print from 1 to 100.
+\fB\-n \fIcopies\fR
+Sets the number of copies to print.
 .TP 5
--o "name=value [name=value ...]"
-.br
+\fB\-o "\fIname\fB=\fIvalue \fR[ ... \fIname\fB=\fIvalue \fR]\fB"\fR
 Sets one or more job options.
 .TP 5
--q priority
-.br
-Sets the job priority from 1 (lowest) to 100 (highest). The
-default priority is 50.
+\fB\-q \fIpriority\fR
+Sets the job priority from 1 (lowest) to 100 (highest).
+The default priority is 50.
 .TP 5
--s
-.br
+.B \-s
 Do not report the resulting job IDs (silent mode.)
 .TP 5
--t "name"
-.br
+\fB\-t "\fIname\fB"\fR
 Sets the job name.
 .TP 5
--H hh:mm
+\fB\-H \fIhh:mm\fR
 .TP 5
--H hold
+\fB\-H hold\fR
 .TP 5
--H immediate
+\fB-H immediate\fR
 .TP 5
--H restart
+\fB-H restart\fR
 .TP 5
--H resume
-.br
-Specifies when the job should be printed. A value of \fIimmediate\fR will print
-the file immediately, a value of \fIhold\fR will hold the job indefinitely, and
-a UTC time value (HH:MM) will hold the job until the specified UTC (not local)
-time. Use a value of \fIresume\fR with the \fI-i\fR option to resume a held job.
-Use a value of \fIrestart\fR with the \fI-i\fR option to restart
-a completed job.
-.TP 5
--P page-list
-.br
-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.
-.SH COMMON JOB OPTIONS
-Aside from the printer-specific options reported by the
-\fIlpoptions(1)\fR command, the following generic options are
-available:
+\fB-H resume\fR
+Specifies when the job should be printed.
+A value of \fIimmediate\fR will print the file immediately, a value of \fIhold\fR will hold the job indefinitely, and a UTC time value (HH:MM) will hold the job until the specified UTC (not local) time.
+Use a value of \fIresume\fR with the \fI-i\fR option to resume a held job.
+Use a value of \fIrestart\fR with the \fI-i\fR option to restart a completed job.
 .TP 5
--o media=size
-.br
-Sets the page size to \fIsize\fR. Most printers support at least
-the size names "a4", "letter", and "legal".
+\fB\-P \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.
+.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
--o landscape
+\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
--o orientation-requested=4
-.br
+\fB\-o orientation\-requested=4\fR
 Prints the job in landscape (rotated 90 degrees).
 .TP 5
--o sides=one-sided
+\fB\-o sides=one\-sided\fR
+Prints on one side of the paper.
 .TP 5
--o sides=two-sided-long-edge
+\fB\-o sides=two\-sided\-long\-edge\fR
+Prints on both sides of the paper for portrait output.
 .TP 5
--o sides=two-sided-short-edge
-.br
-Prints on one or two sides of the paper. The value
-"two-sided-long-edge" is normally used when printing portrait
-(unrotated) pages, while "two-sided-short-edge" is used for
-landscape pages.
+\fB\-o sides=two\-sided\-short\-edge\fR
+Prints on both sides of the paper for landscape output.
 .TP 5
--o fit-to-page
-.br
+\fB\-o fit\-to\-page\fR
 Scales the print file to fit on the page.
 .TP 5
--o number-up=2
-.TP 5
--o number-up=4
-.TP 5
--o number-up=6
-.TP 5
--o number-up=9
-.TP 5
--o number-up=16
-.br
-Prints multiple document pages on each output page.
-.TP 5
--o cpi=N
-.br
-Sets the number of characters per inch to use when printing a
-text file. The default is 10.
-.TP 5
--o lpi=N
-.br
-Sets the number of lines per inch to use when printing a text
-file. The default is 6.
-.TP 5
--o page-bottom=N
-.TP 5
--o page-left=N
-.TP 5
--o page-right=N
-.TP 5
--o page-top=N
-.br
-Sets the page margins when printing text files. The values are in
-points - there are 72 points to the inch.
+\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.
+.LP
+The \fI-q\fR option accepts a different range of values than the Solaris lp command, matching the IPP job priority values (1-100, 100 is highest priority) instead of the Solaris values (0-39, 0 is highest priority).
 .SH EXAMPLES
-Print a double-sided legal document to a printer called "foo":
+Print two copies of a document to the default printer:
 .nf
-    lp -d foo -o media=legal -o sides=two-sided-long-edge filename
+
+    lp -n 2 filename
+
 .fi
-.LP
-Print an image across 4 pages:
+Print a double-sided legal document to a printer called "foo":
 .nf
-    lp -d bar -o scaling=200 filename
+
+    lp -d foo -o media=legal -o sides=two-sided-long-edge filename
+
 .fi
-.LP
-Print a text file with 12 characters per inch, 8 lines per inch, and
-a 1 inch left margin:
+Print a presentation document 2-up to a printer called "foo":
 .nf
-    lp -d bar -o cpi=12 -o lpi=8 -o page-left=72 filename
+
+    lp -d foo -o number-up=2 filename
 .fi
-.SH COMPATIBILITY
-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.
-.LP
-The "q" option accepts a different range of values than the
-Solaris lp command, matching the IPP job priority values (1-100,
-100 is highest priority) instead of the Solaris values (0-39, 0
-is highest priority).
 .SH SEE ALSO
-\fIcancel(1)\fR, \fIlpadmin(8)\fR, \fIlpmove(8)\fR, \fIlpoptions(1)\fR,
-\fIlpstat(1)\fR,
-.br
-http://localhost:631/help
+.BR cancel (1),
+.BR lpadmin (8),
+.BR lpoptions (1),
+.BR lpq (1),
+.BR lpr (1),
+.BR lprm (1),
+.BR lpstat (1),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: lp.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: lp.man 11922 2014-06-11 23:35:37Z msweet $".
 .\"
index 7119934b089f0f82f1c0db2648fab6144ae661cf..a89e6a5d4458001c85584cdc4589a97a71a25622 100644 (file)
 .\"
-.\" "$Id: lpadmin.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: lpadmin.man 11922 2014-06-11 23:35:37Z msweet $"
 .\"
-.\"   lpadmin man page for CUPS.
+.\" lpadmin man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH lpadmin 8 "CUPS" "16 July 2012" "Apple Inc."
+.TH lpadmin 8 "CUPS" "11 June 2014" "Apple Inc."
 .SH NAME
 lpadmin \- configure cups printers and classes
 .SH SYNOPSIS
 .B lpadmin
-[ -E ] [-U
+[
+.B \-E
+] [
+.B \-U
 .I username
-] [ -h
-.I server[:port]
-] -d
+] [
+\fB\-h \fIserver\fR[\fB:\fIport\fR]
+]
+.B \-d
 .I destination
 .br
 .B lpadmin
-[ -E ] [-U
+[
+.B \-E
+] [
+.B \-U
 .I username
-] [ -h
-.I server[:port]
-] -p
+] [
+\fB\-h \fIserver\fR[\fB:\fIport\fR]
+]
+.B \-p
 .I destination
-[ -R
+[
+.B \-R
 .I name-default
 ]
 .I option(s)
 .br
 .B lpadmin
-[ -E ] [-U
+[
+.B \-E
+] [
+.B \-U
 .I username
-] [ -h
-.I server[:port]
-] -x
+] [
+\fB\-h \fIserver\fR[\fB:\fIport\fR]
+]
+.B \-x
 .I destination
 .SH DESCRIPTION
-\fIlpadmin\fR configures printer and class queues provided by
-CUPS. It can also be used to set the server default printer or
-class.
+\fBlpadmin\fR configures printer and class queues provided by CUPS.
+It can also be used to set the server default printer or class.
 .LP
-When specified before the \fI-d\fR, \fI-p\fR, or \fI-x\fR
-options, the \fI-E\fR option forces encryption when connecting to
-the server.
+When specified before the \fI-d\fR, \fI-p\fR, or \fI-x\fR options, the \fI-E\fR option forces encryption when connecting to the server.
 .LP
-The first form of the command (\fI-d\fR) sets the default printer
-or class to \fIdestination\fR.  Subsequent print jobs submitted
-via the \fIlp(1)\fR or \fIlpr(1)\fR commands will use this
-destination unless the user specifies otherwise with the
-\fIlpoptions(1)\fR command.
+The first form of the command (\fI-d\fR) sets the default printer or class to \fIdestination\fR.
+Subsequent print jobs submitted via the
+.BR lp (1)
+or
+.BR lpr (1)
+commands will use this destination unless the user specifies otherwise with the
+.BR lpoptions (1)
+command.
 .LP
-The second form of the command (\fI-p\fR) configures the named
-printer or class.  The additional options are described below.
+The second form of the command (\fI-p\fR) configures the named printer or class.  The additional options are described below.
 .LP
-The third form of the command (\fI-x\fR) deletes the printer or
-class \fIdestination\fR. Any jobs that are pending for the
-destination will be removed and any job that is currently printed
-will be aborted.
-.SH CONFIGURATION OPTIONS
-The following options are recognized when configuring a printer
-queue:
-.TP 5
--c class
-.br
-Adds the named \fIprinter\fR to \fIclass\fR.  If \fIclass\fR does
-not exist it is created automatically.
+The third form of the command (\fI-x\fR) deletes the printer or class \fIdestination\fR.
+Any jobs that are pending for the destination will be removed and any job that is currently printed will be aborted.
+.SH OPTIONS
+The following options are recognized when configuring a printer queue:
 .TP 5
--i interface
-.br
-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\-c \fIclass\fR
+Adds the named \fIprinter\fR to \fIclass\fR.
+If \fIclass\fR does not exist it is created automatically.
 .TP 5
--m model
-.br
-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. Use the \fI-m\fR
-option with the \fIlpinfo(8)\fR command to get a list of supported models.
+\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.
 .TP 5
--o cupsIPPSupplies=true
+\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.
+Use the \fI-m\fR option with the
+.BR lpinfo (8)
+command to get a list of supported models.
 .TP 5
--o cupsIPPSupplies=false
-.br
+\fB\-o cupsIPPSupplies=true\fR
+.TP 5
+\fB\-o cupsIPPSupplies=false\fR
 Specifies whether IPP supply level values should be reported.
 .TP 5
--o cupsSNMPSupplies=true
+\fB\-o cupsSNMPSupplies=true\fR
 .TP 5
--o cupsSNMPSupplies=false
-.br
+\fB\-o cupsSNMPSupplies=false\fR
 Specifies whether SNMP supply level (RFC 3805) values should be reported.
 .TP 5
--o job-k-limit=value
-.br
-Sets the kilobyte limit for per-user quotas. The value is an
-integer number of kilobytes; one kilobyte is 1024 bytes.
+\fB\-o job\-k\-limit=\fIvalue\fR
+Sets the kilobyte limit for per-user quotas.
+The value is an integer number of kilobytes; one kilobyte is 1024 bytes.
 .TP 5
--o job-page-limit=value
-.br
-Sets the page limit for per-user quotas. The value is the integer
-number of pages that can be printed; double-sided pages are
-counted as two pages.
+\fB\-o job\-page\-limit=\fIvalue\fR
+Sets the page limit for per-user quotas.
+The value is the integer number of pages that can be printed; double-sided pages are counted as two pages.
 .TP 5
--o job-quota-period=value
-.br
-Sets the accounting period for per-user quotas. The value is an
-integer number of seconds; 86,400 seconds are in one day.
+\fB-o job\-quota\-period=\fIvalue\fR
+Sets the accounting period for per-user quotas.
+The value is an integer number of seconds; 86,400 seconds are in one day.
 .TP 5
--o job-sheets-default=banner
+\fB\-o job\-sheets\-default=\fIbanner\fR
 .TP 5
--o job-sheets-default=banner,banner
-.br
+\fB\-o job\-sheets\-default=\fIbanner\fB,\fIbanner\fR
 Sets the default banner page(s) to use for print jobs.
 .TP 5
--o name=value
-.br
-Sets a PPD option for the printer. PPD options can be listed using the \fI-l\fR
-option with the \fIlpoptions(1)\fR command.
-.TP 5
--o name-default=value
-.br
-Sets a default server-side option for the destination. Any print-time
-option can be defaulted, e.g. "-o cpi-default=17" to set the default
-"cpi" option value to 17.
-.TP 5
--o port-monitor=name
-.br
-Sets the binary communications program to use when printing,
-"none", "bcp", or "tbcp". The default program is "none". The
-specified port monitor must be listed in the printer's PPD file.
-.TP 5
--o printer-error-policy=name
-.br
-Sets the error policy to be used when the printer backend is
-unable to send the job to the printer. The name must be one of
-"abort-job", "retry-job", "retry-current-job", or "stop-printer". The default
-error policy is "stop-printer" for printers and "retry-current-job" for
+\fB\-o \fIname\fB=\fIvalue\fR
+Sets a PPD option for the printer.
+PPD options can be listed using the \fI-l\fR option with the
+.BR lpoptions (1)
+command.
+.TP 5
+\fB\-o \fIname\fB-default=\fIvalue\fR
+Sets a default server-side option for the destination.
+Any print-time option can be defaulted, e.g., "-o number-up-default=2" to set the default "number-up" option value to 2.
+.TP 5
+\fB\-o port\-monitor=\fIname\fR
+Sets the binary communications program to use when printing, "none", "bcp", or "tbcp".
+The default program is "none".
+The specified port monitor must be listed in the printer's PPD file.
+.TP 5
+\fB\-o printer-error-policy=\fIname\fR
+Sets the error policy to be used when the printer backend is unable to send the job to the printer.
+The name must be one of "abort-job", "retry-job", "retry-current-job", or "stop-printer".
+The default error policy is "stop-printer" for printers and "retry-current-job" for
 classes.
 .TP 5
--o printer-is-shared=true/false
-.br
+\fB\-o printer\-is\-shared=true\fR
+.TP 5
+\fB\-o printer\-is\-shared=false\fR
 Sets the destination to shared/published or unshared/unpublished.
-Shared/published destinations are publicly announced by the server
-on the LAN based on the browsing configuration in
-\fBcupsd.conf\fR, while unshared/unpublished destinations are not
-announced. The default value is "true".
+Shared/published destinations are publicly announced by the server on the LAN based on the browsing configuration in \fIcupsd.conf\fR, while unshared/unpublished destinations are not announced.
+The default value is "true".
 .TP 5
--o printer-op-policy=name
-.br
-Sets the IPP operation policy associated with the destination. The
-name must be defined in the \fBcupsd.conf\fR in a Policy section.
+\fB\-o printer-op-policy=\fIname\fR
+Sets the IPP operation policy associated with the destination.
+The name must be defined in the \fIcupsd.conf\fR in a Policy section.
 The default operation policy is "default".
 .TP 5
--R name-default
-.br
+\fB\-R \fIname\fB\-default\fR
 Deletes the named option from \fIprinter\fR.
 .TP 5
--r class
-.br
-Removes the named \fIprinter\fR from \fIclass\fR.  If the
-resulting class becomes empty it is removed.
+\fB\-r \fIclass\fR
+Removes the named \fIprinter\fR from \fIclass\fR.
+If the resulting class becomes empty it is removed.
 .TP 5
--u allow:user,user,@group
+\fB-u allow:\fR{\fIuser\fR|\fB@\fIgroup\fR}{\fB,\fIuser\fR|\fB,@\fIgroup\fR}*
 .TP 5
--u deny:user,user,@group
+\fB-u deny:\fR{\fIuser\fR|\fB@\fIgroup\fR}{\fB,\fIuser\fR|\fB,@\fIgroup\fR}*
 .TP 5
--u allow:all
+\fB\-u allow:all\fR
 .TP 5
--u deny:none
-.br
-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.
+\fB\-u deny:none\fR
+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.
 .TP 5
--v "device-uri"
-.br
-Sets the \fIdevice-uri\fR attribute of the printer queue. Use the \fI-v\fR
-option with the \fIlpinfo(8)\fR command to get a list of supported device URIs
-and schemes.
+\fB\-v "\fIdevice-uri\fB"\fR
+Sets the \fIdevice-uri\fR attribute of the printer queue.
+Use the \fI-v\fR option with the
+.BR lpinfo (8)
+command to get a list of supported device URIs and schemes.
 .TP 5
--D "info"
-.br
+\fB\-D "\fIinfo\fB"\fR
 Provides a textual description of the destination.
 .TP 5
--E
-.br
+.B \-E
 Enables the destination and accepts jobs; this is the same as running the
-\fIcupsaccept(8)\fR and \fIcupsenable(8)\fR programs on the destination.
+.BR cupsaccept (8)
+and
+.BR cupsenable (8)
+programs on the destination.
 .TP 5
--L "location"
-.br
+\fB\-L "\fIlocation\fB"\fR
 Provides a textual location of the destination.
 .TP 5
--P ppd-file
-.br
-Specifies a PostScript Printer Description file to use with the
-printer. If specified, this option overrides the \fI-i\fR option
-(interface script).
-.SH COMPATIBILITY
-Unlike the System V printing system, CUPS allows printer names to
-contain any printable character except SPACE, TAB, "/", or "#".
+\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.
-Finally, the CUPS version of \fIlpadmin\fR may ask the user for
-an access password depending on the printing system
-configuration. This differs from the System V version which
-requires the root user to execute this command.
-.SH LIMITATIONS
-The CUPS version of \fIlpadmin\fR does not support all of the
-System V or Solaris printing system configuration options.
+Finally, the CUPS version of \fBlpadmin\fR may ask the user for an access password depending on the printing system configuration.
+This differs from the System V version which requires the root user to execute this command.
+.SH NOTES
+The CUPS version of \fBlpadmin\fR does not support all of the System V or Solaris printing system configuration options.
 .SH SEE ALSO
-\fIcupsaccept(8)\fR, \fIcupsenable(8)\fR, \fIlpinfo(8)\fR,
-\fIlpoptions(1)\fR,
-.br
-http://localhost:631/help
+.BR cupsaccept (8),
+.BR cupsenable (8),
+.BR lpinfo (8),
+.BR lpoptions (1),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: lpadmin.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: lpadmin.man 11922 2014-06-11 23:35:37Z msweet $".
 .\"
index bbee8074c542eaf974e3388fa98dd94b24101cf4..3b1553d1a86fb82754cef9476c420a9fc6429dd6 100644 (file)
@@ -1,18 +1,18 @@
 .\"
-.\" "$Id: lpc.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: lpc.man 11923 2014-06-12 12:55:34Z msweet $"
 .\"
-.\"   lpc man page for CUPS.
+.\" lpc man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH lpc 8 "CUPS" "3 November 2008" "Apple Inc."
+.TH lpc 8 "CUPS" "11 June 2014" "Apple Inc."
 .SH NAME
 lpc \- line printer control program
 .SH SYNOPSIS
@@ -23,49 +23,42 @@ lpc \- line printer control program
 .I parameter(s)
 ] ]
 .SH DESCRIPTION
-\fIlpc\fR provides limited control over printer and class queues
-provided by CUPS. It can also be used to query the state of
-queues.
+\fBlpc\fR provides limited control over printer and class queues provided by CUPS. It can also be used to query the state of queues.
 .LP
-If no command is specified on the command-line, \fRlpc\fR will
-display a prompt and accept commands from the standard input.
-.SH COMMANDS
-The \fIlpc\fR program accepts a subset of commands accepted by
-the Berkeley \fIlpc\fR program of the same name:
+If no command is specified on the command-line, \fBlpc\fR displays a prompt and accepts commands from the standard input.
+.SS COMMANDS
+The \fBlpc\fR program accepts a subset of commands accepted by the Berkeley \fBlpc\fR program of the same name:
 .TP 5
-exit
-.br
+.B exit
 Exits the command interpreter.
 .TP 5
-help [command]
+\fBhelp \fR[\fIcommand\fR]
 .TP 5
-? [command]
-.br
+\fB? \fR[\fIcommand\fR]
 Displays a short help message.
 .TP 5
-quit
-.br
+.B quit
 Exits the command interpreter.
 .TP 5
-status [queue]
-.br
+\fBstatus \fR[\fIqueue\fR]
 Displays the status of one or more printer or class queues.
-.SH LIMITATIONS
-Since \fIlpc\fR is geared towards the Berkeley printing system,
-it is impossible to use \fIlpc\fR to configure printer or class
-queues provided by CUPS.  To configure printer or class queues
-you must use the \fIlpadmin(8)\fR command or another
-CUPS-compatible client with that functionality.
-.SH COMPATIBILITY
-The CUPS version of \fIlpc\fR does not implement all of the
-standard Berkeley or LPRng commands.
+.SH NOTES
+Since \fBlpc\fR is geared towards the Berkeley printing system, it is impossible to use \fBlpc\fR to configure printer or class queues provided by CUPS.
+To configure printer or class queues you must use the
+.BR lpadmin (8)
+command or another CUPS-compatible client with that functionality.
 .SH SEE ALSO
-\fIcancel(1)\fR, \fIcupsaccept(8)\fR, \fIcupsenable(8)\fR,
-\fIlp(1)\fR, \fIlpr(1)\fR, \fIlprm(1)\fR, \fIlpstat(1)\fR,
-.br
-http://localhost:631/help
+.BR cancel (1),
+.BR cupsaccept (8),
+.BR cupsenable (8),
+.BR lp (1),
+.BR lpadmin (8),
+.BR lpr (1),
+.BR lprm (1),
+.BR lpstat (1),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: lpc.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: lpc.man 11923 2014-06-12 12:55:34Z msweet $".
 .\"
index 0521c3a0cc3d0463ac47e5aa3590f367d1ae7306..850a4122716959b1d818881fce153a3ce6f0c6cd 100644 (file)
 .\"
-.\" "$Id: lpinfo.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: lpinfo.man 11923 2014-06-12 12:55:34Z msweet $"
 .\"
-.\"   lpinfo man page for CUPS.
+.\" lpinfo man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH lpinfo 8 "CUPS" "5 December 2008" "Apple Inc."
+.TH lpinfo 8 "CUPS" "12 June 2014" "Apple Inc."
 .SH NAME
 lpinfo \- show available devices or drivers
 .SH SYNOPSIS
 .B lpinfo
-[ -E ] [ -U
+[
+.B \-E
+] [
+.B \-U
 .I username
-] [ -h
-.I server[:port]
-] [ -l ] [ --device-id
+] [
+\fB\-h \fIserver\fR[\fB:\fIport\fR]
+] [
+.B \-l
+] [
+.B \-\-device\-id
 .I device-id-string
-] [ --exclude-schemes
+] [
+.B \-\-exclude\-schemes
 .I scheme-list
-] [ --include-schemes
+] [
+.B \-\-include\-schemes
 .I scheme-list
-] [ --language
+] [
+.B \-\-language
 .I locale
-] [ --make-and-model
+] [
+.B \-\-make\-and\-model
 .I name
-] [ --product
+] [
+.B \-\-product
 .I name
-] -m
+]
+.B \-m
 .br
 .B lpinfo
-[ -E ] [ -U
+[
+.B \-E
+] [
+.B \-U
 .I username
-] [ -h
-.I server[:port]
-] [ -l ] [ --exclude-schemes
+] [
+\fB\-h \fIserver\fR[\fB:\fIport\fR]
+] [
+.B \-l
+] [
+.B \-\-exclude\-schemes
 .I scheme-list
-] [ --include-schemes
+] [
+.B \-\-include\-schemes
 .I scheme-list
-] [ --timeout
+] [
+.B \-\-timeout
 .I seconds
-] -v
+]
+.B \-v
 .SH DESCRIPTION
-\fIlpinfo\fR lists the available devices or drivers known to the
-CUPS server. The first form (\fI-m\fR) lists the available
-drivers, while the second form (\fI-v\fR) lists the available
-devices.
+\fBlpinfo\fR lists the available devices or drivers known to the CUPS server.
+The first form (\fI-m\fR) lists the available drivers, while the second form (\fI-v\fR) lists the available devices.
 .SH OPTIONS
-\fIlpinfo\fR accepts the following options:
+\fBlpinfo\fR accepts the following options:
 .TP 5
--E
-.br
+.B \-E
 Forces encryption when connecting to the server.
 .TP 5
--U username
-.br
+\fB\-U \fIusername\fR
 Sets the username to use when connecting to the server.
 .TP 5
--h server[:port]
-.br
+\fB\-h \fIserver\fR[\fB:\fIport\fR]
 Selects an alternate server.
 .TP 5
--l
-.br
+.B \-l
 Shows a "long" listing of devices or drivers.
 .TP 5
---device-id device-id-string
-.br
-Specifies the IEEE-1284 device ID to match when listing drivers with the
-\fI-m\fR option.
+\fB\-\-device\-id \fIdevice-id-string\fR
+Specifies the IEEE-1284 device ID to match when listing drivers with the \fI\-m\fR option.
 .TP 5
---exclude-schemes scheme-list
-.br
-Specifies a comma-separated list of device or PPD schemes that should be
-excluded from the results. Static PPD files use the "file" scheme.
+\fB\-\-exclude\-schemes \fIscheme-list\fR
+Specifies a comma-delimited list of device or PPD schemes that should be excluded from the results.
+Static PPD files use the "file" scheme.
 .TP 5
---include-schemes scheme-list
-.br
-Specifies a comma-separated list of device or PPD schemes that should be
-included in the results. Static PPD files use the "file" scheme.
+\fB\-\-include\-schemes \fIscheme-list\fR
+Specifies a comma-delimited list of device or PPD schemes that should be included in the results.
+Static PPD files use the "file" scheme.
 .TP 5
---language locale
-.br
-Specifies the language to match when listing drivers with the \fI-m\fR option.
+\fB\-\-language \fIlocale\fR
+Specifies the language to match when listing drivers with the \fI\-m\fR option.
 .TP 5
---make-and-model name
-.br
-Specifies the make and model to match when listing drivers with the \fI-m\fR
-option.
+\fB\-\-make\-and\-model \fIname\fR
+Specifies the make and model to match when listing drivers with the \fI\-m\fR option.
 .TP 5
---product name
-.br
-Specifies the product to match when listing drivers with the \fI-m\fR option.
+\fB\-\-product \fIname\fR
+Specifies the product to match when listing drivers with the \fI\-m\fR option.
 .TP 5
---timeout seconds
-.br
-Specifies the timeout when listing devices with the \fI-v\fR option.
-.SH COMPATIBILITY
+\fB\-\-timeout \fIseconds\fR
+Specifies the timeout when listing devices with the \fI\-v\fR option.
+.SH CONFORMING TO
 The \fIlpinfo\fR command is unique to CUPS.
+.SH EXAMPLES
+List all devices:
+.nf
+
+    lpinfo \-v
+
+.fi
+List all drivers:
+.nf
+
+    lpinfo \-m
+
+.fi
+List drivers matching "HP LaserJet":
+.nf
+
+    lpinfo \-\-make\-and\-model "HP LaserJet" \-m
+.fi
 .SH SEE ALSO
-\fIlpadmin(8)\fR,
-.br
-http://localhost:631/help
+.BR lpadmin (8),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: lpinfo.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: lpinfo.man 11923 2014-06-12 12:55:34Z msweet $".
 .\"
index e7819d1cb350a64da87318d6417a841805b1e0e8..9641b5ae233d5e49a8a72f7c37b5fd6568e676ea 100644 (file)
@@ -1,66 +1,82 @@
 .\"
-.\" "$Id: lpmove.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: lpmove.man 11923 2014-06-12 12:55:34Z msweet $"
 .\"
-.\"   lpmove man page for CUPS.
+.\" lpmove man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH lpmove 8 "CUPS" "12 February 2006" "Apple Inc."
+.TH lpmove 8 "CUPS" "12 June 2014" "Apple Inc."
 .SH NAME
 lpmove \- move a job or all jobs to a new destination
 .SH SYNOPSIS
 .B lpmove
-[ -E ] [ -h
-.I server[:port]
-] [ -U
+[
+.B \-E
+] [
+\fB\-h \fIserver\fR[\fB:\fIport\fR]
+] [
+.B \-U
 .I username
 ]
-.I job destination
+.I job
+.I destination
 .br
 .B lpmove
-[ -E ] [ -h
-.I server[:port]
-] [ -U
+[
+.B \-E
+] [
+\fB\-h \fIserver\fR[\fB:\fIport\fR]
+] [
+.B \-U
 .I username
 ]
-.I source destination
+.I source
+.I destination
 .SH DESCRIPTION
-\fBlpmove\fR moves the specified \fIjob\fR or all jobs from
-\fIsource\fR to \fIdestination\fR. \fIjob\fR can be the job ID
-number or the old destination and job ID:
-.br
-.nf
-
-     lpmove 123 newprinter
-     lpmove oldprinter-123 newprinter
-.fi
+\fBlpmove\fR moves the specified \fIjob\fR or all jobs from \fIsource\fR to \fIdestination\fR. \fIjob\fR can be the job ID number or the old destination and job ID.
 .SH OPTIONS
-The \fIlpmove\fR command supports the following options:
+The \fBlpmove\fR command supports the following options:
 .TP 5
--E
-.br
+.B \-E
 Forces encryption when connecting to the server.
 .TP 5
--U username
-.br
+\fB\-U \fIusername\fR
 Specifies an alternate username.
 .TP 5
--h server[:port]
-.br
+\fB\-h \fIserver\fR[\fB:\fIport\fR]
 Specifies an alternate server.
+.SH EXAMPLES
+Move job 123 from "oldprinter" to "newprinter":
+.nf
+
+    lpmove 123 newprinter
+
+            \fIor\fR
+
+    lpmove oldprinter-123 newprinter
+
+.fi
+Move all jobs from "oldprinter" to "newprinter":
+.nf
+
+    lpmove oldprinter newprinter
+.fi
 .SH SEE ALSO
-\fIcancel(1)\fR, \fIlp(1)\fR,
+.BR cancel (1),
+.BR lp (1),
+.BR lpr (1),
+.BR lprm (1),
 .br
-http://localhost:631/help
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: lpmove.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: lpmove.man 11923 2014-06-12 12:55:34Z msweet $".
 .\"
index 88072f93599bc0e110ffa9adbae039ca43186613..3c8f22d5be0055bf113a17dc9bfd9aaa586c9bdb 100644 (file)
 .\"
-.\" "$Id: lpoptions.man.in 11109 2013-07-08 21:15:13Z msweet $"
+.\" "$Id: lpoptions.man.in 11923 2014-06-12 12:55:34Z msweet $"
 .\"
-.\"   lpoptions man page for CUPS.
+.\" lpoptions man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH lpoptions 1 "CUPS" "8 July 2013" "Apple Inc."
+.TH lpoptions 1 "CUPS" "12 June 2014" "Apple Inc."
 .SH NAME
 lpoptions \- display or set printer options and defaults
 .SH SYNOPSIS
 .B lpoptions
-[ -E ] [ -U
+[
+.B \-E
+] [
+.B \-U
 .I username
-] [ -h
-.I server[:port]
-] -d
-.I destination[/instance]
-[ -o
-.I option[=value]
-] ... [ -o
-.I option[=value]
+] [
+\fB\-h \fIserver\fR[\fB:\fIport\fR]
+]
+\fB\-d \fIdestination\fR[\fB/\fIinstance\fR]
+[
+.B \-l
 ]
 .br
 .B lpoptions
-[ -E ] [ -U
+[
+.B \-E
+] [
+.B \-U
 .I username
-] [ -h
-.I server[:port]
-] [ -p
-.I destination[/instance]
-] -l
+] [
+\fB\-h \fIserver\fR[\fB:\fIport\fR]
+] [
+\fB\-p \fIdestination\fR[\fB/\fIinstance\fR]
+]
+\fB\-o \fIoption\fR[\fB=\fIvalue\fR] ...
 .br
 .B lpoptions
-[ -E ] [ -U
+[
+.B \-E
+] [
+.B \-U
 .I username
-] [ -h
-.I server[:port]
-] [ -o
-.I option[=value]
-] ... [ -o
-.I option[=value]
-] [ -p
-.I destination[/instance]
-] -r
+] [
+\fB\-h \fIserver\fR[\fB:\fIport\fR]
+] [
+\fB\-p \fIdestination\fR[\fB/\fIinstance\fR]
+]
+.B \-r
 .I option
 .br
 .B lpoptions
-[ -E ] [ -U
+[
+.B \-E
+] [
+.B \-U
 .I username
-] [ -h
-.I server[:port]
-] -x
-.I destination[/instance]
+] [
+\fB\-h \fIserver\fR[\fB:\fIport\fR]
+]
+\fB\-x \fIdestination\fR[\fB/\fIinstance\fR]
 .SH DESCRIPTION
-\fIlpoptions\fR displays or sets printer options and defaults.
-\fIlpoptions\fR shows the default printer options when run with no
-arguments. Other options include:
+\fBlpoptions\fR displays or sets printer options and defaults.
+If no printer is specified using the \fI\-p\fR option, the default printer is used as described in
+.BR lp (1).
+.LP
+If no \fI\-l\fR, \fI\-o\fR, or \fI\-r\fR options are specified, the current options are reported on the standard output.
+.LP
+Options set with the \fBlpoptions\fR command are used by the
+.BR lp (1)
+and
+.BR lpr (1)
+commands when submitting jobs.
+.LP
+When run by the root user, \fBlpoptions\fR gets and sets default options and instances for all users in the \fI/etc/cups/lpoptions\fR file.
+Otherwise, the per-user defaults are managed in the \fI~/.cups/lpoptions\fR file.
+.SH OPTIONS
+\fBlpoptions\fR supports the following options:
 .TP 5
--E
-.br
+.B \-E
 Enables encryption when communicating with the CUPS server.
 .TP 5
--U username
-.br
+\fB\-U \fIusername\fR
 Uses an alternate username.
 .TP 5
--d destination[/instance]
-.br
-Sets the user default printer to \fIdestination\fR. If \fIinstance\fR
-is supplied then that particular instance is used. This option
-overrides the system default printer for the current user.
+\fB\-d \fIdestination\fR[\fB/\fIinstance\fR]
+Sets the user default printer to \fIdestination\fR.
+If \fIinstance\fR is supplied then that particular instance is used.
+This option overrides the system default printer for the current user.
 .TP 5
--h server[:port]
-.br
+\fB\-h \fIserver\fR[\fB:\fIport\fR]
 Uses an alternate server.
 .TP 5
--l
-.br
+.B \-l
 Lists the printer specific options and their current settings.
 .TP 5
--o option[=value]
-.br
+\fB\-o \fIoption\fR[\fB=\fIvalue\fR]
 Specifies a new option for the named destination.
 .TP 5
--p destination[/instance]
-.br
-Sets the destination and instance, if specified, for any options
-that follow. If the named instance does not exist then it is
-created.
+\fB\-p \fIdestination\fR[\fB/\fIinstance\fR]
+Sets the destination and instance, if specified, for any options that follow.
+If the named instance does not exist then it is created.
+Destinations can only be created using the
+.BR lpadmin (8)
+program.
 .TP 5
--r option
-.br
-Removes the specified option for the named destination.
+\fB\-r \fIoption\fR
+Removes the specified option from the named destination.
 .TP 5
--x destination[/instance]
-.br
-Removes the options for the named destination and instance, if
-specified. If the named instance does not exist then this does
-nothing.
-.LP
-If no options are specified using the \fI-o\fR option, then the
-current options for the named printer are reported on the
-standard output.
-.LP
-Options set with the \fIlpoptions\fR command are used by the
-\fIlp(1)\fR and \fIlpr(1)\fR commands when submitting jobs.
-.SH ROOT ACCOUNT OPTIONS
-When run by the root user, \fIlpoptions\fR gets and sets default
-options and instances for \fIall users\fR in the
-/etc/cups/lpoptions file.
-.SH COMPATIBILITY
-The \fIlpoptions\fR command is unique to CUPS.
+\fB\-x \fIdestination\fR[\fB/\fIinstance\fR]
+Removes the options for the named destination and instance, if specified.
+If the named instance does not exist then this does nothing.
+Destinations can only be removed using the
+.BR lpadmin (8)
+command.
 .SH FILES
-~/.cups/lpoptions - user defaults and instances created by non-root
-users.
+\fI~/.cups/lpoptions\fR - user defaults and instances created by non-root users.
 .br
-/etc/cups/lpoptions - system-wide defaults and instances
-created by the root user.
+\fI/etc/cups/lpoptions\fR - system-wide defaults and instances created by the root user.
+.SH CONFORMING TO
+The \fBlpoptions\fR command is unique to CUPS.
 .SH SEE ALSO
-\fIcancel(1)\fR, \fIlp(1)\fR, \fIlpadmin(8)\fR, \fIlpr(1)\fR,
-.br
-http://localhost:631/help
+.BR cancel (1),
+.BR lp (1),
+.BR lpadmin (8),
+.BR lpr (1),
+.BR lprm (1),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: lpoptions.man.in 11109 2013-07-08 21:15:13Z msweet $".
+.\" End of "$Id: lpoptions.man.in 11923 2014-06-12 12:55:34Z msweet $".
 .\"
diff --git a/man/lppasswd.man b/man/lppasswd.man
deleted file mode 100644 (file)
index f21726d..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-.\"
-.\" "$Id: lppasswd.man 11022 2013-06-06 22:14:09Z msweet $"
-.\"
-.\"   lpadmin man page for CUPS.
-.\"
-.\"   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/".
-.\"
-.TH lppasswd 1 "CUPS" "22 February 2008" "Apple Inc."
-.SH NAME
-lppasswd \- add, change, or delete digest passwords.
-.SH SYNOPSIS
-.B lppasswd
-[
-.I username
-]
-.br
-.B lppasswd
--a [ -g
-.I groupname
-]
-.I username
-.br
-.B lppasswd
--x
-.I username
-.SH DESCRIPTION
-\fIlppasswd\fR adds, changes, or deletes passwords in the CUPS
-digest password file, \fIpasswd.md5\fR. When run by a normal
-user, \fIlppasswd\fR will prompt for the old and new passwords.
-When run by the super-user, \fIlppasswd\fR can add new accounts
-(\fI-a username\fR), change existing accounts (\fIusername\fR),
-or delete accounts (\fI-x username\fR) in the digest password
-file. Digest usernames do not have to match local UNIX usernames.
-.SH OPTIONS
-\fIlppasswd\fR supports the following options:
-.TP 5
--g groupname
-.br
-Specifies a group other than the default system group.
-.SH SECURITY ISSUES
-By default, the \fIlppasswd\fR program is not installed to allow ordinary
-users to change their passwords. To enable this, the \fIlppasswd\fR command
-must be made setuid to root with the command:
-.br
-.nf
-chmod u+s lppasswd
-.fi
-.PP
-While every attempt has been made to make \fIlppasswd\fR secure against
-exploits that could grant super-user privileges to unprivileged users,
-paranoid system administrators may wish to use Basic authentication with
-accounts managed by PAM instead.
-.SH SEE ALSO
-\fIlp(1)\fR, \fIlpr(1)\fR,
-.br
-http://localhost:631/help
-.SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
-.\"
-.\" End of "$Id: lppasswd.man 11022 2013-06-06 22:14:09Z msweet $".
-.\"
index d922b0ae4a42a06b0a6d97601f40ce69e2f8ae23..6607924baaeff6c25209a5feae09d8ea1fcd4ec2 100644 (file)
@@ -1,72 +1,72 @@
 .\"
-.\" "$Id: lpq.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: lpq.man 11924 2014-06-12 19:10:33Z msweet $"
 .\"
-.\"   lpq man page for CUPS.
+.\" lpq man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH lpq 1 "CUPS" "16 June 2008" "Apple Inc."
+.TH lpq 1 "CUPS" "12 June 2014" "Apple Inc."
 .SH NAME
 lpq \- show printer queue status
 .SH SYNOPSIS
 .B lpq
-[ -E ] [ -U
+[
+.B \-E
+] [
+.B \-U
 .I username
-] [ -h
-.I server[:port]
-] [ -P
-.I destination[/instance]
-] [ -a ] [ -l ] [
-.I +interval
+] [
+\fB\-h \fIserver\fR[\fB:\fIport\fR]
+] [
+\fB\-P \fIdestination\fR[\fB/\fIinstance\fR]
+] [
+.B \-a
+] [
+.B \-l
+] [
+.BI + interval
 ]
 .SH DESCRIPTION
-\fIlpq\fR shows the current print queue status on the named
-printer. Jobs queued on the default destination will be shown if
-no printer or class is specified on the command-line.
+\fBlpq\fR shows the current print queue status on the named printer.
+Jobs queued on the default destination will be shown if no printer or class is specified on the command-line.
 .LP
-The \fI+interval\fR option allows you to continuously report the
-jobs in the queue until the queue is empty; the list of jobs is
-shown once every \fIinterval\fR seconds.
+The \fI+interval\fR option allows you to continuously report the jobs in the queue until the queue is empty; the list of jobs is shown once every \fIinterval\fR seconds.
 .SH OPTIONS
-\fIlpq\fR supports the following options:
+\fBlpq\fR supports the following options:
 .TP 5
--E
-.br
+.B \-E
 Forces encryption when connecting to the server.
 .TP 5
--P destination[/instance]
-.br
+\fB\-P \fIdestination\fR[\fB/\fIinstance\fR]
 Specifies an alternate printer or class name.
 .TP 5
--U username
-.br
+\fB\-U \fIusername\fR
 Specifies an alternate username.
 .TP 5
--a
-.br
+.B \-a
 Reports jobs on all printers.
 .TP 5
--h server[:port]
-.br
+\fB\-h \fIserver\fR[\fB:\fIport\fR]
 Specifies an alternate server.
 .TP 5
--l
-.br
+.B \-l
 Requests a more verbose (long) reporting format.
 .SH SEE ALSO
-\fIcancel(1)\fR, \fIlp(1)\fR, \fIlpr(1)\fR, \fIlprm(1)\fR,
-\fIlpstat(1)\fR,
-.br
-http://localhost:631/help
+.BR cancel (1),
+.BR lp (1),
+.BR lpr (1),
+.BR lprm (1),
+.BR lpstat (1),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: lpq.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: lpq.man 11924 2014-06-12 19:10:33Z msweet $".
 .\"
index 2325f8eae327da3673e6e26c7917369df9e2716f..7cd400afaa5cf294fb0cab88b84df07d69aa7453 100644 (file)
 .\"
-.\" "$Id: lpr.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: lpr.man 11922 2014-06-11 23:35:37Z msweet $"
 .\"
-.\"   lpr man page for CUPS.
+.\" lpr man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 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/".
+.\" These coded instructions, statements, and computer programs 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 lpr 1 "CUPS" "29 August 2008" "Apple Inc."
+.TH lpr 1 "CUPS" "11 June 2014" "Apple Inc."
 .SH NAME
 lpr \- print files
 .SH SYNOPSIS
 .B lpr
-[ -E ] [ -H
-.I server[:port]
-] [ -U
+[
+.B \-E
+] [
+\fB\-H \fIserver\fR[\fB:\fIport\fR]
+] [
+.B \-U
 .I username
-] [ -P
-.I destination[/instance]
-] [ -#
+] [
+\fB\-P \fIdestination\fR[\fB/\fIinstance\fR]
+] [
+.B \-#
 .I num-copies
-[ -h ] [ -l ] [ -m ] [ -o
-.I option[=value]
-] [ -p] [ -q ] [ -r ] [ -C/J/T
+[
+.B \-h
+] [
+.B \-l
+] [
+.B \-m
+] [
+\fB\-o \fIoption\fR[\fB=\fIvalue\fR]
+] [
+.B \-p
+] [
+.B \-q
+] [
+.B \-r
+] [
+.B \-C
+.I title
+] [
+.B \-J
+.I title
+] [
+.B \-T
 .I title
 ] [
 .I file(s)
 ]
 .SH DESCRIPTION
-\fIlpr\fR submits files for printing. Files named on the command
-line are sent to the named printer (or the default destination if no
-destination is specified). If no files are listed on the command-line,
-\fIlpr\fR reads the print file from the standard input.
-.SH THE DEFAULT DESTINATION
-CUPS provides many ways to set the default destination. The "LPDEST" and
-"PRINTER" environment variables are consulted first. If neither are set,
-the current default set using the \fIlpoptions(1)\fR command is used,
-followed by the default set using the \fIlpadmin(8)\fR command.
+\fBlpr\fR submits files for printing.
+Files named on the command line are sent to the named printer or the default destination if no destination is specified.
+If no files are listed on the command-line, \fBlpr\fR reads the print file from the standard input.
+.SS THE DEFAULT DESTINATION
+CUPS provides many ways to set the default destination. The \fBLPDEST\fR and \fBPRINTER\fR environment variables are consulted first.
+If neither are set, the current default set using the
+.BR lpoptions (1)
+command is used, followed by the default set using the
+.BR lpadmin (8)
+command.
 .SH OPTIONS
 The following options are recognized by \fIlpr\fR:
 .TP 5
--E
-.br
+.B \-E
 Forces encryption when connecting to the server.
 .TP 5
--H server[:port]
-.br
+\fB\-H \fIserver\fR[\fB:\fIport\fR]
 Specifies an alternate server.
 .TP 5
--C "name"
+\fB\-C "\fIname\fB"\fR
 .TP 5
--J "name"
+\fB\-J "\fIname\fB"\fR
 .TP 5
--T "name"
-.br
-Sets the job name.
+\fB\-T "\fIname\fB"\fR
+Sets the job name/title.
 .TP 5
--P destination[/instance]
-.br
+\fB\-P \fIdestination\fR[\fB/\fIinstance\fR]
 Prints files to the named printer.
 .TP 5
--U username
-.br
+\fB\-U \fIusername\fR
 Specifies an alternate username.
 .TP 5
--# \fIcopies\fR
-.br
-Sets the number of copies to print from 1 to 100.
+\fB\-# \fIcopies\fR
+Sets the number of copies to print.
 .TP 5
--h
-.br
-Disables banner printing. This option is equivalent to "-o
-job-sheets=none".
+.B \-h
+Disables banner printing. This option is equivalent to \fI-o job\-sheets=none\fR.
 .TP 5
--l
-.br
-Specifies that the print file is already formatted for the
-destination and should be sent without filtering. This option is
-equivalent to "-o raw".
+.B \-l
+Specifies that the print file is already formatted for the destination and should be sent without filtering.
+This option is equivalent to \fI-o raw\fR.
 .TP 5
--m
-.br
+.B \-m
 Send an email on job completion.
 .TP 5
--o option[=value]
-.br
+\fB\-o \fIoption\fR[\fB=\fIvalue\fR]
 Sets a job option.
 .TP 5
--p
-.br
-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 "-o prettyprint" and is only useful when
-printing text files.
+.B \-p
+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 \fI\-o prettyprint\fR and is only useful when printing text files.
 .TP 5
--q
-.br
+.B \-q
 Hold job for printing.
 .TP 5
--r
-.br
-Specifies that the named print files should be deleted after
-printing them.
-.SH COMPATIBILITY
-The "c", "d", "f", "g", "i", "n", "t", "v", and "w" options
-are not supported by CUPS and produce a warning message if used.
+.B \-r
+Specifies that the named print files should be deleted after submitting them.
+.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
+Print two copies of a document to the default printer:
+.nf
+
+    lpr -# 2 filename
+
+.fi
+Print a double-sided legal document to a printer called "foo":
+.nf
+
+    lpr -P foo -o media=legal -o sides=two-sided-long-edge filename
+
+.fi
+Print a presentation document 2-up to a printer called "foo":
+.nf
+
+    lpr -P foo -o number-up=2 filename
+.fi
 .SH SEE ALSO
-\fIcancel(1)\fR, \fIlp(1)\fR, \fIlpadmin(8)\fR, \fIlpoptions(1)\fR,
-\fIlpq(1)\fR, \fIlprm(1)\fR, \fIlpstat(1)\fR,
-.br
-http://localhost:631/help
+.BR cancel (1),
+.BR lp (1),
+.BR lpadmin (8),
+.BR lpoptions (1),
+.BR lpq (1),
+.BR lprm (1),
+.BR lpstat (1),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: lpr.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: lpr.man 11922 2014-06-11 23:35:37Z msweet $".
 .\"
index 33851fb6bdc3381bd91fcaa7606c346063115cf6..41071b983e1c6539d080f8b82716e088175d2dab 100644 (file)
@@ -1,65 +1,90 @@
 .\"
-.\" "$Id: lprm.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: lprm.man 11893 2014-05-23 02:45:48Z msweet $"
 .\"
-.\"   lprm man page for CUPS.
+.\" lprm man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH lprm 1 "CUPS" "28 August 2009" "Apple Inc."
+.TH lprm 1 "CUPS" "22 May 2014" "Apple Inc."
 .SH NAME
 lprm \- cancel print jobs
 .SH SYNOPSIS
 .B lprm
-[ -E ] [ -U
+[
+.B \-E
+] [
+.B \-U
 .I username
-] [ -h
-.I server[:port]
-] [ -P
-.I destination[/instance]
-] [ - ] [
-.I job ID(s)
+] [
+.B \-h
+.IR server [ :port ]
+] [
+.B \-P
+.IR destination [ /instance ]
+] [
+.B \-
+] [
+.I job-id(s)
 ]
 .SH DESCRIPTION
-\fIlprm\fR cancels print jobs that have been queued for printing.
-If no arguments are supplied, the current job on the default
-destination is cancelled. You can specify one or more job ID
-numbers to cancel those jobs or use the \fI-\fR option to cancel
-all jobs.
+.B lprm
+cancels print jobs that have been queued for printing.
+If no arguments are supplied, the current job on the default destination is canceled.
+You can specify one or more job ID numbers to cancel those jobs or use the \fI\-\fR option to cancel all jobs.
 .SH OPTIONS
-The \fIlprm\fR command supports the following options:
+The
+.B lprm
+command supports the following options:
 .TP 5
--E
-.br
+.B \-E
 Forces encryption when connecting to the server.
 .TP 5
--P destination[/instance]
-.br
+\fB\-P \fIdestination\fR[\fI/instance\fR]
 Specifies the destination printer or class.
 .TP 5
--U username
-.br
+\fB\-U \fIusername\fR
 Specifies an alternate username.
 .TP 5
--h server[:port]
-.br
+\fB\-h \fIserver\fR[\fI:port\fR]
 Specifies an alternate server.
-.SH COMPATIBILITY
-The CUPS version of \fIlprm\fR is compatible with the standard
-Berkeley \fIlprm\fR command.
+.SH CONFORMING TO
+The CUPS version of
+.B lprm
+is compatible with the standard Berkeley command of the same name.
+.SH EXAMPLES
+Cancel the current job on the default printer:
+.nf
+
+    lprm
+
+.fi
+Cancel job 1234:
+.nf
+
+    lprm 1234
+
+.fi
+Cancel all jobs:
+.nf
+
+    lprm \-
+.fi
 .SH SEE ALSO
-\fIcancel(1)\fR, \fIlp(1)\fR, \fIlpq(1)\fR, \fIlpr(1)\fR,
-\fIlpstat(1)\fR,
-.br
-http://localhost:631/help
+.BR cancel (1),
+.BR lp (1),
+.BR lpq (1),
+.BR lpr (1),
+.BR lpstat (1),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: lprm.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: lprm.man 11893 2014-05-23 02:45:48Z msweet $".
 .\"
index 021be700c4eb7afa3de4025e44971bbd61c6da50..7a8cce48301c347bfb7b0a459790853b89be6e0e 100644 (file)
 .\"
-.\" "$Id: lpstat.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: lpstat.man 11924 2014-06-12 19:10:33Z msweet $"
 .\"
-.\"   lpstat man page for CUPS.
+.\" lpstat man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH lpstat 1 "CUPS" "10 September 2008" "Apple Inc."
+.TH lpstat 1 "CUPS" "12 June 2014" "Apple Inc."
 .SH NAME
 lpstat \- print cups status information
 .SH SYNOPSIS
 .B lpstat
-[ -E ] [ -H ] [ -U
+[
+.B \-E
+] [
+.B \-H
+] [
+.B \-U
 .I username
-] [ -h
-.I hostname[:port]
-] [ -l ] [ -W
+] [
+\fB\-h \fIhostname\fR[\fB:\fIport\fR]
+] [
+.B \-l
+] [
+.B \-W
 .I which-jobs
-] [ -a [
+] [
+.B \-a
+[
 .I destination(s)
-] ] [ -c [
+] ] [
+.B \-c
+[
 .I class(es)
-] ] [ -d ] [ -o [
+] ] [
+.B \-d
+] [
+.B \-o
+[
 .I destination(s)
-] ] [ -p [
+] ] [
+.B \-p
+[
 .I printer(s)
-] ] [ -r ] [ -R ] [ -s ] [ -t ] [ -u [
+] ] [
+.B \-r
+] [
+.B \-R
+] [
+.B \-s
+] [
+.B \-t
+] [
+.B \-u
+[
 .I user(s)
-] ] [ -v [
+] ] [
+.B \-v
+[
 .I printer(s)
 ] ]
 .SH DESCRIPTION
-\fIlpstat\fR displays status information about the current
-classes, jobs, and printers. When run with no arguments,
-\fIlpstat\fR will list jobs queued by the current user.
+\fBlpstat\fR displays status information about the current classes, jobs, and printers.
+When run with no arguments, \fBlpstat\fR will list active jobs queued by the current user.
 .SH OPTIONS
-The \fIlpstat\fR command supports the following options:
+The \fBlpstat\fR command supports the following options:
 .TP 5
--E
-.br
+.B \-E
 Forces encryption when connecting to the server.
 .TP 5
--H
-.br
+.B \-H
 Shows the server hostname and port.
 .TP 5
--R
-.br
+.B \-R
 Shows the ranking of print jobs.
 .TP 5
--U username
-.br
+\fB\-U \fIusername\fR
 Specifies an alternate username.
 .TP 5
--W which-jobs
-.br
-Specifies which jobs to show, \fIcompleted\fR or
-\fInot-completed\fR (the default). This option \fImust\fR appear
-before the \fI-o\fR option and/or any printer names, otherwise
-the default (not-completed) value will be used in the request to
-the scheduler.
-.TP 5
--a [printer(s)]
-.br
-Shows the accepting state of printer queues. If no printers are
-specified then all printers are listed.
-.TP 5
--c [class(es)]
-.br
+\fB\-W \fIwhich-jobs\fR
+Specifies which jobs to show, "completed" or "not-completed" (the default).
+This option \fImust\fR appear before the \fI-o\fR option and/or any printer names, otherwise the default ("not-completed") value will be used in the request to the scheduler.
+.TP 5
+\fB\-a \fR[\fIprinter(s)\fR]
+Shows the accepting state of printer queues.
+If no printers are specified then all printers are listed.
+.TP 5
+\fB\-c \fR[\fIclass(es)\fR]
 Shows the printer classes and the printers that belong to them.
 If no classes are specified then all classes are listed.
 .TP 5
--d
-.br
+.B \-d
 Shows the current default destination.
 .TP 5
--h server[:port]
-.br
+\fB\-h \fIserver\fR[\fB:\fIport\fR]
 Specifies an alternate server.
 .TP 5
--l
-.br
+.B \-l
 Shows a long listing of printers, classes, or jobs.
 .TP 5
--o [destination(s)]
-.br
-Shows the jobs queue on the specified destinations. If no destinations are
-specified all jobs are shown.
+\fB\-o \fR[\fIdestination(s)\fR]
+Shows the jobs queued on the specified destinations.
+If no destinations are specified all jobs are shown.
 .TP 5
--p [printer(s)]
-.br
-Shows the printers and whether or not they are enabled for printing. If
-no printers are specified then all printers are listed.
+\fB\-p \fR[\fIprinter(s)\fR]
+Shows the printers and whether they are enabled for printing.
+If no printers are specified then all printers are listed.
 .TP 5
--r
-.br
+.B \-r
 Shows whether the CUPS server is running.
 .TP 5
--s
-.br
-Shows a status summary, including the default destination, a
-list of classes and their member printers, and a list of printers and
-their associated devices. This is equivalent to using the "-d", "-c",
-and "-v" options.
-.TP 5
--t
-.br
-Shows all status information. This is equivalent to using the "-r",
-"-d", "-c", "-v", "-a", "-p", and "-o" options.
-.TP 5
--u [user(s)]
-.br
-Shows a list of print jobs queued by the specified users. If no users
-are specified, lists the jobs queued by the current user.
-.TP 5
--v [printer(s)]
-.br
-Shows the printers and what device they are attached to. If no printers
-are specified then all printers are listed.
-.SH COMPATIBILITY
-Unlike the System V printing system, CUPS allows printer names to
-contain any printable character except SPACE, TAB, "/", and "#".
+.B \-s
+Shows a status summary, including the default destination, a list of classes and their member printers, and a list of printers and their associated devices.
+This is equivalent to using the \fI\-d\fR, \fI\-c\fR, and \fI\-v\fR options.
+.TP 5
+.B \-t
+Shows all status information.
+This is equivalent to using the \fI\-r\fR, \fI\-d\fR, \fI\-c\fR, \fI\-v\fR, \fI\-a\fR, \fI\-p\fR, and \fI\-o\fR options.
+.TP 5
+\fB\-u \fR[\fIuser(s)\fR]
+Shows a list of print jobs queued by the specified users.
+If no users are specified, lists the jobs queued by the current user.
+.TP 5
+\fB\-v \fR[\fIprinter(s)\fR]
+Shows the printers and what device they are attached to.
+If no printers are specified then all printers are listed.
+.SH CONFORMING TO
+Unlike the System V printing system, CUPS allows printer names to contain any printable character except SPACE, TAB, "/", and "#".
 Also, printer and class names are \fInot\fR case-sensitive.
 .LP
-The "-h", "-E", "-U", and "-W" options are unique to CUPS.
+The \fI\-h\fR, \fI\-E\fR, \fI\-U\fR, and \fI\-W\fR options are unique to CUPS.
 .LP
-The Solaris "-f", "-P", and "-S" options are silently ignored.
+The Solaris \fI\-f\fR, \fI\-P\fR, and \fI\-S\fR options are silently ignored.
 .SH SEE ALSO
-\fIcancel(1)\fR, \fIlp(1)\fR,
-.br
-http://localhost:631/help
+.BR cancel (1),
+.BR lp (1),
+.BR lpq (1),
+.BR lpr (1),
+.BR lprm (1),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: lpstat.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: lpstat.man 11924 2014-06-12 19:10:33Z msweet $".
 .\"
index a8dba768024576e5d07bf6d904fb9600da4d9a0c..8d182098e9468e7ba1731a1746d9db15381dae8b 100644 (file)
@@ -1,60 +1,52 @@
 .\"
-.\" "$Id: mailto.conf.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: mailto.conf.man 11924 2014-06-12 19:10:33Z msweet $"
 .\"
-.\"   mailto.conf man page for CUPS.
+.\" mailto.conf man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH mailto.conf 5 "CUPS" "12 July 2006" "Apple Inc."
+.TH mailto.conf 5 "CUPS" "12 June 2014" "Apple Inc."
 .SH NAME
 mailto.conf \- configuration file for cups email notifier
 .SH DESCRIPTION
-The \fImailto.conf\fR file defines the local mail server and
-email notification preferences for CUPS.
+The \fBmailto.conf\fR file defines the local mail server and email notification preferences for CUPS.
 .LP
-Each line in the file can be a configuration directive, a blank line,
-or a comment. Comment lines start with the # character.
-.SH DIRECTIVES
+Each line in the file can be a configuration directive, a blank line, or a comment.
+Configuration directives typically consist of a name and zero or more values separated by whitespace.
+The configuration directive name and values are case-insensitive.
+Comment lines start with the # character.
+.SS DIRECTIVES
 .TP 5
-Cc \fIcc-address@domain.com\fR
-.br
+\fBCc \fIcc-address@domain.com\fR
 Specifies an additional recipient for all email notifications.
 .TP 5
-From \fIfrom-address@domain.com\fR
-.br
+\fBFrom \fIfrom-address@domain.com\fR
 Specifies the sender of email notifications.
 .TP 5
-Sendmail \fIsendmail command and options\fR
-.br
-Specifies the sendmail command to use when sending email
-notifications. Only one \fISendmail\fR or \fISMTPServer\fR line
-may be present in the \fImailto.conf\fR file. If multiple lines
-are present, only the last one is used.
+\fBSendmail \fIsendmail command and options\fR
+Specifies the sendmail command to use when sending email notifications.
+Only one \fISendmail\fR or \fISMTPServer\fR line may be present in the \fBmailto.conf\fR file.
+If multiple lines are present, only the last one is used.
 .TP 5
-SMTPServer \fIservername\fR
-.br
-Specifies a SMTP server to send email notifications to. Only one
-\fISendmail\fR or \fISMTPServer\fR line may be present in the
-\fImailto.conf\fR file. If multiple lines are present, only the
-last one is used.
+\fBSMTPServer \fIservername\fR
+Specifies a SMTP server to send email notifications to.
+Only one \fISendmail\fR or \fISMTPServer\fR line may be present in the \fBmailto.conf\fR file.
+If multiple lines are present, only the last one is used.
 .TP 5
-Subject \fIsubject-prefix\fR
-.br
+\fBSubject \fIsubject-prefix\fR
 Specifies a prefix string for the subject line of an email notification.
 .SH SEE ALSO
-\fIclasses.conf(5)\fR, \fIcupsd(8)\fR, \fIcupsd.conf(5)\fR,
-\fImime.convs(5)\fR, \fImime.types(5)\fR, \fIprinters.conf(5)\fR,
-.br
-http://localhost:631/help
+.BR cupsd (8),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: mailto.conf.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: mailto.conf.man 11924 2014-06-12 19:10:33Z msweet $".
 .\"
index 512dda13498823157b890ff0abd563586187be3b..6811f0b90103e26924778d3ea7178b405d20e2c5 100644 (file)
@@ -1,22 +1,16 @@
 /*
- * "$Id: mantohtml.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: mantohtml.c 11818 2014-04-15 20:56:19Z msweet $"
  *
- *   Man page to HTML conversion program.
+ * Man page to HTML conversion program.
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 2004-2006 by Easy Software Products.
+ * Copyright 2007-2010, 2014 by Apple Inc.
+ * Copyright 2004-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()        - Convert a man page to HTML.
- *   putc_entity() - Put a single character, using entities as needed.
- *   strmove()     - Move characters within a 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/".
  */
 
 /*
  */
 
 #include <cups/string-private.h>
+#include <cups/array-private.h>
 #include <unistd.h>
 
 
+/*
+ * Local globals...
+ */
+
+static const char                      /* Start/end tags for fonts */
+       * const start_fonts[] = { "", "<b>", "<i>" },
+       * const end_fonts[] = { "", "</b>", "</i>" };
+
+
 /*
  * Local functions...
  */
 
-static void    putc_entity(int ch, FILE *fp);
+static void    html_alternate(const char *s, const char *first, const char *second, FILE *fp);
+static void    html_fputs(const char *s, int *font, FILE *fp);
+static void    html_putc(int ch, FILE *fp);
 static void    strmove(char *d, const char *s);
 
 
@@ -47,20 +53,18 @@ main(int  argc,                             /* I - Number of command-line args */
                *outfile;               /* Output file */
   char         line[1024],             /* Line from file */
                *lineptr,               /* Pointer into line */
-               *endptr,                /* Pointer to end of current */
-               endchar,                /* End character */
-               *paren,                 /* Pointer to parenthesis */
-               name[1024];             /* Man page name */
-  int          section,                /* Man page section */
-               pre,                    /* Preformatted */
-               font,                   /* Current font */
-               blist,                  /* In a bullet list? */
-               list,                   /* In a list? */
-               linenum;                /* Current line number */
-  const char   *post;                  /* Text to add after the current line */
-  static const char                    /* Start/end tags for fonts */
-       * const start_fonts[] = { "", "<b>", "<i>" },
-       * const end_fonts[] = { "", "</b>", "</i>" };
+               name[1024],             /* Man page name */
+               ddpost[256];            /* Tagged list post markup */
+  int          section = -1,           /* Man page section */
+               pre = 0,                /* Preformatted */
+               font = 0,               /* Current font */
+               linenum = 0;            /* Current line number */
+  float                list_indent = 0.0f,     /* Current list indentation */
+               nested_indent = 0.0f;   /* Nested list indentation, if any */
+  const char   *list = NULL,           /* Current list, if any */
+               *nested = NULL;         /* Nested list, if any */
+  const char   *post = NULL;           /* Text to add after the current line */
+
 
  /*
   * Check arguments...
@@ -103,24 +107,20 @@ main(int  argc,                           /* I - Number of command-line args */
   * Read from input and write the output...
   */
 
-  fputs("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
-        "\"http://www.w3.org/TR/html4/loose.dtd\">\n"
+  fputs("<!DOCTYPE HTML>\n"
         "<html>\n"
        "<!-- SECTION: Man Pages -->\n"
        "<head>\n"
        "\t<link rel=\"stylesheet\" type=\"text/css\" "
        "href=\"../cups-printable.css\">\n", outfile);
 
-  blist   = 0;
-  font    = 0;
-  list    = 0;
-  linenum = 0;
-  pre     = 0;
-  post    = NULL;
-  section = -1;
-
   while (fgets(line, sizeof(line), infile))
   {
+    size_t linelen = strlen(line);     /* Length of line */
+
+    if (linelen > 0 && line[linelen - 1] == '\n')
+      line[linelen - 1] = '\0';
+
     linenum ++;
 
     if (line[0] == '.')
@@ -163,247 +163,492 @@ main(int  argc,                         /* I - Number of command-line args */
         int first = 1;
 
        fputs(end_fonts[font], outfile);
-
-        if (blist)
-       {
-         fputs("</li>\n</ul>\n", outfile);
-         blist = 0;
-       }
+       font = 0;
 
         if (list)
        {
-         if (list == 1)
-           fputs("</dt>\n", outfile);
-         else if (list)
-           fputs("</dd>\n", outfile);
-
-         fputs("</dl>\n", outfile);
-         list = 0;
+         fprintf(outfile, "</%s>\n", list);
+         list = NULL;
        }
 
-        line[strlen(line) - 1] = '\0'; /* Strip LF */
-
         if (line[2] == 'H')
          fputs("<h2 class=\"title\"><a name=\"", outfile);
        else
          fputs("<h3><a name=\"", outfile);
 
         for (lineptr = line + 4; *lineptr; lineptr ++)
-         if (*lineptr == '\"')
+         if (*lineptr  == '\"')
            continue;
-         else if (*lineptr == ' ')
-           putc_entity('_', outfile);
+         else if (isalnum(*lineptr & 255))
+           html_putc(*lineptr, outfile);
          else
-           putc_entity(*lineptr, outfile);
+           html_putc('_', outfile);
 
        fputs("\">", outfile);
 
         for (lineptr = line + 4; *lineptr; lineptr ++)
+        {
          if (*lineptr == '\"')
            continue;
          else if (*lineptr == ' ')
          {
-           putc_entity(' ', outfile);
+           html_putc(' ', outfile);
 
             first = 1;
          }
          else
          {
            if (first)
-             putc_entity(*lineptr, outfile);
+             html_putc(*lineptr, outfile);
            else
-             putc_entity(tolower(*lineptr), outfile);
+             html_putc(tolower(*lineptr & 255), outfile);
 
             first = 0;
           }
+        }
 
         if (line[2] == 'H')
-         fprintf(outfile, "</a></h2>\n%s", start_fonts[font]);
+         fputs("</a></h2>\n", outfile);
        else
-         fprintf(outfile, "</a></h3>\n%s", start_fonts[font]);
+         fputs("</a></h3>\n", outfile);
       }
-      else if (!strncmp(line, ".LP", 3) || !strncmp(line, ".PP", 3))
+      else if (!strncmp(line, ".", 3))
       {
        /*
-        * New paragraph...
+        * Grab bold text...
        */
 
        fputs(end_fonts[font], outfile);
+       font = 0;
+
+        html_alternate(line + 3, "b", "b", outfile);
 
-        if (blist)
+       if (post)
        {
-         fputs("</li>\n</ul>\n", outfile);
-         blist = 0;
+         fputs(post, outfile);
+         post = NULL;
        }
+      }
+      else if (!strncmp(line, ".I ", 3))
+      {
+       /*
+        * Grab italic text...
+       */
 
-        if (list)
+       fputs(end_fonts[font], outfile);
+       font = 0;
+
+        html_alternate(line + 3, "i", "i", outfile);
+
+       if (post)
        {
-         if (list == 1)
-           fputs("</dt>\n", outfile);
-         else if (list)
-           fputs("</dd>\n", outfile);
+         fputs(post, outfile);
+         post = NULL;
+       }
+      }
+      else if (!strncmp(line, ".BI ", 4))
+      {
+       /*
+        * Alternating bold and italic text...
+        */
+
+       fputs(end_fonts[font], outfile);
+       font = 0;
+
+        html_alternate(line + 4, "b", "i", outfile);
 
-         fputs("</dl>\n", outfile);
-         list = 0;
+       if (post)
+       {
+         fputs(post, outfile);
+         post = NULL;
        }
+      }
+      else if (!strncmp(line, ".BR ", 4))
+      {
+       /*
+        * Alternating bold and roman (plain) text...
+        */
 
-       fputs("<p>", outfile);
+       fputs(end_fonts[font], outfile);
        font = 0;
+
+        html_alternate(line + 4, "b", NULL, outfile);
+
+       if (post)
+       {
+         fputs(post, outfile);
+         post = NULL;
+       }
       }
-      else if (!strncmp(line, ".TP ", 4))
+      else if (!strncmp(line, ".IB ", 4))
       {
        /*
-        * Grab list...
-       */
+        * Alternating italic and bold text...
+        */
 
        fputs(end_fonts[font], outfile);
+       font = 0;
+
+        html_alternate(line + 4, "i", "b", outfile);
 
-        if (blist)
+       if (post)
        {
-         fputs("</li>\n</ul>\n", outfile);
-         blist = 0;
+         fputs(post, outfile);
+         post = NULL;
        }
+      }
+      else if (!strncmp(line, ".IR ", 4))
+      {
+       /*
+        * Alternating italic and roman (plain) text...
+        */
 
-        if (!list)
-         fputs("<dl>\n", outfile);
-       else if (list == 1)
-         fputs("</dt>\n", outfile);
-       else if (list)
-         fputs("</dd>\n", outfile);
-
-       fputs("<dt>", outfile);
-       list = 1;
+       fputs(end_fonts[font], outfile);
        font = 0;
+
+        html_alternate(line + 4, "i", NULL, outfile);
+
+       if (post)
+       {
+         fputs(post, outfile);
+         post = NULL;
+       }
       }
-      else if (!strncmp(line, ".br", 3))
+      else if (!strncmp(line, ".RB ", 4))
       {
        /*
-        * Grab line break...
-       */
+        * Alternating roman (plain) and bold text...
+        */
 
-       if (list == 1)
+       fputs(end_fonts[font], outfile);
+       font = 0;
+
+        html_alternate(line + 4, NULL, "b", outfile);
+
+       if (post)
        {
-         fputs("</dt>\n<dd>", outfile);
-         list = 2;
+         fputs(post, outfile);
+         post = NULL;
        }
-        else if (list)
-         fputs("</dd>\n<dd>", outfile);
-       else
-         fputs("<br>\n", outfile);
       }
-      else if (!strncmp(line, ".de ", 4))
+      else if (!strncmp(line, ".RI ", 4))
       {
        /*
-        * Define macro - ignore...
-       */
+        * Alternating roman (plain) and italic text...
+        */
 
-        while (fgets(line, sizeof(line), infile))
+       fputs(end_fonts[font], outfile);
+       font = 0;
+
+        html_alternate(line + 4, NULL, "i", outfile);
+
+       if (post)
        {
-         linenum ++;
+         fputs(post, outfile);
+         post = NULL;
+       }
+      }
+      else if (!strncmp(line, ".SB ", 4))
+      {
+       /*
+        * Alternating small and bold text...
+        */
 
-         if (!strncmp(line, "..", 2))
-           break;
+       fputs(end_fonts[font], outfile);
+       font = 0;
+
+        html_alternate(line + 4, "small", "b", outfile);
+
+       if (post)
+       {
+         fputs(post, outfile);
+         post = NULL;
        }
       }
-      else if (!strncmp(line, ".RS", 3))
+      else if (!strncmp(line, ".SM ", 4))
       {
        /*
-        * Indent...
-       */
+        * Small text...
+        */
 
-        fputs("<div style='margin-left: 3em;'>\n", outfile);
+       fputs(end_fonts[font], outfile);
+       font = 0;
+
+        html_alternate(line + 4, "small", "small", outfile);
+
+       if (post)
+       {
+         fputs(post, outfile);
+         post = NULL;
+       }
       }
-      else if (!strncmp(line, ".RE", 3))
+      else if (!strcmp(line, ".LP") || !strcmp(line, ".PP") || !strcmp(line, ".P"))
       {
        /*
-        * Unindent...
+        * New paragraph...
        */
 
-        fputs("</div>\n", outfile);
+       fputs(end_fonts[font], outfile);
+       font = 0;
+
+        if (list)
+        {
+          fprintf(outfile, "</%s>\n", list);
+          list = NULL;
+        }
+
+       fputs("<p>", outfile);
       }
-      else if (!strncmp(line, ".ds ", 4) || !strncmp(line, ".rm ", 4) ||
-               !strncmp(line, ".tr ", 4) || !strncmp(line, ".hy ", 4) ||
-               !strncmp(line, ".IX ", 4) || !strncmp(line, ".PD", 3) ||
-              !strncmp(line, ".Sp", 3))
+      else if (!strcmp(line, ".RS") || !strncmp(line, ".RS ", 4))
       {
        /*
-        * Ignore unused commands...
+        * Indent...
        */
+
+       float amount = 3.0;             /* Indentation */
+
+        if (line[3])
+          amount = atof(line + 4);
+
+       fputs(end_fonts[font], outfile);
+       font = 0;
+
+        if (list)
+        {
+          nested        = list;
+          list          = NULL;
+          nested_indent = list_indent;
+          list_indent   = 0.0f;
+        }
+
+        fprintf(outfile, "<div style=\"margin-left: %.1fem;\">\n", amount - nested_indent);
       }
-      else if (!strncmp(line, ".Vb", 3) || !strncmp(line, ".nf", 3))
+      else if (!strcmp(line, ".RE"))
       {
        /*
-        * Start preformatted...
+        * Unindent...
        */
 
-        pre = 1;
-       fputs("<pre>\n", outfile);
+       fputs(end_fonts[font], outfile);
+       font = 0;
+
+        fputs("</div>\n", outfile);
+
+        if (nested)
+        {
+          list   = nested;
+          nested = NULL;
+
+          list_indent   = nested_indent;
+          nested_indent = 0.0f;
+        }
       }
-      else if (!strncmp(line, ".Ve", 3) || !strncmp(line, ".fi", 3))
+      else if (!strcmp(line, ".HP") || !strncmp(line, ".HP ", 4))
       {
        /*
-        * End preformatted...
+        * Hanging paragraph...
+        *
+        * .HP i
        */
 
-        if (pre)
-       {
-          pre = 0;
-         fputs("</pre>\n", outfile);
-       }
+       float amount = 3.0;             /* Indentation */
+
+        if (line[3])
+          amount = atof(line + 4);
+
+       fputs(end_fonts[font], outfile);
+       font = 0;
+
+        if (list)
+        {
+          fprintf(outfile, "</%s>\n", list);
+          list = NULL;
+        }
+
+        fprintf(outfile, "<p style=\"margin-left: %.1fem; text-indent: %.1fem\">", amount, -amount);
+
+        if (line[1] == 'T')
+          post = "<br>\n";
       }
-      else if (!strncmp(line, ".IP \\(bu", 8))
+      else if (!strcmp(line, ".TP") || !strncmp(line, ".TP ", 4))
       {
        /*
-        * Bullet list...
+        * Tagged list...
+        *
+        * .TP i
        */
 
-        if (blist)
-         fputs("</li>\n", outfile);
-       else
-       {
-         fputs("<ul>\n", outfile);
-         blist = 1;
-       }
+       float amount = 3.0;             /* Indentation */
+
+        if (line[3])
+          amount = atof(line + 4);
+
+       fputs(end_fonts[font], outfile);
+       font = 0;
+
+        if (list && strcmp(list, "dl"))
+        {
+          fprintf(outfile, "</%s>\n", list);
+          list = NULL;
+        }
 
-       fputs("<li>", outfile);
+        if (!list)
+        {
+          fputs("<dl class=\"man\">\n", outfile);
+          list        = "dl";
+          list_indent = amount;
+        }
+
+        fputs("<dt>", outfile);
+        snprintf(ddpost, sizeof(ddpost), "<dd style=\"margin-left: %.1fem\">", amount);
+       post = ddpost;
       }
       else if (!strncmp(line, ".IP ", 4))
       {
        /*
         * Indented paragraph...
+        *
+        * .IP x i
        */
 
-        if (blist)
+        float amount = 3.0;            /* Indentation */
+        const char *newlist = NULL;    /* New list style */
+        const char *newtype = NULL;    /* New list numbering type */
+
+       fputs(end_fonts[font], outfile);
+       font = 0;
+
+        lineptr = line + 4;
+        while (isspace(*lineptr & 255))
+          lineptr ++;
+
+        if (!strncmp(lineptr, "\\(bu", 4) || !strncmp(lineptr, "\\(em", 4))
        {
-         fputs("</li>\n</ul>\n", outfile);
-         blist = 0;
-       }
+        /*
+         * Bullet list...
+         */
 
-       fputs("<p style='margin-left: 3em;'>", outfile);
+          newlist = "ul";
+       }
+       else if (isdigit(*lineptr & 255))
+       {
+        /*
+         * Numbered list...
+         */
 
-        for (lineptr = line + 4; isspace(*lineptr); lineptr ++);
+          newlist = "ol";
+       }
+       else if (islower(*lineptr & 255))
+       {
+        /*
+         * Lowercase alpha list...
+         */
 
-        if (*lineptr == '\"')
+          newlist = "ol";
+          newtype = "a";
+       }
+       else if (isupper(*lineptr & 255))
        {
-         strmove(line, lineptr + 1);
+        /*
+         * Lowercase alpha list...
+         */
+
+          newlist = "ol";
+          newtype = "A";
+       }
+
+        while (!isspace(*lineptr & 255))
+          lineptr ++;
+        while (isspace(*lineptr & 255))
+          lineptr ++;
 
-         if ((lineptr = strchr(line, '\"')) != NULL)
-           *lineptr = '\0';
+        if (isdigit(*lineptr & 255))
+          amount = atof(lineptr);
+
+        if (newlist && list && strcmp(newlist, list))
+        {
+          fprintf(outfile, "</%s>\n", list);
+          list = NULL;
         }
-       else
-       {
-         strmove(line, lineptr);
 
-         if ((lineptr = strchr(line, ' ')) != NULL)
-           *lineptr = '\0';
+        if (newlist && !list)
+        {
+          if (newtype)
+            fprintf(outfile, "<%s type=\"%s\">\n", newlist, newtype);
+          else
+            fprintf(outfile, "<%s>\n", newlist);
+
+          list = newlist;
         }
 
+        if (list)
+          fprintf(outfile, "<li style=\"margin-left: %.1fem;\">", amount);
+        else
+          fprintf(outfile, "<p style=\"margin-left: %.1fem;\">", amount);
+      }
+      else if (!strncmp(line, ".br", 3))
+      {
        /*
-        * Process the text as if it was in-line...
+        * Grab line break...
        */
 
-        post = "\n<br>\n<br>";
-        goto process_text;
+       fputs("<br>\n", outfile);
+      }
+      else if (!strncmp(line, ".de ", 4))
+      {
+       /*
+        * Define macro - ignore...
+       */
+
+        while (fgets(line, sizeof(line), infile))
+       {
+         linenum ++;
+
+         if (!strncmp(line, "..", 2))
+           break;
+       }
+      }
+      else if (!strncmp(line, ".ds ", 4) || !strncmp(line, ".rm ", 4) ||
+               !strncmp(line, ".tr ", 4) || !strncmp(line, ".hy ", 4) ||
+               !strncmp(line, ".IX ", 4) || !strncmp(line, ".PD", 3) ||
+              !strncmp(line, ".Sp", 3))
+      {
+       /*
+        * Ignore unused commands...
+       */
+      }
+      else if (!strncmp(line, ".Vb", 3) || !strncmp(line, ".nf", 3) || !strncmp(line, ".EX", 3))
+      {
+       /*
+        * Start preformatted...
+       */
+
+       fputs(end_fonts[font], outfile);
+       font = 0;
+
+//        if (list)
+//     {
+//       fprintf(outfile, "</%s>\n", list);
+//       list = NULL;
+//     }
+
+        pre = 1;
+       fputs("<pre class=\"man\">\n", outfile);
+      }
+      else if (!strncmp(line, ".Ve", 3) || !strncmp(line, ".fi", 3) || !strncmp(line, ".EE", 3))
+      {
+       /*
+        * End preformatted...
+       */
+
+       fputs(end_fonts[font], outfile);
+       font = 0;
+
+        if (pre)
+       {
+          pre = 0;
+         fputs("</pre>\n", outfile);
+       }
       }
       else if (!strncmp(line, ".\\}", 3))
       {
@@ -441,24 +686,6 @@ main(int  argc,                            /* I - Number of command-line args */
        */
       }
 #endif /* 0 */
-      else if (!strncmp(line, ".B ", 3))
-      {
-       /*
-        * Grab bold text...
-       */
-
-       fprintf(outfile, "%s<b>%s</b>%s", end_fonts[font], line + 3,
-               start_fonts[font]);
-      }
-      else if (!strncmp(line, ".I ", 3))
-      {
-       /*
-        * Grab italic text...
-       */
-
-       fprintf(outfile, "%s<i>%s</i>%s", end_fonts[font], line + 3,
-               start_fonts[font]);
-      }
       else if (strncmp(line, ".\\\"", 3))
       {
        /*
@@ -470,15 +697,14 @@ main(int  argc,                           /* I - Number of command-line args */
        else if ((lineptr = strchr(line, '\n')) != NULL)
          *lineptr = '\0';
 
-        fprintf(stderr, "mantohtml: Unknown man page command \'%s\' on line %d!\n",
-               line, linenum);
+        fprintf(stderr, "mantohtml: Unknown man page command \'%s\' on line %d.\n",  line, linenum);
       }
 
      /*
       * Skip continuation lines...
       */
 
-      lineptr = line + strlen(line) - 2;
+      lineptr = line + strlen(line) - 1;
       if (lineptr >= line && *lineptr == '\\')
       {
         while (fgets(line, sizeof(line), infile))
@@ -497,169 +723,24 @@ main(int  argc,                          /* I - Number of command-line args */
       * Process man page text...
       */
 
-process_text:
-
-      for (lineptr = line; *lineptr; lineptr ++)
-      {
-        if (!strncmp(lineptr, "http://", 7))
-       {
-        /*
-         * Embed URL...
-         */
-
-          for (endptr = lineptr + 7;
-              *endptr && !isspace(*endptr & 255);
-              endptr ++);
-
-          endchar = *endptr;
-         *endptr = '\0';
-
-          fprintf(outfile, "<a href='%s'>%s</a>", lineptr, lineptr);
-         *endptr = endchar;
-         lineptr = endptr - 1;
-       }
-       else if (!strncmp(lineptr, "\\fI", 3) &&
-                (endptr = strstr(lineptr, "\\fR")) != NULL &&
-                (paren = strchr(lineptr, '(')) != NULL &&
-                paren < endptr)
-        {
-        /*
-         * Link to man page?
-         */
-
-          char manfile[1024],          /* Man page filename */
-               manurl[1024];           /* Man page URL */
-
-
-         /*
-         * See if the man file is available locally...
-         */
-
-          lineptr += 3;
-         endchar = *paren;
-         *paren  = '\0';
-
-         snprintf(manfile, sizeof(manfile), "%s.man", lineptr);
-         snprintf(manurl, sizeof(manurl), "man-%s.html?TOPIC=Man+Pages",
-                  lineptr);
-
-         *paren  = endchar;
-         endchar = *endptr;
-         *endptr = '\0';
-
-         if (access(manfile, 0))
-         {
-          /*
-           * Not a local man page, just do it italic...
-           */
-
-           fputs("<i>", outfile);
-           while (*lineptr)
-             putc_entity(*lineptr++, outfile);
-           fputs("</i>", outfile);
-         }
-         else
-         {
-          /*
-           * Local man page, do a link...
-           */
-
-           fprintf(outfile, "<a href='%s'>", manurl);
-           while (*lineptr)
-             putc_entity(*lineptr++, outfile);
-           fputs("</a>", outfile);
-         }
-
-          *endptr = endchar;
-         lineptr = endptr + 2;
-       }
-        else if (*lineptr == '\\')
-       {
-         lineptr ++;
-         if (!*lineptr)
-           break;
-         else if (isdigit(lineptr[0]) && isdigit(lineptr[1]) &&
-                  isdigit(lineptr[2]))
-         {
-           fprintf(outfile, "&#%d;", ((lineptr[0] - '0') * 8 +
-                                      lineptr[1] - '0') * 8 +
-                                     lineptr[2] - '0');
-           lineptr += 2;
-         }
-         else if (*lineptr == '&')
-           continue;
-         else if (*lineptr == 's')
-         {
-           while (lineptr[1] == '-' || isdigit(lineptr[1]))
-             lineptr ++;
-         }
-         else if (*lineptr == '*')
-         {
-           lineptr += 2;
-         }
-         else if (*lineptr != 'f')
-           putc_entity(*lineptr, outfile);
-         else
-         {
-           lineptr ++;
-           if (!*lineptr)
-             break;
-           else
-           {
-             fputs(end_fonts[font], outfile);
-
-             switch (*lineptr)
-             {
-               default : /* Regular */
-                   font = 0;
-                   break;
-               case 'B' : /* Bold */
-               case 'b' :
-                   font = 1;
-                   break;
-               case 'I' : /* Italic */
-               case 'i' :
-                   font = 2;
-                   break;
-             }
-
-             fputs(start_fonts[font], outfile);
-           }
-         }
-       }
-       else
-         putc_entity(*lineptr, outfile);
-      }
+      html_fputs(line, &font, outfile);
+      putc('\n', outfile);
 
       if (post)
       {
         fputs(post, outfile);
        post = NULL;
       }
-
-      if (list == 1)
-      {
-       fputs("</dt>\n<dd>", outfile);
-       list = 2;
-      }
     }
   }
 
   fprintf(outfile, "%s\n", end_fonts[font]);
-
-  if (blist)
-  {
-    fputs("</li>\n</ul>\n", outfile);
-  }
+  font = 0;
 
   if (list)
   {
-    if (list == 1)
-      fputs("</dt>\n", outfile);
-    else if (list)
-      fputs("</dd>\n", outfile);
-
-    fputs("</dl>\n", outfile);
+    fprintf(outfile, "</%s>\n", list);
+    list = NULL;
   }
 
   fputs("</body>\n"
@@ -684,12 +765,303 @@ process_text:
 
 
 /*
- * 'putc_entity()' - Put a single character, using entities as needed.
+ * 'html_alternate()' - Alternate words between two styles of text.
+ */
+
+static void
+html_alternate(const char *s,          /* I - String */
+               const char *first,      /* I - First style or NULL */
+               const char *second,     /* I - Second style of NULL */
+               FILE       *fp)         /* I - File */
+{
+  int          i = 0;                  /* Which style */
+  int          quote = 0;              /* Saw quote? */
+  int          dolinks,                /* Do hyperlinks to other man pages? */
+               link = 0;               /* Doing a link now? */
+
+
+ /*
+  * Skip leading whitespace...
+  */
+
+  while (isspace(*s & 255))
+    s ++;
+
+  dolinks = first && !strcmp(first, "b") && !second;
+
+  while (*s)
+  {
+    if (!i && dolinks)
+    {
+     /*
+      * See if we need to make a link to a man page...
+      */
+
+      const char *end;                 /* End of current word */
+      const char *next;                        /* Start of next word */
+
+      for (end = s; *end && !isspace(*end & 255); end ++);
+      for (next = end; isspace(*next & 255); next ++);
+
+      if (isalnum(*s & 255) && *next == '(')
+      {
+       /*
+       * See if the man file is available locally...
+       */
+
+       char    name[1024],             /* Name */
+               manfile[1024],          /* Man page filename */
+               manurl[1024];           /* Man page URL */
+
+        strlcpy(name, s, sizeof(name));
+        if ((size_t)(end - s) < sizeof(name))
+          name[end - s] = '\0';
+
+        snprintf(manfile, sizeof(manfile), "%s.man", name);
+       snprintf(manurl, sizeof(manurl), "man-%s.html?TOPIC=Man+Pages", name);
+
+       if (!access(manfile, 0))
+       {
+        /*
+         * Local man page, do a link...
+         */
+
+         fprintf(fp, "<a href=\"%s\">", manurl);
+         link = 1;
+       }
+      }
+    }
+
+    if (!i && first)
+      fprintf(fp, "<%s>", first);
+    else if (i && second)
+      fprintf(fp, "<%s>", second);
+
+    while ((!isspace(*s & 255) || quote) && *s)
+    {
+      if (*s == '\"')
+        quote = !quote;
+      else if (*s == '\\' && s[1])
+      {
+        s ++;
+        html_putc(*s++, fp);
+      }
+      else
+        html_putc(*s++, fp);
+    }
+
+    if (!i && first)
+      fprintf(fp, "</%s>", first);
+    else if (i && second)
+      fprintf(fp, "</%s>", second);
+
+    if (i && link)
+    {
+      fputs("</a>", fp);
+      link = 0;
+    }
+
+    i = 1 - i;
+
+   /*
+    * Skip trailing whitespace...
+    */
+
+    while (isspace(*s & 255))
+      s ++;
+  }
+
+  putc('\n', fp);
+}
+
+/*
+ * 'html_fputs()' - Output a string, quoting as needed HTML entities.
+ */
+
+static void
+html_fputs(const char *s,              /* I  - String */
+           int        *font,           /* IO - Font */
+           FILE       *fp)             /* I  - File */
+{
+  while (*s)
+  {
+    if (*s == '\\')
+    {
+      s ++;
+      if (!*s)
+       break;
+
+      if (*s == 'f')
+      {
+        int    newfont;                /* New font */
+
+        s ++;
+        if (!*s)
+          break;
+
+        if (!font)
+        {
+          s ++;
+          continue;
+        }
+
+        switch (*s++)
+        {
+          case 'R' :
+          case 'P' :
+              newfont = 0;
+              break;
+
+          case 'b' :
+          case 'B' :
+              newfont = 1;
+              break;
+
+          case 'i' :
+          case 'I' :
+              newfont = 2;
+              break;
+
+          default :
+              fprintf(stderr, "mantohtml: Unknown font \"\\f%c\" ignored.\n", s[-1]);
+              newfont = *font;
+              break;
+        }
+
+        if (newfont != *font)
+        {
+         fputs(end_fonts[*font], fp);
+         *font = newfont;
+         fputs(start_fonts[*font], fp);
+       }
+      }
+      else if (*s == '*')
+      {
+       /*
+        * Substitute macro...
+        */
+
+        s ++;
+        if (!*s)
+          break;
+
+        switch (*s++)
+        {
+          case 'R' :
+              fputs("&reg;", fp);
+              break;
+
+          case '(' :
+             if (!strncmp(s, "lq", 2))
+               fputs("&ldquo;", fp);
+             else if (!strncmp(s, "rq", 2))
+               fputs("&rdquo;", fp);
+              else if (!strncmp(s, "Tm", 2))
+                fputs("<sup>TM</sup>", fp);
+              else
+                fprintf(stderr, "mantohtml: Unknown macro \"\\*(%2s\" ignored.\n", s);
+
+              if (*s)
+                s ++;
+              if (*s)
+                s ++;
+              break;
+
+          default :
+              fprintf(stderr, "mantohtml: Unknown macro \"\\*%c\" ignored.\n", s[-1]);
+              break;
+        }
+      }
+      else if (*s == '(')
+      {
+        if (!strncmp(s, "(em", 3))
+        {
+          fputs("&mdash;", fp);
+          s += 3;
+        }
+        else if (!strncmp(s, "(en", 3))
+        {
+          fputs("&ndash;", fp);
+          s += 3;
+        }
+        else
+        {
+          putc(*s, fp);
+          s ++;
+        }
+      }
+      else if (*s == '[')
+      {
+       /*
+        * Substitute escaped character...
+        */
+
+        s ++;
+       if (!strncmp(s, "co]", 3))
+         fputs("&copy;", fp);
+       else if (!strncmp(s, "de]", 3))
+         fputs("&deg;", fp);
+        else if (!strncmp(s, "rg]", 3))
+         fputs("&reg;", fp);
+       else if (!strncmp(s, "tm]", 3))
+         fputs("<sup>TM</sup>", fp);
+
+       if (*s)
+         s ++;
+       if (*s)
+         s ++;
+       if (*s)
+         s ++;
+      }
+      else if (isdigit(s[0]) && isdigit(s[1]) &&
+              isdigit(s[2]))
+      {
+       fprintf(fp, "&#%d;", ((s[0] - '0') * 8 + s[1] - '0') * 8 + s[2] - '0');
+       s += 3;
+      }
+      else
+      {
+        if (*s != '\\' && *s == '\"' && *s == '\'' && *s == '-')
+          fprintf(stderr, "mantohtml: Unrecognized escape \"\\%c\" ignored.\n", *s);
+
+        html_putc(*s++, fp);
+      }
+    }
+    else if (!strncmp(s, "http://", 7) || !strncmp(s, "https://", 8) || !strncmp(s, "ftp://", 6))
+    {
+     /*
+      * Embed URL...
+      */
+
+      char temp[1024];                 /* Temporary string */
+      const char *end = s + 6;         /* End of URL */
+
+      while (*end && !isspace(*end & 255))
+       end ++;
+
+      if (end[-1] == ',' || end[-1] == '.' || end[-1] == ')')
+        end --;
+
+      strlcpy(temp, s, sizeof(temp));
+      if ((size_t)(end -s) < sizeof(temp))
+        temp[end - s] = '\0';
+
+      fprintf(fp, "<a href=\"%s\">%s</a>", temp, temp);
+      s = end;
+    }
+    else
+      html_putc(*s++ & 255, fp);
+  }
+}
+
+
+/*
+ * 'html_putc()' - Put a single character, using entities as needed.
  */
 
 static void
-putc_entity(int  ch,                   /* I - Character */
-            FILE *fp)                  /* I - File */
+html_putc(int  ch,                     /* I - Character */
+         FILE *fp)                     /* I - File */
 {
   if (ch == '&')
     fputs("&amp;", fp);
@@ -716,5 +1088,5 @@ strmove(char       *d,                     /* I - Destination */
 
 
 /*
- * End of "$Id: mantohtml.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: mantohtml.c 11818 2014-04-15 20:56:19Z msweet $".
  */
index 108f1df4bf7ca191b94d37f437c57926bef21282..7a25c8023175e1043cb00d5d27617a2a26e1e23d 100644 (file)
@@ -1,46 +1,66 @@
 .\"
-.\" "$Id: mime.convs.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: mime.convs.man 11924 2014-06-12 19:10:33Z msweet $"
 .\"
-.\"   mime.convs man page for CUPS.
+.\" mime.convs man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH mime.convs 5 "CUPS" "20 March 2006" "Apple Inc."
+.TH mime.convs 5 "CUPS" "12 June 2014" "Apple Inc."
 .SH NAME
 mime.convs \- mime type conversion file for cups
 .SH DESCRIPTION
-The \fImime.convs\fR file defines the filters that are available
-for converting files from one format to another. The standard
-filters support text, PDF, PostScript, HP-GL/2, and many types of
-image files.
+The \fBmime.convs\fR file defines the filters that are available for converting files from one format to another.
+The standard filters support text, PDF, PostScript, and many types of image files.
 .LP
-Additional filters can be added to the \fImime.convs\fR file or
-(preferably) to other files in the CUPS configuration directory.
+Additional filters are specified in files with the extension \fI.convs\fR in the CUPS configuration directory.
 .LP
-Each line in the \fImime.convs\fR file is a comment, blank, or filter
-line. Comment lines start with the # character. Filter lines specify
-the source and destination MIME types along with a relative cost
-associated with the filter and the filter to run:
+Each line in the \fBmime.convs\fR file is a comment, blank, or filter
+line.
+Comment lines start with the # character.
+Filter lines specify the source and destination MIME types along with a relative cost associated with the filter and the filter to run:
+.nf
+
+    source/type destination/type cost filter
+
+.fi
+The \fIsource/type\fR field specifies the source MIME media type that is consumed by the filter.
+.LP
+The \fIdestination/type\fR field specifies the destiantion MIME media type that is produced by the filter.
+.LP
+The \fIcost\fR field specifies the relative cost for running the filter.
+A value of 100 means that the filter uses a large amount of resources while a value of 0 means that the filter uses very few resources.
+.LP
+The \fIfilter\fR field specifies the filter program filename.
+Filenames are relative to the CUPS filter directory.
+.SH FILES
+\fI/etc/cups\fR - Typical CUPS configuration 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.
+.SH EXAMPLES
+Define a filter that converts PostScript documents to CUPS Raster format:
 .nf
 
-super/type super/type cost filter
-application/postscript application/vnd.cups-raster 50 pstoraster
+    application/vnd.cups\-postscript application/vnd.cups\-raster 50 pstoraster
+
 .fi
 .SH SEE ALSO
-\fIclasses.conf(5)\fR, \fIcupsd(8)\fR, \fIcupsd.conf(5)\fR,
-\fImime.types(5)\fR, \fIprinters.conf(5)\fR,
-.br
-http://localhost:631/help
+.BR cups-files.conf (5),
+.BR cupsd.conf (5),
+.BR cupsd (8),
+.BR cupsfilter (8),
+.BR mime.types (5),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: mime.convs.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: mime.convs.man 11924 2014-06-12 19:10:33Z msweet $".
 .\"
index 707da56f99dbe93b31a1b28204a4e3bae19845f6..07e397c9ffe6057f8a6cffc4c47144ad21401d27 100644 (file)
 .\"
-.\" "$Id: mime.types.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: mime.types.man 11924 2014-06-12 19:10:33Z msweet $"
 .\"
-.\"   mime.types man page for CUPS.
+.\" mime.types man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH mime.types 5 "CUPS" "16 May 2009" "Apple Inc."
+.TH mime.types 5 "CUPS" "12 June 2014" "Apple Inc."
 .SH NAME
 mime.types \- mime type description file for cups
 .SH DESCRIPTION
-The \fImime.types\fR file defines the recognized file types.
+The \fBmime.types\fR file defines the recognized file types.
 .LP
-Additional file types can be added to \fImime.types\fR or
-(preferably) in additional files in the CUPS configuration
-directory with the extension ".types".
+Additional file types are specified in files with the extension \fI.types\fR in the CUPS configuration directory.
 .LP
-Each line in the \fImime.types\fR file is a comment, blank, or
-rule line. Comment lines start with the # character. Rule lines
-start with the MIME type name and are optionally followed by a
-series of file recognition rules that are used to automatically
-identify print and web files:
-.br
+Each line in the \fBmime.types\fR file is a comment, blank, or rule line.
+Comment lines start with the # character.
+Rule lines start with the MIME media type and are optionally followed by a series of file recognition rules:
 .nf
 
-    super/type rule [ ... ruleN]
+    \fImime/type \fR[ \fIrule \fR... \fIrule \fR]
+
+.fi
+Rules can be extended over multiple lines using the backslash character (\\):
+.nf
+
+    \fImime/type \fR[ \fIreally-really-really-long-rule \fR... \fB\\
+      \fIrule \fR]
+
 .fi
-MIME type names are case-insensitive and are sorted in ascending alphanumeric
-order for the purposes of matching. See the "TYPE MATCHING AND PRIORITY"
-section for more information.
+MIME media types specified by the \fImime/type\fR field are case-insensitive and are sorted in ascending alphanumeric order for the purposes of matching.
+See the "TYPE MATCHING AND PRIORITY" section for more information.
 .LP
-The rules may be grouped using parenthesis, joined using "+" for a
-logical AND and "," or whitespace for a logical OR, and negated using
-"!".
-.SH RULES
+The rules may be grouped using parenthesis, joined using "+" for a logical AND, joined using "," or whitespace for a logical OR, and negated using "!".
+.SS RULES
 Rules take two forms - a filename extension by itself and functions with test
-values inside parenthesis. The following functions are available:
+values inside parenthesis.
+The following functions are available:
 .TP 5
-match("pattern")
-.br
-Pattern match on filename
+\fBmatch("\fIpattern\fB")\fR
+True if the filename matches the given shell wildcard \fIpattern\fR.
 .TP 5
-ascii(offset,length)
-.br
-True if bytes are valid printable ASCII (CR, NL, TAB, BS, 32-126)
+\fBascii(\fIoffset\fB,\fIlength\fB)\fR
+True if the \fIlength\fR bytes starting at \fIoffset\fR are valid printable ASCII (CR, NL, TAB, BS, 32-126).
 .TP 5
-printable(offset,length)
-.br
-True if bytes are printable 8-bit chars (CR, NL, TAB, BS, 32-126, 128-254)
+\fBprintable(\fIoffset\fB,\fIlength\fB)\fR
+True if the \fIlength\fR bytes starting at \fIoffset\fR are printable 8-bit chars (CR, NL, TAB, BS, 32-126, 128-254).
 .TP 5
-priority(number)
-.br
-Specifies the relative priority of this MIME type. The default priority is 100.
+\fBpriority(\fInumber\fB)\fR
+Specifies the relative priority of this MIME media type.
+The default priority is 100.
 Larger values have higher priority while smaller values have lower priority.
 .TP 5
-string(offset,"string")
-.br
-True if bytes are identical to string
+\fBstring(\fIoffset\fB,"\fIstring\fB")\fR
+True if the bytes starting at \fIoffset\fR are identical to \fIstring\fR.
 .TP 5
-istring(offset,"string")
-.br
-True if a case-insensitive comparison of the bytes is identical
+\fBistring(\fIoffset\fB,"\fIstring\fB")\fR
+True if the bytes starting at \fIoffset\fR match \fIstring\fR without respect to case.
 .TP 5
-char(offset,value)
-.br
-True if byte is identical
+\fBchar(\fIoffset\fB,\fIvalue\fB)\fR
+True if the byte at \fIoffset\fR is identical to \fIvalue\fR.
 .TP 5
-short(offset,value)
-.br
-True if 16-bit integer is identical
+\fBshort(\fIoffset\fB,\fIvalue\fB)\fR
+True if the 16-bit big-endian integer at \fIoffset\fR is identical to \fIvalue\fR.
 .TP 5
-int(offset,value)
-.br
-True if 32-bit integer is identical
+\fBint(\fIoffset\fB,\fIvalue\fB)\fR
+True if the 32-bit big-endian integer at \fIoffset\fR is identical to \fIvalue\fR.
 .TP 5
-locale("string")
-.br
-True if current locale matches string
+\fBlocale("\fIstring\fB")\fR
+True if current locale matches \fIstring\fR.
 .TP 5
-contains(offset,range,"string")
-.br
-True if the range contains the string
-.SH STRING CONSTANTS
-String constants can be specified inside quotes ("") for strings
-containing whitespace and angle brackets (<>) for hexadecimal
-strings.
-.SH TYPE MATCHING AND PRIORITY
-When CUPS needs to determine the MIME type of a given file, it checks every
-MIME type defined in the .types files. When two types have the same matching
-rules, the type chosen will depend on the type name and priority, with higher-
-priority types being used over lower-priority ones. If the types have the same
-priority, the type names are sorted alphanumerically in ascending order and the
-first type is chosen.
+\fBcontains(\fIoffset\fB,\fIrange\fB,"\fIstring\fB")\fR
+True if the bytes starting at \fIoffset\fR for \fIrange\fR bytes contains \fIstring\fR.
+.SS STRING CONSTANTS
+String constants can be specified inside quotes ("") for strings containing whitespace and angle brackets (<>) for hexadecimal strings.
+.SS TYPE MATCHING AND PRIORITY
+When CUPS needs to determine the MIME media type of a given file, it checks every MIME media type defined in the \fI.types\fR files.
+When two or more types match a given file, the type chosen will depend on the type name and priority, with higher-priority types being used over lower-priority ones.
+If the types have the same priority, the type names are sorted alphanumerically in ascending order and the first type is chosen.
 .LP
 For example, if two types "text/bar" and "text/foo" are defined as matching the
 extension "doc", normally the type "text/bar" will be chosen since its name is
-alphanumerically smaller than "text/foo". However, if "text/foo" also defines a
-higher priority than "text/bar", "text/foo" will be chosen instead.
+alphanumerically smaller than "text/foo".
+However, if "text/foo" also defines a higher priority than "text/bar", "text/foo" will be chosen instead.
+.SH FILES
+\fI/etc/cups\fR - Typical CUPS configuration directory.
+.SH EXAMPLES
+Define two MIME media types for raster data, with one being a subset with higher priority:
+.nf
+
+    application/vnd.cups\-raster  string(0,"RaSt") string(0,"tSaR") \\
+                                  string(0,"RaS2") string(0,"2SaR") \\
+                                  string(0,"RaS3") string(0,"3SaR")
+
+    image/pwg-raster              string(0,"RaS2") + \\
+                                  string(4,PwgRaster<00>) priority(150)
+.fi
 .SH SEE ALSO
-\fIclasses.conf(5)\fR, \fIcupsd(8)\fR, \fIcupsd.conf(5)\fR,
-\fImime.convs(5)\fR, \fIprinters.conf(5)\fR,
-.br
-http://localhost:631/help
+.BR cups-files.conf (5),
+.BR cupsd.conf (5),
+.BR cupsd (8),
+.BR cupsfilter (8),
+.BR mime.convs (5),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: mime.types.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: mime.types.man 11924 2014-06-12 19:10:33Z msweet $".
 .\"
index 4ae3b07e8f2fda8f3c3b3290ee728ad48e4dfe68..c7c051809cb4b5e3b01b88325e0eb9359abb2699 100644 (file)
@@ -1,18 +1,18 @@
 .\"
-.\" "$Id: notifier.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: notifier.man 11924 2014-06-12 19:10:33Z msweet $"
 .\"
-.\"   notifier man page for CUPS.
+.\" notifier man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2007 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH notifier 7 "CUPS" "12 May 2009" "Apple Inc."
+.TH notifier 7 "CUPS" "12 June 2014" "Apple Inc."
 .SH NAME
 notifier \- cups notification interface
 .SH SYNOPSIS
@@ -22,136 +22,23 @@ notifier \- cups notification interface
 .I user-data
 ]
 .SH DESCRIPTION
-The CUPS notifier interface provides a standard method for adding support for
-new event notification methods to CUPS. Each notifier delivers one or more IPP
-events from the standard input to the specified recipient.
+The CUPS notifier interface provides a standard method for adding support for new event notification methods to CUPS.
+Each notifier delivers one or more IPP events from the standard input to the specified recipient.
 .LP
-Notifiers \fBmust\fR read IPP messages from the standard input using the
-ippNew and ippReadFile functions and exit on error. Notifiers are encouraged to
-exit after a suitable period of inactivity, however they may exit after reading
-the first message or stay running until an error is seen.
-.SH LOG MESSAGES
-Messages sent to stderr are generally logged to the current \fIErrorLog\fR.
-Each line begins with a standard prefix:
-
-.TP 5
-ALERT: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "alert" log level.
-
-.TP 5
-CRIT: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "critical" log level.
-
-.TP 5
-DEBUG: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "debug" log level.
-
-.TP 5
-DEBUG2: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "debug2" log level.
-
-.TP 5
-EMERG: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "emergency" log level.
-
-.TP 5
-ERROR: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "error" log level.
-
-.TP 5
-INFO: message
-.br
-Sets the printer-state-message attribute. If the current \fILogLevel\fR
-is set to "debug2", also adds the specified message to the
-current \fIErrorLog\fR using the "info" log level.
-
-.TP 5
-NOTICE: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "notice" log level.
-
-.TP 5
-WARNING: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "warning" log level.
-
-.SH ENVIRONMENT VARIABLES
-The following environment variables are defined by the CUPS server when
-executing the notifier:
-
-.TP 5
-CHARSET
-.br
-The default text character set, typically utf-8.
-
-.TP 5
-CUPS_CACHEDIR
-.br
-The directory for semi-persistent cache files can be found.
-
-.TP 5
-CUPS_DATADIR
-.br
-The directory where data files can be found.
-
-.TP 5
-CUPS_FILETYPE
-.br
-The type of file being printed: "job-sheet" for a banner page and "document"
-for a regular print file.
-
-.TP 5
-CUPS_SERVERROOT
-.br
-The root directory of the server.
-
-.TP 5
-LANG
-.br
-The default language locale (typically C or en).
-
-.TP 5
-PATH
-.br
-The standard execution path for external programs that may be run by
-the filter.
-
-.TP 5
-SOFTWARE
-.br
-The name and version number of the server (typically CUPS/1.2).
-
-.TP 5
-TZ
-.br
-The timezone of the server.
-
-.TP 5
-USER
-.br
-The user executing the filter, typically "lp"; consult the \fIcupsd.conf(5)\fR
-file for the current setting.
-
+Notifiers \fBMUST\fR read IPP messages from the standard input using the
+.BR ippNew ()
+and
+.BR ippReadFile ()
+functions and exit on error.
+Notifiers are encouraged to exit after a suitable period of inactivity, however they may exit after reading the first message or stay running until an error is seen.
+Notifiers inherit the environment and can use the logging mechanism documented in
+.BR filter (7).
 .SH SEE ALSO
-\fIbackend(7)\fR, \fIcupsd(8)\fR, \fIfilter(7)\fR,
-.br
-http://localhost:631/help
+.BR cupsd (8),
+.BR filter (7),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: notifier.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: notifier.man 11924 2014-06-12 19:10:33Z msweet $".
 .\"
index f489cd2685456fabbb95f530994969da4dcabb3c..8ef9650079cb4172d303266cd0ab9f8b96c49301 100644 (file)
 .\"
-.\" "$Id: ppdc.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: ppdc.man 11927 2014-06-13 00:01:23Z msweet $"
 .\"
-.\"   ppdc man page for CUPS.
+.\" ppdc man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2007 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH ppdc 1 "CUPS" "15 February 2012" "Apple Inc."
+.TH ppdc 1 "CUPS" "12 June 2014" "Apple Inc."
 .SH NAME
-ppdc \- cups ppd compiler
+ppdc \- cups ppd compiler (deprecated)
 .SH SYNOPSIS
 .B ppdc
-[ -D
-.I name[=value]
-] [ -I
+[
+\fB\-D \fIname\fR[\fB=\fIvalue\fR]
+] [
+.B \-I
 .I include-directory
-] [ -c
+] [
+.B \-c
 .I message-catalog
-] [ -d
+] [
+.B \-d
 .I output-directory
-] [ -l
+] [
+.B \-l
 .I language(s)
-] [-m] [-t] [ -v ] [ -z ] [ --cr ] [ --crlf ] [ --lf ]
+] [
+.B \-m
+] [
+.B \-t
+] [
+.B \-v
+] [
+.B \-z
+] [
+.B \-\-cr
+] [
+.B \-\-crlf
+] [
+.B \-\-lf
+]
 .I source-file
 .SH DESCRIPTION
-\fIppdc\fR compiles PPDC source files into one or more PPD
-files. \fBThis program is deprecated and will be removed in a future release of
-CUPS.\fR
-.PP
-The \fI-D\fR option sets the named variable for use in the
-source file. It is equivalent to using the #define directive
-in the source file.
-.PP
-The \fI-I\fR option specifies an alternate include directory;
-multiple \fI-I\fR options can be supplied to add additional
-directories.
-.PP
-The \fI-c\fR option specifies a single message catalog file in GNU
-gettext source format (filename.po) to be used for localization.
-.PP
-The \fI-d\fR option specifies the output directory for PPD
-files. The default output directory is "ppd".
-.PP
-The \fI-l\fR option specifies one or more languages to use when
-localizing the PPD file(s). The default language is "en"
-(English). Separate multiple languages with commas, for example
-"de_DE,en_UK,es_ES,es_MX,es_US,fr_CA,fr_FR,it_IT" will create PPD
-files with German, UK English, Spanish (Spain, Mexico, and US),
-French (France and Canada), and Italian languages in each file.
-.PP
-The \fI-m\fR option specifies that the output filename should be
-based on the ModelName value instead of FileName or PCFilenName.
-.PP
-The \fI-t\fR option specifies that PPD files should be tested instead
-of generated.
-.PP
-The \fI-v\fR option provides more verbose output, basically a
-running status of which files are being loaded or written.
-.PP
-The \fI-z\fR option generates compressed PPD files (filename.ppd.gz).
+\fBppdc\fR compiles PPDC source files into one or more PPD files.
+\fBThis program is deprecated and will be removed in a future release of CUPS.\fR
+.SH OPTIONS
+\fBppdc\fR supports the following options:
+.TP 5
+\fB\-D \fIname\fR[\fB=\fIvalue\fR]
+Sets the named variable for use in the source file.
+It is equivalent to using the \fI#define\fR directive in the source file.
+.TP 5
+\fB\-I \fIinclude-directory\fR
+Specifies an alternate include directory.
+Multiple \fI-I\fR options can be supplied to add additional directories.
+.TP 5
+\fB\-c \fImessage-catalog\fR
+Specifies a single message catalog file in GNU gettext (filename.po) or Apple strings (filename.strings) format to be used for localization.
+.TP 5
+\fB\-d \fIoutput-directory\fR
+Specifies the output directory for PPD files.
+The default output directory is "ppd".
+.TP 5
+\fB\-l \fIlanguage(s)\fR
+Specifies one or more languages to use when localizing the PPD file(s).
+The default language is "en" (English).
+Separate multiple languages with commas, for example "de_DE,en_UK,es_ES,es_MX,es_US,fr_CA,fr_FR,it_IT" will create PPD files with German, UK English, Spanish (Spain, Mexico, and US), French (France and Canada), and Italian languages in each file.
+.TP 5
+.B \-m
+Specifies that the output filename should be based on the ModelName value instead of FileName or PCFilenName.
+.TP 5
+.B \-t
+Specifies that PPD files should be tested instead of generated.
+.TP 5
+.B \-v
+Specifies verbose output, basically a running status of which files are being loaded or written.
+.B \-z
+Generates compressed PPD files (filename.ppd.gz).
 The default is to generate uncompressed PPD files.
-.PP
-The \fI--cr\fR, \fI--crlf\fR, and \fI--lf\fR options specify the
-line ending to use - carriage return, carriage return and line feed,
-or line feed. The default is to use the line feed character alone.
+.TP 5
+\fB\-\-cr\fR
+.TP 5
+\fB\-\-crlf\fR
+.TP 5
+\fB\-\-lf\fR
+Specifies the line ending to use - carriage return, carriage return and line feed, or line feed alone.
+The default is to use the line feed character alone.
 .SH SEE ALSO
-ppdhtml(1), ppdi(1), ppdmerge(1), ppdpo(1), ppdcfile(5)
-.br
-http://localhost:631/help
+.BR ppdhtml (1),
+.BR ppdi (1),
+.BR ppdmerge (1),
+.BR ppdpo (1),
+.BR ppdcfile (5),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: ppdc.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: ppdc.man 11927 2014-06-13 00:01:23Z msweet $".
 .\"
index a3c9cd849173422d9d9f3b378bd32f7ca63a173c..23d0d307ad6e225c861548330d415a8bbb2ae80c 100644 (file)
 .\"
-.\" "$Id: ppdcfile.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: ppdcfile.man 11925 2014-06-12 19:36:12Z msweet $"
 .\"
-.\"   ppdcfile man page for CUPS.
+.\" ppdcfile man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2007 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH ppdcfile 5 "CUPS" "3 December 2012" "Apple Inc."
+.TH ppdcfile 5 "CUPS" "12 June 2014" "Apple Inc."
 .SH NAME
 ppdcfile \- cups ppd compiler source file format
 .SH DESCRIPTION
-The CUPS PPD compiler reads meta files that contain descriptions
-of one or more PPD files to be generated by \fIppdc\fR. This man
-page provides a quick reference to the supported keywords and
-should be used in conjunction with the online help for CUPS.
+The CUPS PPD compiler reads meta files that contain descriptions of one or more PPD files to be generated by
+.BR ppdc (1).
+This man page provides a quick reference to the supported keywords and should be used in conjunction with the online help for CUPS.
 .PP
-The source file format is plain ASCII text that can be edited
-using your favorite text editor. Comments are supported using
-the C (/* ... */) and C++ (// ...) comment mechanisms.
+The source file format is plain ASCII text that can be edited using your favorite text editor. Comments are supported using the C (/* ... */) and C++ (// ...) comment mechanisms.
 .PP
-Printer driver information can be grouped and shared using
-curly braces ({ ... }); PPD files are written when a close
-brace or end-of-file is seen and a PCFileName directive has been
-defined.
+Printer driver information can be grouped and shared using curly braces ({ ... }); PPD files are written when a close brace or end-of-file is seen and a PCFileName directive has been defined.
 .PP
-Directives may be placed anywhere on a line and are followed by
-one or more values. The following is a list of the available
-directives and the values they accept:
+Directives may be placed anywhere on a line and are followed by one or more values. The following is a list of the available directives and the values they accept:
 .TP 5
-\fB#define\fR name value
+\fB#define \fIname value\fR
 .TP 5
-\fB#elif\fR {name | value}
+\fB#elif \fR{\fIname \fR| \fIvalue\fR}
 .TP 5
 \fB#else\fR
 .TP 5
 \fB#endif\fR
 .TP 5
-\fB#font\fR name encoding "version" charset status
+\fB#font \fIname encoding "version" charset status\fR
 .TP 5
-\fB#if\fR {name | value}
+\fB#if \fR{\fIname \fR| \fIvalue\fR}
 .TP 5
-\fB#include\fR <filename>
+\fB#include <\fIfilename\fB>\fR
 .TP 5
-\fB#include\fR "filename"
+\fB#include "\fIfilename\fB"\fR
 .TP 5
-\fB#media\fR name width length
+\fB#media \fIname width length\fR
 .TP 5
-\fB#media\fR "name/text" width length
+\fB#media "\fIname\fB/\fItext\fB" \fIwidth length\fR
 .TP 5
-\fB#po\fR locale "filename.po"
+\fB#po \fIlocale \fB"\fIfilename\fB"\fR
 .TP 5
-\fBAttribute\fR name "" value
+\fBAttribute \fIname \fB"" \fIvalue\fR
 .TP 5
-\fBAttribute\fR name keyword value
+\fBAttribute \fIname keyword value\fR
 .TP 5
-\fBAttribute\fR name "keyword/text" value
+\fBAttribute \fIname \fB"\fIkeyword\fB/\fItext\fB" \fIvalue\fR
 .TP 5
-\fBChoice\fR name "code"
+\fBChoice \fIname \fB"\fIcode\fB"\fR
 .TP 5
-\fBChoice\fR "name/text" "code"
+\fBChoice \fB"\fIname\fB/\fItext\fB" "\fIcode\fB"\fR
 .TP 5
-\fBColorDevice\fR boolean-value
+\fBColorDevice \fIboolean-value\fR
 .TP 5
-\fBColorModel\fR name colorspace colororder compression
+\fBColorModel \fIname colorspace colororder compression\fR
 .TP 5
-\fBColorModel\fR "name/text" colorspace colororder compression
+\fBColorModel "\fIname\fB/\fItext\fB" \fIcolorspace colororder compression\fR
 .TP 5
-\fBColorProfile\fR resolution/mediatype gamma density matrix
+\fBColorProfile \fIresolution\fB/\fImediatype gamma density matrix\fR
 .TP 5
-\fBCopyright\fR "text"
+\fBCopyright "\fItext\fR"
 .TP 5
-\fBCustomMedia\fR name width length left bottom right top "size-code" "region-code"
+\fBCustomMedia \fIname width length left bottom right top \fB"\fIsize-code\fB" "\fIregion-code\fB"\fR
 .TP 5
-\fBCustomMedia\fR "name/text" width length left bottom right top "size-code" "region-code"
+\fBCustomMedia "\fIname\fB/\fItext\fB" \fIwidth length left bottom right top \fB"\fIsize-code\fB" "\fIregion-code\fB"\fR
 .TP 5
-\fBCutter\fR boolean-value
+\fBCutter \fIboolean-value\fR
 .TP 5
-\fBDarkness\fR temperature name
+\fBDarkness \fItemperature name\fR
 .TP 5
-\fBDarkness\fR temperature "name/text"
+\fBDarkness \fItemperature \fB"\fIname\fB/\fItext\fB"\fR
 .TP 5
-\fBDriverType\fR type
+\fBDriverType \fItype\fR
 .TP 5
-\fBDuplex\fR type
+\fBDuplex \fItype\fR
 .TP 5
-\fBFilter\fR mime-type cost program
+\fBFilter \Imime-type cost program\fR
 .TP 5
-\fBFinishing\fR name
+\fBFinishing \fIname\fR
 .TP 5
-\fBFinishing\fR "name/text"
+\fBFinishing "\fIname\fB/\fItext\fB"\fR
 .TP 5
-\fBFont\fR *
+\fBFont *\fR
 .TP 5
-\fBFont\fR name encoding "version" charset status
+\fBFont \fIname encoding \fB"\fIversion\fB" \fIcharset status\fR
 .TP 5
-\fBGroup\fR name
+\fBGroup \fIname\fR
 .TP 5
-\fBGroup\fR "name/text"
+\fBGroup "\fIname\fB/\fItext\fB"\fR
 .TP 5
-\fBHWMargins\fR left bottom right top
+\fBHWMargins \fIleft bottom right top\fR
 .TP 5
-\fBInputSlot\fR position name
+\fBInputSlot \fIposition name\fR
 .TP 5
-\fBInputSlot\fR position "name/text"
+\fBInputSlot \fIposition \fB"\fIname\fB/\fItext\fB"\fR
 .TP 5
-\fBInstallable\fR name
+\fBInstallable \fIname\fR
 .TP 5
-\fBInstallable\fR "name/text"
+\fBInstallable "\fIname\fB/\fItext\fB"\fR
 .TP 5
-\fBLocAttribute\fR name "keyword/text" value
+\fBLocAttribute \fIname \fB"\fIkeyword\fB/\fItext\fB" \fIvalue\fR
 .TP 5
-\fBManualCopies\fR boolean-value
+\fBManualCopies \fIboolean-value\fR
 .TP 5
-\fBManufacturer\fR "name"
+\fBManufacturer "\fIname\fB"\fR
 .TP 5
-\fBMaxSize\fR width length
+\fBMaxSize \fIwidth length\fR
 .TP 5
-\fBMediaSize\fR name
+\fBMediaSize \fIname\fR
 .TP 5
-\fBMediaType\fR type name
+\fBMediaType \fItype name\fR
 .TP 5
-\fBMediaType\fR type "name/text"
+\fBMediaType \fItype \fB"\fIname\fB/\fItext\fB"\fR
 .TP 5
-\fBMinSize\fR width length
+\fBMinSize \fIwidth length\fR
 .TP 5
-\fBModelName\fR "name"
+\fBModelName "\fIname\fB"\fR
 .TP 5
-\fBModelNumber\fR number
+\fBModelNumber \fInumber\fR
 .TP 5
-\fBOption\fR name type section order
+\fBOption \fIname type section order\fR
 .TP 5
-\fBOption\fR "name/text" type section order
+\fBOption "\fIname\fB/\fItext\fB" \fItype section order\fR
 .TP 5
-\fBPCFileName\fR "filename.ppd"
+\fBPCFileName "\fIfilename.ppd\fB"\fR
 .TP 5
-\fBResolution\fR colorspace bits-per-color row-count row-feed row-step name
+\fBResolution \fIcolorspace bits-per-color row-count row-feed row-step name\fR
 .TP 5
-\fBResolution\fR colorspace bits-per-color row-count row-feed row-step "name/text"
+\fBResolution \fIcolorspace bits-per-color row-count row-feed row-step \fB"\fIname\fB/\fItext\fB"\fR
 .TP 5
-\fBSimpleColorProfile\fR resolution/mediatype density yellow-density red-density gamma red-adjust green-adjust blue-adjust
+\fBSimpleColorProfile \fIresolution\fB/\fImediatype density yellow-density red-density gamma red-adjust green-adjust blue-adjust\fR
 .TP 5
-\fBThroughput\fR pages-per-minute
+\fBThroughput \fIpages-per-minute\fR
 .TP 5
-\fBUIConstraints\fR "*Option1 *Option2"
+\fBUIConstraints "\fI*Option1 *Option2\fB"\fR
 .TP 5
-\fBUIConstraints\fR "*Option1 Choice1 *Option2"
+\fBUIConstraints "\fI*Option1 Choice1 *Option2\fB"\fR
 .TP 5
-\fBUIConstraints\fR "*Option1 *Option2 Choice2"
+\fBUIConstraints "\fI*Option1 *Option2 Choice2\fB"\fR
 .TP 5
-\fBUIConstraints\fR "*Option1 Choice1 *Option2 Choice2"
+\fBUIConstraints "\fI*Option1 Choice1 *Option2 Choice2\fB"\fR
 .TP 5
-\fBVariablePaperSize\fR boolean-value
+\fBVariablePaperSize \fIboolean-value\fR
 .TP 5
-\fBVersion\fR number
+\fBVersion \fInumber\fR
 .SH SEE ALSO
-ppdc(1), ppdhtml(1), ppdi(1), ppdmerge(1), ppdpo(1)
-.br
-http://localhost:631/help
+.BR ppdc (1),
+.BR ppdhtml (1),
+.BR ppdi (1),
+.BR ppdmerge (1),
+.BR ppdpo (1),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: ppdcfile.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: ppdcfile.man 11925 2014-06-12 19:36:12Z msweet $".
 .\"
index 3e1e4dc573dbc1e8a2b15582e59bc89932960fc1..6454804f63df008b945e3b5ffa56a85e3e083ea0 100644 (file)
@@ -1,46 +1,51 @@
 .\"
-.\" "$Id: ppdhtml.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: ppdhtml.man 11927 2014-06-13 00:01:23Z msweet $"
 .\"
-.\"   ppdhtml man page for CUPS.
+.\" ppdhtml man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2007 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH ppdhtml 1 "CUPS" "10 October 2008" "Apple Inc."
+.TH ppdhtml 1 "CUPS" "12 June 2014" "Apple Inc."
 .SH NAME
-ppdhtml \- cups html summary generator
+ppdhtml \- cups html summary generator (deprecated)
 .SH SYNOPSIS
 .B ppdhtml
-[ -D
-.I name[=value]
-] [ -I
+[
+\fB\-D \fIname\fR[\fB=\fIvalue\fR]
+] [
+.B \-I
 .I include-directory
 ]
 .I source-file
 .SH DESCRIPTION
-\fIppdhtml\fR reads a driver information file and produces a
-HTML summary page that lists all of the drivers in a file and
-the supported options.
-.PP
-The \fI-D\fR option sets the named variable for use in the
-source file. It is equivalent to using the #define directive
-in the source file.
-.PP
-The \fI-I\fR option specifies an alternate include directory;
-multiple \fI-I\fR options can be supplied to add additional
-directories.
+\fBppdhtml\fR reads a driver information file and produces a HTML summary page that lists all of the drivers in a file and the supported options.
+\fBThis program is deprecated and will be removed in a future release of CUPS.\fR
+.SH OPTIONS
+\fBppdhtml\fR supports the following options:
+.TP 5
+\fB\-D \fIname\fR[\fB=\fIvalue\fR]
+Sets the named variable for use in the source file.
+It is equivalent to using the \fI#define\fR directive in the source file.
+.TP 5
+\fB\-I \fIinclude-directory\fR
+Specifies an alternate include directory.
+Multiple \fI-I\fR options can be supplied to add additional directories.
 .SH SEE ALSO
-ppdc(1), ppdcfile(5), ppdi(1), ppdmerge(1), ppdpo(1)
-.br
-http://localhost:631/help
+.BR ppdc (1),
+.BR ppdcfile (5),
+.BR ppdi (1),
+.BR ppdmerge (1),
+.BR ppdpo (1),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: ppdhtml.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: ppdhtml.man 11927 2014-06-13 00:01:23Z msweet $".
 .\"
index f26f263a71dba5f0743a524f9ce791edbc82973a..b6b6bdfb335e0d8159181fef13998c1ab6d5d1cb 100644 (file)
@@ -1,46 +1,58 @@
 .\"
-.\" "$Id: ppdi.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: ppdi.man 11927 2014-06-13 00:01:23Z msweet $"
 .\"
-.\"   ppdi man page for CUPS.
+.\" ppdi man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2007 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH ppdi 1 "CUPS" "20 May 2008" "Apple Inc."
+.TH ppdi 1 "CUPS" "12 June 2014" "Apple Inc."
 .SH NAME
-ppdi \- import ppd files
+ppdi \- import ppd files (deprecated)
 .SH SYNOPSIS
 .B ppdi
-[ \-I
+[
+.B \-I
 .I include-directory
-] [ \-o
+] [
+.B \-o
 .I source-file
 ]
 .I ppd-file
-[
-.I ppd-file2 ... ppd-fileN
+[ ...
+.I ppd-file
 ]
 .SH DESCRIPTION
-\fIppdi\fR imports one or more PPD files into a PPD compiler source file.
-Multiple languages of the same PPD file are merged into a single printer
-definition to facilitate accurate changes for all localizations.
-.PP
-The \fI-o\fR option specifies the PPD source file to update. If the source
-file does not exist, a new source file is created. Otherwise the existing
-file is merged with the new PPD file(s) on the command-line. If no source
-file is specified, the filename "ppdi.drv" is used.
+\fBppdi\fR imports one or more PPD files into a PPD compiler source file.
+Multiple languages of the same PPD file are merged into a single printer definition to facilitate accurate changes for all localizations.
+\fBThis program is deprecated and will be removed in a future release of CUPS.\fR
+.SH OPTIONS
+\fBppdi\fR supports the following options:
+.TP 5
+\fB\-I \fIinclude-directory\fR
+Specifies an alternate include directory.
+Multiple \fI-I\fR options can be supplied to add additional directories.
+.TP 5
+\fB\-o \fIsource-file\fR
+Specifies the PPD source file to update.
+If the source file does not exist, a new source file is created.
+Otherwise the existing file is merged with the new PPD file(s) on the command-line.
+If no source file is specified, the filename \fIppdi.drv\fR is used.
 .SH SEE ALSO
-ppdc(1), ppdhtml(1), ppdmerge(1), ppdpo(1), ppdcfile(5)
-.br
-http://localhost:631/help
+.BR ppdc (1),
+.BR ppdhtml (1),
+.BR ppdmerge (1),
+.BR ppdpo (1),
+.BR ppdcfile (5),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: ppdi.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: ppdi.man 11927 2014-06-13 00:01:23Z msweet $".
 .\"
index 0a0c518256d75c9b19d47e1bf6c380c45a867dd8..38109b05374ee8c42a7e43e6a74df5a636a79961 100644 (file)
@@ -1,47 +1,54 @@
 .\"
-.\" "$Id: ppdmerge.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: ppdmerge.man 11927 2014-06-13 00:01:23Z msweet $"
 .\"
-.\"   ppdmerge man page for CUPS.
+.\" ppdmerge man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2007 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH ppdmerge 1 "CUPS" "20 May 2008" "Apple Inc."
+.TH ppdmerge 1 "CUPS" "12 June 2014" "Apple Inc."
 .SH NAME
-ppdmerge \- merge ppd files
+ppdmerge \- merge ppd files (deprecated)
 .SH SYNOPSIS
 .B ppdmerge
-[ \-o
+[
+.B \-o
 .I output-ppd-file
 ]
 .I ppd-file
-.I ppd-file2
-[
-.I ... ppd-fileN
+.I ppd-file
+[ ...
+.I ppd-file
 ]
 .SH DESCRIPTION
-\fIppdmerge\fR merges two or more PPD files into a single, multi-language
+\fBppdmerge\fR merges two or more PPD files into a single, multi-language
 PPD file.
-.PP
-The \fI-o\fR option specifies the PPD file to create. If not specified,
-the merged PPD file is written to the standard output. If the output file
-already exists, the new
+\fBThis program is deprecated and will be removed in a future release of CUPS.\fR
+.SH OPTIONS
+\fBppdmerge\fR supports the following options:
+.TP
+\fB\-o \fIoutput-ppd-file\fR
+Specifies the PPD file to create.
+If not specified, the merged PPD file is written to the standard output.
+If the output file already exists, it is silently overwritten.
 .SH NOTES
-\fIppdmerge\fR does not check whether the merged PPD files are for the
-same device. Merging of different device PPDs will yield unpredictable
-results.
+\fBppdmerge\fR does not check whether the merged PPD files are for the same device.
+Merging of different device PPDs will yield unpredictable results.
 .SH SEE ALSO
-cupsprofile(1), ppdc(1), ppdhtml(1), ppdi(1), ppdpo(1), ppdcfile(5)
-.br
-http://localhost:631/help
+.BR ppdc (1),
+.BR ppdhtml (1),
+.BR ppdi (1),
+.BR ppdpo (1),
+.BR ppdcfile (5),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: ppdmerge.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: ppdmerge.man 11927 2014-06-13 00:01:23Z msweet $".
 .\"
index f2b0a2b1ba49d5113abbc89649a35a4f4fb337e9..b2786babb1f60111a7c61557d4568e7df6e27df3 100644 (file)
@@ -1,52 +1,58 @@
 .\"
-.\" "$Id: ppdpo.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: ppdpo.man 11927 2014-06-13 00:01:23Z msweet $"
 .\"
-.\"   ppdpo man page for CUPS.
+.\" ppdpo man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2007 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH ppdpo 1 "CUPS" "23 April 2012" "Apple Inc."
+.TH ppdpo 1 "CUPS" "12 June 2014" "Apple Inc."
 .SH NAME
-ppdpo \- ppd message catalog generator
+ppdpo \- ppd message catalog generator (deprecated)
 .SH SYNOPSIS
 .B ppdpo
-[ -D
-.I name[=value]
-] [ -I
+[
+\fB\-D \fIname\fR[\fB=\fIvalue\fR]
+] [
+.B \-I
 .I include-directory
-] [ -o
+] [
+.B \-o
 .I output-file
 ]
 .I source-file
 .SH DESCRIPTION
-\fIppdpo\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.
-.PP
-The \fI-D\fR option sets the named variable for use in the
-source file. It is equivalent to using the #define directive
-in the source file.
-.PP
-The \fI-I\fR option specifies an alternate include directory;
-multiple \fI-I\fR options can be supplied to add additional
-directories.
-.PP
-The \fI-o\fR option specifies the output file. The supported extensions are
-".po" or ".po.gz" for GNU gettext format message catalogs and ".strings" for
-OS X strings files.
+\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.
+\fBThis program is deprecated and will be removed in a future release of CUPS.\fR
+.SH OPTIONS
+\fBppdpo\fR supports the following options:
+.TP 5
+\fB\-D \fIname\fR[\fB=\fIvalue\fR]
+Sets the named variable for use in the source file.
+It is equivalent to using the \fI#define\fR directive in the source file.
+.TP 5
+\fB\-I \fIinclude-directory\fR
+Specifies an alternate include directory.
+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.
 .SH SEE ALSO
-ppdc(1), ppdhtml(1), ppdi(1), ppdmerge(1), ppdcfile(5)
-.br
-http://localhost:631/help
+.BR ppdc (1),
+.BR ppdhtml (1),
+.BR ppdi (1),
+.BR ppdmerge (1),
+.BR ppdcfile(5),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: ppdpo.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: ppdpo.man 11927 2014-06-13 00:01:23Z msweet $".
 .\"
index 1ab7876c2a97d9e510b9a3a794ca6a549d4f6bf4..73076b0f2e6dfee86a2d117489399bb64780cbcf 100644 (file)
 .\"
-.\" "$Id: printers.conf.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: printers.conf.man 11817 2014-04-15 16:31:11Z msweet $"
 .\"
-.\"   printers.conf man page for CUPS.
+.\" printers.conf man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 1997-2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH printers.conf 5 "CUPS" "29 April 2009" "Apple Inc."
+.TH printers.conf 5 "CUPS" "15 April 2014" "Apple Inc."
 .SH NAME
 printers.conf \- printer configuration file for cups
 .SH DESCRIPTION
-The \fIprinters.conf\fR file defines the local printers that are
-available. It is normally located in the \fI/etc/cups\fR directory and
-is generated automatically by the \fIcupsd(8)\fR program when printers
-are added or deleted.
-.LP
-Each line in the file can be a configuration directive, a blank line,
-or a comment. Comment lines start with the # character.
-.SH DIRECTIVES
-.TP 5
-<Printer name> ... </Printer>
-.br
-Defines a specific printer.
-.TP 5
-<DefaultPrinter name> ... </Printer>
-.br
-Defines a default printer.
-.TP 5
-Accepting Yes
-.TP 5
-Accepting No
-.br
-Specifies whether the printer is accepting new jobs.
-.TP 5
-AllowUser [ user @group ... ]
-.br
-Allows specific users and groups to print to the printer.
-.TP 5
-DenyUser [ user @group ... ]
-.br
-Prevents specific users and groups from printing to the printer.
-.TP 5
-DeviceURI uri
-.br
-Specifies the device URI for a printer.
-.TP 5
-ErrorPolicy abort-job
-.TP 5
-ErrorPolicy retry-current-job
-.TP 5
-ErrorPolicy retry-job
-.TP 5
-ErrorPolicy stop-printer
-.br
-Specifies the error policy for the printer.
-.TP 5
-Info text
-.br
-Specifies human-readable text describing the printer.
-.TP 5
-JobSheets banner banner
-.br
-Specifies the banner pages to use for the printer.
-.TP 5
-KLimit number
-.br
-Specifies the job-k-limit value for the printer.
-.TP 5
-Location text
-.br
-Specifies human-readable text describing the location of the printer.
-.TP 5
-OpPolicy name
-.br
-Specifies the operation policy for the printer.
-.TP 5
-PageLimit number
-.br
-Specifies the job-page-limit value for the printer.
-.TP 5
-PortMonitor monitor
-.br
-Specifies the port monitor for a printer.
-.TP 5
-QuotaPeriod seconds
-.br
-Specifies the job-quota-period value for the printer.
-.TP 5
-Shared Yes
-.TP 5
-Shared No
-.br
-Specifies whether the printer is shared.
-.TP 5
-State idle
-.TP 5
-State stopped
-.br
-Specifies the initial state of the printer (Idle or Stopped)
-.TP 5
-StateMessage text
-.br
-Specifies the message associated with the state.
-.TP 5
-StateTime seconds
-.br
-Specifies the date/time associated with the state.
+The \fBprinters.conf\fR file defines the local printers that are available. It is normally located in the \fI/etc/cups\fR directory and is maintained by the
+.BR cupsd (8)
+program. This file is not intended to be edited or managed manually.
+.SH NOTES
+The name, location, and format of this file are an implementation detail that will change in future releases of CUPS.
 .SH SEE ALSO
-\fIclasses.conf(5)\fR, \fIcupsd(8)\fR, \fIcupsd.conf(5)\fR,
-\fImime.convs(5)\fR, \fImime.types(5)\fR,
-.br
-http://localhost:631/help
+.BR classes.conf (5),
+.BR cupsd (8),
+.BR cupsd.conf (5),
+.BR mime.convs (5),
+.BR mime.types (5),
+.BR subscriptions.conf (5),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: printers.conf.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: printers.conf.man 11817 2014-04-15 16:31:11Z msweet $".
 .\"
index edb52ac15deb890ea6f2c33b682c1a15ce3d4bea..3e265e8b16cfadc35d7de896b4505f15ccab239e 100644 (file)
@@ -1,89 +1,36 @@
 .\"
-.\" "$Id: subscriptions.conf.man 11022 2013-06-06 22:14:09Z msweet $"
+.\" "$Id: subscriptions.conf.man 11817 2014-04-15 16:31:11Z msweet $"
 .\"
-.\"   subscriptions.conf man page for CUPS.
+.\" subscriptions.conf man page for CUPS.
 .\"
-.\"   Copyright 2007-2013 by Apple Inc.
-.\"   Copyright 2006 by Easy Software Products.
+.\" Copyright 2007-2014 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/".
 .\"
-.TH subscriptions.conf 5 "CUPS" "30 April 2006" "Apple Inc."
+.TH subscriptions.conf 5 "CUPS" "15 April 2014" "Apple Inc."
 .SH NAME
-subscriptions.conf \- subscriptions file for cups
+subscriptions.conf \- subscription configuration file for cups
 .SH DESCRIPTION
-The \fIsubscriptions.conf\fR file defines the local subscriptions
-that are active. It is normally located in the \fI/etc/cups\fR
-directory and is generated automatically by the \fIcupsd(8)\fR
-program when subscriptions are created, renewed, or cancelled.
-.LP
-Each line in the file can be a configuration directive, a blank line,
-or a comment. Comment lines start with the # character.
-.SH DIRECTIVES
-.TP 5
-<Subscription NNN> ... </Subscription>
-.br
-Defines a subscription.
-.TP 5
-Events name [ ... name ]
-.br
-Specifies the events that are subscribed.
-.TP 5
-ExpirationTime unix-time
-.br
-Specifies the expiration time of a subscription as a UNIX time
-value in seconds since January 1st, 1970.
-.TP 5
-Interval seconds
-.br
-Specifies the preferred time interval for event notifications in
-seconds.
-.TP 5
-JobId job-id
-.br
-Specifies the job ID associated with the subscription.
-.TP 5
-LeaseDuration seconds
-.br
-Specifies the number of seconds that the subscription is valid
-for. If 0, the subscription does not expire.
-.TP 5
-NextEventId number
-.br
-Specifies the next notify-sequence-number to use for the
-subscription.
-.TP 5
-NextSubscriptionId number
-.br
-Specifies the next subscription-id to use.
-.TP 5
-Owner username
-.br
-Specifies the user that owns the subscription.
-.TP 5
-PrinterName printername
-.br
-Specifies the printer or class associated with the subscription.
-.TP 5
-Recipient uri
-.br
-Specifies the notify-recipient-uri value for push-type notifications.
-.TP 5
-UserData hex-escaped-data
-.br
-Specifies user data to be included in event notifications. This
-is typically the "from" address in mailto: notifications.
+The \fBsubscriptions.conf\fR file defines the local event notification subscriptions that are active. It is normally located in the \fI/etc/cups\fR directory and is maintained by the
+.BR cupsd (8)
+program. This file is not intended to be edited or managed manually.
+.SH NOTES
+The name, location, and format of this file are an implementation detail that will change in future releases of CUPS.
 .SH SEE ALSO
-\fIclasses.conf(5)\fR, \fIcupsd(8)\fR, \fIcupsd.conf(5)\fR,
-\fImime.convs(5)\fR, \fImime.types(5)\fR, \fRprinters.conf(5)\fR
-.br
-http://localhost:631/help
+.BR classes.conf (5),
+.BR cupsd (8),
+.BR cupsd.conf (5),
+.BR mime.convs (5),
+.BR mime.types (5),
+.BR printers.conf (5),
+CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
 .\"
-.\" End of "$Id: subscriptions.conf.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: subscriptions.conf.man 11817 2014-04-15 16:31:11Z msweet $".
 .\"
index 54d05e76a8679de3ba0e5363eda73cf42c7af7f5..10a252aaa39f588c387af3fe7ad0b5c071f04c99 100644 (file)
@@ -1,13 +1,14 @@
 bcp.o: bcp.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
-  ../cups/debug-private.h ../cups/versioning.h ../cups/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 tbcp.o: tbcp.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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
index 423ab110e941c60cfcea8b2794db7b94c61ef7bc..11c2e68eaefc646385394f10cf020e7821cdf9e9 100644 (file)
@@ -1,24 +1,18 @@
 /*
- * "$Id: bcp.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: bcp.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   TBCP port monitor for CUPS.
+ * TBCP port monitor for CUPS.
  *
- *   Copyright 2007-2010 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/".
  *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   main()    - Main entry...
- *   psgets()  - Get a line from a file.
- *   pswrite() - Write data from a file.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -34,7 +28,7 @@
  */
 
 static char            *psgets(char *buf, size_t *bytes, FILE *fp);
-static size_t          pswrite(const char *buf, size_t bytes, FILE *fp);
+static ssize_t         pswrite(const char *buf, size_t bytes);
 
 
 /*
@@ -151,7 +145,7 @@ main(int  argc,                             /* I - Number of command-line args */
       if (psgets(line, &linelen, fp) == NULL)
        break;
     }
-    while (pswrite(line, linelen, stdout) > 0);
+    while (pswrite(line, linelen) > 0);
 
     fflush(stdout);
   }
@@ -184,7 +178,7 @@ psgets(char   *buf,                 /* I  - Buffer to read into */
   bufptr = buf;
   ch     = EOF;
 
-  while ((bufptr - buf) < len)
+  while ((size_t)(bufptr - buf) < len)
   {
     if ((ch = getc(fp)) == EOF)
       break;
@@ -209,7 +203,7 @@ psgets(char   *buf,                 /* I  - Buffer to read into */
     else if (ch == '\n')
       break;
     else
-      *bufptr++ = ch;
+      *bufptr++ = (char)ch;
   }
 
  /*
@@ -218,8 +212,8 @@ psgets(char   *buf,                 /* I  - Buffer to read into */
 
   if (ch == '\n' || ch == '\r')
   {
-    if ((bufptr - buf) < len)
-      *bufptr++ = ch;
+    if ((size_t)(bufptr - buf) < len)
+      *bufptr++ = (char)ch;
     else
       ungetc(ch, fp);
   }
@@ -229,7 +223,7 @@ psgets(char   *buf,                 /* I  - Buffer to read into */
   */
 
   *bufptr = '\0';
-  *bytes  = bufptr - buf;
+  *bytes  = (size_t)(bufptr - buf);
 
   if (ch == EOF && bufptr == buf)
     return (NULL);
@@ -242,10 +236,9 @@ psgets(char   *buf,                        /* I  - Buffer to read into */
  * 'pswrite()' - Write data from a file.
  */
 
-static size_t                          /* O - Number of bytes written */
+static ssize_t                         /* O - Number of bytes written */
 pswrite(const char *buf,               /* I - Buffer to write */
-        size_t     bytes,              /* I - Bytes to write */
-       FILE       *fp)                 /* I - File to write to */
+        size_t     bytes)              /* I - Bytes to write */
 {
   size_t       count;                  /* Remaining bytes */
 
@@ -283,10 +276,10 @@ pswrite(const char *buf,          /* I - Buffer to write */
          break;
     }
 
-  return (bytes);
+  return ((ssize_t)bytes);
 }
 
 
 /*
- * End of "$Id: bcp.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: bcp.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 5f415a5e3389af6b744b168f186b0b4f32a66fbf..5325faf0d9dd02d7b6e140de4ff8feae80d456e8 100644 (file)
@@ -1,24 +1,18 @@
 /*
- * "$Id: tbcp.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: tbcp.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   TBCP port monitor for CUPS.
+ * TBCP port monitor for CUPS.
  *
- *   Copyright 2007-2012 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/".
  *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   main()    - Main entry...
- *   psgets()  - Get a line from a file.
- *   pswrite() - Write data from a file.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -34,7 +28,7 @@
  */
 
 static char            *psgets(char *buf, size_t *bytes, FILE *fp);
-static size_t          pswrite(const char *buf, size_t bytes, FILE *fp);
+static ssize_t         pswrite(const char *buf, size_t bytes);
 
 
 /*
@@ -135,7 +129,7 @@ main(int  argc,                             /* I - Number of command-line args */
     * Loop until we see end-of-file...
     */
 
-    while (pswrite(line, linelen, stdout) > 0)
+    while (pswrite(line, linelen) > 0)
     {
       linelen = sizeof(line);
       if (psgets(line, &linelen, fp) == NULL)
@@ -173,7 +167,7 @@ psgets(char   *buf,                 /* I  - Buffer to read into */
   bufptr = buf;
   ch     = EOF;
 
-  while ((bufptr - buf) < len)
+  while ((size_t)(bufptr - buf) < len)
   {
     if ((ch = getc(fp)) == EOF)
       break;
@@ -198,7 +192,7 @@ psgets(char   *buf,                 /* I  - Buffer to read into */
     else if (ch == '\n')
       break;
     else
-      *bufptr++ = ch;
+      *bufptr++ = (char)ch;
   }
 
  /*
@@ -207,8 +201,8 @@ psgets(char   *buf,                 /* I  - Buffer to read into */
 
   if (ch == '\n' || ch == '\r')
   {
-    if ((bufptr - buf) < len)
-      *bufptr++ = ch;
+    if ((size_t)(bufptr - buf) < len)
+      *bufptr++ = (char)ch;
     else
       ungetc(ch, fp);
   }
@@ -218,7 +212,7 @@ psgets(char   *buf,                 /* I  - Buffer to read into */
   */
 
   *bufptr = '\0';
-  *bytes  = bufptr - buf;
+  *bytes  = (size_t)(bufptr - buf);
 
   if (ch == EOF && bufptr == buf)
     return (NULL);
@@ -231,10 +225,9 @@ psgets(char   *buf,                        /* I  - Buffer to read into */
  * 'pswrite()' - Write data from a file.
  */
 
-static size_t                          /* O - Number of bytes written */
+static ssize_t                         /* O - Number of bytes written */
 pswrite(const char *buf,               /* I - Buffer to write */
-        size_t     bytes,              /* I - Bytes to write */
-       FILE       *fp)                 /* I - File to write to */
+        size_t     bytes)              /* I - Bytes to write */
 {
   size_t       count;                  /* Remaining bytes */
 
@@ -273,10 +266,10 @@ pswrite(const char *buf,          /* I - Buffer to write */
          break;
     }
 
-  return (bytes);
+  return ((ssize_t)bytes);
 }
 
 
 /*
- * End of "$Id: tbcp.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: tbcp.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index f5a26a4681667b432f438807d71145f684d2bae2..d844f9de40050694785380fcff0ef34135899ccd 100644 (file)
@@ -1,20 +1,22 @@
 dbus.o: dbus.c ../cups/cups.h ../cups/file.h ../cups/versioning.h \
   ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h \
-  ../cups/string-private.h ../config.h
+  ../cups/pwg.h ../cups/string-private.h ../config.h
 mailto.o: mailto.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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
 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/string-private.h ../config.h ../cups/ipp-private.h
+  ../cups/pwg.h ../cups/string-private.h ../config.h \
+  ../cups/ipp-private.h
 testnotify.o: testnotify.c ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
index fc63aac4b4403b75ace255ddbf21fc542494e97f..2a01f24794cd196c74e91d74da45f1fd05617c34 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: dbus.c 11500 2014-01-06 22:21:15Z msweet $"
+ * "$Id: dbus.c 11594 2014-02-14 20:09:01Z msweet $"
  *
  * D-Bus notifier for CUPS.
  *
@@ -417,7 +417,7 @@ main(int  argc,                             /* I - Number of command-line args */
        attr = ippFindAttribute(msg, "printer-state", IPP_TAG_ENUM);
        if (attr)
        {
-         dbus_uint32_t val = ippGetInteger(attr, 0);
+         dbus_uint32_t val = (dbus_uint32_t)ippGetInteger(attr, 0);
          dbus_message_iter_append_uint32(&iter, &val);
        }
        else
@@ -446,8 +446,7 @@ main(int  argc,                             /* I - Number of command-line args */
            if (i)
              *p++ = ',';
 
-           strlcpy(p, ippGetString(attr, i, NULL),
-                   reasons_length - (p - printer_reasons));
+           strlcpy(p, ippGetString(attr, i, NULL), reasons_length - (size_t)(p - printer_reasons));
            p += strlen(p);
          }
          if (!dbus_message_iter_append_string(&iter, &printer_reasons))
@@ -466,7 +465,7 @@ main(int  argc,                             /* I - Number of command-line args */
                                IPP_TAG_BOOLEAN);
        if (attr)
        {
-         dbus_bool_t val = ippGetBoolean(attr, 0);
+         dbus_bool_t val = (dbus_bool_t)ippGetBoolean(attr, 0);
          dbus_message_iter_append_boolean(&iter, &val);
        }
        else
@@ -486,7 +485,7 @@ main(int  argc,                             /* I - Number of command-line args */
       attr = ippFindAttribute(msg, "notify-job-id", IPP_TAG_INTEGER);
       if (attr)
       {
-        dbus_uint32_t val = ippGetInteger(attr, 0);
+        dbus_uint32_t val = (dbus_uint32_t)ippGetInteger(attr, 0);
         dbus_message_iter_append_uint32(&iter, &val);
       }
       else
@@ -496,7 +495,7 @@ main(int  argc,                             /* I - Number of command-line args */
       attr = ippFindAttribute(msg, "job-state", IPP_TAG_ENUM);
       if (attr)
       {
-        dbus_uint32_t val = ippGetInteger(attr, 0);
+        dbus_uint32_t val = (dbus_uint32_t)ippGetInteger(attr, 0);
         dbus_message_iter_append_uint32(&iter, &val);
       }
       else
@@ -519,8 +518,7 @@ main(int  argc,                             /* I - Number of command-line args */
          if (i)
            *p++ = ',';
 
-         strlcpy(p, ippGetString(attr, i, NULL),
-                 reasons_length - (p - job_reasons));
+         strlcpy(p, ippGetString(attr, i, NULL), reasons_length - (size_t)(p - job_reasons));
          p += strlen(p);
        }
        if (!dbus_message_iter_append_string(&iter, &job_reasons))
@@ -545,7 +543,7 @@ main(int  argc,                             /* I - Number of command-line args */
                              IPP_TAG_INTEGER);
       if (attr)
       {
-        dbus_uint32_t val = ippGetInteger(attr, 0);
+        dbus_uint32_t val = (dbus_uint32_t)ippGetInteger(attr, 0);
         dbus_message_iter_append_uint32(&iter, &val);
       }
       else
@@ -656,5 +654,5 @@ main(void)
 
 
 /*
- * End of "$Id: dbus.c 11500 2014-01-06 22:21:15Z msweet $".
+ * End of "$Id: dbus.c 11594 2014-02-14 20:09:01Z msweet $".
  */
index e2535c73432241dca1a00640c09a16087806fc08..94a648e85291d3575ad0006abb057df9f73cc8b3 100644 (file)
@@ -1,21 +1,21 @@
 #
-# "$Id: cups.list.in 11025 2013-06-07 01:00:33Z msweet $"
+# "$Id: cups.list.in 11776 2014-03-28 19:16:05Z msweet $"
 #
-#   ESP Package Manager (EPM) file list for CUPS.
+# ESP Package Manager (EPM) file list for CUPS.
 #
-#   Copyright 2007-2012 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/".
 #
 
 # Product information
 %product CUPS
-%copyright 2007-2012 by Apple Inc.
+%copyright 2007-2014 by Apple Inc.
 %vendor Apple Inc.
 #%license LICENSE.txt
 %readme LICENSE.txt
@@ -345,7 +345,6 @@ f 0555 root sys $BINDIR/cupstestppd systemv/cupstestppd
 f 0555 root sys $BINDIR/ipptool test/ipptool
 f 0555 root sys $BINDIR/lp systemv/lp
 f 0555 root sys $BINDIR/lpoptions systemv/lpoptions
-f 0555 root sys $BINDIR/lppasswd systemv/lppasswd
 f 0555 root sys $BINDIR/lpq berkeley/lpq
 f 0555 root sys $BINDIR/lpr berkeley/lpr
 f 0555 root sys $BINDIR/lprm berkeley/lprm
@@ -652,7 +651,6 @@ 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/ipptool.$MAN1EXT man/ipptool.$MAN1EXT
 f 0444 root sys $MANDIR/man1/lpoptions.$MAN1EXT man/lpoptions.$MAN1EXT
-f 0444 root sys $MANDIR/man1/lppasswd.$MAN1EXT man/lppasswd.$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
@@ -736,5 +734,5 @@ f 0444 root sys $XINETD/cups-lpd scheduler/cups-lpd.xinetd
 %subpackage
 
 #
-# End of "$Id: cups.list.in 11025 2013-06-07 01:00:33Z msweet $".
+# End of "$Id: cups.list.in 11776 2014-03-28 19:16:05Z msweet $".
 #
index 998cf753ebea1c56c19125c812250451a6e92399..8ea836b3288ad7e8f6b13b5ebc1e60007f874349 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: cups.spec.in 11946 2014-06-24 18:01:58Z msweet $"
+# "$Id: cups.spec.in 12074 2014-07-31 01:10:14Z msweet $"
 #
 # RPM "spec" file for CUPS.
 #
 #   dnssd    - Enable/disable DNS-SD support (default = enable)
 #   libusb1  - Enable/disable LIBUSB 1.0 support (default = enable)
 #   static   - Enable/disable static libraries (default = enable)
-#
-# Note: Older Linux distributions use the name "libusbx-devel" or just
-#       "libusb-devel" for LIBUSB 1.0.  There is absolutely nothing we can
-#       do to make this spec file build as-is on those distributions, you'll
-#       need to change the "BuildRequires" line accordingly...
 
 %{!?_with_dbus: %{!?_without_dbus: %define _with_dbus --with-dbus}}
 %{?_with_dbus: %define _dbus --enable-dbus}
 %{?_with_static: %define _static --enable-static}
 %{!?_with_static: %define _static --disable-static}
 
+%{!?_with_systemd: %{!?_without_systemd: %define _with_systemd --with-systemd}}
+%{?_with_systemd: %define _systemd --enable-systemd}
+%{!?_with_systemd: %define _systemd --disable-systemd}
+
 Summary: CUPS
 Name: cups
-Version: 1.7.5
+Version: 2.0b1
 Release: 1
 Epoch: 1
 License: GPL
 Group: System Environment/Daemons
-Source: http://www.cups.org/software/1.7.5/cups-1.7.5-source.tar.bz2
+Source: http://www.cups.org/software/2.0b1/cups-2.0b1-source.tar.bz2
 Url: http://www.cups.org
 Packager: Anonymous <anonymous@foo.com>
 Vendor: Apple Inc.
@@ -70,6 +69,10 @@ BuildRequires: avahi-devel
 BuildRequires: libusb-devel >= 1.0
 %endif
 
+%if %{?_with_systemd:1}%{!?_with_systemd:0}
+BuildRequires: systemd-devel
+%endif
+
 # Use buildroot so as not to disturb the version already installed
 BuildRoot: /tmp/%{name}-root
 
@@ -123,6 +126,7 @@ make
 rm -rf $RPM_BUILD_ROOT
 
 make BUILDROOT=$RPM_BUILD_ROOT install
+rm -rf $RPM_BUILD_ROOT/usr/share/cups/banners $RPM_BUILD_ROOT/usr/share/cups/data
 
 %post
 /sbin/chkconfig --add cups
@@ -174,27 +178,18 @@ rm -rf $RPM_BUILD_ROOT
 %dir /etc/pam.d
 /etc/pam.d/*
 
-# RC dirs are a pain under Linux...  Uncomment the appropriate ones if you
-# don't use Red Hat or Mandrake...
+%if %{?_with_systemd:1}%{!?_with_systemd:0}
+# SystemD
+/usr/lib/systemd/system/*
 
+%else
+# Legacy init support on Linux
 /etc/init.d/*
 /etc/rc0.d/*
 /etc/rc2.d/*
 /etc/rc3.d/*
 /etc/rc5.d/*
-
-# OLD RedHat/Mandrake
-#/etc/rc.d/init.d/*
-#/etc/rc.d/rc0.d/*
-#/etc/rc.d/rc2.d/*
-#/etc/rc.d/rc3.d/*
-#/etc/rc.d/rc5.d/*
-
-#/sbin/rc.d/*
-#/sbin/rc.d/rc0.d/*
-#/sbin/rc.d/rc2.d/*
-#/sbin/rc.d/rc3.d/*
-#/sbin/rc.d/rc5.d/*
+%endif
 
 /usr/bin/cancel
 /usr/bin/cupstestdsc
@@ -232,10 +227,6 @@ rm -rf $RPM_BUILD_ROOT
 
 /usr/sbin/*
 %dir /usr/share/cups
-%dir /usr/share/cups/banners
-/usr/share/cups/banners/*
-%dir /usr/share/cups/data
-/usr/share/cups/data/*
 %dir /usr/share/cups/drv
 /usr/share/cups/drv/*
 %dir /usr/share/cups/ipptool
@@ -270,35 +261,26 @@ rm -rf $RPM_BUILD_ROOT
 /usr/share/doc/cups/help/security.html
 /usr/share/doc/cups/help/sharing.html
 /usr/share/doc/cups/help/translation.html
-/usr/share/doc/cups/help/whatsnew.html
 %dir /usr/share/doc/cups/images
 /usr/share/doc/cups/images/*
 
-%dir /usr/share/doc/cups/ca
-/usr/share/doc/cups/ca/*
-%dir /usr/share/doc/cups/cs
-/usr/share/doc/cups/cs/*
-%dir /usr/share/doc/cups/de
-/usr/share/doc/cups/de/*
-%dir /usr/share/doc/cups/es
-/usr/share/doc/cups/es/*
-%dir /usr/share/doc/cups/fr
-/usr/share/doc/cups/fr/*
-%dir /usr/share/doc/cups/it
-/usr/share/doc/cups/it/*
-%dir /usr/share/doc/cups/ja
-/usr/share/doc/cups/ja/*
-%dir /usr/share/doc/cups/pt_BR
-/usr/share/doc/cups/pt_BR/*
-%dir /usr/share/doc/cups/ru
-/usr/share/doc/cups/ru/*
+#%dir /usr/share/doc/cups/ca
+#/usr/share/doc/cups/ca/*
+#%dir /usr/share/doc/cups/cs
+#/usr/share/doc/cups/cs/*
+#%dir /usr/share/doc/cups/es
+#/usr/share/doc/cups/es/*
+#%dir /usr/share/doc/cups/fr
+#/usr/share/doc/cups/fr/*
+#%dir /usr/share/doc/cups/ja
+#/usr/share/doc/cups/ja/*
+#%dir /usr/share/doc/cups/ru
+#/usr/share/doc/cups/ru/*
 
 %dir /usr/share/locale/ca
 /usr/share/locale/ca/cups_ca.po
 %dir /usr/share/locale/cs
 /usr/share/locale/cs/cups_cs.po
-%dir /usr/share/locale/de
-/usr/share/locale/de/cups_de.po
 %dir /usr/share/locale/es
 /usr/share/locale/es/cups_es.po
 %dir /usr/share/locale/fr
@@ -307,20 +289,18 @@ rm -rf $RPM_BUILD_ROOT
 /usr/share/locale/it/cups_it.po
 %dir /usr/share/locale/ja
 /usr/share/locale/ja/cups_ja.po
-%dir /usr/share/locale/pt_BR
-/usr/share/locale/pt_BR/cups_pt_BR.po
 %dir /usr/share/locale/ru
 /usr/share/locale/ru/cups_ru.po
 
 %dir /usr/share/man/man1
 /usr/share/man/man1/cancel.1.gz
+/usr/share/man/man1/cups.1.gz
 /usr/share/man/man1/cupstestdsc.1.gz
 /usr/share/man/man1/cupstestppd.1.gz
 /usr/share/man/man1/ippfind.1.gz
 /usr/share/man/man1/ipptool.1.gz
 /usr/share/man/man1/lp.1.gz
 /usr/share/man/man1/lpoptions.1.gz
-/usr/share/man/man1/lppasswd.1.gz
 /usr/share/man/man1/lpq.1.gz
 /usr/share/man/man1/lpr.1.gz
 /usr/share/man/man1/lprm.1.gz
@@ -331,17 +311,20 @@ rm -rf $RPM_BUILD_ROOT
 /usr/share/man/man5/mime.*.5.gz
 %dir /usr/share/man/man8
 /usr/share/man/man8/accept.8.gz
+/usr/share/man/man8/cups-deviced.8.gz
+/usr/share/man/man8/cups-driverd.8.gz
+/usr/share/man/man8/cups-exec.8.gz
+/usr/share/man/man8/cups-snmp.8.gz
 /usr/share/man/man8/cupsaddsmb.8.gz
 /usr/share/man/man8/cupsaccept.8.gz
 /usr/share/man/man8/cupsctl.8.gz
 /usr/share/man/man8/cupsfilter.8.gz
 /usr/share/man/man8/cupsd.8.gz
+/usr/share/man/man8/cupsd-helper.8.gz
+/usr/share/man/man8/cupsd-logs.8.gz
 /usr/share/man/man8/cupsdisable.8.gz
 /usr/share/man/man8/cupsenable.8.gz
 /usr/share/man/man8/cupsreject.8.gz
-/usr/share/man/man8/cups-deviced.8.gz
-/usr/share/man/man8/cups-driverd.8.gz
-/usr/share/man/man8/cups-snmp.8.gz
 /usr/share/man/man8/lpadmin.8.gz
 /usr/share/man/man8/lpc.8.gz
 /usr/share/man/man8/lpinfo.8.gz
@@ -405,5 +388,5 @@ rm -rf $RPM_BUILD_ROOT
 
 
 #
-# End of "$Id: cups.spec.in 11946 2014-06-24 18:01:58Z msweet $".
+# End of "$Id: cups.spec.in 12074 2014-07-31 01:10:14Z msweet $".
 #
index da6538a83d19b504c952889edcf0a123088acd3e..dc942e68a43ed87559984b7aea411bd2c426e418 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: cups.spec.in 11946 2014-06-24 18:01:58Z msweet $"
+# "$Id: cups.spec.in 12074 2014-07-31 01:10:14Z msweet $"
 #
 # RPM "spec" file for CUPS.
 #
 #   dnssd    - Enable/disable DNS-SD support (default = enable)
 #   libusb1  - Enable/disable LIBUSB 1.0 support (default = enable)
 #   static   - Enable/disable static libraries (default = enable)
-#
-# Note: Older Linux distributions use the name "libusbx-devel" or just
-#       "libusb-devel" for LIBUSB 1.0.  There is absolutely nothing we can
-#       do to make this spec file build as-is on those distributions, you'll
-#       need to change the "BuildRequires" line accordingly...
 
 %{!?_with_dbus: %{!?_without_dbus: %define _with_dbus --with-dbus}}
 %{?_with_dbus: %define _dbus --enable-dbus}
 %{?_with_static: %define _static --enable-static}
 %{!?_with_static: %define _static --disable-static}
 
+%{!?_with_systemd: %{!?_without_systemd: %define _with_systemd --with-systemd}}
+%{?_with_systemd: %define _systemd --enable-systemd}
+%{!?_with_systemd: %define _systemd --disable-systemd}
+
 Summary: CUPS
 Name: cups
 Version: @CUPS_VERSION@
@@ -70,6 +69,10 @@ BuildRequires: avahi-devel
 BuildRequires: libusb-devel >= 1.0
 %endif
 
+%if %{?_with_systemd:1}%{!?_with_systemd:0}
+BuildRequires: systemd-devel
+%endif
+
 # Use buildroot so as not to disturb the version already installed
 BuildRoot: /tmp/%{name}-root
 
@@ -123,6 +126,7 @@ make
 rm -rf $RPM_BUILD_ROOT
 
 make BUILDROOT=$RPM_BUILD_ROOT install
+rm -rf $RPM_BUILD_ROOT/usr/share/cups/banners $RPM_BUILD_ROOT/usr/share/cups/data
 
 %post
 /sbin/chkconfig --add cups
@@ -174,27 +178,18 @@ rm -rf $RPM_BUILD_ROOT
 %dir /etc/pam.d
 /etc/pam.d/*
 
-# RC dirs are a pain under Linux...  Uncomment the appropriate ones if you
-# don't use Red Hat or Mandrake...
+%if %{?_with_systemd:1}%{!?_with_systemd:0}
+# SystemD
+/usr/lib/systemd/system/*
 
+%else
+# Legacy init support on Linux
 /etc/init.d/*
 /etc/rc0.d/*
 /etc/rc2.d/*
 /etc/rc3.d/*
 /etc/rc5.d/*
-
-# OLD RedHat/Mandrake
-#/etc/rc.d/init.d/*
-#/etc/rc.d/rc0.d/*
-#/etc/rc.d/rc2.d/*
-#/etc/rc.d/rc3.d/*
-#/etc/rc.d/rc5.d/*
-
-#/sbin/rc.d/*
-#/sbin/rc.d/rc0.d/*
-#/sbin/rc.d/rc2.d/*
-#/sbin/rc.d/rc3.d/*
-#/sbin/rc.d/rc5.d/*
+%endif
 
 /usr/bin/cancel
 /usr/bin/cupstestdsc
@@ -232,10 +227,6 @@ rm -rf $RPM_BUILD_ROOT
 
 /usr/sbin/*
 %dir /usr/share/cups
-%dir /usr/share/cups/banners
-/usr/share/cups/banners/*
-%dir /usr/share/cups/data
-/usr/share/cups/data/*
 %dir /usr/share/cups/drv
 /usr/share/cups/drv/*
 %dir /usr/share/cups/ipptool
@@ -270,35 +261,26 @@ rm -rf $RPM_BUILD_ROOT
 /usr/share/doc/cups/help/security.html
 /usr/share/doc/cups/help/sharing.html
 /usr/share/doc/cups/help/translation.html
-/usr/share/doc/cups/help/whatsnew.html
 %dir /usr/share/doc/cups/images
 /usr/share/doc/cups/images/*
 
-%dir /usr/share/doc/cups/ca
-/usr/share/doc/cups/ca/*
-%dir /usr/share/doc/cups/cs
-/usr/share/doc/cups/cs/*
-%dir /usr/share/doc/cups/de
-/usr/share/doc/cups/de/*
-%dir /usr/share/doc/cups/es
-/usr/share/doc/cups/es/*
-%dir /usr/share/doc/cups/fr
-/usr/share/doc/cups/fr/*
-%dir /usr/share/doc/cups/it
-/usr/share/doc/cups/it/*
-%dir /usr/share/doc/cups/ja
-/usr/share/doc/cups/ja/*
-%dir /usr/share/doc/cups/pt_BR
-/usr/share/doc/cups/pt_BR/*
-%dir /usr/share/doc/cups/ru
-/usr/share/doc/cups/ru/*
+#%dir /usr/share/doc/cups/ca
+#/usr/share/doc/cups/ca/*
+#%dir /usr/share/doc/cups/cs
+#/usr/share/doc/cups/cs/*
+#%dir /usr/share/doc/cups/es
+#/usr/share/doc/cups/es/*
+#%dir /usr/share/doc/cups/fr
+#/usr/share/doc/cups/fr/*
+#%dir /usr/share/doc/cups/ja
+#/usr/share/doc/cups/ja/*
+#%dir /usr/share/doc/cups/ru
+#/usr/share/doc/cups/ru/*
 
 %dir /usr/share/locale/ca
 /usr/share/locale/ca/cups_ca.po
 %dir /usr/share/locale/cs
 /usr/share/locale/cs/cups_cs.po
-%dir /usr/share/locale/de
-/usr/share/locale/de/cups_de.po
 %dir /usr/share/locale/es
 /usr/share/locale/es/cups_es.po
 %dir /usr/share/locale/fr
@@ -307,20 +289,18 @@ rm -rf $RPM_BUILD_ROOT
 /usr/share/locale/it/cups_it.po
 %dir /usr/share/locale/ja
 /usr/share/locale/ja/cups_ja.po
-%dir /usr/share/locale/pt_BR
-/usr/share/locale/pt_BR/cups_pt_BR.po
 %dir /usr/share/locale/ru
 /usr/share/locale/ru/cups_ru.po
 
 %dir /usr/share/man/man1
 /usr/share/man/man1/cancel.1.gz
+/usr/share/man/man1/cups.1.gz
 /usr/share/man/man1/cupstestdsc.1.gz
 /usr/share/man/man1/cupstestppd.1.gz
 /usr/share/man/man1/ippfind.1.gz
 /usr/share/man/man1/ipptool.1.gz
 /usr/share/man/man1/lp.1.gz
 /usr/share/man/man1/lpoptions.1.gz
-/usr/share/man/man1/lppasswd.1.gz
 /usr/share/man/man1/lpq.1.gz
 /usr/share/man/man1/lpr.1.gz
 /usr/share/man/man1/lprm.1.gz
@@ -331,17 +311,20 @@ rm -rf $RPM_BUILD_ROOT
 /usr/share/man/man5/mime.*.5.gz
 %dir /usr/share/man/man8
 /usr/share/man/man8/accept.8.gz
+/usr/share/man/man8/cups-deviced.8.gz
+/usr/share/man/man8/cups-driverd.8.gz
+/usr/share/man/man8/cups-exec.8.gz
+/usr/share/man/man8/cups-snmp.8.gz
 /usr/share/man/man8/cupsaddsmb.8.gz
 /usr/share/man/man8/cupsaccept.8.gz
 /usr/share/man/man8/cupsctl.8.gz
 /usr/share/man/man8/cupsfilter.8.gz
 /usr/share/man/man8/cupsd.8.gz
+/usr/share/man/man8/cupsd-helper.8.gz
+/usr/share/man/man8/cupsd-logs.8.gz
 /usr/share/man/man8/cupsdisable.8.gz
 /usr/share/man/man8/cupsenable.8.gz
 /usr/share/man/man8/cupsreject.8.gz
-/usr/share/man/man8/cups-deviced.8.gz
-/usr/share/man/man8/cups-driverd.8.gz
-/usr/share/man/man8/cups-snmp.8.gz
 /usr/share/man/man8/lpadmin.8.gz
 /usr/share/man/man8/lpc.8.gz
 /usr/share/man/man8/lpinfo.8.gz
@@ -405,5 +388,5 @@ rm -rf $RPM_BUILD_ROOT
 
 
 #
-# End of "$Id: cups.spec.in 11946 2014-06-24 18:01:58Z msweet $".
+# End of "$Id: cups.spec.in 12074 2014-07-31 01:10:14Z msweet $".
 #
index bcabc31950797a0541f4d6e37c78db4cddff1cfb..9feb967572b2925f324c77b37b6e0b57b0d4786a 100644 (file)
 ppdc-array.o: ppdc-array.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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 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 \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/ppd-private.h \
-  ../cups/ppd.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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-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/language.h ../cups/pwg-private.h ../cups/cups.h \
+  ../cups/pwg-private.h ../cups/cups.h ../cups/pwg.h \
   ../cups/ppd-private.h ../cups/ppd.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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/raster.h ../data/epson.h ../data/hp.h ../data/label.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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 ppdmerge.o: ppdmerge.cxx ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 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/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
index 9526ce007564cb417e45f5678440d7499e7bc693..bc8bb646a024898850dcd02e3b479d60230fcfa0 100644 (file)
@@ -1,16 +1,16 @@
 #
-# "$Id: Makefile 4216 2013-03-11 13:57:36Z msweet $"
+# "$Id: Makefile 11800 2014-04-08 19:53:57Z msweet $"
 #
-#   Makefile for the CUPS PPD Compiler.
+# Makefile for the CUPS PPD Compiler.
 #
-#   Copyright 2007-2012 by Apple Inc.
-#   Copyright 2002-2006 by Easy Software Products.
+# Copyright 2007-2014 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/".
+# These coded instructions, statements, and computer programs 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/".
 #
 
 #
@@ -104,7 +104,7 @@ clean:
        $(RM) $(TARGETS) $(UNITTARGETS)
        $(RM) -r ppd ppd2
        $(RM) sample-import.drv sample.c test.drv
-       $(RM) libcupsppdc.so libcupsppdc.sl libcupsppdc.dylib
+       $(RM) libcupsppdc.so libcupsppdc.dylib
 
 
 #
@@ -168,7 +168,7 @@ install-libs: $(INSTALLSTATIC)
        echo Installing libraries in $(LIBDIR)...
        $(INSTALL_DIR) -m 755 $(LIBDIR)
        $(INSTALL_LIB) $(LIBCUPSPPDC) $(LIBDIR)
-       if test $(LIBCUPSPPDC) = "libcupsppdc.so.1" -o $(LIBCUPSPPDC) = "libcupsppdc.sl.1"; then \
+       if test $(LIBCUPSPPDC) = "libcupsppdc.so.1"; then \
                $(RM) $(LIBDIR)/`basename $(LIBCUPSPPDC) .1`; \
                $(LN) $(LIBCUPSPPDC) $(LIBDIR)/`basename $(LIBCUPSPPDC) .1`; \
        fi
@@ -202,9 +202,6 @@ uninstall:
        $(RM) $(LIBDIR)/libcupsppdc.1.dylib
        $(RM) $(LIBDIR)/libcupsppdc.a
        $(RM) $(LIBDIR)/libcupsppdc.dylib
-       $(RM) $(LIBDIR)/libcupsppdc_s.a
-       $(RM) $(LIBDIR)/libcupsppdc.sl
-       $(RM) $(LIBDIR)/libcupsppdc.sl.1
        $(RM) $(LIBDIR)/libcupsppdc.so
        $(RM) $(LIBDIR)/libcupsppdc.so.1
        -$(RMDIR) $(LIBDIR)
@@ -293,9 +290,9 @@ ppdi-static:                ppdc-static ppdi.o libcupsppdc.a  ../cups/$(LIBCUPSSTATIC)
                $(COMMONLIBS) $(LIBZ)
        echo Testing PPD importer...
        $(RM) -r ppd ppd2 sample-import.drv
-       ./ppdc-static -I ../data sample.drv
+       ./ppdc-static -l en -I ../data sample.drv
        ./ppdi-static -I ../data -o sample-import.drv ppd/*
-       ./ppdc-static -I ../data -d ppd2 sample-import.drv
+       ./ppdc-static -l en -I ../data -d ppd2 sample-import.drv
        if diff -r ppd ppd2 >/dev/null; then \
                echo PPD import OK; \
        else \
@@ -334,10 +331,10 @@ testcatalog:              testcatalog.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC)
 
 
 #
-# libcupsppdc.so.1, libcupsppdc.sl.1
+# libcupsppdc.so.1
 #
 
-libcupsppdc.so.1 libcupsppdc.sl.1:     $(LIBOBJS) ../cups/$(LIBCUPS)
+libcupsppdc.so.1     $(LIBOBJS) ../cups/$(LIBCUPS)
        echo Linking $@...
        $(DSOXX) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS) $(LINKCUPS)
        $(RM) `basename $@ .1`
@@ -362,17 +359,6 @@ libcupsppdc.1.dylib:       $(LIBOBJS) ../cups/$(LIBCUPS)
        $(LN) $@ libcupsppdc.dylib
 
 
-#
-# libcupsppdc_s.a
-#
-
-libcupsppdc_s.a:       $(LIBOBJS) ../cups/$(LIBCUPS)
-       echo Creating $@...
-       $(DSOXX) $(DSOFLAGS) -o libcupsppdc_s.o $(LIBOBJS) $(LINKCUPS)
-       $(RM) $@
-       $(AR) $(ARFLAGS) $@ libcupsppdc_s.o
-
-
 #
 # libcupsppdc.la
 #
@@ -402,5 +388,5 @@ include Dependencies
 
 
 #
-# End of "$Id: Makefile 4216 2013-03-11 13:57:36Z msweet $".
+# End of "$Id: Makefile 11800 2014-04-08 19:53:57Z msweet $".
 #
index dee4b55880b91cbc7251ce02b121697d2e0a3d70..72e9a8529206fc7fe60ff4e2e51c5a0a2e2bb30c 100644 (file)
@@ -1,31 +1,24 @@
 //
-// "$Id: genstrings.cxx 3275 2011-05-20 07:26:13Z msweet $"
+// "$Id: genstrings.cxx 11800 2014-04-08 19:53:57Z msweet $"
 //
-//   GNU gettext message generator for the CUPS PPD Compiler.
+// GNU gettext message generator for the CUPS PPD Compiler.
 //
-//   This program is used to generate a dummy source file containing all of
-//   the standard media and sample driver strings.  The results are picked up
-//   by GNU gettext and placed in the CUPS message catalog.
+// This program is used to generate a dummy source file containing all of
+// the standard media and sample driver strings.  The results are picked up
+// by GNU gettext and placed in the CUPS message catalog.
 //
-//   Copyright 2008-2011 by Apple Inc.
+// Copyright 2008-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/".
+// These coded instructions, statements, and computer programs 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:
 //
 //   ./genstrings >sample.c
 //
-// Contents:
-//
-//   main()           - Main entry for the PPD compiler.
-//   add_ui_strings() - Add all UI strings from the driver.
-//   write_cstring()  - Write a translation string as a valid C string to
-//                      stdout.
-//
 
 //
 // Include necessary headers...
@@ -211,5 +204,5 @@ write_cstring(const char *s)                /* I - String to write */
 
 
 //
-// End of "$Id: genstrings.cxx 3275 2011-05-20 07:26:13Z msweet $".
+// End of "$Id: genstrings.cxx 11800 2014-04-08 19:53:57Z msweet $".
 //
index fcef51b27031100f93cb25f4dfa6d1bb7d7387b0..5b5bacc18b06481e1f12a26948ddfadd2abdf4f4 100644 (file)
@@ -1,25 +1,16 @@
 //
-// "$Id: ppdc-array.cxx 1378 2009-04-08 03:17:45Z msweet $"
+// "$Id: ppdc-array.cxx 11558 2014-02-06 18:33:34Z msweet $"
 //
-//   Array class for the CUPS PPD Compiler.
+// Array class for the CUPS PPD Compiler.
 //
-//   Copyright 2007-2009 by Apple Inc.
-//   Copyright 2002-2005 by Easy Software Products.
+// Copyright 2007-2014 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:
-//
-//   ppdcArray::ppdcArray()  - Create a new array.
-//   ppdcArray::~ppdcArray() - Destroy an array.
-//   ppdcArray::add()        - Add an element to an array.
-//   ppdcArray::first()      - Return the first element in the array.
-//   ppdcArray::next()       - Return the next element in the array.
-//   ppdcArray::remove()     - Remove an element from the 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/".
 //
 
 //
@@ -48,7 +39,7 @@ ppdcArray::ppdcArray(ppdcArray *a)
       // Make a copy of the array...
       data = new ppdcShared *[count];
 
-      memcpy(data, a->data, count * sizeof(ppdcShared *));
+      memcpy(data, a->data, (size_t)count * sizeof(ppdcShared *));
 
       for (int i = 0; i < count; i ++)
         data[i]->retain();
@@ -98,7 +89,7 @@ ppdcArray::add(ppdcShared *d)
     alloc += 10;
     temp  = new ppdcShared *[alloc];
 
-    memcpy(temp, data, count * sizeof(ppdcShared *));
+    memcpy(temp, data, (size_t)count * sizeof(ppdcShared *));
 
     delete[] data;
     data = temp;
@@ -159,10 +150,10 @@ ppdcArray::remove(ppdcShared *d)          // I - Data element
   d->release();
 
   if (i < count)
-    memmove(data + i, data + i + 1, (count - i) * sizeof(ppdcShared *));
+    memmove(data + i, data + i + 1, (size_t)(count - i) * sizeof(ppdcShared *));
 }
 
 
 //
-// End of "$Id: ppdc-array.cxx 1378 2009-04-08 03:17:45Z msweet $".
+// End of "$Id: ppdc-array.cxx 11558 2014-02-06 18:33:34Z msweet $".
 //
index ecf7678c1a35d252632135017068647770625364..35cadd6aa37903c9d8a5bfb7be90f7a099f9a84a 100644 (file)
@@ -1,29 +1,16 @@
 //
-// "$Id: ppdc-catalog.cxx 3794 2012-04-23 22:44:16Z msweet $"
+// "$Id: ppdc-catalog.cxx 11800 2014-04-08 19:53:57Z msweet $"
 //
-//   Shared message catalog class for the CUPS PPD Compiler.
+// Shared message catalog class for the CUPS PPD Compiler.
 //
-//   Copyright 2007-2012 by Apple Inc.
-//   Copyright 2002-2006 by Easy Software Products.
+// Copyright 2007-2014 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:
-//
-//   ppdcCatalog::ppdcCatalog()   - Create a shared message catalog.
-//   ppdcCatalog::~ppdcCatalog()  - Destroy a shared message catalog.
-//   ppdcCatalog::add_message()   - Add a new message.
-//   ppdcCatalog::find_message()  - Find a message in a catalog...
-//   ppdcCatalog::load_messages() - Load messages from a .po file.
-//   ppdcCatalog::save_messages() - Save the messages to a .po file.
-//   get_utf8()                   - Get a UTF-8 character.
-//   get_utf16()                  - Get a UTF-16 character...
-//   put_utf8()                   - Add a UTF-8 character to a string.
-//   put_utf16()                  - Write a UTF-16 character to 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/".
 //
 
 //
@@ -50,6 +37,9 @@ typedef enum
 // Local functions...
 //
 
+#if defined(__APPLE__) && defined(CUPS_BUNDLEDIR)
+static void    apple_add_message(CFStringRef key, CFStringRef val, ppdcCatalog *c);
+#endif /* __APPLE__ && CUPS_BUNDLEDIR */
 static int     get_utf8(char *&ptr);
 static int     get_utf16(cups_file_t *fp, ppdc_cs_t &cs);
 static int     put_utf8(int ch, char *&ptr, char *end);
@@ -64,10 +54,6 @@ ppdcCatalog::ppdcCatalog(const char *l,      // I - Locale
                          const char *f)        // I - Message catalog file
   : ppdcShared()
 {
-  _cups_globals_t      *cg = _cupsGlobals();
-                                       // Global information
-
-
   PPDC_NEW;
 
   locale   = new ppdcString(l);
@@ -80,6 +66,67 @@ ppdcCatalog::ppdcCatalog(const char *l,      // I - Locale
     char       pofile[1024];           // Message catalog file
 
 
+#if defined(__APPLE__) && defined(CUPS_BUNDLEDIR)
+    char               applelang[256]; // Apple language ID
+    CFURLRef           url;            // URL to cups.strings file
+    CFReadStreamRef    stream = NULL;  // File stream
+    CFPropertyListRef  plist = NULL;   // Localization file
+
+    snprintf(pofile, sizeof(pofile), CUPS_BUNDLEDIR "/Resources/%s.lproj/cups.strings", _cupsAppleLanguage(l, applelang, sizeof(applelang)));
+    if (access(pofile, 0))
+    {
+      // Try alternate lproj directory names...
+      const char *tl = l;              // Temporary locale string
+
+      if (!strncmp(l, "en", 2))
+       tl = "English";
+      else if (!strncmp(l, "nb", 2) || !strncmp(l, "nl", 2))
+       tl = "Dutch";
+      else if (!strncmp(l, "fr", 2))
+       tl = "French";
+      else if (!strncmp(l, "de", 2))
+       tl = "German";
+      else if (!strncmp(l, "it", 2))
+       tl = "Italian";
+      else if (!strncmp(l, "ja", 2))
+       tl = "Japanese";
+      else if (!strncmp(l, "es", 2))
+       tl = "Spanish";
+
+      snprintf(pofile, sizeof(pofile), CUPS_BUNDLEDIR "/Resources/%s.lproj/cups.strings", tl);
+    }
+
+    url = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (UInt8 *)pofile, (CFIndex)strlen(pofile), false);
+    if (url)
+    {
+      stream = CFReadStreamCreateWithFile(kCFAllocatorDefault, url);
+
+      if (stream)
+      {
+       /*
+       * Read the property list containing the localization data.
+       */
+
+       CFReadStreamOpen(stream);
+
+       plist = CFPropertyListCreateWithStream(kCFAllocatorDefault, stream, 0, kCFPropertyListImmutable, NULL, NULL);
+
+       if (plist && CFGetTypeID(plist) == CFDictionaryGetTypeID())
+         CFDictionaryApplyFunction((CFDictionaryRef)plist, (CFDictionaryApplierFunction)apple_add_message, this);
+
+       if (plist)
+         CFRelease(plist);
+
+       CFRelease(stream);
+      }
+
+      CFRelease(url);
+    }
+
+#else
+    _cups_globals_t    *cg = _cupsGlobals();
+                                       // Global information
+
     snprintf(pofile, sizeof(pofile), "%s/%s/cups_%s.po", cg->localedir, l, l);
 
     if (load_messages(pofile) && strchr(l, '_'))
@@ -94,9 +141,10 @@ ppdcCatalog::ppdcCatalog(const char *l,     // I - Locale
 
       load_messages(pofile);
     }
+#endif /* __APPLE__ && CUPS_BUNDLEDIR */
   }
 
-  if (f)
+  if (f && *f)
     load_messages(f);
 }
 
@@ -206,8 +254,8 @@ ppdcCatalog::load_messages(
   else if (!strcmp(ptr, ".strings"))
   {
    /*
-    * Read messages in OS X ".strings" format, which are UTF-16 text files of
-    * the format:
+    * Read messages in OS X ".strings" format, which are either UTF-8/UTF-16
+    * text files of the format:
     *
     *     "id" = "str";
     *
@@ -610,6 +658,27 @@ ppdcCatalog::save_messages(
 }
 
 
+#if defined(__APPLE__) && defined(CUPS_BUNDLEDIR)
+//
+// 'apple_add_message()' - Add a message from a localization dictionary.
+//
+
+static void
+apple_add_message(CFStringRef key,     // I - Localization key
+                  CFStringRef val,     // I - Localized value
+                  ppdcCatalog *c)      // I - Message catalog
+{
+  char id[1024],                       // Message id
+       str[1024];                      // Localized message
+
+
+  if (CFStringGetCString(key, id, sizeof(id), kCFStringEncodingUTF8) &&
+      CFStringGetCString(val, str, sizeof(str), kCFStringEncodingUTF8))
+    c->add_message(id, str);
+}
+#endif /* __APPLE__ && CUPS_BUNDLEDIR */
+
+
 //
 // 'get_utf8()' - Get a UTF-8 character.
 //
@@ -817,7 +886,7 @@ put_utf8(int  ch,                   // I  - Unicode character
     if (ptr >= end)
       return (-1);
 
-    *ptr++ = ch;
+    *ptr++ = (char)ch;
   }
   else if (ch < 0x800)
   {
@@ -825,8 +894,8 @@ put_utf8(int  ch,                   // I  - Unicode character
     if ((ptr + 1) >= end)
       return (-1);
 
-    *ptr++ = 0xc0 | (ch >> 6);
-    *ptr++ = 0x80 | (ch & 0x3f);
+    *ptr++ = (char)(0xc0 | (ch >> 6));
+    *ptr++ = (char)(0x80 | (ch & 0x3f));
   }
   else if (ch < 0x10000)
   {
@@ -834,9 +903,9 @@ put_utf8(int  ch,                   // I  - Unicode character
     if ((ptr + 2) >= end)
       return (-1);
 
-    *ptr++ = 0xe0 | (ch >> 12);
-    *ptr++ = 0x80 | ((ch >> 6) & 0x3f);
-    *ptr++ = 0x80 | (ch & 0x3f);
+    *ptr++ = (char)(0xe0 | (ch >> 12));
+    *ptr++ = (char)(0x80 | ((ch >> 6) & 0x3f));
+    *ptr++ = (char)(0x80 | (ch & 0x3f));
   }
   else
   {
@@ -844,10 +913,10 @@ put_utf8(int  ch,                 // I  - Unicode character
     if ((ptr + 3) >= end)
       return (-1);
 
-    *ptr++ = 0xf0 | (ch >> 18);
-    *ptr++ = 0x80 | ((ch >> 12) & 0x3f);
-    *ptr++ = 0x80 | ((ch >> 6) & 0x3f);
-    *ptr++ = 0x80 | (ch & 0x3f);
+    *ptr++ = (char)(0xf0 | (ch >> 18));
+    *ptr++ = (char)(0x80 | ((ch >> 12) & 0x3f));
+    *ptr++ = (char)(0x80 | ((ch >> 6) & 0x3f));
+    *ptr++ = (char)(0x80 | (ch & 0x3f));
   }
 
   return (0);
@@ -868,8 +937,8 @@ put_utf16(cups_file_t *fp,          // I - File to write to
   if (ch < 0x10000)
   {
     // One-word UTF-16 big-endian...
-    buffer[0] = ch >> 8;
-    buffer[1] = ch;
+    buffer[0] = (unsigned char)(ch >> 8);
+    buffer[1] = (unsigned char)ch;
 
     if (cupsFileWrite(fp, (char *)buffer, 2) == 2)
       return (0);
@@ -879,10 +948,10 @@ put_utf16(cups_file_t *fp,                // I - File to write to
     // Two-word UTF-16 big-endian...
     ch -= 0x10000;
 
-    buffer[0] = 0xd8 | (ch >> 18);
-    buffer[1] = ch >> 10;
-    buffer[2] = 0xdc | ((ch >> 8) & 0x03);
-    buffer[3] = ch;
+    buffer[0] = (unsigned char)(0xd8 | (ch >> 18));
+    buffer[1] = (unsigned char)(ch >> 10);
+    buffer[2] = (unsigned char)(0xdc | ((ch >> 8) & 0x03));
+    buffer[3] = (unsigned char)ch;
 
     if (cupsFileWrite(fp, (char *)buffer, 4) == 4)
       return (0);
@@ -893,5 +962,5 @@ put_utf16(cups_file_t *fp,          // I - File to write to
 
 
 //
-// End of "$Id: ppdc-catalog.cxx 3794 2012-04-23 22:44:16Z msweet $".
+// End of "$Id: ppdc-catalog.cxx 11800 2014-04-08 19:53:57Z msweet $".
 //
index f04168a22d87aa91b3ed1750fa9ea2cde7b919e4..105eb9c592782c48ce85196704c4a548b81fd4ed 100644 (file)
@@ -1,34 +1,16 @@
 //
-// "$Id: ppdc-driver.cxx 3940 2012-10-15 21:02:10Z msweet $"
+// "$Id: ppdc-driver.cxx 11558 2014-02-06 18:33:34Z msweet $"
 //
-//   PPD file compiler definitions for the CUPS PPD Compiler.
+// PPD file compiler definitions for the CUPS PPD Compiler.
 //
-//   Copyright 2007-2011 by Apple Inc.
-//   Copyright 2002-2006 by Easy Software Products.
+// Copyright 2007-2014 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:
-//
-//   ppdcDriver::ppdcDriver()           - Create a new printer driver.
-//   ppdcDriver::~ppdcDriver()          - Destroy a printer driver.
-//   ppdcDriver::find_attr()            - Find an attribute.
-//   ppdcDriver::find_group()           - Find a group.
-//   ppdcDriver::find_option()          - Find an option.
-//   ppdcDriver::find_option_group()    - Find an option and its group.
-//   ppdcDriver::set_custom_size_code() - Set the custom page size code.
-//   ppdcDriver::set_default_font()     - Set the default font name.
-//   ppdcDriver::set_default_size()     - Set the default size name.
-//   ppdcDriver::set_file_name()        - Set the full filename.
-//   ppdcDriver::set_manufacturer()     - Set the manufacturer name.
-//   ppdcDriver::set_model_name()       - Set the model name.
-//   ppdcDriver::set_pc_file_name()     - Set the PC filename.
-//   ppdcDriver::set_version()          - Set the version string.
-//   ppdcDriver::write_ppd_file()       - Write 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/".
 //
 
 //
@@ -1333,7 +1315,7 @@ ppdcDriver::write_ppd_file(
                     fn->status == PPDC_FONT_ROM ? "ROM" : "Disk", lf);
 
   cupsFilePrintf(fp, "*%% End of %s, %05d bytes.%s", pc_file_name->value,
-                (int)(cupsFileTell(fp) + 25 + strlen(pc_file_name->value)),
+                (int)((size_t)cupsFileTell(fp) + 25 + strlen(pc_file_name->value)),
                 lf);
 
   if (delete_cat)
@@ -1344,5 +1326,5 @@ ppdcDriver::write_ppd_file(
 
 
 //
-// End of "$Id: ppdc-driver.cxx 3940 2012-10-15 21:02:10Z msweet $".
+// End of "$Id: ppdc-driver.cxx 11558 2014-02-06 18:33:34Z msweet $".
 //
index 8838a298e84351a120c15b66c9b0ffb5a0cb66e4..85ef17ea73e0f32dbfacaafa6f2a0de4c9320850 100644 (file)
@@ -1,59 +1,16 @@
 //
-// "$Id: ppdc-source.cxx 4167 2013-02-04 19:27:13Z msweet $"
-//
-//   Source class for the CUPS PPD Compiler.
-//
-//   Copyright 2007-2013 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/".
-//
-// Contents:
-//
-//   ppdcSource::ppdcSource()         - Load a driver source file.
-//   ppdcSource::~ppdcSource()        - Free a driver source file.
-//   ppdcSource::add_include()        - Add an include directory.
-//   ppdcSource::find_driver()        - Find a driver.
-//   ppdcSource::find_include()       - Find an include file.
-//   ppdcSource::find_po()            - Find a message catalog for the given
-//                                      locale.
-//   ppdcSource::find_size()          - Find a media size.
-//   ppdcSource::find_variable()      - Find a variable.
-//   ppdcSource::get_attr()           - Get an attribute.
-//   ppdcSource::get_boolean()        - Get a boolean value.
-//   ppdcSource::get_choice()         - Get a choice.
-//   ppdcSource::get_color_model()    - Get an old-style color model option.
-//   ppdcSource::get_color_order()    - Get an old-style color order value.
-//   ppdcSource::get_color_profile()  - Get a color profile definition.
-//   ppdcSource::get_color_space()    - Get an old-style colorspace value.
-//   ppdcSource::get_constraint()     - Get a constraint.
-//   ppdcSource::get_custom_size()    - Get a custom media size definition from
-//                                      a file.
-//   ppdcSource::get_duplex()         - Get a duplex option.
-//   ppdcSource::get_filter()         - Get a filter.
-//   ppdcSource::get_float()          - Get a single floating-point number.
-//   ppdcSource::get_font()           - Get a font definition.
-//   ppdcSource::get_generic()        - Get a generic old-style option.
-//   ppdcSource::get_group()          - Get an option group.
-//   ppdcSource::get_installable()    - Get an installable option.
-//   ppdcSource::get_integer()        - Get an integer value from a file.
-//   ppdcSource::get_measurement()    - Get a measurement value.
-//   ppdcSource::get_option()         - Get an option definition.
-//   ppdcSource::get_po()             - Get a message catalog.
-//   ppdcSource::get_resolution()     - Get an old-style resolution option.
-//   ppdcSource::get_simple_profile() - Get a simple color profile definition.
-//   ppdcSource::get_size()           - Get a media size definition from a file.
-//   ppdcSource::get_token()          - Get a token from a file.
-//   ppdcSource::get_variable()       - Get a variable definition.
-//   ppdcSource::quotef()             - Write a formatted, quoted string...
-//   ppdcSource::read_file()          - Read a driver source file.
-//   ppdcSource::scan_file()          - Scan a driver source file.
-//   ppdcSource::set_variable()       - Set a variable.
-//   ppdcSource::write_file()         - Write the current source data to a file.
+// "$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.
+// 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/".
 //
 
 //
@@ -235,9 +192,9 @@ ppdcSource::find_include(
   {
     // Check for the local file relative to the current directory...
     if (base && *base && f[0] != '/')
-      snprintf(n, nlen, "%s/%s", base, f);
+      snprintf(n, (size_t)nlen, "%s/%s", base, f);
     else
-      strlcpy(n, f, nlen);
+      strlcpy(n, f, (size_t)nlen);
 
     if (!access(n, 0))
       return (n);
@@ -253,7 +210,7 @@ ppdcSource::find_include(
   {
     for (dir = (ppdcString *)includes->first(); dir; dir = (ppdcString *)includes->next())
     {
-      snprintf(n, nlen, "%s/%s", dir->value, f);
+      snprintf(n, (size_t)nlen, "%s/%s", dir->value, f);
       if (!access(n, 0))
         return (n);
     }
@@ -262,11 +219,11 @@ ppdcSource::find_include(
   // Search the standard include directories...
   _cups_globals_t *cg = _cupsGlobals();        // Global data
 
-  snprintf(n, nlen, "%s/ppdc/%s", cg->cups_datadir, f);
+  snprintf(n, (size_t)nlen, "%s/ppdc/%s", cg->cups_datadir, f);
   if (!access(n, 0))
     return (n);
 
-  snprintf(n, nlen, "%s/po/%s", cg->cups_datadir, f);
+  snprintf(n, (size_t)nlen, "%s/po/%s", cg->cups_datadir, f);
   if (!access(n, 0))
     return (n);
   else
@@ -1810,26 +1767,26 @@ ppdcSource::get_resolution(ppdcFile *fp)// I - File to read
 
   if (color_order >= 0)
   {
-    snprintf(commptr, sizeof(command) - (commptr - command),
+    snprintf(commptr, sizeof(command) - (size_t)(commptr - command),
              "/cupsColorOrder %d", color_order);
     commptr += strlen(commptr);
   }
 
   if (color_space >= 0)
   {
-    snprintf(commptr, sizeof(command) - (commptr - command),
+    snprintf(commptr, sizeof(command) - (size_t)(commptr - command),
              "/cupsColorSpace %d", color_space);
     commptr += strlen(commptr);
   }
 
   if (compression >= 0)
   {
-    snprintf(commptr, sizeof(command) - (commptr - command),
+    snprintf(commptr, sizeof(command) - (size_t)(commptr - command),
              "/cupsCompression %d", compression);
     commptr += strlen(commptr);
   }
 
-  snprintf(commptr, sizeof(command) - (commptr - command), ">>setpagedevice");
+  snprintf(commptr, sizeof(command) - (size_t)(commptr - command), ">>setpagedevice");
 
   // Return the new choice...
   return (new ppdcChoice(name, text, command));
@@ -2014,7 +1971,7 @@ ppdcSource::get_token(ppdcFile *fp,       // I - File to read
         if (!isalnum(ch) && ch != '_')
          break;
        else if (nameptr < (name + sizeof(name) - 1))
-         *nameptr++ = fp->get();
+         *nameptr++ = (char)fp->get();
       }
 
       if (nameptr == name)
@@ -2024,7 +1981,7 @@ ppdcSource::get_token(ppdcFile *fp,       // I - File to read
        {
          // $$ = $
          if (bufptr < bufend)
-           *bufptr++ = fp->get();
+           *bufptr++ = (char)fp->get();
        }
        else
        {
@@ -2044,7 +2001,7 @@ ppdcSource::get_token(ppdcFile *fp,       // I - File to read
        var = find_variable(name);
        if (var)
        {
-         strlcpy(bufptr, var->value->value, bufend - bufptr + 1);
+         strlcpy(bufptr, var->value->value, (size_t)(bufend - bufptr + 1));
          bufptr += strlen(bufptr);
        }
        else
@@ -2054,7 +2011,7 @@ ppdcSource::get_token(ppdcFile *fp,       // I - File to read
                            _("ppdc: Undefined variable (%s) on line %d of "
                              "%s."), name, fp->line, fp->filename);
 
-         snprintf(bufptr, bufend - bufptr + 1, "$%s", name);
+         snprintf(bufptr, (size_t)(bufend - bufptr + 1), "$%s", name);
          bufptr += strlen(bufptr);
        }
       }
@@ -2096,7 +2053,7 @@ ppdcSource::get_token(ppdcFile *fp,       // I - File to read
         empty = 0;
 
        if (bufptr < bufend)
-         *bufptr++ = ch;
+         *bufptr++ = (char)ch;
       }
     }
     else if (ch == '\'' || ch == '\"')
@@ -2112,7 +2069,7 @@ ppdcSource::get_token(ppdcFile *fp,       // I - File to read
       {
         // Insert the opposing quote char...
        if (bufptr < bufend)
-          *bufptr++ = ch;
+          *bufptr++ = (char)ch;
       }
       else
       {
@@ -2128,14 +2085,14 @@ ppdcSource::get_token(ppdcFile *fp,     // I - File to read
       startline = fp->line;
 
       if (bufptr < bufend)
-       *bufptr++ = ch;
+       *bufptr++ = (char)ch;
     }
     else if ((ch == ')' && quote == '(') || (ch == '>' && quote == '<'))
     {
       quote = 0;
 
       if (bufptr < bufend)
-       *bufptr++ = ch;
+       *bufptr++ = (char)ch;
     }
     else if (ch == '\\')
     {
@@ -2145,13 +2102,13 @@ ppdcSource::get_token(ppdcFile *fp,     // I - File to read
         break;
 
       if (bufptr < bufend)
-        *bufptr++ = ch;
+        *bufptr++ = (char)ch;
     }
     else if (bufptr < bufend)
     {
       empty = 0;
 
-      *bufptr++ = ch;
+      *bufptr++ = (char)ch;
 
       if ((ch == '{' || ch == '}') && !quote)
         break;
@@ -2171,7 +2128,6 @@ ppdcSource::get_token(ppdcFile *fp,       // I - File to read
   else
   {
     *bufptr = '\0';
-//    puts(buffer);
     return (buffer);
   }
 }
@@ -2292,7 +2248,7 @@ ppdcSource::quotef(cups_file_t *fp,       // I - File to write to
            if ((format - bufformat + 1) > (int)sizeof(tformat))
              break;
 
-           memcpy(tformat, bufformat, format - bufformat);
+           memcpy(tformat, bufformat, (size_t)(format - bufformat));
            tformat[format - bufformat] = '\0';
 
            bytes += cupsFilePrintf(fp, tformat, va_arg(ap, double));
@@ -2309,7 +2265,7 @@ ppdcSource::quotef(cups_file_t *fp,       // I - File to write to
            if ((format - bufformat + 1) > (int)sizeof(tformat))
              break;
 
-           memcpy(tformat, bufformat, format - bufformat);
+           memcpy(tformat, bufformat, (size_t)(format - bufformat));
            tformat[format - bufformat] = '\0';
 
 #  ifdef HAVE_LONG_LONG
@@ -2327,7 +2283,7 @@ ppdcSource::quotef(cups_file_t *fp,       // I - File to write to
            if ((format - bufformat + 1) > (int)sizeof(tformat))
              break;
 
-           memcpy(tformat, bufformat, format - bufformat);
+           memcpy(tformat, bufformat, (size_t)(format - bufformat));
            tformat[format - bufformat] = '\0';
 
            bytes += cupsFilePrintf(fp, tformat, va_arg(ap, void *));
@@ -2341,7 +2297,7 @@ ppdcSource::quotef(cups_file_t *fp,       // I - File to write to
            }
            else
            {
-             cupsFileWrite(fp, va_arg(ap, char *), width);
+             cupsFileWrite(fp, va_arg(ap, char *), (size_t)width);
              bytes += width;
            }
            break;
@@ -2350,7 +2306,7 @@ ppdcSource::quotef(cups_file_t *fp,       // I - File to write to
            if ((s = va_arg(ap, char *)) == NULL)
              s = (char *)"(nil)";
 
-           slen = strlen(s);
+           slen = (int)strlen(s);
            if (slen > width && prec != width)
              width = slen;
 
@@ -3847,5 +3803,5 @@ ppdcSource::write_file(const char *f)     // I - File to write
 
 
 //
-// End of "$Id: ppdc-source.cxx 4167 2013-02-04 19:27:13Z msweet $".
+// End of "$Id: ppdc-source.cxx 11558 2014-02-06 18:33:34Z msweet $".
 //
index 6cb6bed27af8cf3e3e7054f8f47c42bb5ea7a12b..d8a7c6005d595c27ee55086bcbe003fc354434c2 100644 (file)
@@ -1,21 +1,16 @@
 //
-// "$Id: ppdc.cxx 3794 2012-04-23 22:44:16Z msweet $"
+// "$Id: ppdc.cxx 11800 2014-04-08 19:53:57Z msweet $"
 //
-//   PPD file compiler main entry for the CUPS PPD Compiler.
+// PPD file compiler main entry for the CUPS PPD Compiler.
 //
-//   Copyright 2007-2012 by Apple Inc.
-//   Copyright 2002-2007 by Easy Software Products.
+// Copyright 2007-2014 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/".
-//
-// Contents:
-//
-//   main()  - Main entry for the PPD compiler.
-//   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/".
 //
 
 //
@@ -192,7 +187,7 @@ main(int  argc,                             // I - Number of command-line arguments
 
                catalog = new ppdcCatalog(argv[i]);
 
-               if (catalog->messages->count == 0)
+               if (catalog->messages->count == 0 && strcmp(argv[i], "en"))
                {
                  _cupsLangPrintf(stderr,
                                  _("ppdc: Unable to find localization for "
@@ -344,7 +339,7 @@ main(int  argc,                             // I - Number of command-line arguments
          for (j = 0;
               outname[j] && j < (int)(sizeof(pcfilename) - 1);
               j ++)
-           pcfilename[j] = tolower(outname[j] & 255);
+           pcfilename[j] = (char)tolower(outname[j] & 255);
 
          pcfilename[j] = '\0';
        }
@@ -464,5 +459,5 @@ usage(void)
 
 
 //
-// End of "$Id: ppdc.cxx 3794 2012-04-23 22:44:16Z msweet $".
+// End of "$Id: ppdc.cxx 11800 2014-04-08 19:53:57Z msweet $".
 //
index 63966c0e7b54b7c76d60c2eaa912b5759dbc72e4..cc388814d41bfd85e6bdfe76d52a558209587164 100644 (file)
@@ -1,22 +1,16 @@
 //
-// "$Id: ppdmerge.cxx 3275 2011-05-20 07:26:13Z msweet $"
+// "$Id: ppdmerge.cxx 11558 2014-02-06 18:33:34Z msweet $"
 //
-//   PPD file merge utility for the CUPS PPD Compiler.
+// PPD file merge utility for the CUPS PPD Compiler.
 //
-//   Copyright 2007-2011 by Apple Inc.
-//   Copyright 2002-2007 by Easy Software Products.
+// Copyright 2007-2014 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/".
-//
-// Contents:
-//
-//   main()       - Main entry for the PPD merge utility.
-//   ppd_locale() - Return the locale associated with a PPD file.
-//   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/".
 //
 
 //
@@ -302,8 +296,8 @@ main(int  argc,                             // I - Number of command-line arguments
 static const char *                    // O - Locale string
 ppd_locale(ppd_file_t *ppd)            // I - PPD file
 {
-  int          i,                      // Looping var
-               vlen;                   // Length of LanguageVersion string
+  int          i;                      // Looping var
+  size_t       vlen;                   // Length of LanguageVersion string
   static char  locale[255];            // Locale string
   static struct                                // LanguageVersion translation table
   {
@@ -375,5 +369,5 @@ usage(void)
 
 
 //
-// End of "$Id: ppdmerge.cxx 3275 2011-05-20 07:26:13Z msweet $".
+// End of "$Id: ppdmerge.cxx 11558 2014-02-06 18:33:34Z msweet $".
 //
index f5505e648d98555707dc9a3d4b5ce1c5b06bccc6..1b6bbceb2509639cd73423f7a83e02101aa44ff9 100644 (file)
@@ -1,16 +1,16 @@
 //
-// "$Id: sample.drv 3891 2012-08-29 00:26:48Z msweet $"
+// "$Id: sample.drv 11800 2014-04-08 19:53:57Z msweet $"
 //
-//   Driver info file for CUPS-supplied PPDs.
+// Driver info file for CUPS-supplied PPDs.
 //
-//   Copyright 2007-2012 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 necessary files...
 
 // Localizations are provided for all of the base languages supported by
 // CUPS...
-//#po da ""
-//#po de ""
-//#po es ""
-//#po et ""
-//#po fi ""
-//#po fr ""
-//#po he ""
-//#po id ""
-//#po it ""
-//#po ja ""
-//#po ko ""
-//#po nl ""
-//#po no ""
-//#po pl ""
-//#po pt ""
-//#po pt_BR ""
-//#po ru ""
-//#po sv ""
-//#po zh ""
-//#po zh_TW ""
+#po ar ""
+#po ca ""
+#po cs ""
+#po da ""
+#po de ""
+#po el ""
+#po es ""
+#po fi ""
+#po fr ""
+#po he ""
+#po hr ""
+#po hu ""
+#po id ""
+#po it ""
+#po ja ""
+#po ko ""
+#po ms ""
+#po no ""
+#po pl ""
+#po pt ""
+#po pt_PT ""
+#po ro ""
+#po ru ""
+#po sk ""
+#po sv ""
+#po th ""
+#po tr ""
+#po uk ""
+#po vi ""
+#po zh_CN ""
+#po zh_TW ""
 
 // MediaSize sizes used by label drivers...
 #media "w90h18/1.25x0.25\"" 90 18
 #media "w576h468/8.00x6.50\"" 576 468
 
 // Common stuff for all drivers...
-Attribute "cupsVersion" "" "1.7"
+Attribute "cupsVersion" "" "2.0"
 Attribute "FileSystem" "" "False"
 Attribute "LandscapeOrientation" "" "Plus90"
 Attribute "TTRasterizer" "" "Type42"
 
-Copyright "Copyright 2007-2012 by Apple Inc."
+Copyright "Copyright 2007-2014 by Apple Inc."
 Copyright "Copyright 1997-2007 by Easy Software Products."
 Copyright ""
 Copyright "These coded instructions, statements, and computer programs are the"
@@ -119,7 +130,7 @@ Copyright "file is missing or damaged, see the license at \"http://www.cups.org/
 
 Font *
 
-Version "1.5"
+Version "2.0"
 
 // Dymo Label Printer
 {
@@ -1241,5 +1252,5 @@ Version "1.5"
 }
 
 //
-// End of "$Id: sample.drv 3891 2012-08-29 00:26:48Z msweet $".
+// End of "$Id: sample.drv 11800 2014-04-08 19:53:57Z msweet $".
 //
index 20356462d200fb03ef8c1dac6a8ed660dac0932a..e61c28800047704a73f75c894fb333f2d05564d1 100644 (file)
 auth.o: auth.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.h
-avahi.o: avahi.c ../config.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 \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.h ../cups/dir.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
 cert.o: cert.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.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 \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.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
 client.o: client.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.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
+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
 conf.o: conf.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.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 \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.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
 env.o: env.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.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 \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.h ../cups/dir.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 \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.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 \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.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 \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.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
 job.o: job.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.h ../cups/backend.h ../cups/dir.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
 log.o: log.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.h
-network.o: network.c ../cups/http-private.h ../config.h ../cups/http.h \
-  ../cups/versioning.h ../cups/array.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/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.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 \
+  ../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
 policy.o: policy.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.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
 printers.o: printers.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.h ../cups/dir.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
 process.o: process.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.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
 quotas.o: quotas.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.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
 select.o: select.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.h
-server.o: server.c ../cups/http-private.h ../config.h ../cups/http.h \
-  ../cups/versioning.h ../cups/array.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/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.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
+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
 statbuf.o: statbuf.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.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
 subscriptions.o: subscriptions.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.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
 sysman.o: sysman.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.h
-timeout.o: timeout.c cupsd.h ../cups/cups-private.h \
-  ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.h
-tls.o: tls.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
-  ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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 conf.h banners.h dirsvc.h \
-  network.h subscriptions.h tls-darwin.c
+  ../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
 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
@@ -271,59 +277,60 @@ type.o: type.c ../cups/string-private.h ../config.h \
   ../cups/ipp.h ../cups/http.h ../cups/file.h
 cupsfilter.o: cupsfilter.c ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/file-private.h mime.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
 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 \
   ../cups/debug-private.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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-exec.o: cups-exec.c ../cups/string-private.h ../config.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 \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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
 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/string-private.h ../config.h
+  ../cups/pwg.h ../cups/string-private.h ../config.h
 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/ppd.h ../cups/pwg-private.h \
-  mime.h
+  ../cups/array.h ../cups/language.h ../cups/pwg.h ../cups/ppd.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/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
   ../cups/debug-private.h
 testsub.o: testsub.c ../cups/cups.h ../cups/file.h ../cups/versioning.h \
   ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h \
-  ../cups/debug-private.h ../cups/string-private.h ../config.h \
-  ../cups/ipp-private.h
+  ../cups/pwg.h ../cups/debug-private.h ../cups/string-private.h \
+  ../config.h ../cups/ipp-private.h
 util.o: util.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 ../cups/debug-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.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-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 \
   ../cups/debug-private.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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
index 92fc1750ffcdf72a4e0c0feb047f026d65704ac8..cd12aca182fb6764a14b91dc562a4cce16686588 100644 (file)
@@ -1,16 +1,16 @@
 #
-# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
+# "$Id: Makefile 11718 2014-03-21 18:04:48Z msweet $"
 #
-#   Scheduler Makefile for CUPS.
+# Scheduler Makefile for CUPS.
 #
-#   Copyright 2007-2012 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/".
 #
 
 include ../Makedefs
@@ -40,8 +40,7 @@ CUPSDOBJS =   \
                server.o \
                statbuf.o \
                subscriptions.o \
-               sysman.o \
-               tls.o
+               sysman.o
 LIBOBJS =      \
                filter.o \
                mime.o \
@@ -114,7 +113,7 @@ unittests:  $(UNITTARGETS)
 clean:
        $(RM) $(OBJS)
        $(RM) $(TARGETS) $(UNITTARGETS) convert
-       $(RM) libcupsmime.so libcupsmime.sl libcupsmime.dylib
+       $(RM) libcupsmime.so libcupsmime.dylib
 
 
 #
@@ -180,31 +179,34 @@ install-data:
                for level in $(RCLEVELS); do \
                        $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/rc$${level}.d; \
                        $(LN) ../init.d/cups $(BUILDROOT)$(INITDIR)/rc$${level}.d/S$(RCSTART)cups; \
-                       if test `uname` = HP-UX; then \
-                               level=`expr $$level - 1`; \
-                               $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/rc$${level}.d; \
-                       fi; \
                        $(LN) ../init.d/cups $(BUILDROOT)$(INITDIR)/rc$${level}.d/K$(RCSTOP)cups; \
                done; \
                $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/rc0.d; \
                $(LN) ../init.d/cups $(BUILDROOT)$(INITDIR)/rc0.d/K$(RCSTOP)cups; \
        fi
-       if test "x$(INITDIR)" = x -a "x$(INITDDIR)" != x; then \
-               $(INSTALL_DIR) $(BUILDROOT)$(INITDDIR); \
-               if test "$(INITDDIR)" = "/System/Library/LaunchDaemons"; then \
-                       echo Installing LaunchDaemons configuration files...; \
-                       $(INSTALL_DATA) org.cups.cupsd.plist $(BUILDROOT)$(DEFAULT_LAUNCHD_CONF); \
-                       $(INSTALL_DATA) org.cups.cups-lpd.plist $(BUILDROOT)/System/Library/LaunchDaemons; \
-               else \
-                       echo Installing RC script...; \
-                       $(INSTALL_SCRIPT) cups.sh $(BUILDROOT)$(INITDDIR)/cups; \
-               fi \
+       if test "x$(INITDDIR)" != x; then \
+               echo Installing init script...; \
+               $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDDIR); \
+               $(INSTALL_SCRIPT) cups.sh $(BUILDROOT)$(INITDDIR); \
+       fi
+       if test "x$(LAUNCHD_DIR)" != x; then \
+               echo Installing launchd configuration files...; \
+               $(INSTALL_DIR) $(BUILDROOT)$(LAUNCHD_DIR); \
+               $(INSTALL_DATA) org.cups.cupsd.plist $(BUILDROOT)$(LAUNCHD_DIR); \
+               $(INSTALL_DATA) org.cups.cups-lpd.plist $(BUILDROOT)$(LAUNCHD_DIR); \
        fi
        if test "x$(SMFMANIFESTDIR)" != x; then \
                echo Installing SMF manifest in $(SMFMANIFESTDIR)...;\
                $(INSTALL_DIR) $(BUILDROOT)/$(SMFMANIFESTDIR); \
                $(INSTALL_SCRIPT) cups.xml $(BUILDROOT)$(SMFMANIFESTDIR)/cups.xml; \
        fi
+       if test "x$(SYSTEMD_DIR)" != x; then \
+               echo Installing systemd configuration files...; \
+               $(INSTALL_DIR) $(BUILDROOT)$(SYSTEMD_DIR); \
+               $(INSTALL_DATA) org.cups.cupsd.path $(BUILDROOT)$(SYSTEMD_DIR); \
+               $(INSTALL_DATA) org.cups.cupsd.service $(BUILDROOT)$(SYSTEMD_DIR); \
+               $(INSTALL_DATA) org.cups.cupsd.socket $(BUILDROOT)$(SYSTEMD_DIR); \
+       fi
        if test "x$(XINETD)" != x; then \
                echo Installing xinetd configuration file for cups-lpd...; \
                $(INSTALL_DIR) -m 755 $(BUILDROOT)$(XINETD); \
@@ -255,7 +257,7 @@ install-libs: $(INSTALLSTATIC)
        echo Installing libraries in $(LIBDIR)...
        $(INSTALL_DIR) -m 755 $(LIBDIR)
        $(INSTALL_LIB) $(LIBCUPSMIME) $(LIBDIR)
-       if test $(LIBCUPSMIME) = "libcupsmime.so.1" -o $(LIBCUPSMIME) = "libcupsmime.sl.1"; then \
+       if test $(LIBCUPSMIME) = "libcupsmime.so.1"; then \
                $(RM) $(LIBDIR)/`basename $(LIBCUPSMIME) .1`; \
                $(LN) $(LIBCUPSMIME) $(LIBDIR)/`basename $(LIBCUPSMIME) .1`; \
        fi
@@ -287,7 +289,6 @@ uninstall:
        $(RM) $(SERVERBIN)/daemon/cups-driverd
        $(RM) $(SERVERBIN)/daemon/cups-exec
        $(RM) $(SERVERBIN)/daemon/cups-lpd
-       $(RM) $(BUILDROOT)/System/Library/Printers/Libraries/convert
        -$(RMDIR) $(STATEDIR)/certs
        -$(RMDIR) $(STATEDIR)
        -$(RMDIR) $(SERVERROOT)/ppd
@@ -304,16 +305,13 @@ uninstall:
        $(RM) $(LIBDIR)/libcupsmime.1.dylib
        $(RM) $(LIBDIR)/libcupsmime.a
        $(RM) $(LIBDIR)/libcupsmime.dylib
-       $(RM) $(LIBDIR)/libcupsmime_s.a
-       $(RM) $(LIBDIR)/libcupsmime.sl
-       $(RM) $(LIBDIR)/libcupsmime.sl.1
        $(RM) $(LIBDIR)/libcupsmime.so
        $(RM) $(LIBDIR)/libcupsmime.so.1
        -$(RMDIR) $(LIBDIR)
        $(RM) $(INCLUDEDIR)/cups/mime.h
        -$(RMDIR) $(INCLUDEDIR)/cups
-       echo Uninstalling startup script...
        if test "x$(INITDIR)" != x; then \
+               echo Uninstalling init scripts...; \
                $(RM) $(BUILDROOT)$(INITDIR)/init.d/cups; \
                $(RMDIR) $(BUILDROOT)$(INITDIR)/init.d; \
                $(RM)  $(BUILDROOT)$(INITDIR)/rc0.d/K00cups; \
@@ -325,23 +323,24 @@ uninstall:
                $(RM) $(BUILDROOT)$(INITDIR)/rc5.d/S99cups; \
                $(RMDIR) $(BUILDROOT)$(INITDIR)/rc5.d; \
        fi
-       if test "x$(INITDIR)" = x -a "x$(INITDDIR)" != x; then \
-               if test "$(INITDDIR)" = "/System/Library/StartupItems/PrintingServices"; then \
-                       $(RM) $(BUILDROOT)$(INITDDIR)/PrintingServices; \
-                       $(RM) $(BUILDROOT)$(INITDDIR)/StartupParameters.plist; \
-                       $(RM) $(BUILDROOT)$(INITDDIR)/Resources/English.lproj/Localizable.strings; \
-                       $(RMDIR) $(BUILDROOT)$(INITDDIR)/Resources/English.lproj; \
-               elif test "$(INITDDIR)" = "/System/Library/LaunchDaemons"; then \
-                       $(RM) $(BUILDROOT)$(INITDDIR)/org.cups.cupsd.plist; \
-                       $(RM) $(BUILDROOT)$(INITDDIR)/org.cups.cups-lpd.plist; \
-                       $(RMDIR) $(BUILDROOT)/System/Library/StartupItems/PrintingServices; \
-               else \
-                       $(INSTALL_SCRIPT) init/cups.sh $(BUILDROOT)$(INITDDIR)/cups; \
-               fi \
+       if test "x$(INITDDIR)" != x; then \
+               echo Uninstalling startup script...; \
+               $(RM) $(BUILDROOT)$(INITDDIR)/cups.sh; \
                $(RMDIR) $(BUILDROOT)$(INITDDIR); \
        fi
+       if test "x$LAUNCHD_DIR" != x; then \
+               echo Uninstalling launchd files...; \
+               $(RM) $(BUILDROOT)$(LAUNCHD_DIR)/org.cups.cupsd.plist; \
+               $(RM) $(BUILDROOT)$(LAUNCHD_DIR)/org.cups.cups-lpd.plist; \
+       fi
+       if test "x$SYSTEMD_DIR" != x; then \
+               echo Uninstalling systemd files...; \
+               $(RM) $(BUILDROOT)$(SYSTEMD_DIR)/org.cups.cupsd.path; \
+               $(RM) $(BUILDROOT)$(SYSTEMD_DIR)/org.cups.cupsd.service; \
+               $(RM) $(BUILDROOT)$(SYSTEMD_DIR)/org.cups.cupsd.socket; \
+       fi
        if test "x$(SMFMANIFESTDIR)" != x; then \
-               echo Uninstalling SMF manifest in $(SMFMANIFESTDIR)...;\
+               echo Uninstalling SMF manifest file...;\
                $(RM) $(BUILDROOT)$(SMFMANIFESTDIR)/cups.xml; \
        fi
        if test "x$(XINETD)" != x; then \
@@ -380,18 +379,16 @@ cupsd:    $(CUPSDOBJS) $(LIBCUPSMIME) ../cups/$(LIBCUPS)
        echo Linking $@...
        $(CC) $(LDFLAGS) -o cupsd $(CUPSDOBJS) -L. -lcupsmime \
                $(LIBZ) $(SSLLIBS) $(LIBSLP) $(LIBLDAP) $(PAMLIBS) \
-               $(LIBPAPER) $(LIBMALLOC) $(SERVERLIBS) $(DNSSDLIBS) $(LIBS) \
-               $(LIBGSSAPI) $(LIBWRAP)
+               $(LIBPAPER) $(LIBMALLOC) $(SERVERLIBS) $(ONDEMANDLIBS) \
+                $(DNSSDLIBS) $(LIBS) $(LIBGSSAPI) $(LIBWRAP)
 
 cupsd-static:  $(CUPSDOBJS) libcupsmime.a ../cups/$(LIBCUPSSTATIC)
        echo Linking $@...
        $(CC) $(LDFLAGS) -o cupsd-static $(CUPSDOBJS) libcupsmime.a \
                $(LIBZ) $(SSLLIBS) $(LIBSLP) $(LIBLDAP) $(PAMLIBS) \
                ../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(LIBZ) $(LIBPAPER) \
-               $(LIBMALLOC) $(SERVERLIBS) $(DNSSDLIBS) $(LIBGSSAPI) \
-               $(LIBWRAP)
-
-tls.o: tls-darwin.c tls-gnutls.c tls-openssl.c
+               $(LIBMALLOC) $(SERVERLIBS) $(ONDEMANDLIBS) $(DNSSDLIBS) \
+                $(LIBGSSAPI) $(LIBWRAP)
 
 
 #
@@ -443,10 +440,10 @@ cups-lpd: cups-lpd.o ../cups/$(LIBCUPS)
 
 
 #
-# libcupsmime.so.1, libcupsmime.sl.1
+# libcupsmime.so.1
 #
 
-libcupsmime.so.1 libcupsmime.sl.1:     $(LIBOBJS)
+libcupsmime.so.1     $(LIBOBJS)
        echo Linking $@...
        $(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS) $(LIBS)
        $(RM) `basename $@ .1`
@@ -469,17 +466,6 @@ libcupsmime.1.dylib:       $(LIBOBJS) libcupsmime.exp
        $(LN) $@ libcupsmime.dylib
 
 
-#
-# libcupsmime_s.a
-#
-
-libcupsmime_s.a:       $(LIBOBJS)
-       echo Creating $@...
-       $(DSO) $(DSOFLAGS) -o libcupsmime_s.o $(LIBOBJS) $(LIBS)
-       $(RM) $@
-       $(AR) $(ARFLAGS) $@ libcupsmime_s.o
-
-
 #
 # libcupsmime.la
 #
@@ -561,5 +547,5 @@ include Dependencies
 
 
 #
-# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
+# End of "$Id: Makefile 11718 2014-03-21 18:04:48Z msweet $".
 #
index 35b70f394358e08eecd6ef22ce74b232aa003035..dbc90cec6da0dc09cd9028116fb39f5b0c43ce39 100644 (file)
@@ -1,51 +1,19 @@
 /*
- * "$Id: auth.c 11500 2014-01-06 22:21:15Z msweet $"
+ * "$Id: auth.c 11776 2014-03-28 19:16:05Z msweet $"
  *
- *   Authorization routines for the CUPS scheduler.
+ * Authorization routines for the CUPS scheduler.
  *
- *   Copyright 2007-2012 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.
  *
- *   This file contains Kerberos support code, copyright 2006 by
- *   Jelmer Vernooij.
+ * This file contains Kerberos support code, copyright 2006 by
+ * Jelmer Vernooij.
  *
- *   These coded instructions, statements, and computer programs 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:
- *
- *   cupsdAddIPMask()          - Add an IP address authorization mask.
- *   cupsdAddLocation()        - Add a location for authorization.
- *   cupsdAddName()            - Add a name to a location...
- *   cupsdAddNameMask()        - Add a host or interface name authorization
- *                               mask.
- *   cupsdAuthorize()          - Validate any authorization credentials.
- *   cupsdCheckAccess()        - Check whether the given address is allowed to
- *                               access a location.
- *   cupsdCheckAuth()          - Check authorization masks.
- *   cupsdCheckGroup()         - Check for a user's group membership.
- *   cupsdCopyLocation()       - Make a copy of a location...
- *   cupsdDeleteAllLocations() - Free all memory used for location
- *                               authorization.
- *   cupsdFindBest()           - Find the location entry that best matches the
- *                               resource.
- *   cupsdFindLocation()       - Find the named location.
- *   cupsdFreeLocation()       - Free all memory used by a location.
- *   cupsdIsAuthorized()       - Check to see if the user is authorized...
- *   cupsdNewLocation()        - Create a new location for authorization.
- *   check_authref()           - Check if an authorization services reference
- *                               has the supplied right.
- *   compare_locations()       - Compare two locations.
- *   copy_authmask()           - Copy function for auth masks.
- *   cups_crypt()              - Encrypt the password using the DES or MD5
- *                               algorithms, as needed.
- *   free_authmask()           - Free function for auth masks.
- *   get_md5_password()        - Get an MD5 password.
- *   pam_func()                - PAM conversation function.
- *   to64()                    - Base64-encode an integer value...
+ * These coded instructions, statements, and computer programs 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/".
  */
 
 /*
@@ -67,9 +35,6 @@
 #    include <security/pam_appl.h>
 #  endif /* HAVE_PAM_PAM_APPL_H */
 #endif /* HAVE_LIBPAM */
-#ifdef HAVE_USERSEC_H
-#  include <usersec.h>
-#endif /* HAVE_USERSEC_H */
 #ifdef HAVE_MEMBERSHIP_H
 #  include <membership.h>
 #endif /* HAVE_MEMBERSHIP_H */
@@ -108,16 +73,14 @@ static int         check_authref(cupsd_client_t *con, const char *right);
 static int             compare_locations(cupsd_location_t *a,
                                          cupsd_location_t *b);
 static cupsd_authmask_t        *copy_authmask(cupsd_authmask_t *am, void *data);
-#if !HAVE_LIBPAM && !defined(HAVE_USERSEC_H)
+#if !HAVE_LIBPAM
 static char            *cups_crypt(const char *pw, const char *salt);
-#endif /* !HAVE_LIBPAM && !HAVE_USERSEC_H */
+#endif /* !HAVE_LIBPAM */
 static void            free_authmask(cupsd_authmask_t *am, void *data);
-static char            *get_md5_password(const char *username,
-                                         const char *group, char passwd[33]);
 #if HAVE_LIBPAM
 static int             pam_func(int, const struct pam_message **,
                                 struct pam_response **, void *);
-#elif !defined(HAVE_USERSEC_H)
+#else
 static void            to64(char *s, unsigned long v, int n);
 #endif /* HAVE_LIBPAM */
 
@@ -135,15 +98,6 @@ typedef struct cupsd_authdata_s             /**** Authentication data ****/
 #endif /* HAVE_LIBPAM */
 
 
-/*
- * Local globals...
- */
-
-#if defined(__hpux) && HAVE_LIBPAM
-static cupsd_authdata_t        *auth_data;     /* Current client being authenticated */
-#endif /* __hpux && HAVE_LIBPAM */
-
-
 /*
  * 'cupsdAddIPMask()' - Add an IP address authorization mask.
  */
@@ -326,26 +280,6 @@ cupsdAuthorize(cupsd_client_t *con)        /* I - Client connection */
                password[HTTP_MAX_VALUE];
                                        /* Password string */
   cupsd_cert_t *localuser;             /* Certificate username */
-  char         nonce[HTTP_MAX_VALUE],  /* Nonce value from client */
-               md5[33],                /* MD5 password */
-               basicmd5[33];           /* MD5 of Basic password */
-  static const char * const states[] = /* HTTP client states... */
-               {
-                 "WAITING",
-                 "OPTIONS",
-                 "GET",
-                 "GET",
-                 "HEAD",
-                 "POST",
-                 "POST",
-                 "POST",
-                 "PUT",
-                 "PUT",
-                 "DELETE",
-                 "TRACE",
-                 "CLOSE",
-                 "STATUS"
-               };
 
 
  /*
@@ -353,12 +287,12 @@ cupsdAuthorize(cupsd_client_t *con)       /* I - Client connection */
   * authentication to expect...
   */
 
-  con->best = cupsdFindBest(con->uri, con->http.state);
+  con->best = cupsdFindBest(con->uri, httpGetState(con->http));
   con->type = CUPSD_AUTH_NONE;
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2,
                   "[Client %d] con->uri=\"%s\", con->best=%p(%s)",
-                  con->http.fd, con->uri, con->best,
+                  con->number, con->uri, con->best,
                   con->best ? con->best->location : "");
 
   if (con->best && con->best->type != CUPSD_AUTH_NONE)
@@ -375,10 +309,10 @@ cupsdAuthorize(cupsd_client_t *con)       /* I - Client connection */
   * Decode the Authorization string...
   */
 
-  authorization = httpGetField(&con->http, HTTP_FIELD_AUTHORIZATION);
+  authorization = httpGetField(con->http, HTTP_FIELD_AUTHORIZATION);
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "[Client %d] Authorization=\"%s\"",
-                  con->http.fd, authorization);
+                  con->number, authorization);
 
   username[0] = '\0';
   password[0] = '\0';
@@ -403,14 +337,16 @@ cupsdAuthorize(cupsd_client_t *con)       /* I - Client connection */
 
     cupsdLogMessage(CUPSD_LOG_DEBUG,
                     "[Client %d] No authentication data provided.",
-                    con->http.fd);
+                    con->number);
     return;
   }
 #ifdef HAVE_AUTHORIZATION_H
   else if (!strncmp(authorization, "AuthRef ", 8) &&
-           !_cups_strcasecmp(con->http.hostname, "localhost"))
+           httpAddrLocalhost(httpGetAddress(con->http)))
   {
     OSStatus           status;         /* Status */
+    char               authdata[HTTP_MAX_VALUE];
+                                       /* Nonce value from client */
     int                        authlen;        /* Auth string length */
     AuthorizationItemSet *authinfo;    /* Authorization item set */
 
@@ -422,23 +358,22 @@ cupsdAuthorize(cupsd_client_t *con)       /* I - Client connection */
     while (isspace(*authorization & 255))
       authorization ++;
 
-    authlen = sizeof(nonce);
-    httpDecode64_2(nonce, &authlen, authorization);
+    authlen = sizeof(authdata);
+    httpDecode64_2(authdata, &authlen, authorization);
 
     if (authlen != kAuthorizationExternalFormLength)
     {
       cupsdLogMessage(CUPSD_LOG_ERROR,
                      "[Client %d] External Authorization reference size is "
-                     "incorrect.", con->http.fd);
+                     "incorrect.", con->number);
       return;
     }
 
-    if ((status = AuthorizationCreateFromExternalForm(
-                     (AuthorizationExternalForm *)nonce, &con->authref)) != 0)
+    if ((status = AuthorizationCreateFromExternalForm((AuthorizationExternalForm *)authdata, &con->authref)) != 0)
     {
       cupsdLogMessage(CUPSD_LOG_ERROR,
                      "[Client %d] AuthorizationCreateFromExternalForm "
-                     "returned %d (%s)", con->http.fd, (int)status,
+                     "returned %d (%s)", con->number, (int)status,
                      cssmErrorString(status));
       return;
     }
@@ -455,7 +390,7 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
 
         cupsdLogMessage(CUPSD_LOG_DEBUG,
                        "[Client %d] Authorized as \"%s\" using AuthRef",
-                       con->http.fd, username);
+                       con->number, username);
       }
 
       AuthorizationFreeItemSet(authinfo);
@@ -473,11 +408,11 @@ cupsdAuthorize(cupsd_client_t *con)       /* I - Client connection */
 
       peersize = sizeof(peercred);
 
-      if (getsockopt(con->http.fd, 0, LOCAL_PEERCRED, &peercred, &peersize))
+      if (getsockopt(httpGetFd(con->http), 0, LOCAL_PEERCRED, &peercred, &peersize))
       {
         cupsdLogMessage(CUPSD_LOG_ERROR,
                         "[Client %d] Unable to get peer credentials - %s",
-                        con->http.fd, strerror(errno));
+                        con->number, strerror(errno));
         return;
       }
 
@@ -485,7 +420,7 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
       {
         cupsdLogMessage(CUPSD_LOG_ERROR,
                         "[Client %d] Unable to find UID %d for peer "
-                        "credentials.", con->http.fd,
+                        "credentials.", con->number,
                         (int)CUPSD_UCRED_UID(peercred));
         return;
       }
@@ -494,7 +429,7 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
 
       cupsdLogMessage(CUPSD_LOG_DEBUG,
                      "[Client %d] Authorized as \"%s\" using "
-                     "AuthRef + PeerCred", con->http.fd, username);
+                     "AuthRef + PeerCred", con->number, username);
     }
 
     con->type = CUPSD_AUTH_BASIC;
@@ -502,7 +437,7 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
 #endif /* HAVE_AUTHORIZATION_H */
 #if defined(SO_PEERCRED) && defined(AF_LOCAL)
   else if (!strncmp(authorization, "PeerCred ", 9) &&
-           con->http.hostaddr->addr.sa_family == AF_LOCAL)
+           con->http->hostaddr->addr.sa_family == AF_LOCAL && con->best)
   {
    /*
     * Use peer credentials from domain socket connection...
@@ -541,7 +476,7 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
     {
       cupsdLogMessage(CUPSD_LOG_ERROR,
                      "[Client %d] PeerCred authentication not allowed for "
-                     "resource per AUTHKEY policy.", con->http.fd);
+                     "resource per AUTHKEY policy.", con->number);
       return;
     }
 #endif /* HAVE_AUTHORIZATION_H */
@@ -549,7 +484,7 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
     if ((pwd = getpwnam(authorization + 9)) == NULL)
     {
       cupsdLogMessage(CUPSD_LOG_ERROR,
-                      "[Client %d] User \"%s\" does not exist.", con->http.fd,
+                      "[Client %d] User \"%s\" does not exist.", con->number,
                       authorization + 9);
       return;
     }
@@ -557,14 +492,14 @@ cupsdAuthorize(cupsd_client_t *con)       /* I - Client connection */
     peersize = sizeof(peercred);
 
 #  ifdef __APPLE__
-    if (getsockopt(con->http.fd, 0, LOCAL_PEERCRED, &peercred, &peersize))
+    if (getsockopt(httpGetFd(con->http), 0, LOCAL_PEERCRED, &peercred, &peersize))
 #  else
-    if (getsockopt(con->http.fd, SOL_SOCKET, SO_PEERCRED, &peercred, &peersize))
+    if (getsockopt(httpGetFd(con->http), SOL_SOCKET, SO_PEERCRED, &peercred, &peersize))
 #  endif /* __APPLE__ */
     {
       cupsdLogMessage(CUPSD_LOG_ERROR,
                       "[Client %d] Unable to get peer credentials - %s",
-                      con->http.fd, strerror(errno));
+                      con->number, strerror(errno));
       return;
     }
 
@@ -572,17 +507,17 @@ cupsdAuthorize(cupsd_client_t *con)       /* I - Client connection */
     {
       cupsdLogMessage(CUPSD_LOG_ERROR,
                       "[Client %d] Invalid peer credentials for \"%s\" - got "
-                      "%d, expected %d!", con->http.fd, authorization + 9,
+                      "%d, expected %d!", con->number, authorization + 9,
                      CUPSD_UCRED_UID(peercred), pwd->pw_uid);
 #  ifdef HAVE_SYS_UCRED_H
       cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] cr_version=%d",
-                      con->http.fd, peercred.cr_version);
+                      con->number, peercred.cr_version);
       cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] cr_uid=%d",
-                      con->http.fd, peercred.cr_uid);
+                      con->number, peercred.cr_uid);
       cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] cr_ngroups=%d",
-                      con->http.fd, peercred.cr_ngroups);
+                      con->number, peercred.cr_ngroups);
       cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] cr_groups[0]=%d",
-                      con->http.fd, peercred.cr_groups[0]);
+                      con->number, peercred.cr_groups[0]);
 #  endif /* HAVE_SYS_UCRED_H */
       return;
     }
@@ -594,14 +529,14 @@ cupsdAuthorize(cupsd_client_t *con)       /* I - Client connection */
 #  endif /* HAVE_GSSAPI */
 
     cupsdLogMessage(CUPSD_LOG_DEBUG,
-                    "[Client %d] Authorized as %s using PeerCred", con->http.fd,
+                    "[Client %d] Authorized as %s using PeerCred", con->number,
                    username);
 
     con->type = CUPSD_AUTH_BASIC;
   }
 #endif /* SO_PEERCRED && AF_LOCAL */
   else if (!strncmp(authorization, "Local", 5) &&
-           !_cups_strcasecmp(con->http.hostname, "localhost"))
+          httpAddrLocalhost(httpGetAddress(con->http)))
   {
    /*
     * Get Local certificate authentication data...
@@ -615,7 +550,7 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
     {
       cupsdLogMessage(CUPSD_LOG_ERROR,
                       "[Client %d] Local authentication certificate not found.",
-                      con->http.fd);
+                      con->number);
       return;
     }
 
@@ -623,7 +558,7 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
     con->type = localuser->type;
 
     cupsdLogMessage(CUPSD_LOG_DEBUG,
-                   "[Client %d] Authorized as %s using Local", con->http.fd,
+                   "[Client %d] Authorized as %s using Local", con->number,
                    username);
   }
   else if (!strncmp(authorization, "Basic", 5))
@@ -649,7 +584,7 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
     if ((ptr = strchr(username, ':')) == NULL)
     {
       cupsdLogMessage(CUPSD_LOG_ERROR, "[Client %d] Missing Basic password.",
-                      con->http.fd);
+                      con->number);
       return;
     }
 
@@ -662,7 +597,7 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
       */
 
       cupsdLogMessage(CUPSD_LOG_ERROR, "[Client %d] Empty Basic username.",
-                      con->http.fd);
+                      con->number);
       return;
     }
 
@@ -673,7 +608,7 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
       */
 
       cupsdLogMessage(CUPSD_LOG_ERROR, "[Client %d] Empty Basic password.",
-                      con->http.fd);
+                      con->number);
       return;
     }
 
@@ -703,40 +638,31 @@ cupsdAuthorize(cupsd_client_t *con)       /* I - Client connection */
             strlcpy(data.username, username, sizeof(data.username));
            strlcpy(data.password, password, sizeof(data.password));
 
-#  if defined(__sun) || defined(__hpux)
+#  ifdef __sun
            pamdata.conv        = (int (*)(int, struct pam_message **,
                                           struct pam_response **,
                                           void *))pam_func;
 #  else
            pamdata.conv        = pam_func;
-#  endif /* __sun || __hpux */
+#  endif /* __sun */
            pamdata.appdata_ptr = &data;
 
-#  ifdef __hpux
-          /*
-           * Workaround for HP-UX bug in pam_unix; see pam_func() below for
-           * more info...
-           */
-
-           auth_data = &data;
-#  endif /* __hpux */
-
            pamerr = pam_start("cups", username, &pamdata, &pamh);
            if (pamerr != PAM_SUCCESS)
            {
              cupsdLogMessage(CUPSD_LOG_ERROR,
                              "[Client %d] pam_start() returned %d (%s)",
-                             con->http.fd, pamerr, pam_strerror(pamh, pamerr));
+                             con->number, pamerr, pam_strerror(pamh, pamerr));
              return;
            }
 
 #  ifdef HAVE_PAM_SET_ITEM
 #    ifdef PAM_RHOST
-           pamerr = pam_set_item(pamh, PAM_RHOST, con->http.hostname);
+           pamerr = pam_set_item(pamh, PAM_RHOST, con->http->hostname);
            if (pamerr != PAM_SUCCESS)
              cupsdLogMessage(CUPSD_LOG_WARN,
                              "[Client %d] pam_set_item(PAM_RHOST) "
-                             "returned %d (%s)", con->http.fd, pamerr,
+                             "returned %d (%s)", con->number, pamerr,
                              pam_strerror(pamh, pamerr));
 #    endif /* PAM_RHOST */
 
@@ -745,7 +671,7 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
            if (pamerr != PAM_SUCCESS)
              cupsdLogMessage(CUPSD_LOG_WARN,
                              "[Client %d] pam_set_item(PAM_TTY) "
-                             "returned %d (%s)!", con->http.fd, pamerr,
+                             "returned %d (%s)!", con->number, pamerr,
                              pam_strerror(pamh, pamerr));
 #    endif /* PAM_TTY */
 #  endif /* HAVE_PAM_SET_ITEM */
@@ -755,7 +681,7 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
            {
              cupsdLogMessage(CUPSD_LOG_ERROR,
                              "[Client %d] pam_authenticate() returned %d (%s)",
-                             con->http.fd, pamerr, pam_strerror(pamh, pamerr));
+                             con->number, pamerr, pam_strerror(pamh, pamerr));
              pam_end(pamh, 0);
              return;
            }
@@ -765,7 +691,7 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
            if (pamerr != PAM_SUCCESS)
              cupsdLogMessage(CUPSD_LOG_WARN,
                              "[Client %d] pam_setcred() returned %d (%s)",
-                             con->http.fd, pamerr,
+                             con->number, pamerr,
                              pam_strerror(pamh, pamerr));
 #  endif /* HAVE_PAM_SETCRED */
 
@@ -774,36 +700,13 @@ cupsdAuthorize(cupsd_client_t *con)       /* I - Client connection */
            {
              cupsdLogMessage(CUPSD_LOG_ERROR,
                              "[Client %d] pam_acct_mgmt() returned %d (%s)",
-                             con->http.fd, pamerr, pam_strerror(pamh, pamerr));
+                             con->number, pamerr, pam_strerror(pamh, pamerr));
              pam_end(pamh, 0);
              return;
            }
 
            pam_end(pamh, PAM_SUCCESS);
 
-#elif defined(HAVE_USERSEC_H)
-          /*
-           * Use AIX authentication interface...
-           */
-
-           char        *authmsg;       /* Authentication message */
-           int         reenter;        /* ??? */
-
-
-           cupsdLogMessage(CUPSD_LOG_DEBUG,
-                           "[Client %d] AIX authenticate of username \"%s\"",
-                           con->http.fd, username);
-
-           reenter = 1;
-           if (authenticate(username, password, &reenter, &authmsg) != 0)
-           {
-             cupsdLogMessage(CUPSD_LOG_DEBUG,
-                             "[Client %d] Unable to authenticate username "
-                             "\"%s\": %s", con->http.fd, username,
-                             strerror(errno));
-             return;
-           }
-
 #else
            /*
            * Use normal UNIX password file-based authentication...
@@ -827,7 +730,7 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
 
              cupsdLogMessage(CUPSD_LOG_ERROR,
                              "[Client %d] Unknown username \"%s\".",
-                             con->http.fd, username);
+                             con->number, username);
              return;
            }
 
@@ -843,7 +746,7 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
 
              cupsdLogMessage(CUPSD_LOG_ERROR,
                              "[Client %d] Username \"%s\" has no shadow "
-                             "password.", con->http.fd, username);
+                             "password.", con->number, username);
              return;
            }
 
@@ -858,7 +761,7 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
 
              cupsdLogMessage(CUPSD_LOG_ERROR,
                              "[Client %d] Username \"%s\" has no password.",
-                             con->http.fd, username);
+                             con->number, username);
              return;
            }
 
@@ -871,7 +774,7 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
 
            cupsdLogMessage(CUPSD_LOG_DEBUG2,
                            "[Client %d] pw_passwd=\"%s\", crypt=\"%s\"",
-                           con->http.fd, pw->pw_passwd, pass);
+                           con->number, pw->pw_passwd, pass);
 
            if (!pass || strcmp(pw->pw_passwd, pass))
            {
@@ -882,13 +785,13 @@ cupsdAuthorize(cupsd_client_t *con)       /* I - Client connection */
 
                cupsdLogMessage(CUPSD_LOG_DEBUG2,
                                "[Client %d] sp_pwdp=\"%s\", crypt=\"%s\"",
-                               con->http.fd, spw->sp_pwdp, pass);
+                               con->number, spw->sp_pwdp, pass);
 
                if (pass == NULL || strcmp(spw->sp_pwdp, pass))
                {
                  cupsdLogMessage(CUPSD_LOG_ERROR,
                                  "[Client %d] Authentication failed for user "
-                                 "\"%s\".", con->http.fd, username);
+                                 "\"%s\".", con->number, username);
                  return;
                }
              }
@@ -897,7 +800,7 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
              {
                cupsdLogMessage(CUPSD_LOG_ERROR,
                                "[Client %d] Authentication failed for user "
-                               "\"%s\".", con->http.fd, username);
+                               "\"%s\".", con->number, username);
                return;
               }
            }
@@ -906,117 +809,12 @@ cupsdAuthorize(cupsd_client_t *con)      /* I - Client connection */
 
          cupsdLogMessage(CUPSD_LOG_DEBUG,
                          "[Client %d] Authorized as %s using Basic",
-                         con->http.fd, username);
+                         con->number, username);
           break;
-
-      case CUPSD_AUTH_BASICDIGEST :
-         /*
-         * Do Basic authentication with the Digest password file...
-         */
-
-         if (!get_md5_password(username, NULL, md5))
-         {
-            cupsdLogMessage(CUPSD_LOG_ERROR,
-                           "[Client %d] Unknown MD5 username \"%s\".",
-                           con->http.fd, username);
-            return;
-         }
-
-         httpMD5(username, "CUPS", password, basicmd5);
-
-         if (strcmp(md5, basicmd5))
-         {
-            cupsdLogMessage(CUPSD_LOG_ERROR,
-                           "[Client %d] Authentication failed for \"%s\".",
-                           con->http.fd, username);
-            return;
-         }
-
-         cupsdLogMessage(CUPSD_LOG_DEBUG,
-                         "[Client %d] Authorized as %s using BasicDigest",
-                         con->http.fd, username);
-         break;
     }
 
     con->type = type;
   }
-  else if (!strncmp(authorization, "Digest", 6))
-  {
-   /*
-    * Get the username, password, and nonce from the Digest attributes...
-    */
-
-    if (!httpGetSubField2(&(con->http), HTTP_FIELD_AUTHORIZATION, "username",
-                          username, sizeof(username)) || !username[0])
-    {
-     /*
-      * Username must not be empty...
-      */
-
-      cupsdLogMessage(CUPSD_LOG_ERROR,
-                      "[Client %d] Empty or missing Digest username.",
-                      con->http.fd);
-      return;
-    }
-
-    if (!httpGetSubField2(&(con->http), HTTP_FIELD_AUTHORIZATION, "response",
-                          password, sizeof(password)) || !password[0])
-    {
-     /*
-      * Password must not be empty...
-      */
-
-      cupsdLogMessage(CUPSD_LOG_ERROR,
-                      "[Client %d] Empty or missing Digest password.",
-                      con->http.fd);
-      return;
-    }
-
-    if (!httpGetSubField(&(con->http), HTTP_FIELD_AUTHORIZATION, "nonce",
-                         nonce))
-    {
-      cupsdLogMessage(CUPSD_LOG_ERROR,
-                     "[Client %d] No nonce value for Digest authentication.",
-                     con->http.fd);
-      return;
-    }
-
-    if (strcmp(con->http.hostname, nonce))
-    {
-      cupsdLogMessage(CUPSD_LOG_ERROR,
-                     "[Client %d] Bad nonce value, expected \"%s\", "
-                     "got \"%s\".", con->http.fd, con->http.hostname, nonce);
-      return;
-    }
-
-   /*
-    * Validate the username and password...
-    */
-
-    if (!get_md5_password(username, NULL, md5))
-    {
-      cupsdLogMessage(CUPSD_LOG_ERROR,
-                     "[Client %d] Unknown MD5 username \"%s\".",
-                     con->http.fd, username);
-      return;
-    }
-
-    httpMD5Final(nonce, states[con->http.state], con->uri, md5);
-
-    if (strcmp(md5, password))
-    {
-      cupsdLogMessage(CUPSD_LOG_ERROR,
-                     "[Client %d] Authentication failed for \"%s\".",
-                     con->http.fd, username);
-      return;
-    }
-
-    cupsdLogMessage(CUPSD_LOG_DEBUG,
-                    "[Client %d] Authorized as %s using Digest", con->http.fd,
-                   username);
-
-    con->type = CUPSD_AUTH_DIGEST;
-  }
 #ifdef HAVE_GSSAPI
   else if (!strncmp(authorization, "Negotiate", 9))
   {
@@ -1042,7 +840,7 @@ cupsdAuthorize(cupsd_client_t *con)        /* I - Client connection */
       cupsdLogMessage(CUPSD_LOG_WARN,
                       "[Client %d] GSSAPI/Kerberos authentication failed "
                       "because the Kerberos framework is not present.",
-                      con->http.fd);
+                      con->number);
       return;
     }
 #  endif /* __APPLE__ */
@@ -1059,7 +857,7 @@ cupsdAuthorize(cupsd_client_t *con)        /* I - Client connection */
     {
       cupsdLogMessage(CUPSD_LOG_DEBUG2,
                      "[Client %d] No authentication data specified.",
-                     con->http.fd);
+                     con->number);
       return;
     }
 
@@ -1067,11 +865,11 @@ cupsdAuthorize(cupsd_client_t *con)      /* I - Client connection */
     * Decode the authorization string to get the input token...
     */
 
-    len                = strlen(authorization);
-    input_token.value  = malloc(len);
+    len                = (int)strlen(authorization);
+    input_token.value  = malloc((size_t)len);
     input_token.value  = httpDecode64_2(input_token.value, &len,
                                        authorization);
-    input_token.length = len;
+    input_token.length = (size_t)len;
 
    /*
     * Accept the input token to get the authorization info...
@@ -1098,7 +896,7 @@ cupsdAuthorize(cupsd_client_t *con)        /* I - Client connection */
     {
       cupsdLogGSSMessage(CUPSD_LOG_DEBUG, major_status, minor_status,
                         "[Client %d] Error accepting GSSAPI security context",
-                        con->http.fd);
+                        con->number);
 
       if (context != GSS_C_NO_CONTEXT)
        gss_delete_sec_context(&minor_status, &context, GSS_C_NO_BUFFER);
@@ -1113,7 +911,7 @@ cupsdAuthorize(cupsd_client_t *con)        /* I - Client connection */
 
     if (major_status == GSS_S_CONTINUE_NEEDED)
       cupsdLogGSSMessage(CUPSD_LOG_DEBUG, major_status, minor_status,
-                        "[Client %d] Credentials not complete", con->http.fd);
+                        "[Client %d] Credentials not complete", con->number);
     else if (major_status == GSS_S_COMPLETE)
     {
       major_status = gss_display_name(&minor_status, client_name,
@@ -1122,7 +920,7 @@ cupsdAuthorize(cupsd_client_t *con)        /* I - Client connection */
       if (GSS_ERROR(major_status))
       {
        cupsdLogGSSMessage(CUPSD_LOG_DEBUG, major_status, minor_status,
-                          "[Client %d] Error getting username", con->http.fd);
+                          "[Client %d] Error getting username", con->number);
        gss_release_name(&minor_status, &client_name);
        gss_delete_sec_context(&minor_status, &context, GSS_C_NO_BUFFER);
        return;
@@ -1132,7 +930,7 @@ cupsdAuthorize(cupsd_client_t *con)        /* I - Client connection */
 
       cupsdLogMessage(CUPSD_LOG_DEBUG,
                      "[Client %d] Authorized as %s using Negotiate",
-                     con->http.fd, username);
+                     con->number, username);
 
       gss_release_name(&minor_status, &client_name);
       gss_release_buffer(&minor_status, &output_token);
@@ -1148,7 +946,7 @@ cupsdAuthorize(cupsd_client_t *con)        /* I - Client connection */
     * to run as the correct user to get Kerberos credentials of its own.
     */
 
-    if (_httpAddrFamily(con->http.hostaddr) == AF_LOCAL)
+    if (httpAddrFamily(con->http->hostaddr) == AF_LOCAL)
     {
       cupsd_ucred_t    peercred;       /* Peer credentials */
       socklen_t                peersize;       /* Size of peer credentials */
@@ -1156,21 +954,21 @@ cupsdAuthorize(cupsd_client_t *con)      /* I - Client connection */
       peersize = sizeof(peercred);
 
 #    ifdef __APPLE__
-      if (getsockopt(con->http.fd, 0, LOCAL_PEERCRED, &peercred, &peersize))
+      if (getsockopt(httpGetFd(con->http), 0, LOCAL_PEERCRED, &peercred, &peersize))
 #    else
-      if (getsockopt(con->http.fd, SOL_SOCKET, SO_PEERCRED, &peercred,
+      if (getsockopt(httpGetFd(con->http), SOL_SOCKET, SO_PEERCRED, &peercred,
                      &peersize))
 #    endif /* __APPLE__ */
       {
        cupsdLogMessage(CUPSD_LOG_ERROR,
                        "[Client %d] Unable to get peer credentials - %s",
-                       con->http.fd, strerror(errno));
+                       con->number, strerror(errno));
       }
       else
       {
        cupsdLogMessage(CUPSD_LOG_DEBUG,
                        "[Client %d] Using credentials for UID %d.",
-                       con->http.fd, CUPSD_UCRED_UID(peercred));
+                       con->number, CUPSD_UCRED_UID(peercred));
         con->gss_uid = CUPSD_UCRED_UID(peercred);
       }
     }
@@ -1187,7 +985,7 @@ cupsdAuthorize(cupsd_client_t *con)        /* I - Client connection */
 
     cupsdLogMessage(CUPSD_LOG_ERROR,
                     "[Client %d] Bad authentication data \"%s ...\"",
-                    con->http.fd, scheme);
+                    con->number, scheme);
     return;
   }
 
@@ -1210,8 +1008,8 @@ cupsdAuthorize(cupsd_client_t *con)       /* I - Client connection */
 int                                    /* O - 1 if allowed, 0 otherwise */
 cupsdCheckAccess(
     unsigned         ip[4],            /* I - Client address */
-    char             *name,            /* I - Client hostname */
-    int              namelen,          /* I - Length of hostname */
+    const char       *name,            /* I - Client hostname */
+    size_t           namelen,          /* I - Length of hostname */
     cupsd_location_t *loc)             /* I - Location to check */
 {
   int  allow;                          /* 1 if allowed, 0 otherwise */
@@ -1269,8 +1067,8 @@ cupsdCheckAccess(
 
 int                                    /* O - 1 if mask matches, 0 otherwise */
 cupsdCheckAuth(unsigned     ip[4],     /* I - Client address */
-              char         *name,      /* I - Client hostname */
-              int          name_len,   /* I - Length of hostname */
+              const char   *name,      /* I - Client hostname */
+              size_t       name_len,   /* I - Length of hostname */
               cups_array_t *masks)     /* I - Masks */
 {
   int                  i;              /* Looping var */
@@ -1456,7 +1254,6 @@ cupsdCheckGroup(
 {
   int          i;                      /* Looping var */
   struct group *group;                 /* System group info */
-  char         junk[33];               /* MD5 password (not used) */
 #ifdef HAVE_MBR_UID_TO_UUID
   uuid_t       useruuid,               /* UUID for username */
                groupuuid;              /* UUID for groupname */
@@ -1542,15 +1339,6 @@ cupsdCheckGroup(
     return (0);
 #endif /* HAVE_MBR_UID_TO_UUID */
 
- /*
-  * Username not found, group not found, or user is not part of the
-  * system group...  Check for a user and group in the MD5 password
-  * file...
-  */
-
-  if (get_md5_password(username, groupname, junk) != NULL)
-    return (1);
-
  /*
   * If we get this far, then the user isn't part of the named group...
   */
@@ -1672,7 +1460,7 @@ cupsdFindBest(const char   *path, /* I - Resource path */
                        *uriptr;        /* Pointer into URI */
   cupsd_location_t     *loc,           /* Current location */
                        *best;          /* Best match for location so far */
-  int                  bestlen;        /* Length of best match */
+  size_t               bestlen;        /* Length of best match */
   int                  limit;          /* Limit field */
   static const int     limits[] =      /* Map http_status_t to CUPSD_AUTH_LIMIT_xyz */
                {
@@ -1817,9 +1605,13 @@ cupsdIsAuthorized(cupsd_client_t *con,   /* I - Connection */
   int                  i,              /* Looping vars */
                        auth,           /* Authorization status */
                        type;           /* Type of authentication */
+  http_addr_t          *hostaddr = httpGetAddress(con->http);
+                                       /* Client address */
+  const char           *hostname = httpGetHostname(con->http, NULL, 0);
+                                       /* Client hostname */
   unsigned             address[4];     /* Authorization address */
   cupsd_location_t     *best;          /* Best match for location so far */
-  int                  hostlen;        /* Length of hostname */
+  size_t               hostlen;        /* Length of hostname */
   char                 *name,          /* Current username */
                        username[256],  /* Username to authorize */
                        ownername[256], /* Owner name to authorize */
@@ -1835,8 +1627,6 @@ cupsdIsAuthorized(cupsd_client_t *con,    /* I - Connection */
                {
                  "None",
                  "Basic",
-                 "Digest",
-                 "BasicDigest",
                  "Negotiate"
                };
 
@@ -1857,8 +1647,9 @@ cupsdIsAuthorized(cupsd_client_t *con,    /* I - Connection */
 
   if (!con->best)
   {
-    if (!strcmp(con->http.hostname, "localhost") ||
-        !strcmp(con->http.hostname, ServerName))
+    if (httpAddrLocalhost(httpGetAddress(con->http)) ||
+        !strcmp(hostname, ServerName) ||
+       cupsArrayFind(ServerAlias, (void *)hostname))
       return (HTTP_OK);
     else
       return (HTTP_FORBIDDEN);
@@ -1884,20 +1675,20 @@ cupsdIsAuthorized(cupsd_client_t *con,  /* I - Connection */
   */
 
 #ifdef AF_INET6
-  if (con->http.hostaddr->addr.sa_family == AF_INET6)
+  if (httpAddrFamily(hostaddr) == AF_INET6)
   {
    /*
     * Copy IPv6 address...
     */
 
-    address[0] = ntohl(con->http.hostaddr->ipv6.sin6_addr.s6_addr32[0]);
-    address[1] = ntohl(con->http.hostaddr->ipv6.sin6_addr.s6_addr32[1]);
-    address[2] = ntohl(con->http.hostaddr->ipv6.sin6_addr.s6_addr32[2]);
-    address[3] = ntohl(con->http.hostaddr->ipv6.sin6_addr.s6_addr32[3]);
+    address[0] = ntohl(hostaddr->ipv6.sin6_addr.s6_addr32[0]);
+    address[1] = ntohl(hostaddr->ipv6.sin6_addr.s6_addr32[1]);
+    address[2] = ntohl(hostaddr->ipv6.sin6_addr.s6_addr32[2]);
+    address[3] = ntohl(hostaddr->ipv6.sin6_addr.s6_addr32[3]);
   }
   else
 #endif /* AF_INET6 */
-  if (con->http.hostaddr->addr.sa_family == AF_INET)
+  if (con->http->hostaddr->addr.sa_family == AF_INET)
   {
    /*
     * Copy IPv4 address...
@@ -1906,14 +1697,14 @@ cupsdIsAuthorized(cupsd_client_t *con,  /* I - Connection */
     address[0] = 0;
     address[1] = 0;
     address[2] = 0;
-    address[3] = ntohl(con->http.hostaddr->ipv4.sin_addr.s_addr);
+    address[3] = ntohl(hostaddr->ipv4.sin_addr.s_addr);
   }
   else
     memset(address, 0, sizeof(address));
 
-  hostlen = strlen(con->http.hostname);
+  hostlen = strlen(hostname);
 
-  auth = cupsdCheckAccess(address, con->http.hostname, hostlen, best)
+  auth = cupsdCheckAccess(address, hostname, hostlen, best)
              ? CUPSD_AUTH_ALLOW : CUPSD_AUTH_DENY;
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdIsAuthorized: auth=CUPSD_AUTH_%s...",
@@ -1927,8 +1718,9 @@ cupsdIsAuthorized(cupsd_client_t *con,    /* I - Connection */
   * See if encryption is required...
   */
 
-  if ((best->encryption >= HTTP_ENCRYPT_REQUIRED && !con->http.tls &&
-      _cups_strcasecmp(con->http.hostname, "localhost") &&
+  if ((best->encryption >= HTTP_ENCRYPT_REQUIRED && !con->http->tls &&
+      _cups_strcasecmp(hostname, "localhost") &&
+      !httpAddrLocalhost(hostaddr) &&
       best->satisfy == CUPSD_AUTH_SATISFY_ALL) &&
       !(type == CUPSD_AUTH_NEGOTIATE ||
         (type == CUPSD_AUTH_NONE &&
@@ -1993,9 +1785,9 @@ cupsdIsAuthorized(cupsd_client_t *con,    /* I - Connection */
 #ifdef HAVE_GSSAPI
         (type != CUPSD_AUTH_NEGOTIATE || con->gss_uid <= 0) &&
 #endif /* HAVE_GSSAPI */
-        (con->type != CUPSD_AUTH_BASIC || type != CUPSD_AUTH_BASICDIGEST))
+        con->type != CUPSD_AUTH_BASIC)
     {
-      cupsdLogMessage(CUPSD_LOG_ERROR, "Authorized using %s, expected %s!",
+      cupsdLogMessage(CUPSD_LOG_ERROR, "Authorized using %s, expected %s.",
                       types[con->type], types[type]);
 
       return (HTTP_UNAUTHORIZED);
@@ -2290,7 +2082,7 @@ copy_authmask(cupsd_authmask_t *mask,     /* I - Existing auth mask */
 }
 
 
-#if !HAVE_LIBPAM && !defined(HAVE_USERSEC_H)
+#if !HAVE_LIBPAM
 /*
  * 'cups_crypt()' - Encrypt the password using the DES or MD5 algorithms,
  *                  as needed.
@@ -2410,7 +2202,7 @@ cups_crypt(const char *pw,                /* I - Password string */
     return (crypt(pw, salt));
   }
 }
-#endif /* !HAVE_LIBPAM && !HAVE_USERSEC_H */
+#endif /* !HAVE_LIBPAM */
 
 
 /*
@@ -2430,68 +2222,6 @@ free_authmask(cupsd_authmask_t *mask,    /* I - Auth mask to free */
 }
 
 
-/*
- * 'get_md5_password()' - Get an MD5 password.
- */
-
-static char *                          /* O - MD5 password string */
-get_md5_password(const char *username, /* I - Username */
-                 const char *group,    /* I - Group */
-                 char       passwd[33])        /* O - MD5 password string */
-{
-  cups_file_t  *fp;                    /* passwd.md5 file */
-  char         filename[1024],         /* passwd.md5 filename */
-               line[256],              /* Line from file */
-               tempuser[33],           /* User from file */
-               tempgroup[33];          /* Group from file */
-
-
-  cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                  "get_md5_password(username=\"%s\", group=\"%s\", passwd=%p)",
-                  username, group ? group : "(null)", passwd);
-
-  snprintf(filename, sizeof(filename), "%s/passwd.md5", ServerRoot);
-  if ((fp = cupsFileOpen(filename, "r")) == NULL)
-  {
-    if (errno != ENOENT)
-      cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to open %s - %s", filename,
-                      strerror(errno));
-
-    return (NULL);
-  }
-
-  while (cupsFileGets(fp, line, sizeof(line)) != NULL)
-  {
-    if (sscanf(line, "%32[^:]:%32[^:]:%32s", tempuser, tempgroup, passwd) != 3)
-    {
-      cupsdLogMessage(CUPSD_LOG_ERROR, "Bad MD5 password line: %s", line);
-      continue;
-    }
-
-    if (!strcmp(username, tempuser) &&
-        (group == NULL || !strcmp(group, tempgroup)))
-    {
-     /*
-      * Found the password entry!
-      */
-
-      cupsdLogMessage(CUPSD_LOG_DEBUG2, "Found MD5 user %s, group %s...",
-                      username, tempgroup);
-
-      cupsFileClose(fp);
-      return (passwd);
-    }
-  }
-
- /*
-  * Didn't find a password entry - return NULL!
-  */
-
-  cupsFileClose(fp);
-  return (NULL);
-}
-
-
 #if HAVE_LIBPAM
 /*
  * 'pam_func()' - PAM conversation function.
@@ -2514,7 +2244,7 @@ pam_func(
   * Allocate memory for the responses...
   */
 
-  if ((replies = malloc(sizeof(struct pam_response) * num_msg)) == NULL)
+  if ((replies = malloc(sizeof(struct pam_response) * (size_t)num_msg)) == NULL)
     return (PAM_CONV_ERR);
 
  /*
@@ -2523,17 +2253,7 @@ pam_func(
 
   DEBUG_printf(("pam_func: appdata_ptr = %p\n", appdata_ptr));
 
-#ifdef __hpux
- /*
-  * Apparently some versions of HP-UX 11 have a broken pam_unix security
-  * module.  This is a workaround...
-  */
-
-  data = auth_data;
-  (void)appdata_ptr;
-#else
   data = (cupsd_authdata_t *)appdata_ptr;
-#endif /* __hpux */
 
   for (i = 0; i < num_msg; i ++)
   {
@@ -2583,7 +2303,7 @@ pam_func(
 
   return (PAM_SUCCESS);
 }
-#elif !defined(HAVE_USERSEC_H)
+#else
 
 
 /*
@@ -2607,5 +2327,5 @@ to64(char          *s,                    /* O - Output string */
 
 
 /*
- * End of "$Id: auth.c 11500 2014-01-06 22:21:15Z msweet $".
+ * End of "$Id: auth.c 11776 2014-03-28 19:16:05Z msweet $".
  */
index 16f1fd5af689723004780d8eea63854a8dbb89db..c42c0a2f91e8ca769cc77160224fd9a7b74b9fcb 100644 (file)
@@ -1,16 +1,16 @@
 /*
- * "$Id: auth.h 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: auth.h 11776 2014-03-28 19:16:05Z msweet $"
  *
- *   Authorization definitions for the CUPS scheduler.
+ * Authorization definitions for the CUPS scheduler.
  *
- *   Copyright 2007-2011 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/".
  */
 
 /*
 #define CUPSD_AUTH_DEFAULT     -1      /* Use DefaultAuthType */
 #define CUPSD_AUTH_NONE                0       /* No authentication */
 #define CUPSD_AUTH_BASIC       1       /* Basic authentication */
-#define CUPSD_AUTH_DIGEST      2       /* Digest authentication */
-#define CUPSD_AUTH_BASICDIGEST 3       /* Basic authentication w/passwd.md5 */
-#define CUPSD_AUTH_NEGOTIATE   4       /* Kerberos authentication */
-#define CUPSD_AUTH_AUTO                5       /* Kerberos or Basic, depending on configuration of server */
+#define CUPSD_AUTH_NEGOTIATE   2       /* Kerberos authentication */
+#define CUPSD_AUTH_AUTO                3       /* Kerberos or Basic, depending on configuration of server */
 
 #define CUPSD_AUTH_ANON                0       /* Anonymous access */
 #define CUPSD_AUTH_USER                1       /* Must have a valid username/password */
@@ -74,7 +72,7 @@ typedef struct
 
 typedef struct
 {
-  int          length;                 /* Length of name */
+  size_t       length;                 /* Length of name */
   char         *name;                  /* Name string */
 } cupsd_namemask_t;
 
@@ -91,9 +89,9 @@ typedef struct
 typedef struct
 {
   char                 *location;      /* Location of resource */
+  size_t               length;         /* Length of location string */
   ipp_op_t             op;             /* IPP operation */
   int                  limit,          /* Limit for these types of requests */
-                       length,         /* Length of location string */
                        order_type,     /* Allow or Deny */
                        type,           /* Type of authentication */
                        level,          /* Access level required */
@@ -130,10 +128,8 @@ extern void                cupsdAddLocation(cupsd_location_t *loc);
 extern void            cupsdAddName(cupsd_location_t *loc, char *name);
 extern int             cupsdAddNameMask(cups_array_t **masks, char *name);
 extern void            cupsdAuthorize(cupsd_client_t *con);
-extern int             cupsdCheckAccess(unsigned ip[4], char *name,
-                                        int namelen, cupsd_location_t *loc);
-extern int             cupsdCheckAuth(unsigned ip[4], char *name, int namelen,
-                                      cups_array_t *masks);
+extern int             cupsdCheckAccess(unsigned ip[4], const char *name, size_t namelen, cupsd_location_t *loc);
+extern int             cupsdCheckAuth(unsigned ip[4], const char *name, size_t namelen, cups_array_t *masks);
 extern int             cupsdCheckGroup(const char *username,
                                        struct passwd *user,
                                        const char *groupname);
@@ -147,5 +143,5 @@ extern cupsd_location_t     *cupsdNewLocation(const char *location);
 
 
 /*
- * End of "$Id: auth.h 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: auth.h 11776 2014-03-28 19:16:05Z msweet $".
  */
index 1ad4439f0440e2b6b0f968eb28a24135b2c2e261..9bbd2e282a67a304ac55d5cf5eba60f1fe933a13 100644 (file)
@@ -1,25 +1,16 @@
 /*
- * "$Id: cert.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: cert.c 12034 2014-07-16 19:37:34Z msweet $"
  *
- *   Authentication certificate routines for the CUPS scheduler.
+ * Authentication certificate routines for the CUPS scheduler.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   cupsdAddCert()        - Add a certificate.
- *   cupsdDeleteCert()     - Delete a single certificate.
- *   cupsdDeleteAllCerts() - Delete all certificates...
- *   cupsdFindCert()       - Find a certificate.
- *   cupsdInitCerts()      - Initialize the certificate "system" and root
- *                           certificate.
+ * These coded instructions, statements, and computer programs 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/".
  */
 
 /*
@@ -52,8 +43,7 @@ cupsdAddCert(int        pid,          /* I - Process ID */
                                        /* Hex constants... */
 
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                  "cupsdAddCert: Adding certificate for PID %d", pid);
+  cupsdLogMessage(CUPSD_LOG_DEBUG, "cupsdAddCert: Adding certificate for PID %d", pid);
 
  /*
   * Allocate memory for the certificate...
@@ -417,10 +407,10 @@ cupsdInitCerts(void)
     * them as the seed...
     */
 
-    seed = cupsFileGetChar(fp);
-    seed = (seed << 8) | cupsFileGetChar(fp);
-    seed = (seed << 8) | cupsFileGetChar(fp);
-    CUPS_SRAND((seed << 8) | cupsFileGetChar(fp));
+    seed = (unsigned)cupsFileGetChar(fp);
+    seed = (seed << 8) | (unsigned)cupsFileGetChar(fp);
+    seed = (seed << 8) | (unsigned)cupsFileGetChar(fp);
+    CUPS_SRAND((seed << 8) | (unsigned)cupsFileGetChar(fp));
 
     cupsFileClose(fp);
   }
@@ -436,5 +426,5 @@ cupsdInitCerts(void)
 
 
 /*
- * End of "$Id: cert.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: cert.c 12034 2014-07-16 19:37:34Z msweet $".
  */
index b920c4f24b3a99b8ed5ec1efa22719db7276bf97..17add06ceacc4ad840caeffea999ca8f0a2b55e8 100644 (file)
@@ -1,27 +1,16 @@
 /*
- * "$Id: classes.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: classes.c 11781 2014-03-28 20:57:22Z msweet $"
  *
- *   Printer class routines for the CUPS scheduler.
+ * Printer class routines for the CUPS scheduler.
  *
- *   Copyright 2007-2011 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/".
- *
- * Contents:
- *
- *   cupsdAddClass()                 - Add a class to the system.
- *   cupsdAddPrinterToClass()        - Add a printer to a class...
- *   cupsdDeletePrinterFromClass()   - Delete a printer from a class.
- *   cupsdDeletePrinterFromClasses() - Delete a printer from all classes.
- *   cupsdFindAvailablePrinter()     - Find an available printer in a class.
- *   cupsdFindClass()                - Find the named class.
- *   cupsdLoadAllClasses()           - Load classes from the classes.conf file.
- *   cupsdSaveAllClasses()           - Save classes to the classes.conf 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/".
  */
 
 /*
@@ -93,7 +82,7 @@ cupsdAddPrinterToClass(
   if (c->num_printers == 0)
     temp = malloc(sizeof(cupsd_printer_t *));
   else
-    temp = realloc(c->printers, sizeof(cupsd_printer_t *) * (c->num_printers + 1));
+    temp = realloc(c->printers, sizeof(cupsd_printer_t *) * (size_t)(c->num_printers + 1));
 
   if (temp == NULL)
   {
@@ -147,7 +136,7 @@ cupsdDeletePrinterFromClass(
     c->num_printers --;
     if (i < c->num_printers)
       memmove(c->printers + i, c->printers + i + 1,
-              (c->num_printers - i) * sizeof(cupsd_printer_t *));
+              (size_t)(c->num_printers - i) * sizeof(cupsd_printer_t *));
   }
   else
     return (0);
@@ -343,7 +332,7 @@ cupsdLoadAllClasses(void)
         cupsdLogMessage(CUPSD_LOG_ERROR,
                        "Syntax error on line %d of classes.conf.", linenum);
     }
-    else if (!_cups_strcasecmp(line, "</Class>"))
+    else if (!_cups_strcasecmp(line, "</Class>") || !_cups_strcasecmp(line, "</DefaultClass>"))
     {
       if (p != NULL)
       {
@@ -806,7 +795,10 @@ cupsdSaveAllClasses(void)
       cupsFilePutConf(fp, "Option", value);
     }
 
-    cupsFilePuts(fp, "</Class>\n");
+    if (pclass == DefaultPrinter)
+      cupsFilePuts(fp, "</DefaultClass>\n");
+    else
+      cupsFilePuts(fp, "</Class>\n");
   }
 
   cupsdCloseCreatedConfFile(fp, filename);
@@ -814,5 +806,5 @@ cupsdSaveAllClasses(void)
 
 
 /*
- * End of "$Id: classes.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: classes.c 11781 2014-03-28 20:57:22Z msweet $".
  */
index 51a11acb144ca34e6d33de968e157f550666512d..7b74131aed6054fc0053fecb7dfb88fea2e0115c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: client.c 12057 2014-07-22 14:03:19Z msweet $"
+ * "$Id: client.c 12056 2014-07-22 14:02:56Z msweet $"
  *
  * Client routines for the CUPS scheduler.
  *
@@ -20,6 +20,8 @@
  * Include necessary headers...
  */
 
+#define _CUPS_NO_DEPRECATED
+#define _HTTP_NO_PRIVATE
 #include "cupsd.h"
 
 #ifdef __APPLE__
 #endif /* HAVE_TCPD_H */
 
 
-/*
- * Local globals...
- */
-
-static const char      * const http_states[] =
-                       {               /* HTTP state strings */
-                         "HTTP_STATE_ERROR",
-                         "HTTP_STATE_WAITING",
-                         "HTTP_STATE_OPTIONS",
-                         "HTTP_STATE_GET",
-                         "HTTP_STATE_GET_SEND",
-                         "HTTP_STATE_HEAD",
-                         "HTTP_STATE_POST",
-                         "HTTP_STATE_POST_RECV",
-                         "HTTP_STATE_POST_SEND",
-                         "HTTP_STATE_PUT",
-                         "HTTP_STATE_PUT_RECV",
-                         "HTTP_STATE_DELETE",
-                         "HTTP_STATE_TRACE",
-                         "HTTP_STATE_CONNECT",
-                         "HTTP_STATE_STATUS",
-                         "HTTP_STATE_UNKNOWN_METHOD",
-                         "HTTP_STATE_UNKNOWN_VERSION"
-                       };
-static const char      * const ipp_states[] =
-                       {               /* IPP state strings */
-                         "IPP_IDLE",
-                         "IPP_HEADER",
-                         "IPP_ATTRIBUTE",
-                         "IPP_DATA"
-                       };
-
-
 /*
  * Local functions...
  */
@@ -71,9 +40,11 @@ static int           check_if_modified(cupsd_client_t *con,
                                          struct stat *filestats);
 static int             compare_clients(cupsd_client_t *a, cupsd_client_t *b,
                                        void *data);
-static int             data_ready(cupsd_client_t *con);
+#ifdef HAVE_SSL
+static int             cupsd_start_tls(cupsd_client_t *con, http_encryption_t e);
+#endif /* HAVE_SSL */
 static char            *get_file(cupsd_client_t *con, struct stat *filestats,
-                                 char *filename, int len);
+                                 char *filename, size_t len);
 static http_status_t   install_cupsd_conf(cupsd_client_t *con);
 static int             is_cgi(cupsd_client_t *con, const char *filename,
                               struct stat *filestats, mime_type_t *type);
@@ -94,14 +65,12 @@ static void         write_pipe(cupsd_client_t *con);
 void
 cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
 {
+  const char           *hostname;      /* Hostname of client */
+  char                 name[256];      /* Hostname of client */
   int                  count;          /* Count of connections on a host */
-  int                  val;            /* Parameter value */
   cupsd_client_t       *con,           /* New client pointer */
                        *tempcon;       /* Temporary client pointer */
-  http_addrlist_t      *addrlist,      /* List of adddresses for host */
-                       *addr;          /* Current address */
   socklen_t            addrlen;        /* Length of address */
-  char                 *hostname;      /* Hostname for address */
   http_addr_t          temp;           /* Temporary address variable */
   static time_t                last_dos = 0;   /* Time of last DoS attack */
 #ifdef HAVE_TCPD_H
@@ -153,20 +122,14 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
     return;
   }
 
-  con->file            = -1;
-  con->http.activity   = time(NULL);
-  con->http.hostaddr   = &(con->clientaddr);
-  con->http.wait_value = 10000;
-  con->http.mode       = _HTTP_MODE_SERVER;
-
  /*
   * Accept the client and get the remote address...
   */
 
-  addrlen = sizeof(http_addr_t);
+  con->number = ++ LastClientNumber;
+  con->file   = -1;
 
-  if ((con->http.fd = accept(lis->fd, (struct sockaddr *)con->http.hostaddr,
-                             &addrlen)) < 0)
+  if ((con->http = httpAcceptConnection(lis->fd, 0)) == NULL)
   {
     if (errno == ENFILE || errno == EMFILE)
       cupsdPauseListening();
@@ -179,23 +142,10 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
   }
 
  /*
-  * Save the connected port number...
+  * Save the connected address and port number...
   */
 
-  _httpAddrSetPort(con->http.hostaddr, httpAddrPort(&(lis->address)));
-
-#ifdef AF_INET6
- /*
-  * Convert IPv4 over IPv6 addresses (::ffff:n.n.n.n) to IPv4 forms we
-  * can more easily use...
-  */
-
-  if (lis->address.addr.sa_family == AF_INET6 &&
-      con->http.hostaddr->ipv6.sin6_addr.s6_addr32[0] == 0 &&
-      con->http.hostaddr->ipv6.sin6_addr.s6_addr32[1] == 0 &&
-      ntohl(con->http.hostaddr->ipv6.sin6_addr.s6_addr32[2]) == 0xffff)
-    con->http.hostaddr->ipv6.sin6_addr.s6_addr32[2] = 0;
-#endif /* AF_INET6 */
+  con->clientaddr = lis->address;
 
  /*
   * Check the number of clients on the same address...
@@ -204,7 +154,7 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
   for (count = 0, tempcon = (cupsd_client_t *)cupsArrayFirst(Clients);
        tempcon;
        tempcon = (cupsd_client_t *)cupsArrayNext(Clients))
-    if (httpAddrEqual(tempcon->http.hostaddr, con->http.hostaddr))
+    if (httpAddrEqual(httpGetAddress(tempcon->http), httpGetAddress(con->http)))
     {
       count ++;
       if (count >= MaxClientsPerHost)
@@ -218,18 +168,12 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
       last_dos = time(NULL);
       cupsdLogMessage(CUPSD_LOG_WARN,
                       "Possible DoS attack - more than %d clients connecting "
-                     "from %s!",
+                     "from %s.",
                      MaxClientsPerHost,
-                     httpAddrString(con->http.hostaddr, con->http.hostname,
-                                    sizeof(con->http.hostname)));
+                     httpGetHostname(con->http, name, sizeof(name)));
     }
 
-#ifdef WIN32
-    closesocket(con->http.fd);
-#else
-    close(con->http.fd);
-#endif /* WIN32 */
-
+    httpClose(con->http);
     free(con);
     return;
   }
@@ -238,31 +182,10 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
   * Get the hostname or format the IP address as needed...
   */
 
-  if (httpAddrLocalhost(con->http.hostaddr))
-  {
-   /*
-    * Map accesses from the loopback interface to "localhost"...
-    */
-
-    strlcpy(con->http.hostname, "localhost", sizeof(con->http.hostname));
-    hostname = con->http.hostname;
-  }
+  if (HostNameLookups)
+    hostname = httpResolveHostname(con->http, NULL, 0);
   else
-  {
-   /*
-    * Map accesses from the same host to the server name.
-    */
-
-    if (HostNameLookups)
-      hostname = httpAddrLookup(con->http.hostaddr, con->http.hostname,
-                                sizeof(con->http.hostname));
-    else
-    {
-      hostname = NULL;
-      httpAddrString(con->http.hostaddr, con->http.hostname,
-                     sizeof(con->http.hostname));
-    }
-  }
+    hostname = httpGetHostname(con->http, NULL, 0);
 
   if (hostname == NULL && HostNameLookups == 2)
   {
@@ -270,15 +193,11 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
     * Can't have an unresolved IP address with double-lookups enabled...
     */
 
-#ifdef WIN32
-    closesocket(con->http.fd);
-#else
-    close(con->http.fd);
-#endif /* WIN32 */
+    httpClose(con->http);
 
-    cupsdLogMessage(CUPSD_LOG_WARN,
+    cupsdLogClient(con, CUPSD_LOG_WARN,
                     "Name lookup failed - connection from %s closed!",
-                    con->http.hostname);
+                    httpGetHostname(con->http, NULL, 0));
 
     free(con);
     return;
@@ -290,15 +209,17 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
     * Do double lookups as needed...
     */
 
-    if ((addrlist = httpAddrGetList(con->http.hostname, AF_UNSPEC, NULL))
-            != NULL)
+    http_addrlist_t    *addrlist,      /* List of addresses */
+                       *addr;          /* Current address */
+
+    if ((addrlist = httpAddrGetList(hostname, AF_UNSPEC, NULL)) != NULL)
     {
      /*
       * See if the hostname maps to the same IP address...
       */
 
       for (addr = addrlist; addr; addr = addr->next)
-        if (httpAddrEqual(con->http.hostaddr, &(addr->addr)))
+        if (httpAddrEqual(httpGetAddress(con->http), &(addr->addr)))
           break;
     }
     else
@@ -313,15 +234,11 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
       * with double-lookups enabled...
       */
 
-#ifdef WIN32
-      closesocket(con->http.fd);
-#else
-      close(con->http.fd);
-#endif /* WIN32 */
+      httpClose(con->http);
 
-      cupsdLogMessage(CUPSD_LOG_WARN,
+      cupsdLogClient(con, CUPSD_LOG_WARN,
                       "IP lookup failed - connection from %s closed!",
-                      con->http.hostname);
+                      httpGetHostname(con->http, NULL, 0));
       free(con);
       return;
     }
@@ -332,74 +249,71 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
   * See if the connection is denied by TCP wrappers...
   */
 
-  request_init(&wrap_req, RQ_DAEMON, "cupsd", RQ_FILE, con->http.fd, NULL);
+  request_init(&wrap_req, RQ_DAEMON, "cupsd", RQ_FILE, httpGetFd(con->http),
+               NULL);
   fromhost(&wrap_req);
 
   if (!hosts_access(&wrap_req))
   {
-#ifdef WIN32
-    closesocket(con->http.fd);
-#else
-    close(con->http.fd);
-#endif /* WIN32 */
+    httpClose(con->http);
 
-    cupsdLogMessage(CUPSD_LOG_WARN,
+    cupsdLogClient(con, CUPSD_LOG_WARN,
                     "Connection from %s refused by /etc/hosts.allow and "
-                   "/etc/hosts.deny rules.", con->http.hostname);
+                   "/etc/hosts.deny rules.", httpGetHostname(con->http, NULL, 0));
     free(con);
     return;
   }
 #endif /* HAVE_TCPD_H */
 
 #ifdef AF_LOCAL
-  if (con->http.hostaddr->addr.sa_family == AF_LOCAL)
+  if (httpAddrFamily(httpGetAddress(con->http)) == AF_LOCAL)
   {
 #  ifdef __APPLE__
     socklen_t  peersize;               /* Size of peer credentials */
     pid_t      peerpid;                /* Peer process ID */
-    char       name[256];              /* Name of process */
+    char       peername[256];          /* Name of process */
 
     peersize = sizeof(peerpid);
-    if (!getsockopt(con->http.fd, SOL_LOCAL, LOCAL_PEERPID, &peerpid,
-        &peersize))
+    if (!getsockopt(httpGetFd(con->http), SOL_LOCAL, LOCAL_PEERPID, &peerpid,
+                    &peersize))
     {
-      if (!proc_name(peerpid, name, sizeof(name)))
-       cupsdLogMessage(CUPSD_LOG_DEBUG,
-                       "[Client %d] Accepted from %s (Domain ???[%d])",
-                       con->http.fd, con->http.hostname, (int)peerpid);
+      if (!proc_name((int)peerpid, peername, sizeof(peername)))
+       cupsdLogClient(con, CUPSD_LOG_DEBUG,
+                      "Accepted from %s (Domain ???[%d])",
+                       httpGetHostname(con->http, NULL, 0), (int)peerpid);
       else
-       cupsdLogMessage(CUPSD_LOG_DEBUG,
-                       "[Client %d] Accepted from %s (Domain %s[%d])",
-                       con->http.fd, con->http.hostname, name, (int)peerpid);
+       cupsdLogClient(con, CUPSD_LOG_DEBUG,
+                       "Accepted from %s (Domain %s[%d])",
+                       httpGetHostname(con->http, NULL, 0), peername, (int)peerpid);
     }
     else
 #  endif /* __APPLE__ */
 
-    cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] Accepted from %s (Domain)",
-                    con->http.fd, con->http.hostname);
+    cupsdLogClient(con, CUPSD_LOG_DEBUG, "Accepted from %s (Domain)",
+                   httpGetHostname(con->http, NULL, 0));
   }
   else
 #endif /* AF_LOCAL */
-  cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] Accepted from %s:%d (IPv%d)",
-                  con->http.fd, con->http.hostname,
-                 httpAddrPort(con->http.hostaddr),
-                 _httpAddrFamily(con->http.hostaddr) == AF_INET ? 4 : 6);
+  cupsdLogClient(con, CUPSD_LOG_DEBUG, "Accepted from %s:%d (IPv%d)",
+                 httpGetHostname(con->http, NULL, 0),
+                httpAddrPort(httpGetAddress(con->http)),
+                httpAddrFamily(httpGetAddress(con->http)) == AF_INET ? 4 : 6);
 
  /*
   * Get the local address the client connected to...
   */
 
   addrlen = sizeof(temp);
-  if (getsockname(con->http.fd, (struct sockaddr *)&temp, &addrlen))
+  if (getsockname(httpGetFd(con->http), (struct sockaddr *)&temp, &addrlen))
   {
-    cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to get local address - %s",
-                    strerror(errno));
+    cupsdLogClient(con, CUPSD_LOG_ERROR, "Unable to get local address - %s",
+                   strerror(errno));
 
     strlcpy(con->servername, "localhost", sizeof(con->servername));
     con->serverport = LocalPort;
   }
 #ifdef AF_LOCAL
-  else if (_httpAddrFamily(&temp) == AF_LOCAL)
+  else if (httpAddrFamily(&temp) == AF_LOCAL)
   {
     strlcpy(con->servername, "localhost", sizeof(con->servername));
     con->serverport = LocalPort;
@@ -423,29 +337,14 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
 
   cupsArrayAdd(Clients, con);
 
- /*
-  * Using TCP_NODELAY improves responsiveness, especially on systems with a slow
-  * loopback interface.  Since we write large buffers when sending print files
-  * and requests there shouldn't be any performance penalty for this...
-  */
-
-  val = 1;
-  setsockopt(con->http.fd, IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val));
-
- /*
-  * Close this file on all execs...
-  */
-
-  fcntl(con->http.fd, F_SETFD, fcntl(con->http.fd, F_GETFD) | FD_CLOEXEC);
-
  /*
   * Add the socket to the server select.
   */
 
-  cupsdAddSelect(con->http.fd, (cupsd_selfunc_t)cupsdReadClient, NULL, con);
+  cupsdAddSelect(httpGetFd(con->http), (cupsd_selfunc_t)cupsdReadClient, NULL,
+                 con);
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] Waiting for request.",
-                 con->http.fd);
+  cupsdLogClient(con, CUPSD_LOG_DEBUG, "Waiting for request.");
 
  /*
   * Temporarily suspend accept()'s until we lose a client...
@@ -459,15 +358,13 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
   * See if we are connecting on a secure port...
   */
 
-  if (lis->encryption == HTTP_ENCRYPT_ALWAYS)
+  if (lis->encryption == HTTP_ENCRYPTION_ALWAYS)
   {
    /*
     * https connection; go secure...
     */
 
-    con->http.encryption = HTTP_ENCRYPT_ALWAYS;
-
-    if (!cupsdStartTLS(con))
+    if (cupsd_start_tls(con, HTTP_ENCRYPTION_ALWAYS))
       cupsdCloseClient(con);
   }
   else
@@ -505,36 +402,18 @@ int                                       /* O - 1 if partial close, 0 if fully closed */
 cupsdCloseClient(cupsd_client_t *con)  /* I - Client to close */
 {
   int          partial;                /* Do partial close for SSL? */
-#ifdef HAVE_LIBSSL
-#elif defined(HAVE_GNUTLS)
-#  elif defined(HAVE_CDSASSL)
-#endif /* HAVE_LIBSSL */
 
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] Closing connection.",
-                  con->http.fd);
+  cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing connection.");
 
  /*
   * Flush pending writes before closing...
   */
 
-  httpFlushWrite(HTTP(con));
+  httpFlushWrite(con->http);
 
   partial = 0;
 
-#ifdef HAVE_SSL
- /*
-  * Shutdown encryption as needed...
-  */
-
-  if (con->http.tls)
-  {
-    partial = 1;
-
-    cupsdEndTLS(con);
-  }
-#endif /* HAVE_SSL */
-
   if (con->pipe_pid != 0)
   {
    /*
@@ -557,22 +436,31 @@ cupsdCloseClient(cupsd_client_t *con)     /* I - Client to close */
   * Close the socket and clear the file from the input set for select()...
   */
 
-  if (con->http.fd >= 0)
+  if (httpGetFd(con->http) >= 0)
   {
     cupsArrayRemove(ActiveClients, con);
     cupsdSetBusyState();
 
+#ifdef HAVE_SSL
+   /*
+    * Shutdown encryption as needed...
+    */
+
+    if (httpIsEncrypted(con->http))
+      partial = 1;
+#endif /* HAVE_SSL */
+
     if (partial)
     {
      /*
       * Only do a partial close so that the encrypted client gets everything.
       */
 
-      shutdown(con->http.fd, 0);
-      cupsdAddSelect(con->http.fd, (cupsd_selfunc_t)cupsdReadClient, NULL, con);
+      httpShutdown(con->http);
+      cupsdAddSelect(httpGetFd(con->http), (cupsd_selfunc_t)cupsdReadClient,
+                     NULL, con);
 
-      cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] Waiting for socket close.",
-                     con->http.fd);
+      cupsdLogClient(con, CUPSD_LOG_DEBUG, "Waiting for socket close.");
     }
     else
     {
@@ -580,9 +468,9 @@ cupsdCloseClient(cupsd_client_t *con)       /* I - Client to close */
       * Shut the socket down fully...
       */
 
-      cupsdRemoveSelect(con->http.fd);
-      close(con->http.fd);
-      con->http.fd = -1;
+      cupsdRemoveSelect(httpGetFd(con->http));
+      httpClose(con->http);
+      con->http = NULL;
     }
   }
 
@@ -592,11 +480,9 @@ cupsdCloseClient(cupsd_client_t *con)      /* I - Client to close */
     * Free memory...
     */
 
-    if (con->http.input_set)
-      free(con->http.input_set);
+    cupsdRemoveSelect(httpGetFd(con->http));
 
-    httpClearCookie(HTTP(con));
-    httpClearFields(HTTP(con));
+    httpClose(con->http);
 
     cupsdClearString(&con->filename);
     cupsdClearString(&con->command);
@@ -650,21 +536,6 @@ cupsdCloseClient(cupsd_client_t *con)      /* I - Client to close */
 }
 
 
-/*
- * 'cupsdFlushHeader()' - Flush the header fields to the client.
- */
-
-int                                    /* I - Bytes written or -1 on error */
-cupsdFlushHeader(cupsd_client_t *con)  /* I - Client to flush to */
-{
-  int bytes = httpFlushWrite(HTTP(con));
-
-  con->http.data_encoding = HTTP_ENCODING_LENGTH;
-
-  return (bytes);
-}
-
-
 /*
  * 'cupsdReadClient()' - Read data from a client.
  */
@@ -673,11 +544,8 @@ void
 cupsdReadClient(cupsd_client_t *con)   /* I - Client to read from */
 {
   char                 line[32768],    /* Line from client... */
-                       operation[64],  /* Operation code from socket */
-                       version[64],    /* HTTP version number string */
                        locale[64],     /* Locale */
                        *ptr;           /* Pointer into strings */
-  int                  major, minor;   /* HTTP version numbers */
   http_status_t                status;         /* Transfer status */
   ipp_state_t          ipp_state;      /* State of IPP transfer */
   int                  bytes;          /* Number of bytes to POST */
@@ -689,25 +557,39 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
   static unsigned      request_id = 0; /* Request ID for temp files */
 
 
-  status = HTTP_CONTINUE;
+  status = HTTP_STATUS_CONTINUE;
+
+  cupsdLogClient(con, CUPSD_LOG_DEBUG2,
+                "cupsdReadClient "
+                "error=%d, "
+                "used=%d, "
+                "state=%s, "
+                "data_encoding=HTTP_ENCODING_%s, "
+                "data_remaining=" CUPS_LLFMT ", "
+                "request=%p(%s), "
+                "file=%d",
+                httpError(con->http), (int)httpGetReady(con->http),
+                httpStateString(httpGetState(con->http)),
+                httpIsChunked(con->http) ? "CHUNKED" : "LENGTH",
+                CUPS_LLCAST httpGetRemaining(con->http),
+                con->request,
+                con->request ? ippStateString(ippGetState(con->request)) : "",
+                con->file);
+
+  if (httpGetState(con->http) == HTTP_STATE_GET_SEND ||
+      httpGetState(con->http) == HTTP_STATE_POST_SEND ||
+      httpGetState(con->http) == HTTP_STATE_STATUS)
+  {
+   /*
+    * If we get called in the wrong state, then something went wrong with the
+    * connection and we need to shut it down...
+    */
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                 "[Client %d] cupsdReadClient "
-                 "error=%d, "
-                 "used=%d, "
-                 "state=%s, "
-                 "data_encoding=HTTP_ENCODING_%s, "
-                 "data_remaining=" CUPS_LLFMT ", "
-                 "request=%p(%s), "
-                 "file=%d",
-                 con->http.fd, con->http.error, con->http.used,
-                 http_states[con->http.state + 1],
-                 con->http.data_encoding == HTTP_ENCODING_CHUNKED ?
-                     "CHUNKED" : "LENGTH",
-                 CUPS_LLCAST con->http.data_remaining,
-                 con->request,
-                 con->request ? ipp_states[con->request->state] : "",
-                 con->file);
+    cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing on unexpected HTTP read state %s.",
+                  httpStateString(httpGetState(con->http)));
+    cupsdCloseClient(con);
+    return;
+  }
 
 #ifdef HAVE_SSL
   if (con->auto_ssl)
@@ -718,18 +600,18 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
 
     con->auto_ssl = 0;
 
-    if (recv(con->http.fd, buf, 1, MSG_PEEK) == 1 &&
+    if (recv(httpGetFd(con->http), buf, 1, MSG_PEEK) == 1 &&
         (!buf[0] || !strchr("DGHOPT", buf[0])))
     {
      /*
       * Encrypt this connection...
       */
 
-      cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                      "[Client %d] Saw first byte %02X, auto-negotiating "
-                     "SSL/TLS session.", con->http.fd, buf[0] & 255);
+      cupsdLogClient(con, CUPSD_LOG_DEBUG2,
+                     "Saw first byte %02X, auto-negotiating "
+                    "SSL/TLS session.", buf[0] & 255);
 
-      if (!cupsdStartTLS(con))
+      if (cupsd_start_tls(con, HTTP_ENCRYPTION_ALWAYS))
         cupsdCloseClient(con);
 
       return;
@@ -737,24 +619,26 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
   }
 #endif /* HAVE_SSL */
 
-  switch (con->http.state)
+  switch (httpGetState(con->http))
   {
     case HTTP_STATE_WAITING :
        /*
         * See if we've received a request line...
        */
 
-        if (httpGets(line, sizeof(line) - 1, HTTP(con)) == NULL)
+        con->operation = httpReadRequest(con->http, con->uri, sizeof(con->uri));
+        if (con->operation == HTTP_STATE_ERROR ||
+           con->operation == HTTP_STATE_UNKNOWN_METHOD ||
+           con->operation == HTTP_STATE_UNKNOWN_VERSION)
        {
-         if (con->http.error && con->http.error != EPIPE)
-           cupsdLogMessage(CUPSD_LOG_DEBUG,
-                           "[Client %d] HTTP_STATE_WAITING Closing for error %d "
-                           "(%s)", con->http.fd, con->http.error,
-                           strerror(con->http.error));
+         if (httpError(con->http))
+           cupsdLogClient(con, CUPSD_LOG_DEBUG,
+                          "HTTP_STATE_WAITING Closing for error %d (%s)",
+                          httpError(con->http), strerror(httpError(con->http)));
          else
-           cupsdLogMessage(CUPSD_LOG_DEBUG,
-                           "[Client %d] HTTP_STATE_WAITING Closing on EOF",
-                           con->http.fd);
+           cupsdLogClient(con, CUPSD_LOG_DEBUG,
+                          "HTTP_STATE_WAITING Closing on error: %s",
+                          cupsLastErrorString());
 
          cupsdCloseClient(con);
          return;
@@ -764,29 +648,19 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
         * Ignore blank request lines...
        */
 
-        if (line[0] == '\0')
+        if (con->operation == HTTP_STATE_WAITING)
          break;
 
        /*
         * Clear other state variables...
        */
 
-        httpClearFields(HTTP(con));
-
-        con->http.activity        = time(NULL);
-        con->http.version         = HTTP_1_0;
-       con->http.keep_alive      = HTTP_KEEPALIVE_OFF;
-       con->http.data_encoding   = HTTP_ENCODING_LENGTH;
-       con->http.data_remaining  = 0;
-       con->http._data_remaining = 0;
-       con->operation            = HTTP_STATE_WAITING;
-       con->bytes                = 0;
-       con->file                 = -1;
-       con->file_ready           = 0;
-       con->pipe_pid             = 0;
-       con->username[0]          = '\0';
-       con->password[0]          = '\0';
-       con->uri[0]               = '\0';
+       con->bytes       = 0;
+       con->file        = -1;
+       con->file_ready  = 0;
+       con->pipe_pid    = 0;
+       con->username[0] = '\0';
+       con->password[0] = '\0';
 
        cupsdClearString(&con->command);
        cupsdClearString(&con->options);
@@ -815,62 +689,6 @@ cupsdReadClient(cupsd_client_t *con)       /* I - Client to read from */
        con->gss_uid  = 0;
 #endif /* HAVE_GSSAPI */
 
-       /*
-        * Grab the request line...
-       */
-
-        switch (sscanf(line, "%63s%1023s%63s", operation, con->uri, version))
-       {
-         case 1 :
-             if (line[0])
-             {
-               cupsdLogMessage(CUPSD_LOG_ERROR,
-                               "[Client %d] Bad request line \"%s\" from %s.",
-                               con->http.fd,
-                               _httpEncodeURI(buf, line, sizeof(buf)),
-                               con->http.hostname);
-               cupsdSendError(con, HTTP_BAD_REQUEST, CUPSD_AUTH_NONE);
-               cupsdCloseClient(con);
-              }
-             return;
-         case 2 :
-             con->http.version = HTTP_0_9;
-             break;
-         case 3 :
-             if (sscanf(version, "HTTP/%d.%d", &major, &minor) != 2)
-             {
-               cupsdLogMessage(CUPSD_LOG_ERROR,
-                               "[Client %d] Bad request line \"%s\" from %s.",
-                               con->http.fd,
-                               _httpEncodeURI(buf, line, sizeof(buf)),
-                               con->http.hostname);
-               cupsdSendError(con, HTTP_BAD_REQUEST, CUPSD_AUTH_NONE);
-               cupsdCloseClient(con);
-               return;
-             }
-
-             if (major < 2)
-             {
-               con->http.version = (http_version_t)(major * 100 + minor);
-               if (con->http.version == HTTP_1_1 && KeepAlive)
-                 con->http.keep_alive = HTTP_KEEPALIVE_ON;
-               else
-                 con->http.keep_alive = HTTP_KEEPALIVE_OFF;
-             }
-             else
-             {
-               cupsdLogMessage(CUPSD_LOG_ERROR,
-                               "[Client %d] Unsupported request line \"%s\" "
-                               "from %s.", con->http.fd,
-                               _httpEncodeURI(buf, line, sizeof(buf)),
-                               con->http.hostname);
-               cupsdSendError(con, HTTP_NOT_SUPPORTED, CUPSD_AUTH_NONE);
-               cupsdCloseClient(con);
-               return;
-             }
-             break;
-       }
-
        /*
         * Handle full URLs in the request line...
        */
@@ -883,18 +701,24 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
                resource[HTTP_MAX_URI]; /* Resource path */
           int  port;                   /* Port number */
 
-
          /*
          * Separate the URI into its components...
          */
 
-          httpSeparateURI(HTTP_URI_CODING_MOST, con->uri,
-                         scheme, sizeof(scheme),
-                         userpass, sizeof(userpass),
-                         hostname, sizeof(hostname), &port,
-                         resource, sizeof(resource));
+          if (httpSeparateURI(HTTP_URI_CODING_MOST, con->uri,
+                             scheme, sizeof(scheme),
+                             userpass, sizeof(userpass),
+                             hostname, sizeof(hostname), &port,
+                             resource, sizeof(resource)) < HTTP_URI_STATUS_OK)
+          {
+           cupsdLogClient(con, CUPSD_LOG_ERROR, "Bad URI \"%s\" in request.",
+                           con->uri);
+           cupsdSendError(con, HTTP_STATUS_METHOD_NOT_ALLOWED, CUPSD_AUTH_NONE);
+           cupsdCloseClient(con);
+           return;
+         }
 
-         /*
+        /*
          * Only allow URIs with the servername, localhost, or an IP
          * address...
          */
@@ -902,16 +726,16 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
          if (strcmp(scheme, "file") &&
              _cups_strcasecmp(hostname, ServerName) &&
              _cups_strcasecmp(hostname, "localhost") &&
+             !cupsArrayFind(ServerAlias, hostname) &&
              !isdigit(hostname[0]) && hostname[0] != '[')
          {
           /*
            * Nope, we don't do proxies...
            */
 
-           cupsdLogMessage(CUPSD_LOG_ERROR,
-                           "[Client %d] Bad URI \"%s\" in request.",
-                           con->http.fd, con->uri);
-           cupsdSendError(con, HTTP_METHOD_NOT_ALLOWED, CUPSD_AUTH_NONE);
+           cupsdLogClient(con, CUPSD_LOG_ERROR, "Bad URI \"%s\" in request.",
+                           con->uri);
+           cupsdSendError(con, HTTP_STATUS_METHOD_NOT_ALLOWED, CUPSD_AUTH_NONE);
            cupsdCloseClient(con);
            return;
          }
@@ -928,38 +752,12 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
         * Process the request...
        */
 
-        if (!strcmp(operation, "GET"))
-         con->http.state = HTTP_STATE_GET;
-        else if (!strcmp(operation, "PUT"))
-         con->http.state = HTTP_STATE_PUT;
-        else if (!strcmp(operation, "POST"))
-         con->http.state = HTTP_STATE_POST;
-        else if (!strcmp(operation, "DELETE"))
-         con->http.state = HTTP_STATE_DELETE;
-        else if (!strcmp(operation, "TRACE"))
-         con->http.state = HTTP_STATE_TRACE;
-        else if (!strcmp(operation, "OPTIONS"))
-         con->http.state = HTTP_STATE_OPTIONS;
-        else if (!strcmp(operation, "HEAD"))
-         con->http.state = HTTP_STATE_HEAD;
-       else
-       {
-         cupsdLogMessage(CUPSD_LOG_ERROR,
-                         "[Client %d] Bad operation \"%s\".", con->http.fd,
-                         operation);
-         cupsdSendError(con, HTTP_BAD_REQUEST, CUPSD_AUTH_NONE);
-         cupsdCloseClient(con);
-         return;
-       }
-
         gettimeofday(&(con->start), NULL);
-        con->operation = con->http.state;
-
-        cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] %s %s HTTP/%d.%d",
-                       con->http.fd, operation, con->uri,
-                       con->http.version / 100, con->http.version % 100);
 
-       con->http.status = HTTP_OK;
+        cupsdLogClient(con, CUPSD_LOG_DEBUG, "%s %s HTTP/%d.%d",
+                      httpStateString(con->operation) + 11, con->uri,
+                      httpGetVersion(con->http) / 100,
+                       httpGetVersion(con->http) % 100);
 
         if (!cupsArrayFind(ActiveClients, con))
        {
@@ -978,38 +776,34 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
         * Parse incoming parameters until the status changes...
        */
 
-        while ((status = httpUpdate(HTTP(con))) == HTTP_CONTINUE)
-         if (!data_ready(con))
+        while ((status = httpUpdate(con->http)) == HTTP_STATUS_CONTINUE)
+         if (!httpGetReady(con->http))
            break;
 
-       if (status != HTTP_OK && status != HTTP_CONTINUE)
+       if (status != HTTP_STATUS_OK && status != HTTP_STATUS_CONTINUE)
        {
-         if (con->http.error && con->http.error != EPIPE)
-           cupsdLogMessage(CUPSD_LOG_DEBUG,
-                           "[Client %d] Closing for error %d (%s) while "
-                           "reading headers.",
-                           con->http.fd, con->http.error,
-                           strerror(con->http.error));
+         if (httpError(con->http) && httpError(con->http) != EPIPE)
+           cupsdLogClient(con, CUPSD_LOG_DEBUG,
+                           "Closing for error %d (%s) while reading headers.",
+                           httpError(con->http), strerror(httpError(con->http)));
          else
-           cupsdLogMessage(CUPSD_LOG_DEBUG,
-                           "[Client %d] Closing on EOF while reading headers.",
-                           con->http.fd);
+           cupsdLogClient(con, CUPSD_LOG_DEBUG,
+                          "Closing on EOF while reading headers.");
 
-         cupsdSendError(con, HTTP_BAD_REQUEST, CUPSD_AUTH_NONE);
+         cupsdSendError(con, HTTP_STATUS_BAD_REQUEST, CUPSD_AUTH_NONE);
          cupsdCloseClient(con);
          return;
        }
        break;
 
     default :
-        if (!data_ready(con) && recv(con->http.fd, buf, 1, MSG_PEEK) < 1)
+        if (!httpGetReady(con->http) && recv(httpGetFd(con->http), buf, 1, MSG_PEEK) < 1)
        {
         /*
          * Connection closed...
          */
 
-         cupsdLogMessage(CUPSD_LOG_DEBUG,
-                         "[Client %d] Closing on EOF", con->http.fd);
+         cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing on EOF.");
           cupsdCloseClient(con);
          return;
        }
@@ -1020,24 +814,26 @@ cupsdReadClient(cupsd_client_t *con)     /* I - Client to read from */
   * Handle new transfers...
   */
 
-  if (status == HTTP_OK)
+  cupsdLogClient(con, CUPSD_LOG_DEBUG, "Read: status=%d", status);
+
+  if (status == HTTP_STATUS_OK)
   {
-    if (con->http.fields[HTTP_FIELD_ACCEPT_LANGUAGE][0])
+    if (httpGetField(con->http, HTTP_FIELD_ACCEPT_LANGUAGE)[0])
     {
      /*
       * Figure out the locale from the Accept-Language and Content-Type
       * fields...
       */
 
-      if ((ptr = strchr(con->http.fields[HTTP_FIELD_ACCEPT_LANGUAGE],
+      if ((ptr = strchr(httpGetField(con->http, HTTP_FIELD_ACCEPT_LANGUAGE),
                         ',')) != NULL)
         *ptr = '\0';
 
-      if ((ptr = strchr(con->http.fields[HTTP_FIELD_ACCEPT_LANGUAGE],
+      if ((ptr = strchr(httpGetField(con->http, HTTP_FIELD_ACCEPT_LANGUAGE),
                         ';')) != NULL)
         *ptr = '\0';
 
-      if ((ptr = strstr(con->http.fields[HTTP_FIELD_CONTENT_TYPE],
+      if ((ptr = strstr(httpGetField(con->http, HTTP_FIELD_CONTENT_TYPE),
                         "charset=")) != NULL)
       {
        /*
@@ -1046,14 +842,14 @@ cupsdReadClient(cupsd_client_t *con)     /* I - Client to read from */
        */
 
         snprintf(locale, sizeof(locale), "%s.%s",
-                con->http.fields[HTTP_FIELD_ACCEPT_LANGUAGE], ptr + 8);
+                httpGetField(con->http, HTTP_FIELD_ACCEPT_LANGUAGE), ptr + 8);
 
        if ((ptr = strchr(locale, ',')) != NULL)
          *ptr = '\0';
       }
       else
         snprintf(locale, sizeof(locale), "%s.UTF-8",
-                con->http.fields[HTTP_FIELD_ACCEPT_LANGUAGE]);
+                httpGetField(con->http, HTTP_FIELD_ACCEPT_LANGUAGE));
 
       con->language = cupsLangGet(locale);
     }
@@ -1062,25 +858,23 @@ cupsdReadClient(cupsd_client_t *con)     /* I - Client to read from */
 
     cupsdAuthorize(con);
 
-    if (!_cups_strncasecmp(con->http.fields[HTTP_FIELD_CONNECTION],
+    if (!_cups_strncasecmp(httpGetField(con->http, HTTP_FIELD_CONNECTION),
                            "Keep-Alive", 10) && KeepAlive)
-      con->http.keep_alive = HTTP_KEEPALIVE_ON;
-    else if (!_cups_strncasecmp(con->http.fields[HTTP_FIELD_CONNECTION],
+      httpSetKeepAlive(con->http, HTTP_KEEPALIVE_ON);
+    else if (!_cups_strncasecmp(httpGetField(con->http, HTTP_FIELD_CONNECTION),
                                 "close", 5))
-      con->http.keep_alive = HTTP_KEEPALIVE_OFF;
+      httpSetKeepAlive(con->http, HTTP_KEEPALIVE_OFF);
 
-    if (!con->http.fields[HTTP_FIELD_HOST][0] &&
-        con->http.version >= HTTP_1_1)
+    if (!httpGetField(con->http, HTTP_FIELD_HOST)[0] &&
+        httpGetVersion(con->http) >= HTTP_VERSION_1_1)
     {
      /*
       * HTTP/1.1 and higher require the "Host:" field...
       */
 
-      if (!cupsdSendError(con, HTTP_BAD_REQUEST, CUPSD_AUTH_NONE))
+      if (!cupsdSendError(con, HTTP_STATUS_BAD_REQUEST, CUPSD_AUTH_NONE))
       {
-        cupsdLogMessage(CUPSD_LOG_ERROR,
-                        "[Client %d] Missing Host: field in request.",
-                        con->http.fd);
+        cupsdLogClient(con, CUPSD_LOG_ERROR, "Missing Host: field in request.");
        cupsdCloseClient(con);
        return;
       }
@@ -1092,12 +886,11 @@ cupsdReadClient(cupsd_client_t *con)     /* I - Client to read from */
       * or IPv6 values in the Host: field.
       */
 
-      cupsdLogMessage(CUPSD_LOG_ERROR,
-                      "[Client %d] Request from \"%s\" using invalid Host: "
-                      "field \"%s\"", con->http.fd, con->http.hostname,
-                      con->http.fields[HTTP_FIELD_HOST]);
+      cupsdLogClient(con, CUPSD_LOG_ERROR,
+                     "Request from \"%s\" using invalid Host: field \"%s\".",
+                     httpGetHostname(con->http, NULL, 0), httpGetField(con->http, HTTP_FIELD_HOST));
 
-      if (!cupsdSendError(con, HTTP_BAD_REQUEST, CUPSD_AUTH_NONE))
+      if (!cupsdSendError(con, HTTP_STATUS_BAD_REQUEST, CUPSD_AUTH_NONE))
       {
        cupsdCloseClient(con);
        return;
@@ -1111,39 +904,31 @@ cupsdReadClient(cupsd_client_t *con)     /* I - Client to read from */
 
       if (con->best && con->best->type != CUPSD_AUTH_NONE)
       {
-       if (!cupsdSendHeader(con, HTTP_UNAUTHORIZED, NULL, CUPSD_AUTH_NONE))
+        httpClearFields(con->http);
+
+       if (!cupsdSendHeader(con, HTTP_STATUS_UNAUTHORIZED, NULL, CUPSD_AUTH_NONE))
        {
          cupsdCloseClient(con);
          return;
        }
       }
 
-      if (!_cups_strcasecmp(con->http.fields[HTTP_FIELD_CONNECTION], "Upgrade") &&
-         con->http.tls == NULL)
+      if (!_cups_strcasecmp(httpGetField(con->http, HTTP_FIELD_CONNECTION), "Upgrade") && strstr(httpGetField(con->http, HTTP_FIELD_UPGRADE), "TLS/") != NULL && !httpIsEncrypted(con->http))
       {
 #ifdef HAVE_SSL
        /*
         * Do encryption stuff...
        */
 
-       if (!cupsdSendHeader(con, HTTP_SWITCHING_PROTOCOLS, NULL, CUPSD_AUTH_NONE))
-       {
-         cupsdCloseClient(con);
-         return;
-       }
-
-       httpPrintf(HTTP(con), "Connection: Upgrade\r\n");
-       httpPrintf(HTTP(con), "Upgrade: TLS/1.2,TLS/1.1,TLS/1.0\r\n");
-       httpPrintf(HTTP(con), "Content-Length: 0\r\n");
-       httpPrintf(HTTP(con), "\r\n");
+        httpClearFields(con->http);
 
-       if (cupsdFlushHeader(con) < 0)
-        {
+       if (!cupsdSendHeader(con, HTTP_STATUS_SWITCHING_PROTOCOLS, NULL, CUPSD_AUTH_NONE))
+       {
          cupsdCloseClient(con);
          return;
        }
 
-        if (!cupsdStartTLS(con))
+        if (cupsd_start_tls(con, HTTP_ENCRYPTION_REQUIRED))
         {
          cupsdCloseClient(con);
          return;
@@ -1157,17 +942,12 @@ cupsdReadClient(cupsd_client_t *con)     /* I - Client to read from */
 #endif /* HAVE_SSL */
       }
 
-      if (!cupsdSendHeader(con, HTTP_OK, NULL, CUPSD_AUTH_NONE))
-      {
-       cupsdCloseClient(con);
-       return;
-      }
-
-      httpPrintf(HTTP(con), "Allow: GET, HEAD, OPTIONS, POST, PUT\r\n");
-      httpPrintf(HTTP(con), "Content-Length: 0\r\n");
-      httpPrintf(HTTP(con), "\r\n");
+      httpClearFields(con->http);
+      httpSetField(con->http, HTTP_FIELD_ALLOW,
+                  "GET, HEAD, OPTIONS, POST, PUT");
+      httpSetField(con->http, HTTP_FIELD_CONTENT_LENGTH, "0");
 
-      if (cupsdFlushHeader(con) < 0)
+      if (!cupsdSendHeader(con, HTTP_STATUS_OK, NULL, CUPSD_AUTH_NONE))
       {
        cupsdCloseClient(con);
        return;
@@ -1179,11 +959,10 @@ cupsdReadClient(cupsd_client_t *con)     /* I - Client to read from */
       * Protect against malicious users!
       */
 
-      cupsdLogMessage(CUPSD_LOG_ERROR,
-                      "[Client %d] Request for non-absolute resource \"%s\".",
-                      con->http.fd, con->uri);
+      cupsdLogClient(con, CUPSD_LOG_ERROR,
+                     "Request for non-absolute resource \"%s\".", con->uri);
 
-      if (!cupsdSendError(con, HTTP_FORBIDDEN, CUPSD_AUTH_NONE))
+      if (!cupsdSendError(con, HTTP_STATUS_FORBIDDEN, CUPSD_AUTH_NONE))
       {
        cupsdCloseClient(con);
        return;
@@ -1191,33 +970,24 @@ cupsdReadClient(cupsd_client_t *con)     /* I - Client to read from */
     }
     else
     {
-      if (!_cups_strcasecmp(con->http.fields[HTTP_FIELD_CONNECTION],
-                            "Upgrade") && con->http.tls == NULL)
+      if (!_cups_strcasecmp(httpGetField(con->http, HTTP_FIELD_CONNECTION),
+                            "Upgrade") && !httpIsEncrypted(con->http))
       {
 #ifdef HAVE_SSL
        /*
         * Do encryption stuff...
        */
 
-       if (!cupsdSendHeader(con, HTTP_SWITCHING_PROTOCOLS, NULL,
+        httpClearFields(con->http);
+
+       if (!cupsdSendHeader(con, HTTP_STATUS_SWITCHING_PROTOCOLS, NULL,
                             CUPSD_AUTH_NONE))
        {
          cupsdCloseClient(con);
          return;
        }
 
-       httpPrintf(HTTP(con), "Connection: Upgrade\r\n");
-       httpPrintf(HTTP(con), "Upgrade: TLS/1.2,TLS/1.1,TLS/1.0\r\n");
-       httpPrintf(HTTP(con), "Content-Length: 0\r\n");
-       httpPrintf(HTTP(con), "\r\n");
-
-       if (cupsdFlushHeader(con) < 0)
-        {
-         cupsdCloseClient(con);
-         return;
-       }
-
-        if (!cupsdStartTLS(con))
+        if (cupsd_start_tls(con, HTTP_ENCRYPTION_REQUIRED))
         {
          cupsdCloseClient(con);
          return;
@@ -1231,23 +1001,23 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
 #endif /* HAVE_SSL */
       }
 
-      if ((status = cupsdIsAuthorized(con, NULL)) != HTTP_OK)
+      if ((status = cupsdIsAuthorized(con, NULL)) != HTTP_STATUS_OK)
       {
        cupsdSendError(con, status, CUPSD_AUTH_NONE);
        cupsdCloseClient(con);
        return;
       }
 
-      if (con->http.expect &&
+      if (httpGetExpect(con->http) &&
           (con->operation == HTTP_STATE_POST || con->operation == HTTP_STATE_PUT))
       {
-        if (con->http.expect == HTTP_CONTINUE)
+        if (httpGetExpect(con->http) == HTTP_STATUS_CONTINUE)
        {
         /*
          * Send 100-continue header...
          */
 
-         if (!cupsdSendHeader(con, HTTP_CONTINUE, NULL, CUPSD_AUTH_NONE))
+          if (httpWriteResponse(con->http, HTTP_STATUS_CONTINUE))
          {
            cupsdCloseClient(con);
            return;
@@ -1259,27 +1029,20 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
          * Send 417-expectation-failed header...
          */
 
-         if (!cupsdSendHeader(con, HTTP_EXPECTATION_FAILED, NULL,
-                              CUPSD_AUTH_NONE))
-         {
-           cupsdCloseClient(con);
-           return;
-         }
-
-         httpPrintf(HTTP(con), "Content-Length: 0\r\n");
-         httpPrintf(HTTP(con), "\r\n");
+          httpClearFields(con->http);
+         httpSetField(con->http, HTTP_FIELD_CONTENT_LENGTH, "0");
 
-         if (cupsdFlushHeader(con) < 0)
-          {
-           cupsdCloseClient(con);
-           return;
-         }
+         cupsdSendError(con, HTTP_STATUS_EXPECTATION_FAILED, CUPSD_AUTH_NONE);
+          cupsdCloseClient(con);
+          return;
        }
       }
 
-      switch (con->http.state)
+      switch (httpGetState(con->http))
       {
        case HTTP_STATE_GET_SEND :
+            cupsdLogClient(con, CUPSD_LOG_DEBUG, "Processing GET %s", con->uri);
+
             if ((!strncmp(con->uri, "/ppd/", 5) ||
                 !strncmp(con->uri, "/printers/", 10) ||
                 !strncmp(con->uri, "/classes/", 9)) &&
@@ -1331,7 +1094,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
              }
              else
              {
-               if (!cupsdSendError(con, HTTP_NOT_FOUND, CUPSD_AUTH_NONE))
+               if (!cupsdSendError(con, HTTP_STATUS_NOT_FOUND, CUPSD_AUTH_NONE))
                {
                  cupsdCloseClient(con);
                  return;
@@ -1389,7 +1152,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
                snprintf(con->uri, sizeof(con->uri), "/icons/%s.png", p->name);
              else
              {
-               if (!cupsdSendError(con, HTTP_NOT_FOUND, CUPSD_AUTH_NONE))
+               if (!cupsdSendError(con, HTTP_STATUS_NOT_FOUND, CUPSD_AUTH_NONE))
                {
                  cupsdCloseClient(con);
                  return;
@@ -1404,7 +1167,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
              * Web interface is disabled. Show an appropriate message...
              */
 
-             if (!cupsdSendError(con, HTTP_WEBIF_DISABLED, CUPSD_AUTH_NONE))
+             if (!cupsdSendError(con, HTTP_STATUS_CUPS_WEBIF_DISABLED, CUPSD_AUTH_NONE))
              {
                cupsdCloseClient(con);
                return;
@@ -1475,17 +1238,17 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
 
               if (!cupsdSendCommand(con, con->command, con->options, 0))
              {
-               if (!cupsdSendError(con, HTTP_NOT_FOUND, CUPSD_AUTH_NONE))
+               if (!cupsdSendError(con, HTTP_STATUS_NOT_FOUND, CUPSD_AUTH_NONE))
                {
                  cupsdCloseClient(con);
                  return;
                }
               }
              else
-               cupsdLogRequest(con, HTTP_OK);
+               cupsdLogRequest(con, HTTP_STATUS_OK);
 
-             if (con->http.version <= HTTP_1_0)
-               con->http.keep_alive = HTTP_KEEPALIVE_OFF;
+             if (httpGetVersion(con->http) <= HTTP_VERSION_1_0)
+               httpSetKeepAlive(con->http, HTTP_KEEPALIVE_OFF);
            }
             else if ((!strncmp(con->uri, "/admin/conf/", 12) &&
                      (strchr(con->uri + 12, '/') ||
@@ -1499,10 +1262,10 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
              * /admin/conf...
              */
 
-             cupsdLogMessage(CUPSD_LOG_ERROR,
+             cupsdLogClient(con, CUPSD_LOG_ERROR,
                              "Request for subdirectory \"%s\"!", con->uri);
 
-             if (!cupsdSendError(con, HTTP_FORBIDDEN, CUPSD_AUTH_NONE))
+             if (!cupsdSendError(con, HTTP_STATUS_FORBIDDEN, CUPSD_AUTH_NONE))
              {
                cupsdCloseClient(con);
                return;
@@ -1519,7 +1282,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
               if ((filename = get_file(con, &filestats, buf,
                                       sizeof(buf))) == NULL)
              {
-               if (!cupsdSendError(con, HTTP_NOT_FOUND, CUPSD_AUTH_NONE))
+               if (!cupsdSendError(con, HTTP_STATUS_NOT_FOUND, CUPSD_AUTH_NONE))
                {
                  cupsdCloseClient(con);
                  return;
@@ -1530,6 +1293,8 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
 
              type = mimeFileType(MimeDatabase, filename, NULL, NULL);
 
+              cupsdLogClient(con, CUPSD_LOG_DEBUG, "filename=\"%s\", type=%s/%s", filename, type ? type->super : "", type ? type->type : "");
+
               if (is_cgi(con, filename, &filestats, type))
              {
               /*
@@ -1539,23 +1304,23 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
 
                if (!cupsdSendCommand(con, con->command, con->options, 0))
                {
-                 if (!cupsdSendError(con, HTTP_NOT_FOUND, CUPSD_AUTH_NONE))
+                 if (!cupsdSendError(con, HTTP_STATUS_NOT_FOUND, CUPSD_AUTH_NONE))
                  {
                    cupsdCloseClient(con);
                    return;
                  }
                }
                else
-                 cupsdLogRequest(con, HTTP_OK);
+                 cupsdLogRequest(con, HTTP_STATUS_OK);
 
-               if (con->http.version <= HTTP_1_0)
-                 con->http.keep_alive = HTTP_KEEPALIVE_OFF;
+               if (httpGetVersion(con->http) <= HTTP_VERSION_1_0)
+                 httpSetKeepAlive(con->http, HTTP_KEEPALIVE_OFF);
                break;
              }
 
              if (!check_if_modified(con, &filestats))
               {
-               if (!cupsdSendError(con, HTTP_NOT_MODIFIED, CUPSD_AUTH_NONE))
+               if (!cupsdSendError(con, HTTP_STATUS_NOT_MODIFIED, CUPSD_AUTH_NONE))
                {
                  cupsdCloseClient(con);
                  return;
@@ -1568,7 +1333,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
                else
                  snprintf(line, sizeof(line), "%s/%s", type->super, type->type);
 
-               if (!write_file(con, HTTP_OK, filename, line, &filestats))
+               if (!write_file(con, HTTP_STATUS_OK, filename, line, &filestats))
                {
                  cupsdCloseClient(con);
                  return;
@@ -1583,15 +1348,15 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
            * so check the length against any limits that are set...
            */
 
-            if (con->http.fields[HTTP_FIELD_CONTENT_LENGTH][0] &&
+            if (httpGetField(con->http, HTTP_FIELD_CONTENT_LENGTH)[0] &&
                MaxRequestSize > 0 &&
-               con->http.data_remaining > MaxRequestSize)
+               httpGetLength2(con->http) > MaxRequestSize)
            {
             /*
              * Request too large...
              */
 
-              if (!cupsdSendError(con, HTTP_REQUEST_TOO_LARGE, CUPSD_AUTH_NONE))
+              if (!cupsdSendError(con, HTTP_STATUS_REQUEST_TOO_LARGE, CUPSD_AUTH_NONE))
              {
                cupsdCloseClient(con);
                return;
@@ -1599,15 +1364,13 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
 
              break;
             }
-           else if (con->http.data_remaining < 0 ||
-                    (!con->http.fields[HTTP_FIELD_CONTENT_LENGTH][0] &&
-                     con->http.data_encoding == HTTP_ENCODING_LENGTH))
+           else if (httpGetLength2(con->http) < 0)
            {
             /*
              * Negative content lengths are invalid!
              */
 
-              if (!cupsdSendError(con, HTTP_BAD_REQUEST, CUPSD_AUTH_NONE))
+              if (!cupsdSendError(con, HTTP_STATUS_BAD_REQUEST, CUPSD_AUTH_NONE))
              {
                cupsdCloseClient(con);
                return;
@@ -1621,7 +1384,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
            * content-type field will be "application/ipp"...
            */
 
-           if (!strcmp(con->http.fields[HTTP_FIELD_CONTENT_TYPE],
+           if (!strcmp(httpGetField(con->http, HTTP_FIELD_CONTENT_TYPE),
                        "application/ipp"))
               con->request = ippNew();
             else if (!WebInterface)
@@ -1630,7 +1393,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
              * Web interface is disabled. Show an appropriate message...
              */
 
-             if (!cupsdSendError(con, HTTP_WEBIF_DISABLED, CUPSD_AUTH_NONE))
+             if (!cupsdSendError(con, HTTP_STATUS_CUPS_WEBIF_DISABLED, CUPSD_AUTH_NONE))
              {
                cupsdCloseClient(con);
                return;
@@ -1698,8 +1461,8 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
                  cupsdSetString(&con->options, NULL);
              }
 
-             if (con->http.version <= HTTP_1_0)
-               con->http.keep_alive = HTTP_KEEPALIVE_OFF;
+             if (httpGetVersion(con->http) <= HTTP_VERSION_1_0)
+               httpSetKeepAlive(con->http, HTTP_KEEPALIVE_OFF);
            }
            else
            {
@@ -1710,7 +1473,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
               if ((filename = get_file(con, &filestats, buf,
                                       sizeof(buf))) == NULL)
              {
-               if (!cupsdSendError(con, HTTP_NOT_FOUND, CUPSD_AUTH_NONE))
+               if (!cupsdSendError(con, HTTP_STATUS_NOT_FOUND, CUPSD_AUTH_NONE))
                {
                  cupsdCloseClient(con);
                  return;
@@ -1727,7 +1490,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
                * Only POST to CGI's...
                */
 
-               if (!cupsdSendError(con, HTTP_UNAUTHORIZED, CUPSD_AUTH_NONE))
+               if (!cupsdSendError(con, HTTP_STATUS_UNAUTHORIZED, CUPSD_AUTH_NONE))
                {
                  cupsdCloseClient(con);
                  return;
@@ -1747,11 +1510,10 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
              * PUT can only be done to the cupsd.conf file...
              */
 
-             cupsdLogMessage(CUPSD_LOG_ERROR,
-                             "[Client %d] Disallowed PUT request for \"%s\".",
-                             con->http.fd, con->uri);
+             cupsdLogClient(con, CUPSD_LOG_ERROR,
+                            "Disallowed PUT request for \"%s\".", con->uri);
 
-             if (!cupsdSendError(con, HTTP_FORBIDDEN, CUPSD_AUTH_NONE))
+             if (!cupsdSendError(con, HTTP_STATUS_FORBIDDEN, CUPSD_AUTH_NONE))
              {
                cupsdCloseClient(con);
                return;
@@ -1765,15 +1527,15 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
            * so check the length against any limits that are set...
            */
 
-            if (con->http.fields[HTTP_FIELD_CONTENT_LENGTH][0] &&
+            if (httpGetField(con->http, HTTP_FIELD_CONTENT_LENGTH)[0] &&
                MaxRequestSize > 0 &&
-               con->http.data_remaining > MaxRequestSize)
+               httpGetLength2(con->http) > MaxRequestSize)
            {
             /*
              * Request too large...
              */
 
-              if (!cupsdSendError(con, HTTP_REQUEST_TOO_LARGE, CUPSD_AUTH_NONE))
+              if (!cupsdSendError(con, HTTP_STATUS_REQUEST_TOO_LARGE, CUPSD_AUTH_NONE))
              {
                cupsdCloseClient(con);
                return;
@@ -1781,13 +1543,13 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
 
              break;
             }
-           else if (con->http.data_remaining < 0)
+           else if (httpGetLength2(con->http) < 0)
            {
             /*
              * Negative content lengths are invalid!
              */
 
-              if (!cupsdSendError(con, HTTP_BAD_REQUEST, CUPSD_AUTH_NONE))
+              if (!cupsdSendError(con, HTTP_STATUS_BAD_REQUEST, CUPSD_AUTH_NONE))
              {
                cupsdCloseClient(con);
                return;
@@ -1806,12 +1568,11 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
 
            if (con->file < 0)
            {
-             cupsdLogMessage(CUPSD_LOG_ERROR,
-                             "[Client %d] Unable to create request file "
-                             "\"%s\": %s", con->http.fd, con->filename,
-                             strerror(errno));
+             cupsdLogClient(con, CUPSD_LOG_ERROR,
+                            "Unable to create request file \"%s\": %s",
+                             con->filename, strerror(errno));
 
-             if (!cupsdSendError(con, HTTP_REQUEST_TOO_LARGE, CUPSD_AUTH_NONE))
+             if (!cupsdSendError(con, HTTP_STATUS_REQUEST_TOO_LARGE, CUPSD_AUTH_NONE))
              {
                cupsdCloseClient(con);
                return;
@@ -1825,7 +1586,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
 
        case HTTP_STATE_DELETE :
        case HTTP_STATE_TRACE :
-            cupsdSendError(con, HTTP_NOT_IMPLEMENTED, CUPSD_AUTH_NONE);
+            cupsdSendError(con, HTTP_STATUS_NOT_IMPLEMENTED, CUPSD_AUTH_NONE);
            cupsdCloseClient(con);
            return;
 
@@ -1844,12 +1605,13 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
                snprintf(con->uri, sizeof(con->uri), "/ppd/%s.ppd", p->name);
              else
              {
-               if (!cupsdSendError(con, HTTP_NOT_FOUND, CUPSD_AUTH_NONE))
+               if (!cupsdSendError(con, HTTP_STATUS_NOT_FOUND, CUPSD_AUTH_NONE))
                {
                  cupsdCloseClient(con);
                  return;
                }
 
+               cupsdLogRequest(con, HTTP_STATUS_NOT_FOUND);
                break;
              }
            }
@@ -1867,38 +1629,27 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
                snprintf(con->uri, sizeof(con->uri), "/icons/%s.png", p->name);
              else
              {
-               if (!cupsdSendError(con, HTTP_NOT_FOUND, CUPSD_AUTH_NONE))
+               if (!cupsdSendError(con, HTTP_STATUS_NOT_FOUND, CUPSD_AUTH_NONE))
                {
                  cupsdCloseClient(con);
                  return;
                }
 
+               cupsdLogRequest(con, HTTP_STATUS_NOT_FOUND);
                break;
              }
            }
            else if (!WebInterface)
            {
-              if (!cupsdSendHeader(con, HTTP_OK, NULL, CUPSD_AUTH_NONE))
-             {
-               cupsdCloseClient(con);
-               return;
-             }
+              httpClearFields(con->http);
 
-             if (httpPrintf(HTTP(con), "\r\n") < 0)
+              if (!cupsdSendHeader(con, HTTP_STATUS_OK, NULL, CUPSD_AUTH_NONE))
              {
                cupsdCloseClient(con);
                return;
              }
 
-             if (cupsdFlushHeader(con) < 0)
-             {
-               cupsdCloseClient(con);
-               return;
-             }
-
-             con->http.state = HTTP_STATE_WAITING;
-             DEBUG_puts("cupsdReadClient: Set state to HTTP_STATE_WAITING "
-                        "after HEAD.");
+              cupsdLogRequest(con, HTTP_STATUS_OK);
              break;
            }
 
@@ -1914,25 +1665,15 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
              * CGI output...
              */
 
-              if (!cupsdSendHeader(con, HTTP_OK, "text/html", CUPSD_AUTH_NONE))
-             {
-               cupsdCloseClient(con);
-               return;
-             }
+              httpClearFields(con->http);
 
-             if (httpPrintf(HTTP(con), "\r\n") < 0)
+              if (!cupsdSendHeader(con, HTTP_STATUS_OK, "text/html", CUPSD_AUTH_NONE))
              {
                cupsdCloseClient(con);
                return;
              }
 
-             if (cupsdFlushHeader(con) < 0)
-             {
-               cupsdCloseClient(con);
-               return;
-             }
-
-              cupsdLogRequest(con, HTTP_OK);
+              cupsdLogRequest(con, HTTP_STATUS_OK);
            }
             else if ((!strncmp(con->uri, "/admin/conf/", 12) &&
                      (strchr(con->uri + 12, '/') ||
@@ -1946,39 +1687,41 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
              * /admin/conf...
              */
 
-             cupsdLogMessage(CUPSD_LOG_ERROR,
-                             "[Client %d] Request for subdirectory \"%s\".",
-                             con->http.fd, con->uri);
+             cupsdLogClient(con, CUPSD_LOG_ERROR,
+                            "Request for subdirectory \"%s\".", con->uri);
 
-             if (!cupsdSendError(con, HTTP_FORBIDDEN, CUPSD_AUTH_NONE))
+             if (!cupsdSendError(con, HTTP_STATUS_FORBIDDEN, CUPSD_AUTH_NONE))
              {
                cupsdCloseClient(con);
                return;
              }
 
+              cupsdLogRequest(con, HTTP_STATUS_FORBIDDEN);
              break;
            }
            else if ((filename = get_file(con, &filestats, buf,
                                          sizeof(buf))) == NULL)
            {
-             if (!cupsdSendHeader(con, HTTP_NOT_FOUND, "text/html",
+              httpClearFields(con->http);
+
+             if (!cupsdSendHeader(con, HTTP_STATUS_NOT_FOUND, "text/html",
                                   CUPSD_AUTH_NONE))
              {
                cupsdCloseClient(con);
                return;
              }
 
-              cupsdLogRequest(con, HTTP_NOT_FOUND);
+              cupsdLogRequest(con, HTTP_STATUS_NOT_FOUND);
            }
            else if (!check_if_modified(con, &filestats))
             {
-              if (!cupsdSendError(con, HTTP_NOT_MODIFIED, CUPSD_AUTH_NONE))
+              if (!cupsdSendError(con, HTTP_STATUS_NOT_MODIFIED, CUPSD_AUTH_NONE))
              {
                cupsdCloseClient(con);
                return;
              }
 
-              cupsdLogRequest(con, HTTP_NOT_MODIFIED);
+              cupsdLogRequest(con, HTTP_STATUS_NOT_MODIFIED);
            }
            else
            {
@@ -1992,44 +1735,20 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
              else
                snprintf(line, sizeof(line), "%s/%s", type->super, type->type);
 
-              if (!cupsdSendHeader(con, HTTP_OK, line, CUPSD_AUTH_NONE))
-             {
-               cupsdCloseClient(con);
-               return;
-             }
+              httpClearFields(con->http);
 
-             if (httpPrintf(HTTP(con), "Last-Modified: %s\r\n",
-                            httpGetDateString(filestats.st_mtime)) < 0)
-             {
-               cupsdCloseClient(con);
-               return;
-             }
+             httpSetField(con->http, HTTP_FIELD_LAST_MODIFIED,
+                          httpGetDateString(filestats.st_mtime));
+             httpSetLength(con->http, (size_t)filestats.st_size);
 
-             if (httpPrintf(HTTP(con), "Content-Length: %lu\r\n",
-                            (unsigned long)filestats.st_size) < 0)
+              if (!cupsdSendHeader(con, HTTP_STATUS_OK, line, CUPSD_AUTH_NONE))
              {
                cupsdCloseClient(con);
                return;
              }
 
-              cupsdLogRequest(con, HTTP_OK);
-           }
-
-            if (httpPrintf(HTTP(con), "\r\n") < 0)
-           {
-             cupsdCloseClient(con);
-             return;
+              cupsdLogRequest(con, HTTP_STATUS_OK);
            }
-
-           if (cupsdFlushHeader(con) < 0)
-            {
-             cupsdCloseClient(con);
-             return;
-           }
-
-            con->http.state = HTTP_STATE_WAITING;
-           DEBUG_puts("cupsdReadClient: Set state to HTTP_STATE_WAITING "
-                      "after HEAD.");
             break;
 
        default :
@@ -2042,22 +1761,20 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
   * Handle any incoming data...
   */
 
-  switch (con->http.state)
+  switch (httpGetState(con->http))
   {
     case HTTP_STATE_PUT_RECV :
         do
        {
-          if ((bytes = httpRead2(HTTP(con), line, sizeof(line))) < 0)
+          if ((bytes = httpRead2(con->http, line, sizeof(line))) < 0)
          {
-           if (con->http.error && con->http.error != EPIPE)
-             cupsdLogMessage(CUPSD_LOG_DEBUG,
-                             "[Client %d] HTTP_STATE_PUT_RECV Closing for error "
-                             "%d (%s)", con->http.fd, con->http.error,
-                             strerror(con->http.error));
+           if (httpError(con->http) && httpError(con->http) != EPIPE)
+             cupsdLogClient(con, CUPSD_LOG_DEBUG,
+                             "HTTP_STATE_PUT_RECV Closing for error %d (%s)",
+                             httpError(con->http), strerror(httpError(con->http)));
            else
-             cupsdLogMessage(CUPSD_LOG_DEBUG,
-                             "[Client %d] HTTP_STATE_PUT_RECV Closing on EOF",
-                             con->http.fd);
+             cupsdLogClient(con, CUPSD_LOG_DEBUG,
+                            "HTTP_STATE_PUT_RECV Closing on EOF.");
 
            cupsdCloseClient(con);
            return;
@@ -2066,19 +1783,18 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
          {
            con->bytes += bytes;
 
-            if (write(con->file, line, bytes) < bytes)
+            if (write(con->file, line, (size_t)bytes) < bytes)
            {
-              cupsdLogMessage(CUPSD_LOG_ERROR,
-                             "[Client %d] Unable to write %d bytes to "
-                             "\"%s\": %s", con->http.fd, bytes, con->filename,
-                             strerror(errno));
+              cupsdLogClient(con, CUPSD_LOG_ERROR,
+                            "Unable to write %d bytes to \"%s\": %s", bytes,
+                             con->filename, strerror(errno));
 
              close(con->file);
              con->file = -1;
              unlink(con->filename);
              cupsdClearString(&con->filename);
 
-              if (!cupsdSendError(con, HTTP_REQUEST_TOO_LARGE, CUPSD_AUTH_NONE))
+              if (!cupsdSendError(con, HTTP_STATUS_REQUEST_TOO_LARGE, CUPSD_AUTH_NONE))
              {
                cupsdCloseClient(con);
                return;
@@ -2086,9 +1802,9 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
            }
          }
         }
-       while (con->http.state == HTTP_STATE_PUT_RECV && data_ready(con));
+       while (httpGetState(con->http) == HTTP_STATE_PUT_RECV && httpGetReady(con->http));
 
-        if (con->http.state == HTTP_STATE_STATUS)
+        if (httpGetState(con->http) == HTTP_STATE_STATUS)
        {
         /*
          * End of file, see how big it is...
@@ -2109,7 +1825,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
            unlink(con->filename);
            cupsdClearString(&con->filename);
 
-            if (!cupsdSendError(con, HTTP_REQUEST_TOO_LARGE, CUPSD_AUTH_NONE))
+            if (!cupsdSendError(con, HTTP_STATUS_REQUEST_TOO_LARGE, CUPSD_AUTH_NONE))
            {
              cupsdCloseClient(con);
              return;
@@ -2143,36 +1859,35 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
            * Grab any request data from the connection...
            */
 
-           if (!httpWait(HTTP(con), 0))
+           if (!httpWait(con->http, 0))
              return;
 
-           if ((ipp_state = ippRead(&(con->http), con->request)) == IPP_ERROR)
+           if ((ipp_state = ippRead(con->http, con->request)) == IPP_STATE_ERROR)
            {
-              cupsdLogMessage(CUPSD_LOG_ERROR,
-                              "[Client %d] IPP read error: %s", con->http.fd,
-                              cupsLastErrorString());
+              cupsdLogClient(con, CUPSD_LOG_ERROR, "IPP read error: %s",
+                             cupsLastErrorString());
 
-             cupsdSendError(con, HTTP_BAD_REQUEST, CUPSD_AUTH_NONE);
+             cupsdSendError(con, HTTP_STATUS_BAD_REQUEST, CUPSD_AUTH_NONE);
              cupsdCloseClient(con);
              return;
            }
-           else if (ipp_state != IPP_DATA)
+           else if (ipp_state != IPP_STATE_DATA)
            {
-              if (con->http.state == HTTP_STATE_POST_SEND)
+              if (httpGetState(con->http) == HTTP_STATE_POST_SEND)
              {
-               cupsdSendError(con, HTTP_BAD_REQUEST, CUPSD_AUTH_NONE);
+               cupsdSendError(con, HTTP_STATUS_BAD_REQUEST, CUPSD_AUTH_NONE);
                cupsdCloseClient(con);
                return;
              }
 
-             if (data_ready(con))
+             if (httpGetReady(con->http))
                continue;
              break;
             }
            else
            {
-             cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] %d.%d %s %d",
-                             con->http.fd, con->request->request.op.version[0],
+             cupsdLogClient(con, CUPSD_LOG_DEBUG, "%d.%d %s %d",
+                             con->request->request.op.version[0],
                              con->request->request.op.version[1],
                              ippOpString(con->request->request.op.operation_id),
                              con->request->request.op.request_id);
@@ -2180,7 +1895,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
            }
          }
 
-          if (con->file < 0 && con->http.state != HTTP_STATE_POST_SEND)
+          if (con->file < 0 && httpGetState(con->http) != HTTP_STATE_POST_SEND)
          {
            /*
            * Create a file as needed for the request data...
@@ -2192,12 +1907,11 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
 
            if (con->file < 0)
            {
-             cupsdLogMessage(CUPSD_LOG_ERROR,
-                             "[Client %d] Unable to create request file "
-                             "\"%s\": %s", con->http.fd, con->filename,
-                             strerror(errno));
+             cupsdLogClient(con, CUPSD_LOG_ERROR,
+                            "Unable to create request file \"%s\": %s",
+                             con->filename, strerror(errno));
 
-             if (!cupsdSendError(con, HTTP_REQUEST_TOO_LARGE, CUPSD_AUTH_NONE))
+             if (!cupsdSendError(con, HTTP_STATUS_REQUEST_TOO_LARGE, CUPSD_AUTH_NONE))
              {
                cupsdCloseClient(con);
                return;
@@ -2209,22 +1923,19 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
             fcntl(con->file, F_SETFD, fcntl(con->file, F_GETFD) | FD_CLOEXEC);
          }
 
-         if (con->http.state != HTTP_STATE_POST_SEND)
+         if (httpGetState(con->http) != HTTP_STATE_POST_SEND)
          {
-           if (!httpWait(HTTP(con), 0))
+           if (!httpWait(con->http, 0))
              return;
-
-            if ((bytes = httpRead2(HTTP(con), line, sizeof(line))) < 0)
+            else if ((bytes = httpRead2(con->http, line, sizeof(line))) < 0)
            {
-             if (con->http.error && con->http.error != EPIPE)
-               cupsdLogMessage(CUPSD_LOG_DEBUG,
-                               "[Client %d] HTTP_STATE_POST_SEND Closing for "
-                               "error %d (%s)", con->http.fd, con->http.error,
-                               strerror(con->http.error));
+             if (httpError(con->http) && httpError(con->http) != EPIPE)
+               cupsdLogClient(con, CUPSD_LOG_DEBUG,
+                              "HTTP_STATE_POST_SEND Closing for error %d (%s)",
+                               httpError(con->http), strerror(httpError(con->http)));
              else
-               cupsdLogMessage(CUPSD_LOG_DEBUG,
-                               "[Client %d] HTTP_STATE_POST_SEND Closing on EOF",
-                               con->http.fd);
+               cupsdLogClient(con, CUPSD_LOG_DEBUG,
+                              "HTTP_STATE_POST_SEND Closing on EOF.");
 
              cupsdCloseClient(con);
              return;
@@ -2233,19 +1944,18 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
            {
              con->bytes += bytes;
 
-              if (write(con->file, line, bytes) < bytes)
+              if (write(con->file, line, (size_t)bytes) < bytes)
              {
-               cupsdLogMessage(CUPSD_LOG_ERROR,
-                               "[Client %d] Unable to write %d bytes to "
-                               "\"%s\": %s", con->http.fd, bytes,
-                               con->filename, strerror(errno));
+               cupsdLogClient(con, CUPSD_LOG_ERROR,
+                              "Unable to write %d bytes to \"%s\": %s",
+                               bytes, con->filename, strerror(errno));
 
                close(con->file);
                con->file = -1;
                unlink(con->filename);
                cupsdClearString(&con->filename);
 
-               if (!cupsdSendError(con, HTTP_REQUEST_TOO_LARGE,
+               if (!cupsdSendError(con, HTTP_STATUS_REQUEST_TOO_LARGE,
                                    CUPSD_AUTH_NONE))
                {
                  cupsdCloseClient(con);
@@ -2253,22 +1963,28 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
                }
              }
            }
-           else if (con->http.state == HTTP_STATE_POST_RECV)
+           else if (httpGetState(con->http) == HTTP_STATE_POST_RECV)
               return;
-           else if (con->http.state != HTTP_STATE_POST_SEND)
+           else if (httpGetState(con->http) != HTTP_STATE_POST_SEND)
            {
-             cupsdLogMessage(CUPSD_LOG_DEBUG,
-                             "[Client %d] Closing on unexpected state %s.",
-                             con->http.fd, http_states[con->http.state + 1]);
+             cupsdLogClient(con, CUPSD_LOG_DEBUG,
+                            "Closing on unexpected state %s.",
+                            httpStateString(httpGetState(con->http)));
              cupsdCloseClient(con);
              return;
            }
          }
         }
-       while (con->http.state == HTTP_STATE_POST_RECV && data_ready(con));
+       while (httpGetState(con->http) == HTTP_STATE_POST_RECV && httpGetReady(con->http));
 
-       if (con->http.state == HTTP_STATE_POST_SEND)
+       if (httpGetState(con->http) == HTTP_STATE_POST_SEND)
        {
+        /*
+         * Don't listen for activity until we decide to do something with this...
+         */
+
+          cupsdAddSelect(httpGetFd(con->http), NULL, NULL, con);
+
          if (con->file >= 0)
          {
            fstat(con->file, &filestats);
@@ -2296,7 +2012,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
                con->request = NULL;
               }
 
-              if (!cupsdSendError(con, HTTP_REQUEST_TOO_LARGE, CUPSD_AUTH_NONE))
+              if (!cupsdSendError(con, HTTP_STATUS_REQUEST_TOO_LARGE, CUPSD_AUTH_NONE))
              {
                cupsdCloseClient(con);
                return;
@@ -2316,14 +2032,14 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
            {
              if (!cupsdSendCommand(con, con->command, con->options, 0))
              {
-               if (!cupsdSendError(con, HTTP_NOT_FOUND, CUPSD_AUTH_NONE))
+               if (!cupsdSendError(con, HTTP_STATUS_NOT_FOUND, CUPSD_AUTH_NONE))
                {
                  cupsdCloseClient(con);
                  return;
                }
               }
              else
-               cupsdLogRequest(con, HTTP_OK);
+               cupsdLogRequest(con, HTTP_STATUS_OK);
             }
          }
 
@@ -2346,13 +2062,12 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
         break; /* Anti-compiler-warning-code */
   }
 
-  if (con->http.state == HTTP_STATE_WAITING)
+  if (httpGetState(con->http) == HTTP_STATE_WAITING)
   {
-    if (!con->http.keep_alive)
+    if (!httpGetKeepAlive(con->http))
     {
-      cupsdLogMessage(CUPSD_LOG_DEBUG,
-                     "[Client %d] Closing because Keep-Alive disabled",
-                     con->http.fd);
+      cupsdLogClient(con, CUPSD_LOG_DEBUG,
+                     "Closing because Keep-Alive is disabled.");
       cupsdCloseClient(con);
     }
     else
@@ -2384,10 +2099,10 @@ cupsdSendCommand(
 
     if (fd < 0)
     {
-      cupsdLogMessage(CUPSD_LOG_ERROR,
-                      "[Client %d] Unable to open \"%s\" for reading: %s",
-                      con->http.fd, con->filename ? con->filename : "/dev/null",
-                     strerror(errno));
+      cupsdLogClient(con, CUPSD_LOG_ERROR,
+                     "Unable to open \"%s\" for reading: %s",
+                     con->filename ? con->filename : "/dev/null",
+                    strerror(errno));
       return (0);
     }
 
@@ -2396,16 +2111,16 @@ cupsdSendCommand(
   else
     fd = -1;
 
-  con->pipe_pid = pipe_command(con, fd, &(con->file), command, options, root);
+  con->pipe_pid    = pipe_command(con, fd, &(con->file), command, options, root);
+  con->pipe_status = HTTP_STATUS_OK;
+
+  httpClearFields(con->http);
 
   if (fd >= 0)
     close(fd);
 
-  cupsdLogMessage(CUPSD_LOG_INFO, "[Client %d] Started \"%s\" (pid=%d)",
-                  con->http.fd, command, con->pipe_pid);
-
-  cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] file=%d", con->http.fd,
-                  con->file);
+  cupsdLogClient(con, CUPSD_LOG_INFO, "Started \"%s\" (pid=%d, file=%d)",
+                 command, con->pipe_pid, con->file);
 
   if (con->pipe_pid == 0)
     return (0);
@@ -2414,8 +2129,7 @@ cupsdSendCommand(
 
   cupsdAddSelect(con->file, (cupsd_selfunc_t)write_pipe, NULL, con);
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] Waiting for CGI data.",
-                 con->http.fd);
+  cupsdLogClient(con, CUPSD_LOG_DEBUG, "Waiting for CGI data.");
 
   con->sent_header = 0;
   con->file_ready  = 0;
@@ -2435,9 +2149,8 @@ cupsdSendError(cupsd_client_t *con,       /* I - Connection */
                http_status_t  code,    /* I - Error code */
               int            auth_type)/* I - Authentication type */
 {
-  cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                  "[Client %d] cupsdSendError code=%d, auth_type=%d",
-                 con->http.fd, code, auth_type);
+  cupsdLogClient(con, CUPSD_LOG_DEBUG2, "cupsdSendError code=%d, auth_type=%d",
+                code, auth_type);
 
 #ifdef HAVE_SSL
  /*
@@ -2445,12 +2158,12 @@ cupsdSendError(cupsd_client_t *con,     /* I - Connection */
   * server is configured...
   */
 
-  if (code == HTTP_UNAUTHORIZED &&
-      DefaultEncryption == HTTP_ENCRYPT_REQUIRED &&
-      _cups_strcasecmp(con->http.hostname, "localhost") &&
-      !con->http.tls)
+  if (code == HTTP_STATUS_UNAUTHORIZED &&
+      DefaultEncryption == HTTP_ENCRYPTION_REQUIRED &&
+      _cups_strcasecmp(httpGetHostname(con->http, NULL, 0), "localhost") &&
+      !httpIsEncrypted(con->http))
   {
-    code = HTTP_UPGRADE_REQUIRED;
+    code = HTTP_STATUS_UPGRADE_REQUIRED;
   }
 #endif /* HAVE_SSL */
 
@@ -2468,34 +2181,16 @@ cupsdSendError(cupsd_client_t *con,     /* I - Connection */
   * never disable it in that case.
   */
 
-  if (code >= HTTP_BAD_REQUEST && con->http.auth_type != CUPSD_AUTH_NEGOTIATE)
-    con->http.keep_alive = HTTP_KEEPALIVE_OFF;
-
- /*
-  * Send an error message back to the client.  If the error code is a
-  * 400 or 500 series, make sure the message contains some text, too!
-  */
+  httpClearFields(con->http);
 
-  if (!cupsdSendHeader(con, code, NULL, auth_type))
-    return (0);
+  if (code >= HTTP_STATUS_BAD_REQUEST && con->type != CUPSD_AUTH_NEGOTIATE)
+    httpSetKeepAlive(con->http, HTTP_KEEPALIVE_OFF);
 
-#ifdef HAVE_SSL
-  if (code == HTTP_UPGRADE_REQUIRED)
-    if (httpPrintf(HTTP(con), "Connection: Upgrade\r\n") < 0)
-      return (0);
+  if (httpGetVersion(con->http) >= HTTP_VERSION_1_1 &&
+      httpGetKeepAlive(con->http) == HTTP_KEEPALIVE_OFF)
+    httpSetField(con->http, HTTP_FIELD_CONNECTION, "close");
 
-  if (httpPrintf(HTTP(con), "Upgrade: TLS/1.2,TLS/1.1,TLS/1.0\r\n") < 0)
-    return (0);
-#endif /* HAVE_SSL */
-
-  if (con->http.version >= HTTP_1_1 &&
-      con->http.keep_alive == HTTP_KEEPALIVE_OFF)
-  {
-    if (httpPrintf(HTTP(con), "Connection: close\r\n") < 0)
-      return (0);
-  }
-
-  if (code >= HTTP_BAD_REQUEST)
+  if (code >= HTTP_STATUS_BAD_REQUEST)
   {
    /*
     * Send a human-readable error message.
@@ -2509,13 +2204,13 @@ cupsdSendError(cupsd_client_t *con,     /* I - Connection */
 
     redirect[0] = '\0';
 
-    if (code == HTTP_UNAUTHORIZED)
+    if (code == HTTP_STATUS_UNAUTHORIZED)
       text = _cupsLangString(con->language,
                              _("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."));
-    else if (code == HTTP_UPGRADE_REQUIRED)
+    else if (code == HTTP_STATUS_UPGRADE_REQUIRED)
     {
       text = urltext;
 
@@ -2532,7 +2227,7 @@ cupsdSendError(cupsd_client_t *con,       /* I - Connection */
               "CONTENT=\"3;URL=https://%s:%d%s\">\n",
               con->servername, con->serverport, con->uri);
     }
-    else if (code == HTTP_WEBIF_DISABLED)
+    else if (code == HTTP_STATUS_CUPS_WEBIF_DISABLED)
       text = _cupsLangString(con->language,
                              _("The web interface is currently disabled. Run "
                               "\"cupsctl WebInterface=yes\" to enable it."));
@@ -2556,27 +2251,34 @@ cupsdSendError(cupsd_client_t *con,     /* I - Connection */
             "<P>%s</P>\n"
             "</BODY>\n"
             "</HTML>\n",
-            httpStatus(code), redirect, httpStatus(code), text);
+            _httpStatus(con->language, code), redirect,
+            _httpStatus(con->language, code), text);
 
-    if (httpPrintf(HTTP(con), "Content-Type: text/html; charset=utf-8\r\n") < 0)
-      return (0);
-    if (httpPrintf(HTTP(con), "Content-Length: %d\r\n",
-                   (int)strlen(message)) < 0)
+   /*
+    * Send an error message back to the client.  If the error code is a
+    * 400 or 500 series, make sure the message contains some text, too!
+    */
+
+    size_t length = strlen(message);   /* Length of message */
+
+    httpSetLength(con->http, length);
+
+    if (!cupsdSendHeader(con, code, "text/html", auth_type))
       return (0);
-    if (httpPrintf(HTTP(con), "\r\n") < 0)
+
+    if (httpWrite2(con->http, message, length) < 0)
       return (0);
-    if (httpPrintf(HTTP(con), "%s", message) < 0)
+
+    if (httpFlushWrite(con->http) < 0)
       return (0);
   }
-  else if (httpPrintf(HTTP(con), "\r\n") < 0)
-    return (0);
-
-  if (cupsdFlushHeader(con) < 0)
-    return (0);
-
-  con->http.state = HTTP_STATE_WAITING;
+  else
+  {
+    httpSetField(con->http, HTTP_FIELD_CONTENT_LENGTH, "0");
 
-  DEBUG_puts("cupsdSendError: Set state to HTTP_STATE_WAITING.");
+    if (!cupsdSendHeader(con, code, NULL, auth_type))
+      return (0);
+  }
 
   return (1);
 }
@@ -2596,54 +2298,29 @@ cupsdSendHeader(
   char         auth_str[1024];         /* Authorization string */
 
 
+  cupsdLogClient(con, CUPSD_LOG_DEBUG, "cupsdSendHeader: code=%d, type=\"%s\", auth_type=%d", code, type, auth_type);
+
  /*
   * Send the HTTP status header...
   */
 
-  if (code == HTTP_CONTINUE)
-  {
-   /*
-    * 100-continue doesn't send any headers...
-    */
-
-    return (httpPrintf(HTTP(con), "HTTP/%d.%d 100 Continue\r\n\r\n",
-                      con->http.version / 100, con->http.version % 100) > 0);
-  }
-  else if (code == HTTP_WEBIF_DISABLED)
+  if (code == HTTP_STATUS_CUPS_WEBIF_DISABLED)
   {
    /*
     * Treat our special "web interface is disabled" status as "200 OK" for web
     * browsers.
     */
 
-    code = HTTP_OK;
+    code = HTTP_STATUS_OK;
   }
 
-  httpFlushWrite(HTTP(con));
-
-  con->http.data_encoding = HTTP_ENCODING_FIELDS;
-
-  if (httpPrintf(HTTP(con), "HTTP/%d.%d %d %s\r\n", con->http.version / 100,
-                 con->http.version % 100, code, httpStatus(code)) < 0)
-    return (0);
-  if (httpPrintf(HTTP(con), "Date: %s\r\n", httpGetDateString(time(NULL))) < 0)
-    return (0);
   if (ServerHeader)
-    if (httpPrintf(HTTP(con), "Server: %s\r\n", ServerHeader) < 0)
-      return (0);
-  if (con->http.keep_alive && con->http.version >= HTTP_1_0)
-  {
-    if (httpPrintf(HTTP(con), "Connection: Keep-Alive\r\n") < 0)
-      return (0);
-    if (httpPrintf(HTTP(con), "Keep-Alive: timeout=%d\r\n",
-                   KeepAliveTimeout) < 0)
-      return (0);
-  }
-  if (code == HTTP_METHOD_NOT_ALLOWED)
-    if (httpPrintf(HTTP(con), "Allow: GET, HEAD, OPTIONS, POST, PUT\r\n") < 0)
-      return (0);
+    httpSetField(con->http, HTTP_FIELD_SERVER, ServerHeader);
+
+  if (code == HTTP_STATUS_METHOD_NOT_ALLOWED)
+    httpSetField(con->http, HTTP_FIELD_ALLOW, "GET, HEAD, OPTIONS, POST, PUT");
 
-  if (code == HTTP_UNAUTHORIZED)
+  if (code == HTTP_STATUS_UNAUTHORIZED)
   {
     if (auth_type == CUPSD_AUTH_NONE)
     {
@@ -2655,16 +2332,13 @@ cupsdSendHeader(
 
     auth_str[0] = '\0';
 
-    if (auth_type == CUPSD_AUTH_BASIC || auth_type == CUPSD_AUTH_BASICDIGEST)
+    if (auth_type == CUPSD_AUTH_BASIC)
       strlcpy(auth_str, "Basic realm=\"CUPS\"", sizeof(auth_str));
-    else if (auth_type == CUPSD_AUTH_DIGEST)
-      snprintf(auth_str, sizeof(auth_str), "Digest realm=\"CUPS\", nonce=\"%s\"",
-              con->http.hostname);
 #ifdef HAVE_GSSAPI
     else if (auth_type == CUPSD_AUTH_NEGOTIATE)
     {
 #  ifdef AF_LOCAL
-      if (_httpAddrFamily(con->http.hostaddr) == AF_LOCAL)
+      if (httpAddrFamily(httpGetAddress(con->http)) == AF_LOCAL)
         strlcpy(auth_str, "Basic realm=\"CUPS\"", sizeof(auth_str));
       else
 #  endif /* AF_LOCAL */
@@ -2673,7 +2347,7 @@ cupsdSendHeader(
 #endif /* HAVE_GSSAPI */
 
     if (con->best && auth_type != CUPSD_AUTH_NEGOTIATE &&
-        !_cups_strcasecmp(con->http.hostname, "localhost"))
+        !_cups_strcasecmp(httpGetHostname(con->http, NULL, 0), "localhost"))
     {
      /*
       * Add a "trc" (try root certification) parameter for local non-Kerberos
@@ -2689,7 +2363,7 @@ cupsdSendHeader(
       size_t   auth_size;              /* Size of remaining buffer */
 
       auth_key  = auth_str + strlen(auth_str);
-      auth_size = sizeof(auth_str) - (auth_key - auth_str);
+      auth_size = sizeof(auth_str) - (size_t)(auth_key - auth_str);
 
       for (name = (char *)cupsArrayFirst(con->best->names);
            name;
@@ -2722,35 +2396,24 @@ cupsdSendHeader(
 
     if (auth_str[0])
     {
-      cupsdLogMessage(CUPSD_LOG_DEBUG,
-                      "[Client %d] WWW-Authenticate: %s", con->http.fd,
-                      auth_str);
+      cupsdLogClient(con, CUPSD_LOG_DEBUG, "WWW-Authenticate: %s", auth_str);
 
-      if (httpPrintf(HTTP(con), "WWW-Authenticate: %s\r\n", auth_str) < 0)
-        return (0);
+      httpSetField(con->http, HTTP_FIELD_WWW_AUTHENTICATE, auth_str);
     }
   }
 
   if (con->language && strcmp(con->language->language, "C"))
-  {
-    if (httpPrintf(HTTP(con), "Content-Language: %s\r\n",
-                   con->language->language) < 0)
-      return (0);
-  }
+    httpSetField(con->http, HTTP_FIELD_CONTENT_LANGUAGE, con->language->language);
 
   if (type)
   {
     if (!strcmp(type, "text/html"))
-    {
-      if (httpPrintf(HTTP(con),
-                     "Content-Type: text/html; charset=utf-8\r\n") < 0)
-        return (0);
-    }
-    else if (httpPrintf(HTTP(con), "Content-Type: %s\r\n", type) < 0)
-      return (0);
+      httpSetField(con->http, HTTP_FIELD_CONTENT_TYPE, "text/html; charset=utf-8");
+    else
+      httpSetField(con->http, HTTP_FIELD_CONTENT_TYPE, type);
   }
 
-  return (1);
+  return (!httpWriteResponse(con->http, code));
 }
 
 
@@ -2803,36 +2466,35 @@ cupsdWriteClient(cupsd_client_t *con)   /* I - Client connection */
   ipp_state_t  ipp_state;              /* IPP state value */
 
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG,
-                 "[Client %d] cupsdWriteClient "
-                 "error=%d, "
-                 "used=%d, "
-                 "state=%s, "
-                 "data_encoding=HTTP_ENCODING_%s, "
-                 "data_remaining=" CUPS_LLFMT ", "
-                 "response=%p(%s), "
-                 "pipe_pid=%d, "
-                 "file=%d",
-                 con->http.fd, con->http.error, con->http.used,
-                 http_states[con->http.state + 1],
-                 con->http.data_encoding == HTTP_ENCODING_CHUNKED ?
-                     "CHUNKED" : "LENGTH",
-                 CUPS_LLCAST con->http.data_remaining,
-                 con->response,
-                 con->response ? ipp_states[con->response->state] : "",
-                 con->pipe_pid, con->file);
-
-  if (con->http.state != HTTP_STATE_GET_SEND &&
-      con->http.state != HTTP_STATE_POST_SEND)
+  cupsdLogClient(con, CUPSD_LOG_DEBUG, "con->http=%p", con->http);
+  cupsdLogClient(con, CUPSD_LOG_DEBUG,
+                "cupsdWriteClient "
+                "error=%d, "
+                "used=%d, "
+                "state=%s, "
+                "data_encoding=HTTP_ENCODING_%s, "
+                "data_remaining=" CUPS_LLFMT ", "
+                "response=%p(%s), "
+                "pipe_pid=%d, "
+                "file=%d",
+                httpError(con->http), (int)httpGetReady(con->http),
+                httpStateString(httpGetState(con->http)),
+                httpIsChunked(con->http) ? "CHUNKED" : "LENGTH",
+                CUPS_LLCAST httpGetLength2(con->http),
+                con->response,
+                con->response ? ippStateString(ippGetState(con->request)) : "",
+                con->pipe_pid, con->file);
+
+  if (httpGetState(con->http) != HTTP_STATE_GET_SEND &&
+      httpGetState(con->http) != HTTP_STATE_POST_SEND)
   {
    /*
     * If we get called in the wrong state, then something went wrong with the
     * connection and we need to shut it down...
     */
 
-    cupsdLogMessage(CUPSD_LOG_DEBUG,
-                   "[Client %d] Closing on unexpected HTTP state %s.",
-                   con->http.fd, http_states[con->http.state + 1]);
+    cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing on unexpected HTTP write state %s.",
+                  httpStateString(httpGetState(con->http)));
     cupsdCloseClient(con);
     return;
   }
@@ -2845,8 +2507,7 @@ cupsdWriteClient(cupsd_client_t *con)     /* I - Client connection */
 
     cupsdAddSelect(con->file, (cupsd_selfunc_t)write_pipe, NULL, con);
 
-    cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] Waiting for CGI data.",
-                   con->http.fd);
+    cupsdLogClient(con, CUPSD_LOG_DEBUG, "Waiting for CGI data.");
 
     if (!con->file_ready)
     {
@@ -2854,7 +2515,7 @@ cupsdWriteClient(cupsd_client_t *con)     /* I - Client connection */
       * Try again later when there is CGI output available...
       */
 
-      cupsdRemoveSelect(con->http.fd);
+      cupsdRemoveSelect(httpGetFd(con->http));
       return;
     }
 
@@ -2863,18 +2524,18 @@ cupsdWriteClient(cupsd_client_t *con)   /* I - Client connection */
 
   bytes = (ssize_t)(sizeof(con->header) - (size_t)con->header_used);
 
-  if (!con->pipe_pid && bytes > con->http.data_remaining)
+  if (!con->pipe_pid && bytes > (ssize_t)httpGetRemaining(con->http))
   {
    /*
     * Limit GET bytes to original size of file (STR #3265)...
     */
 
-    bytes = (ssize_t)con->http.data_remaining;
+    bytes = (ssize_t)httpGetRemaining(con->http);
   }
 
-  if (con->response && con->response->state != IPP_DATA)
+  if (con->response && con->response->state != IPP_STATE_DATA)
   {
-    int wused = con->http.wused;       /* Previous write buffer use */
+    size_t wused = httpGetPending(con->http);  /* Previous write buffer use */
 
     do
     {
@@ -2882,37 +2543,33 @@ cupsdWriteClient(cupsd_client_t *con)   /* I - Client connection */
       * Write a single attribute or the IPP message header...
       */
 
-      ipp_state = ippWrite(HTTP(con), con->response);
+      ipp_state = ippWrite(con->http, con->response);
 
      /*
       * If the write buffer has been flushed, stop buffering up attributes...
       */
 
-      if (con->http.wused <= wused)
+      if (httpGetPending(con->http) <= wused)
         break;
     }
     while (ipp_state != IPP_STATE_DATA && ipp_state != IPP_STATE_ERROR);
 
-    cupsdLogMessage(CUPSD_LOG_DEBUG,
-                    "[Client %d] Writing IPP response, ipp_state=%s, old "
-                    "wused=%d, new wused=%d", con->http.fd,
-                    ipp_state == IPP_STATE_ERROR ? "ERROR" :
-                       ipp_state == IPP_STATE_IDLE ? "IDLE" :
-                       ipp_state == IPP_STATE_HEADER ? "HEADER" :
-                       ipp_state == IPP_STATE_ATTRIBUTE ? "ATTRIBUTE" : "DATA",
-                   wused, con->http.wused);
+    cupsdLogClient(con, CUPSD_LOG_DEBUG,
+                   "Writing IPP response, ipp_state=%s, old "
+                   "wused=" CUPS_LLFMT ", new wused=" CUPS_LLFMT,
+                   ippStateString(ipp_state),
+                  CUPS_LLCAST wused, CUPS_LLCAST httpGetPending(con->http));
 
-    if (con->http.wused > 0)
-      httpFlushWrite(HTTP(con));
+    if (httpGetPending(con->http) > 0)
+      httpFlushWrite(con->http);
 
     bytes = ipp_state != IPP_STATE_ERROR &&
            (con->file >= 0 || ipp_state != IPP_STATE_DATA);
 
-    cupsdLogMessage(CUPSD_LOG_DEBUG,
-                    "[Client %d] bytes=%d, http_state=%d, "
-                    "data_remaining=" CUPS_LLFMT,
-                    con->http.fd, (int)bytes, con->http.state,
-                    CUPS_LLCAST con->http.data_remaining);
+    cupsdLogClient(con, CUPSD_LOG_DEBUG,
+                   "bytes=%d, http_state=%d, data_remaining=" CUPS_LLFMT,
+                   (int)bytes, httpGetState(con->http),
+                   CUPS_LLCAST httpGetLength2(con->http));
   }
   else if ((bytes = read(con->file, con->header + con->header_used, (size_t)bytes)) > 0)
   {
@@ -2939,7 +2596,7 @@ cupsdWriteClient(cupsd_client_t *con)     /* I - Client connection */
            bufptr[-1] = '\0';
          *bufptr++ = '\0';
 
-          cupsdLogMessage(CUPSD_LOG_DEBUG, "Script header: %s", con->header);
+          cupsdLogClient(con, CUPSD_LOG_DEBUG, "Script header: %s", con->header);
 
           if (!con->sent_header)
          {
@@ -2947,46 +2604,43 @@ cupsdWriteClient(cupsd_client_t *con)   /* I - Client connection */
            * Handle redirection and CGI status codes...
            */
 
-            if (!_cups_strncasecmp(con->header, "Location:", 9))
+           http_field_t field;         /* HTTP field */
+           char        *value = strchr(con->header, ':');
+                                       /* Value of field */
+
+           if (value)
            {
-             if (!cupsdSendHeader(con, HTTP_SEE_OTHER, NULL, CUPSD_AUTH_NONE))
-             {
-               cupsdCloseClient(con);
-               return;
-             }
+             *value++ = '\0';
+             while (isspace(*value & 255))
+               value ++;
+           }
 
-             con->sent_header = 2;
+           field = httpFieldValue(con->header);
 
-             if (httpPrintf(HTTP(con), "Content-Length: 0\r\n") < 0)
-               return;
+           if (field != HTTP_FIELD_UNKNOWN && value)
+           {
+             httpSetField(con->http, field, value);
+
+             if (field == HTTP_FIELD_LOCATION)
+             {
+               con->pipe_status = HTTP_STATUS_SEE_OTHER;
+               con->sent_header = 2;
+             }
+             else
+               con->sent_header = 1;
            }
-           else if (!_cups_strncasecmp(con->header, "Status:", 7))
+           else if (!_cups_strcasecmp(con->header, "Status") && value)
            {
-             cupsdSendError(con, (http_status_t)atoi(con->header + 7),
-                            CUPSD_AUTH_NONE);
+             con->pipe_status = (http_status_t)atoi(value);
              con->sent_header = 2;
            }
-           else
+           else if (!_cups_strcasecmp(con->header, "Set-Cookie") && value)
            {
-             if (!cupsdSendHeader(con, HTTP_OK, NULL, CUPSD_AUTH_NONE))
-             {
-               cupsdCloseClient(con);
-               return;
-             }
-
+             httpSetCookie(con->http, value);
              con->sent_header = 1;
-
-             if (con->http.version == HTTP_1_1)
-             {
-               if (httpPrintf(HTTP(con), "Transfer-Encoding: chunked\r\n") < 0)
-                 return;
-             }
-            }
+           }
          }
 
-         if (_cups_strncasecmp(con->header, "Status:", 7))
-           httpPrintf(HTTP(con), "%s\r\n", con->header);
-
          /*
          * Update buffer...
          */
@@ -2994,7 +2648,7 @@ cupsdWriteClient(cupsd_client_t *con)     /* I - Client connection */
          con->header_used -= bufptr - con->header;
 
          if (con->header_used > 0)
-           memmove(con->header, bufptr, con->header_used);
+           memmove(con->header, bufptr, (size_t)con->header_used);
 
          bufptr = con->header - 1;
 
@@ -3006,14 +2660,28 @@ cupsdWriteClient(cupsd_client_t *con)   /* I - Client connection */
          {
            con->got_fields = 1;
 
-            if (cupsdFlushHeader(con) < 0)
+           if (httpGetVersion(con->http) == HTTP_VERSION_1_1 &&
+               !httpGetField(con->http, HTTP_FIELD_CONTENT_LENGTH)[0])
+             httpSetLength(con->http, 0);
+
+            cupsdLogClient(con, CUPSD_LOG_DEBUG, "Sending status %d for CGI.", con->pipe_status);
+
+            if (con->pipe_status == HTTP_STATUS_OK)
            {
-             cupsdCloseClient(con);
-             return;
+             if (!cupsdSendHeader(con, con->pipe_status, NULL, CUPSD_AUTH_NONE))
+             {
+               cupsdCloseClient(con);
+               return;
+             }
+           }
+           else
+           {
+             if (!cupsdSendError(con, con->pipe_status, CUPSD_AUTH_NONE))
+             {
+               cupsdCloseClient(con);
+               return;
+             }
            }
-
-           if (con->http.version == HTTP_1_1)
-             con->http.data_encoding = HTTP_ENCODING_CHUNKED;
           }
          else
            field_col = 0;
@@ -3023,30 +2691,25 @@ cupsdWriteClient(cupsd_client_t *con)   /* I - Client connection */
       }
 
       if (!con->got_fields)
-      {
-        con->http.activity = time(NULL);
         return;
-      }
     }
 
     if (con->header_used > 0)
     {
-      if (httpWrite2(HTTP(con), con->header, con->header_used) < 0)
+      if (httpWrite2(con->http, con->header, (size_t)con->header_used) < 0)
       {
-       cupsdLogMessage(CUPSD_LOG_DEBUG,
-                       "[Client %d] Closing for error %d (%s)",
-                       con->http.fd, con->http.error,
-                       strerror(con->http.error));
+       cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing for error %d (%s)",
+                      httpError(con->http), strerror(httpError(con->http)));
        cupsdCloseClient(con);
        return;
       }
 
-      if (con->http.data_encoding == HTTP_ENCODING_CHUNKED)
-        httpFlushWrite(HTTP(con));
+      if (httpIsChunked(con->http))
+        httpFlushWrite(con->http);
 
       con->bytes += con->header_used;
 
-      if (con->http.state == HTTP_STATE_WAITING)
+      if (httpGetState(con->http) == HTTP_STATE_WAITING)
        bytes = 0;
       else
         bytes = con->header_used;
@@ -3056,38 +2719,36 @@ cupsdWriteClient(cupsd_client_t *con)   /* I - Client connection */
   }
 
   if (bytes <= 0 ||
-      (con->http.state != HTTP_STATE_GET_SEND &&
-       con->http.state != HTTP_STATE_POST_SEND))
+      (httpGetState(con->http) != HTTP_STATE_GET_SEND &&
+       httpGetState(con->http) != HTTP_STATE_POST_SEND))
   {
     if (!con->sent_header && con->pipe_pid)
-      cupsdSendError(con, HTTP_SERVER_ERROR, CUPSD_AUTH_NONE);
+      cupsdSendError(con, HTTP_STATUS_SERVER_ERROR, CUPSD_AUTH_NONE);
     else
     {
-      cupsdLogRequest(con, HTTP_OK);
+      cupsdLogRequest(con, HTTP_STATUS_OK);
 
-      httpFlushWrite(HTTP(con));
-
-      if (con->http.data_encoding == HTTP_ENCODING_CHUNKED &&
-          con->sent_header == 1)
+      if (httpIsChunked(con->http) && (!con->pipe_pid || con->sent_header > 0))
       {
-       if (httpWrite2(HTTP(con), "", 0) < 0)
+        cupsdLogClient(con, CUPSD_LOG_DEBUG, "Sending 0-length chunk.");
+
+       if (httpWrite2(con->http, "", 0) < 0)
        {
-         cupsdLogMessage(CUPSD_LOG_DEBUG,
-                         "[Client %d] Closing for error %d (%s)",
-                         con->http.fd, con->http.error,
-                         strerror(con->http.error));
+         cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing for error %d (%s)",
+                        httpError(con->http), strerror(httpError(con->http)));
          cupsdCloseClient(con);
          return;
        }
       }
-    }
 
-    con->http.state = HTTP_STATE_WAITING;
+      cupsdLogClient(con, CUPSD_LOG_DEBUG, "Flushing write buffer.");
+      httpFlushWrite(con->http);
+      cupsdLogClient(con, CUPSD_LOG_DEBUG, "New state is %s", httpStateString(httpGetState(con->http)));
+    }
 
-    cupsdAddSelect(con->http.fd, (cupsd_selfunc_t)cupsdReadClient, NULL, con);
+    cupsdAddSelect(httpGetFd(con->http), (cupsd_selfunc_t)cupsdReadClient, NULL, con);
 
-    cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] Waiting for request.",
-                    con->http.fd);
+    cupsdLogClient(con, CUPSD_LOG_DEBUG, "Waiting for request.");
 
     if (con->file >= 0)
     {
@@ -3123,11 +2784,10 @@ cupsdWriteClient(cupsd_client_t *con)   /* I - Client connection */
     cupsdClearString(&con->options);
     cupsdClearString(&con->query_string);
 
-    if (!con->http.keep_alive)
+    if (!httpGetKeepAlive(con->http))
     {
-      cupsdLogMessage(CUPSD_LOG_DEBUG,
-                     "[Client %d] Closing because Keep-Alive disabled.",
-                     con->http.fd);
+      cupsdLogClient(con, CUPSD_LOG_DEBUG,
+                    "Closing because Keep-Alive is disabled.");
       cupsdCloseClient(con);
       return;
     }
@@ -3137,8 +2797,6 @@ cupsdWriteClient(cupsd_client_t *con)     /* I - Client connection */
       cupsdSetBusyState();
     }
   }
-
-  con->http.activity = time(NULL);
 }
 
 
@@ -3151,23 +2809,23 @@ check_if_modified(
     cupsd_client_t *con,               /* I - Client connection */
     struct stat    *filestats)         /* I - File information */
 {
-  char         *ptr;                   /* Pointer into field */
+  const char   *ptr;                   /* Pointer into field */
   time_t       date;                   /* Time/date value */
   off_t                size;                   /* Size/length value */
 
 
   size = 0;
   date = 0;
-  ptr  = con->http.fields[HTTP_FIELD_IF_MODIFIED_SINCE];
+  ptr  = httpGetField(con->http, HTTP_FIELD_IF_MODIFIED_SINCE);
 
   if (*ptr == '\0')
     return (1);
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                  "[Client %d] check_if_modified "
-                 "filestats=%p(" CUPS_LLFMT ", %d)) If-Modified-Since=\"%s\"",
-                  con->http.fd, filestats, CUPS_LLCAST filestats->st_size,
-                 (int)filestats->st_mtime, ptr);
+  cupsdLogClient(con, CUPSD_LOG_DEBUG2,
+                 "check_if_modified "
+                "filestats=%p(" CUPS_LLFMT ", %d)) If-Modified-Since=\"%s\"",
+                 filestats, CUPS_LLCAST filestats->st_size,
+                (int)filestats->st_mtime, ptr);
 
   while (*ptr != '\0')
   {
@@ -3218,35 +2876,26 @@ compare_clients(cupsd_client_t *a,      /* I - First client */
 }
 
 
+#ifdef HAVE_SSL
 /*
- * 'data_ready()' - Check whether data is available from a client.
+ * 'cupsd_start_tls()' - Start encryption on a connection.
  */
 
-static int                             /* O - 1 if data is ready, 0 otherwise */
-data_ready(cupsd_client_t *con)                /* I - Client */
+static int                             /* O - 0 on success, -1 on error */
+cupsd_start_tls(cupsd_client_t    *con,        /* I - Client connection */
+                http_encryption_t e)   /* I - Encryption mode */
 {
-  if (con->http.used > 0)
-    return (1);
-#ifdef HAVE_SSL
-  else if (con->http.tls)
+  if (httpEncryption(con->http, e))
   {
-#  ifdef HAVE_LIBSSL
-    if (SSL_pending((SSL *)(con->http.tls)))
-      return (1);
-#  elif defined(HAVE_GNUTLS)
-    if (gnutls_record_check_pending(con->http.tls))
-      return (1);
-#  elif defined(HAVE_CDSASSL)
-    size_t bytes;                      /* Bytes that are available */
-
-    if (!SSLGetBufferedReadSize(con->http.tls, &bytes) && bytes > 0)
-      return (1);
-#  endif /* HAVE_LIBSSL */
+    cupsdLogClient(con, CUPSD_LOG_ERROR, "Unable to encrypt connection: %s",
+                   cupsLastErrorString());
+    return (-1);
   }
-#endif /* HAVE_SSL */
 
+  cupsdLogClient(con, CUPSD_LOG_INFO, "Connection now encrypted.");
   return (0);
 }
+#endif /* HAVE_SSL */
 
 
 /*
@@ -3257,11 +2906,11 @@ static char *                           /* O  - Real filename */
 get_file(cupsd_client_t *con,          /* I  - Client connection */
          struct stat    *filestats,    /* O  - File information */
          char           *filename,     /* IO - Filename buffer */
-         int            len)           /* I  - Buffer length */
+         size_t         len)           /* I  - Buffer length */
 {
   int          status;                 /* Status of filesystem calls */
   char         *ptr;                   /* Pointer info filename */
-  int          plen;                   /* Remaining length after pointer */
+  size_t       plen;                   /* Remaining length after pointer */
   char         language[7];            /* Language subdirectory, if any */
 
 
@@ -3349,7 +2998,7 @@ get_file(cupsd_client_t *con,             /* I  - Client connection */
 
   if (!status && S_ISLNK(filestats->st_mode))
   {
-    cupsdLogMessage(CUPSD_LOG_INFO, "[Client %d] Symlinks such as \"%s\" are not allowed.", con->http.fd, filename);
+    cupsdLogClient(con, CUPSD_LOG_INFO, "Symlinks such as \"%s\" are not allowed.", filename);
     return (NULL);
   }
 
@@ -3360,7 +3009,7 @@ get_file(cupsd_client_t *con,             /* I  - Client connection */
 
   if (!status && !(filestats->st_mode & S_IROTH))
   {
-    cupsdLogMessage(CUPSD_LOG_INFO, "[Client %d] Files/directories such as \"%s\" must be world-readable.", con->http.fd, filename);
+    cupsdLogClient(con, CUPSD_LOG_INFO, "Files/directories such as \"%s\" must be world-readable.", filename);
     return (NULL);
   }
 
@@ -3405,7 +3054,7 @@ get_file(cupsd_client_t *con,             /* I  - Client connection */
        *ptr = '\0';
 
       ptr  = filename + strlen(filename);
-      plen = len - (ptr - filename);
+      plen = len - (size_t)(ptr - filename);
 
       strlcpy(ptr, "index.html", plen);
       status = lstat(filename, filestats);
@@ -3457,7 +3106,7 @@ get_file(cupsd_client_t *con,             /* I  - Client connection */
 
     if (!status && S_ISLNK(filestats->st_mode))
     {
-      cupsdLogMessage(CUPSD_LOG_INFO, "[Client %d] Symlinks such as \"%s\" are not allowed.", con->http.fd, filename);
+      cupsdLogClient(con, CUPSD_LOG_INFO, "Symlinks such as \"%s\" are not allowed.", filename);
       return (NULL);
     }
 
@@ -3468,15 +3117,12 @@ get_file(cupsd_client_t *con,           /* I  - Client connection */
 
     if (!status && !(filestats->st_mode & S_IROTH))
     {
-      cupsdLogMessage(CUPSD_LOG_INFO, "[Client %d] Files/directories such as \"%s\" must be world-readable.", con->http.fd, filename);
+      cupsdLogClient(con, CUPSD_LOG_INFO, "Files/directories such as \"%s\" must be world-readable.", filename);
       return (NULL);
     }
   }
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                  "[Client %d] get_file filestats=%p, filename=%p, len=%d, "
-                 "returning \"%s\".", con->http.fd, filestats, filename, len,
-                 status ? "(null)" : filename);
+  cupsdLogClient(con, CUPSD_LOG_DEBUG2, "get_file filestats=%p, filename=%p, len=" CUPS_LLFMT ", returning \"%s\".", filestats, filename, CUPS_LLCAST len, status ? "(null)" : filename);
 
   if (status)
     return (NULL);
@@ -3505,9 +3151,9 @@ install_cupsd_conf(cupsd_client_t *con)   /* I - Connection */
 
   if ((in = cupsFileOpen(con->filename, "rb")) == NULL)
   {
-    cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to open request file \"%s\": %s",
+    cupsdLogClient(con, CUPSD_LOG_ERROR, "Unable to open request file \"%s\": %s",
                     con->filename, strerror(errno));
-    return (HTTP_SERVER_ERROR);
+    return (HTTP_STATUS_SERVER_ERROR);
   }
 
  /*
@@ -3517,10 +3163,10 @@ install_cupsd_conf(cupsd_client_t *con) /* I - Connection */
   if ((out = cupsdCreateConfFile(ConfigurationFile, ConfigFilePerm)) == NULL)
   {
     cupsFileClose(in);
-    return (HTTP_SERVER_ERROR);
+    return (HTTP_STATUS_SERVER_ERROR);
   }
 
-  cupsdLogMessage(CUPSD_LOG_INFO, "Installing config file \"%s\"...",
+  cupsdLogClient(con, CUPSD_LOG_INFO, "Installing config file \"%s\"...",
                   ConfigurationFile);
 
  /*
@@ -3528,9 +3174,9 @@ install_cupsd_conf(cupsd_client_t *con)   /* I - Connection */
   */
 
   while ((bytes = cupsFileRead(in, buffer, sizeof(buffer))) > 0)
-    if (cupsFileWrite(out, buffer, bytes) < bytes)
+    if (cupsFileWrite(out, buffer, (size_t)bytes) < bytes)
     {
-      cupsdLogMessage(CUPSD_LOG_ERROR,
+      cupsdLogClient(con, CUPSD_LOG_ERROR,
                       "Unable to copy to config file \"%s\": %s",
                      ConfigurationFile, strerror(errno));
 
@@ -3540,7 +3186,7 @@ install_cupsd_conf(cupsd_client_t *con)   /* I - Connection */
       snprintf(filename, sizeof(filename), "%s.N", ConfigurationFile);
       cupsdUnlinkOrRemoveFile(filename);
 
-      return (HTTP_SERVER_ERROR);
+      return (HTTP_STATUS_SERVER_ERROR);
     }
 
  /*
@@ -3550,7 +3196,7 @@ install_cupsd_conf(cupsd_client_t *con)   /* I - Connection */
   cupsFileClose(in);
 
   if (cupsdCloseCreatedConfFile(out, ConfigurationFile))
-    return (HTTP_SERVER_ERROR);
+    return (HTTP_STATUS_SERVER_ERROR);
 
  /*
   * Remove the request file...
@@ -3570,7 +3216,7 @@ install_cupsd_conf(cupsd_client_t *con)   /* I - Connection */
   * Return that the file was created successfully...
   */
 
-  return (HTTP_CREATED);
+  return (HTTP_STATUS_CREATED);
 }
 
 
@@ -3603,11 +3249,11 @@ is_cgi(cupsd_client_t *con,             /* I - Client connection */
 
   if (!type || _cups_strcasecmp(type->super, "application"))
   {
-    cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                   "[Client %d] is_cgi filename=\"%s\", filestats=%p, "
-                   "type=%s/%s, returning 0", con->http.fd, filename,
-                   filestats, type ? type->super : "unknown",
-                   type ? type->type : "unknown");
+    cupsdLogClient(con, CUPSD_LOG_DEBUG2,
+                  "is_cgi filename=\"%s\", filestats=%p, "
+                  "type=%s/%s, returning 0", filename,
+                  filestats, type ? type->super : "unknown",
+                  type ? type->type : "unknown");
     return (0);
   }
 
@@ -3623,10 +3269,10 @@ is_cgi(cupsd_client_t *con,             /* I - Client connection */
     if (options)
       cupsdSetStringf(&con->options, " %s", options);
 
-    cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                   "[Client %d] is_cgi filename=\"%s\", filestats=%p, "
-                   "type=%s/%s, returning 1", con->http.fd, filename,
-                   filestats, type->super, type->type);
+    cupsdLogClient(con, CUPSD_LOG_DEBUG2,
+                  "is_cgi filename=\"%s\", filestats=%p, "
+                  "type=%s/%s, returning 1", filename,
+                  filestats, type->super, type->type);
     return (1);
   }
 #ifdef HAVE_JAVA
@@ -3643,10 +3289,10 @@ is_cgi(cupsd_client_t *con,             /* I - Client connection */
     else
       cupsdSetStringf(&con->options, " %s", filename);
 
-    cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                   "[Client %d] is_cgi filename=\"%s\", filestats=%p, "
-                   "type=%s/%s, returning 1", con->http.fd, filename,
-                   filestats, type->super, type->type);
+    cupsdLogClient(con, CUPSD_LOG_DEBUG2,
+                  "is_cgi filename=\"%s\", filestats=%p, "
+                  "type=%s/%s, returning 1", filename,
+                  filestats, type->super, type->type);
     return (1);
   }
 #endif /* HAVE_JAVA */
@@ -3664,10 +3310,10 @@ is_cgi(cupsd_client_t *con,             /* I - Client connection */
     else
       cupsdSetStringf(&con->options, " %s", filename);
 
-    cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                   "[Client %d] is_cgi filename=\"%s\", filestats=%p, "
-                   "type=%s/%s, returning 1", con->http.fd, filename,
-                   filestats, type->super, type->type);
+    cupsdLogClient(con, CUPSD_LOG_DEBUG2,
+                  "is_cgi filename=\"%s\", filestats=%p, "
+                  "type=%s/%s, returning 1", filename,
+                  filestats, type->super, type->type);
     return (1);
   }
 #endif /* HAVE_PERL */
@@ -3685,10 +3331,10 @@ is_cgi(cupsd_client_t *con,             /* I - Client connection */
     else
       cupsdSetStringf(&con->options, " %s", filename);
 
-    cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                   "[Client %d] is_cgi filename=\"%s\", filestats=%p, "
-                   "type=%s/%s, returning 1", con->http.fd, filename,
-                   filestats, type->super, type->type);
+    cupsdLogClient(con, CUPSD_LOG_DEBUG2,
+                  "is_cgi filename=\"%s\", filestats=%p, "
+                  "type=%s/%s, returning 1", filename,
+                  filestats, type->super, type->type);
     return (1);
   }
 #endif /* HAVE_PHP */
@@ -3706,18 +3352,18 @@ is_cgi(cupsd_client_t *con,             /* I - Client connection */
     else
       cupsdSetStringf(&con->options, " %s", filename);
 
-    cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                   "[Client %d] is_cgi filename=\"%s\", filestats=%p, "
-                   "type=%s/%s, returning 1", con->http.fd, filename,
-                   filestats, type->super, type->type);
+    cupsdLogClient(con, CUPSD_LOG_DEBUG2,
+                  "is_cgi filename=\"%s\", filestats=%p, "
+                  "type=%s/%s, returning 1", filename,
+                  filestats, type->super, type->type);
     return (1);
   }
 #endif /* HAVE_PYTHON */
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                 "[Client %d] is_cgi filename=\"%s\", filestats=%p, "
-                 "type=%s/%s, returning 0", con->http.fd, filename,
-                 filestats, type->super, type->type);
+  cupsdLogClient(con, CUPSD_LOG_DEBUG2,
+                "is_cgi filename=\"%s\", filestats=%p, "
+                "type=%s/%s, returning 0", filename,
+                filestats, type->super, type->type);
   return (0);
 }
 
@@ -3824,11 +3470,11 @@ pipe_command(cupsd_client_t *con,       /* I - Client connection */
   * be consistent with Apache...
   */
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                  "[Client %d] pipe_command infile=%d, outfile=%p, "
-                 "command=\"%s\", options=\"%s\", root=%d",
-                  con->http.fd, infile, outfile, command,
-                 options ? options : "(null)", root);
+  cupsdLogClient(con, CUPSD_LOG_DEBUG2,
+                 "pipe_command infile=%d, outfile=%p, "
+                "command=\"%s\", options=\"%s\", root=%d",
+                 infile, outfile, command,
+                options ? options : "(null)", root);
 
   argv[0] = command;
 
@@ -3903,9 +3549,9 @@ pipe_command(cupsd_client_t *con, /* I - Client connection */
        */
 
        if (commptr[1] >= '0' && commptr[1] <= '9')
-          *commptr = (commptr[1] - '0') << 4;
+          *commptr = (char)((commptr[1] - '0') << 4);
        else
-          *commptr = (tolower(commptr[1]) - 'a' + 10) << 4;
+          *commptr = (char)((tolower(commptr[1]) - 'a' + 10) << 4);
 
        if (commptr[2] >= '0' && commptr[2] <= '9')
           *commptr |= commptr[2] - '0';
@@ -3933,7 +3579,7 @@ pipe_command(cupsd_client_t *con, /* I - Client connection */
   if (con->username[0])
   {
     snprintf(auth_type, sizeof(auth_type), "AUTH_TYPE=%s",
-             httpGetField(HTTP(con), HTTP_FIELD_AUTHORIZATION));
+             httpGetField(con->http, HTTP_FIELD_AUTHORIZATION));
 
     if ((uriptr = strchr(auth_type + 10, ' ')) != NULL)
       *uriptr = '\0';
@@ -3984,11 +3630,11 @@ pipe_command(cupsd_client_t *con,       /* I - Client connection */
     strlcpy(lang, "LANG=C", sizeof(lang));
 
   strlcpy(remote_addr, "REMOTE_ADDR=", sizeof(remote_addr));
-  httpAddrString(con->http.hostaddr, remote_addr + 12,
+  httpAddrString(httpGetAddress(con->http), remote_addr + 12,
                  sizeof(remote_addr) - 12);
 
   snprintf(remote_host, sizeof(remote_host), "REMOTE_HOST=%s",
-           con->http.hostname);
+           httpGetHostname(con->http, NULL, 0));
 
   snprintf(script_name, sizeof(script_name), "SCRIPT_NAME=%s", con->uri);
   if ((uriptr = strchr(script_name, '?')) != NULL)
@@ -3999,12 +3645,12 @@ pipe_command(cupsd_client_t *con,       /* I - Client connection */
 
   sprintf(server_port, "SERVER_PORT=%d", con->serverport);
 
-  if (con->http.fields[HTTP_FIELD_HOST][0])
+  if (httpGetField(con->http, HTTP_FIELD_HOST)[0])
   {
     char *nameptr;                     /* Pointer to ":port" */
 
     snprintf(server_name, sizeof(server_name), "SERVER_NAME=%s",
-            con->http.fields[HTTP_FIELD_HOST]);
+            httpGetField(con->http, HTTP_FIELD_HOST));
     if ((nameptr = strrchr(server_name, ':')) != NULL && !strchr(nameptr, ']'))
       *nameptr = '\0';                 /* Strip trailing ":port" */
   }
@@ -4037,31 +3683,31 @@ pipe_command(cupsd_client_t *con,       /* I - Client connection */
     envp[envc ++] = remote_user;
   }
 
-  if (con->http.version == HTTP_1_1)
+  if (httpGetVersion(con->http) == HTTP_VERSION_1_1)
     envp[envc ++] = "SERVER_PROTOCOL=HTTP/1.1";
-  else if (con->http.version == HTTP_1_0)
+  else if (httpGetVersion(con->http) == HTTP_VERSION_1_0)
     envp[envc ++] = "SERVER_PROTOCOL=HTTP/1.0";
   else
     envp[envc ++] = "SERVER_PROTOCOL=HTTP/0.9";
 
-  if (con->http.cookie)
+  if (httpGetCookie(con->http))
   {
     snprintf(http_cookie, sizeof(http_cookie), "HTTP_COOKIE=%s",
-             con->http.cookie);
+             httpGetCookie(con->http));
     envp[envc ++] = http_cookie;
   }
 
-  if (con->http.fields[HTTP_FIELD_USER_AGENT][0])
+  if (httpGetField(con->http, HTTP_FIELD_USER_AGENT)[0])
   {
     snprintf(http_user_agent, sizeof(http_user_agent), "HTTP_USER_AGENT=%s",
-             con->http.fields[HTTP_FIELD_USER_AGENT]);
+             httpGetField(con->http, HTTP_FIELD_USER_AGENT));
     envp[envc ++] = http_user_agent;
   }
 
-  if (con->http.fields[HTTP_FIELD_REFERER][0])
+  if (httpGetField(con->http, HTTP_FIELD_REFERER)[0])
   {
     snprintf(http_referer, sizeof(http_referer), "HTTP_REFERER=%s",
-             con->http.fields[HTTP_FIELD_REFERER]);
+             httpGetField(con->http, HTTP_FIELD_REFERER));
     envp[envc ++] = http_referer;
   }
 
@@ -4085,7 +3731,7 @@ pipe_command(cupsd_client_t *con, /* I - Client connection */
     sprintf(content_length, "CONTENT_LENGTH=" CUPS_LLFMT,
             CUPS_LLCAST con->bytes);
     snprintf(content_type, sizeof(content_type), "CONTENT_TYPE=%s",
-             con->http.fields[HTTP_FIELD_CONTENT_TYPE]);
+             httpGetField(con->http, HTTP_FIELD_CONTENT_TYPE));
 
     envp[envc ++] = "REQUEST_METHOD=POST";
     envp[envc ++] = content_length;
@@ -4096,7 +3742,7 @@ pipe_command(cupsd_client_t *con, /* I - Client connection */
   * Tell the CGI if we are using encryption...
   */
 
-  if (con->http.tls)
+  if (httpIsEncrypted(con->http))
     envp[envc ++] = "HTTPS=ON";
 
  /*
@@ -4179,7 +3825,7 @@ valid_host(cupsd_client_t *con)           /* I - Client connection */
   * Copy the Host: header for later use...
   */
 
-  strlcpy(con->clientname, con->http.fields[HTTP_FIELD_HOST],
+  strlcpy(con->clientname, httpGetField(con->http, HTTP_FIELD_HOST),
           sizeof(con->clientname));
   if ((ptr = strrchr(con->clientname, ':')) != NULL && !strchr(ptr, ']'))
   {
@@ -4193,7 +3839,7 @@ valid_host(cupsd_client_t *con)           /* I - Client connection */
   * Then validate...
   */
 
-  if (httpAddrLocalhost(con->http.hostaddr))
+  if (httpAddrLocalhost(httpGetAddress(con->http)))
   {
    /*
     * Only allow "localhost" or the equivalent IPv4 or IPv6 numerical
@@ -4345,45 +3991,32 @@ write_file(cupsd_client_t *con,         /* I - Client connection */
 {
   con->file = open(filename, O_RDONLY);
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                  "[Client %d] write_file code=%d, filename=\"%s\" (%d), "
-                 "type=\"%s\", filestats=%p", con->http.fd,
-                 code, filename, con->file, type ? type : "(null)", filestats);
+  cupsdLogClient(con, CUPSD_LOG_DEBUG2,
+                 "write_file code=%d, filename=\"%s\" (%d), "
+                "type=\"%s\", filestats=%p",
+                code, filename, con->file, type ? type : "(null)", filestats);
 
   if (con->file < 0)
     return (0);
 
   fcntl(con->file, F_SETFD, fcntl(con->file, F_GETFD) | FD_CLOEXEC);
 
-  con->pipe_pid = 0;
-
-  if (!cupsdSendHeader(con, code, type, CUPSD_AUTH_NONE))
-    return (0);
+  con->pipe_pid    = 0;
+  con->sent_header = 1;
 
-  if (httpPrintf(HTTP(con), "Last-Modified: %s\r\n",
-                 httpGetDateString(filestats->st_mtime)) < 0)
-    return (0);
-  if (httpPrintf(HTTP(con), "Content-Length: " CUPS_LLFMT "\r\n",
-                 CUPS_LLCAST filestats->st_size) < 0)
-    return (0);
-  if (httpPrintf(HTTP(con), "\r\n") < 0)
-    return (0);
+  httpClearFields(con->http);
 
-  if (cupsdFlushHeader(con) < 0)
-    return (0);
+  httpSetLength(con->http, (size_t)filestats->st_size);
 
-  con->http.data_encoding  = HTTP_ENCODING_LENGTH;
-  con->http.data_remaining = filestats->st_size;
+  httpSetField(con->http, HTTP_FIELD_LAST_MODIFIED,
+              httpGetDateString(filestats->st_mtime));
 
-  if (con->http.data_remaining <= INT_MAX)
-    con->http._data_remaining = con->http.data_remaining;
-  else
-    con->http._data_remaining = INT_MAX;
+  if (!cupsdSendHeader(con, code, type, CUPSD_AUTH_NONE))
+    return (0);
 
-  cupsdAddSelect(con->http.fd, (cupsd_selfunc_t)cupsdReadClient,
-                 (cupsd_selfunc_t)cupsdWriteClient, con);
+  cupsdAddSelect(httpGetFd(con->http), NULL, (cupsd_selfunc_t)cupsdWriteClient, con);
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] Sending file.", con->http.fd);
+  cupsdLogClient(con, CUPSD_LOG_DEBUG, "Sending file.");
 
   return (1);
 }
@@ -4396,20 +4029,18 @@ write_file(cupsd_client_t *con,         /* I - Client connection */
 static void
 write_pipe(cupsd_client_t *con)                /* I - Client connection */
 {
-  cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                  "[Client %d] write_pipe CGI output on fd %d",
-                  con->http.fd, con->file);
+  cupsdLogClient(con, CUPSD_LOG_DEBUG2, "write_pipe CGI output on fd %d",
+                 con->file);
 
   con->file_ready = 1;
 
   cupsdRemoveSelect(con->file);
-  cupsdAddSelect(con->http.fd, NULL, (cupsd_selfunc_t)cupsdWriteClient, con);
+  cupsdAddSelect(httpGetFd(con->http), NULL, (cupsd_selfunc_t)cupsdWriteClient, con);
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] CGI data ready to be sent.",
-                 con->http.fd);
+  cupsdLogClient(con, CUPSD_LOG_DEBUG, "CGI data ready to be sent.");
 }
 
 
 /*
- * End of "$Id: client.c 12057 2014-07-22 14:03:19Z msweet $".
+ * End of "$Id: client.c 12056 2014-07-22 14:02:56Z msweet $".
  */
index fe6c473fe0013188181b30efe92e066f78c78500..5096c4f4345019e808b44cc923dcdf21a32c72d9 100644 (file)
@@ -1,16 +1,16 @@
 /*
- * "$Id: client.h 11213 2013-08-01 22:23:18Z msweet $"
+ * "$Id: client.h 11717 2014-03-21 16:42:53Z msweet $"
  *
- *   Client definitions for the CUPS scheduler.
+ * Client definitions for the CUPS scheduler.
  *
- *   Copyright 2007-2011 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/".
  */
 
 #ifdef HAVE_AUTHORIZATION_H
@@ -24,7 +24,8 @@
 
 struct cupsd_client_s
 {
-  http_t               http;           /* HTTP client connection */
+  int                  number;         /* Connection number */
+  http_t               *http;          /* HTTP client connection */
   ipp_t                        *request,       /* IPP request information */
                        *response;      /* IPP response information */
   cupsd_location_t     *best;          /* Best match for AAA */
@@ -45,6 +46,7 @@ struct cupsd_client_s
   int                  file;           /* Input/output file */
   int                  file_ready;     /* Input ready on file/pipe? */
   int                  pipe_pid;       /* Pipe process ID (or 0 if not a pipe) */
+  http_status_t                pipe_status;    /* HTTP status from pipe process */
   int                  sent_header,    /* Non-zero if sent HTTP header */
                        got_fields,     /* Non-zero if all fields seen */
                        header_used;    /* Number of header bytes used */
@@ -53,7 +55,7 @@ struct cupsd_client_s
 #ifdef HAVE_SSL
   int                  auto_ssl;       /* Automatic test for SSL/TLS */
 #endif /* HAVE_SSL */
-  http_addr_t          clientaddr;     /* Client address */
+  http_addr_t          clientaddr;     /* Client's server address */
   char                 clientname[256];/* Client's server name for connection */
   int                  clientport;     /* Client's server port for connection */
   char                 servername[256];/* Server name for connection */
@@ -67,7 +69,7 @@ struct cupsd_client_s
 #endif /* HAVE_AUTHORIZATION_H */
 };
 
-#define HTTP(con) &((con)->http)
+#define HTTP(con) ((con)->http)
 
 
 /*
@@ -79,6 +81,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 */
 } cupsd_listener_t;
 
 
@@ -86,7 +91,9 @@ typedef struct
  * Globals...
  */
 
-VAR int                        ListenBackLog   VALUE(SOMAXCONN),
+VAR int                        LastClientNumber VALUE(0),
+                                       /* Last client connection number */
+                       ListenBackLog   VALUE(SOMAXCONN),
                                        /* Max backlog of pending connections */
                        LocalPort       VALUE(631),
                                        /* Local port to use */
@@ -118,7 +125,6 @@ extern void cupsdAcceptClient(cupsd_listener_t *lis);
 extern void    cupsdCloseAllClients(void);
 extern int     cupsdCloseClient(cupsd_client_t *con);
 extern void    cupsdDeleteAllListeners(void);
-extern int     cupsdFlushHeader(cupsd_client_t *con);
 extern void    cupsdPauseListening(void);
 extern int     cupsdProcessIPPRequest(cupsd_client_t *con);
 extern void    cupsdReadClient(cupsd_client_t *con);
@@ -142,5 +148,5 @@ extern int  cupsdStartTLS(cupsd_client_t *con);
 
 
 /*
- * End of "$Id: client.h 11213 2013-08-01 22:23:18Z msweet $".
+ * End of "$Id: client.h 11717 2014-03-21 16:42:53Z msweet $".
  */
index 9e6c710335eafb9965319d9e01ec1c36e23bb477..964932a3fa1b51308c94af1f0642730cc55f5ae2 100644 (file)
@@ -1,22 +1,22 @@
 /*
- * "$Id: colorman.c 11150 2013-07-17 13:03:56Z msweet $"
+ * "$Id: colorman.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Color management routines for the CUPS scheduler.
+ * Color management routines for the CUPS scheduler.
  *
- *   Copyright 2007-2013 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/".
  *
- *   Original DBUS/colord code is Copyright 2011 Red Hat, Inc.
+ * Original DBUS/colord code is Copyright 2011 Red Hat, Inc.
  *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
  *
  *   Redistributions of source code must retain the above copyright
  *   notice, this list of conditions and the following disclaimer.
  *   notice, this list of conditions and the following disclaimer in the
  *   documentation and/or other materials provided with the distribution.
  *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- *   COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- *   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- *   SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- *   HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- *   STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- *   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- *   OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Contents:
- *
- *   cupsdRegisterColor()         - Register vendor color profiles in a PPD
- *                                  file.
- *   cupsdStartColor()            - Initialize color management.
- *   cupsdStopColor()             - Shutdown color management.
- *   cupsdUnregisterColor()       - Unregister vendor color profiles in a PPD
- *                                  file.
- *   apple_init_profile()         - Initialize a color profile.
- *   apple_register_profiles()    - Register color profiles for a printer.
- *   apple_unregister_profiles()   - Remove color profiles for the specified
- *                                  printer.
- *   colord_create_device()       - Create a device and register profiles.
- *   colord_create_profile()      - Create a color profile for a printer.
- *   colord_delete_device()       - Delete a device
- *   colord_device_add_profile()   - Assign a profile to a device.
- *   colord_dict_add_strings()    - Add two strings to a dictionary.
- *   colord_find_device()         - Finds a device
- *   colord_get_qualifier_format() - Get the qualifier format.
- *   colord_register_printer()    - Register profiles for a printer.
- *   colord_unregister_printer()   - Unregister profiles for a printer.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 /*
@@ -327,9 +305,7 @@ apple_init_profile(
 
  if (iccfile && *iccfile)
  {
-    url = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault,
-                                                 (const UInt8 *)iccfile,
-                                                  strlen(iccfile), false);
+    url = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (const UInt8 *)iccfile, (CFIndex)strlen(iccfile), false);
 
     if (url)
     {
@@ -1538,5 +1514,5 @@ colord_unregister_printer(
 
 
 /*
- * End of "$Id: colorman.c 11150 2013-07-17 13:03:56Z msweet $".
+ * End of "$Id: colorman.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index bef190a0422c74ec0b69982d906dad686dd3be75..cd468934ce69f76c4d48fef0f5a94d2673bf37fe 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: conf.c 11932 2014-06-16 16:13:06Z msweet $"
+ * "$Id: conf.c 11931 2014-06-16 16:10:58Z msweet $"
  *
  * Configuration routines for the CUPS scheduler.
  *
- * Copyright 2007-2013 by Apple Inc.
+ * 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
@@ -47,7 +47,8 @@ typedef enum
   CUPSD_VARTYPE_TIME,                  /* Time interval option */
   CUPSD_VARTYPE_STRING,                        /* String option */
   CUPSD_VARTYPE_BOOLEAN,               /* Boolean option */
-  CUPSD_VARTYPE_PATHNAME               /* File/directory name option */
+  CUPSD_VARTYPE_PATHNAME,              /* File/directory name option */
+  CUPSD_VARTYPE_PERM                   /* File/directory permissions */
 } cupsd_vartype_t;
 
 typedef struct
@@ -84,13 +85,16 @@ 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)
+  { "IdleExitTimeout",         &IdleExitTimeout,       CUPSD_VARTYPE_TIME },
+#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
   { "JobKillDelay",            &JobKillDelay,          CUPSD_VARTYPE_TIME },
   { "JobRetryLimit",           &JobRetryLimit,         CUPSD_VARTYPE_INTEGER },
   { "JobRetryInterval",                &JobRetryInterval,      CUPSD_VARTYPE_TIME },
   { "KeepAliveTimeout",                &KeepAliveTimeout,      CUPSD_VARTYPE_TIME },
   { "KeepAlive",               &KeepAlive,             CUPSD_VARTYPE_BOOLEAN },
 #ifdef HAVE_LAUNCHD
-  { "LaunchdTimeout",          &LaunchdTimeout,        CUPSD_VARTYPE_TIME },
+  { "LaunchdTimeout",          &IdleExitTimeout,       CUPSD_VARTYPE_TIME },
 #endif /* HAVE_LAUNCHD */
   { "LimitRequestBody",                &MaxRequestSize,        CUPSD_VARTYPE_INTEGER },
   { "ListenBackLog",           &ListenBackLog,         CUPSD_VARTYPE_INTEGER },
@@ -129,13 +133,13 @@ static const cupsd_var_t  cupsfiles_vars[] =
 {
   { "AccessLog",               &AccessLog,             CUPSD_VARTYPE_STRING },
   { "CacheDir",                        &CacheDir,              CUPSD_VARTYPE_STRING },
-  { "ConfigFilePerm",          &ConfigFilePerm,        CUPSD_VARTYPE_INTEGER },
+  { "ConfigFilePerm",          &ConfigFilePerm,        CUPSD_VARTYPE_PERM },
   { "DataDir",                 &DataDir,               CUPSD_VARTYPE_STRING },
   { "DocumentRoot",            &DocumentRoot,          CUPSD_VARTYPE_STRING },
   { "ErrorLog",                        &ErrorLog,              CUPSD_VARTYPE_STRING },
   { "FileDevice",              &FileDevice,            CUPSD_VARTYPE_BOOLEAN },
   { "FontPath",                        &FontPath,              CUPSD_VARTYPE_STRING },
-  { "LogFilePerm",             &LogFilePerm,           CUPSD_VARTYPE_INTEGER },
+  { "LogFilePerm",             &LogFilePerm,           CUPSD_VARTYPE_PERM },
   { "LPDConfigFile",           &LPDConfigFile,         CUPSD_VARTYPE_STRING },
   { "PageLog",                 &PageLog,               CUPSD_VARTYPE_STRING },
   { "Printcap",                        &Printcap,              CUPSD_VARTYPE_STRING },
@@ -143,10 +147,7 @@ static const cupsd_var_t   cupsfiles_vars[] =
   { "RequestRoot",             &RequestRoot,           CUPSD_VARTYPE_STRING },
   { "ServerBin",               &ServerBin,             CUPSD_VARTYPE_PATHNAME },
 #ifdef HAVE_SSL
-  { "ServerCertificate",       &ServerCertificate,     CUPSD_VARTYPE_PATHNAME },
-#  if defined(HAVE_LIBSSL) || defined(HAVE_GNUTLS)
-  { "ServerKey",               &ServerKey,             CUPSD_VARTYPE_PATHNAME },
-#  endif /* HAVE_LIBSSL || HAVE_GNUTLS */
+  { "ServerKeychain",          &ServerKeychain,        CUPSD_VARTYPE_PATHNAME },
 #endif /* HAVE_SSL */
   { "ServerRoot",              &ServerRoot,            CUPSD_VARTYPE_PATHNAME },
   { "SMBConfigFile",           &SMBConfigFile,         CUPSD_VARTYPE_STRING },
@@ -227,9 +228,9 @@ int                                 /* O - 0 on success, -1 on error, 1 on warning */
 cupsdCheckPermissions(
     const char *filename,              /* I - File/directory name */
     const char *suffix,                        /* I - Additional file/directory name */
-    int        mode,                   /* I - Permissions */
-    int        user,                   /* I - Owner */
-    int        group,                  /* I - Group */
+    mode_t     mode,                   /* I - Permissions */
+    uid_t      user,                   /* I - Owner */
+    gid_t      group,                  /* I - Group */
     int        is_dir,                 /* I - 1 = directory, 0 = file */
     int        create_dir)             /* I - 1 = create directory, -1 = create w/o logging, 0 = not */
 {
@@ -590,12 +591,11 @@ cupsdReadConfiguration(void)
   ClassifyOverride  = 0;
 
 #ifdef HAVE_SSL
-#  ifdef HAVE_CDSASSL
-  cupsdSetString(&ServerCertificate, "/Library/Keychains/System.keychain");
+#  ifdef HAVE_GNUTLS
+  cupsdSetString(&ServerKeychain, "ssl");
 #  else
-  cupsdSetString(&ServerCertificate, "ssl/server.crt");
-  cupsdSetString(&ServerKey, "ssl/server.key");
-#  endif /* HAVE_CDSASSL */
+  cupsdSetString(&ServerKeychain, "/Library/Keychains/System.keychain");
+#  endif /* HAVE_GNUTLS */
 #endif /* HAVE_SSL */
 
   language = cupsLangDefault();
@@ -685,7 +685,6 @@ cupsdReadConfiguration(void)
   default_auth_type        = CUPSD_AUTH_BASIC;
 #ifdef HAVE_SSL
   DefaultEncryption        = HTTP_ENCRYPT_REQUIRED;
-  SSLOptions               = CUPSD_SSL_NONE;
 #endif /* HAVE_SSL */
   DirtyCleanInterval       = DEFAULT_KEEPALIVE;
   JobKillDelay             = DEFAULT_TIMEOUT;
@@ -711,6 +710,7 @@ cupsdReadConfiguration(void)
   NumSystemGroups          = 0;
   ReloadTimeout                   = DEFAULT_KEEPALIVE;
   RootCertDuration         = 300;
+  Sandboxing               = CUPSD_SANDBOXING_STRICT;
   StrictConformance        = FALSE;
   SyncOnClose              = FALSE;
   Timeout                  = DEFAULT_TIMEOUT;
@@ -755,9 +755,9 @@ cupsdReadConfiguration(void)
   DefaultLeaseDuration       = 86400;
   MaxLeaseDuration           = 0;
 
-#ifdef HAVE_LAUNCHD
-  LaunchdTimeout = 10;
-#endif /* HAVE_LAUNCHD */
+#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+  IdleExitTimeout = 60;
+#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
 
  /*
   * Setup environment variables...
@@ -1060,24 +1060,11 @@ cupsdReadConfiguration(void)
     cupsdSetStringf(&CacheDir, "%s/%s", ServerRoot, CacheDir);
 
 #ifdef HAVE_SSL
-  if (ServerCertificate[0] != '/')
-    cupsdSetStringf(&ServerCertificate, "%s/%s", ServerRoot, ServerCertificate);
-
-  if (!strncmp(ServerRoot, ServerCertificate, strlen(ServerRoot)) &&
-      cupsdCheckPermissions(ServerCertificate, NULL, 0600, RunUser, Group,
-                            0, 0) < 0 &&
-      (FatalErrors & CUPSD_FATAL_PERMISSIONS))
-    return (0);
+  if (ServerKeychain[0] != '/')
+    cupsdSetStringf(&ServerKeychain, "%s/%s", ServerRoot, ServerKeychain);
 
-#  if defined(HAVE_LIBSSL) || defined(HAVE_GNUTLS)
-  if (ServerKey[0] != '/')
-    cupsdSetStringf(&ServerKey, "%s/%s", ServerRoot, ServerKey);
-
-  if (!strncmp(ServerRoot, ServerKey, strlen(ServerRoot)) &&
-      cupsdCheckPermissions(ServerKey, NULL, 0600, RunUser, Group, 0, 0) < 0 &&
-      (FatalErrors & CUPSD_FATAL_PERMISSIONS))
-    return (0);
-#  endif /* HAVE_LIBSSL || HAVE_GNUTLS */
+  cupsdLogMessage(CUPSD_LOG_DEBUG, "Using keychain \"%s\" for server name \"%s\".", ServerKeychain, ServerName);
+  cupsSetServerCredentials(ServerKeychain, ServerName, 1);
 #endif /* HAVE_SSL */
 
  /*
@@ -1312,6 +1299,7 @@ cupsdReadConfiguration(void)
       cupsdAddString(&(p->job_attrs), "job-name");
       cupsdAddString(&(p->job_attrs), "job-originating-host-name");
       cupsdAddString(&(p->job_attrs), "job-originating-user-name");
+      cupsdAddString(&(p->job_attrs), "phone");
 
       cupsdLogMessage(CUPSD_LOG_INFO, "SubscriptionPrivateAccess default");
       cupsdAddString(&(p->sub_access), "@OWNER");
@@ -1520,7 +1508,7 @@ cupsdReadConfiguration(void)
     if (!mimeType(MimeDatabase, "application", "octet-stream"))
       NumMimeTypes ++;
 
-    if ((MimeTypes = calloc(NumMimeTypes, sizeof(const char *))) == NULL)
+    if ((MimeTypes = calloc((size_t)NumMimeTypes, sizeof(const char *))) == NULL)
     {
       cupsdLogMessage(CUPSD_LOG_ERROR,
                       "Unable to allocate memory for %d MIME types.",
@@ -2182,20 +2170,6 @@ parse_aaa(cupsd_location_t *loc, /* I - Location */
       if (loc->level == CUPSD_AUTH_ANON)
        loc->level = CUPSD_AUTH_USER;
     }
-    else if (!_cups_strcasecmp(value, "digest"))
-    {
-      loc->type = CUPSD_AUTH_DIGEST;
-
-      if (loc->level == CUPSD_AUTH_ANON)
-       loc->level = CUPSD_AUTH_USER;
-    }
-    else if (!_cups_strcasecmp(value, "basicdigest"))
-    {
-      loc->type = CUPSD_AUTH_BASICDIGEST;
-
-      if (loc->level == CUPSD_AUTH_ANON)
-       loc->level = CUPSD_AUTH_USER;
-    }
     else if (!_cups_strcasecmp(value, "default"))
     {
       loc->type = CUPSD_AUTH_DEFAULT;
@@ -2695,6 +2669,41 @@ parse_variable(
        }
        break;
 
+    case CUPSD_VARTYPE_PERM :
+       if (!value)
+       {
+         cupsdLogMessage(CUPSD_LOG_ERROR,
+                         "Missing permissions value for %s on line %d of %s.",
+                         line, linenum, filename);
+          return (0);
+       }
+       else if (!isdigit(*value & 255))
+       {
+        /* TODO: Add chmod UGO syntax support */
+         cupsdLogMessage(CUPSD_LOG_ERROR,
+                         "Bad permissions value for %s on line %d of %s.",
+                         line, linenum, filename);
+          return (0);
+       }
+       else
+       {
+         int n = strtol(value, NULL, 8);
+                                       /* Permissions value */
+
+         if (n < 0)
+         {
+           cupsdLogMessage(CUPSD_LOG_ERROR,
+                           "Bad negative permissions value for %s on line %d of "
+                           "%s.", line, linenum, filename);
+           return (0);
+         }
+         else
+         {
+           *((mode_t *)var->ptr) = (mode_t)n;
+         }
+       }
+       break;
+
     case CUPSD_VARTYPE_TIME :
        if (!value)
        {
@@ -3017,7 +3026,7 @@ read_cupsd_conf(cups_file_t *fp)  /* I - File to read from */
 #endif /* AF_LOCAL */
        cupsdLogMessage(CUPSD_LOG_INFO, "Listening to %s:%d (IPv%d)", temp,
                         httpAddrPort(&(lis->address)),
-                       _httpAddrFamily(&(lis->address)) == AF_INET ? 4 : 6);
+                       httpAddrFamily(&(lis->address)) == AF_INET ? 4 : 6);
 
         if (!httpAddrLocalhost(&(lis->address)))
          RemotePort = httpAddrPort(&(lis->address));
@@ -3059,10 +3068,6 @@ read_cupsd_conf(cups_file_t *fp) /* I - File to read from */
        default_auth_type = CUPSD_AUTH_NONE;
       else if (!_cups_strcasecmp(value, "basic"))
        default_auth_type = CUPSD_AUTH_BASIC;
-      else if (!_cups_strcasecmp(value, "digest"))
-       default_auth_type = CUPSD_AUTH_DIGEST;
-      else if (!_cups_strcasecmp(value, "basicdigest"))
-       default_auth_type = CUPSD_AUTH_BASICDIGEST;
 #ifdef HAVE_GSSAPI
       else if (!_cups_strcasecmp(value, "negotiate"))
         default_auth_type = CUPSD_AUTH_NEGOTIATE;
@@ -3131,6 +3136,8 @@ read_cupsd_conf(cups_file_t *fp)  /* I - File to read from */
         AccessLogLevel = CUPSD_ACCESSLOG_ACTIONS;
       else if (!_cups_strcasecmp(value, "config"))
         AccessLogLevel = CUPSD_ACCESSLOG_CONFIG;
+      else if (!_cups_strcasecmp(value, "none"))
+        AccessLogLevel = CUPSD_ACCESSLOG_NONE;
       else
         cupsdLogMessage(CUPSD_LOG_WARN, "Unknown AccessLogLevel %s on line %d.",
                        value, linenum);
@@ -3288,23 +3295,6 @@ read_cupsd_conf(cups_file_t *fp) /* I - File to read from */
                        "Missing value for SetEnv directive on line %d.",
                        linenum);
     }
-#ifdef HAVE_SSL
-    else if (!_cups_strcasecmp(line, "SSLOptions"))
-    {
-     /*
-      * SSLOptions options
-      */
-
-      if (!value || !_cups_strcasecmp(value, "none"))
-        SSLOptions = CUPSD_SSL_NONE;
-      else if (!_cups_strcasecmp(value, "noemptyfragments"))
-        SSLOptions = CUPSD_SSL_NOEMPTY;
-      else
-        cupsdLogMessage(CUPSD_LOG_ERROR,
-                       "Unknown value \"%s\" for SSLOptions directive on "
-                       "line %d.", value, linenum);
-    }
-#endif /* HAVE_SSL */
     else if (!_cups_strcasecmp(line, "AccessLog") ||
              !_cups_strcasecmp(line, "CacheDir") ||
              !_cups_strcasecmp(line, "ConfigFilePerm") ||
@@ -3325,6 +3315,7 @@ read_cupsd_conf(cups_file_t *fp)  /* I - File to read from */
              !_cups_strcasecmp(line, "ServerBin") ||
              !_cups_strcasecmp(line, "ServerCertificate") ||
              !_cups_strcasecmp(line, "ServerKey") ||
+             !_cups_strcasecmp(line, "ServerKeychain") ||
              !_cups_strcasecmp(line, "ServerRoot") ||
              !_cups_strcasecmp(line, "SMBConfigFile") ||
              !_cups_strcasecmp(line, "StateDir") ||
@@ -3378,7 +3369,7 @@ read_cups_files_conf(cups_file_t *fp)     /* I - File to read from */
       */
 
       if (isdigit(value[0]))
-        Group = atoi(value);
+        Group = (gid_t)atoi(value);
       else
       {
         endgrent();
@@ -3417,6 +3408,30 @@ read_cups_files_conf(cups_file_t *fp)    /* I - File to read from */
           return (0);
       }
     }
+    else if (!_cups_strcasecmp(line, "Sandboxing") && value)
+    {
+     /*
+      * Level of sandboxing?
+      */
+
+      if (!_cups_strcasecmp(value, "off"))
+      {
+        Sandboxing = CUPSD_SANDBOXING_OFF;
+        cupsdLogMessage(CUPSD_LOG_WARN, "Disabling sandboxing is not recommended (line %d of %s)", linenum, CupsFilesFile);
+      }
+      else if (!_cups_strcasecmp(value, "relaxed"))
+        Sandboxing = CUPSD_SANDBOXING_RELAXED;
+      else if (!_cups_strcasecmp(value, "strict"))
+        Sandboxing = CUPSD_SANDBOXING_STRICT;
+      else
+      {
+       cupsdLogMessage(CUPSD_LOG_ERROR,
+                       "Unknown Sandboxing \"%s\" on line %d of %s.",
+                       value, linenum, CupsFilesFile);
+        if (FatalErrors & CUPSD_FATAL_CONFIG)
+          return (0);
+      }
+    }
     else if (!_cups_strcasecmp(line, "SystemGroup") && value)
     {
      /*
@@ -3453,7 +3468,7 @@ read_cups_files_conf(cups_file_t *fp)     /* I - File to read from */
             return (0);
         }
         else
-         User = atoi(value);
+         User = (uid_t)atoi(value);
       }
       else
       {
@@ -3487,6 +3502,15 @@ read_cups_files_conf(cups_file_t *fp)    /* I - File to read from */
         }
       }
     }
+    else if (!_cups_strcasecmp(line, "ServerCertificate") ||
+             !_cups_strcasecmp(line, "ServerKey"))
+    {
+      cupsdLogMessage(CUPSD_LOG_INFO,
+                     "The \"%s\" directive on line %d of %s is no longer "
+                     "supported; this will become an error in a future "
+                     "release.",
+                     line, linenum, CupsFilesFile);
+    }
     else if (!parse_variable(CupsFilesFile, linenum, line, value,
                             sizeof(cupsfiles_vars) / sizeof(cupsfiles_vars[0]),
                             cupsfiles_vars) &&
@@ -4063,5 +4087,5 @@ set_policy_defaults(cupsd_policy_t *pol)/* I - Policy */
 
 
 /*
- * End of "$Id: conf.c 11932 2014-06-16 16:13:06Z msweet $".
+ * End of "$Id: conf.c 11931 2014-06-16 16:10:58Z msweet $".
  */
index 485383e4c36476a7e99c2f98eb48fa508691b859..1c47b53bc31fd1805f788996f62acf5dc38fad4e 100644 (file)
@@ -1,16 +1,16 @@
 /*
- * "$Id: conf.h 11202 2013-07-26 21:31:54Z msweet $"
+ * "$Id: conf.h 11789 2014-04-02 16:52:53Z msweet $"
  *
- *   Configuration file definitions for the CUPS scheduler.
+ * Configuration file definitions for the CUPS scheduler.
  *
- *   Copyright 2007-2013 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/".
  */
 
 
@@ -39,6 +39,7 @@ typedef enum
 
 typedef enum
 {
+  CUPSD_ACCESSLOG_NONE,                        /* Log no requests */
   CUPSD_ACCESSLOG_CONFIG,              /* Log config requests */
   CUPSD_ACCESSLOG_ACTIONS,             /* Log config, print, and job management requests */
   CUPSD_ACCESSLOG_ALL                  /* Log everything */
@@ -50,6 +51,13 @@ typedef enum
   CUPSD_TIME_USECS                     /* Standard format with microseconds */
 } cupsd_time_t;
 
+typedef enum
+{
+  CUPSD_SANDBOXING_OFF,                        /* No sandboxing */
+  CUPSD_SANDBOXING_RELAXED,            /* Relaxed sandboxing */
+  CUPSD_SANDBOXING_STRICT              /* Strict sandboxing */
+} cupsd_sandboxing_t;
+
 
 /*
  * FatalErrors flags...
@@ -73,14 +81,6 @@ typedef enum
 #define PRINTCAP_PLIST         2       /* OS X plist format */
 
 
-/*
- * SSL options (bits)...
- */
-
-#define CUPSD_SSL_NONE         0       /* No special options */
-#define CUPSD_SSL_NOEMPTY      1       /* Do not insert empty fragments */
-
-
 /*
  * ServerAlias data...
  */
@@ -156,30 +156,36 @@ VAR char          *AccessLog              VALUE(NULL),
                                        /* Remote root user */
                        *Classification         VALUE(NULL);
                                        /* Classification of system */
-VAR uid_t              User                    VALUE(1);
+VAR uid_t              User                    VALUE(1),
                                        /* User ID for server */
+                       RunUser                 VALUE(0);
+                                       /* User to run as, used for files */
 VAR gid_t              Group                   VALUE(0);
                                        /* Group ID for server */
 VAR cupsd_accesslog_t  AccessLogLevel          VALUE(CUPSD_ACCESSLOG_ACTIONS);
                                        /* Access log level */
 VAR int                        ClassifyOverride        VALUE(0),
                                        /* Allow overrides? */
-                       ConfigFilePerm          VALUE(0640),
-                                       /* Permissions for config files */
                        LogDebugHistory         VALUE(200),
                                        /* Amount of automatic debug history */
                        FatalErrors             VALUE(CUPSD_FATAL_CONFIG),
                                        /* Which errors are fatal? */
                        StrictConformance       VALUE(FALSE),
                                        /* Require strict IPP conformance? */
-                       SyncOnClose             VALUE(FALSE),
+                       SyncOnClose             VALUE(FALSE);
                                        /* Call fsync() when closing files? */
-                       LogFilePerm             VALUE(0644);
+VAR mode_t             ConfigFilePerm          VALUE(0640U),
+                                       /* Permissions for config files */
+                       LogFilePerm             VALUE(0644U);
                                        /* Permissions for log files */
 VAR cupsd_loglevel_t   LogLevel                VALUE(CUPSD_LOG_WARN);
                                        /* Error log level */
 VAR cupsd_time_t       LogTimeFormat           VALUE(CUPSD_TIME_STANDARD);
                                        /* Log file time format */
+VAR cupsd_sandboxing_t Sandboxing              VALUE(CUPSD_SANDBOXING_STRICT);
+                                       /* Sandboxing level */
+VAR int                        UseSandboxing   VALUE(1);
+                                       /* Use sandboxing for child procs? */
 VAR int                        MaxClients              VALUE(100),
                                        /* Maximum number of clients */
                        MaxClientsPerHost       VALUE(0),
@@ -210,8 +216,6 @@ VAR int                     MaxClients              VALUE(100),
                                        /* Timeout before reload from SIGHUP */
                        RootCertDuration        VALUE(300),
                                        /* Root certificate update interval */
-                       RunUser                 VALUE(0),
-                                       /* User to run as, used for files */
                        PrintcapFormat          VALUE(PRINTCAP_BSD),
                                        /* Format of printcap file? */
                        DefaultShared           VALUE(TRUE),
@@ -236,20 +240,14 @@ VAR const char            **MimeTypes             VALUE(NULL);
                                        /* Array of MIME types */
 
 #ifdef HAVE_SSL
-VAR char               *ServerCertificate      VALUE(NULL);
-                                       /* Server certificate file */
-#  if defined(HAVE_LIBSSL) || defined(HAVE_GNUTLS)
-VAR char               *ServerKey              VALUE(NULL);
-                                       /* Server key file */
-#  endif /* HAVE_LIBSSL || HAVE_GNUTLS */
-VAR int                        SSLOptions              VALUE(CUPSD_SSL_NONE);
-                                       /* SSL/TLS options */
+VAR char               *ServerKeychain         VALUE(NULL);
+                                       /* Keychain holding cert + key */
 #endif /* HAVE_SSL */
 
-#ifdef HAVE_LAUNCHD
-VAR int                        LaunchdTimeout          VALUE(10);
+#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+VAR int                        IdleExitTimeout         VALUE(60);
                                        /* Time after which an idle cupsd will exit */
-#endif /* HAVE_LAUNCHD */
+#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
 
 #ifdef HAVE_AUTHORIZATION_H
 VAR char               *SystemGroupAuthKey     VALUE(NULL);
@@ -272,18 +270,21 @@ gss_cred_id_t             ServerCreds;    /* Server's GSS credentials */
 extern void    cupsdAddAlias(cups_array_t *aliases, const char *name);
 extern int     cupsdCheckLogFile(cups_file_t **lf, const char *logname);
 extern int     cupsdCheckPermissions(const char *filename,
-                                     const char *suffix, int mode,
-                                     int user, int group, int is_dir,
+                                     const char *suffix, mode_t mode,
+                                     uid_t user, gid_t group, int is_dir,
                                      int create_dir);
 extern int     cupsdCheckProgram(const char *filename, cupsd_printer_t *p);
 extern int     cupsdDefaultAuthType(void);
 extern void    cupsdFreeAliases(cups_array_t *aliases);
 extern char    *cupsdGetDateTime(struct timeval *t, cupsd_time_t format);
+extern int     cupsdLogClient(cupsd_client_t *con, int level,
+                               const char *message, ...)
+                               __attribute__((__format__(__printf__, 3, 4)));
 extern void    cupsdLogFCMessage(void *context, _cups_fc_result_t result,
                                  const char *message);
 #ifdef HAVE_GSSAPI
-extern int     cupsdLogGSSMessage(int level, int major_status,
-                                  int minor_status,
+extern int     cupsdLogGSSMessage(int level, OM_uint32 major_status,
+                                  OM_uint32 minor_status,
                                   const char *message, ...);
 #endif /* HAVE_GSSAPI */
 extern int     cupsdLogJob(cupsd_job_t *job, int level, const char *message,
@@ -297,5 +298,5 @@ extern int  cupsdWriteErrorLog(int level, const char *message);
 
 
 /*
- * End of "$Id: conf.h 11202 2013-07-26 21:31:54Z msweet $".
+ * End of "$Id: conf.h 11789 2014-04-02 16:52:53Z msweet $".
  */
index 80fc7da1b4a2c4bcd23faf7060b9f2d64a74a2fb..85264ed878f0f422fae0747073139811892d92e9 100644 (file)
@@ -1,27 +1,16 @@
 /*
- * "$Id: cups-deviced.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: cups-deviced.c 11782 2014-03-28 21:03:43Z msweet $"
  *
- *   Device scanning mini-daemon for CUPS.
+ * Device scanning mini-daemon for CUPS.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 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()                 - Scan for devices and return an IPP response.
- *   add_device()           - Add a new device to the list.
- *   compare_devices()      - Compare device names to eliminate duplicates.
- *   get_current_time()     - Get the current time as a double value in seconds.
- *   get_device()           - Get a device from a backend.
- *   process_children()     - Process all dead children...
- *   sigchld_handler()      - Handle 'child' signals from old processes.
- *   start_backend()        - Run a backend to gather the available devices.
+ * These coded instructions, statements, and computer programs 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/".
  */
 
 /*
@@ -82,7 +71,7 @@ static cupsd_backend_t        backends[MAX_BACKENDS];
 static struct pollfd   backend_fds[MAX_BACKENDS];
                                        /* Array for poll() */
 static cups_array_t    *devices;       /* Array of devices */
-static int             normal_user;    /* Normal user ID */
+static uid_t           normal_user;    /* Normal user ID */
 static int             device_limit;   /* Maximum number of devices */
 static int             send_class,     /* Send device-class attribute? */
                        send_info,      /* Send device-info attribute? */
@@ -182,7 +171,7 @@ main(int  argc,                             /* I - Number of command-line args */
     return (1);
   }
 
-  normal_user = atoi(argv[4]);
+  normal_user = (uid_t)atoi(argv[4]);
   if (normal_user <= 0)
   {
     fprintf(stderr, "ERROR: [cups-deviced] Bad user %d!\n", normal_user);
@@ -281,8 +270,7 @@ main(int  argc,                             /* I - Number of command-line args */
     * all others run as the unprivileged user...
     */
 
-    start_backend(dent->filename,
-                  !(dent->fileinfo.st_mode & (S_IRWXG | S_IRWXO)));
+    start_backend(dent->filename, !(dent->fileinfo.st_mode & (S_IWGRP | S_IRWXO)));
   }
 
   cupsDirClose(dir);
@@ -309,7 +297,7 @@ main(int  argc,                             /* I - Number of command-line args */
 
     timeout = (int)(1000 * (end_time - current_time));
 
-    if (poll(backend_fds, num_backends, timeout) > 0)
+    if (poll(backend_fds, (nfds_t)num_backends, timeout) > 0)
     {
       for (i = 0; i < num_backends; i ++)
         if (backend_fds[i].revents && backends[i].pipe)
@@ -326,8 +314,7 @@ main(int  argc,                             /* I - Number of command-line args */
              break;
            }
          }
-         while (bpipe->ptr &&
-                memchr(bpipe->ptr, '\n', bpipe->end - bpipe->ptr));
+         while (bpipe->ptr && memchr(bpipe->ptr, '\n', (size_t)(bpipe->end - bpipe->ptr)));
         }
     }
 
@@ -806,5 +793,5 @@ start_backend(const char *name,             /* I - Backend to run */
 
 
 /*
- * End of "$Id: cups-deviced.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: cups-deviced.c 11782 2014-03-28 21:03:43Z msweet $".
  */
index 1439af787d394a35f7a8baca23fce242f59e5674..8b047a9e75b454e5e24b36a7be808230ac1e4698 100644 (file)
@@ -1,48 +1,20 @@
 /*
- * "$Id: cups-driverd.cxx 3933 2012-10-01 03:01:10Z msweet $"
+ * "$Id: cups-driverd.cxx 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   PPD/driver support for CUPS.
+ * PPD/driver support for CUPS.
  *
- *   This program handles listing and installing static PPD files, PPD files
- *   created from driver information files, and dynamically generated PPD files
- *   using driver helper programs.
+ * This program handles listing and installing static PPD files, PPD files
+ * created from driver information files, and dynamically generated PPD files
+ * using driver helper programs.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
+ * Copyright 2007-2014 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()        - Scan for drivers and return an IPP response.
- *   add_ppd()        - Add a PPD file.
- *   cat_drv()        - Generate a PPD from a driver info file.
- *   cat_ppd()        - Copy a PPD file to stdout.
- *   copy_static()     - Copy a static PPD file to stdout.
- *   cat_tar()        - Copy an archived PPD file to stdout.
- *   compare_inodes()  - Compare two inodes.
- *   compare_matches() - Compare PPD match scores for sorting.
- *   compare_names()   - Compare PPD filenames for sorting.
- *   compare_ppds()    - Compare PPD file make and model names for sorting.
- *   dump_ppds_dat()   - Dump the contents of the ppds.dat file.
- *   free_array()      - Free an array of strings.
- *   get_file()        - Get the filename associated with a request.
- *   list_ppds()       - List PPD files.
- *   load_drv()        - Load the PPDs from a driver information file.
- *   load_drivers()    - Load driver-generated PPD files.
- *   load_ppd()        - Load a PPD file.
- *   load_ppds()       - Load PPD files recursively.
- *   load_ppds_dat()   - Load the ppds.dat file.
- *   load_tar()        - Load archived PPD files.
- *   read_tar()        - Read a file header from an archive.
- *   regex_device_id() - Compile a regular expression based on the 1284 device
- *                      ID.
- *   regex_string()    - Construct a regular expression to compare a simple
- *                      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/".
  */
 
 /*
@@ -291,7 +263,7 @@ add_ppd(const char *filename,               /* I - PPD filename */
 
   ppd->found               = 1;
   ppd->record.mtime        = mtime;
-  ppd->record.size         = size;
+  ppd->record.size         = (off_t)size;
   ppd->record.model_number = model_number;
   ppd->record.type         = type;
 
@@ -645,7 +617,7 @@ cat_tar(const char *name,           /* I - PPD name */
   */
 
   if ((fp = get_file(name, request_id, "model", filename, sizeof(filename),
-                     &ppdname)) == NULL)
+                     &ppdname)) == NULL || !ppdname)
     return (1);
 
  /*
@@ -674,7 +646,7 @@ cat_tar(const char *name,           /* I - PPD name */
         if ((size_t)(bytes = (curinfo.st_size - total)) > sizeof(buffer))
           bytes = sizeof(buffer);
 
-        if ((bytes = cupsFileRead(fp, buffer, bytes)) < 0)
+        if ((bytes = cupsFileRead(fp, buffer, (size_t)bytes)) < 0)
         {
           if (errno == EINTR || errno == EAGAIN)
           {
@@ -686,7 +658,7 @@ cat_tar(const char *name,           /* I - PPD name */
             break;
           }
         }
-        else if (bytes > 0 && fwrite(buffer, bytes, 1, stdout) != 1)
+        else if (bytes > 0 && fwrite(buffer, (size_t)bytes, 1, stdout) != 1)
           break;
       }
 
@@ -1053,8 +1025,6 @@ list_ppds(int        request_id,  /* I - Request ID */
                *type_str;              /* ppd-type option */
   int          model_number,           /* ppd-model-number value */
                type,                   /* ppd-type value */
-               make_and_model_len,     /* Length of ppd-make-and-model */
-               product_len,            /* Length of ppd-product */
                send_device_id,         /* Send ppd-device-id? */
                send_make,              /* Send ppd-make? */
                send_make_and_model,    /* Send ppd-make-and-model? */
@@ -1065,6 +1035,8 @@ list_ppds(int        request_id,  /* I - Request ID */
                send_psversion,         /* Send ppd-psversion? */
                send_type,              /* Send ppd-type? */
                sent_header;            /* Sent the IPP header? */
+  size_t       make_and_model_len,     /* Length of ppd-make-and-model */
+               product_len;            /* Length of ppd-product */
   regex_t      *device_id_re,          /* Regular expression for matching device ID */
                *make_and_model_re;     /* Regular expression for matching make and model */
   regmatch_t   re_matches[6];          /* Regular expression matches */
@@ -1385,7 +1357,7 @@ list_ppds(int        request_id,  /* I - Request ID */
        // See how much of the make-and-model string we matched...
        if (re_matches[0].rm_so == 0)
        {
-         if (re_matches[0].rm_eo == make_and_model_len)
+         if ((size_t)re_matches[0].rm_eo == make_and_model_len)
            ppd->matches += 3;          // Exact match
          else
            ppd->matches += 2;          // Prefix match
@@ -1637,8 +1609,7 @@ load_drv(const char  *filename,           /* I - Actual filename */
   * Add a dummy entry for the file...
   */
 
-  add_ppd(name, name, "", "", "", "", "", "", mtime, size, 0,
-          PPD_TYPE_DRV, "drv");
+  add_ppd(name, name, "", "", "", "", "", "", mtime, (size_t)size, 0, PPD_TYPE_DRV, "drv");
   ChangedPPD = 1;
 
  /*
@@ -1696,14 +1667,10 @@ load_drv(const char  *filename,         /* I - Actual filename */
       if (!strcmp(product->name->value, "Product"))
       {
         if (!products_found)
-         ppd = add_ppd(name, uri, "en", d->manufacturer->value, make_model,
-                       device_id ? device_id->value->value : "",
-                       product->value->value,
-                       ps_version ? ps_version->value->value : "(3010) 0",
-                       mtime, size, d->model_number, type, "drv");
+         ppd = add_ppd(name, uri, "en", d->manufacturer->value, make_model, device_id ? device_id->value->value : "", product->value->value,
+                       ps_version ? ps_version->value->value : "(3010) 0", mtime, (size_t)size, d->model_number, type, "drv");
        else if (products_found < PPD_MAX_PROD)
-         strlcpy(ppd->record.products[products_found], product->value->value,
-                 sizeof(ppd->record.products[0]));
+         strlcpy(ppd->record.products[products_found], product->value->value, sizeof(ppd->record.products[0]));
        else
          break;
 
@@ -1711,11 +1678,7 @@ load_drv(const char  *filename,          /* I - Actual filename */
       }
 
     if (!products_found)
-      add_ppd(name, uri, "en", d->manufacturer->value, make_model,
-             device_id ? device_id->value->value : "",
-             d->model_name->value,
-             ps_version ? ps_version->value->value : "(3010) 0",
-             mtime, size, d->model_number, type, "drv");
+      add_ppd(name, uri, "en", d->manufacturer->value, make_model, device_id ? device_id->value->value : "", d->model_name->value, ps_version ? ps_version->value->value : "(3010) 0", mtime, (size_t)size, d->model_number, type, "drv");
   }
 
   src->release();
@@ -1810,7 +1773,7 @@ load_drivers(cups_array_t *include,       /* I - Drivers to include */
        scheme_end = scheme + strlen(scheme) - 1;
 
        if ((scheme_end > scheme && *scheme_end == '*' &&
-            !strncmp(scheme, dent->filename, scheme_end - scheme)) ||
+            !strncmp(scheme, dent->filename, (size_t)(scheme_end - scheme))) ||
            !strcmp(scheme, dent->filename))
        {
          fputs("DEBUG: [cups-driverd] Yes, exclude!\n", stderr);
@@ -1837,7 +1800,7 @@ load_drivers(cups_array_t *include,       /* I - Drivers to include */
        scheme_end = scheme + strlen(scheme) - 1;
 
        if ((scheme_end > scheme && *scheme_end == '*' &&
-            !strncmp(scheme, dent->filename, scheme_end - scheme)) ||
+            !strncmp(scheme, dent->filename, (size_t)(scheme_end - scheme))) ||
            !strcmp(scheme, dent->filename))
        {
          fputs("DEBUG: [cups-driverd] Yes, include!\n", stderr);
@@ -2307,11 +2270,7 @@ load_ppd(const char  *filename,          /* I - Real filename */
 
     fprintf(stderr, "DEBUG2: [cups-driverd] Adding ppd \"%s\"...\n", name);
 
-    ppd = add_ppd(name, name, lang_version, manufacturer, make_model,
-                 device_id, (char *)cupsArrayFirst(products),
-                 (char *)cupsArrayFirst(psversions),
-                 fileinfo->st_mtime, fileinfo->st_size,
-                 model_number, type, scheme);
+    ppd = add_ppd(name, name, lang_version, manufacturer, make_model, device_id, (char *)cupsArrayFirst(products), (char *)cupsArrayFirst(psversions), fileinfo->st_mtime, (size_t)fileinfo->st_size, model_number, type, scheme);
 
     if (!ppd)
       return;
@@ -2634,13 +2593,11 @@ load_ppds_dat(char   *filename,         /* I - Filename buffer */
     unsigned ppdsync;                  /* Sync word */
     int      num_ppds;                 /* Number of PPDs */
 
-    if (cupsFileRead(fp, (char *)&ppdsync, sizeof(ppdsync))
-            == sizeof(ppdsync) &&
+    if (cupsFileRead(fp, (char *)&ppdsync, sizeof(ppdsync)) == sizeof(ppdsync) &&
         ppdsync == PPD_SYNC &&
         !stat(filename, &fileinfo) &&
-       ((fileinfo.st_size - sizeof(ppdsync)) % sizeof(ppd_rec_t)) == 0 &&
-       (num_ppds = (fileinfo.st_size - sizeof(ppdsync)) /
-                   sizeof(ppd_rec_t)) > 0)
+       (((size_t)fileinfo.st_size - sizeof(ppdsync)) % sizeof(ppd_rec_t)) == 0 &&
+       (num_ppds = ((size_t)fileinfo.st_size - sizeof(ppdsync)) / sizeof(ppd_rec_t)) > 0)
     {
      /*
       * We have a ppds.dat file, so read it!
@@ -2702,8 +2659,7 @@ load_tar(const char  *filename,           /* I - Actual filename */
 
   (void)filename;
 
-  add_ppd(name, name, "", "", "", "", "", "", mtime, size, 0,
-          PPD_TYPE_ARCHIVE, "file");
+  add_ppd(name, name, "", "", "", "", "", "", mtime, (size_t)size, 0, PPD_TYPE_ARCHIVE, "file");
   ChangedPPD = 1;
 
  /*
@@ -2947,5 +2903,5 @@ regex_string(const char *s)               /* I - String to compare */
 
 
 /*
- * End of "$Id: cups-driverd.cxx 3933 2012-10-01 03:01:10Z msweet $".
+ * End of "$Id: cups-driverd.cxx 11558 2014-02-06 18:33:34Z msweet $".
  */
index 3474c6e3999dff83b30826e4d9d6e040db21826e..e63b163b3983e97e04a23743c2045cf193248c71 100644 (file)
@@ -1,23 +1,19 @@
 /*
- * "$Id: cups-exec.c 11144 2013-07-17 02:45:55Z msweet $"
+ * "$Id: cups-exec.c 11817 2014-04-15 16:31:11Z msweet $"
  *
- *   Sandbox helper for CUPS.
+ * Sandbox helper for CUPS.
  *
- *   Copyright 2007-2013 by Apple Inc.
+ * Copyright 2007-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/".
+ * These coded instructions, statements, and computer programs 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:
  *
- *     cups-exec /path/to/profile /path/to/program argv0 argv1 ... argvN
- *
- * Contents:
- *
- *   main() - Apply sandbox profile and execute program.
+ *     cups-exec /path/to/profile [-u UID] [-g GID] [-n NICE] /path/to/program argv0 argv1 ... argvN
  */
 
 /*
  */
 
 #include <cups/string-private.h>
+#include <cups/file.h>
 #include <unistd.h>
+#include <fcntl.h>
+#include <grp.h>
+#include <sys/stat.h>
 #ifdef HAVE_SANDBOX_H
 #  include <sandbox.h>
 #  ifndef SANDBOX_NAMED_EXTERNAL
 #endif /* HAVE_SANDBOX_H */
 
 
+/*
+ * Local functions...
+ */
+
+static void    usage(void) __attribute__((noreturn));
+
+
 /*
  * 'main()' - Apply sandbox profile and execute program.
  */
@@ -43,34 +50,127 @@ 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 */
+  uid_t                uid = getuid();         /* UID */
+  gid_t                gid = getgid();         /* GID */
+  int          niceval = 0;            /* Nice value */
 #ifdef HAVE_SANDBOX_H
-  char *sandbox_error = NULL;          /* Sandbox error, if any */
+  char         *sandbox_error = NULL;  /* Sandbox error, if any */
 #endif /* HAVE_SANDBOX_H */
 
 
+ /*
+  * Parse command-line...
+  */
+
+  for (i = 1; i < argc; i ++)
+  {
+    if (argv[i][0] == '-')
+    {
+      for (opt = argv[i] + 1; *opt; opt ++)
+      {
+        switch (*opt)
+        {
+          case 'g' : /* -g gid */
+              i ++;
+              if (i >= argc)
+                usage();
+
+              gid = (gid_t)atoi(argv[i]);
+              break;
+
+          case 'n' : /* -n nice-value */
+              i ++;
+              if (i >= argc)
+                usage();
+
+              niceval = atoi(argv[i]);
+              break;
+
+          case 'u' : /* -g gid */
+              i ++;
+              if (i >= argc)
+                usage();
+
+              uid = (uid_t)atoi(argv[i]);
+              break;
+
+         default :
+             fprintf(stderr, "cups-exec: Unknown option '-%c'.\n", *opt);
+             usage();
+        }
+      }
+    }
+    else
+      break;
+  }
+
  /*
   * Check that we have enough arguments...
   */
 
-  if (argc < 4)
+  if ((i + 3) > argc)
+  {
+    fputs("cups-exec: Insufficient arguments.\n", stderr);
+    usage();
+  }
+
+ /*
+  * Make sure side and back channel FDs are non-blocking...
+  */
+
+  fcntl(3, F_SETFL, O_NDELAY);
+  fcntl(4, F_SETFL, O_NDELAY);
+
+ /*
+  * Change UID, GID, and nice value...
+  */
+
+  if (uid)
+    nice(niceval);
+
+  if (!getuid())
   {
-    puts("Usage: cups-exec /path/to/profile /path/to/program argv0 argv1 ... "
-         "argvN");
-    return (1);
+    if (setgid(gid))
+      exit(errno + 100);
+
+    if (setgroups(1, &gid))
+      exit(errno + 100);
+
+    if (uid && setuid(uid))
+      exit(errno + 100);
   }
 
+  umask(077);
+
 #ifdef HAVE_SANDBOX_H
  /*
   * Run in a separate security profile...
   */
 
-  if (strcmp(argv[1], "none") &&
-      sandbox_init(argv[1], SANDBOX_NAMED_EXTERNAL, &sandbox_error))
+  if (strcmp(argv[i], "none") &&
+      sandbox_init(argv[i], SANDBOX_NAMED_EXTERNAL, &sandbox_error))
   {
+    cups_file_t        *fp;                    /* File */
+    char       line[1024];             /* Line from file */
+    int                linenum = 0;            /* Line number in file */
+
     fprintf(stderr, "DEBUG: sandbox_init failed: %s (%s)\n", sandbox_error,
            strerror(errno));
     sandbox_free_error(sandbox_error);
-    return (1);
+
+    if ((fp = cupsFileOpen(argv[i], "r")) != NULL)
+    {
+      while (cupsFileGets(fp, line, sizeof(line)))
+      {
+        linenum ++;
+        fprintf(stderr, "DEBUG: %4d  %s\n", linenum, line);
+      }
+      cupsFileClose(fp);
+    }
+
+    return (100 + EINVAL);
   }
 #endif /* HAVE_SANDBOX_H */
 
@@ -78,17 +178,29 @@ main(int  argc,                            /* I - Number of command-line args */
   * Execute the program...
   */
 
-  execv(argv[2], argv + 3);
+  execv(argv[i + 1], argv + i + 2);
 
  /*
   * If we get here, execv() failed...
   */
 
   fprintf(stderr, "DEBUG: execv failed: %s\n", strerror(errno));
-  return (1);
+  return (errno + 100);
+}
+
+
+/*
+ * 'usage()' - Show program usage.
+ */
+
+static void
+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 11144 2013-07-17 02:45:55Z msweet $".
+ * End of "$Id: cups-exec.c 11817 2014-04-15 16:31:11Z msweet $".
  */
index 28a77269682ae2d544c83b63defc48618a02be3d..a84c7b79500bfd0f0b3a892cc2897176f4ead429 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: cups-lpd.c 11623 2014-02-19 20:18:10Z msweet $"
+ * "$Id: cups-lpd.c 11594 2014-02-14 20:09:01Z msweet $"
  *
  * Line Printer Daemon interface for CUPS.
  *
@@ -59,7 +59,7 @@ 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     get_printer(http_t *http, const char *name, char *dest,
-                           int destsize, cups_option_t **options,
+                           size_t destsize, cups_option_t **options,
                            int *accepting, int *shared, ipp_pstate_t *state);
 static int     print_file(http_t *http, int id, const char *filename,
                           const char *docname, const char *user,
@@ -257,21 +257,21 @@ main(int  argc,                           /* I - Number of command-line arguments */
         syslog(LOG_INFO, "Receive print job for %s", dest);
         /* recv_print_job() sends initial status byte */
 
-        status = recv_print_job(dest, num_defaults, defaults);
+        status = (char)recv_print_job(dest, num_defaults, defaults);
        break;
 
     case 0x03 : /* Send queue state (short) */
         syslog(LOG_INFO, "Send queue state (short) for %s %s", dest, list);
        /* no status byte for this command */
 
-        status = send_state(dest, list, 0);
+        status = (char)send_state(dest, list, 0);
        break;
 
     case 0x04 : /* Send queue state (long) */
         syslog(LOG_INFO, "Send queue state (long) for %s %s", dest, list);
        /* no status byte for this command */
 
-        status = send_state(dest, list, 1);
+        status = (char)send_state(dest, list, 1);
        break;
 
     case 0x05 : /* Remove jobs */
@@ -289,7 +289,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
          syslog(LOG_INFO, "Remove jobs %s on %s by %s", list, dest, agent);
 
-         status = remove_jobs(dest, agent, list);
+         status = (char)remove_jobs(dest, agent, list);
         }
        else
          status = 1;
@@ -398,7 +398,7 @@ static int                          /* O - Number of options or -1 on error */
 get_printer(http_t        *http,       /* I - HTTP connection */
             const char    *name,       /* I - Printer name from request */
            char          *dest,        /* I - Destination buffer */
-            int           destsize,    /* I - Size of destination buffer */
+            size_t        destsize,    /* I - Size of destination buffer */
            cups_option_t **options,    /* O - Printer options */
            int           *accepting,   /* O - printer-is-accepting-jobs value */
            int           *shared,      /* O - printer-is-shared value */
@@ -733,7 +733,7 @@ print_file(http_t     *http,                /* I - HTTP connection */
     ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE,
                  "document-format", NULL, format);
 
-  ippAddBoolean(request, IPP_TAG_OPERATION, "last-document", last);
+  ippAddBoolean(request, IPP_TAG_OPERATION, "last-document", (char)last);
 
  /*
   * Do the request...
@@ -1599,7 +1599,7 @@ smart_gets(char *s,                       /* I - Pointer to line buffer */
       break;
     }
     else if (ptr < end)
-      *ptr++ = ch;
+      *ptr++ = (char)ch;
   }
 
   *ptr = '\0';
@@ -1612,5 +1612,5 @@ smart_gets(char *s,                       /* I - Pointer to line buffer */
 
 
 /*
- * End of "$Id: cups-lpd.c 11623 2014-02-19 20:18:10Z msweet $".
+ * End of "$Id: cups-lpd.c 11594 2014-02-14 20:09:01Z msweet $".
  */
index 77557645ae86831d7524b98820a9855dd23be05b..c50e893eb33c0a482f3627eef2aed1845caec555 100644 (file)
@@ -1,17 +1,17 @@
 #!/bin/sh
 #
-# "$Id: cups.sh.in 3940 2012-10-15 21:02:10Z msweet $"
+# "$Id: cups.sh.in 11342 2013-10-18 20:36:01Z msweet $"
 #
-#   Startup/shutdown script for CUPS.
+# Startup/shutdown script for CUPS.
 #
-#   Copyright 2007-2012 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/".
 #
 
 #### OS-Dependent Information
@@ -115,8 +115,7 @@ unset TMPDIR
 
 #
 # Make sure we have the standard program directories in the path
-# since some operating systems (this means YOU HP-UX!) don't
-# provide a standard path on boot-up...
+# since some operating systems don't provide a standard path on boot-up...
 #
 
 if test "x$PATH" = x; then
@@ -132,19 +131,9 @@ export PATH
 #
 
 case "`uname`" in
-       HP-UX* | AIX* | SINIX*)
-               pid=`ps -e | awk '{if (match($4, ".*/cupsd$") || $4 == "cupsd") print $1}'`
-               ;;
        SunOS*)
                pid=`ps -e | nawk '{if (match($4, ".*/cupsd$") || $4 == "cupsd") print $1}'`
                ;;
-       UnixWare*)
-               pid=`ps -e | awk '{if (match($6, ".*/cupsd$") || $6 == "cupsd") print $1}'`
-               . /etc/TIMEZONE
-               ;;
-       OSF1*)
-               pid=`ps -e | awk '{if (match($5, ".*/cupsd$") || $5 == "cupsd") print $1}'`
-               ;;
        Linux* | *BSD* | Darwin*)
                pid=`ps ax | awk '{if (match($5, ".*/cupsd$") || $5 == "cupsd") print $1}'`
                ;;
@@ -197,16 +186,6 @@ case $1 in
                fi
                ;;
 
-       start_msg)
-               # HP-UX non-standard...
-               echo "Starting CUPS Server"
-               ;;
-
-       stop_msg)
-               # HP-UX non-standard...
-               echo "Starting CUPS Server"
-               ;;
-
        *)
                echo "Usage: cups {reload|restart|start|status|stop}"
                exit 1
@@ -221,5 +200,5 @@ exit 0
 
 
 #
-# End of "$Id: cups.sh.in 3940 2012-10-15 21:02:10Z msweet $".
+# End of "$Id: cups.sh.in 11342 2013-10-18 20:36:01Z msweet $".
 #
index 379def64291ec277ceb407c263460f868102ad04..f8b2c1195f45b2fe3299ab3afb7cc9e8731472dc 100644 (file)
@@ -1,16 +1,16 @@
 /*
- * "$Id: cupsd.h 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: cupsd.h 11717 2014-03-21 16:42:53Z msweet $"
  *
- *   Main header file for the CUPS scheduler.
+ * Main header file for the CUPS scheduler.
  *
- *   Copyright 2007-2013 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"
- *   "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/".
  */
 
 
@@ -144,10 +144,8 @@ typedef void (*cupsd_selfunc_t)(void *data);
  * Globals...
  */
 
-VAR int                        TestConfigFile  VALUE(0),
+VAR int                        TestConfigFile  VALUE(0);
                                        /* Test the cupsd.conf file? */
-                       UseProfiles     VALUE(1);
-                                       /* Use security profiles for child procs? */
 VAR int                        MaxFDs          VALUE(0);
                                        /* Maximum number of files */
 
@@ -160,10 +158,10 @@ VAR int                   NeedReload      VALUE(RELOAD_ALL),
 VAR void               *DefaultProfile VALUE(0);
                                        /* Default security profile */
 
-#ifdef HAVE_LAUNCH_H
-VAR int                        Launchd         VALUE(0);
-                                       /* Running from launchd */
-#endif /* HAVE_LAUNCH_H */
+#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+VAR int                        OnDemand        VALUE(0);
+                                       /* Launched on demand */
+#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
 
 
 /*
@@ -203,11 +201,10 @@ extern void               cupsdSetStringf(char **s, const char *f, ...)
                        __attribute__ ((__format__ (__printf__, 2, 3)));
 
 /* process.c */
-extern void            *cupsdCreateProfile(int job_id);
+extern void            *cupsdCreateProfile(int job_id, int allow_networking);
 extern void            cupsdDestroyProfile(void *profile);
 extern int             cupsdEndProcess(int pid, int force);
-extern const char      *cupsdFinishProcess(int pid, char *name, int namelen,
-                                           int *job_id);
+extern const char      *cupsdFinishProcess(int pid, char *name, size_t namelen, int *job_id);
 extern int             cupsdStartProcess(const char *command, char *argv[],
                                          char *envp[], int infd, int outfd,
                                          int errfd, int backfd, int sidefd,
@@ -231,5 +228,5 @@ extern void         cupsdStopServer(void);
 
 
 /*
- * End of "$Id: cupsd.h 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: cupsd.h 11717 2014-03-21 16:42:53Z msweet $".
  */
index 4102277a232263c59353ad74ec480dbc469d8848..75300fb9a8d91cab7145b6340c3dc63391d4adc6 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: cupsfilter.c 11772 2014-03-28 15:08:30Z msweet $"
+ * "$Id: cupsfilter.c 11770 2014-03-28 14:49:58Z msweet $"
  *
  * Filtering program for CUPS.
  *
@@ -95,7 +95,8 @@ int                                   /* O - Exit status */
 main(int  argc,                                /* I - Number of command-line args */
      char *argv[])                     /* I - Command-line arguments */
 {
-  int          i;                      /* Looping vars */
+  int          i,                      /* Looping vars */
+               list_filters = 0;       /* Just list the filters? */
   const char   *command,               /* Command name */
                *opt,                   /* Current option */
                *printer;               /* Printer name */
@@ -164,168 +165,175 @@ main(int  argc,                         /* I - Number of command-line args */
   _cupsSetLocale(argv);
 
   for (i = 1; i < argc; i ++)
+  {
     if (argv[i][0] == '-')
     {
-      for (opt = argv[i] + 1; *opt; opt ++)
-        switch (*opt)
+      if (!strcmp(argv[i], "--list-filters"))
+      {
+        list_filters = 1;
+      }
+      else if (!strcmp(argv[i], "--"))
+      {
+       i ++;
+       if (i < argc && !infile)
+         infile = argv[i];
+       else
+         usage(opt);
+      }
+      else
+      {
+       for (opt = argv[i] + 1; *opt; opt ++)
        {
-         case '-' : /* Next argument is a filename... */
-             i ++;
-             if (i < argc && !infile)
-               infile = argv[i];
-             else
-               usage(opt);
-             break;
-
-          case 'a' : /* Specify option... */
-             i ++;
-             if (i < argc)
-               num_options = cupsParseOptions(argv[i], num_options, &options);
-             else
-               usage(opt);
-             break;
-
-          case 'c' : /* Specify cups-files.conf file location... */
-             i ++;
-             if (i < argc)
-             {
-               if (!strcmp(command, "convert"))
-                 num_options = cupsAddOption("copies", argv[i], num_options,
-                                             &options);
+         switch (*opt)
+         {
+           case 'a' : /* Specify option... */
+               i ++;
+               if (i < argc)
+                 num_options = cupsParseOptions(argv[i], num_options, &options);
                else
-                 strlcpy(cupsfilesconf, argv[i], sizeof(cupsfilesconf));
-             }
-             else
-               usage(opt);
-             break;
-
-          case 'd' : /* Specify the real printer name */
-             i ++;
-             if (i < argc)
-               printer = argv[i];
-             else
-               usage(opt);
-             break;
-
-         case 'D' : /* Delete input file after conversion */
-             removeinfile = 1;
-             break;
-
-          case 'e' : /* Use every filter from the PPD file */
-             all_filters = 1;
-             break;
-
-          case 'f' : /* Specify input file... */
-             i ++;
-             if (i < argc && !infile)
-               infile = argv[i];
-             else
-               usage(opt);
-             break;
-
-          case 'i' : /* Specify source MIME type... */
-             i ++;
-             if (i < argc)
-             {
-               if (sscanf(argv[i], "%15[^/]/%255s", super, type) != 2)
                  usage(opt);
+               break;
 
-                srctype = argv[i];
-             }
-             else
-               usage(opt);
-             break;
+           case 'c' : /* Specify cups-files.conf file location... */
+               i ++;
+               if (i < argc)
+               {
+                 if (!strcmp(command, "convert"))
+                   num_options = cupsAddOption("copies", argv[i], num_options, &options);
+                 else
+                   strlcpy(cupsfilesconf, argv[i], sizeof(cupsfilesconf));
+               }
+               else
+                 usage(opt);
+               break;
 
-          case 'j' : /* Get job file or specify destination MIME type... */
-              if (strcmp(command, "convert"))
-             {
-               i ++;
+           case 'd' : /* Specify the real printer name */
+               i ++;
+               if (i < argc)
+                 printer = argv[i];
+               else
+                 usage(opt);
+               break;
+
+           case 'D' : /* Delete input file after conversion */
+               removeinfile = 1;
+               break;
+
+           case 'e' : /* Use every filter from the PPD file */
+               all_filters = 1;
+               break;
+
+           case 'f' : /* Specify input file... */
+               i ++;
+               if (i < argc && !infile)
+                 infile = argv[i];
+               else
+                 usage(opt);
+               break;
+
+           case 'i' : /* Specify source MIME type... */
+               i ++;
                if (i < argc)
                {
-                 get_job_file(argv[i]);
-                 infile = TempFile;
+                 if (sscanf(argv[i], "%15[^/]/%255s", super, type) != 2)
+                   usage(opt);
+
+                 srctype = argv[i];
                }
                else
                  usage(opt);
+               break;
+
+           case 'j' : /* Get job file or specify destination MIME type... */
+               if (strcmp(command, "convert"))
+               {
+                 i ++;
+                 if (i < argc)
+                 {
+                   get_job_file(argv[i]);
+                   infile = TempFile;
+                 }
+                 else
+                   usage(opt);
 
-                break;
-             }
+                 break;
+               }
 
-          case 'm' : /* Specify destination MIME type... */
-             i ++;
-             if (i < argc)
-             {
-               if (sscanf(argv[i], "%15[^/]/%255s", super, type) != 2)
+           case 'm' : /* Specify destination MIME type... */
+               i ++;
+               if (i < argc)
+               {
+                 if (sscanf(argv[i], "%15[^/]/%255s", super, type) != 2)
+                   usage(opt);
+
+                 dsttype = argv[i];
+               }
+               else
                  usage(opt);
+               break;
 
-                dsttype = argv[i];
-             }
-             else
-               usage(opt);
-             break;
-
-          case 'n' : /* Specify number of copies... */
-             i ++;
-             if (i < argc)
-               num_options = cupsAddOption("copies", argv[i], num_options,
-                                           &options);
-             else
-               usage(opt);
-             break;
-
-          case 'o' : /* Specify option(s) or output filename */
-             i ++;
-             if (i < argc)
-             {
-               if (!strcmp(command, "convert"))
+           case 'n' : /* Specify number of copies... */
+               i ++;
+               if (i < argc)
+                 num_options = cupsAddOption("copies", argv[i], num_options, &options);
+               else
+                 usage(opt);
+               break;
+
+           case 'o' : /* Specify option(s) or output filename */
+               i ++;
+               if (i < argc)
                {
-                 if (outfile)
-                   usage(NULL);
+                 if (!strcmp(command, "convert"))
+                 {
+                   if (outfile)
+                     usage(NULL);
+                   else
+                     outfile = argv[i];
+                 }
                  else
-                   outfile = argv[i];
+                   num_options = cupsParseOptions(argv[i], num_options, &options);
                }
                else
-                 num_options = cupsParseOptions(argv[i], num_options,
-                                                &options);
-             }
-             else
-               usage(opt);
-             break;
-
-          case 'p' : /* Specify PPD file... */
-          case 'P' : /* Specify PPD file... */
-             i ++;
-             if (i < argc)
-               ppdfile = argv[i];
-             else
-               usage(opt);
-             break;
-
-          case 't' : /* Specify title... */
-          case 'J' : /* Specify title... */
-             i ++;
-             if (i < argc)
-               title = argv[i];
-             else
-               usage(opt);
-             break;
-
-         case 'u' : /* Delete PPD file after conversion */
-             removeppd = 1;
-             break;
-
-          case 'U' : /* Specify username... */
-             i ++;
-             if (i < argc)
-               user = argv[i];
-             else
-               usage(opt);
-             break;
-
-         default : /* Something we don't understand... */
-             usage(opt);
-             break;
+                 usage(opt);
+               break;
+
+           case 'p' : /* Specify PPD file... */
+           case 'P' : /* Specify PPD file... */
+               i ++;
+               if (i < argc)
+                 ppdfile = argv[i];
+               else
+                 usage(opt);
+               break;
+
+           case 't' : /* Specify title... */
+           case 'J' : /* Specify title... */
+               i ++;
+               if (i < argc)
+                 title = argv[i];
+               else
+                 usage(opt);
+               break;
+
+           case 'u' : /* Delete PPD file after conversion */
+               removeppd = 1;
+               break;
+
+           case 'U' : /* Specify username... */
+               i ++;
+               if (i < argc)
+                 user = argv[i];
+               else
+                 usage(opt);
+               break;
+
+           default : /* Something we don't understand... */
+               usage(opt);
+               break;
+         }
        }
+      }
     }
     else if (!infile)
     {
@@ -340,6 +348,7 @@ main(int  argc,                             /* I - Number of command-line args */
                     _("cupsfilter: Only one filename can be specified."));
       usage(NULL);
     }
+  }
 
   if (!infile && !srctype)
     usage(NULL);
@@ -473,12 +482,31 @@ main(int  argc,                           /* I - Number of command-line args */
     filters = prefilters;
   }
 
- /*
-  * Do it!
-  */
+  if (list_filters)
+  {
+   /*
+    * List filters...
+    */
+
+    mime_filter_t      *filter;        /* Current filter */
+
+    for (filter = (mime_filter_t *)cupsArrayFirst(filters);
+        filter;
+        filter = (mime_filter_t *)cupsArrayNext(filters))
+      if (strcmp(filter->filter, "-"))
+        _cupsLangPuts(stdout, filter->filter);
 
-  status = exec_filters(src, filters, infile, outfile, ppdfile, printer, user,
-                        title, num_options, options);
+    status = 0;
+  }
+  else
+  {
+   /*
+    * Run filters...
+    */
+
+    status = exec_filters(src, filters, infile, outfile, ppdfile, printer, user,
+                         title, num_options, options);
+  }
 
  /*
   * Remove files as needed, then exit...
@@ -558,7 +586,7 @@ add_printer_filter(
   {
     char       *ptr;                   /* Pointer into maxsize(nnnn) program */
 
-    maxsize = strtoll(program + 8, &ptr, 10);
+    maxsize = (size_t)strtoll(program + 8, &ptr, 10);
 
     if (*ptr != ')')
     {
@@ -727,7 +755,7 @@ escape_options(
 {
   int          i;                      /* Looping var */
   cups_option_t        *option;                /* Current option */
-  int          bytes;                  /* Number of bytes needed */
+  size_t       bytes;                  /* Number of bytes needed */
   char         *s,                     /* Option string */
                *sptr,                  /* Pointer into string */
                *vptr;                  /* Pointer into value */
@@ -755,7 +783,7 @@ escape_options(
     if (sptr > s)
       *sptr++ = ' ';
 
-    strlcpy(sptr, option->name, bytes - (sptr - s));
+    strlcpy(sptr, option->name, bytes - (size_t)(sptr - s));
     sptr += strlen(sptr);
     *sptr++ = '=';
 
@@ -1396,9 +1424,7 @@ read_cups_files_conf(
     cupsFileClose(fp);
   }
 
-  snprintf(line, sizeof(line),
-           "%s/filter:" CUPS_BINDIR ":" CUPS_SBINDIR ":/bin:/usr/bin",
-          ServerBin);
+  snprintf(line, sizeof(line), "%s/filter:" CUPS_BINDIR ":" CUPS_SBINDIR ":/bin:/usr/bin", ServerBin);
   set_string(&Path, line);
 
   return (0);
@@ -1450,38 +1476,30 @@ static void
 usage(const char *opt)                 /* I - Incorrect option, if any */
 {
   if (opt)
-    _cupsLangPrintf(stderr, _("%s: Unknown option \"%c\"."), "cupsfilter",
-                    *opt);
+    _cupsLangPrintf(stderr, _("%s: Unknown option \"%c\"."), "cupsfilter", *opt);
 
-  _cupsLangPuts(stdout, _("Usage: cupsfilter [ options ] filename"));
+  _cupsLangPuts(stdout, _("Usage: cupsfilter [ options ] [ -- ] filename"));
   _cupsLangPuts(stdout, _("Options:"));
-  _cupsLangPuts(stdout, _("  -D                      Remove the input file "
-                         "when finished."));
+  _cupsLangPuts(stdout, _("  --list-filters          List filters that will be used."));
+  _cupsLangPuts(stdout, _("  -D                      Remove the input file when finished."));
   _cupsLangPuts(stdout, _("  -P filename.ppd         Set PPD file."));
   _cupsLangPuts(stdout, _("  -U username             Specify username."));
-  _cupsLangPuts(stdout, _("  -c cups-files.conf      Set cups-files.conf file to "
-                         "use."));
-  _cupsLangPuts(stdout, _("  -d printer              Use the named "
-                         "printer."));
-  _cupsLangPuts(stdout, _("  -e                      Use every filter from "
-                         "the PPD file."));
-  _cupsLangPuts(stdout, _("  -i mime/type            Set input MIME type "
-                         "(otherwise auto-typed)."));
-  _cupsLangPuts(stdout, _("  -j job-id[,N]           Filter file N from the "
-                         "specified job (default is file 1)."));
-  _cupsLangPuts(stdout, _("  -m mime/type            Set output MIME type "
-                         "(otherwise application/pdf)."));
+  _cupsLangPuts(stdout, _("  -c cups-files.conf      Set cups-files.conf file to use."));
+  _cupsLangPuts(stdout, _("  -d printer              Use the named printer."));
+  _cupsLangPuts(stdout, _("  -e                      Use every filter from the PPD file."));
+  _cupsLangPuts(stdout, _("  -i mime/type            Set input MIME type (otherwise auto-typed)."));
+  _cupsLangPuts(stdout, _("  -j job-id[,N]           Filter file N from the specified job (default is file 1)."));
+  _cupsLangPuts(stdout, _("  -m mime/type            Set output MIME type (otherwise application/pdf)."));
   _cupsLangPuts(stdout, _("  -n copies               Set number of copies."));
   _cupsLangPuts(stdout, _("  -o name=value           Set option(s)."));
   _cupsLangPuts(stdout, _("  -p filename.ppd         Set PPD file."));
   _cupsLangPuts(stdout, _("  -t title                Set title."));
-  _cupsLangPuts(stdout, _("  -u                      Remove the PPD file "
-                         "when finished."));
+  _cupsLangPuts(stdout, _("  -u                      Remove the PPD file when finished."));
 
   exit(1);
 }
 
 
 /*
- * End of "$Id: cupsfilter.c 11772 2014-03-28 15:08:30Z msweet $".
+ * End of "$Id: cupsfilter.c 11770 2014-03-28 14:49:58Z msweet $".
  */
index 20cd61be08fc964d640b966decb89edbb714a014..7c18404399340836f66c656baebe5be63afa099a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: dirsvc.c 11906 2014-06-09 18:33:24Z msweet $"
+ * "$Id: dirsvc.c 11871 2014-05-09 20:57:11Z msweet $"
  *
  * Directory services routines for the CUPS scheduler.
  *
@@ -1816,5 +1816,5 @@ update_smb(int onoff)                     /* I - 1 = turn on, 0 = turn off */
 
 
 /*
- * End of "$Id: dirsvc.c 11906 2014-06-09 18:33:24Z msweet $".
+ * End of "$Id: dirsvc.c 11871 2014-05-09 20:57:11Z msweet $".
  */
index 1d2529057a087be22706e2c9f163394295f7d19b..ae91b9e8b05464efc3ceff759d374a251b789360 100644 (file)
@@ -1,30 +1,16 @@
 /*
- * "$Id: file.c 11201 2013-07-26 21:27:27Z msweet $"
+ * "$Id: file.c 11594 2014-02-14 20:09:01Z msweet $"
  *
- *   File functions for the CUPS scheduler.
+ * File functions for the CUPS scheduler.
  *
- *   Copyright 2007-2013 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"
- *   "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:
- *
- *   cupsdCleanFiles()          - Clean out old files.
- *   cupsdCloseCreatedConfFile() - Close a created configuration file and move
- *                                into place.
- *   cupsdClosePipe()           - Close a pipe as necessary.
- *   cupsdCreateConfFile()      - Create a configuration file safely.
- *   cupsdOpenConfFile()        - Open a configuration file.
- *   cupsdOpenPipe()            - Create a pipe which is closed on exec.
- *   cupsdRemoveFile()          - Remove a file securely.
- *   cupsdUnlinkOrRemoveFile()  - Unlink or securely remove a file depending
- *                                on the configuration.
- *   overwrite_data()           - Overwrite the data in 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"
+ * "LICENSE" which should have been included with this file.  If this
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -445,7 +431,7 @@ overwrite_data(int        fd,               /* I - File descriptor */
     else
       bytes = filesize;
 
-    if ((bytes = write(fd, buffer, bytes)) < 0)
+    if ((bytes = write(fd, buffer, (size_t)bytes)) < 0)
       return (-1);
 
     filesize -= bytes;
@@ -461,5 +447,5 @@ overwrite_data(int        fd,               /* I - File descriptor */
 
 
 /*
- * End of "$Id: file.c 11201 2013-07-26 21:27:27Z msweet $".
+ * End of "$Id: file.c 11594 2014-02-14 20:09:01Z msweet $".
  */
index 0607caa8bacb3cb807ed697d0a27d22fd8c87667..9806f10582cea9363d0eaf6f2a94333e3cb41c03 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: ipp.c 11734 2014-03-25 18:01:47Z msweet $"
+ * "$Id: ipp.c 12067 2014-07-31 00:02:30Z msweet $"
  *
  * IPP routines for the CUPS scheduler.
  *
@@ -129,15 +129,12 @@ static void       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,
-                               int bufsize);
-static char    *url_encode_string(const char *s, char *buffer, int bufsize);
+static void    url_encode_attr(ipp_attribute_t *attr, char *buffer, size_t bufsize);
+static char    *url_encode_string(const char *s, char *buffer, size_t bufsize);
 static int     user_allowed(cupsd_printer_t *p, const char *username);
 static void    validate_job(cupsd_client_t *con, ipp_attribute_t *uri);
 static int     validate_name(const char *name);
-static int     validate_user(cupsd_job_t *job, cupsd_client_t *con,
-                             const char *owner, char *username,
-                             int userlen);
+static int     validate_user(cupsd_job_t *job, cupsd_client_t *con, const char *owner, char *username, size_t userlen);
 
 
 /*
@@ -159,7 +156,7 @@ cupsdProcessIPPRequest(
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2,
                   "cupsdProcessIPPRequest(%p[%d]): operation_id = %04x",
-                  con, con->http.fd, con->request->request.op.operation_id);
+                  con, con->number, con->request->request.op.operation_id);
 
  /*
   * First build an empty response message for this request...
@@ -187,7 +184,7 @@ cupsdProcessIPPRequest(
 
     cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL,
                   "%04X %s Bad request version number %d.%d",
-                 IPP_VERSION_NOT_SUPPORTED, con->http.hostname,
+                 IPP_VERSION_NOT_SUPPORTED, con->http->hostname,
                   con->request->request.any.version[0],
                  con->request->request.any.version[1]);
 
@@ -204,7 +201,7 @@ cupsdProcessIPPRequest(
 
     cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL,
                   "%04X %s Bad request ID %d",
-                 IPP_BAD_REQUEST, con->http.hostname,
+                 IPP_BAD_REQUEST, con->http->hostname,
                   con->request->request.any.request_id);
 
     send_ipp_status(con, IPP_BAD_REQUEST, _("Bad request ID %d."),
@@ -214,7 +211,7 @@ cupsdProcessIPPRequest(
   {
     cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL,
                   "%04X %s No attributes in request",
-                 IPP_BAD_REQUEST, con->http.hostname);
+                 IPP_BAD_REQUEST, con->http->hostname);
 
     send_ipp_status(con, IPP_BAD_REQUEST, _("No attributes in request."));
   }
@@ -236,7 +233,7 @@ cupsdProcessIPPRequest(
 
        cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL,
                       "%04X %s Attribute groups are out of order",
-                     IPP_BAD_REQUEST, con->http.hostname);
+                     IPP_BAD_REQUEST, con->http->hostname);
 
        send_ipp_status(con, IPP_BAD_REQUEST,
                        _("Attribute groups are out of order (%x < %x)."),
@@ -326,7 +323,7 @@ cupsdProcessIPPRequest(
                        charset->values[0].string.text);
        cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL,
                      "%04X %s Unsupported attributes-charset value \"%s\"",
-                     IPP_CHARSET, con->http.hostname,
+                     IPP_CHARSET, con->http->hostname,
                      charset->values[0].string.text);
        send_ipp_status(con, IPP_BAD_REQUEST,
                        _("Unsupported character set \"%s\"."),
@@ -353,7 +350,7 @@ cupsdProcessIPPRequest(
 
          cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL,
                        "%04X %s Missing attributes-charset attribute",
-                       IPP_BAD_REQUEST, con->http.hostname);
+                       IPP_BAD_REQUEST, con->http->hostname);
         }
 
         if (!language)
@@ -363,7 +360,7 @@ cupsdProcessIPPRequest(
 
          cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL,
                        "%04X %s Missing attributes-natural-language attribute",
-                       IPP_BAD_REQUEST, con->http.hostname);
+                       IPP_BAD_REQUEST, con->http->hostname);
         }
 
         if (!uri)
@@ -374,7 +371,7 @@ cupsdProcessIPPRequest(
 
          cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL,
                        "%04X %s Missing printer-uri, job-uri, or ppd-name "
-                       "attribute", IPP_BAD_REQUEST, con->http.hostname);
+                       "attribute", IPP_BAD_REQUEST, con->http->hostname);
         }
 
        cupsdLogMessage(CUPSD_LOG_DEBUG, "Request attributes follow...");
@@ -405,7 +402,7 @@ cupsdProcessIPPRequest(
          */
 
          if (!strcmp(username->values[0].string.text, "root") &&
-             _cups_strcasecmp(con->http.hostname, "localhost") &&
+             _cups_strcasecmp(con->http->hostname, "localhost") &&
              strcmp(con->username, "root"))
          {
           /*
@@ -613,7 +610,7 @@ cupsdProcessIPPRequest(
          default :
              cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL,
                            "%04X %s Operation %04X (%s) not supported",
-                           IPP_OPERATION_NOT_SUPPORTED, con->http.hostname,
+                           IPP_OPERATION_NOT_SUPPORTED, con->http->hostname,
                            con->request->request.op.operation_id,
                            ippOpString(con->request->request.op.operation_id));
 
@@ -638,79 +635,62 @@ cupsdProcessIPPRequest(
                     con->response->request.status.status_code
                        != IPP_NOT_FOUND ? CUPSD_LOG_ERROR : CUPSD_LOG_DEBUG,
                     "[Client %d] Returning IPP %s for %s (%s) from %s",
-                   con->http.fd,
+                   con->number,
                    ippErrorString(con->response->request.status.status_code),
                    ippOpString(con->request->request.op.operation_id),
                    uri ? uri->values[0].string.text : "no URI",
-                   con->http.hostname);
+                   con->http->hostname);
 
-    if (cupsdSendHeader(con, HTTP_OK, "application/ipp", CUPSD_AUTH_NONE))
-    {
-#ifdef CUPSD_USE_CHUNKING
-     /*
-      * Because older versions of CUPS (1.1.17 and older) and some IPP
-      * clients do not implement chunking properly, we cannot use
-      * chunking by default.  This may become the default in future
-      * CUPS releases, or we might add a configuration directive for
-      * it.
-      */
-
-      if (con->http.version == HTTP_1_1)
-      {
-        cupsdLogMessage(CUPSD_LOG_DEBUG,
-                        "[Client %d] Transfer-Encoding: chunked",
-                        con->http.fd);
+    httpClearFields(con->http);
 
-       if (httpPrintf(HTTP(con), "Transfer-Encoding: chunked\r\n\r\n") < 0)
-         return (0);
+#ifdef CUPSD_USE_CHUNKING
+   /*
+    * Because older versions of CUPS (1.1.17 and older) and some IPP
+    * clients do not implement chunking properly, we cannot use
+    * chunking by default.  This may become the default in future
+    * CUPS releases, or we might add a configuration directive for
+    * it.
+    */
 
-       if (cupsdFlushHeader(con) < 0)
-         return (0);
+    if (con->http->version == HTTP_1_1)
+    {
+      cupsdLogMessage(CUPSD_LOG_DEBUG,
+                     "[Client %d] Transfer-Encoding: chunked",
+                     con->number);
 
-       con->http.data_encoding = HTTP_ENCODE_CHUNKED;
-      }
-      else
+      cupsdSetLength(con->http, 0);
+    }
+    else
 #endif /* CUPSD_USE_CHUNKING */
-      {
-        size_t length;                 /* Length of response */
-
-
-       length = ippLength(con->response);
-
-       if (con->file >= 0 && !con->pipe_pid)
-       {
-         struct stat   fileinfo;       /* File information */
-
-          if (!fstat(con->file, &fileinfo))
-           length += fileinfo.st_size;
-       }
+    {
+      size_t   length;                 /* Length of response */
 
-        cupsdLogMessage(CUPSD_LOG_DEBUG,
-                        "[Client %d] Content-Length: " CUPS_LLFMT,
-                        con->http.fd, CUPS_LLCAST length);
-       if (httpPrintf(HTTP(con), "Content-Length: " CUPS_LLFMT "\r\n\r\n",
-                      CUPS_LLCAST length) < 0)
-         return (0);
 
-       if (cupsdFlushHeader(con) < 0)
-         return (0);
+      length = ippLength(con->response);
 
-       con->http.data_encoding  = HTTP_ENCODE_LENGTH;
-       con->http.data_remaining = length;
+      if (con->file >= 0 && !con->pipe_pid)
+      {
+       struct stat     fileinfo;       /* File information */
 
-       if (con->http.data_remaining <= INT_MAX)
-         con->http._data_remaining = con->http.data_remaining;
-       else
-         con->http._data_remaining = INT_MAX;
+       if (!fstat(con->file, &fileinfo))
+         length += (size_t)fileinfo.st_size;
       }
 
-      cupsdAddSelect(con->http.fd, (cupsd_selfunc_t)cupsdReadClient,
-                     (cupsd_selfunc_t)cupsdWriteClient, con);
+      cupsdLogMessage(CUPSD_LOG_DEBUG,
+                     "[Client %d] Content-Length: " CUPS_LLFMT,
+                     con->number, CUPS_LLCAST length);
+      httpSetLength(con->http, length);
+    }
 
+    if (cupsdSendHeader(con, HTTP_OK, "application/ipp", CUPSD_AUTH_NONE))
+    {
      /*
       * Tell the caller the response header was sent successfully...
       */
 
+      cupsdAddSelect(httpGetFd(con->http), (cupsd_selfunc_t)cupsdReadClient,
+                    (cupsd_selfunc_t)cupsdWriteClient, con);
+
       return (1);
     }
     else
@@ -792,7 +772,7 @@ accept_jobs(cupsd_client_t  *con,   /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "accept_jobs(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * Is the destination valid?
@@ -877,7 +857,7 @@ add_class(cupsd_client_t  *con,             /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "add_class(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * Do we have a valid URI?
@@ -1147,7 +1127,7 @@ add_file(cupsd_client_t *con,             /* I - Connection to client */
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2,
                  "add_file(con=%p[%d], job=%d, filetype=%s/%s, "
-                 "compression=%d)", con, con ? con->http.fd : -1, job->id,
+                 "compression=%d)", con, con ? con->number : -1, job->id,
                  filetype->super, filetype->type, compression);
 
  /*
@@ -1162,9 +1142,9 @@ add_file(cupsd_client_t *con,             /* I - Connection to client */
   else
   {
     compressions = (int *)realloc(job->compressions,
-                                  (job->num_files + 1) * sizeof(int));
+                                  (size_t)(job->num_files + 1) * sizeof(int));
     filetypes    = (mime_type_t **)realloc(job->filetypes,
-                                           (job->num_files + 1) *
+                                           (size_t)(job->num_files + 1) *
                                           sizeof(mime_type_t *));
   }
 
@@ -1238,7 +1218,7 @@ add_job(cupsd_client_t  *con,             /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "add_job(%p[%d], %p(%s), %p(%s/%s))",
-                  con, con->http.fd, printer, printer->name,
+                  con, con->number, printer, printer->name,
                  filetype, filetype ? filetype->super : "none",
                  filetype ? filetype->type : "none");
 
@@ -1247,8 +1227,8 @@ add_job(cupsd_client_t  *con,             /* I - Client connection */
   */
 
   if (!printer->shared &&
-      _cups_strcasecmp(con->http.hostname, "localhost") &&
-      _cups_strcasecmp(con->http.hostname, ServerName))
+      _cups_strcasecmp(con->http->hostname, "localhost") &&
+      _cups_strcasecmp(con->http->hostname, ServerName))
   {
     send_ipp_status(con, IPP_NOT_AUTHORIZED,
                     _("The printer or class is not shared."));
@@ -1274,8 +1254,8 @@ add_job(cupsd_client_t  *con,             /* I - Client connection */
     return (NULL);
   }
 #ifdef HAVE_SSL
-  else if (auth_info && !con->http.tls &&
-           !httpAddrLocalhost(con->http.hostaddr))
+  else if (auth_info && !con->http->tls &&
+           !httpAddrLocalhost(con->http->hostaddr))
   {
    /*
     * Require encryption of auth-info over non-local connections...
@@ -1531,8 +1511,7 @@ add_job(cupsd_client_t  *con,             /* I - Client connection */
   }
 
   if ((attr = ippFindAttribute(con->request, "job-name", IPP_TAG_ZERO)) == NULL)
-    ippAddString(con->request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL,
-                 "Untitled");
+    ippAddString(con->request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL, "Untitled");
   else if ((attr->value_tag != IPP_TAG_NAME &&
             attr->value_tag != IPP_TAG_NAMELANG) ||
            attr->num_values != 1)
@@ -1612,6 +1591,9 @@ add_job(cupsd_client_t  *con,             /* I - Client connection */
       ippDeleteAttribute(job->attrs, auth_info);
   }
 
+  if ((attr = ippFindAttribute(con->request, "job-name", IPP_TAG_NAME)) != NULL)
+    cupsdSetString(&(job->name), attr->values[0].string.text);
+
   if ((attr = ippFindAttribute(job->attrs, "job-originating-host-name",
                                IPP_TAG_ZERO)) != NULL)
   {
@@ -1621,7 +1603,7 @@ add_job(cupsd_client_t  *con,             /* I - Client connection */
 
     if (attr->value_tag != IPP_TAG_NAME ||
         attr->num_values != 1 ||
-        strcmp(con->http.hostname, "localhost"))
+        strcmp(con->http->hostname, "localhost"))
     {
      /*
       * Can't override the value if we aren't connected via localhost.
@@ -1666,7 +1648,7 @@ add_job(cupsd_client_t  *con,             /* I - Client connection */
 
       attr->value_tag             = IPP_TAG_NAME;
       attr->num_values            = 1;
-      attr->values[0].string.text = _cupsStrAlloc(con->http.hostname);
+      attr->values[0].string.text = _cupsStrAlloc(con->http->hostname);
     }
 
     attr->group_tag = IPP_TAG_JOB;
@@ -1679,7 +1661,7 @@ add_job(cupsd_client_t  *con,             /* I - Client connection */
     */
 
     ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_NAME,
-                "job-originating-host-name", NULL, con->http.hostname);
+                "job-originating-host-name", NULL, con->http->hostname);
   }
 
   ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER, "time-at-creation",
@@ -1706,8 +1688,7 @@ add_job(cupsd_client_t  *con,             /* I - Client connection */
   ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-printer-uri", NULL,
                printer->uri);
 
-  if ((attr = ippFindAttribute(job->attrs, "job-k-octets",
-                               IPP_TAG_INTEGER)) != NULL)
+  if ((attr = ippFindAttribute(job->attrs, "job-k-octets", IPP_TAG_INTEGER)) != NULL)
     attr->values[0].integer = 0;
   else
     ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-k-octets", 0);
@@ -2132,7 +2113,7 @@ add_job_subscriptions(
       {
        sub->user_data_len = user_data->values[0].unknown.length;
        memcpy(sub->user_data, user_data->values[0].unknown.data,
-              sub->user_data_len);
+              (size_t)sub->user_data_len);
       }
 
       ippAddSeparator(con->response);
@@ -2201,8 +2182,8 @@ add_job_uuid(cupsd_job_t *job)            /* I - Job */
 
   if (!ippFindAttribute(job->attrs, "job-uuid", IPP_TAG_URI))
     ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-uuid", NULL,
-                _httpAssembleUUID(ServerName, RemotePort, job->dest, job->id,
-                                  uuid, sizeof(uuid)));
+                httpAssembleUUID(ServerName, RemotePort, job->dest, job->id,
+                                 uuid, sizeof(uuid)));
 }
 
 
@@ -2235,7 +2216,7 @@ add_printer(cupsd_client_t  *con, /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "add_printer(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * Do we have a valid URI?
@@ -2856,7 +2837,7 @@ add_printer_state_reasons(
 {
   cupsdLogMessage(CUPSD_LOG_DEBUG2,
                   "add_printer_state_reasons(%p[%d], %p[%s])",
-                  con, con->http.fd, p, p->name);
+                  con, con->number, p, p->name);
 
   if (p->num_reasons == 0)
     ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_KEYWORD,
@@ -2882,7 +2863,7 @@ add_queued_job_count(
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "add_queued_job_count(%p[%d], %p[%s])",
-                  con, con->http.fd, p, p->name);
+                  con, con->number, p, p->name);
 
   count = cupsdGetPrinterJobCount(p->name);
 
@@ -2954,7 +2935,7 @@ authenticate_job(cupsd_client_t  *con,    /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "authenticate_job(%p[%d], %s)",
-                  con, con->http.fd, uri->values[0].string.text);
+                  con, con->number, uri->values[0].string.text);
 
  /*
   * Start with "everything is OK" status...
@@ -3133,7 +3114,7 @@ cancel_all_jobs(cupsd_client_t  *con,     /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "cancel_all_jobs(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * Get the jobs to cancel/purge...
@@ -3368,7 +3349,7 @@ cancel_job(cupsd_client_t  *con,  /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "cancel_job(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * See if we have a job URI or a printer URI...
@@ -3568,7 +3549,7 @@ cancel_subscription(
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2,
                   "cancel_subscription(con=%p[%d], sub_id=%d)",
-                  con, con->http.fd, sub_id);
+                  con, con->number, sub_id);
 
  /*
   * Is the subscription ID valid?
@@ -3674,7 +3655,7 @@ check_quotas(cupsd_client_t  *con,        /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "check_quotas(%p[%d], %p[%s])",
-                  con, con->http.fd, p, p->name);
+                  con, con->number, p, p->name);
 
  /*
   * Figure out who is printing...
@@ -3897,7 +3878,7 @@ close_job(cupsd_client_t  *con,           /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "close_job(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * See if we have a job URI or a printer URI...
@@ -4101,7 +4082,7 @@ copy_banner(cupsd_client_t *con,  /* I - Client connection */
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2,
                   "copy_banner(con=%p[%d], job=%p[%d], name=\"%s\")",
-                  con, con ? con->http.fd : -1, job, job->id,
+                  con, con ? con->number : -1, job, job->id,
                  name ? name : "(null)");
 
  /*
@@ -4146,8 +4127,8 @@ copy_banner(cupsd_client_t *con,  /* I - Client connection */
     */
 
     attrname[2] = '_';
-    attrname[3] = toupper(attrname[3] & 255);
-    attrname[4] = toupper(attrname[4] & 255);
+    attrname[3] = (char)toupper(attrname[3] & 255);
+    attrname[4] = (char)toupper(attrname[4] & 255);
   }
 
   snprintf(filename, sizeof(filename), "%s/banners/%s/%s", DataDir,
@@ -4201,7 +4182,7 @@ copy_banner(cupsd_client_t *con,  /* I - Client connection */
         if (!isalpha(ch & 255) && ch != '-' && ch != '?')
           break;
        else if (s < (attrname + sizeof(attrname) - 1))
-          *s++ = ch;
+          *s++ = (char)ch;
        else
          break;
 
@@ -4348,8 +4329,9 @@ copy_banner(cupsd_client_t *con,  /* I - Client connection */
 
   kbytes = (cupsFileTell(out) + 1023) / 1024;
 
-  if ((attr = ippFindAttribute(job->attrs, "job-k-octets",
-                               IPP_TAG_INTEGER)) != NULL)
+  job->koctets += kbytes;
+
+  if ((attr = ippFindAttribute(job->attrs, "job-k-octets", IPP_TAG_INTEGER)) != NULL)
     attr->values[0].integer += kbytes;
 
   cupsFileClose(out);
@@ -4392,7 +4374,7 @@ copy_file(const char *from,               /* I - Source file */
   */
 
   while ((bytes = cupsFileRead(src, buffer, sizeof(buffer))) > 0)
-    if (cupsFileWrite(dst, buffer, bytes) < bytes)
+    if (cupsFileWrite(dst, buffer, (size_t)bytes) < bytes)
     {
       cupsFileClose(src);
       cupsFileClose(dst);
@@ -4460,7 +4442,7 @@ copy_model(cupsd_client_t *con,           /* I - Client connection */
   cupsdLoadEnv(envp, (int)(sizeof(envp) / sizeof(envp[0])));
 
   snprintf(buffer, sizeof(buffer), "%s/daemon/cups-driverd", ServerBin);
-  snprintf(tempfile, sizeof(tempfile), "%s/%d.ppd", TempDir, con->http.fd);
+  snprintf(tempfile, sizeof(tempfile), "%s/%d.ppd", TempDir, con->number);
   tempfd = open(tempfile, O_WRONLY | O_CREAT | O_TRUNC, 0600);
   if (tempfd < 0 || cupsdOpenPipe(temppipe))
     return (-1);
@@ -4527,7 +4509,7 @@ copy_model(cupsd_client_t *con,           /* I - Client connection */
 
       if ((bytes = read(temppipe[0], buffer, sizeof(buffer))) > 0)
       {
-       if (write(tempfd, buffer, bytes) < bytes)
+       if (write(tempfd, buffer, (size_t)bytes) < bytes)
           break;
 
        total += bytes;
@@ -4771,7 +4753,55 @@ copy_job_attrs(cupsd_client_t *con,      /* I - Client connection */
                 "job-uri", NULL, job_uri);
   }
 
-  copy_attrs(con->response, job->attrs, ra, IPP_TAG_JOB, 0, exclude);
+  if (job->attrs)
+  {
+    copy_attrs(con->response, job->attrs, ra, IPP_TAG_JOB, 0, exclude);
+  }
+  else
+  {
+   /*
+    * Generate attributes from the job structure...
+    */
+
+    if (!ra || cupsArrayFind(ra, "job-id"))
+      ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-id", job->id);
+
+    if (!ra || cupsArrayFind(ra, "job-k-octets"))
+      ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-k-octets", job->koctets);
+
+    if (job->name && (!ra || cupsArrayFind(ra, "job-name")))
+      ippAddString(con->response, IPP_TAG_JOB, IPP_CONST_TAG(IPP_TAG_NAME), "job-name", NULL, job->name);
+
+    if (job->username && (!ra || cupsArrayFind(ra, "job-originating-user-name")))
+      ippAddString(con->response, IPP_TAG_JOB, IPP_CONST_TAG(IPP_TAG_NAME), "job-originating-user-name", NULL, job->username);
+
+    if (!ra || cupsArrayFind(ra, "job-state"))
+      ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_ENUM, "job-state", (int)job->state_value);
+
+    if (!ra || cupsArrayFind(ra, "job-state-reasons"))
+    {
+      switch (job->state_value)
+      {
+        default : /* Should never get here for processing, pending, held, or stopped jobs since they don't get unloaded... */
+           break;
+        case IPP_JSTATE_ABORTED :
+           ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_KEYWORD, "job-state-reasons", NULL, "job-aborted-by-system");
+           break;
+        case IPP_JSTATE_CANCELED :
+           ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_KEYWORD, "job-state-reasons", NULL, "job-canceled-by-user");
+           break;
+        case IPP_JSTATE_COMPLETED :
+           ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_KEYWORD, "job-state-reasons", NULL, "job-completed-successfully");
+           break;
+      }
+    }
+
+    if (job->completed_time && (!ra || cupsArrayFind(ra, "time-at-completed")))
+      ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "time-at-completed", (int)job->completed_time);
+
+    if (job->completed_time && (!ra || cupsArrayFind(ra, "time-at-creation")))
+      ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "time-at-creation", (int)job->creation_time);
+  }
 }
 
 
@@ -4898,12 +4928,10 @@ copy_printer_attrs(
   }
 
   if (!ra || cupsArrayFind(ra, "printer-is-accepting-jobs"))
-    ippAddBoolean(con->response, IPP_TAG_PRINTER, "printer-is-accepting-jobs",
-                  printer->accepting);
+    ippAddBoolean(con->response, IPP_TAG_PRINTER, "printer-is-accepting-jobs", (char)printer->accepting);
 
   if (!ra || cupsArrayFind(ra, "printer-is-shared"))
-    ippAddBoolean(con->response, IPP_TAG_PRINTER, "printer-is-shared",
-                  printer->shared);
+    ippAddBoolean(con->response, IPP_TAG_PRINTER, "printer-is-shared", (char)printer->shared);
 
   if (!ra || cupsArrayFind(ra, "printer-more-info"))
   {
@@ -4936,7 +4964,7 @@ copy_printer_attrs(
 
   if (!ra || cupsArrayFind(ra, "printer-type"))
   {
-    int type;                          /* printer-type value */
+    cups_ptype_t type;                 /* printer-type value */
 
    /*
     * Add the CUPS-specific printer-type attribute...
@@ -4953,8 +4981,7 @@ copy_printer_attrs(
     if (!printer->shared)
       type |= CUPS_PRINTER_NOT_SHARED;
 
-    ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_ENUM, "printer-type",
-                 type);
+    ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_ENUM, "printer-type", (int)type);
   }
 
   if (!ra || cupsArrayFind(ra, "printer-up-time"))
@@ -5124,7 +5151,7 @@ create_job(cupsd_client_t  *con,  /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "create_job(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * Is the destination valid?
@@ -5276,7 +5303,7 @@ create_subscriptions(
   * Is the destination valid?
   */
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG, "create_subscriptions(con=%p(%d), uri=\"%s\")", con, con->http.fd, uri->values[0].string.text);
+  cupsdLogMessage(CUPSD_LOG_DEBUG, "create_subscriptions(con=%p(%d), uri=\"%s\")", con, con->number, uri->values[0].string.text);
 
   httpSeparateURI(HTTP_URI_CODING_ALL, uri->values[0].string.text, scheme,
                   sizeof(scheme), userpass, sizeof(userpass), host,
@@ -5573,7 +5600,7 @@ create_subscriptions(
     {
       sub->user_data_len = user_data->values[0].unknown.length;
       memcpy(sub->user_data, user_data->values[0].unknown.data,
-             sub->user_data_len);
+             (size_t)sub->user_data_len);
     }
 
     ippAddSeparator(con->response);
@@ -5605,7 +5632,7 @@ delete_printer(cupsd_client_t  *con,      /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "delete_printer(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * Do we have a valid URI?
@@ -5719,7 +5746,7 @@ get_default(cupsd_client_t *con)  /* I - Client connection */
   cups_array_t *ra;                    /* Requested attributes array */
 
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_default(%p[%d])", con, con->http.fd);
+  cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_default(%p[%d])", con, con->number);
 
  /*
   * Check policy...
@@ -5769,7 +5796,7 @@ get_devices(cupsd_client_t *con)  /* I - Client connection */
                                        /* String for included schemes */
 
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_devices(%p[%d])", con, con->http.fd);
+  cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_devices(%p[%d])", con, con->number);
 
  /*
   * Check policy...
@@ -5863,7 +5890,7 @@ get_document(cupsd_client_t  *con,        /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_document(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * See if we have a job URI or a printer URI...
@@ -6010,7 +6037,7 @@ get_job_attrs(cupsd_client_t  *con,       /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_job_attrs(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * See if we have a job URI or a printer URI...
@@ -6124,19 +6151,24 @@ get_jobs(cupsd_client_t  *con,          /* I - Client connection */
   int          port;                   /* Port portion of URI */
   int          job_comparison;         /* Job comparison */
   ipp_jstate_t job_state;              /* job-state value */
-  int          first_job_id;           /* First job ID */
-  int          limit;                  /* Maximum number of jobs to return */
+  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? */
+  const char   *job_attr;              /* Job attribute requested */
   ipp_attribute_t *job_ids;            /* job-ids attribute */
   cupsd_job_t  *job;                   /* Current job pointer */
   cupsd_printer_t *printer;            /* Printer */
   cups_array_t *list;                  /* Which job list... */
+  int          delete_list = 0;        /* Delete the list afterwards? */
   cups_array_t *ra,                    /* Requested attributes array */
                *exclude;               /* Private attributes array */
   cupsd_policy_t *policy;              /* Current policy */
 
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_jobs(%p[%d], %s)", con, con->http.fd,
+  cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_jobs(%p[%d], %s)", con, con->number,
                   uri->values[0].string.text);
 
  /*
@@ -6230,13 +6262,15 @@ get_jobs(cupsd_client_t  *con,          /* I - Client connection */
   {
     job_comparison = 1;
     job_state      = IPP_JOB_CANCELED;
-    list           = Jobs;
+    list           = cupsdGetCompletedJobs(printer);
+    delete_list    = 1;
   }
   else if (!strcmp(attr->values[0].string.text, "aborted"))
   {
     job_comparison = 0;
     job_state      = IPP_JOB_ABORTED;
-    list           = Jobs;
+    list           = cupsdGetCompletedJobs(printer);
+    delete_list    = 1;
   }
   else if (!strcmp(attr->values[0].string.text, "all"))
   {
@@ -6248,7 +6282,8 @@ get_jobs(cupsd_client_t  *con,            /* I - Client connection */
   {
     job_comparison = 0;
     job_state      = IPP_JOB_CANCELED;
-    list           = Jobs;
+    list           = cupsdGetCompletedJobs(printer);
+    delete_list    = 1;
   }
   else if (!strcmp(attr->values[0].string.text, "pending"))
   {
@@ -6288,8 +6323,7 @@ get_jobs(cupsd_client_t  *con,            /* I - Client connection */
   * See if they want to limit the number of jobs reported...
   */
 
-  if ((attr = ippFindAttribute(con->request, "limit",
-                               IPP_TAG_INTEGER)) != NULL)
+  if ((attr = ippFindAttribute(con->request, "limit", IPP_TAG_INTEGER)) != NULL)
   {
     if (job_ids)
     {
@@ -6301,11 +6335,20 @@ get_jobs(cupsd_client_t  *con,          /* I - Client connection */
 
     limit = attr->values[0].integer;
   }
-  else
-    limit = 0;
 
-  if ((attr = ippFindAttribute(con->request, "first-job-id",
-                               IPP_TAG_INTEGER)) != NULL)
+  if ((attr = ippFindAttribute(con->request, "first-index", IPP_TAG_INTEGER)) != NULL)
+  {
+    if (job_ids)
+    {
+      send_ipp_status(con, IPP_CONFLICT,
+                     _("The %s attribute cannot be provided with job-ids."),
+                     "first-index");
+      return;
+    }
+
+    first_index = attr->values[0].integer;
+  }
+  else if ((attr = ippFindAttribute(con->request, "first-job-id", IPP_TAG_INTEGER)) != NULL)
   {
     if (job_ids)
     {
@@ -6317,15 +6360,12 @@ get_jobs(cupsd_client_t  *con,          /* I - Client connection */
 
     first_job_id = attr->values[0].integer;
   }
-  else
-    first_job_id = 1;
 
  /*
   * See if we only want to see jobs for a specific user...
   */
 
-  if ((attr = ippFindAttribute(con->request, "my-jobs",
-                               IPP_TAG_BOOLEAN)) != NULL && job_ids)
+  if ((attr = ippFindAttribute(con->request, "my-jobs", IPP_TAG_BOOLEAN)) != NULL && job_ids)
   {
     send_ipp_status(con, IPP_CONFLICT,
                     _("The %s attribute cannot be provided with job-ids."),
@@ -6338,6 +6378,42 @@ get_jobs(cupsd_client_t  *con,           /* I - Client connection */
     username[0] = '\0';
 
   ra = create_requested_array(con->request);
+  for (job_attr = (char *)cupsArrayFirst(ra); job_attr; job_attr = (char *)cupsArrayNext(ra))
+    if (strcmp(job_attr, "job-id") &&
+       strcmp(job_attr, "job-k-octets") &&
+       strcmp(job_attr, "job-media-progress") &&
+       strcmp(job_attr, "job-more-info") &&
+       strcmp(job_attr, "job-name") &&
+       strcmp(job_attr, "job-originating-user-name") &&
+       strcmp(job_attr, "job-preserved") &&
+       strcmp(job_attr, "job-printer-up-time") &&
+        strcmp(job_attr, "job-printer-uri") &&
+       strcmp(job_attr, "job-state") &&
+       strcmp(job_attr, "job-state-reasons") &&
+       strcmp(job_attr, "job-uri") &&
+       strcmp(job_attr, "time-at-completed") &&
+       strcmp(job_attr, "time-at-creation") &&
+       strcmp(job_attr, "number-of-documents"))
+    {
+      need_load_job = 1;
+      break;
+    }
+
+  if (need_load_job && (limit == 0 || limit > 500) && (list == Jobs || delete_list))
+  {
+   /*
+    * Limit expensive Get-Jobs for job history to 500 jobs...
+    */
+
+    ippAddInteger(con->response, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "limit", 500);
+
+    if (limit)
+      ippAddInteger(con->response, IPP_TAG_UNSUPPORTED_GROUP, IPP_TAG_INTEGER, "limit", limit);
+
+    limit = 500;
+
+    cupsdLogClient(con, CUPSD_LOG_INFO, "Limiting Get-Jobs response to %d jobs.", limit);
+  }
 
  /*
   * OK, build a list of jobs for this printer...
@@ -6364,13 +6440,15 @@ get_jobs(cupsd_client_t  *con,          /* I - Client connection */
     {
       job = cupsdFindJob(job_ids->values[i].integer);
 
-      cupsdLoadJob(job);
-
-      if (!job->attrs)
+      if (need_load_job && !job->attrs)
       {
-       cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_jobs: No attributes for job %d",
-                       job->id);
-       continue;
+        cupsdLoadJob(job);
+
+       if (!job->attrs)
+       {
+         cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_jobs: No attributes for job %d", job->id);
+         continue;
+       }
       }
 
       if (i > 0)
@@ -6420,13 +6498,19 @@ get_jobs(cupsd_client_t  *con,          /* I - Client connection */
       if (job->id < first_job_id)
        continue;
 
-      cupsdLoadJob(job);
+      current_index ++;
+      if (current_index < first_index)
+        continue;
 
-      if (!job->attrs)
+      if (need_load_job && !job->attrs)
       {
-       cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_jobs: No attributes for job %d",
-                       job->id);
-       continue;
+        cupsdLoadJob(job);
+
+       if (!job->attrs)
+       {
+         cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_jobs: No attributes for job %d", job->id);
+         continue;
+       }
       }
 
       if (username[0] && _cups_strcasecmp(username, job->username))
@@ -6450,6 +6534,9 @@ get_jobs(cupsd_client_t  *con,            /* I - Client connection */
 
   cupsArrayDelete(ra);
 
+  if (delete_list)
+    cupsArrayDelete(list);
+
   con->response->request.status.status_code = IPP_OK;
 }
 
@@ -6471,7 +6558,7 @@ get_notifications(cupsd_client_t *con)    /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_notifications(con=%p[%d])",
-                  con, con->http.fd);
+                  con, con->number);
 
  /*
   * Get subscription attributes...
@@ -6605,7 +6692,7 @@ get_ppd(cupsd_client_t  *con,             /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_ppd(%p[%d], %p[%s=%s])", con,
-                  con->http.fd, uri, uri->name, uri->values[0].string.text);
+                  con->number, uri, uri->name, uri->values[0].string.text);
 
   if (!strcmp(uri->name, "ppd-name"))
   {
@@ -6778,7 +6865,7 @@ get_ppds(cupsd_client_t *con)             /* I - Client connection */
                                        /* String for included schemes */
 
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_ppds(%p[%d])", con, con->http.fd);
+  cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_ppds(%p[%d])", con, con->number);
 
  /*
   * Check policy...
@@ -6923,7 +7010,7 @@ get_printer_attrs(cupsd_client_t  *con,   /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_printer_attrs(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * Is the destination valid?
@@ -6979,7 +7066,7 @@ get_printer_supported(
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_printer_supported(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * Is the destination valid?
@@ -7032,7 +7119,7 @@ get_printers(cupsd_client_t *con, /* I - Client connection */
   int          limit;                  /* Max number of printers to return */
   int          count;                  /* Number of printers that match */
   cupsd_printer_t *printer;            /* Current printer pointer */
-  int          printer_type,           /* printer-type attribute */
+  cups_ptype_t printer_type,           /* printer-type attribute */
                printer_mask;           /* printer-type-mask attribute */
   char         *location;              /* Location string */
   const char   *username;              /* Current user */
@@ -7042,7 +7129,7 @@ get_printers(cupsd_client_t *con, /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_printers(%p[%d], %x)", con,
-                  con->http.fd, type);
+                  con->number, type);
 
  /*
   * Check policy...
@@ -7086,15 +7173,15 @@ get_printers(cupsd_client_t *con,       /* I - Client connection */
 
   if ((attr = ippFindAttribute(con->request, "printer-type",
                                IPP_TAG_ENUM)) != NULL)
-    printer_type = attr->values[0].integer;
+    printer_type = (cups_ptype_t)attr->values[0].integer;
   else
-    printer_type = 0;
+    printer_type = (cups_ptype_t)0;
 
   if ((attr = ippFindAttribute(con->request, "printer-type-mask",
                                IPP_TAG_ENUM)) != NULL)
-    printer_mask = attr->values[0].integer;
+    printer_mask = (cups_ptype_t)attr->values[0].integer;
   else
-    printer_mask = 0;
+    printer_mask = (cups_ptype_t)0;
 
   local = httpAddrLocalhost(&(con->clientaddr));
 
@@ -7188,7 +7275,7 @@ get_subscription_attrs(
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2,
                   "get_subscription_attrs(con=%p[%d], sub_id=%d)",
-                  con, con->http.fd, sub_id);
+                  con, con->number, sub_id);
 
  /*
   * Is the subscription ID valid?
@@ -7269,7 +7356,7 @@ get_subscriptions(cupsd_client_t  *con,   /* I - Client connection */
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2,
                   "get_subscriptions(con=%p[%d], uri=%s)",
-                  con, con->http.fd, uri->values[0].string.text);
+                  con, con->number, uri->values[0].string.text);
 
  /*
   * Is the destination valid?
@@ -7430,7 +7517,7 @@ hold_job(cupsd_client_t  *con,            /* I - Client connection */
   cupsd_job_t  *job;                   /* Job information */
 
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG2, "hold_job(%p[%d], %s)", con, con->http.fd,
+  cupsdLogMessage(CUPSD_LOG_DEBUG2, "hold_job(%p[%d], %s)", con, con->number,
                   uri->values[0].string.text);
 
  /*
@@ -7559,7 +7646,7 @@ hold_new_jobs(cupsd_client_t  *con,       /* I - Connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "hold_new_jobs(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * Is the destination valid?
@@ -7635,7 +7722,7 @@ move_job(cupsd_client_t  *con,            /* I - Client connection */
                *dprinter;              /* Destination printer */
 
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG2, "move_job(%p[%d], %s)", con, con->http.fd,
+  cupsdLogMessage(CUPSD_LOG_DEBUG2, "move_job(%p[%d], %s)", con, con->number,
                   uri->values[0].string.text);
 
  /*
@@ -7963,7 +8050,7 @@ print_job(cupsd_client_t  *con,           /* I - Client connection */
   int          compression;            /* Document compression */
 
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG2, "print_job(%p[%d], %s)", con, con->http.fd,
+  cupsdLogMessage(CUPSD_LOG_DEBUG2, "print_job(%p[%d], %s)", con, con->number,
                   uri->values[0].string.text);
 
  /*
@@ -8157,8 +8244,9 @@ print_job(cupsd_client_t  *con,           /* I - Client connection */
 
   cupsdUpdateQuota(printer, job->username, 0, kbytes);
 
-  if ((attr = ippFindAttribute(job->attrs, "job-k-octets",
-                               IPP_TAG_INTEGER)) != NULL)
+  job->koctets += kbytes;
+
+  if ((attr = ippFindAttribute(job->attrs, "job-k-octets", IPP_TAG_INTEGER)) != NULL)
     attr->values[0].integer += kbytes;
 
  /*
@@ -8397,7 +8485,7 @@ reject_jobs(cupsd_client_t  *con, /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "reject_jobs(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * Is the destination valid?
@@ -8479,7 +8567,7 @@ release_held_new_jobs(
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "release_held_new_jobs(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * Is the destination valid?
@@ -8550,7 +8638,7 @@ release_job(cupsd_client_t  *con, /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "release_job(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * See if we have a job URI or a printer URI...
@@ -8688,7 +8776,7 @@ renew_subscription(
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2,
                   "renew_subscription(con=%p[%d], sub_id=%d)",
-                  con, con->http.fd, sub_id);
+                  con, con->number, sub_id);
 
  /*
   * Is the subscription ID valid?
@@ -8776,7 +8864,7 @@ restart_job(cupsd_client_t  *con, /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "restart_job(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * See if we have a job URI or a printer URI...
@@ -9000,8 +9088,7 @@ save_auth_info(
     {
       if (strcmp(dest->auth_info_required[i], "negotiate"))
       {
-       httpEncode64_2(line, sizeof(line), auth_info->values[i].string.text,
-                      strlen(auth_info->values[i].string.text));
+       httpEncode64_2(line, sizeof(line), auth_info->values[i].string.text, (int)strlen(auth_info->values[i].string.text));
        cupsFilePutConf(fp, dest->auth_info_required[i], line);
       }
       else
@@ -9032,15 +9119,13 @@ save_auth_info(
     * Allow fallback to username+password for Kerberized queues...
     */
 
-    httpEncode64_2(line, sizeof(line), auth_info->values[0].string.text,
-                   strlen(auth_info->values[0].string.text));
+    httpEncode64_2(line, sizeof(line), auth_info->values[0].string.text, (int)strlen(auth_info->values[0].string.text));
     cupsFilePutConf(fp, "username", line);
 
     cupsdSetStringf(job->auth_env + 0, "AUTH_USERNAME=%s",
                     auth_info->values[0].string.text);
 
-    httpEncode64_2(line, sizeof(line), auth_info->values[1].string.text,
-                   strlen(auth_info->values[1].string.text));
+    httpEncode64_2(line, sizeof(line), auth_info->values[1].string.text, (int)strlen(auth_info->values[1].string.text));
     cupsFilePutConf(fp, "password", line);
 
     cupsdSetStringf(job->auth_env + 1, "AUTH_PASSWORD=%s",
@@ -9052,7 +9137,7 @@ save_auth_info(
     * Write the authenticated username...
     */
 
-    httpEncode64_2(line, sizeof(line), con->username, strlen(con->username));
+    httpEncode64_2(line, sizeof(line), con->username, (int)strlen(con->username));
     cupsFilePutConf(fp, "username", line);
 
     cupsdSetStringf(job->auth_env + 0, "AUTH_USERNAME=%s", con->username);
@@ -9061,7 +9146,7 @@ save_auth_info(
     * Write the authenticated password...
     */
 
-    httpEncode64_2(line, sizeof(line), con->password, strlen(con->password));
+    httpEncode64_2(line, sizeof(line), con->password, (int)strlen(con->password));
     cupsFilePutConf(fp, "password", line);
 
     cupsdSetStringf(job->auth_env + 1, "AUTH_PASSWORD=%s", con->password);
@@ -9131,7 +9216,7 @@ send_document(cupsd_client_t  *con,       /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "send_document(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * See if we have a job URI or a printer URI...
@@ -9394,8 +9479,9 @@ send_document(cupsd_client_t  *con,       /* I - Client connection */
 
   cupsdUpdateQuota(printer, job->username, 0, kbytes);
 
-  if ((attr = ippFindAttribute(job->attrs, "job-k-octets",
-                               IPP_TAG_INTEGER)) != NULL)
+  job->koctets += kbytes;
+
+  if ((attr = ippFindAttribute(job->attrs, "job-k-octets", IPP_TAG_INTEGER)) != NULL)
     attr->values[0].integer += kbytes;
 
   snprintf(filename, sizeof(filename), "%s/d%05d-%03d", RequestRoot, job->id,
@@ -9520,12 +9606,12 @@ send_http_error(
 
   cupsdLogMessage(status == HTTP_FORBIDDEN ? CUPSD_LOG_ERROR : CUPSD_LOG_DEBUG,
                   "[Client %d] Returning HTTP %s for %s (%s) from %s",
-                  con->http.fd, httpStatus(status),
+                  con->number, httpStatus(status),
                  con->request ?
                      ippOpString(con->request->request.op.operation_id) :
                      "no operation-id",
                  uri ? uri->values[0].string.text : "no URI",
-                 con->http.hostname);
+                 con->http->hostname);
 
   if (printer)
   {
@@ -9646,7 +9732,7 @@ set_default(cupsd_client_t  *con, /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "set_default(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * Is the destination valid?
@@ -9728,7 +9814,7 @@ set_job_attrs(cupsd_client_t  *con,       /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "set_job_attrs(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * Start with "everything is OK" status...
@@ -9930,9 +10016,7 @@ set_job_attrs(cupsd_client_t  *con,      /* I - Client connection */
              {
                cupsdLogJob(job, CUPSD_LOG_DEBUG, "Setting job-state to %d",
                            attr->values[0].integer);
-                cupsdSetJobState(job, attr->values[0].integer,
-                                CUPSD_JOB_DEFAULT,
-                                "Job state changed by \"%s\"", username);
+                cupsdSetJobState(job, (ipp_jstate_t)attr->values[0].integer, CUPSD_JOB_DEFAULT, "Job state changed by \"%s\"", username);
                check_jobs = 1;
              }
              break;
@@ -10100,7 +10184,7 @@ set_printer_attrs(cupsd_client_t  *con, /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "set_printer_attrs(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * Is the destination valid?
@@ -10178,7 +10262,7 @@ set_printer_defaults(
 {
   int                  i;              /* Looping var */
   ipp_attribute_t      *attr;          /* Current attribute */
-  int                  namelen;        /* Length of attribute name */
+  size_t               namelen;        /* Length of attribute name */
   char                 name[256],      /* New attribute name */
                        value[256];     /* String version of integer attrs */
 
@@ -10431,7 +10515,7 @@ start_printer(cupsd_client_t  *con,     /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "start_printer(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * Is the destination valid?
@@ -10513,7 +10597,7 @@ stop_printer(cupsd_client_t  *con,      /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "stop_printer(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * Is the destination valid?
@@ -10577,7 +10661,7 @@ stop_printer(cupsd_client_t  *con,      /* I - Client connection */
 static void
 url_encode_attr(ipp_attribute_t *attr, /* I - Attribute */
                 char            *buffer,/* I - String buffer */
-               int             bufsize)/* I - Size of buffer */
+               size_t          bufsize)/* I - Size of buffer */
 {
   int  i;                              /* Looping var */
   char *bufptr,                        /* Pointer into buffer */
@@ -10603,8 +10687,7 @@ url_encode_attr(ipp_attribute_t *attr,  /* I - Attribute */
 
     *bufptr++ = '\'';
 
-    bufptr = url_encode_string(attr->values[i].string.text,
-                               bufptr, bufend - bufptr + 1);
+    bufptr = url_encode_string(attr->values[i].string.text, bufptr, (size_t)(bufend - bufptr + 1));
 
     if (bufptr >= bufend)
       break;
@@ -10623,7 +10706,7 @@ url_encode_attr(ipp_attribute_t *attr,  /* I - Attribute */
 static char *                          /* O - End of string */
 url_encode_string(const char *s,       /* I - String */
                   char       *buffer,  /* I - String buffer */
-                 int        bufsize)   /* I - Size of buffer */
+                 size_t     bufsize)   /* I - Size of buffer */
 {
   char *bufptr,                        /* Pointer into buffer */
        *bufend;                        /* End of buffer */
@@ -10754,7 +10837,7 @@ validate_job(cupsd_client_t  *con,      /* I - Client connection */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "validate_job(%p[%d], %s)", con,
-                  con->http.fd, uri->values[0].string.text);
+                  con->number, uri->values[0].string.text);
 
  /*
   * OK, see if the client is sending the document compressed - CUPS
@@ -10923,8 +11006,8 @@ validate_job(cupsd_client_t  *con,      /* I - Client connection */
     return;
   }
 #ifdef HAVE_SSL
-  else if (auth_info && !con->http.tls &&
-           !httpAddrLocalhost(con->http.hostaddr))
+  else if (auth_info && !con->http->tls &&
+           !httpAddrLocalhost(con->http->hostaddr))
   {
    /*
     * Require encryption of auth-info over non-local connections...
@@ -10978,16 +11061,12 @@ validate_user(cupsd_job_t    *job,    /* I - Job */
               cupsd_client_t *con,     /* I - Client connection */
               const char     *owner,   /* I - Owner of job/resource */
               char           *username,        /* O - Authenticated username */
-             int            userlen)   /* I - Length of username */
+             size_t         userlen)   /* I - Length of username */
 {
   cupsd_printer_t      *printer;       /* Printer for job */
 
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                  "validate_user(job=%d, con=%d, owner=\"%s\", username=%p, "
-                 "userlen=%d)",
-                 job->id, con ? con->http.fd : 0,
-                 owner ? owner : "(null)", username, userlen);
+  cupsdLogMessage(CUPSD_LOG_DEBUG2, "validate_user(job=%d, con=%d, owner=\"%s\", username=%p, userlen=" CUPS_LLFMT ")", job->id, con ? con->number : 0, owner ? owner : "(null)", username, CUPS_LLCAST userlen);
 
  /*
   * Validate input...
@@ -11014,5 +11093,5 @@ validate_user(cupsd_job_t    *job,      /* I - Job */
 
 
 /*
- * End of "$Id: ipp.c 11734 2014-03-25 18:01:47Z msweet $".
+ * End of "$Id: ipp.c 12067 2014-07-31 00:02:30Z msweet $".
  */
index eaa641b92f574d5f430ddcb0fdd432c9fb76e702..0dbf39b6facbd63e877f1dfd2ff978a739a39ed6 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: job.c 11418 2013-11-08 15:18:01Z msweet $"
+ * "$Id: job.c 12067 2014-07-31 00:02:30Z msweet $"
  *
  * Job management routines for the CUPS scheduler.
  *
- * Copyright 2007-2013 by Apple Inc.
+ * 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
@@ -119,6 +119,7 @@ static mime_filter_t        gziptoany_filter =
  */
 
 static int     compare_active_jobs(void *first, void *second, void *data);
+static int     compare_completed_jobs(void *first, void *second, void *data);
 static int     compare_jobs(void *first, void *second, void *data);
 static void    dump_job_history(cupsd_job_t *job);
 static void    finalize_job(cupsd_job_t *job, int set_job_state);
@@ -257,7 +258,8 @@ cupsdCheckJobs(void)
 
     if (job->kill_time && job->kill_time <= curtime)
     {
-      cupsdLogJob(job, CUPSD_LOG_ERROR, "Stopping unresponsive job.");
+      if (!job->completed)
+        cupsdLogJob(job, CUPSD_LOG_ERROR, "Stopping unresponsive job.");
 
       stop_job(job, CUPSD_JOB_FORCE);
       continue;
@@ -269,8 +271,15 @@ cupsdCheckJobs(void)
 
     if (job->cancel_time && job->cancel_time <= curtime)
     {
-      cupsdSetJobState(job, IPP_JOB_CANCELED, CUPSD_JOB_DEFAULT,
-                       "Canceling stuck job after %d seconds.", MaxJobTime);
+      int cancel_after;                        /* job-cancel-after value */
+
+      attr         = ippFindAttribute(job->attrs, "job-cancel-after", IPP_TAG_INTEGER);
+      cancel_after = attr ? ippGetInteger(attr, 0) : MaxJobTime;
+
+      if (job->completed)
+       cupsdSetJobState(job, IPP_JOB_CANCELED, CUPSD_JOB_FORCE, "Marking stuck job as completed after %d seconds.", cancel_after);
+      else
+       cupsdSetJobState(job, IPP_JOB_CANCELED, CUPSD_JOB_DEFAULT, "Canceling stuck job after %d seconds.", cancel_after);
       continue;
     }
 
@@ -323,10 +332,7 @@ cupsdCheckJobs(void)
     */
 
     if (job->state_value == IPP_JOB_PENDING && !NeedReload &&
-#ifndef kIOPMAssertionTypeDenySystemSleep
-        !Sleeping &&
-#endif /* !kIOPMAssertionTypeDenySystemSleep */
-        !DoingShutdown && !job->printer)
+        !Sleeping && !DoingShutdown && !job->printer)
     {
       printer = cupsdFindDest(job->dest);
       pclass  = NULL;
@@ -558,14 +564,37 @@ cupsdContinueJob(cupsd_job_t *job)        /* I - Job */
     * Local jobs get filtered...
     */
 
+    mime_type_t        *dst = job->printer->filetype;
+                                       /* Destination file type */
+
     snprintf(filename, sizeof(filename), "%s/d%05d-%03d", RequestRoot,
              job->id, job->current_file + 1);
     if (stat(filename, &fileinfo))
       fileinfo.st_size = 0;
 
-    filters = mimeFilter2(MimeDatabase, job->filetypes[job->current_file],
-                          fileinfo.st_size, job->printer->filetype,
-                          &(job->cost));
+    if (job->retry_as_raster)
+    {
+     /*
+      * Need to figure out whether the printer supports image/pwg-raster or
+      * image/urf, and use the corresponding type...
+      */
+
+      char     type[MIME_MAX_TYPE];    /* MIME media type for printer */
+
+      snprintf(type, sizeof(type), "%s/image/urf", job->printer->name);
+      if ((dst = mimeType(MimeDatabase, "printer", type)) == NULL)
+      {
+       snprintf(type, sizeof(type), "%s/image/pwg-raster", job->printer->name);
+       dst = mimeType(MimeDatabase, "printer", type);
+      }
+
+      if (dst)
+        cupsdLogJob(job, CUPSD_LOG_DEBUG, "Retrying job as \"%s\".", strchr(dst->type, '/') + 1);
+      else
+        cupsdLogJob(job, CUPSD_LOG_ERROR, "Unable to retry job using a supported raster format.");
+    }
+
+    filters = mimeFilter2(MimeDatabase, job->filetypes[job->current_file], (size_t)fileinfo.st_size, dst, &(job->cost));
 
     if (!filters)
     {
@@ -841,7 +870,7 @@ cupsdContinueJob(cupsd_job_t *job)  /* I - Job */
   else
     argc = 7;
 
-  if ((argv = calloc(argc + 1, sizeof(char *))) == NULL)
+  if ((argv = calloc((size_t)argc + 1, sizeof(char *))) == NULL)
   {
     cupsdLogMessage(CUPSD_LOG_DEBUG, "Unable to allocate argument array - %s",
                     strerror(errno));
@@ -965,8 +994,7 @@ cupsdContinueJob(cupsd_job_t *job)  /* I - Job */
       {
         if (i)
          *psrptr++ = ',';
-       strlcpy(psrptr, job->printer->reasons[i],
-               psrlen - (psrptr - printer_state_reasons));
+       strlcpy(psrptr, job->printer->reasons[i], psrlen - (size_t)(psrptr - printer_state_reasons));
        psrptr += strlen(psrptr);
       }
     }
@@ -1206,7 +1234,7 @@ cupsdContinueJob(cupsd_job_t *job)        /* I - Job */
       else if (stat(command, &backinfo))
        backroot = 0;
       else
-        backroot = !(backinfo.st_mode & (S_IRWXG | S_IRWXO));
+        backroot = !(backinfo.st_mode & (S_IWGRP | S_IRWXO));
 
       argv[0] = job->printer->sanitized_device_uri;
 
@@ -1216,7 +1244,7 @@ cupsdContinueJob(cupsd_job_t *job)        /* I - Job */
       pid = cupsdStartProcess(command, argv, envp, filterfds[!slot][0],
                              filterfds[slot][1], job->status_pipes[1],
                              job->back_pipes[1], job->side_pipes[1],
-                             backroot, job->profile, job, &(job->backend));
+                             backroot, job->bprofile, job, &(job->backend));
 
       if (pid == 0)
       {
@@ -1428,6 +1456,30 @@ cupsdFindJob(int id)                     /* I - Job ID */
 }
 
 
+/*
+ * 'cupsdGetCompletedJobs()'- Generate a completed jobs list.
+ */
+
+cups_array_t *                         /* O - Array of jobs */
+cupsdGetCompletedJobs(
+    cupsd_printer_t *p)                        /* I - Printer */
+{
+  cups_array_t *list;                  /* Array of jobs */
+  cupsd_job_t  *job;                   /* Current job */
+
+
+  list = cupsArrayNew(compare_completed_jobs, NULL);
+
+  for (job = (cupsd_job_t *)cupsArrayFirst(Jobs);
+       job;
+       job = (cupsd_job_t *)cupsArrayNext(Jobs))
+    if ((!p || !_cups_strcasecmp(p->name, job->dest)) && job->state_value >= IPP_JOB_STOPPED && job->completed_time)
+      cupsArrayAdd(list, job);
+
+  return (list);
+}
+
+
 /*
  * 'cupsdGetPrinterJobCount()' - Get the number of pending, processing,
  *                               or held jobs in a printer or class.
@@ -1623,10 +1675,13 @@ cupsdLoadJob(cupsd_job_t *job)          /* I - Job */
   job->file_time    = 0;
   job->history_time = 0;
 
-  if (job->state_value >= IPP_JOB_CANCELED &&
-      (attr = ippFindAttribute(job->attrs, "time-at-completed",
-                              IPP_TAG_INTEGER)) != NULL)
+  if ((attr = ippFindAttribute(job->attrs, "time-at-creation", IPP_TAG_INTEGER)) != NULL)
+    job->creation_time = attr->values[0].integer;
+
+  if (job->state_value >= IPP_JOB_CANCELED && (attr = ippFindAttribute(job->attrs, "time-at-completed", IPP_TAG_INTEGER)) != NULL)
   {
+    job->completed_time = attr->values[0].integer;
+
     if (JobHistory < INT_MAX)
       job->history_time = attr->values[0].integer + JobHistory;
     else
@@ -1772,6 +1827,12 @@ cupsdLoadJob(cupsd_job_t *job)           /* I - Job */
     cupsdSetString(&job->username, attr->values[0].string.text);
   }
 
+  if (!job->name)
+  {
+    if ((attr = ippFindAttribute(job->attrs, "job-name", IPP_TAG_NAME)) != NULL)
+      cupsdSetString(&job->name, attr->values[0].string.text);
+  }
+
  /*
   * Set the job hold-until time and state...
   */
@@ -1796,6 +1857,9 @@ cupsdLoadJob(cupsd_job_t *job)            /* I - Job */
     job->state_value              = IPP_JOB_PENDING;
   }
 
+  if ((attr = ippFindAttribute(job->attrs, "job-k-octets", IPP_TAG_INTEGER)) != NULL)
+    job->koctets = attr->values[0].integer;
+
   if (!job->num_files)
   {
    /*
@@ -1817,16 +1881,13 @@ cupsdLoadJob(cupsd_job_t *job)          /* I - Job */
       {
         if (job->num_files == 0)
        {
-         compressions = (int *)calloc(fileid, sizeof(int));
-         filetypes    = (mime_type_t **)calloc(fileid, sizeof(mime_type_t *));
+         compressions = (int *)calloc((size_t)fileid, sizeof(int));
+         filetypes    = (mime_type_t **)calloc((size_t)fileid, sizeof(mime_type_t *));
        }
        else
        {
-         compressions = (int *)realloc(job->compressions,
-                                       sizeof(int) * fileid);
-         filetypes    = (mime_type_t **)realloc(job->filetypes,
-                                                sizeof(mime_type_t *) *
-                                                fileid);
+         compressions = (int *)realloc(job->compressions, sizeof(int) * (size_t)fileid);
+         filetypes    = (mime_type_t **)realloc(job->filetypes, sizeof(mime_type_t *) * (size_t)fileid);
         }
 
        if (compressions)
@@ -2104,11 +2165,18 @@ cupsdSaveAllJobs(void)
   {
     cupsFilePrintf(fp, "<Job %d>\n", job->id);
     cupsFilePrintf(fp, "State %d\n", job->state_value);
+    cupsFilePrintf(fp, "Created %ld\n", (long)job->creation_time);
+    if (job->completed_time)
+      cupsFilePrintf(fp, "Completed %ld\n", (long)job->completed_time);
     cupsFilePrintf(fp, "Priority %d\n", job->priority);
-    cupsFilePrintf(fp, "HoldUntil %d\n", (int)job->hold_until);
+    if (job->hold_until)
+      cupsFilePrintf(fp, "HoldUntil %ld\n", (long)job->hold_until);
     cupsFilePrintf(fp, "Username %s\n", job->username);
+    if (job->name)
+      cupsFilePutConf(fp, "Name", job->name);
     cupsFilePrintf(fp, "Destination %s\n", job->dest);
     cupsFilePrintf(fp, "DestType %d\n", job->dtype);
+    cupsFilePrintf(fp, "KOctets %d\n", job->koctets);
     cupsFilePrintf(fp, "NumFiles %d\n", job->num_files);
     for (i = 0; i < job->num_files; i ++)
       cupsFilePrintf(fp, "File %d %s/%s %d\n", i + 1, job->filetypes[i]->super,
@@ -2214,9 +2282,10 @@ cupsdSetJobHoldUntil(cupsd_job_t *job,   /* I - Job */
       cupsdMarkDirty(CUPSD_DIRTY_JOBS);
     }
 
-    ippSetString(job->attrs, &job->reasons, 0, "job-hold-until-specified");
   }
 
+  ippSetString(job->attrs, &job->reasons, 0, "job-hold-until-specified");
+
  /*
   * Update the hold time...
   */
@@ -2648,10 +2717,17 @@ cupsdStopAllJobs(
        job;
        job = (cupsd_job_t *)cupsArrayNext(PrintingJobs))
   {
-    if (kill_delay)
-      job->kill_time = time(NULL) + kill_delay;
+    if (job->completed)
+    {
+      cupsdSetJobState(job, IPP_JOB_COMPLETED, CUPSD_JOB_FORCE, NULL);
+    }
+    else
+    {
+      if (kill_delay)
+        job->kill_time = time(NULL) + kill_delay;
 
-    cupsdSetJobState(job, IPP_JOB_PENDING, action, NULL);
+      cupsdSetJobState(job, IPP_JOB_PENDING, action, NULL);
+    }
   }
 }
 
@@ -2761,6 +2837,28 @@ compare_active_jobs(void *first, /* I - First job */
 }
 
 
+/*
+ * 'compare_completed_jobs()' - Compare the job IDs and completion times of two jobs.
+ */
+
+static int                             /* O - Difference */
+compare_completed_jobs(void *first,    /* I - First job */
+                       void *second,   /* I - Second job */
+                      void *data)      /* I - App data (not used) */
+{
+  int  diff;                           /* Difference */
+
+
+  (void)data;
+
+  if ((diff = ((cupsd_job_t *)second)->completed_time -
+              ((cupsd_job_t *)first)->completed_time) != 0)
+    return (diff);
+  else
+    return (((cupsd_job_t *)first)->id - ((cupsd_job_t *)second)->id);
+}
+
+
 /*
  * 'compare_jobs()' - Compare the job IDs of two jobs.
  */
@@ -2856,7 +2954,7 @@ dump_job_history(cupsd_job_t *job)        /* I - Job */
     snprintf(temp, sizeof(temp), "[Job %d] printer-state-reasons=", job->id);
     ptr = temp + strlen(temp);
     if (printer->num_reasons == 0)
-      strlcpy(ptr, "none", sizeof(temp) - (ptr - temp));
+      strlcpy(ptr, "none", sizeof(temp) - (size_t)(ptr - temp));
     else
     {
       for (i = 0;
@@ -2866,7 +2964,7 @@ dump_job_history(cupsd_job_t *job)        /* I - Job */
         if (i)
          *ptr++ = ',';
 
-       strlcpy(ptr, printer->reasons[i], sizeof(temp) - (ptr - temp));
+       strlcpy(ptr, printer->reasons[i], sizeof(temp) - (size_t)(ptr - temp));
        ptr += strlen(ptr);
       }
     }
@@ -2927,11 +3025,13 @@ finalize_job(cupsd_job_t *job,          /* I - Job */
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "finalize_job(job=%p(%d))", job, job->id);
 
  /*
-  * Clear the "connecting-to-device" reason, which is only valid when a printer
-  * is processing, along with any remote printing job state...
+  * Clear the "connecting-to-device" and "cups-waiting-for-job-completed"
+  * reasons, which are only valid when a printer is processing, along with any
+  * remote printing job state...
   */
 
   cupsdSetPrinterReasons(job->printer, "-connecting-to-device,"
+                                       "cups-waiting-for-job-completed,"
                                       "cups-remote-pending,"
                                       "cups-remote-pending-held,"
                                       "cups-remote-processing,"
@@ -2955,6 +3055,8 @@ finalize_job(cupsd_job_t *job,            /* I - Job */
 
   cupsdDestroyProfile(job->profile);
   job->profile = NULL;
+  cupsdDestroyProfile(job->bprofile);
+  job->bprofile = NULL;
 
  /*
   * Clear the unresponsive job watchdog timers...
@@ -3694,18 +3796,18 @@ get_options(cupsd_job_t *job,           /* I - Job */
       */
 
       if (optptr > options)
-       strlcat(optptr, " ", optlength - (optptr - options));
+       strlcat(optptr, " ", optlength - (size_t)(optptr - options));
 
       if (attr->value_tag != IPP_TAG_BOOLEAN)
       {
-       strlcat(optptr, attr->name, optlength - (optptr - options));
-       strlcat(optptr, "=", optlength - (optptr - options));
+       strlcat(optptr, attr->name, optlength - (size_t)(optptr - options));
+       strlcat(optptr, "=", optlength - (size_t)(optptr - options));
       }
 
       for (i = 0; i < attr->num_values; i ++)
       {
        if (i)
-         strlcat(optptr, ",", optlength - (optptr - options));
+         strlcat(optptr, ",", optlength - (size_t)(optptr - options));
 
        optptr += strlen(optptr);
 
@@ -3713,30 +3815,29 @@ get_options(cupsd_job_t *job,           /* I - Job */
        {
          case IPP_TAG_INTEGER :
          case IPP_TAG_ENUM :
-             snprintf(optptr, optlength - (optptr - options),
+             snprintf(optptr, optlength - (size_t)(optptr - options),
                       "%d", attr->values[i].integer);
              break;
 
          case IPP_TAG_BOOLEAN :
              if (!attr->values[i].boolean)
-               strlcat(optptr, "no", optlength - (optptr - options));
+               strlcat(optptr, "no", optlength - (size_t)(optptr - options));
 
-             strlcat(optptr, attr->name,
-                     optlength - (optptr - options));
+             strlcat(optptr, attr->name, optlength - (size_t)(optptr - options));
              break;
 
          case IPP_TAG_RANGE :
              if (attr->values[i].range.lower == attr->values[i].range.upper)
-               snprintf(optptr, optlength - (optptr - options) - 1,
+               snprintf(optptr, optlength - (size_t)(optptr - options) - 1,
                         "%d", attr->values[i].range.lower);
               else
-               snprintf(optptr, optlength - (optptr - options) - 1,
+               snprintf(optptr, optlength - (size_t)(optptr - options) - 1,
                         "%d-%d", attr->values[i].range.lower,
                         attr->values[i].range.upper);
              break;
 
          case IPP_TAG_RESOLUTION :
-             snprintf(optptr, optlength - (optptr - options) - 1,
+             snprintf(optptr, optlength - (size_t)(optptr - options) - 1,
                       "%dx%d%s", attr->values[i].resolution.xres,
                       attr->values[i].resolution.yres,
                       attr->values[i].resolution.units == IPP_RES_PER_INCH ?
@@ -3776,10 +3877,10 @@ get_options(cupsd_job_t *job,           /* I - Job */
   for (i = num_pwgppds, pwgppd = pwgppds; i > 0; i --, pwgppd ++)
   {
     *optptr++ = ' ';
-    strlcpy(optptr, pwgppd->name, optlength - (optptr - options));
+    strlcpy(optptr, pwgppd->name, optlength - (size_t)(optptr - options));
     optptr += strlen(optptr);
     *optptr++ = '=';
-    strlcpy(optptr, pwgppd->value, optlength - (optptr - options));
+    strlcpy(optptr, pwgppd->value, optlength - (size_t)(optptr - options));
     optptr += strlen(optptr);
   }
 
@@ -3833,7 +3934,7 @@ ipp_length(ipp_t *ipp)                    /* I - IPP request */
     */
 
     bytes ++;                          /* " " separator */
-    bytes += attr->num_values;         /* "," separators */
+    bytes += (size_t)attr->num_values; /* "," separators */
 
    /*
     * Boolean attributes appear as "foo,nofoo,foo,nofoo", while
@@ -3843,7 +3944,7 @@ ipp_length(ipp_t *ipp)                    /* I - IPP request */
     if (attr->value_tag != IPP_TAG_BOOLEAN)
       bytes += strlen(attr->name);
     else
-      bytes += attr->num_values * strlen(attr->name);
+      bytes += (size_t)attr->num_values * strlen(attr->name);
 
    /*
     * Now add the size required for each value in the attribute...
@@ -3857,7 +3958,7 @@ ipp_length(ipp_t *ipp)                    /* I - IPP request */
          * Minimum value of a signed integer is -2147483647, or 11 digits.
          */
 
-         bytes += attr->num_values * 11;
+         bytes += (size_t)attr->num_values * 11;
          break;
 
       case IPP_TAG_BOOLEAN :
@@ -3876,7 +3977,7 @@ ipp_length(ipp_t *ipp)                    /* I - IPP request */
          * 23 characters max.
          */
 
-         bytes += attr->num_values * 23;
+         bytes += (size_t)attr->num_values * 23;
          break;
 
       case IPP_TAG_RESOLUTION :
@@ -3885,7 +3986,7 @@ ipp_length(ipp_t *ipp)                    /* I - IPP request */
          * suffixed by the units, or 26 characters max.
          */
 
-         bytes += attr->num_values * 26;
+         bytes += (size_t)attr->num_values * 26;
          break;
 
       case IPP_TAG_STRING :
@@ -4025,6 +4126,14 @@ load_job_cache(const char *filename)     /* I - job.cache filename */
 
       if (job->state_value <= IPP_JOB_STOPPED && cupsdLoadJob(job))
        cupsArrayAdd(ActiveJobs, job);
+      else if (job->state_value > IPP_JOB_STOPPED)
+      {
+        if (!job->completed_time || !job->creation_time || !job->name || !job->koctets)
+       {
+         cupsdLoadJob(job);
+         unload_job(job);
+       }
+      }
 
       job = NULL;
     }
@@ -4042,9 +4151,21 @@ load_job_cache(const char *filename)     /* I - job.cache filename */
       else if (job->state_value > IPP_JOB_COMPLETED)
         job->state_value = IPP_JOB_COMPLETED;
     }
+    else if (!_cups_strcasecmp(line, "Name"))
+    {
+      cupsdSetString(&(job->name), value);
+    }
+    else if (!_cups_strcasecmp(line, "Created"))
+    {
+      job->creation_time = strtol(value, NULL, 10);
+    }
+    else if (!_cups_strcasecmp(line, "Completed"))
+    {
+      job->completed_time = strtol(value, NULL, 10);
+    }
     else if (!_cups_strcasecmp(line, "HoldUntil"))
     {
-      job->hold_until = atoi(value);
+      job->hold_until = strtol(value, NULL, 10);
     }
     else if (!_cups_strcasecmp(line, "Priority"))
     {
@@ -4062,6 +4183,10 @@ load_job_cache(const char *filename)     /* I - job.cache filename */
     {
       job->dtype = (cups_ptype_t)atoi(value);
     }
+    else if (!_cups_strcasecmp(line, "KOctets"))
+    {
+      job->koctets = atoi(value);
+    }
     else if (!_cups_strcasecmp(line, "NumFiles"))
     {
       job->num_files = atoi(value);
@@ -4085,8 +4210,8 @@ load_job_cache(const char *filename)      /* I - job.cache filename */
          continue;
        }
 
-        job->filetypes    = calloc(job->num_files, sizeof(mime_type_t *));
-       job->compressions = calloc(job->num_files, sizeof(int));
+        job->filetypes    = calloc((size_t)job->num_files, sizeof(mime_type_t *));
+       job->compressions = calloc((size_t)job->num_files, sizeof(int));
 
         if (!job->filetypes || !job->compressions)
        {
@@ -4382,6 +4507,8 @@ set_time(cupsd_job_t *job,                /* I - Job to update */
 
   if (!strcmp(name, "time-at-completed"))
   {
+    job->completed_time = curtime;
+
     if (JobHistory < INT_MAX && attr)
       job->history_time = attr->values[0].integer + JobHistory;
     else
@@ -4413,6 +4540,10 @@ start_job(cupsd_job_t     *job,          /* I - Job ID */
           cupsd_printer_t *printer)    /* I - Printer to print job */
 {
   const char   *filename;              /* Support filename */
+  ipp_attribute_t *cancel_after = ippFindAttribute(job->attrs,
+                                                  "job-cancel-after",
+                                                  IPP_TAG_INTEGER);
+                                       /* job-cancel-after attribute */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "start_job(job=%p(%d), printer=%p(%s))",
@@ -4463,7 +4594,9 @@ start_job(cupsd_job_t     *job,           /* I - Job ID */
   job->printer      = printer;
   printer->job      = job;
 
-  if (MaxJobTime > 0)
+  if (cancel_after)
+    job->cancel_time = time(NULL) + ippGetInteger(cancel_after, 0);
+  else if (MaxJobTime > 0)
     job->cancel_time = time(NULL) + MaxJobTime;
   else
     job->cancel_time = 0;
@@ -4491,8 +4624,9 @@ start_job(cupsd_job_t     *job,           /* I - Job ID */
   * Setup the last exit status and security profiles...
   */
 
-  job->status  = 0;
-  job->profile = cupsdCreateProfile(job->id);
+  job->status   = 0;
+  job->profile  = cupsdCreateProfile(job->id, 0);
+  job->bprofile = cupsdCreateProfile(job->id, 1);
 
  /*
   * Create the status pipes and buffer...
@@ -4509,6 +4643,8 @@ start_job(cupsd_job_t     *job,           /* I - Job ID */
 
     cupsdDestroyProfile(job->profile);
     job->profile = NULL;
+    cupsdDestroyProfile(job->bprofile);
+    job->bprofile = NULL;
     return;
   }
 
@@ -4534,6 +4670,8 @@ start_job(cupsd_job_t     *job,           /* I - Job ID */
 
     cupsdDestroyProfile(job->profile);
     job->profile = NULL;
+    cupsdDestroyProfile(job->bprofile);
+    job->bprofile = NULL;
     return;
   }
 
@@ -4563,6 +4701,8 @@ start_job(cupsd_job_t     *job,           /* I - Job ID */
 
     cupsdDestroyProfile(job->profile);
     job->profile = NULL;
+    cupsdDestroyProfile(job->bprofile);
+    job->bprofile = NULL;
     return;
   }
 
@@ -4744,7 +4884,10 @@ update_job(cupsd_job_t *job)             /* I - Job to check */
 
       cupsdLogJob(job, CUPSD_LOG_DEBUG, "JOBSTATE: %s", message);
 
-      ippSetString(job->attrs, &job->reasons, 0, message);
+      if (!strcmp(message, "cups-retry-as-raster"))
+        job->retry_as_raster = 1;
+      else
+        ippSetString(job->attrs, &job->reasons, 0, message);
     }
     else if (loglevel == CUPSD_LOG_STATE)
     {
@@ -4759,7 +4902,7 @@ update_job(cupsd_job_t *job)              /* I - Job to check */
       {
        event |= CUPSD_EVENT_PRINTER_STATE;
 
-        if (MaxJobTime > 0 && strstr(message, "connecting-to-device") != NULL)
+        if (MaxJobTime > 0)
         {
          /*
           * Reset cancel time after connecting to the device...
@@ -4770,7 +4913,17 @@ update_job(cupsd_job_t *job)             /* I - Job to check */
               break;
 
           if (i >= job->printer->num_reasons)
-           job->cancel_time = time(NULL) + MaxJobTime;
+          {
+           ipp_attribute_t *cancel_after = ippFindAttribute(job->attrs,
+                                                            "job-cancel-after",
+                                                            IPP_TAG_INTEGER);
+                                       /* job-cancel-after attribute */
+
+            if (cancel_after)
+             job->cancel_time = time(NULL) + ippGetInteger(cancel_after, 0);
+           else
+             job->cancel_time = time(NULL) + MaxJobTime;
+         }
         }
       }
 
@@ -5136,5 +5289,5 @@ update_job_attrs(cupsd_job_t *job,        /* I - Job to update */
 
 
 /*
- * End of "$Id: job.c 11418 2013-11-08 15:18:01Z msweet $".
+ * End of "$Id: job.c 12067 2014-07-31 00:02:30Z msweet $".
  */
index efb0bd293041dcad9294165013f1c864e5144327..909e3a30ee8f6412ab7f011fd88f8f6b9453e9b9 100644 (file)
@@ -1,16 +1,16 @@
 /*
- * "$Id: job.h 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: job.h 12067 2014-07-31 00:02:30Z msweet $"
  *
- *   Print job definitions for the CUPS scheduler.
+ * Print job definitions for the CUPS scheduler.
  *
- *   Copyright 2007-2011 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/".
  */
 
 /*
@@ -39,6 +39,8 @@ struct cupsd_job_s                    /**** Job request ****/
                                         * waiting on files */
   char                 *username;      /* Printing user */
   char                 *dest;          /* Destination printer or class */
+  char                 *name;          /* Job name/title */
+  int                  koctets;        /* job-k-octets */
   cups_ptype_t         dtype;          /* Destination type */
   cupsd_printer_t      *printer;       /* Printer this job is assigned to */
   int                  num_files;      /* Number of files in job */
@@ -47,6 +49,8 @@ struct cupsd_job_s                    /**** Job request ****/
   ipp_attribute_t      *sheets;        /* job-media-sheets-completed */
   time_t               access_time,    /* Last access time */
                        cancel_time,    /* When to cancel/send SIGTERM */
+                       creation_time,  /* When job was created */
+                       completed_time, /* When job was completed (0 if not) */
                        file_time,      /* Job file retain time */
                        history_time,   /* Job history retain time */
                        hold_until,     /* Hold expiration date/time */
@@ -74,10 +78,13 @@ struct cupsd_job_s                  /**** Job request ****/
   int                  backend;        /* Backend process ID */
   int                  status;         /* Status code from filters */
   int                  tries;          /* Number of tries for this job */
+  int                  completed;      /* cups-waiting-for-job-completed seen */
+  int                  retry_as_raster;/* Need to retry the job as raster */
   char                 *auth_env[3],   /* AUTH_xxx environment variables,
                                          * if any */
                        *auth_uid;      /* AUTH_UID environment variable */
-  void                 *profile;       /* Security profile */
+  void                 *profile,       /* Security profile for filters */
+                       *bprofile;      /* Security profile for backend */
   cups_array_t         *history;       /* Debug log history */
   int                  progress;       /* Printing progress */
   int                  num_keywords;   /* Number of PPD keywords */
@@ -145,6 +152,7 @@ extern void         cupsdDeleteJob(cupsd_job_t *job,
                                       cupsd_jobaction_t action);
 extern cupsd_job_t     *cupsdFindJob(int id);
 extern void            cupsdFreeAllJobs(void);
+extern cups_array_t    *cupsdGetCompletedJobs(cupsd_printer_t *p);
 extern int             cupsdGetPrinterJobCount(const char *dest);
 extern int             cupsdGetUserJobCount(const char *username);
 extern void            cupsdLoadAllJobs(void);
@@ -171,5 +179,5 @@ extern void         cupsdUpdateJobs(void);
 
 
 /*
- * End of "$Id: job.h 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: job.h 12067 2014-07-31 00:02:30Z msweet $".
  */
index 997956c8f95b33bc35b9a35c254b424e817249e0..842d3787718b31a52b26a7efdd8473321459e77f 100644 (file)
@@ -1,24 +1,16 @@
 /*
- * "$Id: listen.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: listen.c 11717 2014-03-21 16:42:53Z msweet $"
  *
- *   Server listening routines for the CUPS scheduler.
+ * Server listening routines for the CUPS scheduler.
  *
- *   Copyright 2007-2010 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/".
- *
- * Contents:
- *
- *   cupsdDeleteAllListeners() - Delete all listeners.
- *   cupsdPauseListening()     - Clear input polling on all listening sockets...
- *   cupsdResumeListening()    - Set input polling on all listening sockets...
- *   cupsdStartListening()     - Create all listening sockets...
- *   cupsdStopListening()      - Close all listening sockets...
+ * These coded instructions, statements, and computer programs 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/".
  */
 
 /*
@@ -123,9 +115,7 @@ cupsdResumeListening(void)
 void
 cupsdStartListening(void)
 {
-  int                  status;         /* Bind result */
-  int                  p,              /* Port number */
-                       val;            /* Parameter value */
+  int                  p;              /* Port number */
   cupsd_listener_t     *lis;           /* Current listening socket */
   char                 s[256];         /* String addresss */
   const char           *have_domain;   /* Have a domain socket? */
@@ -163,7 +153,7 @@ cupsdStartListening(void)
       * Create a socket for listening...
       */
 
-      lis->fd = socket(lis->address.addr.sa_family, SOCK_STREAM, 0);
+      lis->fd = httpAddrListen(&(lis->address), p);
 
       if (lis->fd == -1)
       {
@@ -186,132 +176,15 @@ cupsdStartListening(void)
 
        continue;
       }
-
-     /*
-      * Set things up to reuse the local address for this port.
-      */
-
-      val = 1;
-#ifdef __sun
-      setsockopt(lis->fd, SOL_SOCKET, SO_REUSEADDR, (char *)&val, sizeof(val));
-#else
-      setsockopt(lis->fd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val));
-#endif /* __sun */
-
-     /*
-      * Bind to the port we found...
-      */
-
-#ifdef AF_INET6
-      if (lis->address.addr.sa_family == AF_INET6)
-      {
-#  ifdef IPV6_V6ONLY
-       /*
-       * Accept only IPv6 connections on this socket, to avoid
-       * potential security issues and to make all platforms behave
-       * the same.
-       */
-
-       val = 1;
-#    ifdef __sun
-       setsockopt(lis->fd, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&val, sizeof(val));
-#    else
-       setsockopt(lis->fd, IPPROTO_IPV6, IPV6_V6ONLY, &val, sizeof(val));
-#    endif /* __sun */
-#  endif /* IPV6_V6ONLY */
-
-       status = bind(lis->fd, (struct sockaddr *)&(lis->address),
-                     httpAddrLength(&(lis->address)));
-      }
-      else
-#endif /* AF_INET6 */
-#ifdef AF_LOCAL
-      if (lis->address.addr.sa_family == AF_LOCAL)
-      {
-       mode_t  mask;                   /* Umask setting */
-
-
-       /*
-       * Remove any existing domain socket file...
-       */
-
-       unlink(lis->address.un.sun_path);
-
-       /*
-       * Save the current umask and set it to 0 so that all users can access
-       * the domain socket...
-       */
-
-       mask = umask(0);
-
-       /*
-       * Bind the domain socket...
-       */
-
-       status = bind(lis->fd, (struct sockaddr *)&(lis->address),
-                     httpAddrLength(&(lis->address)));
-
-       /*
-       * Restore the umask...
-       */
-
-       umask(mask);
-      }
-      else
-#endif /* AF_LOCAL */
-      status = bind(lis->fd, (struct sockaddr *)&(lis->address),
-                   sizeof(lis->address.ipv4));
-
-      if (status < 0)
-      {
-       cupsdLogMessage(CUPSD_LOG_ERROR,
-                       "Unable to bind socket for address %s:%d - %s.",
-                       s, p, strerror(errno));
-       close(lis->fd);
-       lis->fd = -1;
-
-       if (FatalErrors & CUPSD_FATAL_LISTEN)
-         cupsdEndProcess(getpid(), 0);
-
-       continue;
-      }
-
-     /*
-      * Listen for new clients.
-      */
-
-      if (listen(lis->fd, ListenBackLog) < 0)
-      {
-       cupsdLogMessage(CUPSD_LOG_ERROR,
-                       "Unable to listen for clients on address %s:%d - %s.",
-                       s, p, strerror(errno));
-
-       close(lis->fd);
-       lis->fd = -1;
-
-       if (FatalErrors & CUPSD_FATAL_LISTEN)
-         cupsdEndProcess(getpid(), 0);
-
-        continue;
-      }
     }
 
-    fcntl(lis->fd, F_SETFD, fcntl(lis->fd, F_GETFD) | FD_CLOEXEC);
-
     if (p)
       cupsdLogMessage(CUPSD_LOG_INFO, "Listening to %s:%d on fd %d...",
                      s, p, lis->fd);
     else
-    {
       cupsdLogMessage(CUPSD_LOG_INFO, "Listening to %s on fd %d...",
                      s, lis->fd);
 
-      if (chmod(s, 0140777))
-       cupsdLogMessage(CUPSD_LOG_ERROR,
-                       "Unable to change permisssions on domain socket "
-                       "\"%s\" - %s", s, strerror(errno));
-    }
-
    /*
     * Save the first port that is bound to the local loopback or
     * "any" address...
@@ -339,7 +212,7 @@ cupsdStartListening(void)
   {
     cupsdLogMessage(CUPSD_LOG_EMERG,
                     "No Listen or Port lines were found to allow access via "
-                   "localhost!");
+                   "localhost.");
 
     if (FatalErrors & (CUPSD_FATAL_CONFIG | CUPSD_FATAL_LISTEN))
       cupsdEndProcess(getpid(), 0);
@@ -401,31 +274,29 @@ cupsdStopListening(void)
        lis;
        lis = (cupsd_listener_t *)cupsArrayNext(Listeners))
   {
+#ifdef HAVE_SYSTEMD
+    if (lis->fd != -1 && !lis->on_demand)
+      httpAddrClose(&(lis->address), lis->fd);
+
+#elif defined(HAVE_LAUNCHD)
     if (lis->fd != -1)
     {
-#ifdef WIN32
-      closesocket(lis->fd);
-#else
-      close(lis->fd);
-#endif /* WIN32 */
+      if (lis->on_demand)
+        httpAddrClose(NULL, lis->fd);
+      else
+        httpAddrClose(&(lis->address), lis->fd);
+    }
 
-#ifdef AF_LOCAL
-     /*
-      * Remove domain sockets...
-      */
+#else
+    if (lis->fd != -1)
+      httpAddrClose(&(lis->address), lis->fd);
+#endif /* HAVE_SYSTEMD */
 
-#  ifdef HAVE_LAUNCH_H
-      if (lis->address.addr.sa_family == AF_LOCAL && !Launchd)
-#  else
-      if (lis->address.addr.sa_family == AF_LOCAL)
-#  endif /* HAVE_LAUNCH_H */
-       unlink(lis->address.un.sun_path);
-#endif /* AF_LOCAL */
-    }
+    lis->fd = -1;
   }
 }
 
 
 /*
- * End of "$Id: listen.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: listen.c 11717 2014-03-21 16:42:53Z msweet $".
  */
index 207cd5f1081ecca4d27123be7ae48988c09534c1..7566edbcd7c8096ef40ba78b38450c0fc948d72c 100644 (file)
@@ -1,28 +1,16 @@
 /*
- * "$Id: log.c 11367 2013-10-28 15:35:57Z msweet $"
+ * "$Id: log.c 11920 2014-06-11 19:03:59Z msweet $"
  *
- *   Log file routines for the CUPS scheduler.
+ * Log file routines for the CUPS scheduler.
  *
- *   Copyright 2007-2012 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/".
- *
- * Contents:
- *
- *   cupsdCheckLogFile()     - Open/rotate a log file if it needs it.
- *   cupsdGetDateTime()   - Returns a pointer to a date/time string.
- *   cupsdLogGSSMessage() - Log a GSSAPI error...
- *   cupsdLogJob()        - Log a job message.
- *   cupsdLogMessage()    - Log a message to the error log file.
- *   cupsdLogPage()       - Log a page to the page log file.
- *   cupsdLogRequest()    - Log an HTTP request in Common Log Format.
- *   cupsdWriteErrorLog() - Write a line to the ErrorLog.
- *   format_log_line()    - Format a line for a log 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/".
  */
 
 /*
@@ -38,7 +26,9 @@
  * Local globals...
  */
 
-static int     log_linesize = 0;       /* Size of line for output file */
+static _cups_mutex_t log_mutex = _CUPS_MUTEX_INITIALIZER;
+                                       /* Mutex for logging */
+static size_t  log_linesize = 0;       /* Size of line for output file */
 static char    *log_line = NULL;       /* Line for output file */
 
 #ifdef HAVE_VSYSLOG
@@ -124,7 +114,7 @@ cupsdCheckLogFile(cups_file_t **lf, /* IO - Log file */
          * Insert the server name...
          */
 
-         strlcpy(ptr, ServerName, sizeof(filename) - (ptr - filename));
+         strlcpy(ptr, ServerName, sizeof(filename) - (size_t)(ptr - filename));
          ptr += strlen(ptr);
        }
         else
@@ -165,15 +155,14 @@ cupsdCheckLogFile(cups_file_t **lf,       /* IO - Log file */
        * the log file permissions as a basis...
        */
 
-        int log_dir_perm = 0300 | LogFilePerm;
+        mode_t log_dir_perm = (mode_t)(0300 | LogFilePerm);
                                        /* LogFilePerm + owner write/search */
        if (log_dir_perm & 0040)
          log_dir_perm |= 0010;         /* Add group search */
        if (log_dir_perm & 0004)
          log_dir_perm |= 0001;         /* Add other search */
 
-        cupsdCheckPermissions(CUPS_LOGDIR, NULL, log_dir_perm, RunUser, Group,
-                             1, -1);
+        cupsdCheckPermissions(CUPS_LOGDIR, NULL, log_dir_perm, RunUser, Group, 1, -1);
 
         *lf = cupsFileOpen(filename, "a");
       }
@@ -382,8 +371,8 @@ cupsdLogFCMessage(
 int                                    /* O - 1 on success, 0 on error */
 cupsdLogGSSMessage(
     int        level,                  /* I - Log level */
-    int               major_status,            /* I - Major GSSAPI status */
-    int               minor_status,            /* I - Minor GSSAPI status */
+    OM_uint32  major_status,           /* I - Major GSSAPI status */
+    OM_uint32  minor_status,           /* I - Minor GSSAPI status */
     const char *message,               /* I - printf-style message string */
     ...)                               /* I - Additional args as needed */
 {
@@ -436,6 +425,61 @@ cupsdLogGSSMessage(
 #endif /* HAVE_GSSAPI */
 
 
+/*
+ * 'cupsdLogClient()' - Log a client message.
+ */
+
+int                                    /* O - 1 on success, 0 on error */
+cupsdLogClient(cupsd_client_t *con,    /* I - Client connection */
+               int            level,   /* I - Log level */
+               const char     *message,        /* I - Printf-style message string */
+               ...)                    /* I - Additional arguments as needed */
+{
+  va_list              ap, ap2;        /* Argument pointers */
+  char                 clientmsg[1024];/* Format string for client message */
+  int                  status;         /* Formatting status */
+
+
+ /*
+  * See if we want to log this message...
+  */
+
+  if (TestConfigFile || !ErrorLog)
+    return (1);
+
+  if (level > LogLevel)
+    return (1);
+
+ /*
+  * Format and write the log message...
+  */
+
+  if (con)
+    snprintf(clientmsg, sizeof(clientmsg), "[Client %d] %s", con->number,
+             message);
+  else
+    strlcpy(clientmsg, message, sizeof(clientmsg));
+
+  va_start(ap, message);
+
+  do
+  {
+    va_copy(ap2, ap);
+    status = format_log_line(clientmsg, ap2);
+    va_end(ap2);
+  }
+  while (status == 0);
+
+  va_end(ap);
+
+  if (status > 0)
+    return (cupsdWriteErrorLog(level, log_line));
+  else
+    return (cupsdWriteErrorLog(CUPSD_LOG_ERROR,
+                               "Unable to allocate memory for log line."));
+}
+
+
 /*
  * 'cupsdLogJob()' - Log a job message.
  */
@@ -536,7 +580,7 @@ cupsdLogJob(cupsd_job_t *job,               /* I - Job */
   }
   else
     return (cupsdWriteErrorLog(CUPSD_LOG_ERROR,
-                               "Unable to allocate memory for log line!"));
+                               "Unable to allocate memory for log line."));
 }
 
 
@@ -642,53 +686,68 @@ cupsdLogPage(cupsd_job_t *job,            /* I - Job being printed */
            break;
 
         case 'p' :                     /* Printer name */
-           strlcpy(bufptr, job->printer->name,
-                   sizeof(buffer) - (bufptr - buffer));
+           strlcpy(bufptr, job->printer->name, sizeof(buffer) - (size_t)(bufptr - buffer));
            bufptr += strlen(bufptr);
            break;
 
         case 'j' :                     /* Job ID */
-           snprintf(bufptr, sizeof(buffer) - (bufptr - buffer), "%d", job->id);
+           snprintf(bufptr, sizeof(buffer) - (size_t)(bufptr - buffer), "%d", job->id);
            bufptr += strlen(bufptr);
            break;
 
         case 'u' :                     /* Username */
-           strlcpy(bufptr, job->username ? job->username : "-",
-                   sizeof(buffer) - (bufptr - buffer));
+           strlcpy(bufptr, job->username ? job->username : "-", sizeof(buffer) - (size_t)(bufptr - buffer));
            bufptr += strlen(bufptr);
            break;
 
         case 'T' :                     /* Date and time */
-           strlcpy(bufptr, cupsdGetDateTime(NULL, LogTimeFormat),
-                   sizeof(buffer) - (bufptr - buffer));
+           strlcpy(bufptr, cupsdGetDateTime(NULL, LogTimeFormat), sizeof(buffer) - (size_t)(bufptr - buffer));
            bufptr += strlen(bufptr);
            break;
 
         case 'P' :                     /* Page number */
-           strlcpy(bufptr, number, sizeof(buffer) - (bufptr - buffer));
+           strlcpy(bufptr, number, sizeof(buffer) - (size_t)(bufptr - buffer));
            bufptr += strlen(bufptr);
            break;
 
         case 'C' :                     /* Number of copies */
-           snprintf(bufptr, sizeof(buffer) - (bufptr - buffer), "%d", copies);
+           snprintf(bufptr, sizeof(buffer) - (size_t)(bufptr - buffer), "%d", copies);
            bufptr += strlen(bufptr);
            break;
 
         case '{' :                     /* {attribute} */
-           if ((nameend = strchr(format, '}')) != NULL &&
-               (nameend - format - 2) < (sizeof(name) - 1))
+           if ((nameend = strchr(format, '}')) != NULL && (size_t)(nameend - format - 2) < (sizeof(name) - 1))
            {
             /*
              * Pull the name from inside the brackets...
              */
 
-             memcpy(name, format + 1, nameend - format - 1);
+             memcpy(name, format + 1, (size_t)(nameend - format - 1));
              name[nameend - format - 1] = '\0';
 
              format = nameend;
 
-             if ((attr = ippFindAttribute(job->attrs, name,
-                                          IPP_TAG_ZERO)) != NULL)
+             attr = ippFindAttribute(job->attrs, name, IPP_TAG_ZERO);
+             if (!attr && !strcmp(name, "job-billing"))
+             {
+              /*
+               * Handle alias "job-account-id" (which was standardized after
+               * "job-billing" was defined for CUPS...
+               */
+
+               attr = ippFindAttribute(job->attrs, "job-account-id", IPP_TAG_ZERO);
+             }
+             else if (!attr && !strcmp(name, "media"))
+             {
+              /*
+               * Handle alias "media-col" which uses dimensions instead of
+               * names...
+               */
+
+               attr = ippFindAttribute(job->attrs, "media-col/media-size", IPP_TAG_BEGIN_COLLECTION);
+             }
+
+             if (attr)
              {
               /*
                * Add the attribute value...
@@ -706,14 +765,12 @@ cupsdLogPage(cupsd_job_t *job,            /* I - Job being printed */
                  {
                    case IPP_TAG_INTEGER :
                    case IPP_TAG_ENUM :
-                       snprintf(bufptr, sizeof(buffer) - (bufptr - buffer),
-                                "%d", attr->values[i].integer);
+                       snprintf(bufptr, sizeof(buffer) - (size_t)(bufptr - buffer), "%d", attr->values[i].integer);
                        bufptr += strlen(bufptr);
                        break;
 
                     case IPP_TAG_BOOLEAN :
-                       snprintf(bufptr, sizeof(buffer) - (bufptr - buffer),
-                                "%d", attr->values[i].boolean);
+                       snprintf(bufptr, sizeof(buffer) - (size_t)(bufptr - buffer), "%d", attr->values[i].boolean);
                        bufptr += strlen(bufptr);
                        break;
 
@@ -727,14 +784,28 @@ cupsdLogPage(cupsd_job_t *job,            /* I - Job being printed */
                    case IPP_TAG_CHARSET :
                    case IPP_TAG_LANGUAGE :
                    case IPP_TAG_MIMETYPE :
-                       strlcpy(bufptr, attr->values[i].string.text,
-                               sizeof(buffer) - (bufptr - buffer));
+                       strlcpy(bufptr, attr->values[i].string.text, sizeof(buffer) - (size_t)(bufptr - buffer));
                        bufptr += strlen(bufptr);
                        break;
 
+                    case IPP_TAG_BEGIN_COLLECTION :
+                       if (!strcmp(attr->name, "media-size"))
+                       {
+                         ipp_attribute_t *x_dimension = ippFindAttribute(ippGetCollection(attr, 0), "x-dimension", IPP_TAG_INTEGER);
+                         ipp_attribute_t *y_dimension = ippFindAttribute(ippGetCollection(attr, 0), "y-dimension", IPP_TAG_INTEGER);
+                                       /* Media dimensions */
+
+                         if (x_dimension && y_dimension)
+                         {
+                           pwg_media_t *pwg = pwgMediaForSize(ippGetInteger(x_dimension, 0), ippGetInteger(y_dimension, 0));
+                                       /* PWG media name */
+                           strlcpy(bufptr, pwg->pwg, sizeof(buffer) - (size_t)(bufptr - buffer));
+                           break;
+                         }
+                       }
+
                    default :
-                       strlcpy(bufptr, "???",
-                               sizeof(buffer) - (bufptr - buffer));
+                       strlcpy(bufptr, "???", sizeof(buffer) - (size_t)(bufptr - buffer));
                        bufptr += strlen(bufptr);
                        break;
                  }
@@ -826,7 +897,9 @@ cupsdLogRequest(cupsd_client_t *con,        /* I - Request to log */
   * Filter requests as needed...
   */
 
-  if (AccessLogLevel < CUPSD_ACCESSLOG_ALL)
+  if (AccessLogLevel == CUPSD_ACCESSLOG_NONE)
+    return (1);
+  else if (AccessLogLevel < CUPSD_ACCESSLOG_ALL)
   {
    /*
     * Eliminate simple GET, POST, and PUT requests...
@@ -939,9 +1012,9 @@ cupsdLogRequest(cupsd_client_t *con,       /* I - Request to log */
   {
     syslog(LOG_INFO,
            "REQUEST %s - %s \"%s %s HTTP/%d.%d\" %d " CUPS_LLFMT " %s %s\n",
-           con->http.hostname, con->username[0] != '\0' ? con->username : "-",
+           con->http->hostname, con->username[0] != '\0' ? con->username : "-",
           states[con->operation], _httpEncodeURI(temp, con->uri, sizeof(temp)),
-          con->http.version / 100, con->http.version % 100,
+          con->http->version / 100, con->http->version % 100,
           code, CUPS_LLCAST con->bytes,
           con->request ?
               ippOpString(con->request->request.op.operation_id) : "-",
@@ -965,12 +1038,12 @@ cupsdLogRequest(cupsd_client_t *con,     /* I - Request to log */
 
   cupsFilePrintf(AccessFile,
                  "%s - %s %s \"%s %s HTTP/%d.%d\" %d " CUPS_LLFMT " %s %s\n",
-                con->http.hostname,
+                con->http->hostname,
                 con->username[0] != '\0' ? con->username : "-",
                 cupsdGetDateTime(&(con->start), LogTimeFormat),
                 states[con->operation],
                 _httpEncodeURI(temp, con->uri, sizeof(temp)),
-                con->http.version / 100, con->http.version % 100,
+                con->http->version / 100, con->http->version % 100,
                 code, CUPS_LLCAST con->bytes,
                 con->request ?
                     ippOpString(con->request->request.op.operation_id) : "-",
@@ -992,6 +1065,7 @@ int                                        /* O - 1 on success, 0 on failure */
 cupsdWriteErrorLog(int        level,   /* I - Log level */
                    const char *message)        /* I - Message string */
 {
+  int          ret = 1;                /* Return value */
   static const char    levels[] =      /* Log levels... */
                {
                  ' ',
@@ -1023,18 +1097,26 @@ cupsdWriteErrorLog(int        level,    /* I - Log level */
   * Not using syslog; check the log file...
   */
 
+  _cupsMutexLock(&log_mutex);
+
   if (!cupsdCheckLogFile(&ErrorFile, ErrorLog))
-    return (0);
+  {
+    ret = 0;
+  }
+  else
+  {
+   /*
+    * Write the log message...
+    */
 
- /*
-  * Write the log message...
-  */
+    cupsFilePrintf(ErrorFile, "%c %s %s\n", levels[level],
+                   cupsdGetDateTime(NULL, LogTimeFormat), message);
+    cupsFileFlush(ErrorFile);
+  }
 
-  cupsFilePrintf(ErrorFile, "%c %s %s\n", levels[level],
-                 cupsdGetDateTime(NULL, LogTimeFormat), message);
-  cupsFileFlush(ErrorFile);
+  _cupsMutexUnlock(&log_mutex);
 
-  return (1);
+  return (ret);
 }
 
 
@@ -1050,7 +1132,7 @@ static int                                /* O - -1 for fatal, 0 for retry, 1 for success */
 format_log_line(const char *message,   /* I - Printf-style format string */
                 va_list    ap)         /* I - Argument list */
 {
-  int          len;                    /* Length of formatted line */
+  ssize_t      len;                    /* Length of formatted line */
 
 
  /*
@@ -1076,7 +1158,7 @@ format_log_line(const char *message,      /* I - Printf-style format string */
   * Resize the buffer as needed...
   */
 
-  if (len >= log_linesize && log_linesize < 65536)
+  if ((size_t)len >= log_linesize && log_linesize < 65536)
   {
     char       *temp;                  /* Temporary string pointer */
 
@@ -1088,12 +1170,12 @@ format_log_line(const char *message,    /* I - Printf-style format string */
     else if (len > 65536)
       len = 65536;
 
-    temp = realloc(log_line, len);
+    temp = realloc(log_line, (size_t)len);
 
     if (temp)
     {
       log_line     = temp;
-      log_linesize = len;
+      log_linesize = (size_t)len;
 
       return (0);
     }
@@ -1104,5 +1186,5 @@ format_log_line(const char *message,      /* I - Printf-style format string */
 
 
 /*
- * End of "$Id: log.c 11367 2013-10-28 15:35:57Z msweet $".
+ * End of "$Id: log.c 11920 2014-06-11 19:03:59Z msweet $".
  */
index e9ced71c401e0ac29176c1010a3b3dffeb8e1878..92c10b127e0605cc5bf32160f0c2758436df7467 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: main.c 11721 2014-03-21 18:18:56Z msweet $"
+ * "$Id: main.c 11722 2014-03-21 18:28:30Z msweet $"
  *
  * Main loop for the CUPS scheduler.
  *
 #  include <libgen.h>
 #  define CUPS_KEEPALIVE CUPS_CACHEDIR "/org.cups.cupsd"
                                        /* Name of the launchd KeepAlive file */
-#  ifndef LAUNCH_JOBKEY_KEEPALIVE
-#    define LAUNCH_JOBKEY_KEEPALIVE "KeepAlive"
-#  endif /* !LAUNCH_JOBKEY_KEEPALIVE */
-#  ifndef LAUNCH_JOBKEY_PATHSTATE
-#    define LAUNCH_JOBKEY_PATHSTATE "PathState"
-#  endif /* !LAUNCH_JOBKEY_PATHSTATE */
-#  ifndef LAUNCH_JOBKEY_SERVICEIPC
-#    define LAUNCH_JOBKEY_SERVICEIPC "ServiceIPC"
-#  endif /* !LAUNCH_JOBKEY_SERVICEIPC */
+#  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 */
+
 #if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO)
 #  include <malloc.h>
 #endif /* HAVE_MALLOC_H && HAVE_MALLINFO */
  * Local functions...
  */
 
-#ifdef HAVE_LAUNCHD
-static void            launchd_checkin(void);
-static void            launchd_checkout(void);
-#endif /* HAVE_LAUNCHD */
 static void            parent_handler(int sig);
 static void            process_children(void);
 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)
+static void            service_checkin(void);
+static void            service_checkout(void);
+#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
 static void            usage(int status) __attribute__((noreturn));
 
 
@@ -123,10 +124,10 @@ main(int  argc,                           /* I - Number of command-line args */
 #else
   time_t               netif_time = 0; /* Time since last network update */
 #endif /* __APPLE__ */
-#if HAVE_LAUNCHD
-  int                  launchd_idle_exit;
+#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+  int                  service_idle_exit;
                                        /* Idle exit on select timeout? */
-#endif /* HAVE_LAUNCHD */
+#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
 
 
 #ifdef HAVE_GETEUID
@@ -150,8 +151,8 @@ main(int  argc,                             /* I - Number of command-line args */
 #ifdef HAVE_LAUNCHD
   if (getenv("CUPSD_LAUNCHD"))
   {
-    Launchd = 1;
-    fg      = 1;
+    OnDemand = 1;
+    fg       = 1;
   }
 #endif /* HAVE_LAUNCHD */
 
@@ -228,15 +229,15 @@ main(int  argc,                           /* I - Number of command-line args */
              usage(0);
              break;
 
-          case 'l' : /* Started by launchd... */
-#ifdef HAVE_LAUNCHD
-             Launchd = 1;
-             fg      = 1;
+          case 'l' : /* Started by launchd/systemd... */
+#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+             OnDemand = 1;
+             fg       = 1;
 #else
-             _cupsLangPuts(stderr, _("cupsd: launchd(8) support not compiled "
+             _cupsLangPuts(stderr, _("cupsd: On-demand support not compiled "
                                      "in, running in normal mode."));
               fg = 0;
-#endif /* HAVE_LAUNCHD */
+#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
              break;
 
           case 'p' : /* Stop immediately for profiling */
@@ -247,9 +248,8 @@ main(int  argc,                             /* I - Number of command-line args */
              break;
 
           case 'P' : /* Disable security profiles */
-              fputs("cupsd: -P (disable security profiles) is for internal "
-                    "testing use only!\n", stderr);
-             UseProfiles = 0;
+              fputs("cupsd: -P (disable sandboxing) is for internal testing use only.\n", stderr);
+             UseSandboxing = 0;
              break;
 
           case 's' : /* Set cups-files.conf location */
@@ -328,7 +328,7 @@ main(int  argc,                             /* I - Number of command-line args */
       return (1);
     }
 
-    strlcpy(slash, "/cups-files.conf", len - (slash - filename));
+    strlcpy(slash, "/cups-files.conf", len - (size_t)(slash - filename));
     cupsdSetString(&CupsFilesFile, filename);
     free(filename);
   }
@@ -513,7 +513,7 @@ main(int  argc,                             /* I - Number of command-line args */
 #endif /* RLIM_INFINITY */
     MaxFDs = limit.rlim_max;
 
-  limit.rlim_cur = MaxFDs;
+  limit.rlim_cur = (rlim_t)MaxFDs;
 
   setrlimit(RLIMIT_NOFILE, &limit);
 
@@ -541,17 +541,18 @@ main(int  argc,                           /* I - Number of command-line args */
 
   cupsdCleanFiles(CacheDir, "*.ipp");
 
-#if HAVE_LAUNCHD
-  if (Launchd)
+#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+  if (OnDemand)
   {
    /*
-    * If we were started by launchd get the listen sockets file descriptors...
+    * If we were started on demand by launchd or systemd get the listen sockets
+    * file descriptors...
     */
 
-    launchd_checkin();
-    launchd_checkout();
+    service_checkin();
+    service_checkout();
   }
-#endif /* HAVE_LAUNCHD */
+#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
 
  /*
   * Startup the server...
@@ -638,18 +639,15 @@ main(int  argc,                           /* I - Number of command-line args */
   * Send server-started event...
   */
 
-#ifdef HAVE_LAUNCHD
-  if (Launchd)
-    cupsdAddEvent(CUPSD_EVENT_SERVER_STARTED, NULL, NULL,
-                  "Scheduler started via launchd.");
+#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+  if (OnDemand)
+    cupsdAddEvent(CUPSD_EVENT_SERVER_STARTED, NULL, NULL, "Scheduler started on demand.");
   else
-#endif /* HAVE_LAUNCHD */
+#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
   if (fg)
-    cupsdAddEvent(CUPSD_EVENT_SERVER_STARTED, NULL, NULL,
-                  "Scheduler started in foreground.");
+    cupsdAddEvent(CUPSD_EVENT_SERVER_STARTED, NULL, NULL, "Scheduler started in foreground.");
   else
-    cupsdAddEvent(CUPSD_EVENT_SERVER_STARTED, NULL, NULL,
-                  "Scheduler started in background.");
+    cupsdAddEvent(CUPSD_EVENT_SERVER_STARTED, NULL, NULL, "Scheduler started in background.");
 
  /*
   * Start any pending print jobs...
@@ -692,10 +690,10 @@ main(int  argc,                           /* I - Number of command-line args */
        for (con = (cupsd_client_t *)cupsArrayFirst(Clients);
             con;
             con = (cupsd_client_t *)cupsArrayNext(Clients))
-         if (con->http.state == HTTP_WAITING)
+         if (httpGetState(con->http) == HTTP_WAITING)
            cupsdCloseClient(con);
          else
-           con->http.keep_alive = HTTP_KEEPALIVE_OFF;
+           con->http->keep_alive = HTTP_KEEPALIVE_OFF;
 
         cupsdPauseListening();
       }
@@ -728,18 +726,18 @@ main(int  argc,                           /* I - Number of command-line args */
           break;
        }
 
-#if HAVE_LAUNCHD
-       if (Launchd)
+#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+       if (OnDemand)
        {
         /*
-         * If we were started by launchd, get the listen socket file
+         * If we were started by launchd or systemd, get the listen socket file
          * descriptors...
          */
 
-         launchd_checkin();
-         launchd_checkout();
+         service_checkin();
+         service_checkout();
        }
-#endif /* HAVE_LAUNCHD */
+#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
 
        /*
         * Startup the server...
@@ -770,23 +768,23 @@ main(int  argc,                           /* I - Number of command-line args */
     if ((timeout = select_timeout(fds)) > 1 && LastEvent)
       timeout = 1;
 
-#if HAVE_LAUNCHD
+#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
    /*
     * If no other work is scheduled and we're being controlled by
     * launchd then timeout after 'LaunchdTimeout' seconds of
     * inactivity...
     */
 
-    if (timeout == 86400 && Launchd && LaunchdTimeout &&
+    if (timeout == 86400 && OnDemand && IdleExitTimeout &&
         !cupsArrayCount(ActiveJobs) &&
        (!Browsing || !BrowseLocalProtocols || !cupsArrayCount(Printers)))
     {
-      timeout          = LaunchdTimeout;
-      launchd_idle_exit = 1;
+      timeout          = IdleExitTimeout;
+      service_idle_exit = 1;
     }
     else
-      launchd_idle_exit = 0;
-#endif /* HAVE_LAUNCHD */
+      service_idle_exit = 0;
+#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
 
     if ((fds = cupsdDoSelect(timeout)) < 0)
     {
@@ -814,7 +812,7 @@ main(int  argc,                             /* I - Number of command-line args */
           i ++, con = (cupsd_client_t *)cupsArrayNext(Clients))
         cupsdLogMessage(CUPSD_LOG_EMERG,
                        "Clients[%d] = %d, file = %d, state = %d",
-                       i, con->http.fd, con->file, con->http.state);
+                       i, con->number, con->file, httpGetState(con->http));
 
       for (i = 0, lis = (cupsd_listener_t *)cupsArrayFirst(Listeners);
            lis;
@@ -883,13 +881,13 @@ main(int  argc,                           /* I - Number of command-line args */
     }
 #endif /* !__APPLE__ */
 
-#if HAVE_LAUNCHD
+#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
    /*
     * If no other work was scheduled and we're being controlled by launchd
     * then timeout after 'LaunchdTimeout' seconds of inactivity...
     */
 
-    if (!fds && launchd_idle_exit)
+    if (!fds && service_idle_exit)
     {
       cupsdLogMessage(CUPSD_LOG_INFO,
                       "Printer sharing is off and there are no jobs pending, "
@@ -897,7 +895,7 @@ main(int  argc,                             /* I - Number of command-line args */
       stop_scheduler = 1;
       break;
     }
-#endif /* HAVE_LAUNCHD */
+#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
 
    /*
     * Resume listening for new connections as needed...
@@ -951,7 +949,7 @@ main(int  argc,                             /* I - Number of command-line args */
       * Process pending data in the input buffer...
       */
 
-      if (con->http.used)
+      if (httpGetReady(con->http))
       {
         cupsdReadClient(con);
        continue;
@@ -962,11 +960,9 @@ main(int  argc,                            /* I - Number of command-line args */
       */
 
       activity = current_time - Timeout;
-      if (con->http.activity < activity && !con->pipe_pid)
+      if (httpGetActivity(con->http) < activity && !con->pipe_pid)
       {
-        cupsdLogMessage(CUPSD_LOG_DEBUG,
-                       "Closing client %d after %d seconds of inactivity...",
-                       con->http.fd, Timeout);
+        cupsdLogMessage(CUPSD_LOG_DEBUG, "Closing client %d after %d seconds of inactivity.", con->number, Timeout);
 
         cupsdCloseClient(con);
         continue;
@@ -1103,14 +1099,14 @@ main(int  argc,                         /* I - Number of command-line args */
 
   cupsdStopServer();
 
-#ifdef HAVE_LAUNCHD
+#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
  /*
-  * Update the launchd KeepAlive file as needed...
+  * Update the keep-alive file as needed...
   */
 
-  if (Launchd)
-    launchd_checkout();
-#endif /* HAVE_LAUNCHD */
+  if (OnDemand)
+    service_checkout();
+#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
 
  /*
   * Stop all jobs...
@@ -1300,197 +1296,6 @@ cupsdSetStringf(char       **s,         /* O - New string */
 }
 
 
-#ifdef HAVE_LAUNCHD
-/*
- * 'launchd_checkin()' - Check-in with launchd and collect the listening fds.
- */
-
-static void
-launchd_checkin(void)
-{
-  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 */
-
-
-  cupsdLogMessage(CUPSD_LOG_DEBUG, "launchd_checkin: pid=%d", (int)getpid());
-
- /*
-  * 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,
-                   "launchd_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, "launchd_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,
-                    "launchd_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)
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR,
-                    "launchd_checkin: No sockets found to answer requests on!");
-    exit(EXIT_FAILURE);
-    return; /* anti-compiler-warning */
-  }
-
- /*
-  * Add listening fd(s) to the Listener array...
-  */
-
-  if (launch_data_get_type(ld_array) == LAUNCH_DATA_ARRAY)
-  {
-    count = launch_data_array_get_count(ld_array);
-
-    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,
-                         "launchd_checkin: Unable to get local address - %s",
-                         strerror(errno));
-         continue;
-       }
-
-       /*
-       * 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,
-                 "launchd_checkin: Matched existing listener %s with fd %d...",
-                 httpAddrString(&(lis->address), s, sizeof(s)), fd);
-       }
-       else
-       {
-         cupsdLogMessage(CUPSD_LOG_DEBUG,
-                 "launchd_checkin: Adding new listener %s with fd %d...",
-                 httpAddrString(&addr, s, sizeof(s)), fd);
-
-         if ((lis = calloc(1, sizeof(cupsd_listener_t))) == NULL)
-         {
-           cupsdLogMessage(CUPSD_LOG_ERROR,
-                           "launchd_checkin: Unable to allocate listener - "
-                           "%s.", strerror(errno));
-           exit(EXIT_FAILURE);
-         }
-
-         cupsArrayAdd(Listeners, lis);
-
-         memcpy(&lis->address, &addr, sizeof(lis->address));
-       }
-
-       lis->fd = fd;
-
-#  ifdef HAVE_SSL
-       if (httpAddrPort(&(lis->address)) == 443)
-         lis->encryption = HTTP_ENCRYPT_ALWAYS;
-#  endif /* HAVE_SSL */
-      }
-    }
-  }
-
-  launch_data_free(ld_msg);
-  launch_data_free(ld_resp);
-}
-
-
-/*
- * 'launchd_checkout()' - Update the launchd KeepAlive file as needed.
- */
-
-static void
-launchd_checkout(void)
-{
-  int  fd;                             /* File descriptor */
-
-
- /*
-  * Create or remove the launchd KeepAlive file based on whether
-  * there are active jobs, polling, browsing for remote printers or
-  * shared printers to advertise...
-  */
-
-  if (cupsArrayCount(ActiveJobs) ||
-      (Browsing && BrowseLocalProtocols && cupsArrayCount(Printers)))
-  {
-    cupsdLogMessage(CUPSD_LOG_DEBUG,
-                    "Creating launchd keepalive file \"" CUPS_KEEPALIVE
-                    "\"...");
-
-    if ((fd = open(CUPS_KEEPALIVE, O_RDONLY | O_CREAT | O_EXCL, S_IRUSR)) >= 0)
-      close(fd);
-  }
-  else
-  {
-    cupsdLogMessage(CUPSD_LOG_DEBUG,
-                    "Removing launchd keepalive file \"" CUPS_KEEPALIVE
-                    "\"...");
-
-    unlink(CUPS_KEEPALIVE);
-  }
-}
-#endif /* HAVE_LAUNCHD */
-
-
 /*
  * 'parent_handler()' - Catch USR1/CHLD signals...
  */
@@ -1768,7 +1573,7 @@ select_timeout(int fds)                   /* I - Number of descriptors returned */
   for (con = (cupsd_client_t *)cupsArrayFirst(Clients);
        con;
        con = (cupsd_client_t *)cupsArrayNext(Clients))
-    if (con->http.used > 0)
+    if (httpGetReady(con->http))
       return (0);
 
  /*
@@ -1822,9 +1627,9 @@ select_timeout(int fds)                   /* I - Number of descriptors returned */
   for (con = (cupsd_client_t *)cupsArrayFirst(Clients);
        con;
        con = (cupsd_client_t *)cupsArrayNext(Clients))
-    if ((con->http.activity + Timeout) < timeout)
+    if ((httpGetActivity(con->http) + Timeout) < timeout)
     {
-      timeout = con->http.activity + Timeout;
+      timeout = httpGetActivity(con->http) + Timeout;
       why     = "timeout a client connection";
     }
 
@@ -1988,6 +1793,357 @@ sigterm_handler(int sig)                /* I - Signal number */
 }
 
 
+#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+/*
+ * 'service_checkin()' - Check-in with launchd and collect the listening fds.
+ */
+
+static void
+service_checkin(void)
+{
+#  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());
+
+ /*
+  * Check-in with launchd...
+  */
+
+  if ((error = launch_activate_socket("Listeners", &ld_sockets, &count)) != 0)
+  {
+    cupsdLogMessage(CUPSD_LOG_ERROR, "service_checkin: Unable to get listener sockets: %s", strerror(error));
+    exit(EXIT_FAILURE);
+    return; /* anti-compiler-warning */
+  }
+
+ /*
+  * Try to match the launchd sockets to the cupsd 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;
+
+   /*
+    * 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        = ld_sockets[i];
+    lis->on_demand = 1;
+
+#    ifdef HAVE_SSL
+    if (httpAddrPort(&(lis->address)) == 443)
+      lis->encryption = HTTP_ENCRYPT_ALWAYS;
+#    endif /* HAVE_SSL */
+  }
+
+#  elif defined(HAVE_LAUNCHD)
+  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 */
+
+
+  cupsdLogMessage(CUPSD_LOG_DEBUG, "service_checkin: pid=%d", (int)getpid());
+
+ /*
+  * 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)
+  {
+    cupsdLogMessage(CUPSD_LOG_ERROR,
+                    "service_checkin: No sockets found to answer requests on.");
+    exit(EXIT_FAILURE);
+    return; /* anti-compiler-warning */
+  }
+
+ /*
+  * Add listening fd(s) to the Listener array...
+  */
+
+  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;
+
+#    ifdef HAVE_SSL
+       if (httpAddrPort(&(lis->address)) == 443)
+         lis->encryption = HTTP_ENCRYPT_ALWAYS;
+#    endif /* HAVE_SSL */
+      }
+    }
+  }
+
+  launch_data_free(ld_msg);
+  launch_data_free(ld_resp);
+
+#  else /* 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());
+
+ /*
+  * Check-in with systemd...
+  */
+
+  if ((count = sd_listen_fds(0)) < 0)
+  {
+    cupsdLogMessage(CUPSD_LOG_ERROR, "service_checkin: Unable to get listener sockets: %s", strerror(-count));
+    exit(EXIT_FAILURE);
+    return; /* anti-compiler-warning */
+  }
+
+ /*
+  * Try to match the systemd sockets to the cupsd listeners...
+  */
+
+  cupsdLogMessage(CUPSD_LOG_DEBUG, "service_checkin: %d listeners.", count);
+
+  for (i = 0; i < count; i ++)
+  {
+   /*
+    * Get the launchd socket address...
+    */
+
+    addrlen = sizeof(addr);
+
+    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;
+    }
+
+    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;
+
+   /*
+    * 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        = SD_LISTEN_FDS_START + i;
+    lis->on_demand = 1;
+
+#    ifdef HAVE_SSL
+    if (httpAddrPort(&(lis->address)) == 443)
+      lis->encryption = HTTP_ENCRYPT_ALWAYS;
+#    endif /* HAVE_SSL */
+  }
+#  endif /* HAVE_LAUNCH_ACTIVATE_SOCKET */
+}
+
+
+/*
+ * 'service_checkout()' - Update the CUPS_KEEPALIVE file as needed.
+ */
+
+static void
+service_checkout(void)
+{
+  int  fd;                             /* File descriptor */
+
+
+ /*
+  * Create or remove the systemd path file based on whether there are active
+  * jobs or shared printers to advertise...
+  */
+
+  if (cupsArrayCount(ActiveJobs) ||
+      (Browsing && BrowseLocalProtocols && cupsArrayCount(Printers)))
+  {
+    cupsdLogMessage(CUPSD_LOG_DEBUG, "Creating keep-alive file \"" CUPS_KEEPALIVE "\".");
+
+    if ((fd = open(CUPS_KEEPALIVE, O_RDONLY | O_CREAT | O_EXCL, S_IRUSR)) >= 0)
+      close(fd);
+  }
+  else
+  {
+    cupsdLogMessage(CUPSD_LOG_DEBUG, "Removing keep-alive file \"" CUPS_KEEPALIVE "\".");
+
+    unlink(CUPS_KEEPALIVE);
+  }
+}
+#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+
+
 /*
  * 'usage()' - Show scheduler usage.
  */
@@ -2005,7 +2161,7 @@ usage(int status)                 /* O - Exit status */
   _cupsLangPuts(fp, _("  -F                      Run in the foreground but "
                       "detach from console."));
   _cupsLangPuts(fp, _("  -h                      Show this usage message."));
-  _cupsLangPuts(fp, _("  -l                      Run cupsd from launchd(8)."));
+  _cupsLangPuts(fp, _("  -l                      Run cupsd on demand."));
   _cupsLangPuts(fp, _("  -t                      Test the configuration "
                       "file."));
 
@@ -2014,5 +2170,5 @@ usage(int status)                 /* O - Exit status */
 
 
 /*
- * End of "$Id: main.c 11721 2014-03-21 18:18:56Z msweet $".
+ * End of "$Id: main.c 11722 2014-03-21 18:28:30Z msweet $".
  */
index 158ccfa4ccb0a720e56dfc49b47769b2faa21ba0..29d3ebcf2b5a5fef7be86a4c5a509245513e4022 100644 (file)
@@ -1,40 +1,16 @@
 /*
- * "$Id: mime.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: mime.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   MIME database file routines for CUPS.
+ * MIME database file routines for CUPS.
  *
- *   Copyright 2007-2012 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/".
- *
- * Contents:
- *
- *   mimeDelete()           - Delete (free) a MIME database.
- *   mimeDeleteFilter()     - Delete a filter from the MIME database.
- *   mimeDeleteType()       - Delete a type from the MIME database.
- *   _mimeError()           - Show an error message.
- *   mimeFirstFilter()      - Get the first filter in the MIME database.
- *   mimeFirstType()        - Get the first type in the MIME database.
- *   mimeLoad()             - Create a new MIME database from disk.
- *   mimeLoadFilters()      - Load filter definitions from disk.
- *   mimeLoadTypes()        - Load type definitions from disk.
- *   mimeNew()              - Create a new, empty MIME database.
- *   mimeNextFilter()       - Get the next filter in the MIME database.
- *   mimeNextType()         - Get the next type in the MIME database.
- *   mimeNumFilters()       - Get the number of filters in a MIME database.
- *   mimeNumTypes()         - Get the number of types in a MIME database.
- *   mimeSetErrorCallback() - Set the callback for error messages.
- *   mime_add_fcache()      - Add a filter to the filter cache.
- *   mime_compare_fcache()  - Compare two filter cache entries.
- *   mime_delete_fcache()   - Free all memory used by the filter cache.
- *   mime_delete_rules()    - Free all memory for the given rule tree.
- *   mime_load_convs()      - Load a xyz.convs file.
- *   mime_load_types()      - Load a xyz.types 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/".
  */
 
 /*
@@ -659,6 +635,9 @@ mime_delete_rules(mime_magic_t *rules)      /* I - Rules to free */
     if (rules->child != NULL)
       mime_delete_rules(rules->child);
 
+    if (rules->op == MIME_MAGIC_REGEX)
+      regfree(&(rules->value.rev));
+
     free(rules);
     rules = next;
   }
@@ -741,7 +720,7 @@ mime_load_convs(
 
     while (*lineptr != '/' && *lineptr != '\n' && *lineptr != '\0' &&
            (temp - super + 1) < MIME_MAX_SUPER)
-      *temp++ = tolower(*lineptr++ & 255);
+      *temp++ = (char)tolower(*lineptr++ & 255);
 
     *temp = '\0';
 
@@ -753,7 +732,7 @@ mime_load_convs(
 
     while (*lineptr != ' ' && *lineptr != '\t' && *lineptr != '\n' &&
            *lineptr != '\0' && (temp - type + 1) < MIME_MAX_TYPE)
-      *temp++ = tolower(*lineptr++ & 255);
+      *temp++ = (char)tolower(*lineptr++ & 255);
 
     *temp = '\0';
 
@@ -814,7 +793,7 @@ mime_load_convs(
 
     while (*lineptr != '/' && *lineptr != '\n' && *lineptr != '\0' &&
            (temp - super + 1) < MIME_MAX_SUPER)
-      *temp++ = tolower(*lineptr++ & 255);
+      *temp++ = (char)tolower(*lineptr++ & 255);
 
     *temp = '\0';
 
@@ -826,7 +805,7 @@ mime_load_convs(
 
     while (*lineptr != ' ' && *lineptr != '\t' && *lineptr != '\n' &&
            *lineptr != '\0' && (temp - type + 1) < MIME_MAX_TYPE)
-      *temp++ = tolower(*lineptr++ & 255);
+      *temp++ = (char)tolower(*lineptr++ & 255);
 
     *temp = '\0';
 
@@ -865,7 +844,7 @@ mime_load_types(mime_t     *mime,   /* I - MIME database */
                 const char *filename)  /* I - Types file to load */
 {
   cups_file_t  *fp;                    /* Types file */
-  int          linelen;                /* Length of line */
+  size_t       linelen;                /* Length of line */
   char         line[32768],            /* Input line from file */
                *lineptr,               /* Current position in line */
                super[MIME_MAX_SUPER],  /* Super-type name */
@@ -927,7 +906,7 @@ mime_load_types(mime_t     *mime,   /* I - MIME database */
 
     while (*lineptr != '/' && *lineptr != '\n' && *lineptr != '\0' &&
            (temp - super + 1) < MIME_MAX_SUPER)
-      *temp++ = tolower(*lineptr++ & 255);
+      *temp++ = (char)tolower(*lineptr++ & 255);
 
     *temp = '\0';
 
@@ -939,7 +918,7 @@ mime_load_types(mime_t     *mime,   /* I - MIME database */
 
     while (*lineptr != ' ' && *lineptr != '\t' && *lineptr != '\n' &&
            *lineptr != '\0' && (temp - type + 1) < MIME_MAX_TYPE)
-      *temp++ = tolower(*lineptr++ & 255);
+      *temp++ = (char)tolower(*lineptr++ & 255);
 
     *temp = '\0';
 
@@ -956,5 +935,5 @@ mime_load_types(mime_t     *mime,   /* I - MIME database */
 
 
 /*
- * End of "$Id: mime.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: mime.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index e193a3a7360a4be02123a9373d2a7df7b1ad96ef..ddd3283842efcfcce7b97d4ec0c561d8a7c138db 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: mime.h 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: mime.h 11272 2013-09-10 19:15:36Z msweet $"
  *
  *   MIME type/conversion database definitions for CUPS.
  *
- *   Copyright 2007-2011 by Apple Inc.
+ *   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
@@ -19,6 +19,7 @@
 #  include <cups/array.h>
 #  include <cups/ipp.h>
 #  include <cups/file.h>
+#  include <regex.h>
 
 
 /*
@@ -58,7 +59,8 @@ typedef enum
   MIME_MAGIC_INT,                      /* Integer/32-bit word matches */
   MIME_MAGIC_LOCALE,                   /* Current locale matches string */
   MIME_MAGIC_CONTAINS,                 /* File contains a string */
-  MIME_MAGIC_ISTRING                   /* Case-insensitive string matches */
+  MIME_MAGIC_ISTRING,                  /* Case-insensitive string matches */
+  MIME_MAGIC_REGEX                     /* Regular expression matches */
 } mime_op_t;
 
 typedef struct _mime_magic_s           /**** MIME Magic Data ****/
@@ -80,6 +82,7 @@ typedef struct _mime_magic_s          /**** MIME Magic Data ****/
     unsigned char charv;               /* Byte value */
     unsigned short shortv;             /* Short value */
     unsigned   intv;                   /* Integer value */
+    regex_t    rev;                    /* Regular expression value */
   }            value;
 } mime_magic_t;
 
@@ -158,5 +161,5 @@ extern void         mimeSetErrorCallback(mime_t *mime, mime_error_cb_t cb,
 #endif /* !_CUPS_MIME_H_ */
 
 /*
- * End of "$Id: mime.h 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: mime.h 11272 2013-09-10 19:15:36Z msweet $".
  */
index 4773cd64a3aff06753022837b3e599ebda2fa3ad..18f9b7c372e9edd79e43bfc653236576ffab0c04 100644 (file)
@@ -1,23 +1,16 @@
 /*
- * "$Id: network.c 11500 2014-01-06 22:21:15Z msweet $"
+ * "$Id: network.c 11497 2014-01-06 21:59:35Z msweet $"
  *
- *   Network interface functions for the CUPS scheduler.
+ * Network interface functions for the CUPS scheduler.
  *
- *   Copyright 2007-2012 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"
- *   "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:
- *
- *   cupsdNetIFFind()   - Find a network interface.
- *   cupsdNetIFFree()   - Free the current network interface list.
- *   cupsdNetIFUpdate() - Update the network interface list as needed...
- *   compare_netif()    - Compare two network interfaces.
+ * These coded instructions, statements, and computer programs 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/".
  */
 
 /*
@@ -305,5 +298,5 @@ compare_netif(cupsd_netif_t *a,             /* I - First network interface */
 
 
 /*
- * End of "$Id: network.c 11500 2014-01-06 22:21:15Z msweet $".
+ * End of "$Id: network.c 11497 2014-01-06 21:59:35Z msweet $".
  */
index 32067ef1da998f1a2842a5d5b0e71ada059da855..43eee68c16f605d98044176afe824f871132d1f3 100644 (file)
@@ -6,6 +6,10 @@
        <true/>
        <key>Label</key>
        <string>org.cups.cups-lpd</string>
+       <key>EnableTransactions</key>
+       <false/>
+       <key>EnablePressuredExit</key>
+       <false/>
        <key>ProgramArguments</key>
        <array>
                <string>/usr/libexec/cups/daemon/cups-lpd</string>
diff --git a/scheduler/org.cups.cupsd.path.in b/scheduler/org.cups.cupsd.path.in
new file mode 100644 (file)
index 0000000..1bccc6f
--- /dev/null
@@ -0,0 +1,8 @@
+[Unit]
+Description=CUPS Scheduler
+
+[Path]
+PathExists=@CUPS_CACHEDIR@/org.cups.cupsd
+
+[Install]
+WantedBy=multi-user.target
index ccc861d8f2899bfe291b79dc43ef36cfa4e60486..51d28e2c28ef1c7501148e96a4f290829c933c70 100644 (file)
@@ -6,6 +6,8 @@
        <string>org.cups.cupsd</string>
        <key>EnableTransactions</key>
        <true/>
+       <key>EnablePressuredExit</key>
+       <true/>
        <key>ExitTimeOut</key>
        <integer>60</integer>
        <key>KeepAlive</key>
@@ -21,8 +23,7 @@
                <string>/usr/sbin/cupsd</string>
                <string>-l</string>
        </array>
-       <!-- These environment variables are only used when CUPS is compiled
-            with --enable-debug-printfs -->
+       <!-- These environment variables are only used when CUPS is compiled with debug-printfs support -->
        <key>EnvironmentVariables</key>
        <dict>
                <key>CUPS_DEBUG_LOG</key>
                <key>CUPS_DEBUG_LEVEL</key>
                <string>3</string>
                <key>CUPS_DEBUG_FILTER</key>
-               <string>^(http|_http|ipp|_ipp|mime).*</string>
+               <string>^(cupsDo|cupsGet|cupsMake|cupsSet|http|_http|ipp|_ipp|mime).*</string>
        </dict>
-       <key>ServiceIPC</key>
-       <true/>
        <key>Sockets</key>
        <dict>
                <key>Listeners</key>
diff --git a/scheduler/org.cups.cupsd.service.in b/scheduler/org.cups.cupsd.service.in
new file mode 100644 (file)
index 0000000..4390016
--- /dev/null
@@ -0,0 +1,10 @@
+[Unit]
+Description=CUPS Scheduler
+
+[Service]
+ExecStart=@sbindir@/cupsd -l
+Type=simple
+
+[Install]
+Also=org.cups.cupsd.socket org.cups.cupsd.path
+WantedBy=printer.target
diff --git a/scheduler/org.cups.cupsd.socket.in b/scheduler/org.cups.cupsd.socket.in
new file mode 100644 (file)
index 0000000..cd98aa5
--- /dev/null
@@ -0,0 +1,12 @@
+[Unit]
+Description=CUPS Scheduler
+
+[Socket]
+ListenStream=@CUPS_DEFAULT_DOMAINSOCKET@
+ListenStream=[::1]:631
+ListenStream=127.0.0.1:631
+BindIPv6Only=ipv6-only
+ReusePort=true
+
+[Install]
+WantedBy=sockets.target
index 8a3357ddc56008494ce9a5af0c78f94fbf495a69..b9883d42de2a0e009c659c797de996ff17ff670e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: policy.c 11684 2014-03-05 20:01:48Z msweet $"
+ * "$Id: policy.c 11681 2014-03-05 19:07:24Z msweet $"
  *
  * Policy routines for the CUPS scheduler.
  *
@@ -277,7 +277,7 @@ cupsdGetPrivateAttrs(
   cupsdLogMessage(CUPSD_LOG_DEBUG2,
                   "cupsdGetPrivateAttrs(policy=%p(%s), con=%p(%d), "
                  "printer=%p(%s), owner=\"%s\")", policy, policy->name, con,
-                 con->http.fd, printer, printer ? printer->name : "", owner);
+                 con->number, printer, printer ? printer->name : "", owner);
 #endif /* DEBUG */
 
   if (!policy)
@@ -503,5 +503,5 @@ hash_op(cupsd_location_t *op)               /* I - Operation */
 
 
 /*
- * End of "$Id: policy.c 11684 2014-03-05 20:01:48Z msweet $".
+ * End of "$Id: policy.c 11681 2014-03-05 19:07:24Z msweet $".
  */
index b3d5081e041087c2cbe7a02c06b290b6d611ecf1..a56f6d4741ea471b63591f5d0d55320212e12e56 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * "$Id: printers.c 11623 2014-02-19 20:18:10Z msweet $"
+ * "$Id: printers.c 11798 2014-04-07 15:18:44Z msweet $"
  *
  * Printer routines for the CUPS scheduler.
  *
- * Copyright 2007-2013 by Apple Inc.
+ * 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
@@ -91,8 +91,8 @@ cupsdAddPrinter(const char *name)     /* I - Name of printer */
   httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
                   ServerName, RemotePort, "/printers/%s", name);
   cupsdSetString(&p->uri, uri);
-  cupsdSetString(&p->uuid, _httpAssembleUUID(ServerName, RemotePort, name, 0,
-                                             uuid, sizeof(uuid)));
+  cupsdSetString(&p->uuid, httpAssembleUUID(ServerName, RemotePort, name, 0,
+                                            uuid, sizeof(uuid)));
   cupsdSetDeviceURI(p, "file:///dev/null");
 
   p->state      = IPP_PRINTER_STOPPED;
@@ -430,6 +430,10 @@ cupsdCreateCommonData(void)
   ippAddInteger(CommonData, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
                 "ippget-event-life", 15);
 
+  /* job-cancel-after-supported */
+  ippAddRange(CommonData, IPP_TAG_PRINTER, "job-cancel-after-supported",
+              0, INT_MAX);
+
   /* job-creation-attributes-supported */
   ippAddStrings(CommonData, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY,
                 "job-creation-attributes-supported",
@@ -881,7 +885,7 @@ cupsdLoadAllPrinters(void)
         cupsdLogMessage(CUPSD_LOG_ERROR,
                        "Syntax error on line %d of printers.conf.", linenum);
     }
-    else if (!_cups_strcasecmp(line, "</Printer>"))
+    else if (!_cups_strcasecmp(line, "</Printer>") || !_cups_strcasecmp(line, "</DefaultPrinter>"))
     {
       if (p != NULL)
       {
@@ -1084,7 +1088,7 @@ cupsdLoadAllPrinters(void)
     else if (!_cups_strcasecmp(line, "Type"))
     {
       if (value)
-        p->type = atoi(value);
+        p->type = (cups_ptype_t)atoi(value);
       else
        cupsdLogMessage(CUPSD_LOG_ERROR,
                        "Syntax error on line %d of printers.conf.", linenum);
@@ -1486,8 +1490,7 @@ cupsdSaveAllPrinters(void)
         if (i)
          *ptr++ = ',';
 
-        strlcpy(ptr, marker->values[i].string.text,
-               value + sizeof(value) - ptr);
+        strlcpy(ptr, marker->values[i].string.text, (size_t)(value + sizeof(value) - ptr));
         ptr += strlen(ptr);
       }
 
@@ -1546,8 +1549,7 @@ cupsdSaveAllPrinters(void)
         if (i)
          *ptr++ = ',';
 
-        strlcpy(ptr, marker->values[i].string.text,
-               value + sizeof(value) - ptr);
+        strlcpy(ptr, marker->values[i].string.text, (size_t)(value + sizeof(value) - ptr));
         ptr += strlen(ptr);
       }
 
@@ -1567,8 +1569,7 @@ cupsdSaveAllPrinters(void)
         if (i)
          *ptr++ = ',';
 
-        strlcpy(ptr, marker->values[i].string.text,
-               value + sizeof(value) - ptr);
+        strlcpy(ptr, marker->values[i].string.text, (size_t)(value + sizeof(value) - ptr));
         ptr += strlen(ptr);
       }
 
@@ -1580,7 +1581,10 @@ cupsdSaveAllPrinters(void)
       cupsFilePrintf(fp, "Attribute marker-change-time %ld\n",
                      (long)printer->marker_time);
 
-    cupsFilePuts(fp, "</Printer>\n");
+    if (printer == DefaultPrinter)
+      cupsFilePuts(fp, "</DefaultPrinter>\n");
+    else
+      cupsFilePuts(fp, "</Printer>\n");
   }
 
   cupsdCloseCreatedConfFile(fp, filename);
@@ -1683,7 +1687,7 @@ cupsdSetAuthInfoRequired(
         strcmp(p->auth_info_required[0], "none"))
       p->type |= CUPS_PRINTER_AUTHENTICATED;
     else
-      p->type &= ~CUPS_PRINTER_AUTHENTICATED;
+      p->type &= (cups_ptype_t)~CUPS_PRINTER_AUTHENTICATED;
 
     return (1);
   }
@@ -2053,10 +2057,8 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)/* I - Printer to setup */
     if ((auth_type = auth->type) == CUPSD_AUTH_DEFAULT)
       auth_type = cupsdDefaultAuthType();
 
-    if (auth_type == CUPSD_AUTH_BASIC || auth_type == CUPSD_AUTH_BASICDIGEST)
+    if (auth_type == CUPSD_AUTH_BASIC)
       auth_supported = "basic";
-    else if (auth_type == CUPSD_AUTH_DIGEST)
-      auth_supported = "digest";
 #ifdef HAVE_GSSAPI
     else if (auth_type == CUPSD_AUTH_NEGOTIATE)
       auth_supported = "negotiate";
@@ -2065,10 +2067,10 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)/* I - Printer to setup */
     if (auth_type != CUPSD_AUTH_NONE)
       p->type |= CUPS_PRINTER_AUTHENTICATED;
     else
-      p->type &= ~CUPS_PRINTER_AUTHENTICATED;
+      p->type &= (cups_ptype_t)~CUPS_PRINTER_AUTHENTICATED;
   }
   else
-    p->type &= ~CUPS_PRINTER_AUTHENTICATED;
+    p->type &= (cups_ptype_t)~CUPS_PRINTER_AUTHENTICATED;
 
  /*
   * Create the required IPP attributes for a printer...
@@ -2147,7 +2149,7 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)/* I - Printer to setup */
   if (p->type & CUPS_PRINTER_CLASS)
   {
     p->raw = 1;
-    p->type &= ~CUPS_PRINTER_OPTIONS;
+    p->type &= (cups_ptype_t)~CUPS_PRINTER_OPTIONS;
 
    /*
     * Add class-specific attributes...
@@ -2173,7 +2175,7 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)/* I - Printer to setup */
        if (attr != NULL)
          attr->values[i].string.text = _cupsStrAlloc(p->printers[i]->name);
 
-       p->type &= ~CUPS_PRINTER_OPTIONS | p->printers[i]->type;
+       p->type &= (cups_ptype_t)~CUPS_PRINTER_OPTIONS | p->printers[i]->type;
       }
     }
   }
@@ -2462,14 +2464,17 @@ cupsdSetPrinterReasons(
          _cupsStrFree(p->reasons[i]);
 
          if (i < p->num_reasons)
-           memmove(p->reasons + i, p->reasons + i + 1,
-                   (p->num_reasons - i) * sizeof(char *));
+           memmove(p->reasons + i, p->reasons + i + 1, (size_t)(p->num_reasons - i) * sizeof(char *));
 
           if (!strcmp(reason, "paused") && p->state == IPP_PRINTER_STOPPED)
            cupsdSetPrinterState(p, IPP_PRINTER_IDLE, 1);
 
+          if (!strcmp(reason, "cups-waiting-for-job-completed") && p->job)
+            p->job->completed = 0;
+
           if (strcmp(reason, "connecting-to-device"))
            dirty_printer(p);
+
          break;
        }
     }
@@ -2500,6 +2505,9 @@ cupsdSetPrinterReasons(
        if (!strcmp(reason, "paused") && p->state != IPP_PRINTER_STOPPED)
          cupsdSetPrinterState(p, IPP_PRINTER_STOPPED, 1);
 
+       if (!strcmp(reason, "cups-waiting-for-job-completed") && p->job)
+         p->job->completed = 1;
+
        if (strcmp(reason, "connecting-to-device"))
          dirty_printer(p);
       }
@@ -3134,6 +3142,7 @@ add_printer_defaults(cupsd_printer_t *p)/* I - Printer */
     cupsArrayAdd(CommonDefaults, _cupsStrAlloc("job-account-id-default"));
     cupsArrayAdd(CommonDefaults,
                  _cupsStrAlloc("job-accounting-user-id-default"));
+    cupsArrayAdd(CommonDefaults, _cupsStrAlloc("job-cancel-after-default"));
     cupsArrayAdd(CommonDefaults, _cupsStrAlloc("job-hold-until-default"));
     cupsArrayAdd(CommonDefaults, _cupsStrAlloc("job-priority-default"));
     cupsArrayAdd(CommonDefaults, _cupsStrAlloc("job-sheets-default"));
@@ -3182,6 +3191,10 @@ add_printer_defaults(cupsd_printer_t *p)/* I - Printer */
     ippAddString(p->attrs, IPP_TAG_PRINTER, IPP_TAG_MIMETYPE,
                 "document-format-default", NULL, "application/octet-stream");
 
+  if (!cupsGetOption("job-cancel-after", p->num_options, p->options))
+    ippAddInteger(p->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
+                 "job-cancel-after-default", MaxJobTime);
+
   if (!cupsGetOption("job-hold-until", p->num_options, p->options))
     ippAddString(p->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD,
                  "job-hold-until-default", NULL, "no-hold");
@@ -3285,7 +3298,7 @@ add_printer_filter(
   {
     char       *ptr;                   /* Pointer into maxsize(nnnn) program */
 
-    maxsize = strtoll(program + 8, &ptr, 10);
+    maxsize = (size_t)strtoll(program + 8, &ptr, 10);
 
     if (*ptr != ')')
     {
@@ -3698,7 +3711,7 @@ load_ppd(cupsd_printer_t *p)              /* I - Printer */
 
   cupsdLogMessage(CUPSD_LOG_DEBUG, "load_ppd: Loading %s...", ppd_name);
 
-  p->type &= ~CUPS_PRINTER_OPTIONS;
+  p->type &= (cups_ptype_t)~CUPS_PRINTER_OPTIONS;
   p->type |= CUPS_PRINTER_BW;
 
   finishings[0]  = IPP_FINISHINGS_NONE;
@@ -3730,8 +3743,7 @@ load_ppd(cupsd_printer_t *p)              /* I - Printer */
       if (ppd_attr->value && !_cups_strcasecmp(ppd_attr->value, "true"))
        p->type |= CUPS_PRINTER_FAX;
 
-    ippAddBoolean(p->ppd_attrs, IPP_TAG_PRINTER, "color-supported",
-                 ppd->color_device);
+    ippAddBoolean(p->ppd_attrs, IPP_TAG_PRINTER, "color-supported", (char)ppd->color_device);
 
     if (p->pc && p->pc->charge_info_uri)
       ippAddString(p->ppd_attrs, IPP_TAG_PRINTER, IPP_TAG_URI,
@@ -3750,7 +3762,7 @@ load_ppd(cupsd_printer_t *p)              /* I - Printer */
       ippAddString(p->ppd_attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD,
                    "job-password-encryption-supported", NULL, "none");
       ippAddInteger(p->ppd_attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
-                    "job-password-supported", strlen(p->pc->password));
+                    "job-password-supported", (int)strlen(p->pc->password));
     }
 
     if (ppd->throughput)
@@ -4600,22 +4612,16 @@ load_ppd(cupsd_printer_t *p)            /* I - Printer */
       CGContextRef     context;        /* The CG context used for resizing */
 
       snprintf(outPath, sizeof(outPath), "%s/%s.png", CacheDir, p->name);
-      outUrl      = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault,
-                                                            (UInt8 *)outPath,
-                                                           strlen(outPath),
-                                                           FALSE);
-      icnsFileUrl = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault,
-                                                           (UInt8 *)ppd_attr->value,
-                                                           strlen(ppd_attr->value),
-                                                           FALSE);
+      outUrl      = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (UInt8 *)outPath, (CFIndex)strlen(outPath), FALSE);
+      icnsFileUrl = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (UInt8 *)ppd_attr->value, (CFIndex)strlen(ppd_attr->value), FALSE);
       if (outUrl && icnsFileUrl)
       {
         sourceRef = CGImageSourceCreateWithURL(icnsFileUrl, NULL);
         if (sourceRef)
         {
-          for (i = 0; i < CGImageSourceGetCount(sourceRef); i ++)
+          for (i = 0; i < (int)CGImageSourceGetCount(sourceRef); i ++)
           {
-            imageRef = CGImageSourceCreateImageAtIndex(sourceRef, i, NULL);
+            imageRef = CGImageSourceCreateImageAtIndex(sourceRef, (size_t)i, NULL);
            if (!imageRef)
              continue;
 
@@ -4910,7 +4916,7 @@ write_xml_string(cups_file_t *fp, /* I - File to write to */
     if (*s == '&')
     {
       if (s > start)
-        cupsFileWrite(fp, start, s - start);
+        cupsFileWrite(fp, start, (size_t)(s - start));
 
       cupsFilePuts(fp, "&amp;");
       start = s + 1;
@@ -4918,7 +4924,7 @@ write_xml_string(cups_file_t *fp, /* I - File to write to */
     else if (*s == '<')
     {
       if (s > start)
-        cupsFileWrite(fp, start, s - start);
+        cupsFileWrite(fp, start, (size_t)(s - start));
 
       cupsFilePuts(fp, "&lt;");
       start = s + 1;
@@ -4931,5 +4937,5 @@ write_xml_string(cups_file_t *fp, /* I - File to write to */
 
 
 /*
- * End of "$Id: printers.c 11623 2014-02-19 20:18:10Z msweet $".
+ * End of "$Id: printers.c 11798 2014-04-07 15:18:44Z msweet $".
  */
index 2b5c8ad543bcf68e4a040c6b0d59dbc065e041e8..c4ccf03f2a285169a0b0d009a8d737362b72da2a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: printers.h 11380 2013-11-05 01:14:53Z msweet $"
+ * "$Id: printers.h 11377 2013-11-05 01:05:00Z msweet $"
  *
  * Printer definitions for the CUPS scheduler.
  *
@@ -190,5 +190,5 @@ extern void         cupsdWritePrintcap(void);
 
 
 /*
- * End of "$Id: printers.h 11380 2013-11-05 01:14:53Z msweet $".
+ * End of "$Id: printers.h 11377 2013-11-05 01:05:00Z msweet $".
  */
index fdadedfd1d0ded36a4c8c90e1c3bb10b0fd66ae1..1b1aeae8ffdb1f7a66590bd9ca8642d77c422987 100644 (file)
@@ -1,26 +1,16 @@
 /*
- * "$Id: process.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: process.c 12034 2014-07-16 19:37:34Z msweet $"
  *
- *   Process management routines for the CUPS scheduler.
+ * Process management routines for the CUPS scheduler.
  *
- *   Copyright 2007-2012 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/".
- *
- * Contents:
- *
- *   cupsdCreateProfile()  - Create an execution profile for a subprocess.
- *   cupsdDestroyProfile() - Delete an execution profile.
- *   cupsdEndProcess()     - End a process.
- *   cupsdFinishProcess()  - Finish a process and get its name.
- *   cupsdStartProcess()   - Start a process.
- *   compare_procs()       - Compare two processes.
- *   cupsd_requote()       - Make a regular-expression version of a 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/".
  */
 
 /*
 #ifdef __APPLE__
 #  include <libgen.h>
 #endif /* __APPLE__ */
+#ifdef HAVE_POSIX_SPAWN
+#  include <spawn.h>
+extern char **environ;
+#endif /* HAVE_POSIX_SPAWN */
 
 
 /*
@@ -68,34 +62,37 @@ static char *cupsd_requote(char *dst, const char *src, size_t dstsize);
  */
 
 void *                                 /* O - Profile or NULL on error */
-cupsdCreateProfile(int job_id)         /* I - Job ID or 0 for none */
+cupsdCreateProfile(int job_id,         /* I - Job ID or 0 for none */
+                   int allow_networking)/* I - Allow networking off machine? */
 {
 #ifdef HAVE_SANDBOX_H
-  cups_file_t  *fp;                    /* File pointer */
-  char         profile[1024],          /* File containing the profile */
-               cache[1024],            /* Quoted CacheDir */
-               request[1024],          /* Quoted RequestRoot */
-               root[1024],             /* Quoted ServerRoot */
-               temp[1024];             /* Quoted TempDir */
-  const char   *nodebug;               /* " (with no-log)" for no debug */
-
-
-  if (!UseProfiles)
+  cups_file_t          *fp;            /* File pointer */
+  char                 profile[1024],  /* File containing the profile */
+                       bin[1024],      /* Quoted ServerBin */
+                       cache[1024],    /* Quoted CacheDir */
+                       domain[1024],   /* Domain socket, if any */
+                       request[1024],  /* Quoted RequestRoot */
+                       root[1024],     /* Quoted ServerRoot */
+                       state[1024],    /* Quoted StateDir */
+                       temp[1024];     /* Quoted TempDir */
+  const char           *nodebug;       /* " (with no-log)" for no debug */
+  cupsd_listener_t     *lis;           /* Current listening socket */
+
+
+  if (!UseSandboxing || Sandboxing == CUPSD_SANDBOXING_OFF)
   {
    /*
     * Only use sandbox profiles as root...
     */
 
-    cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCreateProfile(job_id=%d) = NULL",
-                    job_id);
+    cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCreateProfile(job_id=%d, allow_networking=%d) = NULL", job_id, allow_networking);
 
     return (NULL);
   }
 
   if ((fp = cupsTempFile2(profile, sizeof(profile))) == NULL)
   {
-    cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCreateProfile(job_id=%d) = NULL",
-                    job_id);
+    cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCreateProfile(job_id=%d, allow_networking=%d) = NULL", job_id, allow_networking);
     cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to create security profile: %s",
                     strerror(errno));
     return (NULL);
@@ -104,22 +101,29 @@ cupsdCreateProfile(int job_id)            /* I - Job ID or 0 for none */
   fchown(cupsFileNumber(fp), RunUser, Group);
   fchmod(cupsFileNumber(fp), 0640);
 
+  cupsd_requote(bin, ServerBin, sizeof(bin));
   cupsd_requote(cache, CacheDir, sizeof(cache));
   cupsd_requote(request, RequestRoot, sizeof(request));
   cupsd_requote(root, ServerRoot, sizeof(root));
+  cupsd_requote(state, StateDir, sizeof(state));
   cupsd_requote(temp, TempDir, sizeof(temp));
 
   nodebug = LogLevel < CUPSD_LOG_DEBUG ? " (with no-log)" : "";
 
   cupsFilePuts(fp, "(version 1)\n");
-  cupsFilePuts(fp, "(allow default)\n");
-  cupsFilePrintf(fp,
-                 "(deny file-write* file-read-data file-read-metadata\n"
-                 "  (regex"
-                " #\"^%s$\""           /* RequestRoot */
-                " #\"^%s/\""           /* RequestRoot/... */
-                ")%s)\n",
-                request, request, nodebug);
+  if (Sandboxing == CUPSD_SANDBOXING_STRICT)
+    cupsFilePuts(fp, "(deny default)\n");
+  else
+    cupsFilePuts(fp, "(allow default)\n");
+  if (LogLevel >= CUPSD_LOG_DEBUG)
+    cupsFilePuts(fp, "(debug deny)\n");
+  cupsFilePuts(fp, "(import \"system.sb\")\n");
+  cupsFilePuts(fp, "(system-network)\n");
+  cupsFilePuts(fp, "(allow mach-per-user-lookup)\n");
+  cupsFilePuts(fp, "(allow ipc-posix-sem)\n");
+  cupsFilePuts(fp, "(allow ipc-posix-shm)\n");
+  cupsFilePuts(fp, "(allow ipc-sysv-shm)\n");
+  cupsFilePuts(fp, "(allow mach-lookup)\n");
   if (!RunUser)
     cupsFilePrintf(fp,
                   "(deny file-write* file-read-data file-read-metadata\n"
@@ -142,13 +146,43 @@ cupsdCreateProfile(int job_id)            /* I - Job ID or 0 for none */
                 " #\"^/System/\""
                 ")%s)\n",
                 root, root, nodebug);
-  /* Specifically allow applications to stat RequestRoot */
+  /* Specifically allow applications to stat RequestRoot and some other system folders */
   cupsFilePrintf(fp,
                  "(allow file-read-metadata\n"
                  "  (regex"
+                " #\"^/$\""            /* / */
+                " #\"^/usr$\""         /* /usr */
+                " #\"^/Library$\""     /* /Library */
+                " #\"^/Library/Printers$\""    /* /Library/Printers */
                 " #\"^%s$\""           /* RequestRoot */
                 "))\n",
                 request);
+  /* Read and write TempDir, CacheDir, and other common folders */
+  cupsFilePuts(fp,
+              "(allow file-write* file-read-data file-read-metadata\n"
+              "  (regex"
+              " #\"^/private/var/db/\""
+              " #\"^/private/var/folders/\""
+              " #\"^/private/var/lib/\""
+              " #\"^/private/var/log/\""
+              " #\"^/private/var/mysql/\""
+              " #\"^/private/var/run/\""
+              " #\"^/private/var/spool/\""
+              " #\"^/Library/Application Support/\""
+              " #\"^/Library/Caches/\""
+              " #\"^/Library/Logs/\""
+              " #\"^/Library/Preferences/\""
+              " #\"^/Library/WebServer/\""
+              " #\"^/Users/Shared/\""
+              "))\n");
+  cupsFilePrintf(fp,
+                "(deny file-write*\n"
+                "       (regex #\"^%s$\")%s)\n",
+                request, nodebug);
+  cupsFilePrintf(fp,
+                "(deny file-write* file-read-data file-read-metadata\n"
+                "       (regex #\"^%s/\")%s)\n",
+                request, nodebug);
   cupsFilePrintf(fp,
                  "(allow file-write* file-read-data file-read-metadata\n"
                  "  (regex"
@@ -156,56 +190,171 @@ cupsdCreateProfile(int job_id)           /* I - Job ID or 0 for none */
                 " #\"^%s/\""           /* TempDir/... */
                 " #\"^%s$\""           /* CacheDir */
                 " #\"^%s/\""           /* CacheDir/... */
+                " #\"^%s$\""           /* StateDir */
+                " #\"^%s/\""           /* StateDir/... */
+                "))\n",
+                temp, temp, cache, cache, state, state);
+  /* Read common folders */
+  cupsFilePrintf(fp,
+                 "(allow file-read-data file-read-metadata\n"
+                 "  (regex"
+                 " #\"^/AppleInternal$\""
+                 " #\"^/AppleInternal/\""
+                 " #\"^/bin$\""                /* /bin */
+                 " #\"^/bin/\""                /* /bin/... */
+                 " #\"^/private$\""
+                 " #\"^/private/etc$\""
+                 " #\"^/private/etc/\""
+                 " #\"^/private/tmp$\""
+                 " #\"^/private/tmp/\""
+                 " #\"^/private/var$\""
+                 " #\"^/private/var/db$\""
+                 " #\"^/private/var/folders$\""
+                 " #\"^/private/var/lib$\""
+                 " #\"^/private/var/log$\""
+                 " #\"^/private/var/mysql$\""
+                 " #\"^/private/var/run$\""
+                 " #\"^/private/var/spool$\""
+                 " #\"^/usr/bin$\""    /* /usr/bin */
+                 " #\"^/usr/bin/\""    /* /usr/bin/... */
+                 " #\"^/usr/libexec/cups$\""   /* /usr/libexec/cups */
+                 " #\"^/usr/libexec/cups/\""   /* /usr/libexec/cups/... */
+                 " #\"^/usr/libexec/fax$\""    /* /usr/libexec/fax */
+                 " #\"^/usr/libexec/fax/\""    /* /usr/libexec/fax/... */
+                 " #\"^/usr/sbin$\""   /* /usr/sbin */
+                 " #\"^/usr/sbin/\""   /* /usr/sbin/... */
+                " #\"^/Library/Application Support$\""
+                " #\"^/Library/Application Support/\""
+                " #\"^/Library/Caches$\""
+                " #\"^/Library/ColorSync$\""
+                " #\"^/Library/ColorSync/Profiles$\""
+                " #\"^/Library/ColorSync/Profiles/\""
+                " #\"^/Library/Fonts$\""
+                " #\"^/Library/Fonts/\""
+                " #\"^/Library/Frameworks$\""
+                " #\"^/Library/Frameworks/\""
+                " #\"^/Library/Keychains$\""
+                " #\"^/Library/Keychains/\""
+                " #\"^/Library/Logs$\""
+                " #\"^/Library/Printers$\""
+                " #\"^/Library/Printers/\""
+                " #\"^/Library/Security$\""
+                " #\"^/Library/Security/\""
+                " #\"^/Library/WebServer$\""
+                " #\"^/System/Library/ColorSync$\""
+                " #\"^/System/Library/ColorSync/Profiles$\""
+                " #\"^/System/Library/ColorSync/Profiles/\""
                 " #\"^%s/Library$\""   /* RequestRoot/Library */
                 " #\"^%s/Library/\""   /* RequestRoot/Library/... */
-                " #\"^/Library/Application Support/\""
-                " #\"^/Library/Caches/\""
-                " #\"^/Library/Preferences/\""
-                " #\"^/Library/Printers/.*/\""
-                " #\"^/Users/Shared/\""
+                " #\"^%s$\""           /* ServerBin */
+                " #\"^%s/\""           /* ServerBin/... */
+                " #\"^%s$\""           /* ServerRoot */
+                " #\"^%s/\""           /* ServerRoot/... */
                 "))\n",
-                temp, temp, cache, cache, request, request);
-  cupsFilePrintf(fp,
-                "(deny file-write*\n"
+                request, request, bin, bin, root, root);
+  if (Sandboxing == CUPSD_SANDBOXING_RELAXED)
+  {
+    /* Limited write access to /Library/Printers/... */
+    cupsFilePuts(fp,
+                "(allow file-write*\n"
                 "  (regex"
-                " #\"^/Library/Printers/PPDs$\""
-                " #\"^/Library/Printers/PPDs/\""
-                " #\"^/Library/Printers/PPD Plugins$\""
-                " #\"^/Library/Printers/PPD Plugins/\""
-                ")%s)\n", nodebug);
-  if (job_id)
+                " #\"^/Library/Printers/.*/\""
+                "))\n");
+    cupsFilePrintf(fp,
+                  "(deny file-write*\n"
+                  "  (regex"
+                  " #\"^/Library/Printers/PPDs$\""
+                  " #\"^/Library/Printers/PPDs/\""
+                  " #\"^/Library/Printers/PPD Plugins$\""
+                  " #\"^/Library/Printers/PPD Plugins/\""
+                  ")%s)\n", nodebug);
+  }
+  /* Allow execution of child processes as long as the programs are not in a user directory */
+  cupsFilePuts(fp, "(allow process*)\n");
+  cupsFilePuts(fp, "(deny process-exec (regex #\"^/Users/\"))\n");
+  if (RunUser && getenv("CUPS_TESTROOT"))
   {
-   /*
-    * Allow job filters to read the spool file(s)...
-    */
+    /* Allow source directory access in "make test" environment */
+    char       testroot[1024];         /* Root directory of test files */
+
+    cupsd_requote(testroot, getenv("CUPS_TESTROOT"), sizeof(testroot));
 
+    cupsFilePrintf(fp,
+                  "(allow file-write* file-read-data file-read-metadata\n"
+                  "  (regex"
+                  " #\"^%s$\""         /* CUPS_TESTROOT */
+                  " #\"^%s/\""         /* CUPS_TESTROOT/... */
+                  "))\n",
+                  testroot, testroot);
+    cupsFilePrintf(fp,
+                  "(allow process-exec\n"
+                  "  (regex"
+                  " #\"^%s/\""         /* CUPS_TESTROOT/... */
+                  "))\n",
+                  testroot);
+  }
+  if (job_id)
+  {
+    /* Allow job filters to read the current job files... */
     cupsFilePrintf(fp,
                    "(allow file-read-data file-read-metadata\n"
-                   "  (regex #\"^%s/([ac]%05d|d%05d-[0-9][0-9][0-9])$\"))\n",
+                   "       (regex #\"^%s/([ac]%05d|d%05d-[0-9][0-9][0-9])$\"))\n",
                   request, job_id, job_id);
   }
   else
   {
-   /*
-    * Allow email notifications from notifiers...
-    */
-
+    /* Allow email notifications from notifiers... */
     cupsFilePuts(fp,
                 "(allow process-exec\n"
                 "  (literal \"/usr/sbin/sendmail\")\n"
-                "  (with no-sandbox)\n"
-                ")\n");
+                "  (with no-sandbox))\n");
+  }
+  /* Allow access to Bluetooth, USB, and notify_post. */
+  cupsFilePuts(fp, "(allow iokit*)\n");
+  cupsFilePuts(fp, "(allow distributed-notification-post)\n");
+  /* Allow outbound networking to local services */
+  cupsFilePuts(fp, "(allow network-outbound"
+                  "\n       (regex #\"^/private/var/run/\" #\"^/private/tmp/\")");
+  for (lis = (cupsd_listener_t *)cupsArrayFirst(Listeners);
+       lis;
+       lis = (cupsd_listener_t *)cupsArrayNext(Listeners))
+  {
+    if (httpAddrFamily(&(lis->address)) == AF_LOCAL)
+    {
+      httpAddrString(&(lis->address), domain, sizeof(domain));
+      cupsFilePrintf(fp, "\n       (literal \"%s\")", domain);
+    }
+  }
+  if (allow_networking)
+  {
+    /* Allow TCP and UDP networking off the machine... */
+    cupsFilePuts(fp, "\n       (remote tcp))\n");
+    cupsFilePuts(fp, "(allow network-bind)\n"); /* for LPD resvport */
+    cupsFilePuts(fp, "(allow network*\n"
+                    "       (local udp \"*:*\")\n"
+                    "       (remote udp \"*:*\"))\n");
+
+    /* Also allow access to device files... */
+    cupsFilePuts(fp, "(allow file-write* file-read-data file-read-metadata file-ioctl\n"
+                     "       (regex #\"^/dev/\"))\n");
+  }
+  else
+  {
+    /* Only allow SNMP (UDP) and LPD (TCP) off the machine... */
+    cupsFilePuts(fp, ")\n");
+    cupsFilePuts(fp, "(allow network-outbound\n"
+                    "       (remote udp \"*:161\")"
+                    "       (remote tcp \"*:515\"))\n");
+    cupsFilePuts(fp, "(allow network-inbound\n"
+                    "       (local udp \"localhost:*\"))\n");
   }
-
   cupsFileClose(fp);
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCreateProfile(job_id=%d) = \"%s\"",
-                  job_id, profile);
+  cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCreateProfile(job_id=%d,allow_networking=%d) = \"%s\"", job_id, allow_networking, profile);
   return ((void *)strdup(profile));
 
 #else
-  cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCreateProfile(job_id=%d) = NULL",
-                  job_id);
+  cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCreateProfile(job_id=%d, allow_networking=%d) = NULL", job_id, allow_networking);
 
   return (NULL);
 #endif /* HAVE_SANDBOX_H */
@@ -268,10 +417,10 @@ cupsdEndProcess(int pid,          /* I - Process ID */
  */
 
 const char *                           /* O - Process name */
-cupsdFinishProcess(int  pid,           /* I - Process ID */
-                   char *name,         /* I - Name buffer */
-                  int  namelen,        /* I - Size of name buffer */
-                  int  *job_id)        /* O - Job ID pointer or NULL */
+cupsdFinishProcess(int    pid,         /* I - Process ID */
+                   char   *name,       /* I - Name buffer */
+                  size_t namelen,      /* I - Size of name buffer */
+                  int    *job_id)      /* O - Job ID pointer or NULL */
 {
   cupsd_proc_t key,                    /* Search key */
                *proc;                  /* Matching process */
@@ -296,10 +445,7 @@ cupsdFinishProcess(int  pid,               /* I - Process ID */
     strlcpy(name, "unknown", namelen);
   }
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                 "cupsdFinishProcess(pid=%d, name=%p, namelen=%d, "
-                 "job_id=%p(%d)) = \"%s\"", pid, name, namelen, job_id,
-                 job_id ? *job_id : 0, name);
+  cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdFinishProcess(pid=%d, name=%p, namelen=" CUPS_LLFMT ", job_id=%p(%d)) = \"%s\"", pid, name, CUPS_LLCAST namelen, job_id, job_id ? *job_id : 0, name);
 
   return (name);
 }
@@ -326,13 +472,19 @@ cupsdStartProcess(
 {
   int          i;                      /* Looping var */
   const char   *exec_path = command;   /* Command to be exec'd */
-  char         *real_argv[103],        /* Real command-line arguments */
+  char         *real_argv[110],        /* Real command-line arguments */
                cups_exec[1024];        /* Path to "cups-exec" program */
-  int          user;                   /* Command UID */
+  uid_t                user;                   /* Command UID */
   cupsd_proc_t *proc;                  /* New process record */
-#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
+#ifdef HAVE_POSIX_SPAWN
+  posix_spawn_file_actions_t actions;  /* Spawn file actions */
+  posix_spawnattr_t attrs;             /* Spawn attributes */
+  char         user_str[16],           /* User string */
+               group_str[16],          /* Group string */
+               nice_str[16];           /* FilterNice string */
+#elif defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
   struct sigaction action;             /* POSIX signal handler */
-#endif /* HAVE_SIGACTION && !HAVE_SIGSET */
+#endif /* HAVE_POSIX_SPAWN */
 #if defined(__APPLE__)
   char         processPath[1024],      /* CFProcessPath environment variable */
                linkpath[1024];         /* Link path for symlinks... */
@@ -396,25 +548,100 @@ cupsdStartProcess(
   * Use helper program when we have a sandbox profile...
   */
 
+#ifndef HAVE_POSIX_SPAWN
   if (profile)
+#endif /* !HAVE_POSIX_SPAWN */
   {
     snprintf(cups_exec, sizeof(cups_exec), "%s/daemon/cups-exec", ServerBin);
+    snprintf(user_str, sizeof(user_str), "%d", user);
+    snprintf(group_str, sizeof(group_str), "%d", Group);
+    snprintf(nice_str, sizeof(nice_str), "%d", FilterNice);
 
     real_argv[0] = cups_exec;
-    real_argv[1] = profile;
-    real_argv[2] = (char *)command;
+    real_argv[1] = (char *)"-g";
+    real_argv[2] = group_str;
+    real_argv[3] = (char *)"-n";
+    real_argv[4] = nice_str;
+    real_argv[5] = (char *)"-u";
+    real_argv[6] = user_str;
+    real_argv[7] = profile ? profile : "none";
+    real_argv[8] = (char *)command;
 
     for (i = 0;
-         i < (int)(sizeof(real_argv) / sizeof(real_argv[0]) - 4) && argv[i];
+         i < (int)(sizeof(real_argv) / sizeof(real_argv[0]) - 10) && argv[i];
         i ++)
-      real_argv[i + 3] = argv[i];
+      real_argv[i + 9] = argv[i];
 
-    real_argv[i + 3] = NULL;
+    real_argv[i + 9] = NULL;
 
     argv      = real_argv;
     exec_path = cups_exec;
   }
 
+  if (LogLevel == CUPSD_LOG_DEBUG2)
+  {
+    cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdStartProcess: Preparing to start \"%s\", arguments:", command);
+
+    for (i = 0; argv[i]; i ++)
+      cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdStartProcess: argv[%d] = \"%s\"", i, argv[i]);
+  }
+
+#ifdef HAVE_POSIX_SPAWN
+ /*
+  * Setup attributes and file actions for the spawn...
+  */
+
+  cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdStartProcess: Setting spawn attributes.");
+  posix_spawnattr_init(&attrs);
+  posix_spawnattr_setflags(&attrs, POSIX_SPAWN_SETPGROUP | POSIX_SPAWN_SETSIGDEF);
+
+  cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdStartProcess: Setting file actions.");
+  posix_spawn_file_actions_init(&actions);
+  if (infd != 0)
+  {
+    if (infd < 0)
+      posix_spawn_file_actions_addopen(&actions, 0, "/dev/null", O_WRONLY, 0);
+    else
+      posix_spawn_file_actions_adddup2(&actions, infd, 0);
+  }
+
+  if (outfd != 1)
+  {
+    if (outfd < 0)
+      posix_spawn_file_actions_addopen(&actions, 1, "/dev/null", O_WRONLY, 0);
+    else
+      posix_spawn_file_actions_adddup2(&actions, outfd, 1);
+  }
+
+  if (errfd != 2)
+  {
+    if (errfd < 0)
+      posix_spawn_file_actions_addopen(&actions, 2, "/dev/null", O_WRONLY, 0);
+    else
+      posix_spawn_file_actions_adddup2(&actions, errfd, 2);
+  }
+
+  if (backfd != 3 && backfd >= 0)
+    posix_spawn_file_actions_adddup2(&actions, backfd, 3);
+
+  if (sidefd != 4 && sidefd >= 0)
+    posix_spawn_file_actions_adddup2(&actions, sidefd, 4);
+
+  cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdStartProcess: Calling posix_spawn.");
+
+  if (posix_spawn(pid, exec_path, &actions, &attrs, argv, envp ? envp : environ))
+  {
+    cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to fork %s - %s.", command, strerror(errno));
+
+    *pid = 0;
+  }
+  else
+    cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdStartProcess: pid=%d", (int)*pid);
+
+  posix_spawn_file_actions_destroy(&actions);
+  posix_spawnattr_destroy(&attrs);
+
+#else
  /*
   * Block signals before forking...
   */
@@ -444,13 +671,13 @@ cupsdStartProcess(
     * processes it creates.
     */
 
-#ifdef HAVE_SETPGID
+#  ifdef HAVE_SETPGID
     if (!RunUser && setpgid(0, 0))
       exit(errno + 100);
-#else
+#  else
     if (!RunUser && setpgrp())
       exit(errno + 100);
-#endif /* HAVE_SETPGID */
+#  endif /* HAVE_SETPGID */
 
    /*
     * Update the remaining file descriptors as needed...
@@ -529,11 +756,11 @@ cupsdStartProcess(
     * Unblock signals before doing the exec...
     */
 
-#ifdef HAVE_SIGSET
+#  ifdef HAVE_SIGSET
     sigset(SIGTERM, SIG_DFL);
     sigset(SIGCHLD, SIG_DFL);
     sigset(SIGPIPE, SIG_DFL);
-#elif defined(HAVE_SIGACTION)
+#  elif defined(HAVE_SIGACTION)
     memset(&action, 0, sizeof(action));
 
     sigemptyset(&action.sa_mask);
@@ -542,11 +769,11 @@ cupsdStartProcess(
     sigaction(SIGTERM, &action, NULL);
     sigaction(SIGCHLD, &action, NULL);
     sigaction(SIGPIPE, &action, NULL);
-#else
+#  else
     signal(SIGTERM, SIG_DFL);
     signal(SIGCHLD, SIG_DFL);
     signal(SIGPIPE, SIG_DFL);
-#endif /* HAVE_SIGSET */
+#  endif /* HAVE_SIGSET */
 
     cupsdReleaseSignals();
 
@@ -573,7 +800,11 @@ cupsdStartProcess(
 
     *pid = 0;
   }
-  else
+
+  cupsdReleaseSignals();
+#endif /* HAVE_POSIX_SPAWN */
+
+  if (*pid)
   {
     if (!process_array)
       process_array = cupsArrayNew((cups_array_func_t)compare_procs, NULL);
@@ -591,8 +822,6 @@ cupsdStartProcess(
     }
   }
 
-  cupsdReleaseSignals();
-
   cupsdLogMessage(CUPSD_LOG_DEBUG2,
                  "cupsdStartProcess(command=\"%s\", argv=%p, envp=%p, "
                  "infd=%d, outfd=%d, errfd=%d, backfd=%d, sidefd=%d, root=%d, "
@@ -644,7 +873,7 @@ cupsd_requote(char       *dst,              /* I - Destination buffer */
     if (strchr(".?*()[]^$\\", ch))
       *dstptr++ = '\\';
 
-    *dstptr++ = ch;
+    *dstptr++ = (char)ch;
   }
 
   *dstptr = '\0';
@@ -655,5 +884,5 @@ cupsd_requote(char       *dst,              /* I - Destination buffer */
 
 
 /*
- * End of "$Id: process.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: process.c 12034 2014-07-16 19:37:34Z msweet $".
  */
index b31fb97c7569bc92411fc0b48d27f21f838eacf1..357cc40af9a70887550647205fa3e6bddfba5347 100644 (file)
@@ -1,28 +1,16 @@
 /*
- * "$Id: select.c 11142 2013-07-17 01:07:00Z msweet $"
+ * "$Id: select.c 11594 2014-02-14 20:09:01Z msweet $"
  *
- *   Select abstraction functions for the CUPS scheduler.
+ * Select abstraction functions for the CUPS scheduler.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 2006-2007 by Easy Software Products.
+ * Copyright 2007-2014 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/".
- *
- * Contents:
- *
- *   cupsdAddSelect()    - Add a file descriptor to the list.
- *   cupsdDoSelect()     - Do a select-like operation.
- *   cupsdIsSelecting()  - Determine whether we are monitoring a file
- *                         descriptor.
- *   cupsdRemoveSelect() - Remove a file descriptor from the list.
- *   cupsdStartSelect()  - Initialize the file polling engine.
- *   cupsdStopSelect()   - Shutdown the file polling engine.
- *   compare_fds()       - Compare file descriptors.
- *   find_fd()           - Find an existing file descriptor record.
+ * These coded instructions, statements, and computer programs 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/".
  */
 
 /*
@@ -39,8 +27,6 @@
 #  include <sys/time.h>
 #elif defined(HAVE_POLL)
 #  include <poll.h>
-#elif defined(__hpux)
-#  include <sys/time.h>
 #else
 #  include <sys/select.h>
 #endif /* HAVE_EPOLL */
@@ -532,15 +518,13 @@ cupsdDoSelect(long timeout)               /* I - Timeout in seconds */
 
 
       if (cupsd_pollfds)
-       pfd = realloc(cupsd_pollfds, allocfds * sizeof(struct pollfd));
+       pfd = realloc(cupsd_pollfds, (size_t)allocfds * sizeof(struct pollfd));
       else
-       pfd = malloc(allocfds * sizeof(struct pollfd));
+       pfd = malloc((size_t)allocfds * sizeof(struct pollfd));
 
       if (!pfd)
       {
-       cupsdLogMessage(CUPSD_LOG_EMERG,
-                       "Unable to allocate %d bytes for polling!",
-                       (int)(allocfds * sizeof(struct pollfd)));
+       cupsdLogMessage(CUPSD_LOG_EMERG, "Unable to allocate %d bytes for polling.", (int)((size_t)allocfds * sizeof(struct pollfd)));
 
        return (-1);
       }
@@ -569,9 +553,9 @@ cupsdDoSelect(long timeout)         /* I - Timeout in seconds */
   }
 
   if (timeout >= 0 && timeout < 86400)
-    nfds = poll(cupsd_pollfds, count, timeout * 1000);
+    nfds = poll(cupsd_pollfds, (nfds_t)count, timeout * 1000);
   else
-    nfds = poll(cupsd_pollfds, count, -1);
+    nfds = poll(cupsd_pollfds, (nfds_t)count, -1);
 
   if (nfds > 0)
   {
@@ -822,13 +806,13 @@ cupsdStartSelect(void)
 
 #ifdef HAVE_EPOLL
   cupsd_epoll_fd       = epoll_create(MaxFDs);
-  cupsd_epoll_events   = calloc(MaxFDs, sizeof(struct epoll_event));
+  cupsd_epoll_events   = calloc((size_t)MaxFDs, sizeof(struct epoll_event));
   cupsd_update_pollfds = 0;
 
 #elif defined(HAVE_KQUEUE)
   cupsd_kqueue_fd      = kqueue();
   cupsd_kqueue_changes = 0;
-  cupsd_kqueue_events  = calloc(MaxFDs, sizeof(struct kevent));
+  cupsd_kqueue_events  = calloc((size_t)MaxFDs, sizeof(struct kevent));
 
 #elif defined(HAVE_POLL)
   cupsd_update_pollfds = 0;
@@ -946,5 +930,5 @@ find_fd(int fd)                             /* I - File descriptor */
 
 
 /*
- * End of "$Id: select.c 11142 2013-07-17 01:07:00Z msweet $".
+ * End of "$Id: select.c 11594 2014-02-14 20:09:01Z msweet $".
  */
index dfe03d2a06ff14a26e8b534177c870ea3444af72..8b40c215597df9a839eaf4f8ab88db799ba4672c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: server.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: server.c 11576 2014-02-11 15:06:01Z msweet $"
  *
  *   Server start/stop routines for the CUPS scheduler.
  *
@@ -54,7 +54,7 @@ cupsdStartServer(void)
   * Create the default security profile...
   */
 
-  DefaultProfile = cupsdCreateProfile(0);
+  DefaultProfile = cupsdCreateProfile(0, 1);
 
  /*
   * Startup all the networking stuff...
@@ -180,5 +180,5 @@ cupsdStopServer(void)
 
 
 /*
- * End of "$Id: server.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: server.c 11576 2014-02-11 15:06:01Z msweet $".
  */
index a3f32f09d3b08af2067afe96f1e51907b9ff4593..b608b15ae4e93bfcec389e492923f82fbab95c2c 100644 (file)
@@ -1,22 +1,16 @@
 /*
- * "$Id: statbuf.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: statbuf.c 11594 2014-02-14 20:09:01Z msweet $"
  *
- *   Status buffer routines for the CUPS scheduler.
+ * Status buffer routines for the CUPS scheduler.
  *
- *   Copyright 2007-2012 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/".
- *
- * Contents:
- *
- *   cupsdStatBufDelete() - Destroy a status buffer.
- *   cupsdStatBufNew()    - Create a new status buffer.
- *   cupsdStatBufUpdate() - Update the status buffer.
+ * These coded instructions, statements, and computer programs 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/".
  */
 
 /*
@@ -138,8 +132,7 @@ cupsdStatBufUpdate(
     * No, read more data...
     */
 
-    if ((bytes = read(sb->fd, sb->buffer + sb->bufused,
-                      CUPSD_SB_BUFFER_SIZE - sb->bufused - 1)) > 0)
+    if ((bytes = read(sb->fd, sb->buffer + sb->bufused, (size_t)(CUPSD_SB_BUFFER_SIZE - sb->bufused - 1))) > 0)
     {
       sb->bufused += bytes;
       sb->buffer[sb->bufused] = '\0';
@@ -312,7 +305,7 @@ cupsdStatBufUpdate(
   * Copy the message to the line buffer...
   */
 
-  strlcpy(line, message, linelen);
+  strlcpy(line, message, (size_t)linelen);
 
  /*
   * Copy over the buffer data we've used up...
@@ -331,5 +324,5 @@ cupsdStatBufUpdate(
 
 
 /*
- * End of "$Id: statbuf.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: statbuf.c 11594 2014-02-14 20:09:01Z msweet $".
  */
index 79d7558042b7a94b1ad73da1a95de63d06998608..95a2d2518cd207d711fdd7500bfb19998f985816 100644 (file)
@@ -1,37 +1,16 @@
 /*
- * "$Id: subscriptions.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: subscriptions.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Subscription routines for the CUPS scheduler.
+ * Subscription routines for the CUPS scheduler.
  *
- *   Copyright 2007-2011 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/".
- *
- * Contents:
- *
- *   cupsdAddEvent()               - Add an event to the global event cache.
- *   cupsdAddSubscription()        - Add a new subscription object.
- *   cupsdDeleteAllSubscriptions() - Delete all subscriptions.
- *   cupsdDeleteSubscription()     - Delete a subscription object.
- *   cupsdEventName()              - Return a single event name.
- *   cupsdEventValue()             - Return the event mask value for a name.
- *   cupsdExpireSubscriptions()    - Expire old subscription objects.
- *   cupsdFindSubscription()       - Find a subscription by ID.
- *   cupsdLoadAllSubscriptions()   - Load all subscriptions from the .conf file.
- *   cupsdSaveAllSubscriptions()   - Save all subscriptions to the .conf file.
- *   cupsdStopAllNotifiers()       - Stop all notifier processes.
- *   cupsd_compare_subscriptions() - Compare two subscriptions.
- *   cupsd_delete_event()          - Delete a single event...
- *   cupsd_send_dbus()             - Send a DBUS notification...
- *   cupsd_send_notification()     - Send a notification for the specified
- *                                   event.
- *   cupsd_start_notifier()        - Start a notifier subprocess...
- *   cupsd_update_notifier()       - Read messages from notifiers.
+ * These coded instructions, statements, and computer programs 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/".
  */
 
 /*
@@ -212,7 +191,7 @@ cupsdAddEvent(
                        (const char * const *)dest->reasons);
 
        ippAddBoolean(temp->attrs, IPP_TAG_EVENT_NOTIFICATION,
-                     "printer-is-accepting-jobs", dest->accepting);
+                     "printer-is-accepting-jobs", (char)dest->accepting);
       }
 
       if (job)
@@ -945,9 +924,9 @@ cupsdLoadAllSubscriptions(void)
            if (isxdigit(valueptr[0]) && isxdigit(valueptr[1]))
            {
              if (isdigit(valueptr[0]))
-               sub->user_data[i] = (valueptr[0] - '0') << 4;
+               sub->user_data[i] = (unsigned char)((valueptr[0] - '0') << 4);
              else
-               sub->user_data[i] = (tolower(valueptr[0]) - 'a' + 10) << 4;
+               sub->user_data[i] = (unsigned char)((tolower(valueptr[0]) - 'a' + 10) << 4);
 
              if (isdigit(valueptr[1]))
                sub->user_data[i] |= valueptr[1] - '0';
@@ -966,7 +945,7 @@ cupsdLoadAllSubscriptions(void)
              break;
          }
          else
-           sub->user_data[i] = *valueptr++;
+           sub->user_data[i] = (unsigned char)*valueptr++;
        }
 
        if (*valueptr)
@@ -1638,5 +1617,5 @@ cupsd_update_notifier(void)
 
 
 /*
- * End of "$Id: subscriptions.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: subscriptions.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index d3fd5f6029fb989ff7f0cfc5f93615bcb11fe9c9..4b642153198a1c0d9fbdc453c45fa5a93d15e001 100644 (file)
@@ -1,34 +1,16 @@
 /*
- * "$Id: sysman.c 11106 2013-07-08 12:29:10Z msweet $"
+ * "$Id: sysman.c 11406 2013-11-07 12:47:57Z msweet $"
  *
- *   System management functions for the CUPS scheduler.
+ * System management functions for the CUPS scheduler.
  *
- *   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/".
- *
- * Contents:
- *
- *   cupsdCleanDirty()               - Write dirty config and state files.
- *   cupsdMarkDirty()                - Mark config or state files as needing a
- *                                     write.
- *   cupsdSetBusyState()             - Let the system know when we are busy
- *                                     doing something.
- *   cupsdAllowSleep()               - Tell the OS it is now OK to sleep.
- *   cupsdStartSystemMonitor()       - Start monitoring for system change.
- *   cupsdStopSystemMonitor()        - Stop monitoring for system change.
- *   sysEventThreadEntry()           - A thread to receive power and computer
- *                                     name change notifications.
- *   sysEventPowerNotifier()         - Handle power notification events.
- *   sysEventConfigurationNotifier() - Computer name changed notification
- *                                     callback.
- *   sysEventTimerNotifier()         - Handle delayed event notifications.
- *   sysUpdate()                     - Update the current system state.
+ * These coded instructions, statements, and computer programs 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/".
  */
 
 
 #endif /* HAVE_VPROC_TRANSACTION_BEGIN */
 #ifdef __APPLE__
 #  include <IOKit/pwr_mgt/IOPMLib.h>
-#  ifdef HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H
-#    include <IOKit/pwr_mgt/IOPMLibPrivate.h>
-#  else
-#    define kIOPMAssertionTypeDenySystemSleep CFSTR("DenySystemSleep")
-#  endif /* HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H */
 #endif /* __APPLE__ */
 
 
@@ -58,7 +35,7 @@
  * and state files to minimize the number of times the disk has to spin
  * up.
  *
- * Power management support is currently only implemented on MacOS X, but
+ * Power management support is currently only implemented on OS X, 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.
  * to wake up in a new location/on a new wireless network.
  */
 
-/*
- * Local globals...
- */
-
-#if defined(kIOPMAssertionTypeDenySystemSleep) || defined(kIOPMAssertNetworkClientActive)
-static IOPMAssertionID keep_awake = 0; /* Keep the system awake while printing */
-#endif /* kIOPMAssertionTypeDenySystemSleep || kIOPMAssertNetworkClientActive */
-
-
 /*
  * 'cupsdCleanDirty()' - Write dirty config and state files.
  */
@@ -216,33 +184,6 @@ cupsdSetBusyState(void)
     }
 #endif /* HAVE_VPROC_TRANSACTION_BEGIN */
   }
-
-#if defined(kIOPMAssertionTypeDenySystemSleep) || defined(kIOPMAssertNetworkClientActive)
-  if (cupsArrayCount(PrintingJobs) > 0 && !keep_awake)
-  {
-#  ifdef kIOPMAssertNetworkClientActive
-    cupsdLogMessage(CUPSD_LOG_DEBUG, "Asserting NetworkClientActive.");
-
-    IOPMAssertionCreateWithName(kIOPMAssertNetworkClientActive,
-                               kIOPMAssertionLevelOn,
-                               CFSTR("org.cups.cupsd"), &keep_awake);
-
-#  else
-    cupsdLogMessage(CUPSD_LOG_DEBUG, "Asserting DenySystemSleep.");
-
-    IOPMAssertionCreateWithName(kIOPMAssertionTypeDenySystemSleep,
-                               kIOPMAssertionLevelOn,
-                               CFSTR("org.cups.cupsd"), &keep_awake);
-
-#  endif /* kIOPMAssertNetworkClientActive */
-  }
-  else if (cupsArrayCount(PrintingJobs) == 0 && keep_awake)
-  {
-    cupsdLogMessage(CUPSD_LOG_DEBUG, "Releasing power assertion.");
-    IOPMAssertionRelease(keep_awake);
-    keep_awake = 0;
-  }
-#endif /* kIOPMAssertionTypeDenySystemSleep || kIOPMAssertNetworkClientActive */
 }
 
 
@@ -323,6 +264,7 @@ static CFStringRef  ComputerNameKey = NULL,
                        NetworkInterfaceKeyIPv6 = NULL;
                                        /* Netowrk interface key */
 static cupsd_sysevent_t        LastSysEvent;   /* Last system event (for delayed sleep) */
+static int             NameChanged = 0;/* Did we get a 'name changed' event during sleep? */
 
 
 /*
@@ -338,6 +280,7 @@ static void sysEventConfigurationNotifier(SCDynamicStoreRef store,
                                              void *context);
 static void    sysEventTimerNotifier(CFRunLoopTimerRef timer, void *context);
 static void    sysUpdate(void);
+static void    sysUpdateNames(void);
 
 
 /*
@@ -349,6 +292,7 @@ cupsdAllowSleep(void)
 {
   cupsdCleanDirty();
 
+  cupsdLogMessage(CUPSD_LOG_DEBUG, "Allowing system sleep.");
   IOAllowPowerChange(LastSysEvent.powerKernelPort,
                     LastSysEvent.powerNotificationID);
 }
@@ -671,18 +615,19 @@ sysEventPowerNotifier(
 
   switch (messageType)
   {
-    case kIOMessageCanSystemPowerOff:
-    case kIOMessageCanSystemSleep:
+    case kIOMessageCanSystemPowerOff :
+    case kIOMessageCanSystemSleep :
        threadData->sysevent.event |= SYSEVENT_CANSLEEP;
        break;
 
-    case kIOMessageSystemWillRestart:
-    case kIOMessageSystemWillPowerOff:
-    case kIOMessageSystemWillSleep:
+    case kIOMessageSystemWillRestart :
+    case kIOMessageSystemWillPowerOff :
+    case kIOMessageSystemWillSleep :
        threadData->sysevent.event |= SYSEVENT_WILLSLEEP;
+       threadData->sysevent.event &= ~SYSEVENT_WOKE;
        break;
 
-    case kIOMessageSystemHasPoweredOn:
+    case kIOMessageSystemHasPoweredOn :
        /*
        * Because powered on is followed by a net-changed event, delay
        * before sending it.
@@ -692,16 +637,62 @@ sysEventPowerNotifier(
        threadData->sysevent.event |= SYSEVENT_WOKE;
        break;
 
-    case kIOMessageSystemWillNotPowerOff:
-    case kIOMessageSystemWillNotSleep:
+    case kIOMessageSystemWillNotPowerOff :
+    case kIOMessageSystemWillNotSleep :
 #  ifdef kIOMessageSystemWillPowerOn
-    case kIOMessageSystemWillPowerOn:
+    case kIOMessageSystemWillPowerOn :
 #  endif /* kIOMessageSystemWillPowerOn */
     default:
        sendit = 0;
        break;
   }
 
+  switch (messageType)
+  {
+    case kIOMessageCanSystemPowerOff :
+        cupsdLogMessage(CUPSD_LOG_DEBUG,
+                        "Got kIOMessageCanSystemPowerOff message.");
+       break;
+    case kIOMessageCanSystemSleep :
+        cupsdLogMessage(CUPSD_LOG_DEBUG,
+                        "Got kIOMessageCannSystemSleep message.");
+       break;
+    case kIOMessageSystemWillRestart :
+        cupsdLogMessage(CUPSD_LOG_DEBUG,
+                        "Got kIOMessageSystemWillRestart message.");
+       break;
+    case kIOMessageSystemWillPowerOff :
+        cupsdLogMessage(CUPSD_LOG_DEBUG,
+                        "Got kIOMessageSystemWillPowerOff message.");
+       break;
+    case kIOMessageSystemWillSleep :
+        cupsdLogMessage(CUPSD_LOG_DEBUG,
+                        "Got kIOMessageSystemWillSleep message.");
+       break;
+    case kIOMessageSystemHasPoweredOn :
+        cupsdLogMessage(CUPSD_LOG_DEBUG,
+                        "Got kIOMessageSystemHasPoweredOn message.");
+       break;
+    case kIOMessageSystemWillNotPowerOff :
+        cupsdLogMessage(CUPSD_LOG_DEBUG,
+                        "Got kIOMessageSystemWillNotPowerOff message.");
+       break;
+    case kIOMessageSystemWillNotSleep :
+        cupsdLogMessage(CUPSD_LOG_DEBUG,
+                        "Got kIOMessageSystemWillNotSleep message.");
+       break;
+#  ifdef kIOMessageSystemWillPowerOn
+    case kIOMessageSystemWillPowerOn :
+        cupsdLogMessage(CUPSD_LOG_DEBUG,
+                        "Got kIOMessageSystemWillPowerOn message.");
+       break;
+#  endif /* kIOMessageSystemWillPowerOn */
+    default:
+        cupsdLogMessage(CUPSD_LOG_DEBUG, "Got unknown power message %d.",
+                        (int)messageType);
+       break;
+  }
+
   if (sendit == 0)
     IOAllowPowerChange(threadData->sysevent.powerKernelPort,
                        (long)messageArgument);
@@ -829,8 +820,9 @@ sysUpdate(void)
     {
      /*
       * If there are active printers that don't have the connecting-to-device
-      * printer-state-reason then cancel the sleep request (i.e. this reason
-      * indicates a job that is not yet connected to the printer)...
+      * or cups-waiting-for-job-completed printer-state-reason then cancel the
+      * sleep request, i.e., these reasons indicate a job that is not actively
+      * doing anything...
       */
 
       for (p = (cupsd_printer_t *)cupsArrayFirst(Printers);
@@ -840,7 +832,8 @@ sysUpdate(void)
         if (p->job)
         {
          for (i = 0; i < p->num_reasons; i ++)
-           if (!strcmp(p->reasons[i], "connecting-to-device"))
+           if (!strcmp(p->reasons[i], "connecting-to-device") ||
+               !strcmp(p->reasons[i], "cups-waiting-for-job-completed"))
              break;
 
          if (!p->num_reasons || i >= p->num_reasons)
@@ -851,14 +844,14 @@ sysUpdate(void)
       if (p)
       {
         cupsdLogMessage(CUPSD_LOG_INFO,
-                       "System sleep canceled because printer %s is active",
+                       "System sleep canceled because printer %s is active.",
                        p->name);
         IOCancelPowerChange(sysevent.powerKernelPort,
                            sysevent.powerNotificationID);
       }
       else
       {
-       cupsdLogMessage(CUPSD_LOG_DEBUG, "System wants to sleep");
+       cupsdLogMessage(CUPSD_LOG_DEBUG, "System wants to sleep.");
         IOAllowPowerChange(sysevent.powerKernelPort,
                           sysevent.powerNotificationID);
       }
@@ -866,50 +859,30 @@ sysUpdate(void)
 
     if (sysevent.event & SYSEVENT_WILLSLEEP)
     {
-      cupsdLogMessage(CUPSD_LOG_DEBUG, "System going to sleep");
+      cupsdLogMessage(CUPSD_LOG_DEBUG, "System going to sleep.");
 
       Sleeping = 1;
 
-      for (p = (cupsd_printer_t *)cupsArrayFirst(Printers);
-           p;
-          p = (cupsd_printer_t *)cupsArrayNext(Printers))
-      {
-       cupsdLogMessage(CUPSD_LOG_DEBUG,
-                       "Deregistering local printer \"%s\"", p->name);
-       cupsdDeregisterPrinter(p, 0);
-      }
-
       cupsdCleanDirty();
 
-#ifdef kIOPMAssertionTypeDenySystemSleep
-     /*
-      * Remove our assertion as needed since the user wants the system to
-      * sleep (different than idle sleep)...
-      */
-
-      if (keep_awake)
-      {
-       cupsdLogMessage(CUPSD_LOG_DEBUG, "Releasing dark wake assertion.");
-       IOPMAssertionRelease(keep_awake);
-       keep_awake = 0;
-      }
-#endif /* kIOPMAssertionTypeDenySystemSleep */
-
      /*
       * If we have no printing jobs, allow the power change immediately.
-      * Otherwise set the SleepJobs time to 15 seconds in the future when
+      * Otherwise set the SleepJobs time to 10 seconds in the future when
       * we'll take more drastic measures...
       */
 
       if (cupsArrayCount(PrintingJobs) == 0)
+      {
+       cupsdLogMessage(CUPSD_LOG_DEBUG, "Allowing system sleep.");
        IOAllowPowerChange(sysevent.powerKernelPort,
                           sysevent.powerNotificationID);
+      }
       else
       {
        /*
        * If there are active printers that don't have the connecting-to-device
-       * printer-state-reason then delay the sleep request (i.e. this reason
-       * indicates a job that is not yet connected to the printer)...
+       * or cups-waiting-for-job-completed printer-state-reasons then delay the
+       * sleep request, i.e., these reasons indicate a job is active...
        */
 
        for (p = (cupsd_printer_t *)cupsArrayFirst(Printers);
@@ -919,7 +892,8 @@ sysUpdate(void)
          if (p->job)
          {
            for (i = 0; i < p->num_reasons; i ++)
-             if (!strcmp(p->reasons[i], "connecting-to-device"))
+             if (!strcmp(p->reasons[i], "connecting-to-device") ||
+                 !strcmp(p->reasons[i], "cups-waiting-for-job-completed"))
                break;
 
            if (!p->num_reasons || i >= p->num_reasons)
@@ -929,11 +903,16 @@ sysUpdate(void)
 
        if (p)
        {
+         cupsdLogMessage(CUPSD_LOG_INFO,
+                         "System sleep delayed because printer %s is active.",
+                         p->name);
+
          LastSysEvent = sysevent;
          SleepJobs    = time(NULL) + 10;
        }
        else
        {
+         cupsdLogMessage(CUPSD_LOG_DEBUG, "Allowing system sleep.");
          IOAllowPowerChange(sysevent.powerKernelPort,
                             sysevent.powerNotificationID);
        }
@@ -942,78 +921,118 @@ sysUpdate(void)
 
     if (sysevent.event & SYSEVENT_WOKE)
     {
-      cupsdLogMessage(CUPSD_LOG_DEBUG, "System woke from sleep");
+      cupsdLogMessage(CUPSD_LOG_DEBUG, "System woke from sleep.");
       IOAllowPowerChange(sysevent.powerKernelPort,
                          sysevent.powerNotificationID);
       Sleeping = 0;
 
-#ifdef kIOPMAssertionTypeDenySystemSleep
-      if (cupsArrayCount(PrintingJobs) > 0 && !keep_awake)
+     /*
+      * Make sure jobs that were queued prior to the system going to sleep don't
+      * get canceled right away...
+      */
+
+      if (MaxJobTime > 0)
       {
-       cupsdLogMessage(CUPSD_LOG_DEBUG, "Asserting dark wake.");
-       IOPMAssertionCreateWithName(kIOPMAssertionTypeDenySystemSleep,
-                                   kIOPMAssertionLevelOn,
-                                   CFSTR("org.cups.cupsd"), &keep_awake);
+        cupsd_job_t    *job;           /* Current job */
+
+        for (job = (cupsd_job_t *)cupsArrayFirst(ActiveJobs);
+             job;
+             job = (cupsd_job_t *)cupsArrayNext(ActiveJobs))
+        {
+          if (job->cancel_time)
+          {
+            ipp_attribute_t *cancel_after = ippFindAttribute(job->attrs,
+                                                             "job-cancel-after",
+                                                             IPP_TAG_INTEGER);
+
+            if (cancel_after)
+              job->cancel_time = time(NULL) + ippGetInteger(cancel_after, 0);
+            else
+              job->cancel_time = time(NULL) + MaxJobTime;
+          }
+        }
       }
-#endif /* kIOPMAssertionTypeDenySystemSleep */
+
+      if (NameChanged)
+        sysUpdateNames();
 
       cupsdCheckJobs();
     }
 
     if (sysevent.event & SYSEVENT_NETCHANGED)
     {
-      if (!Sleeping)
+      if (Sleeping)
         cupsdLogMessage(CUPSD_LOG_DEBUG,
-                       "System network configuration changed");
+                       "System network configuration changed - "
+                       "ignored while sleeping.");
       else
         cupsdLogMessage(CUPSD_LOG_DEBUG,
-                       "System network configuration changed; "
-                       "ignored while sleeping");
+                       "System network configuration changed.");
     }
 
     if (sysevent.event & SYSEVENT_NAMECHANGED)
     {
-      if (!Sleeping)
+      if (Sleeping)
       {
+        NameChanged = 1;
+
         cupsdLogMessage(CUPSD_LOG_DEBUG,
-                       "Computer name or BTMM domains changed");
+                       "Computer name or BTMM domains changed - ignored while "
+                       "sleeping.");
+      }
+      else
+      {
+        cupsdLogMessage(CUPSD_LOG_DEBUG,
+                       "Computer name or BTMM domains changed.");
 
-       /*
-       * De-register the individual printers...
-       */
+        sysUpdateNames();
+      }
+    }
+  }
+}
 
-       for (p = (cupsd_printer_t *)cupsArrayFirst(Printers);
-            p;
-            p = (cupsd_printer_t *)cupsArrayNext(Printers))
-         cupsdDeregisterPrinter(p, 1);
+
+/*
+ * 'sysUpdateNames()' - Update computer and/or BTMM domains.
+ */
+
+static void
+sysUpdateNames(void)
+{
+  cupsd_printer_t      *p;             /* Current printer */
+
+
+  NameChanged = 0;
+
+ /*
+  * De-register the individual printers...
+  */
+
+  for (p = (cupsd_printer_t *)cupsArrayFirst(Printers);
+       p;
+       p = (cupsd_printer_t *)cupsArrayNext(Printers))
+    cupsdDeregisterPrinter(p, 1);
 
 #  if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
      /*
-        * Update the computer name and BTMM domain list...
-       */
+ /*
+  * Update the computer name and BTMM domain list...
+  */
 
-       cupsdUpdateDNSSDName();
+  cupsdUpdateDNSSDName();
 #  endif /* HAVE_DNSSD || HAVE_AVAHI */
 
      /*
-       * Now re-register them...
-       */
+ /*
+  * Now re-register them...
+  */
 
-       for (p = (cupsd_printer_t *)cupsArrayFirst(Printers);
-            p;
-            p = (cupsd_printer_t *)cupsArrayNext(Printers))
-         cupsdRegisterPrinter(p);
-      }
-      else
-        cupsdLogMessage(CUPSD_LOG_DEBUG,
-                       "Computer name or BTMM domains changed; ignored while "
-                       "sleeping");
-    }
-  }
+  for (p = (cupsd_printer_t *)cupsArrayFirst(Printers);
+       p;
+       p = (cupsd_printer_t *)cupsArrayNext(Printers))
+    cupsdRegisterPrinter(p);
 }
 #endif /* __APPLE__ */
 
 
 /*
- * End of "$Id: sysman.c 11106 2013-07-08 12:29:10Z msweet $".
+ * End of "$Id: sysman.c 11406 2013-11-07 12:47:57Z msweet $".
  */
index da86fa7ace74255781a815961144916e62732a8a..8db5affd738b794e058d19a0b167d87e5a0c6434 100644 (file)
@@ -1,27 +1,16 @@
 /*
- * "$Id: testlpd.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: testlpd.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   cups-lpd test program for CUPS.
+ * cups-lpd test program for CUPS.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 2006 by Easy Software Products, all rights reserved.
+ * Copyright 2007-2014 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/".
- *
- * Contents:
- *
- *   main()          - Simulate an LPD client.
- *   do_command()    - Send the LPD command and wait for a response.
- *   print_job()     - Submit a file for printing.
- *   print_waiting() - Print waiting jobs.
- *   remove_job()    - Cancel a print job.
- *   status_long()   - Show the long printer status.
- *   status_short()  - Show the short printer status.
- *   usage()         - Show program usage...
+ * These coded instructions, statements, and computer programs 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/".
  */
 
 /*
@@ -210,15 +199,15 @@ do_command(int        outfd,              /* I - Command file descriptor */
            int        infd,            /* I - Response file descriptor */
           const char *command)         /* I - Command line to send */
 {
-  int  len;                            /* Length of command line */
-  char status;                         /* Status byte */
+  size_t       len;                    /* Length of command line */
+  char         status;                 /* Status byte */
 
 
   printf("COMMAND: %02X %s", command[0], command + 1);
 
   len = strlen(command);
 
-  if (write(outfd, command, len) < len)
+  if ((size_t)write(outfd, command, len) < len)
   {
     puts("    Write failed!");
     return (-1);
@@ -251,7 +240,7 @@ print_job(int  outfd,                       /* I - Command file descriptor */
   struct stat  fileinfo;               /* File information */
   char         *jobname;               /* Job name */
   int          sequence;               /* Sequence number */
-  int          bytes;                  /* Bytes read/written */
+  ssize_t      bytes;                  /* Bytes read/written */
 
 
  /*
@@ -305,10 +294,10 @@ print_job(int  outfd,                     /* I - Command file descriptor */
   * Send the control file...
   */
 
-  bytes = strlen(control);
+  bytes = (ssize_t)strlen(control);
 
   snprintf(command, sizeof(command), "\002%d cfA%03dlocalhost\n",
-           bytes, sequence);
+           (int)bytes, sequence);
 
   if ((status = do_command(outfd, infd, command)) != 0)
   {
@@ -318,14 +307,14 @@ print_job(int  outfd,                     /* I - Command file descriptor */
 
   bytes ++;
 
-  if (write(outfd, control, bytes) < bytes)
+  if (write(outfd, control, (size_t)bytes) < bytes)
   {
-    printf("CONTROL: Unable to write %d bytes!\n", bytes);
+    printf("CONTROL: Unable to write %d bytes!\n", (int)bytes);
     close(fd);
     return (-1);
   }
 
-  printf("CONTROL: Wrote %d bytes.\n", bytes);
+  printf("CONTROL: Wrote %d bytes.\n", (int)bytes);
 
   if (read(infd, command, 1) < 1)
   {
@@ -355,9 +344,9 @@ print_job(int  outfd,                       /* I - Command file descriptor */
 
   while ((bytes = read(fd, buffer, sizeof(buffer))) > 0)
   {
-    if (write(outfd, buffer, bytes) < bytes)
+    if (write(outfd, buffer, (size_t)bytes) < bytes)
     {
-      printf("DATA: Unable to write %d bytes!\n", bytes);
+      printf("DATA: Unable to write %d bytes!\n", (int)bytes);
       close(fd);
       return (-1);
     }
@@ -451,7 +440,7 @@ status_long(int  outfd,                     /* I - Command file descriptor */
 {
   char         command[1024],          /* Command buffer */
                buffer[8192];           /* Status buffer */
-  int          bytes;                  /* Bytes read/written */
+  ssize_t      bytes;                  /* Bytes read/written */
 
 
  /*
@@ -463,9 +452,9 @@ status_long(int  outfd,                     /* I - Command file descriptor */
   else
     snprintf(command, sizeof(command), "\004%s\n", dest);
 
-  bytes = strlen(command);
+  bytes = (ssize_t)strlen(command);
 
-  if (write(outfd, command, bytes) < bytes)
+  if (write(outfd, command, (size_t)bytes) < bytes)
     return (-1);
 
  /*
@@ -474,7 +463,7 @@ status_long(int  outfd,                     /* I - Command file descriptor */
 
   while ((bytes = read(infd, buffer, sizeof(buffer))) > 0)
   {
-    fwrite(buffer, 1, bytes, stdout);
+    fwrite(buffer, 1, (size_t)bytes, stdout);
     fflush(stdout);
   }
 
@@ -494,7 +483,7 @@ status_short(int  outfd,            /* I - Command file descriptor */
 {
   char         command[1024],          /* Command buffer */
                buffer[8192];           /* Status buffer */
-  int          bytes;                  /* Bytes read/written */
+  ssize_t      bytes;                  /* Bytes read/written */
 
 
  /*
@@ -506,9 +495,9 @@ status_short(int  outfd,            /* I - Command file descriptor */
   else
     snprintf(command, sizeof(command), "\003%s\n", dest);
 
-  bytes = strlen(command);
+  bytes = (ssize_t)strlen(command);
 
-  if (write(outfd, command, bytes) < bytes)
+  if (write(outfd, command, (size_t)bytes) < bytes)
     return (-1);
 
  /*
@@ -517,7 +506,7 @@ status_short(int  outfd,            /* I - Command file descriptor */
 
   while ((bytes = read(infd, buffer, sizeof(buffer))) > 0)
   {
-    fwrite(buffer, 1, bytes, stdout);
+    fwrite(buffer, 1, (size_t)bytes, stdout);
     fflush(stdout);
   }
 
@@ -546,5 +535,5 @@ usage(void)
 
 
 /*
- * End of "$Id: testlpd.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: testlpd.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index f42b7df58f1d9016451d2b1c57dfdf7703d14e44..0271309f605482a92bce7158e18d7f39664c29b3 100644 (file)
@@ -1,24 +1,16 @@
 /*
- * "$Id: testmime.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: testmime.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   MIME test program for CUPS.
+ * MIME test program for CUPS.
  *
- *   Copyright 2007-2013 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/".
- *
- * Contents:
- *
- *   main()            - Main entry for the test program.
- *   add_ppd_filter()  - Add a printer filter from a PPD.
- *   add_ppd_filters() - Add all filters from a PPD.
- *   print_rules()     - Print the rules for a file type...
- *   type_dir()        - Show the MIME types for a given 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/".
  */
 
 /*
@@ -135,7 +127,7 @@ main(int  argc,                             /* I - Number of command-line args */
       sscanf(argv[i], "%15[^/]/%255s", super, type);
       dst = mimeType(mime, super, type);
 
-      filters = mimeFilter2(mime, src, srcinfo.st_size, dst, &cost);
+      filters = mimeFilter2(mime, src, (size_t)srcinfo.st_size, dst, &cost);
 
       if (!filters)
       {
@@ -264,7 +256,7 @@ add_ppd_filter(mime_t      *mime,   /* I - MIME database */
   {
     char       *ptr;                   /* Pointer into maxsize(nnnn) program */
 
-    maxsize = strtoll(program + 8, &ptr, 10);
+    maxsize = (size_t)strtoll(program + 8, &ptr, 10);
 
     if (*ptr != ')')
     {
@@ -527,5 +519,5 @@ type_dir(mime_t     *mime,          /* I - MIME database */
 
 
 /*
- * End of "$Id: testmime.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: testmime.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 3e95f4a6646d7b3b5f182532792b9c1c77e3b34b..9b443cbf4bf8b626afac7670920ffc6ed27fe711 100644 (file)
@@ -1,23 +1,16 @@
 /*
- * "$Id: testspeed.c 10995 2013-05-29 11:51:03Z msweet $"
+ * "$Id: testspeed.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Scheduler speed test for CUPS.
+ * Scheduler speed test for CUPS.
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 1997-2005 by Easy Software Products.
+ * Copyright 2007-2014 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()    - Send multiple IPP requests and report on the average response
- *               time.
- *   do_test() - Run a test on a specific host...
- *   usage()   - Show program usage...
+ * These coded instructions, statements, and computer programs 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/".
  */
 
 /*
@@ -303,7 +296,7 @@ do_test(const char        *server,  /* I - Server to use */
     if (opstring)
       op = ippOpValue(opstring);
     else
-      op = ops[i % (sizeof(ops) / sizeof(ops[0]))];
+      op = ops[i % (int)(sizeof(ops) / sizeof(ops[0]))];
 
     request = ippNewRequest(op);
 
@@ -383,5 +376,5 @@ usage(void)
 
 
 /*
- * End of "$Id: testspeed.c 10995 2013-05-29 11:51:03Z msweet $".
+ * End of "$Id: testspeed.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 472161378ea5055de288429deae61972d6e7f005..97a3a83ba0d61955c6f611e52e8c4583b1cb8ade 100644 (file)
@@ -1,23 +1,16 @@
 /*
- * "$Id: testsub.c 11890 2014-05-22 13:59:21Z msweet $"
+ * "$Id: testsub.c 11889 2014-05-22 13:54:15Z msweet $"
  *
- *   Scheduler notification tester for CUPS.
+ * Scheduler notification tester for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 2006-2007 by Easy Software Products.
+ * Copyright 2007-2014 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/".
- *
- * Contents:
- *
- *   main()             - Subscribe to the .
- *   print_attributes() - Print the attributes in a request...
- *   sigterm_handler()  - Flag when the user hits CTRL-C...
- *   usage()            - Show program usage...
+ * These coded instructions, statements, and computer programs 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/".
  */
 
 /*
@@ -251,7 +244,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
       interval = 5;
 
     ippDelete(response);
-    sleep(interval);
+    sleep((unsigned)interval);
   }
 
  /*
@@ -512,5 +505,5 @@ usage(void)
 
 
 /*
- * End of "$Id: testsub.c 11890 2014-05-22 13:59:21Z msweet $".
+ * End of "$Id: testsub.c 11889 2014-05-22 13:54:15Z msweet $".
  */
diff --git a/scheduler/tls-darwin.c b/scheduler/tls-darwin.c
deleted file mode 100644 (file)
index 78cc3b7..0000000
+++ /dev/null
@@ -1,432 +0,0 @@
-/*
- * "$Id: tls-darwin.c 4216 2013-03-11 13:57:36Z msweet $"
- *
- *   TLS support code for the CUPS scheduler on OS X.
- *
- *   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/".
- *
- * Contents:
- *
- *   cupsdEndTLS()          - Shutdown a secure session with the client.
- *   cupsdStartTLS()        - Start a secure session with the client.
- *   copy_cdsa_certificate() - Copy a SSL/TLS certificate from the System
- *                            keychain.
- *   make_certificate()      - Make a self-signed SSL/TLS certificate.
- */
-
-
-/*
- * Local functions...
- */
-
-static CFArrayRef      copy_cdsa_certificate(cupsd_client_t *con);
-static int             make_certificate(cupsd_client_t *con);
-
-
-/*
- * 'cupsdEndTLS()' - Shutdown a secure session with the client.
- */
-
-int                                    /* O - 1 on success, 0 on error */
-cupsdEndTLS(cupsd_client_t *con)       /* I - Client connection */
-{
-  while (SSLClose(con->http.tls) == errSSLWouldBlock)
-    usleep(1000);
-
-  CFRelease(con->http.tls);
-  con->http.tls = NULL;
-
-  if (con->http.tls_credentials)
-    CFRelease(con->http.tls_credentials);
-
-  return (1);
-}
-
-
-/*
- * 'cupsdStartTLS()' - Start a secure session with the client.
- */
-
-int                                    /* O - 1 on success, 0 on error */
-cupsdStartTLS(cupsd_client_t *con)     /* I - Client connection */
-{
-  OSStatus     error = 0;              /* Error code */
-  SecTrustRef  peerTrust;              /* Peer certificates */
-
-
-  cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] Encrypting connection.",
-                  con->http.fd);
-
-  con->http.tls_credentials = copy_cdsa_certificate(con);
-
-  if (!con->http.tls_credentials)
-  {
-   /*
-    * No keychain (yet), make a self-signed certificate...
-    */
-
-    if (make_certificate(con))
-      con->http.tls_credentials = copy_cdsa_certificate(con);
-  }
-
-  if (!con->http.tls_credentials)
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR,
-                   "Could not find signing key in keychain \"%s\"",
-                   ServerCertificate);
-    error = errSSLBadConfiguration;
-  }
-
-  if (!error)
-    con->http.tls = SSLCreateContext(kCFAllocatorDefault, kSSLServerSide,
-                                     kSSLStreamType);
-
-  if (!error)
-    error = SSLSetIOFuncs(con->http.tls, _httpReadCDSA, _httpWriteCDSA);
-
-  if (!error)
-    error = SSLSetConnection(con->http.tls, HTTP(con));
-
-  if (!error)
-    error = SSLSetCertificate(con->http.tls, con->http.tls_credentials);
-
-  if (!error)
-  {
-   /*
-    * Perform SSL/TLS handshake
-    */
-
-    while ((error = SSLHandshake(con->http.tls)) == errSSLWouldBlock)
-      usleep(1000);
-  }
-
-  if (error)
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR,
-                    "Unable to encrypt connection from %s - %s (%d)",
-                    con->http.hostname, cssmErrorString(error), (int)error);
-
-    con->http.error  = error;
-    con->http.status = HTTP_ERROR;
-
-    if (con->http.tls)
-    {
-      CFRelease(con->http.tls);
-      con->http.tls = NULL;
-    }
-
-    if (con->http.tls_credentials)
-    {
-      CFRelease(con->http.tls_credentials);
-      con->http.tls_credentials = NULL;
-    }
-
-    return (0);
-  }
-
-  cupsdLogMessage(CUPSD_LOG_DEBUG, "Connection from %s now encrypted.",
-                  con->http.hostname);
-
-  if (!SSLCopyPeerTrust(con->http.tls, &peerTrust) && peerTrust)
-  {
-    cupsdLogMessage(CUPSD_LOG_DEBUG, "Received %d peer certificates!",
-                   (int)SecTrustGetCertificateCount(peerTrust));
-    CFRelease(peerTrust);
-  }
-  else
-    cupsdLogMessage(CUPSD_LOG_DEBUG, "Received NO peer certificates!");
-
-  return (1);
-}
-
-
-/*
- * 'copy_cdsa_certificate()' - Copy a SSL/TLS certificate from the System
- *                             keychain.
- */
-
-static CFArrayRef                              /* O - Array of certificates */
-copy_cdsa_certificate(
-    cupsd_client_t *con)                       /* I - Client connection */
-{
-  OSStatus             err;            /* Error info */
-  SecKeychainRef       keychain = NULL;/* Keychain reference */
-  SecIdentitySearchRef search = NULL;  /* Search reference */
-  SecIdentityRef       identity = NULL;/* Identity */
-  CFArrayRef           certificates = NULL;
-                                       /* Certificate array */
-  SecPolicyRef         policy = NULL;  /* Policy ref */
-  CFStringRef          servername = NULL;
-                                       /* Server name */
-  CFMutableDictionaryRef query = NULL; /* Query qualifiers */
-  CFArrayRef           list = NULL;    /* Keychain list */
-#    if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
-  char                 localname[1024];/* Local hostname */
-#    endif /* HAVE_DNSSD || HAVE_AVAHI */
-
-
-  cupsdLogMessage(CUPSD_LOG_DEBUG,
-                  "copy_cdsa_certificate: Looking for certs for \"%s\"...",
-                 con->servername);
-
-  if ((err = SecKeychainOpen(ServerCertificate, &keychain)))
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR, "Cannot open keychain \"%s\" - %s (%d)",
-                   ServerCertificate, cssmErrorString(err), (int)err);
-    goto cleanup;
-  }
-
-  servername = CFStringCreateWithCString(kCFAllocatorDefault, con->servername,
-                                        kCFStringEncodingUTF8);
-
-  policy = SecPolicyCreateSSL(1, servername);
-
-  if (servername)
-    CFRelease(servername);
-
-  if (!policy)
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR, "Cannot create ssl policy reference");
-    goto cleanup;
-  }
-
-  if (!(query = CFDictionaryCreateMutable(kCFAllocatorDefault, 0,
-                                         &kCFTypeDictionaryKeyCallBacks,
-                                         &kCFTypeDictionaryValueCallBacks)))
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR, "Cannot create query dictionary");
-    goto cleanup;
-  }
-
-  list = CFArrayCreate(kCFAllocatorDefault, (const void **)&keychain, 1,
-                       &kCFTypeArrayCallBacks);
-
-  CFDictionaryAddValue(query, kSecClass, kSecClassIdentity);
-  CFDictionaryAddValue(query, kSecMatchPolicy, policy);
-  CFDictionaryAddValue(query, kSecReturnRef, kCFBooleanTrue);
-  CFDictionaryAddValue(query, kSecMatchLimit, kSecMatchLimitOne);
-  CFDictionaryAddValue(query, kSecMatchSearchList, list);
-
-  CFRelease(list);
-
-  err = SecItemCopyMatching(query, (CFTypeRef *)&identity);
-
-#    if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
-  if (err && DNSSDHostName)
-  {
-   /*
-    * Search for the connection server name failed; try the DNS-SD .local
-    * hostname instead...
-    */
-
-    snprintf(localname, sizeof(localname), "%s.local", DNSSDHostName);
-
-    cupsdLogMessage(CUPSD_LOG_DEBUG,
-                   "copy_cdsa_certificate: Looking for certs for \"%s\"...",
-                   localname);
-
-    servername = CFStringCreateWithCString(kCFAllocatorDefault, localname,
-                                          kCFStringEncodingUTF8);
-
-    CFRelease(policy);
-
-    policy = SecPolicyCreateSSL(1, servername);
-
-    if (servername)
-      CFRelease(servername);
-
-    if (!policy)
-    {
-      cupsdLogMessage(CUPSD_LOG_ERROR, "Cannot create ssl policy reference");
-      goto cleanup;
-    }
-
-    CFDictionarySetValue(query, kSecMatchPolicy, policy);
-
-    err = SecItemCopyMatching(query, (CFTypeRef *)&identity);
-  }
-#    endif /* HAVE_DNSSD || HAVE_AVAHI */
-
-  if (err)
-  {
-    cupsdLogMessage(CUPSD_LOG_DEBUG,
-                   "Cannot find signing key in keychain \"%s\": %s (%d)",
-                   ServerCertificate, cssmErrorString(err), (int)err);
-    goto cleanup;
-  }
-
-  if (CFGetTypeID(identity) != SecIdentityGetTypeID())
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR, "SecIdentity CFTypeID failure!");
-    goto cleanup;
-  }
-
-  if ((certificates = CFArrayCreate(NULL, (const void **)&identity,
-                                 1, &kCFTypeArrayCallBacks)) == NULL)
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR, "Cannot create certificate array");
-    goto cleanup;
-  }
-
-  cleanup :
-
-  if (keychain)
-    CFRelease(keychain);
-  if (search)
-    CFRelease(search);
-  if (identity)
-    CFRelease(identity);
-
-  if (policy)
-    CFRelease(policy);
-  if (query)
-    CFRelease(query);
-
-  return (certificates);
-}
-
-
-/*
- * 'make_certificate()' - Make a self-signed SSL/TLS certificate.
- */
-
-static int                             /* O - 1 on success, 0 on failure */
-make_certificate(cupsd_client_t *con)  /* I - Client connection */
-{
-  int          pid,                    /* Process ID of command */
-               status;                 /* Status of command */
-  char         command[1024],          /* Command */
-               *argv[4],               /* Command-line arguments */
-               *envp[MAX_ENV + 1],     /* Environment variables */
-               keychain[1024],         /* Keychain argument */
-               infofile[1024],         /* Type-in information for cert */
-#  if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
-               localname[1024],        /* Local hostname */
-#  endif /* HAVE_DNSSD || HAVE_AVAHI */
-               *servername;            /* Name of server in cert */
-  cups_file_t  *fp;                    /* Seed/info file */
-  int          infofd;                 /* Info file descriptor */
-
-
-#  if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
-  if (con->servername && isdigit(con->servername[0] & 255) && DNSSDHostName)
-  {
-    snprintf(localname, sizeof(localname), "%s.local", DNSSDHostName);
-    servername = localname;
-  }
-  else
-#  endif /* HAVE_DNSSD || HAVE_AVAHI */
-    servername = con->servername;
-
- /*
-  * Run the "certtool" command to generate a self-signed certificate...
-  */
-
-  if (!cupsFileFind("certtool", getenv("PATH"), 1, command, sizeof(command)))
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR,
-                    "No SSL certificate and certtool command not found!");
-    return (0);
-  }
-
- /*
-  * Create a file with the certificate information fields...
-  *
-  * Note: This assumes that the default questions are asked by the certtool
-  * command...
-  */
-
-  if ((fp = cupsTempFile2(infofile, sizeof(infofile))) == NULL)
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR,
-                    "Unable to create certificate information file %s - %s",
-                    infofile, strerror(errno));
-    return (0);
-  }
-
-  cupsFilePrintf(fp,
-                 "%s\n"                        /* Enter key and certificate label */
-                 "r\n"                 /* Generate RSA key pair */
-                 "2048\n"              /* Key size in bits */
-                 "y\n"                 /* OK (y = yes) */
-                 "b\n"                 /* Usage (b=signing/encryption) */
-                 "s\n"                 /* Sign with SHA1 */
-                 "y\n"                 /* OK (y = yes) */
-                 "%s\n"                        /* Common name */
-                 "\n"                  /* Country (default) */
-                 "\n"                  /* Organization (default) */
-                 "\n"                  /* Organizational unit (default) */
-                 "\n"                  /* State/Province (default) */
-                 "%s\n"                        /* Email address */
-                 "y\n",                        /* OK (y = yes) */
-                servername, servername, ServerAdmin);
-  cupsFileClose(fp);
-
-  cupsdLogMessage(CUPSD_LOG_INFO,
-                  "Generating SSL server key and certificate...");
-
-  snprintf(keychain, sizeof(keychain), "k=%s", ServerCertificate);
-
-  argv[0] = "certtool";
-  argv[1] = "c";
-  argv[2] = keychain;
-  argv[3] = NULL;
-
-  cupsdLoadEnv(envp, MAX_ENV);
-
-  infofd = open(infofile, O_RDONLY);
-
-  if (!cupsdStartProcess(command, argv, envp, infofd, -1, -1, -1, -1, 1, NULL,
-                         NULL, &pid))
-  {
-    close(infofd);
-    unlink(infofile);
-    return (0);
-  }
-
-  close(infofd);
-  unlink(infofile);
-
-  while (waitpid(pid, &status, 0) < 0)
-    if (errno != EINTR)
-    {
-      status = 1;
-      break;
-    }
-
-  cupsdFinishProcess(pid, command, sizeof(command), NULL);
-
-  if (status)
-  {
-    if (WIFEXITED(status))
-      cupsdLogMessage(CUPSD_LOG_ERROR,
-                      "Unable to create SSL server key and certificate - "
-                     "the certtool command stopped with status %d!",
-                     WEXITSTATUS(status));
-    else
-      cupsdLogMessage(CUPSD_LOG_ERROR,
-                      "Unable to create SSL server key and certificate - "
-                     "the certtool command crashed on signal %d!",
-                     WTERMSIG(status));
-  }
-  else
-  {
-    cupsdLogMessage(CUPSD_LOG_INFO,
-                    "Created SSL server certificate file \"%s\"...",
-                   ServerCertificate);
-  }
-
-  return (!status);
-}
-
-
-/*
- * End of "$Id: tls-darwin.c 4216 2013-03-11 13:57:36Z msweet $".
- */
diff --git a/scheduler/tls-gnutls.c b/scheduler/tls-gnutls.c
deleted file mode 100644 (file)
index 388147d..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * "$Id: tls-gnutls.c 11899 2014-05-27 15:10:09Z msweet $"
- *
- *   TLS support code for the CUPS scheduler using GNU TLS.
- *
- *   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/".
- *
- * Contents:
- *
- *   cupsdEndTLS()     - Shutdown a secure session with the client.
- *   cupsdStartTLS()   - Start a secure session with the client.
- *   make_certificate() - Make a self-signed SSL/TLS certificate.
- */
-
-
-/*
- * Local functions...
- */
-
-static int             make_certificate(cupsd_client_t *con);
-
-
-/*
- * 'cupsdEndTLS()' - Shutdown a secure session with the client.
- */
-
-int                                    /* O - 1 on success, 0 on error */
-cupsdEndTLS(cupsd_client_t *con)       /* I - Client connection */
-{
-  int          error;                  /* Error code */
-  gnutls_certificate_server_credentials *credentials;
-                                       /* TLS credentials */
-
-
-  credentials = (gnutls_certificate_server_credentials *)
-                    (con->http.tls_credentials);
-
-  error = gnutls_bye(con->http.tls, GNUTLS_SHUT_WR);
-  switch (error)
-  {
-    case GNUTLS_E_SUCCESS:
-      cupsdLogMessage(CUPSD_LOG_DEBUG,
-                     "SSL shutdown successful!");
-      break;
-    default:
-      cupsdLogMessage(CUPSD_LOG_ERROR,
-                     "SSL shutdown failed: %s", gnutls_strerror(error));
-      break;
-  }
-
-  gnutls_deinit(con->http.tls);
-  con->http.tls = NULL;
-
-  gnutls_certificate_free_credentials(*credentials);
-  free(credentials);
-
-  return (1);
-}
-
-
-/*
- * 'cupsdStartTLS()' - Start a secure session with the client.
- */
-
-int                                    /* O - 1 on success, 0 on error */
-cupsdStartTLS(cupsd_client_t *con)     /* I - Client connection */
-{
-  int          status;                 /* Error code */
-  gnutls_certificate_server_credentials *credentials;
-                                       /* TLS credentials */
-
-
-  cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] Encrypting connection.",
-                  con->http.fd);
-
- /*
-  * Verify that we have a certificate...
-  */
-
-  if (access(ServerKey, 0) || access(ServerCertificate, 0))
-  {
-   /*
-    * Nope, make a self-signed certificate...
-    */
-
-    if (!make_certificate(con))
-      return (0);
-  }
-
- /*
-  * Create the SSL object and perform the SSL handshake...
-  */
-
-  credentials = (gnutls_certificate_server_credentials *)
-                    malloc(sizeof(gnutls_certificate_server_credentials));
-  if (credentials == NULL)
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR,
-                    "Unable to encrypt connection from %s - %s",
-                    con->http.hostname, strerror(errno));
-
-    return (0);
-  }
-
-  gnutls_certificate_allocate_credentials(credentials);
-  gnutls_certificate_set_x509_key_file(*credentials, ServerCertificate,
-                                      ServerKey, GNUTLS_X509_FMT_PEM);
-
-  gnutls_init(&con->http.tls, GNUTLS_SERVER);
-  gnutls_set_default_priority(con->http.tls);
-
-  gnutls_credentials_set(con->http.tls, GNUTLS_CRD_CERTIFICATE, *credentials);
-  gnutls_transport_set_ptr(con->http.tls, (gnutls_transport_ptr_t)HTTP(con));
-  gnutls_transport_set_pull_function(con->http.tls, _httpReadGNUTLS);
-  gnutls_transport_set_push_function(con->http.tls, _httpWriteGNUTLS);
-
-  while ((status = gnutls_handshake(con->http.tls)) != GNUTLS_E_SUCCESS)
-  {
-    if (gnutls_error_is_fatal(status))
-    {
-      cupsdLogMessage(CUPSD_LOG_ERROR,
-                      "Unable to encrypt connection from %s - %s",
-                      con->http.hostname, gnutls_strerror(status));
-
-      gnutls_deinit(con->http.tls);
-      gnutls_certificate_free_credentials(*credentials);
-      con->http.tls = NULL;
-      free(credentials);
-      return (0);
-    }
-  }
-
-  cupsdLogMessage(CUPSD_LOG_DEBUG, "Connection from %s now encrypted.",
-                  con->http.hostname);
-
-  con->http.tls_credentials = credentials;
-  return (1);
-}
-
-
-/*
- * 'make_certificate()' - Make a self-signed SSL/TLS certificate.
- */
-
-static int                             /* O - 1 on success, 0 on failure */
-make_certificate(cupsd_client_t *con)  /* I - Client connection */
-{
-  gnutls_x509_crt_t    crt;            /* Self-signed certificate */
-  gnutls_x509_privkey_t        key;            /* Encryption key */
-  cups_lang_t          *language;      /* Default language info */
-  cups_file_t          *fp;            /* Key/cert file */
-  unsigned char                buffer[8192];   /* Buffer for x509 data */
-  size_t               bytes;          /* Number of bytes of data */
-  unsigned char                serial[4];      /* Serial number buffer */
-  time_t               curtime;        /* Current time */
-  int                  result;         /* Result of GNU TLS calls */
-
-
- /*
-  * Create the encryption key...
-  */
-
-  cupsdLogMessage(CUPSD_LOG_INFO, "Generating SSL server key...");
-
-  gnutls_x509_privkey_init(&key);
-  gnutls_x509_privkey_generate(key, GNUTLS_PK_RSA, 2048, 0);
-
- /*
-  * Save it...
-  */
-
-  bytes = sizeof(buffer);
-
-  if ((result = gnutls_x509_privkey_export(key, GNUTLS_X509_FMT_PEM,
-                                           buffer, &bytes)) < 0)
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to export SSL server key - %s",
-                    gnutls_strerror(result));
-    gnutls_x509_privkey_deinit(key);
-    return (0);
-  }
-  else if ((fp = cupsFileOpen(ServerKey, "w")) != NULL)
-  {
-    cupsFileWrite(fp, (char *)buffer, bytes);
-    cupsFileClose(fp);
-
-    cupsdLogMessage(CUPSD_LOG_INFO, "Created SSL server key file \"%s\"...",
-                   ServerKey);
-  }
-  else
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR,
-                    "Unable to create SSL server key file \"%s\" - %s",
-                   ServerKey, strerror(errno));
-    gnutls_x509_privkey_deinit(key);
-    return (0);
-  }
-
- /*
-  * Create the self-signed certificate...
-  */
-
-  cupsdLogMessage(CUPSD_LOG_INFO, "Generating self-signed SSL certificate...");
-
-  language  = cupsLangDefault();
-  curtime   = time(NULL);
-  serial[0] = curtime >> 24;
-  serial[1] = curtime >> 16;
-  serial[2] = curtime >> 8;
-  serial[3] = curtime;
-
-  gnutls_x509_crt_init(&crt);
-  if (strlen(language->language) == 5)
-    gnutls_x509_crt_set_dn_by_oid(crt, GNUTLS_OID_X520_COUNTRY_NAME, 0,
-                                  language->language + 3, 2);
-  else
-    gnutls_x509_crt_set_dn_by_oid(crt, GNUTLS_OID_X520_COUNTRY_NAME, 0,
-                                  "US", 2);
-  gnutls_x509_crt_set_dn_by_oid(crt, GNUTLS_OID_X520_COMMON_NAME, 0,
-                                ServerName, strlen(ServerName));
-  gnutls_x509_crt_set_dn_by_oid(crt, GNUTLS_OID_X520_ORGANIZATION_NAME, 0,
-                                ServerName, strlen(ServerName));
-  gnutls_x509_crt_set_dn_by_oid(crt, GNUTLS_OID_X520_ORGANIZATIONAL_UNIT_NAME,
-                                0, "Unknown", 7);
-  gnutls_x509_crt_set_dn_by_oid(crt, GNUTLS_OID_X520_STATE_OR_PROVINCE_NAME, 0,
-                                "Unknown", 7);
-  gnutls_x509_crt_set_dn_by_oid(crt, GNUTLS_OID_X520_LOCALITY_NAME, 0,
-                                "Unknown", 7);
-  gnutls_x509_crt_set_dn_by_oid(crt, GNUTLS_OID_PKCS9_EMAIL, 0,
-                                ServerAdmin, strlen(ServerAdmin));
-  gnutls_x509_crt_set_key(crt, key);
-  gnutls_x509_crt_set_serial(crt, serial, sizeof(serial));
-  gnutls_x509_crt_set_activation_time(crt, curtime);
-  gnutls_x509_crt_set_expiration_time(crt, curtime + 10 * 365 * 86400);
-  gnutls_x509_crt_set_ca_status(crt, 0);
-  gnutls_x509_crt_set_subject_alternative_name(crt, GNUTLS_SAN_DNSNAME,
-                                               ServerName);
-  gnutls_x509_crt_set_key_purpose_oid(crt, GNUTLS_KP_TLS_WWW_SERVER, 0);
-  gnutls_x509_crt_set_key_usage(crt, GNUTLS_KEY_KEY_ENCIPHERMENT);
-  gnutls_x509_crt_set_version(crt, 3);
-
-  bytes = sizeof(buffer);
-  if (gnutls_x509_crt_get_key_id(crt, 0, buffer, &bytes) >= 0)
-    gnutls_x509_crt_set_subject_key_id(crt, buffer, bytes);
-
-  gnutls_x509_crt_sign(crt, crt, key);
-
- /*
-  * Save it...
-  */
-
-  bytes = sizeof(buffer);
-  if ((result = gnutls_x509_crt_export(crt, GNUTLS_X509_FMT_PEM,
-                                       buffer, &bytes)) < 0)
-    cupsdLogMessage(CUPSD_LOG_ERROR,
-                    "Unable to export SSL server certificate - %s",
-                   gnutls_strerror(result));
-  else if ((fp = cupsFileOpen(ServerCertificate, "w")) != NULL)
-  {
-    cupsFileWrite(fp, (char *)buffer, bytes);
-    cupsFileClose(fp);
-
-    cupsdLogMessage(CUPSD_LOG_INFO,
-                    "Created SSL server certificate file \"%s\"...",
-                   ServerCertificate);
-  }
-  else
-    cupsdLogMessage(CUPSD_LOG_ERROR,
-                    "Unable to create SSL server certificate file \"%s\" - %s",
-                   ServerCertificate, strerror(errno));
-
- /*
-  * Cleanup...
-  */
-
-  gnutls_x509_crt_deinit(crt);
-  gnutls_x509_privkey_deinit(key);
-
-  return (1);
-}
-
-
-/*
- * End of "$Id: tls-gnutls.c 11899 2014-05-27 15:10:09Z msweet $".
- */
diff --git a/scheduler/tls-openssl.c b/scheduler/tls-openssl.c
deleted file mode 100644 (file)
index 19d3eef..0000000
+++ /dev/null
@@ -1,353 +0,0 @@
-/*
- * "$Id: tls-openssl.c 3755 2012-03-30 05:59:14Z msweet $"
- *
- *   TLS support code for the CUPS scheduler using OpenSSL.
- *
- *   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/".
- *
- * Contents:
- *
- *   cupsdEndTLS()     - Shutdown a secure session with the client.
- *   cupsdStartTLS()   - Start a secure session with the client.
- *   make_certificate() - Make a self-signed SSL/TLS certificate.
- */
-
-
-/*
- * Local functions...
- */
-
-static int             make_certificate(cupsd_client_t *con);
-
-
-/*
- * 'cupsdEndTLS()' - Shutdown a secure session with the client.
- */
-
-int                                    /* O - 1 on success, 0 on error */
-cupsdEndTLS(cupsd_client_t *con)       /* I - Client connection */
-{
-  SSL_CTX      *context;               /* Context for encryption */
-  unsigned long        error;                  /* Error code */
-  int          status;                 /* Return status */
-
-
-  context = SSL_get_SSL_CTX(con->http.tls);
-
-  switch (SSL_shutdown(con->http.tls))
-  {
-    case 1 :
-       cupsdLogMessage(CUPSD_LOG_DEBUG,
-                       "SSL shutdown successful!");
-       status = 1;
-       break;
-
-    case -1 :
-       cupsdLogMessage(CUPSD_LOG_ERROR,
-                       "Fatal error during SSL shutdown!");
-
-    default :
-       while ((error = ERR_get_error()) != 0)
-         cupsdLogMessage(CUPSD_LOG_ERROR, "SSL shutdown failed: %s",
-                         ERR_error_string(error, NULL));
-       status = 0;
-       break;
-  }
-
-  SSL_CTX_free(context);
-  SSL_free(con->http.tls);
-  con->http.tls = NULL;
-
-  return (status);
-}
-
-
-/*
- * 'cupsdStartTLS()' - Start a secure session with the client.
- */
-
-int                                    /* O - 1 on success, 0 on error */
-cupsdStartTLS(cupsd_client_t *con)     /* I - Client connection */
-{
-  SSL_CTX      *context;               /* Context for encryption */
-  BIO          *bio;                   /* BIO data */
-  unsigned long        error;                  /* Error code */
-
-
-  cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] Encrypting connection.",
-                  con->http.fd);
-
- /*
-  * Verify that we have a certificate...
-  */
-
-  if (access(ServerKey, 0) || access(ServerCertificate, 0))
-  {
-   /*
-    * Nope, make a self-signed certificate...
-    */
-
-    if (!make_certificate(con))
-      return (0);
-  }
-
- /*
-  * Create the SSL context and accept the connection...
-  */
-
-  context = SSL_CTX_new(SSLv23_server_method());
-
-  SSL_CTX_set_options(context, SSL_OP_NO_SSLv2); /* Only use SSLv3 or TLS */
-  if (SSLOptions & CUPSD_SSL_NOEMPTY)
-    SSL_CTX_set_options(context, SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS);
-  SSL_CTX_use_PrivateKey_file(context, ServerKey, SSL_FILETYPE_PEM);
-  SSL_CTX_use_certificate_chain_file(context, ServerCertificate);
-
-  bio = BIO_new(_httpBIOMethods());
-  BIO_ctrl(bio, BIO_C_SET_FILE_PTR, 0, (char *)HTTP(con));
-
-  con->http.tls = SSL_new(context);
-  SSL_set_bio(con->http.tls, bio, bio);
-
-  if (SSL_accept(con->http.tls) != 1)
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to encrypt connection from %s.",
-                    con->http.hostname);
-
-    while ((error = ERR_get_error()) != 0)
-      cupsdLogMessage(CUPSD_LOG_ERROR, "%s", ERR_error_string(error, NULL));
-
-    SSL_CTX_free(context);
-    SSL_free(con->http.tls);
-    con->http.tls = NULL;
-    return (0);
-  }
-
-  cupsdLogMessage(CUPSD_LOG_DEBUG, "Connection from %s now encrypted.",
-                  con->http.hostname);
-
-  return (1);
-}
-
-
-/*
- * 'make_certificate()' - Make a self-signed SSL/TLS certificate.
- */
-
-static int                             /* O - 1 on success, 0 on failure */
-make_certificate(cupsd_client_t *con)  /* I - Client connection */
-{
-#ifdef HAVE_WAITPID
-  int          pid,                    /* Process ID of command */
-               status;                 /* Status of command */
-  char         command[1024],          /* Command */
-               *argv[12],              /* Command-line arguments */
-               *envp[MAX_ENV + 1],     /* Environment variables */
-               infofile[1024],         /* Type-in information for cert */
-               seedfile[1024];         /* Random number seed file */
-  int          envc,                   /* Number of environment variables */
-               bytes;                  /* Bytes written */
-  cups_file_t  *fp;                    /* Seed/info file */
-  int          infofd;                 /* Info file descriptor */
-
-
- /*
-  * Run the "openssl" command to seed the random number generator and
-  * generate a self-signed certificate that is good for 10 years:
-  *
-  *     openssl rand -rand seedfile 1
-  *
-  *     openssl req -new -x509 -keyout ServerKey \
-  *             -out ServerCertificate -days 3650 -nodes
-  *
-  * The seeding step is crucial in ensuring that the openssl command
-  * does not block on systems without sufficient entropy...
-  */
-
-  if (!cupsFileFind("openssl", getenv("PATH"), 1, command, sizeof(command)))
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR,
-                    "No SSL certificate and openssl command not found!");
-    return (0);
-  }
-
-  if (access("/dev/urandom", 0))
-  {
-   /*
-    * If the system doesn't provide /dev/urandom, then any random source
-    * will probably be blocking-style, so generate some random data to
-    * use as a seed for the certificate.  Note that we have already
-    * seeded the random number generator in cupsdInitCerts()...
-    */
-
-    cupsdLogMessage(CUPSD_LOG_INFO,
-                    "Seeding the random number generator...");
-
-   /*
-    * Write the seed file...
-    */
-
-    if ((fp = cupsTempFile2(seedfile, sizeof(seedfile))) == NULL)
-    {
-      cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to create seed file %s - %s",
-                      seedfile, strerror(errno));
-      return (0);
-    }
-
-    for (bytes = 0; bytes < 262144; bytes ++)
-      cupsFilePutChar(fp, CUPS_RAND());
-
-    cupsFileClose(fp);
-
-   /*
-    * Run the openssl command to seed its random number generator...
-    */
-
-    argv[0] = "openssl";
-    argv[1] = "rand";
-    argv[2] = "-rand";
-    argv[3] = seedfile;
-    argv[4] = "1";
-    argv[5] = NULL;
-
-    envc = cupsdLoadEnv(envp, MAX_ENV);
-    envp[envc] = NULL;
-
-    if (!cupsdStartProcess(command, argv, envp, -1, -1, -1, -1, -1, 1, NULL,
-                           NULL, &pid))
-    {
-      unlink(seedfile);
-      return (0);
-    }
-
-    while (waitpid(pid, &status, 0) < 0)
-      if (errno != EINTR)
-      {
-       status = 1;
-       break;
-      }
-
-    cupsdFinishProcess(pid, command, sizeof(command), NULL);
-
-   /*
-    * Remove the seed file, as it is no longer needed...
-    */
-
-    unlink(seedfile);
-
-    if (status)
-    {
-      if (WIFEXITED(status))
-       cupsdLogMessage(CUPSD_LOG_ERROR,
-                       "Unable to seed random number generator - "
-                       "the openssl command stopped with status %d!",
-                       WEXITSTATUS(status));
-      else
-       cupsdLogMessage(CUPSD_LOG_ERROR,
-                       "Unable to seed random number generator - "
-                       "the openssl command crashed on signal %d!",
-                       WTERMSIG(status));
-
-      return (0);
-    }
-  }
-
- /*
-  * Create a file with the certificate information fields...
-  *
-  * Note: This assumes that the default questions are asked by the openssl
-  * command...
-  */
-
-  if ((fp = cupsTempFile2(infofile, sizeof(infofile))) == NULL)
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR,
-                    "Unable to create certificate information file %s - %s",
-                    infofile, strerror(errno));
-    return (0);
-  }
-
-  cupsFilePrintf(fp, ".\n.\n.\n%s\n.\n%s\n%s\n",
-                 ServerName, ServerName, ServerAdmin);
-  cupsFileClose(fp);
-
-  cupsdLogMessage(CUPSD_LOG_INFO,
-                  "Generating SSL server key and certificate...");
-
-  argv[0]  = "openssl";
-  argv[1]  = "req";
-  argv[2]  = "-new";
-  argv[3]  = "-x509";
-  argv[4]  = "-keyout";
-  argv[5]  = ServerKey;
-  argv[6]  = "-out";
-  argv[7]  = ServerCertificate;
-  argv[8]  = "-days";
-  argv[9]  = "3650";
-  argv[10] = "-nodes";
-  argv[11] = NULL;
-
-  cupsdLoadEnv(envp, MAX_ENV);
-
-  infofd = open(infofile, O_RDONLY);
-
-  if (!cupsdStartProcess(command, argv, envp, infofd, -1, -1, -1, -1, 1, NULL,
-                         NULL, &pid))
-  {
-    close(infofd);
-    unlink(infofile);
-    return (0);
-  }
-
-  close(infofd);
-  unlink(infofile);
-
-  while (waitpid(pid, &status, 0) < 0)
-    if (errno != EINTR)
-    {
-      status = 1;
-      break;
-    }
-
-  cupsdFinishProcess(pid, command, sizeof(command), NULL);
-
-  if (status)
-  {
-    if (WIFEXITED(status))
-      cupsdLogMessage(CUPSD_LOG_ERROR,
-                      "Unable to create SSL server key and certificate - "
-                     "the openssl command stopped with status %d!",
-                     WEXITSTATUS(status));
-    else
-      cupsdLogMessage(CUPSD_LOG_ERROR,
-                      "Unable to create SSL server key and certificate - "
-                     "the openssl command crashed on signal %d!",
-                     WTERMSIG(status));
-  }
-  else
-  {
-    cupsdLogMessage(CUPSD_LOG_INFO, "Created SSL server key file \"%s\"...",
-                   ServerKey);
-    cupsdLogMessage(CUPSD_LOG_INFO,
-                    "Created SSL server certificate file \"%s\"...",
-                   ServerCertificate);
-  }
-
-  return (!status);
-
-#else
-  return (0);
-#endif /* HAVE_WAITPID */
-}
-
-
-/*
- * End of "$Id: tls-openssl.c 3755 2012-03-30 05:59:14Z msweet $".
- */
diff --git a/scheduler/tls.c b/scheduler/tls.c
deleted file mode 100644 (file)
index 41a107a..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * "$Id: tls.c 3755 2012-03-30 05:59:14Z msweet $"
- *
- *   TLS support code for the CUPS scheduler.
- *
- *   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/".
- */
-
-#include "cupsd.h"
-
-#ifdef HAVE_SSL
-#  ifdef HAVE_CDSASSL
-#    include "tls-darwin.c"
-#  elif defined(HAVE_GNUTLS)
-#    include "tls-gnutls.c"
-#  elif defined(HAVE_LIBSSL)
-#    include "tls-openssl.c"
-#  endif /* HAVE_CDSASSL */
-#endif /* HAVE_SSL */
-
-
-/*
- * End of "$Id: tls.c 3755 2012-03-30 05:59:14Z msweet $".
- */
index 2b986e5889fe204049687dcdcd1ce1943c98bc8a..046ce3d1b2828384d0495eee70ad6ab9ccb2b215 100644 (file)
@@ -1,26 +1,16 @@
 /*
- * "$Id: type.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: type.c 11594 2014-02-14 20:09:01Z msweet $"
  *
- *   MIME typing routines for CUPS.
+ * MIME typing routines for CUPS.
  *
- *   Copyright 2007-2012 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/".
- *
- * Contents:
- *
- *   mimeAddType()        - Add a MIME type to a database.
- *   mimeAddTypeRule()    - Add a detection rule for a file type.
- *   mimeFileType()       - Determine the type of a file.
- *   mimeType()           - Lookup a file type.
- *   mime_compare_types() - Compare two MIME super/type names.
- *   mime_check_rules()   - Check each rule in a list.
- *   mime_patmatch()      - Pattern matching.
+ * These coded instructions, statements, and computer programs 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/".
  */
 
 /*
@@ -319,7 +309,7 @@ mimeAddTypeRule(mime_type_t *mt,    /* I - Type to add to */
       */
 
       ptr = name;
-      while (isalnum(*rule & 255) && (ptr - name) < (sizeof(name) - 1))
+      while (isalnum(*rule & 255) && (size_t)(ptr - name) < (sizeof(name) - 1))
         *ptr++ = *rule++;
 
       *ptr = '\0';
@@ -332,12 +322,12 @@ mimeAddTypeRule(mime_type_t *mt,  /* I - Type to add to */
 
        rule ++;
        for (num_values = 0;
-            num_values < (sizeof(value) / sizeof(value[0]));
+            num_values < (int)(sizeof(value) / sizeof(value[0]));
             num_values ++)
        {
          ptr = value[num_values];
 
-         while ((ptr - value[num_values]) < (sizeof(value[0]) - 1) &&
+         while ((size_t)(ptr - value[num_values]) < (sizeof(value[0]) - 1) &&
                 *rule != '\0' && *rule != ',' && *rule != ')')
          {
            if (isspace(*rule & 255))
@@ -358,7 +348,7 @@ mimeAddTypeRule(mime_type_t *mt,    /* I - Type to add to */
              quote = *rule++;
 
              while (*rule != '\0' && *rule != quote &&
-                    (ptr - value[num_values]) < (sizeof(value[0]) - 1))
+                    (size_t)(ptr - value[num_values]) < (sizeof(value[0]) - 1))
                *ptr++ = *rule++;
 
               if (*rule == quote)
@@ -371,14 +361,14 @@ mimeAddTypeRule(mime_type_t *mt,  /* I - Type to add to */
              rule ++;
 
              while (*rule != '>' && *rule != '\0' &&
-                    (ptr - value[num_values]) < (sizeof(value[0]) - 1))
+                    (size_t)(ptr - value[num_values]) < (sizeof(value[0]) - 1))
              {
                if (isxdigit(rule[0] & 255) && isxdigit(rule[1] & 255))
                {
                  if (isdigit(*rule))
-                   *ptr = (*rule++ - '0') << 4;
+                   *ptr = (char)((*rule++ - '0') << 4);
                  else
-                   *ptr = (tolower(*rule++) - 'a' + 10) << 4;
+                   *ptr = (char)((tolower(*rule++) - 'a' + 10) << 4);
 
                  if (isdigit(*rule))
                    *ptr++ |= *rule++ - '0';
@@ -425,6 +415,8 @@ mimeAddTypeRule(mime_type_t *mt,    /* I - Type to add to */
          op = MIME_MAGIC_ASCII;
        else if (!strcmp(name, "printable"))
          op = MIME_MAGIC_PRINTABLE;
+       else if (!strcmp(name, "regex"))
+         op = MIME_MAGIC_REGEX;
        else if (!strcmp(name, "string"))
          op = MIME_MAGIC_STRING;
        else if (!strcmp(name, "istring"))
@@ -454,7 +446,7 @@ mimeAddTypeRule(mime_type_t *mt,    /* I - Type to add to */
        */
 
        snprintf(value[0], sizeof(value[0]), "*.%s", name);
-       length[0]  = strlen(value[0]);
+       length[0]  = (int)strlen(value[0]);
        op         = MIME_MAGIC_MATCH;
       }
 
@@ -465,7 +457,7 @@ mimeAddTypeRule(mime_type_t *mt,    /* I - Type to add to */
       if ((temp = calloc(1, sizeof(mime_magic_t))) == NULL)
        return (-1);
 
-      temp->invert = invert;
+      temp->invert = (short)invert;
       if (current != NULL)
       {
        temp->parent  = current->parent;
@@ -507,13 +499,13 @@ mimeAddTypeRule(mime_type_t *mt,  /* I - Type to add to */
       */
 
       current  = temp;
-      temp->op = op;
+      temp->op = (short)op;
       invert   = 0;
 
       switch (op)
       {
         case MIME_MAGIC_MATCH :
-           if (length[0] > (sizeof(temp->value.matchv) - 1))
+           if ((size_t)length[0] > (sizeof(temp->value.matchv) - 1))
              return (-1);
            strlcpy(temp->value.matchv, value[0], sizeof(temp->value.matchv));
            break;
@@ -524,18 +516,24 @@ mimeAddTypeRule(mime_type_t *mt,  /* I - Type to add to */
            if (temp->length > MIME_MAX_BUFFER)
              temp->length = MIME_MAX_BUFFER;
            break;
+       case MIME_MAGIC_REGEX :
+           temp->offset = strtol(value[0], NULL, 0);
+           temp->length = MIME_MAX_BUFFER;
+           if (regcomp(&(temp->value.rev), value[1], REG_NOSUB | REG_EXTENDED))
+             return (-1);
+           break;
        case MIME_MAGIC_STRING :
        case MIME_MAGIC_ISTRING :
            temp->offset = strtol(value[0], NULL, 0);
-           if (length[1] > sizeof(temp->value.stringv))
+           if ((size_t)length[1] > sizeof(temp->value.stringv))
              return (-1);
            temp->length = length[1];
-           memcpy(temp->value.stringv, value[1], length[1]);
+           memcpy(temp->value.stringv, value[1], (size_t)length[1]);
            break;
        case MIME_MAGIC_CHAR :
            temp->offset = strtol(value[0], NULL, 0);
            if (length[1] == 1)
-             temp->value.charv = value[1][0];
+             temp->value.charv = (unsigned char)value[1][0];
            else
              temp->value.charv = (unsigned char)strtol(value[1], NULL, 0);
 
@@ -551,7 +549,7 @@ mimeAddTypeRule(mime_type_t *mt,    /* I - Type to add to */
            temp->value.intv = (unsigned)strtol(value[1], NULL, 0);
            break;
        case MIME_MAGIC_LOCALE :
-           if (length[0] > (sizeof(temp->value.localev) - 1))
+           if ((size_t)length[0] > (sizeof(temp->value.localev) - 1))
              return (-1);
 
            strlcpy(temp->value.localev, value[0], sizeof(temp->value.localev));
@@ -559,10 +557,10 @@ mimeAddTypeRule(mime_type_t *mt,  /* I - Type to add to */
        case MIME_MAGIC_CONTAINS :
            temp->offset = strtol(value[0], NULL, 0);
            temp->region = strtol(value[1], NULL, 0);
-           if (length[2] > sizeof(temp->value.stringv))
+           if ((size_t)length[2] > sizeof(temp->value.stringv))
              return (-1);
            temp->length = length[2];
-           memcpy(temp->value.stringv, value[2], length[2]);
+           memcpy(temp->value.stringv, value[2], (size_t)length[2]);
            break;
       }
     }
@@ -735,8 +733,8 @@ mime_check_rules(
   int          n;                      /* Looping var */
   int          region;                 /* Region to look at */
   int          logic,                  /* Logic to apply */
-               result,                 /* Result of test */
-               intv;                   /* Integer value */
+               result;                 /* Result of test */
+  unsigned     intv;                   /* Integer value */
   short                shortv;                 /* Short value */
   unsigned char        *bufptr;                /* Pointer into buffer */
 
@@ -852,6 +850,50 @@ mime_check_rules(
          result = (n == 0);
          break;
 
+      case MIME_MAGIC_REGEX :
+          DEBUG_printf(("5mime_check_rules: regex(%d, \"%s\")", rules->offset,
+                       rules->value.stringv));
+
+         /*
+         * Load the buffer if necessary...
+         */
+
+          if (fb->offset < 0 || rules->offset < fb->offset ||
+             (rules->offset + rules->length) > (fb->offset + fb->length))
+         {
+          /*
+           * Reload file buffer...
+           */
+
+            cupsFileSeek(fb->fp, rules->offset);
+           fb->length = cupsFileRead(fb->fp, (char *)fb->buffer,
+                                     sizeof(fb->buffer));
+           fb->offset = rules->offset;
+
+            DEBUG_printf(("5mime_check_rules: loaded %d byte fb->buffer at %d, starts "
+                         "with \"%c%c%c%c\".",
+                         fb->length, fb->offset, fb->buffer[0], fb->buffer[1],
+                         fb->buffer[2], fb->buffer[3]));
+         }
+
+         /*
+         * Compare the buffer against the string.  If the file is too
+         * short then don't compare - it can't match...
+         */
+
+          if (fb->length > 0)
+          {
+            char temp[MIME_MAX_BUFFER + 1];
+                                       /* Temporary buffer */
+
+            memcpy(temp, fb->buffer, (size_t)fb->length);
+            temp[fb->length] = '\0';
+            result = !regexec(&(rules->value.rev), temp, 0, NULL, 0);
+          }
+
+          DEBUG_printf(("5mime_check_rules: result=%d", result));
+         break;
+
       case MIME_MAGIC_STRING :
           DEBUG_printf(("5mime_check_rules: string(%d, \"%s\")", rules->offset,
                        rules->value.stringv));
@@ -886,8 +928,7 @@ mime_check_rules(
          if ((rules->offset + rules->length) > (fb->offset + fb->length))
            result = 0;
          else
-            result = (memcmp(fb->buffer + rules->offset - fb->offset,
-                            rules->value.stringv, rules->length) == 0);
+            result = !memcmp(fb->buffer + rules->offset - fb->offset, rules->value.stringv, (size_t)rules->length);
           DEBUG_printf(("5mime_check_rules: result=%d", result));
          break;
 
@@ -917,9 +958,7 @@ mime_check_rules(
          if ((rules->offset + rules->length) > (fb->offset + fb->length))
            result = 0;
          else
-            result = (_cups_strncasecmp((char *)fb->buffer + rules->offset -
-                                     fb->offset,
-                                 rules->value.stringv, rules->length) == 0);
+            result = !_cups_strncasecmp((char *)fb->buffer + rules->offset - fb->offset, rules->value.stringv, (size_t)rules->length);
          break;
 
       case MIME_MAGIC_CHAR :
@@ -979,7 +1018,7 @@ mime_check_rules(
          else
          {
            bufptr = fb->buffer + rules->offset - fb->offset;
-           shortv = (bufptr[0] << 8) | bufptr[1];
+           shortv = (short)((bufptr[0] << 8) | bufptr[1]);
            result = (shortv == rules->value.shortv);
          }
          break;
@@ -1012,19 +1051,16 @@ mime_check_rules(
          else
          {
            bufptr = fb->buffer + rules->offset - fb->offset;
-           intv   = (((((bufptr[0] << 8) | bufptr[1]) << 8) |
-                      bufptr[2]) << 8) | bufptr[3];
+           intv   = (unsigned)((((((bufptr[0] << 8) | bufptr[1]) << 8) | bufptr[2]) << 8) | bufptr[3]);
            result = (intv == rules->value.intv);
          }
          break;
 
       case MIME_MAGIC_LOCALE :
 #if defined(WIN32) || defined(__EMX__) || defined(__APPLE__)
-          result = (strcmp(rules->value.localev,
-                          setlocale(LC_ALL, "")) == 0);
+          result = !strcmp(rules->value.localev, setlocale(LC_ALL, ""));
 #else
-          result = (strcmp(rules->value.localev,
-                          setlocale(LC_MESSAGES, "")) == 0);
+          result = !strcmp(rules->value.localev, setlocale(LC_MESSAGES, ""));
 #endif /* __APPLE__ */
          break;
 
@@ -1061,9 +1097,7 @@ mime_check_rules(
              region = fb->length - rules->length;
 
            for (n = 0; n < region; n ++)
-             if ((result = (memcmp(fb->buffer + rules->offset - fb->offset + n,
-                                   rules->value.stringv,
-                                   rules->length) == 0)) != 0)
+             if ((result = (memcmp(fb->buffer + rules->offset - fb->offset + n, rules->value.stringv, (size_t)rules->length) == 0)) != 0)
                break;
           }
          break;
@@ -1212,5 +1246,5 @@ mime_patmatch(const char *s,              /* I - String to match against */
 
 
 /*
- * End of "$Id: type.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: type.c 11594 2014-02-14 20:09:01Z msweet $".
  */
index 42d8ce7353903a9f2972d1c470903bceeb99c07c..a31be2ec9a87c782bcd9612b70f1a9c8c5a71ecd 100644 (file)
@@ -1,28 +1,16 @@
 /*
- * "$Id: util.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: util.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Mini-daemon utility functions for CUPS.
+ * Mini-daemon utility functions for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2005 by Easy Software Products.
+ * Copyright 2007-2014 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:
- *
- *   cupsdCompareNames()       - Compare two names.
- *   cupsdCreateStringsArray() - Create a CUPS array of strings.
- *   cupsdExec()               - Run a program with the correct environment.
- *   cupsdPipeCommand()        - Read output from a command.
- *   cupsdSendIPPGroup()       - Send a group tag.
- *   cupsdSendIPPHeader()      - Send the IPP response header.
- *   cupsdSendIPPInteger()     - Send an integer attribute.
- *   cupsdSendIPPString()      - Send a string attribute.
- *   cupsdSendIPPTrailer()     - Send the end-of-message tag.
+ * These coded instructions, statements, and computer programs 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/".
  */
 
 /*
@@ -251,7 +239,7 @@ cups_file_t *                               /* O - CUPS file or NULL on error */
 cupsdPipeCommand(int        *pid,      /* O - Process ID or 0 on error */
                  const char *command,  /* I - Command to run */
                  char       **argv,    /* I - Arguments to pass to command */
-                int        user)       /* I - User to run as or 0 for current */
+                uid_t      user)       /* I - User to run as or 0 for current */
 {
   int  fd,                             /* Temporary file descriptor */
        fds[2];                         /* Pipe file descriptors */
@@ -404,8 +392,8 @@ cupsdSendIPPInteger(
   putchar(value_tag);
 
   len = strlen(name);
-  putchar(len >> 8);
-  putchar(len);
+  putchar((int)(len >> 8));
+  putchar((int)len);
 
   fputs(name, stdout);
 
@@ -441,14 +429,14 @@ cupsdSendIPPString(
   putchar(value_tag);
 
   len = strlen(name);
-  putchar(len >> 8);
-  putchar(len);
+  putchar((int)(len >> 8));
+  putchar((int)len);
 
   fputs(name, stdout);
 
   len = strlen(value);
-  putchar(len >> 8);
-  putchar(len);
+  putchar((int)(len >> 8));
+  putchar((int)len);
 
   fputs(value, stdout);
 }
@@ -467,5 +455,5 @@ cupsdSendIPPTrailer(void)
 
 
 /*
- * End of "$Id: util.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: util.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index a0774b4a15fefe6d22481b12b18ed982738ea3ba..08b495c8c37e8dbfbf80514f3a7275d36272086d 100644 (file)
@@ -1,16 +1,16 @@
 /*
- * "$Id: util.h 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: util.h 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Mini-daemon utility definitions for CUPS.
+ * Mini-daemon utility definitions for CUPS.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2005 by Easy Software Products.
+ * Copyright 2007-2014 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/".
  */
 
 #ifndef _CUPSD_UTIL_H_
@@ -49,7 +49,7 @@ extern int            cupsdCompareNames(const char *s, const char *t);
 extern cups_array_t    *cupsdCreateStringsArray(const char *s);
 extern int             cupsdExec(const char *command, char **argv);
 extern cups_file_t     *cupsdPipeCommand(int *pid, const char *command,
-                                         char **argv, int user);
+                                         char **argv, uid_t user);
 extern void            cupsdSendIPPGroup(ipp_tag_t group_tag);
 extern void            cupsdSendIPPHeader(ipp_status_t status_code,
                                           int request_id);
@@ -67,5 +67,5 @@ extern void           cupsdSendIPPTrailer(void);
 #endif /* !_CUPSD_UTIL_H_ */
 
 /*
- * End of "$Id: util.h 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: util.h 11558 2014-02-06 18:33:34Z msweet $".
  */
index 84fc07b475baf177689a259602cd38cf028fba65..effbf99f0563a5c60d45d777c7a9f969aa4abe39 100644 (file)
@@ -1,93 +1,89 @@
 cancel.o: cancel.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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
 cupsaccept.o: cupsaccept.c ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 cupsaddsmb.o: cupsaddsmb.c ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/adminutil.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
 cupsctl.o: cupsctl.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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
 cupstestdsc.o: cupstestdsc.c ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 cupstestppd.o: cupstestppd.c ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
-  ../cups/versioning.h ../cups/ipp-private.h ../cups/ipp.h \
-  ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/dir.h ../cups/raster.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
 lp.o: lp.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
-  ../cups/debug-private.h ../cups/versioning.h ../cups/ipp-private.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/http-private.h \
-  ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.h ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-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
 lpadmin.o: lpadmin.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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
 lpinfo.o: lpinfo.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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
 lpmove.o: lpmove.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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
 lpoptions.o: lpoptions.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
-lppasswd.o: lppasswd.c ../cups/cups-private.h ../cups/string-private.h \
-  ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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
 lpstat.o: lpstat.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
-  ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/http-private.h ../cups/md5-private.h \
-  ../cups/language-private.h ../cups/transcode.h ../cups/language.h \
-  ../cups/pwg-private.h ../cups/cups.h ../cups/file.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
index 114190a2f40a973d101c82b8f6bfa674481684f4..62b9da76982001bc8d6d5fbc5d33317466a7939b 100644 (file)
@@ -1,25 +1,25 @@
 #
-# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
+# "$Id: Makefile 11776 2014-03-28 19:16:05Z msweet $"
 #
-#   System V commands makefile for CUPS.
+# System V commands makefile for CUPS.
 #
-#   Copyright 2007-2012 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
 
 TARGETS        =       cancel cupsaccept cupsaddsmb cupsctl cupstestdsc cupstestppd \
-               lp lpadmin lpinfo lpmove lpoptions lppasswd lpstat
+               lp lpadmin lpinfo lpmove lpoptions lpstat
 OBJS   =       cancel.o cupsaccept.o cupsaddsmb.o cupsctl.o cupstestdsc.o \
                cupstestppd.o lp.o lpadmin.o lpinfo.o lpmove.o lpoptions.o \
-               lppasswd.o lpstat.o
+               lpstat.o
 
 
 #
@@ -105,7 +105,6 @@ install-exec:
        $(INSTALL_BIN) lp $(BINDIR)
        $(INSTALL_BIN) lpoptions $(BINDIR)
        $(INSTALL_BIN) lpstat $(BINDIR)
-       $(INSTALL_BIN) lppasswd $(BINDIR)
        if test "x$(SYMROOT)" != "x"; then \
                $(INSTALL_DIR) $(SYMROOT); \
                for file in $(TARGETS); do \
@@ -139,7 +138,6 @@ uninstall:
        $(RM) $(BINDIR)/cupstestppd
        $(RM) $(BINDIR)/lp
        $(RM) $(BINDIR)/lpoptions
-       $(RM) $(BINDIR)/lppasswd
        $(RM) $(BINDIR)/lpstat
        -$(RMDIR) $(BINDIR)
        $(RM) $(SBINDIR)/accept
@@ -264,15 +262,6 @@ lpoptions: lpoptions.o ../cups/$(LIBCUPS)
        $(CC) $(LDFLAGS) -o lpoptions lpoptions.o $(LIBZ) $(LIBS)
 
 
-#
-# lppasswd
-#
-
-lppasswd:      lppasswd.o ../cups/$(LIBCUPS)
-       echo Linking $@...
-       $(CC) $(LDFLAGS) -o lppasswd lppasswd.o $(LIBZ) $(LIBS)
-
-
 #
 # lpstat
 #
@@ -290,5 +279,5 @@ include Dependencies
 
 
 #
-# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
+# End of "$Id: Makefile 11776 2014-03-28 19:16:05Z msweet $".
 #
index 6faf67f179128752e670244be61dcaabbd883ec3..440c64ee23691959dfb677b287eca4d915ef1675 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: cupstestppd.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: cupstestppd.c 11558 2014-02-06 18:33:34Z msweet $"
  *
  *   PPD test program for CUPS.
  *
@@ -144,7 +144,7 @@ main(int  argc,                             /* I - Number of command-line args */
      char *argv[])                     /* I - Command-line arguments */
 {
   int          i, j, k, m, n;          /* Looping vars */
-  int          len;                    /* Length of option name */
+  size_t       len;                    /* Length of option name */
   char         *opt;                   /* Option character */
   const char   *ptr;                   /* Pointer into string */
   cups_file_t  *fp;                    /* PPD file */
@@ -1470,7 +1470,7 @@ main(int  argc,                           /* I - Number of command-line args */
               k < group->num_options;
               k ++, option ++)
          {
-           len = (int)strlen(option->keyword);
+           len = strlen(option->keyword);
 
            for (m = 0, group2 = ppd->groups;
                 m < ppd->num_groups;
@@ -1479,7 +1479,7 @@ main(int  argc,                           /* I - Number of command-line args */
                   n < group2->num_options;
                   n ++, option2 ++)
                if (option != option2 &&
-                   len < (int)strlen(option2->keyword) &&
+                   len < strlen(option2->keyword) &&
                    !strncmp(option->keyword, option2->keyword, len))
                {
                  _cupsLangPrintf(stdout,
@@ -3992,5 +3992,5 @@ valid_utf8(const char *s)         /* I - String to check */
 
 
 /*
- * End of "$Id: cupstestppd.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: cupstestppd.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 24ee4137d7fa7a18e08b2d710b7b29283aee8cae..e6eb028baf8f66dec8c511a72f19af73c96fc0fd 100644 (file)
@@ -1,22 +1,16 @@
 /*
- * "$Id: lp.c 11101 2013-07-08 11:20:33Z msweet $"
+ * "$Id: lp.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   "lp" command for CUPS.
+ * "lp" command for CUPS.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
+ * Copyright 2007-2014 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()          - Parse options and send files for printing.
- *   restart_job()   - Restart a job.
- *   set_job_attrs() - Set job attributes.
+ * These coded instructions, statements, and computer programs 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/".
  */
 
 /*
@@ -640,7 +634,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
     while (status == HTTP_CONTINUE &&
            (bytes = read(0, buffer, sizeof(buffer))) > 0)
-      status = cupsWriteRequestData(CUPS_HTTP_DEFAULT, buffer, bytes);
+      status = cupsWriteRequestData(CUPS_HTTP_DEFAULT, buffer, (size_t)bytes);
 
     if (status != HTTP_CONTINUE)
     {
@@ -764,5 +758,5 @@ set_job_attrs(const char    *command,       /* I - Command name */
 
 
 /*
- * End of "$Id: lp.c 11101 2013-07-08 11:20:33Z msweet $".
+ * End of "$Id: lp.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index 92cb5d2945ed0290f6b860f84ec7c2c371e64e43..2431edc91a1edad77e6c7d8e356c21f36ff2cc08 100644 (file)
@@ -1,30 +1,16 @@
 /*
- * "$Id: lpadmin.c 11345 2013-10-18 21:14:52Z msweet $"
+ * "$Id: lpadmin.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   "lpadmin" command for CUPS.
+ * "lpadmin" command for CUPS.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 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 configure the scheduler.
- *   add_printer_to_class()      - Add a printer to a class.
- *   default_printer()           - Set the default printing destination.
- *   delete_printer()            - Delete a printer from the system.
- *   delete_printer_from_class() - Delete a printer from a class.
- *   delete_printer_option()     - Delete a printer option.
- *   enable_printer()            - Enable a printer.
- *   get_printer_type()          - Determine the printer type and URI.
- *   set_printer_options()       - Set the printer options and/or file.
- *   validate_name()             - Make sure the printer name only contains
- *                                 valid chars.
+ * These coded instructions, statements, and computer programs 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/".
  */
 
 /*
@@ -1201,8 +1187,7 @@ get_printer_type(http_t *http,            /* I - Server connection */
   *    requesting-user-name
   */
 
-  httpAssembleURIf(HTTP_URI_CODING_ALL, uri, urisize, "ipp", NULL, "localhost",
-                   ippPort(), "/printers/%s", printer);
+  httpAssembleURIf(HTTP_URI_CODING_ALL, uri, (int)urisize, "ipp", NULL, "localhost", ippPort(), "/printers/%s", printer);
 
   request = ippNewRequest(IPP_GET_PRINTER_ATTRIBUTES);
   ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
@@ -1223,8 +1208,7 @@ get_printer_type(http_t *http,            /* I - Server connection */
     type = (cups_ptype_t)attr->values[0].integer;
 
     if (type & CUPS_PRINTER_CLASS)
-      httpAssembleURIf(HTTP_URI_CODING_ALL, uri, urisize, "ipp", NULL,
-                      "localhost", ippPort(), "/classes/%s", printer);
+      httpAssembleURIf(HTTP_URI_CODING_ALL, uri, (int)urisize, "ipp", NULL, "localhost", ippPort(), "/classes/%s", printer);
   }
   else
     type = CUPS_PRINTER_LOCAL;
@@ -1515,5 +1499,5 @@ validate_name(const char *name)           /* I - Name to check */
 
 
 /*
- * End of "$Id: lpadmin.c 11345 2013-10-18 21:14:52Z msweet $".
+ * End of "$Id: lpadmin.c 11558 2014-02-06 18:33:34Z msweet $".
  */
index ac81530988d39d658ee857d3b9bab8786653cbf7..1ddff295d2e5a5d180c67a2aefb6d6fa6ccf696b 100644 (file)
@@ -1,23 +1,16 @@
 /*
- * "$Id: lpoptions.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: lpoptions.c 11558 2014-02-06 18:33:34Z msweet $"
  *
- *   Printer option program for CUPS.
+ * Printer option program for CUPS.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * Copyright 2007-2014 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.
- *   list_group()   - List printer-specific options from the PPD group.
- *   list_options() - List printer-specific options from the PPD file.
- *   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/".
  */
 
 /*
@@ -274,8 +267,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
                num_options --;
 
                if (j < num_options)
-                 memcpy(options + j, options + j + 1,
-                        sizeof(cups_option_t) * (num_options - j));
+                 memmove(options + j, options + j + 1, sizeof(cups_option_t) * (size_t)(num_options - j));
                break;
               }
 
@@ -322,7 +314,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
                j = dest - dests;
                if (j < num_dests)
-                 memcpy(dest, dest + 1, (num_dests - j) * sizeof(cups_dest_t));
+                 memmove(dest, dest + 1, (size_t)(num_dests - j) * sizeof(cups_dest_t));
              }
            }
 
@@ -385,14 +377,12 @@ main(int  argc,                           /* I - Number of command-line arguments */
         *ptr++ = ' ';
 
       if (!options[i].value[0])
-        strlcpy(ptr, options[i].name, sizeof(buffer) - (ptr - buffer));
+        strlcpy(ptr, options[i].name, sizeof(buffer) - (size_t)(ptr - buffer));
       else if (strchr(options[i].value, ' ') != NULL ||
                strchr(options[i].value, '\t') != NULL)
-       snprintf(ptr, sizeof(buffer) - (ptr - buffer), "%s=\'%s\'",
-                options[i].name, options[i].value);
+       snprintf(ptr, sizeof(buffer) - (size_t)(ptr - buffer), "%s=\'%s\'", options[i].name, options[i].value);
       else
-       snprintf(ptr, sizeof(buffer) - (ptr - buffer), "%s=%s",
-                options[i].name, options[i].value);
+       snprintf(ptr, sizeof(buffer) - (size_t)(ptr - buffer), "%s=%s", options[i].name, options[i].value);
 
       ptr += strlen(ptr);
     }
@@ -450,19 +440,16 @@ list_group(ppd_file_t  *ppd,              /* I - PPD file */
 
         if ((coption = ppdFindCustomOption(ppd, option->keyword)) == NULL ||
            cupsArrayCount(coption->params) == 0)
-         snprintf(ptr, sizeof(buffer) - (ptr - buffer), " %sCustom",
-                  choice->marked ? "*" : "");
+         snprintf(ptr, sizeof(buffer) - (size_t)(ptr - buffer), " %sCustom", choice->marked ? "*" : "");
         else if (!_cups_strcasecmp(option->keyword, "PageSize") ||
                 !_cups_strcasecmp(option->keyword, "PageRegion"))
-         snprintf(ptr, sizeof(buffer) - (ptr - buffer),
-                  " %sCustom.WIDTHxHEIGHT", choice->marked ? "*" : "");
+         snprintf(ptr, sizeof(buffer) - (size_t)(ptr - buffer), " %sCustom.WIDTHxHEIGHT", choice->marked ? "*" : "");
         else
        {
          cparam = (ppd_cparam_t *)cupsArrayFirst(coption->params);
 
          if (cupsArrayCount(coption->params) == 1)
-           snprintf(ptr, sizeof(buffer) - (ptr - buffer), " %sCustom.%s",
-                    choice->marked ? "*" : "", types[cparam->type]);
+           snprintf(ptr, sizeof(buffer) - (size_t)(ptr - buffer), " %sCustom.%s", choice->marked ? "*" : "", types[cparam->type]);
          else
          {
            const char  *prefix;        /* Prefix string */
@@ -475,22 +462,21 @@ list_group(ppd_file_t  *ppd,              /* I - PPD file */
 
            while (cparam)
            {
-             snprintf(ptr, sizeof(buffer) - (ptr - buffer), "%s%s=%s", prefix,
-                      cparam->name, types[cparam->type]);
+             snprintf(ptr, sizeof(buffer) - (size_t)(ptr - buffer), "%s%s=%s", prefix, cparam->name, types[cparam->type]);
              cparam = (ppd_cparam_t *)cupsArrayNext(coption->params);
              prefix = " ";
              ptr += strlen(ptr);
            }
 
             if (ptr < (buffer + sizeof(buffer) - 1))
-             strlcpy(ptr, "}", sizeof(buffer) - (ptr - buffer));
+             strlcpy(ptr, "}", sizeof(buffer) - (size_t)(ptr - buffer));
          }
        }
       }
       else if (choice->marked)
-        snprintf(ptr, sizeof(buffer) - (ptr - buffer), " *%s", choice->choice);
+        snprintf(ptr, sizeof(buffer) - (size_t)(ptr - buffer), " *%s", choice->choice);
       else
-        snprintf(ptr, sizeof(buffer) - (ptr - buffer), " %s", choice->choice);
+        snprintf(ptr, sizeof(buffer) - (size_t)(ptr - buffer), " %s", choice->choice);
 
       ptr += strlen(ptr);
     }
@@ -561,5 +547,5 @@ usage(void)
 
 
 /*
- * End of "$Id: lpoptions.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: lpoptions.c 11558 2014-02-06 18:33:34Z msweet $".
  */
diff --git a/systemv/lppasswd.c b/systemv/lppasswd.c
deleted file mode 100644 (file)
index 2da667d..0000000
+++ /dev/null
@@ -1,489 +0,0 @@
-/*
- * "$Id: lppasswd.c 10996 2013-05-29 11:51:34Z msweet $"
- *
- *   MD5 password program for CUPS.
- *
- *   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()  - Add, change, or delete passwords from the MD5 password file.
- *   usage() - Show program usage.
- */
-
-/*
- * Include necessary headers...
- */
-
-#include <cups/cups-private.h>
-#include <cups/md5-private.h>
-#include <fcntl.h>
-#include <grp.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#ifndef WIN32
-#  include <unistd.h>
-#  include <signal.h>
-#endif /* !WIN32 */
-
-
-/*
- * Operations...
- */
-
-#define ADD    0
-#define CHANGE 1
-#define DELETE 2
-
-
-/*
- * Local functions...
- */
-
-static void    usage(FILE *fp) __attribute__((noreturn));
-
-
-/*
- * 'main()' - Add, change, or delete passwords from the MD5 password file.
- */
-
-int                                    /* O - Exit status */
-main(int  argc,                                /* I - Number of command-line arguments */
-     char *argv[])                     /* I - Command-line arguments */
-{
-  int          i;                      /* Looping var */
-  char         *opt;                   /* Option pointer */
-  const char   *username;              /* Pointer to username */
-  const char   *groupname;             /* Pointer to group name */
-  int          op;                     /* Operation (add, change, delete) */
-  const char   *passwd;                /* Password string */
-  FILE         *infile,                /* Input file */
-               *outfile;               /* Output file */
-  char         line[256],              /* Line from file */
-               userline[17],           /* User from line */
-               groupline[17],          /* Group from line */
-               md5line[33],            /* MD5-sum from line */
-               md5new[33];             /* New MD5 sum */
-  char         passwdmd5[1024],        /* passwd.md5 file */
-               passwdold[1024],        /* passwd.old file */
-               passwdnew[1024];        /* passwd.tmp file */
-  char         *newpass,               /* new password */
-               *oldpass;               /* old password */
-  int          flag;                   /* Password check flags... */
-  int          fd;                     /* Password file descriptor */
-  int          error;                  /* Write error */
-  _cups_globals_t *cg = _cupsGlobals();        /* Global data */
-  cups_lang_t  *lang;                  /* Language info */
-#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
-  struct sigaction action;             /* Signal action */
-#endif /* HAVE_SIGACTION && !HAVE_SIGSET*/
-
-
-  _cupsSetLocale(argv);
-  lang = cupsLangDefault();
-
- /*
-  * Check to see if stdin, stdout, and stderr are still open...
-  */
-
-  if (fcntl(0, F_GETFD, &i) ||
-      fcntl(1, F_GETFD, &i) ||
-      fcntl(2, F_GETFD, &i))
-  {
-   /*
-    * No, return exit status 2 and don't try to send any output since
-    * someone is trying to bypass the security on the server.
-    */
-
-    return (2);
-  }
-
- /*
-  * Find the server directory...
-  */
-
-  snprintf(passwdmd5, sizeof(passwdmd5), "%s/passwd.md5", cg->cups_serverroot);
-  snprintf(passwdold, sizeof(passwdold), "%s/passwd.old", cg->cups_serverroot);
-  snprintf(passwdnew, sizeof(passwdnew), "%s/passwd.new", cg->cups_serverroot);
-
- /*
-  * Find the default system group...
-  */
-
-  if (getgrnam(CUPS_DEFAULT_GROUP))
-    groupname = CUPS_DEFAULT_GROUP;
-  else
-    groupname = "unknown";
-
-  endgrent();
-
-  username = NULL;
-  op       = CHANGE;
-
- /*
-  * Parse command-line options...
-  */
-
-  for (i = 1; i < argc; i ++)
-    if (argv[i][0] == '-')
-      for (opt = argv[i] + 1; *opt; opt ++)
-        switch (*opt)
-       {
-         case 'a' : /* Add */
-             op = ADD;
-             break;
-         case 'x' : /* Delete */
-             op = DELETE;
-             break;
-         case 'g' : /* Group */
-             i ++;
-             if (i >= argc)
-               usage(stderr);
-
-              groupname = argv[i];
-             break;
-         case 'h' : /* Help */
-             usage(stdout);
-             break;
-         default : /* Bad option */
-             usage(stderr);
-             break;
-       }
-    else if (!username)
-      username = argv[i];
-    else
-      usage(stderr);
-
- /*
-  * See if we are trying to add or delete a password when we aren't logged in
-  * as root...
-  */
-
-  if (getuid() && getuid() != geteuid() && (op != CHANGE || username))
-  {
-    _cupsLangPuts(stderr,
-                  _("lppasswd: Only root can add or delete passwords."));
-    return (1);
-  }
-
- /*
-  * Fill in missing info...
-  */
-
-  if (!username)
-    username = cupsUser();
-
-  oldpass = newpass = NULL;
-
- /*
-  * Obtain old and new password _before_ locking the database
-  * to keep users from locking the file indefinitely.
-  */
-
-  if (op == CHANGE && getuid())
-  {
-    if ((passwd = cupsGetPassword(_("Enter old password:"))) == NULL)
-      return (1);
-
-    if ((oldpass = strdup(passwd)) == NULL)
-    {
-      _cupsLangPrintf(stderr,
-                      _("lppasswd: Unable to copy password string: %s"),
-                     strerror(errno));
-      return (1);
-    }
-  }
-
- /*
-  * Now get the new password, if necessary...
-  */
-
-  if (op != DELETE)
-  {
-    if ((passwd = cupsGetPassword(
-            _cupsLangString(lang, _("Enter password:")))) == NULL)
-      return (1);
-
-    if ((newpass = strdup(passwd)) == NULL)
-    {
-      _cupsLangPrintf(stderr,
-                      _("lppasswd: Unable to copy password string: %s"),
-                     strerror(errno));
-      return (1);
-    }
-
-    if ((passwd = cupsGetPassword(
-            _cupsLangString(lang, _("Enter password again:")))) == NULL)
-      return (1);
-
-    if (strcmp(passwd, newpass) != 0)
-    {
-      _cupsLangPuts(stderr,
-                    _("lppasswd: Sorry, passwords don't match."));
-      return (1);
-    }
-
-   /*
-    * Check that the password contains at least one letter and number.
-    */
-
-    flag = 0;
-
-    for (passwd = newpass; *passwd; passwd ++)
-      if (isdigit(*passwd & 255))
-       flag |= 1;
-      else if (isalpha(*passwd & 255))
-       flag |= 2;
-
-   /*
-    * Only allow passwords that are at least 6 chars, have a letter and
-    * a number, and don't contain the username.
-    */
-
-    if (strlen(newpass) < 6 || strstr(newpass, username) != NULL || flag != 3)
-    {
-      _cupsLangPuts(stderr, _("lppasswd: Sorry, password rejected."));
-      _cupsLangPuts(stderr, _("Your password must be at least 6 characters "
-                              "long, cannot contain your username, and must "
-                             "contain at least one letter and number."));
-      return (1);
-    }
-  }
-
- /*
-  * Ignore SIGHUP, SIGINT, SIGTERM, and SIGXFSZ (if defined) for the
-  * remainder of the time so that we won't end up with bogus password
-  * files...
-  */
-
-#ifndef WIN32
-#  if defined(HAVE_SIGSET)
-  sigset(SIGHUP, SIG_IGN);
-  sigset(SIGINT, SIG_IGN);
-  sigset(SIGTERM, SIG_IGN);
-#    ifdef SIGXFSZ
-  sigset(SIGXFSZ, SIG_IGN);
-#    endif /* SIGXFSZ */
-#  elif defined(HAVE_SIGACTION)
-  memset(&action, 0, sizeof(action));
-  action.sa_handler = SIG_IGN;
-
-  sigaction(SIGHUP, &action, NULL);
-  sigaction(SIGINT, &action, NULL);
-  sigaction(SIGTERM, &action, NULL);
-#    ifdef SIGXFSZ
-  sigaction(SIGXFSZ, &action, NULL);
-#    endif /* SIGXFSZ */
-#  else
-  signal(SIGHUP, SIG_IGN);
-  signal(SIGINT, SIG_IGN);
-  signal(SIGTERM, SIG_IGN);
-#    ifdef SIGXFSZ
-  signal(SIGXFSZ, SIG_IGN);
-#    endif /* SIGXFSZ */
-#  endif
-#endif /* !WIN32 */
-
- /*
-  * Open the output file.
-  */
-
-  if ((fd = open(passwdnew, O_WRONLY | O_CREAT | O_EXCL, 0400)) < 0)
-  {
-    if (errno == EEXIST)
-      _cupsLangPuts(stderr, _("lppasswd: Password file busy."));
-    else
-      _cupsLangPrintf(stderr, _("lppasswd: Unable to open password file: %s"),
-                     strerror(errno));
-
-    return (1);
-  }
-
-  if ((outfile = fdopen(fd, "w")) == NULL)
-  {
-    _cupsLangPrintf(stderr, _("lppasswd: Unable to open password file: %s"),
-                   strerror(errno));
-
-    unlink(passwdnew);
-
-    return (1);
-  }
-
-  setbuf(outfile, NULL);
-
- /*
-  * Open the existing password file and create a new one...
-  */
-
-  infile = fopen(passwdmd5, "r");
-  if (infile == NULL && errno != ENOENT && op != ADD)
-  {
-    _cupsLangPrintf(stderr, _("lppasswd: Unable to open password file: %s"),
-                   strerror(errno));
-
-    fclose(outfile);
-
-    unlink(passwdnew);
-
-    return (1);
-  }
-
- /*
-  * Read lines from the password file; the format is:
-  *
-  *   username:group:MD5-sum
-  */
-
-  error        = 0;
-  userline[0]  = '\0';
-  groupline[0] = '\0';
-  md5line[0]   = '\0';
-
-  if (infile)
-  {
-    while (fgets(line, sizeof(line), infile) != NULL)
-    {
-      if (sscanf(line, "%16[^:]:%16[^:]:%32s", userline, groupline, md5line) != 3)
-        continue;
-
-      if (strcmp(username, userline) == 0 &&
-          strcmp(groupname, groupline) == 0)
-       break;
-
-      if (fputs(line, outfile) == EOF)
-      {
-       _cupsLangPrintf(stderr,
-                       _("lppasswd: Unable to write to password file: %s"),
-                       strerror(errno));
-        error = 1;
-       break;
-      }
-    }
-
-    if (!error)
-    {
-      while (fgets(line, sizeof(line), infile) != NULL)
-       if (fputs(line, outfile) == EOF)
-       {
-         _cupsLangPrintf(stderr,
-                         _("lppasswd: Unable to write to password file: %s"),
-                         strerror(errno));
-         error = 1;
-         break;
-       }
-    }
-  }
-
-  if (op == CHANGE &&
-      (strcmp(username, userline) || strcmp(groupname, groupline)))
-  {
-    _cupsLangPrintf(stderr,
-                    _("lppasswd: user \"%s\" and group \"%s\" do not exist."),
-                   username, groupname);
-    error = 1;
-  }
-  else if (op != DELETE)
-  {
-    if (oldpass &&
-        strcmp(httpMD5(username, "CUPS", oldpass, md5new), md5line) != 0)
-    {
-      _cupsLangPuts(stderr, _("lppasswd: Sorry, password doesn't match."));
-      error = 1;
-    }
-    else
-    {
-      snprintf(line, sizeof(line), "%s:%s:%s\n", username, groupname,
-               httpMD5(username, "CUPS", newpass, md5new));
-      if (fputs(line, outfile) == EOF)
-      {
-       _cupsLangPrintf(stderr,
-                       _("lppasswd: Unable to write to password file: %s"),
-                       strerror(errno));
-        error = 1;
-      }
-    }
-  }
-
- /*
-  * Close the files...
-  */
-
-  if (infile)
-    fclose(infile);
-
-  if (fclose(outfile) == EOF)
-    error = 1;
-
- /*
-  * Error out gracefully as needed...
-  */
-
-  if (error)
-  {
-    _cupsLangPuts(stderr, _("lppasswd: Password file not updated."));
-
-    unlink(passwdnew);
-
-    return (1);
-  }
-
- /*
-  * Save old passwd file
-  */
-
-  unlink(passwdold);
-  if (link(passwdmd5, passwdold) && errno != ENOENT)
-  {
-    _cupsLangPrintf(stderr,
-                    _("lppasswd: failed to backup old password file: %s"),
-                   strerror(errno));
-    unlink(passwdnew);
-    return (1);
-  }
-
- /*
-  * Install new password file
-  */
-
-  if (rename(passwdnew, passwdmd5) < 0)
-  {
-    _cupsLangPrintf(stderr, _("lppasswd: failed to rename password file: %s"),
-                   strerror(errno));
-    unlink(passwdnew);
-    return (1);
-  }
-
-  return (0);
-}
-
-
-/*
- * 'usage()' - Show program usage.
- */
-
-static void
-usage(FILE *fp)                /* I - File to send usage to */
-{
-  if (getuid())
-    _cupsLangPuts(fp, _("Usage: lppasswd [-g groupname]"));
-  else
-    _cupsLangPuts(fp,
-                  _("Usage: lppasswd [-g groupname] [username]\n"
-                   "       lppasswd [-g groupname] -a [username]\n"
-                   "       lppasswd [-g groupname] -x [username]"));
-
-  exit(1);
-}
-
-
-/*
- * End of "$Id: lppasswd.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index 875929545617e376bf385b814c1d515112c9a58f..8190ba11b6188ff91e6be8e191e17fa41642a158 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: lpstat.c 11890 2014-05-22 13:59:21Z msweet $"
+ * "$Id: lpstat.c 12066 2014-07-30 18:30:44Z msweet $"
  *
  * "lpstat" command for CUPS.
  *
@@ -1214,52 +1214,6 @@ show_devices(const char  *printers,      /* I - Destinations */
 
       if (match_list(printers, printer))
       {
-#ifdef __osf__ /* Compaq/Digital like to do it their own way... */
-        char   scheme[HTTP_MAX_URI],   /* Components of printer URI */
-               username[HTTP_MAX_URI],
-               hostname[HTTP_MAX_URI],
-               resource[HTTP_MAX_URI];
-       int     port;
-
-
-        if (device == NULL)
-       {
-         httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme),
-                         username, sizeof(username), hostname,
-                         sizeof(hostname), &port, resource, sizeof(resource));
-          _cupsLangPrintf(stdout,
-                         _("Output for printer %s is sent to remote "
-                           "printer %s on %s"),
-                         printer, strrchr(resource, '/') + 1, hostname);
-        }
-        else if (!strncmp(device, "file:", 5))
-          _cupsLangPrintf(stdout,
-                         _("Output for printer %s is sent to %s"),
-                         printer, device + 5);
-        else
-          _cupsLangPrintf(stdout,
-                         _("Output for printer %s is sent to %s"),
-                         printer, device);
-
-        for (i = 0; i < num_dests; i ++)
-         if (!_cups_strcasecmp(printer, dests[i].name) && dests[i].instance)
-         {
-            if (device == NULL)
-              _cupsLangPrintf(stdout,
-                             _("Output for printer %s/%s is sent to "
-                               "remote printer %s on %s"),
-                             printer, dests[i].instance,
-                             strrchr(resource, '/') + 1, hostname);
-            else if (!strncmp(device, "file:", 5))
-              _cupsLangPrintf(stdout,
-                             _("Output for printer %s/%s is sent to %s"),
-                             printer, dests[i].instance, device + 5);
-            else
-              _cupsLangPrintf(stdout,
-                             _("Output for printer %s/%s is sent to %s"),
-                             printer, dests[i].instance, device);
-         }
-#else
         if (device == NULL)
           _cupsLangPrintf(stdout, _("device for %s: %s"),
                          printer, uri);
@@ -1271,6 +1225,7 @@ show_devices(const char  *printers,       /* I - Destinations */
                          printer, device);
 
         for (i = 0; i < num_dests; i ++)
+        {
          if (!_cups_strcasecmp(printer, dests[i].name) && dests[i].instance)
          {
             if (device == NULL)
@@ -1283,7 +1238,7 @@ show_devices(const char  *printers,       /* I - Destinations */
               _cupsLangPrintf(stdout, _("device for %s/%s: %s"),
                              printer, dests[i].instance, device);
          }
-#endif /* __osf__ */
+       }
       }
 
       if (attr == NULL)
@@ -1316,7 +1271,8 @@ show_jobs(const char *dests,              /* I - Destinations */
   const char   *dest,                  /* Pointer into job-printer-uri */
                *username,              /* Pointer to job-originating-user-name */
                *title,                 /* Pointer to job-name */
-               *message;               /* Pointer to job-printer-state-message */
+               *message,               /* Pointer to job-printer-state-message */
+               *time_at;               /* time-at-xxx attribute name to use */
   int          rank,                   /* Rank in queue */
                jobid,                  /* job-id */
                size;                   /* job-k-octets */
@@ -1332,7 +1288,8 @@ show_jobs(const char *dests,              /* I - Destinations */
                  "job-printer-state-message",
                  "job-printer-uri",
                  "job-state-reasons",
-                 "time-at-creation"
+                 "time-at-creation",
+                 "time-at-completed"
                };
 
 
@@ -1398,6 +1355,13 @@ show_jobs(const char *dests,             /* I - Destinations */
     * Loop through the job list and display them...
     */
 
+    if (!strcmp(which, "aborted") ||
+        !strcmp(which, "canceled") ||
+        !strcmp(which, "completed"))
+      time_at = "time-at-completed";
+    else
+      time_at = "time-at-creation";
+
     rank = -1;
 
     for (attr = response->attrs; attr != NULL; attr = attr->next)
@@ -1433,8 +1397,7 @@ show_jobs(const char *dests,              /* I - Destinations */
         else if (!strcmp(attr->name, "job-k-octets") &&
                 attr->value_tag == IPP_TAG_INTEGER)
          size = attr->values[0].integer;
-        else if (!strcmp(attr->name, "time-at-creation") &&
-                attr->value_tag == IPP_TAG_INTEGER)
+        else if (!strcmp(attr->name, time_at) && attr->value_tag == IPP_TAG_INTEGER)
          jobtime = attr->values[0].integer;
         else if (!strcmp(attr->name, "job-printer-state-message") &&
                 attr->value_tag == IPP_TAG_TEXT)
@@ -1503,11 +1466,9 @@ show_jobs(const char *dests,             /* I - Destinations */
            for (i = 0, aptr = alerts; i < reasons->num_values; i ++)
            {
              if (i)
-               snprintf(aptr, sizeof(alerts) - (aptr - alerts), " %s",
-                        reasons->values[i].string.text);
+               snprintf(aptr, sizeof(alerts) - (size_t)(aptr - alerts), " %s", reasons->values[i].string.text);
              else
-               strlcpy(alerts, reasons->values[i].string.text,
-                       sizeof(alerts));
+               strlcpy(alerts, reasons->values[i].string.text, sizeof(alerts));
 
              aptr += strlen(aptr);
            }
@@ -1787,7 +1748,7 @@ show_printers(const char  *printers,      /* I - Destinations */
                jobid = jobattr->values[0].integer;
               else if (!strcmp(jobattr->name, "job-state") &&
                       jobattr->value_tag == IPP_TAG_ENUM)
-               jobstate = jobattr->values[0].integer;
+               jobstate = (ipp_jstate_t)jobattr->values[0].integer;
            }
 
             if (jobstate != IPP_JOB_PROCESSING)
@@ -1851,11 +1812,9 @@ show_printers(const char  *printers,     /* I - Destinations */
            for (i = 0, aptr = alerts; i < reasons->num_values; i ++)
            {
              if (i)
-               snprintf(aptr, sizeof(alerts) - (aptr - alerts), " %s",
-                        reasons->values[i].string.text);
+               snprintf(aptr, sizeof(alerts) - (size_t)(aptr - alerts), " %s", reasons->values[i].string.text);
              else
-               strlcpy(alerts, reasons->values[i].string.text,
-                       sizeof(alerts));
+               strlcpy(alerts, reasons->values[i].string.text, sizeof(alerts));
 
              aptr += strlen(aptr);
            }
@@ -1977,11 +1936,9 @@ show_printers(const char  *printers,     /* I - Destinations */
                for (i = 0, aptr = alerts; i < reasons->num_values; i ++)
                {
                  if (i)
-                   snprintf(aptr, sizeof(alerts) - (aptr - alerts), " %s",
-                            reasons->values[i].string.text);
+                   snprintf(aptr, sizeof(alerts) - (size_t)(aptr - alerts), " %s", reasons->values[i].string.text);
                  else
-                   strlcpy(alerts, reasons->values[i].string.text,
-                           sizeof(alerts));
+                   strlcpy(alerts, reasons->values[i].string.text, sizeof(alerts));
 
                  aptr += strlen(aptr);
                }
@@ -2082,5 +2039,5 @@ show_scheduler(void)
 
 
 /*
- * End of "$Id: lpstat.c 11890 2014-05-22 13:59:21Z msweet $".
+ * End of "$Id: lpstat.c 12066 2014-07-30 18:30:44Z msweet $".
  */
index 736f1b49190c6be23f6cab828b5e6b3ca569a752..77732b718c5a98c429ad8f22db91a84a4ff18e7a 100644 (file)
@@ -1,16 +1,16 @@
 #
-# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
+# "$Id: Makefile 11928 2014-06-13 00:08:32Z msweet $"
 #
-#   Template makefile for CUPS.
+# Template makefile for CUPS.
 #
-#   Copyright 2007-2011 by Apple Inc.
-#   Copyright 1993-2007 by Easy Software Products.
+# Copyright 2007-2014 by Apple Inc.
+# Copyright 1993-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/".
 #
 
 include ../Makedefs
@@ -67,13 +67,13 @@ FILES       =       \
                printer.tmpl \
                printer-accept.tmpl \
                printer-added.tmpl \
+               printer-cancel-jobs.tmpl \
                printer-configured.tmpl \
                printer-confirm.tmpl \
                printer-default.tmpl \
                printer-deleted.tmpl \
                printer-jobs-header.tmpl \
                printer-modified.tmpl \
-               printer-purge.tmpl \
                printer-reject.tmpl \
                printer-start.tmpl \
                printer-stop.tmpl \
@@ -200,5 +200,5 @@ uninstall-langbundle:
 
 
 #
-# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
+# End of "$Id: Makefile 11928 2014-06-13 00:08:32Z msweet $".
 #
index eaf52d73dcc8f3ffdfa16d96f52a68ab2df80f4d..3deaf26c000b43c76bf5e976d4394882660e1767 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Add Class</H2>
 
 <FORM METHOD="POST" ACTION="/admin">
@@ -37,4 +35,3 @@
 </TABLE>
 
 </FORM>
-</DIV>
\ No newline at end of file
index 361958b67474c56685100ac5ea3ad048702cfb4e..14d4eb6f1a42fa756e5b830e1bd3dd7579d3dc31 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Add Printer</H2>
 
 <FORM METHOD="POST" ACTION="/admin">
@@ -44,4 +42,3 @@ Share This Printer</TD>
 </TABLE>
 
 </FORM>
-</DIV>
\ No newline at end of file
index ee6b5af9daeb6fd6896a29d26270c11b07c477e8..101f960173b2371db02e542fffb045fef47f4f61 100644 (file)
-<TABLE CLASS="indent" SUMMARY="Administration Tasks">
-<TR><TD VALIGN="TOP">
-
-<H2 CLASS="title">Printers</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="Add Printer"></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="Find New Printers"></FORM>
-<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Manage Printers"></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="Export Printers to 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="Add Class"></FORM>
-<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Manage Classes"></FORM>
-</P>
-
-<H2 CLASS="title">Jobs</H2>
-
-<P>
-<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Manage Jobs"></FORM>
-</P>
-
-</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
-
-<H2 CLASS="title">Server</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="Edit Configuration File"></FORM>
-<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="View Access Log"></FORM>
-<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="View Error Log"></FORM>
-<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="View Page Log"></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>Server Settings\:</B></P>
-
-<P><A HREF="/admin/">Advanced <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}> Share printers connected to this system<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Max 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}> Allow printing from the Internet<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Advertise web interface<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Allow remote administration<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Use Kerberos authentication (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Allow users to cancel any job (not just their own)<BR>
-<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Preserve job history<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximum jobs (0 for no limit)\:
-<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retain Metadata\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retain Documents\:
-<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;Max log file size\:
-<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
-
-:<P><B>Server Settings:</B></P>
-
-<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Advanced <SMALL>&#x25b6;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Share printers connected to this system<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Allow printing from the Internet<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Allow remote administration<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Use Kerberos authentication (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Allow users to cancel any job (not just their own)<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Save debugging information for troubleshooting</P>
-
-}
-<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Change Settings"></P>
-
-</FORM>}
-
-</TD></TR>
-</TABLE>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">RSS Subscriptions</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="Add RSS Subscription"></FORM>
-</P>
-
-</DIV>
-
-{notify_subscription_id?<TABLE CLASS="list" SUMMARY="RSS Subscriptions">
-<THEAD><TR><TH>Name</TH><TH>Events</TH><TH>Queue Name</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="Cancel RSS Subscription"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:All Queues}</TD></TR>}
-</TBODY>
-</TABLE>:}
+<div class="row">
+  <div class="halves">
+    <H2 CLASS="title">Printers</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="Add Printer"></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="Find New Printers"></FORM>
+    <FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Manage Printers"></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="Export Printers to 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="Add Class"></FORM>
+    <FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Manage Classes"></FORM>
+    </P>
+
+    <H2 CLASS="title">Jobs</H2>
+
+    <P>
+    <FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Manage Jobs"></FORM>
+    </P>
+  </div>
+  <div class="halves">
+    <H2 CLASS="title">Server</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="Edit Configuration File"></FORM>
+    <FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="View Access Log"></FORM>
+    <FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="View Error Log"></FORM>
+    <FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="View Page Log"></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>Server Settings\:</B></P>
+
+    <P><A HREF="/admin/">Advanced <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}> Share printers connected to this system<BR>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Max 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}> Allow printing from the Internet<BR>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Advertise web interface<BR>
+    <INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Allow remote administration<BR>
+    {have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Use Kerberos authentication (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
+    <INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Allow users to cancel any job (not just their own)<BR>
+    <INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Preserve job history<BR>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximum jobs (0 for no limit)\:
+    <INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retain Metadata\:
+    <INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retain Documents\:
+    <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;Max log file size\:
+    <INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
+
+    :<P><B>Server Settings:</B></P>
+
+    <P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Advanced <SMALL>&#x25b6;</SMALL></A><BR>
+    <INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
+    <INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Share printers connected to this system<BR>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Allow printing from the Internet<BR>
+    <INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Allow remote administration<BR>
+    {have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Use Kerberos authentication (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
+    <INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Allow users to cancel any job (not just their own)<BR>
+    <INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Save debugging information for troubleshooting</P>
+
+    }
+    <P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Change Settings"></P>
+
+    </FORM>}
+  </div>
+</div>
+
+<div class="row">
+  <H2 CLASS="title">RSS Subscriptions</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="Add RSS Subscription"></FORM>
+  </P>
+
+  {notify_subscription_id?<TABLE CLASS="list" SUMMARY="RSS Subscriptions">
+  <THEAD><TR><TH>Name</TH><TH>Events</TH><TH>Queue Name</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="Cancel RSS Subscription"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:All Queues}</TD></TR>}
+  </TBODY>
+  </TABLE>:}
+</div>
\ No newline at end of file
diff --git a/templates/ca/add-class.tmpl b/templates/ca/add-class.tmpl
deleted file mode 100644 (file)
index 8af7a7d..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Afegeix una classe</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nom:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Pot contenir qualsevol car&agrave;cter excepte &laquo;/&raquo;, &laquo;#&raquo;, i espai)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Descripci&oacute;:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Una descripci&oacute; com ara &laquo;HP LaserJet de doble cara&raquo;)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Ubicaci&oacute;:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Una ubicaci&oacute; com ara  &laquo;Laboratori 1&raquo;)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Membres:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Afegeix"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ca/add-printer.tmpl b/templates/ca/add-printer.tmpl
deleted file mode 100644 (file)
index f266a0b..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Afegir una impressora</H2>
-
-<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="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
-{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nom:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
-<SMALL>(Pot contenir qualsevol car&agrave;cter excepte &laquo;/&raquo;, &laquo;#&raquo;, i espai)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Descripci&oacute;:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_INFO}"><BR>
-<SMALL>(Una descripci&oacute; com ara &laquo;HP LaserJet de doble cara&raquo;)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Ubicaci&oacute;:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_LOCATION}"><BR>
-<SMALL>(Una ubicaci&oacute; com ara  &laquo;Laboratori 1&raquo;)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Connexi&oacute;:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Compartir:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Comparteix aquesta impressora</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ca/add-rss-subscription.tmpl b/templates/ca/add-rss-subscription.tmpl
deleted file mode 100644 (file)
index b195ac6..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription">
-
-<H2 CLASS="title">Afegir una subscripci&oacute; RSS</H2>
-
-<TABLE SUMMARY="Add RSS Subscription form">
-<TR>
-<TH CLASS="label">Nom:</TH>
-<TD COLSPAN="5"><INPUT TYPE="TEXT" NAME="SUBSCRIPTION_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?SUBSCRIPTION_NAME}"><BR>
-<SMALL>(Pot contenir qualsevol car&agrave;cter excepte espai &laquo;/&raquo;, &laquo;?&raquo; i &laquo;#&raquo;)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Cua:</TH>
-<TD COLSPAN="5"><SELECT NAME="PRINTER_URI" SIZE="10"><OPTION VALUE="#ALL#"{?PRINTER_URI=#ALL#? SELECTED:}>Totes</OPTION>{[printer_name]<OPTION VALUE="{printer_uri_supported}"{?PRINTER_URI={printer_uri_supported}? SELECTED:}>{printer_name}</OPTION>}</SELECT></TD>
-</TR>
-<TR VALIGN="TOP">
-<TH CLASS="label">Esdeveniments:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CREATED" {?EVENT_JOB_CREATED}>Creaci&oacute; de tasca<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_COMPLETED" {?EVENT_JOB_COMPLETED}>Tasca completada<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_STOPPED" {?EVENT_JOB_STOPPED}>Tasca aturada<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>Modificaci&oacute; de les opcions de la tasca</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_STOPPED" {?EVENT_PRINTER_STOPPED}>Cua aturada<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_ADDED" {?EVENT_PRINTER_ADDED}>Cua afegida<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_MODIFIED" {?EVENT_PRINTER_MODIFIED}>Modificaci&oacute; de la cua<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_DELETED" {?EVENT_PRINTER_DELETED}>Eliminaci&oacute; de la cua</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STARTED" {?EVENT_SERVER_STARTED}>Inicialitzaci&oacute; del servidor<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STOPPED" {?EVENT_SERVER_STOPPED}>Aturada del servidor<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_RESTARTED" {?EVENT_SERVER_RESTARTED}>Servidor iniciat de nou<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_AUDIT" {?EVENT_SERVER_AUDIT}>Auditoria de seguretat del servidor</TD>
-</TR>
-<TR>
-<TH CLASS="label">Nombre m&agrave;xims d'esdeveniments al canal:</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="Afegeix"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/ca/admin.tmpl b/templates/ca/admin.tmpl
deleted file mode 100644 (file)
index ea3fc1e..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-<TABLE CLASS="indent" SUMMARY="Administration Tasks">
-<TR><TD VALIGN="TOP">
-
-<H2 CLASS="title">Impressores</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="Afegeix una 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="Busca m&eacute;s impressores"></FORM>
-<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Gestiona les impressores"></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="Exporta les impressores al 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="Afegeix una classe"></FORM>
-<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Gestiona les classes"></FORM>
-</P>
-
-<H2 CLASS="title">Tasques</H2>
-
-<P>
-<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Gestiona les tasques"></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="Edita el fitxer de configuraci&oacute;"></FORM>
-<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Mostra el registre d'acc&eacute;s"></FORM>
-<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Mostra el registre d'errors"></FORM>
-<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Mostra la p&agrave;gina de registres"></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>Configuraci&oacute; del servidor\:</B></P>
-
-<P><A HREF="/admin/">Avan&ccedil;at <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}> Comparteix les impressores connectades a aquest sistema<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Nombre m&agrave;xim de 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}> Permet imprimir des d'Internet<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Anuncia la interf&iacute;cie web<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Permet l'administraci&oacute; remota<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Fes servir l'autenticaci&oacute; Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">PMF</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Permet als usuaris cancel&middot;lar qualsevol tasca (no nom&eacute;s les pr&ograve;pies)<BR>
-<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Conserva l'historial de tasques<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Nombre màxim de tasques (0 per ilimitat)\:
-<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Conserva les metadades\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Conserva els documents\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Desa la informaci&oacute; de depuraci&oacute; per la resoluci&oacute; de problemes<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mida m&agrave;xima de fitxer de registre\:
-<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
-
-:<P><B>Configuraci&oacute; del servidor:</B></P>
-
-<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Avan&ccedil;at <SMALL>&#x25b6;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Comparteix les impressores connectades a aquest sistema<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Permet imprimir des d'Internet<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Permet l'administraci&oacute; remota<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Fes servir l'autenticaci&oacute; Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">PMF</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Permet als usuaris cancel&middot;lar qualsevol tasca (no nom&eacute;s les pr&ograve;pies)<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Desa la informaci&oacute; de depuraci&oacute; per la resoluci&oacute; de problemes<BR>
-
-}
-<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Envia els canvis"></P>
-
-</FORM>}
-
-</TD></TR>
-</TABLE>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Subscripcions 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="Afegeix una subscripci&oacute; RSS"></FORM>
-</P>
-
-</DIV>
-
-{notify_subscription_id?<TABLE CLASS="list" SUMMARY="RSS Subscriptions">
-<THEAD><TR><TH>Nom</TH><TH>Esdeveniments</TH><TH>Nom de la cua</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="Cancel&middot;la la subscripci&oacute; RSS"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:All Queues}</TD></TR>}
-</TBODY>
-</TABLE>:}
diff --git a/templates/ca/choose-device.tmpl b/templates/ca/choose-device.tmpl
deleted file mode 100644 (file)
index a28cc92..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifica {printer_name}:Add Printer}</H2>
-
-{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">Connexi&oacute; actual\:</TH>
-<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
-{current_device_uri}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Impressores locals\:</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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}}
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Impressores de xarxa descobertes\:</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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}:}}
-</TD>
-</TR>
-<TR>
-<TR>
-<TH CLASS="label">Altres impressores de xarxa\:</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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-}:}}
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-</TABLE>
-
-</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> Buscant impressores...</P>}
-
-</DIV>
diff --git a/templates/ca/choose-make.tmpl b/templates/ca/choose-make.tmpl
deleted file mode 100644 (file)
index 01bc654..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifica {printer_name}:Add Printer}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<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}">:}
-<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}">
-
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Nom:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Descripci&oacute;:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Ubicaci&oacute;:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Connecci&oacute;:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Compartida:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?Do Not:{?printer_is_shared=0?Do Not:}} Comparteix aquesta impressora</TD>
-</TR>
-<TR>
-<TH CLASS="label">Fabricant:</TH>
-<TD>
-<SELECT NAME="PPD_MAKE" SIZE="10">
-{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>&nbsp;</TD>
-</TR>
-<TR>
-<TH CLASS="label">O indica un fitxer PPD:</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:Modifica la impressora}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ca/choose-model.tmpl b/templates/ca/choose-model.tmpl
deleted file mode 100644 (file)
index d2adeb8..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifica {printer_name}:Add Printer}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<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}">:}
-<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}">
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Nom:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Descripci&oacute;:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Ubicaci&oacute;:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Connecci&oacute;:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Compartida:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?Do Not:{?printer_is_shared=0?Do Not:}} Comparteix aquesta impressora</TD>
-</TR>
-<TR>
-<TH CLASS="label">Fabricant:</TH>
-<TD>{PPD_MAKE} <INPUT TYPE="SUBMIT" NAME="SELECT_MAKE" VALUE="Seleccioneu un altre fabricant"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Model:</TH>
-<TD>
-<SELECT NAME="PPD_NAME" SIZE="10">
-{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Current Driver - {current_make_and_model}</OPTION>:}
-{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
-}</SELECT>
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">O indica un fitxer PPD:</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:Modifica la impressora}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ca/choose-serial.tmpl b/templates/ca/choose-serial.tmpl
deleted file mode 100644 (file)
index e86f5a8..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifica {printer_name}:Add Printer}</H2>
-
-<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>
-<TR>
-<TH CLASS="label">Connexi&oacute;:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Velocitat:</TH>
-<TD><SELECT NAME="BAUDRATE">
-{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Paritat:</TH>
-<TD><SELECT NAME="PARITY">
-<OPTION VALUE="none" {?parity=none?SELECTED:}>Cap
-<OPTION VALUE="even" {?parity=even?SELECTED:}>Parell
-<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Senar
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Bits de dades:</TH>
-<TD><SELECT NAME="BITS">
-<OPTION {?bits=8?SELECTED:}>8
-<OPTION {?bits=7?SELECTED:}>7
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Control de flux:</TH>
-<TD><SELECT NAME="FLOW">
-<OPTION VALUE="none" {?flow=none?SELECTED:}>Cap
-<OPTION VALUE="soft" {?flow=soft?SELECTED:}>XON/XOFF (Programari)
-<OPTION VALUE="hard" {?flow=hard?SELECTED:}>RTS/CTS (Maquinari)
-<OPTION VALUE="dtrdsr" {?flow=dtrdsr?SELECTED:}>DTR/DSR (Maquinari)
-</SELECT></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ca/choose-uri.tmpl b/templates/ca/choose-uri.tmpl
deleted file mode 100644 (file)
index 630b1d3..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifica {printer_name}:Add Printer}</H2>
-
-<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}">:}
-<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Connexi&oacute;:</TH>
-<TD><INPUT TYPE="URL" SIZE="60" MAXLENGTH="1023" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>Exemples:
-<PRE>
-    http://hostname:631/ipp/
-    http://hostname:631/ipp/port1
-
-    ipp://hostname/ipp/
-    ipp://hostname/ipp/port1
-
-    lpd://hostname/queue
-
-    socket://hostname
-    socket://hostname:9100
-</PRE>
-
-<P>Llegiu <A HREF="/help/network.html" TARGET="_blank">"Impressores de xarxa"</A> per saber quin URI heu de fer servir amb la vostre impressora.</P>
-
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ca/class-added.tmpl b/templates/ca/class-added.tmpl
deleted file mode 100644 (file)
index 8e8347c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Afegeix una classe</H2>
-
-<P>La classe <A HREF="/classes/{printer_name}">{printer_name}</A> s'ha afegit correctament.
-
-</DIV>
diff --git a/templates/ca/class-confirm.tmpl b/templates/ca/class-confirm.tmpl
deleted file mode 100644 (file)
index 905ac6f..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Esborra la classe {printer_name}</H2>
-
-<P><B>Av&iacute;s:</B> Esteu segur que voleu esborrar la 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="Esborra la classe"></FORM></P>
-
-</DIV>
diff --git a/templates/ca/class-deleted.tmpl b/templates/ca/class-deleted.tmpl
deleted file mode 100644 (file)
index 3f0035f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Esborra la classe {printer_name}</H2>
-
-<P>La classe {printer_name} s'ha esborrat correctament.
-
-</DIV>
diff --git a/templates/ca/class-jobs-header.tmpl b/templates/ca/class-jobs-header.tmpl
deleted file mode 100644 (file)
index 90e640e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Tasques</H3>
-</DIV>
diff --git a/templates/ca/class-modified.tmpl b/templates/ca/class-modified.tmpl
deleted file mode 100644 (file)
index 6152ffa..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifica la classe {printer_name}</H2>
-
-<P>La classe <A HREF="/classes/{printer_name}">{printer_name}</A> s'ha modificat correctament.
-
-</DIV>
diff --git a/templates/ca/class.tmpl b/templates/ca/class.tmpl
deleted file mode 100644 (file)
index 6b39168..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?Inactiva:{printer_state=4?Processing:Paused}},
-{printer_is_accepting_jobs=0?No accepta tasques:Accepta tasques},
-{server_is_sharing_printers=0?No:{printer_is_shared=0?Not:}} Compartida{default_name={printer_name}?, Servidor per defecte:})</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="">Manteniment</OPTION>
-<OPTION VALUE="print-test-page">Imprimeix una p&agrave;gina de prova</OPTION>
-{printer_state=5?<OPTION VALUE="start-class">Resume Class</OPTION>:<OPTION VALUE="stop-class">Pausa la classe</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Accepta Tasques</OPTION>:<OPTION VALUE="reject-jobs">No acceptis tasques</OPTION>}
-<OPTION VALUE="move-jobs">Mou totes les tasques</OPTION>
-<OPTION VALUE="purge-jobs">Cancel&middot;a totes les tasques</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<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="">Administraci&oacute;</OPTION>
-<OPTION VALUE="modify-class">Modifica la classe</OPTION>
-<OPTION VALUE="delete-class">Esborra la classe</OPTION>
-<OPTION VALUE="set-class-options">Aplica les opcions per defecte</OPTION>
-<OPTION VALUE="set-as-default">Configura com a servidor per defecte</OPTION>
-<OPTION VALUE="set-allowed-users">Gestiona els permisos dels usuaris</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Descripci&oacute;:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Ubicaci&oacute:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Membres:</TH><TD>{?member_uris=?None:{member_uris}}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Per defecte:</TH><TD>plantilles={job_sheets_default}
-mitj&agrave;={media_default?{media_default}:unknown}
-{sides_default?laterals={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
diff --git a/templates/ca/classes-header.tmpl b/templates/ca/classes-header.tmpl
deleted file mode 100644 (file)
index 47ad5ce..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?No hi ha cap classe:Es mostr{total=1?a:en} {#printer_name} classe{total=1?:s} de {total}}.</P>
diff --git a/templates/ca/classes.tmpl b/templates/ca/classes.tmpl
deleted file mode 100644 (file)
index bb5acf5..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{#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> Nom de la cua <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nom de la cua <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Descripci&oacute;</TH><TH>Ubicaci&oacute;</TH><TH>Membres</TH><TH>Estat</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=?None:{member_uris}}</TD><TD>{printer_state=3?Idle:{printer_state=4?Processing:Paused}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/ca/command.tmpl b/templates/ca/command.tmpl
deleted file mode 100644 (file)
index 5cfd89f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{title} a {printer_name}</H2>
-
-<P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
-ALIGN="ABSMIDDLE" ALT="Busy Indicator"> }Comanda de tasca de la impressora
-{job_state=3?pendent:{job_state=4?pausat:
-{job_state=5?processant:{job_state=6?aturat:
-{job_state=7?cancel·lat:{job_state=8?abortat:completat}}}}}}{job_state=9?:{job_printer_state_message?,
-<EM>"{job_printer_state_message}"</EM>:}}</P>
-
-</DIV>
diff --git a/templates/ca/edit-config.tmpl b/templates/ca/edit-config.tmpl
deleted file mode 100644 (file)
index e6e08f1..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<SCRIPT TYPE="text/javascript">
-function reset_config()
-{
-  document.cups.CUPSDCONF.value = "{?cupsdconf_default}";
-}
-</SCRIPT>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Edita el fitxer de configuraci&oacute;</H2>
-
-<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-
-<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
-
-<P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="Desa els canvis">
-<INPUT TYPE="BUTTON" VALUE="Fes servir el fitxer de configuaci&oacute; per defecte"
-onClick="reset_config();"></P>
-
-</FORM>
-
-</DIV>
diff --git a/templates/ca/error-op.tmpl b/templates/ca/error-op.tmpl
deleted file mode 100644 (file)
index 064e8b4..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} Error</H2>
-
-<P>Error:</P>
-
-<BLOCKQUOTE>Operaci&oacute; desconeguda "{op}"!</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/ca/error.tmpl b/templates/ca/error.tmpl
deleted file mode 100644 (file)
index f04f03a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} Error</H2>
-
-<P>{?message?{message}:Error}</P>
-
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/ca/header.tmpl.in b/templates/ca/header.tmpl.in
deleted file mode 100644 (file)
index 02cf580..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<!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;Inici&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;Administraci&oacute;&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;en&nbsp;l&iacute;nia&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;Tasques&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;Impressores&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-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>
-<TR><TD COLSPAN="9">&nbsp;</TD></TR>
-</TABLE>
-<DIV ID="body">
diff --git a/templates/ca/help-header.tmpl b/templates/ca/help-header.tmpl
deleted file mode 100644 (file)
index 54f2d22..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<DIV CLASS="indent">
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
-{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
-
-<P ALIGN="CENTER"><B>Cerca a
-{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:tots els documents}}:</B> <INPUT
-TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER=""
-AUTOSAVE="org.cups.help" RESULTS="20">
-<INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="Cerca">
-<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Esborra"></P>
-
-</FORM>
-
-<!-- Bookmarks -->
-<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Contents">
-<TR><TD>
-
-<H3 CLASS="title">Documents d'ajuda en l&iacute;nia</H3>
-
-<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Tots els documents</A></P>
-<HR>
-
-{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
-}
-</TD></TR>
-</TABLE></DIV>
-
-{QUERY?<P>Resultats de la cerca a {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:tots els documents}}\:</P>
-{QTEXT?<UL>
-{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (in <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
-{QTEXT?</UL>:}
-:<P>No s'ha trobat cap coincid&egrave;ncia.</P>}
-<HR NOSHADE>:}
-{HELPTITLE?<H1>{HELPTITLE}</H1>
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Mostra una versi&oacute; per imprimir"></FORM>:
-
-<H1>Ajuda en l&iacute;nia</H1>
-
-<P>Aquesta &eacute;s la interf&iacute;cie d'ajuda en l&iacute;nia de CUPS. 
-Introdu&iuml;u les paraules que vulgueu cercar aqu&iacute; dalt o feu clic als 
-enlla&ccedil;os de la documentaci&oacute; per mostrar la informaci&oacute; de
-l'ajuda en l&iacute;nia.</P>
-
-<P>Si sou nou a CUPS, llegiu la p&agrave;gina &laquo;<a
-href="/help/overview.html">Descripci&oacute; general de CUPS</a>&raquo;. Els 
-usuaris veterans haurien de llegir la p&agrave;gina &laquo;<a 
-href="/help/whatsnew.html">Que hi ha de nou a CUPS 1.6</a>&raquo;.</P>
-
-<P>La <A HREF="http://www.cups.org/">p&agrave;gina web de CUPS</A> tamb&eacute;
-dona cont&eacute; molts recursos que inclouen f&ograve;rums, respostes a les preguntes m&eacute;s
-freq&uuml;ents, i un formulari per enviar informes d'errors i demanar noves 
-caracter&iacute;stiques.</P>}
diff --git a/templates/ca/help-printable.tmpl b/templates/ca/help-printable.tmpl
deleted file mode 100644 (file)
index 2463c16..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<!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/ca/help-trailer.tmpl b/templates/ca/help-trailer.tmpl
deleted file mode 100644 (file)
index 4c1ebed..0000000
+++ /dev/null
@@ -1 +0,0 @@
-</DIV>
diff --git a/templates/ca/job-cancel.tmpl b/templates/ca/job-cancel.tmpl
deleted file mode 100644 (file)
index a53ca2f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Cancel&middot;la la tasca {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La tasca {job_id}</A> s'ha cancel&middot;lat.
-
-</DIV>
diff --git a/templates/ca/job-hold.tmpl b/templates/ca/job-hold.tmpl
deleted file mode 100644 (file)
index e89b97f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Pausa la tasca {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La tasca {job_id}</A> s'ha posat en pausa.
-
-</DIV>
diff --git a/templates/ca/job-move.tmpl b/templates/ca/job-move.tmpl
deleted file mode 100644 (file)
index 1bca282..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<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}">
-{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
-
-<H2 CLASS="title">{job_id?Mou la tasca {job_id}:Mou totes les tasques}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nova destinaci&oacute;:</TH>
-<TD>
-<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
-{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{job_id?Mou la tasca:Mou les tasques}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-
-</DIV>
diff --git a/templates/ca/job-moved.tmpl b/templates/ca/job-moved.tmpl
deleted file mode 100644 (file)
index 1e538f9..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{job_id?Mou la tasca {job_id}:Mou totes les tasques}</H2>
-
-<P>{job_id?<A HREF="/jobs/{job_id}">La tasca s'ha {job_id}</A>:Totes les tasques s'han} mogut a
-<A HREF="/{is_class?classes:printers}/{job_printer_name}">{job_printer_name}</A>.</P>
-
-</DIV>
diff --git a/templates/ca/job-release.tmpl b/templates/ca/job-release.tmpl
deleted file mode 100644 (file)
index db13e1d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Allibera la tasca {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La tasca {job_id}</A> s'ha alliberat.
-
-</DIV>
diff --git a/templates/ca/job-restart.tmpl b/templates/ca/job-restart.tmpl
deleted file mode 100644 (file)
index d40c1c2..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Torna a imprimir la tasca {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La tasca {job_id}</A> s'ha tornat a imprimir.
-
-</DIV>
diff --git a/templates/ca/jobs-header.tmpl b/templates/ca/jobs-header.tmpl
deleted file mode 100644 (file)
index 3f785d5..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Mostra les tasques actives"></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="Mostra les tasques completades"></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="Mostra totes les tasques"></FORM>}</DIV>
-
-<P ALIGN="CENTER">{total=0?No hi ha cap tasca:Es mostren {#job_id} tas{total=1?ca:ques} de {total} {?which_jobs=?active:{which_jobs=all?:completed}}}.</P>
diff --git a/templates/ca/jobs.tmpl b/templates/ca/jobs.tmpl
deleted file mode 100644 (file)
index 2ec88e1..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-{#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>Nom</TH><TH>Usuari</TH><TH>Mida</TH><TH>P&agrave;gines</TH><TH>Estat</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=?Desconegut:{job_name}}&nbsp;</TD>
-<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?Desconegudes:{?job_media_sheets_completed}}&nbsp;</TD>
-<TD>{job_state=3?pendent des de<BR>{time_at_creation}:{job_state=4?pausada des de<BR>{time_at_creation}:
-{job_state=5?processant des de<BR>{time_at_processing}:{job_state=6?aturada:
-{job_state=7?cancel&middot;lada el<BR>{time_at_completed}:{job_state=8?avortada:completada el<BR>{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="Torna a imprimir"></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="Allibera"></FORM>:}
-{job_state=3?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-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="Pausa"></FORM>:}
-{job_state<7?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-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="Cancel&middot;la"></FORM>
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="move-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="SUBMIT" VALUE="Mou"></FORM>:}
-&nbsp;</TD>
-</TR>
-}
-</TBODY>
-</TABLE>
-}
diff --git a/templates/ca/list-available-printers.tmpl b/templates/ca/list-available-printers.tmpl
deleted file mode 100644 (file)
index b771b5b..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Impressores disponibles</H2>
-
-{#device_uri=0?<P>No s'ha trobat cap impressora.</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="Afegeix aquesta impressora"></FORM>
-{device_make_and_model} ({device_info})</LI>
-}</UL>}
-
-</DIV>
diff --git a/templates/ca/modify-class.tmpl b/templates/ca/modify-class.tmpl
deleted file mode 100644 (file)
index 26a6284..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifica la classe {printer_name}</H2>
-
-<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}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Descripci&oacute;:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Ubicaci&oacute;:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Membres:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Modifica la classe"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ca/modify-printer.tmpl b/templates/ca/modify-printer.tmpl
deleted file mode 100644 (file)
index 3843016..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifica {printer_name}</H2>
-
-<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="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="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Descripci&oacute;:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Una descripci&oacute; com ara &laquo;HP LaserJet de doble cara&raquo;)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Ubicaci&oacute;:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Una ubicaci&oacute; com ara  &laquo;Laboratori 1&raquo;)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Connexi&oacute;:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Compartir:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Comparteix aquesta impressora</TD>
-</TR>
-<TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ca/norestart.tmpl b/templates/ca/norestart.tmpl
deleted file mode 100644 (file)
index 5cdb7c4..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Canvis en la configuraci&oacute;</H2>
-
-<P>El servidor no s'ha tornat a iniciar per que no hi ha canvis
-a la configuraci&oacute;...</P>
-
-</DIV>
diff --git a/templates/ca/option-boolean.tmpl b/templates/ca/option-boolean.tmpl
deleted file mode 100644 (file)
index e832ee1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD>
-{[choices]<INPUT TYPE="RADIO" NAME="{keyword-1}" {choices={defchoice-1}?CHECKED:} VALUE="{choices}">{text}}
-</TD>
-</TR>
diff --git a/templates/ca/option-conflict.tmpl b/templates/ca/option-conflict.tmpl
deleted file mode 100644 (file)
index 59b63e9..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<P><B>Error:</B> Les seg&uuml;ents opcions entren en conflicte:</P>
-
-<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
-}</UL>
-
-<P>Canvieu algunes de les opcions per resoldre els conflictes.</P>
diff --git a/templates/ca/option-header.tmpl b/templates/ca/option-header.tmpl
deleted file mode 100644 (file)
index 464726a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="tab" ID="{group_id}">
-
-<H3 ALIGN="CENTER">{group}</H3>
-
-<TABLE WIDTH="100%">
diff --git a/templates/ca/option-pickmany.tmpl b/templates/ca/option-pickmany.tmpl
deleted file mode 100644 (file)
index 0da75e5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT></TD>
-</TR>
diff --git a/templates/ca/option-pickone.tmpl b/templates/ca/option-pickone.tmpl
deleted file mode 100644 (file)
index 1b3c271..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" ID="select-{keyword}" ONCHANGE="update_paramtable('{keyword}')">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT>
-{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
-<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
-<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Punts</OPTION>
-<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Mil&middot;l&iacute;metres</OPTION>
-<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Cent&iacute;metres</OPTION>
-<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Polzades</OPTION>
-<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Peus</OPTION>
-<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Metres</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
-}</TABLE>
-</TD>:}
-</TR>
diff --git a/templates/ca/option-trailer.tmpl b/templates/ca/option-trailer.tmpl
deleted file mode 100644 (file)
index 11c4011..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-</TABLE>
-
-<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="Configura els par&agrave;metres per defecte"></P>
-
-</DIV>
diff --git a/templates/ca/pager.tmpl b/templates/ca/pager.tmpl
deleted file mode 100644 (file)
index ab134f1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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; 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="Seg&uuml;ent &#x25b6;"></FORM>:&nbsp;}</TD>
-</TR>
-</TABLE>
diff --git a/templates/ca/printer-accept.tmpl b/templates/ca/printer-accept.tmpl
deleted file mode 100644 (file)
index 0bd2a57..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Accepta tasques a {is_class?la classe: la impressora} {printer_name}</H2>
-
-<P>{is_class?La classe:La impressora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-ara accepta tasques.</P>
-
-</DIV>
diff --git a/templates/ca/printer-added.tmpl b/templates/ca/printer-added.tmpl
deleted file mode 100644 (file)
index b5850aa..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Afegeix una impressora</H2>
-
-<P>La impressora <A HREF="/printers/{printer_name}">{printer_name}</A> s'ha afegit
-correctament.
-
-</DIV>
diff --git a/templates/ca/printer-configured.tmpl b/templates/ca/printer-configured.tmpl
deleted file mode 100644 (file)
index 20880da..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">S'ha aplicat la configuraci&oacute; per defecte a {printer_name}</H2>
-
-<P>Les opcions per defecte de la {OP=set-class-options?classe <A HREF="/classes/{printer_name}">:impressora <A HREF="/printers/{printer_name}">}{printer_name}</A> s'han establert correctament.
-</DIV>
diff --git a/templates/ca/printer-confirm.tmpl b/templates/ca/printer-confirm.tmpl
deleted file mode 100644 (file)
index 916bc30..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Elimina la impressora {printer_name}</H2>
-
-<P><B>Av&iacute;s:</B> Esteu segur que voleu eliminar la 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="Elimina la impressora"></FORM></P>
-
-</DIV>
diff --git a/templates/ca/printer-default.tmpl b/templates/ca/printer-default.tmpl
deleted file mode 100644 (file)
index 76f7ddf..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Estableix {is_class?Class:Printer} {printer_name} com a predeterminada</H2>
-
-<P>{is_class?Class:Printer} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-s'ha establert com a impressora predeterminada.</P>
-
-<BLOCKQUOTE><B>Nota:</B> Qualsevol usuari que hagi estat establert mitjan&ccedil;ant 
-la comanda <TT>lpoptions</TT> sobreescriur&agrave; aquesta configuraci&oacute; predeterminada.</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/ca/printer-deleted.tmpl b/templates/ca/printer-deleted.tmpl
deleted file mode 100644 (file)
index 695ab67..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Elimina la impressora {printer_name}</H2>
-
-<P>La impressora {printer_name} s'ha eliminat correctament.
-
-</DIV>
diff --git a/templates/ca/printer-jobs-header.tmpl b/templates/ca/printer-jobs-header.tmpl
deleted file mode 100644 (file)
index 90e640e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Tasques</H3>
-</DIV>
diff --git a/templates/ca/printer-modified.tmpl b/templates/ca/printer-modified.tmpl
deleted file mode 100644 (file)
index efbbc3b..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifica la impressora {printer_name}</H2>
-
-<P>La impressora <A HREF="/printers/{printer_name}">{printer_name}</A> s'ha
-modificat correctament.
-
-</DIV>
diff --git a/templates/ca/printer-purge.tmpl b/templates/ca/printer-purge.tmpl
deleted file mode 100644 (file)
index 980d883..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Cancel&middot;la les tasques de {is_class?la classe:la impressora} {printer_name}</H2>
-
-<P>S'han cancel&middot;lat totes les tasques de{is_class?la classe:la impressora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>.</P>
-
-</DIV>
diff --git a/templates/ca/printer-reject.tmpl b/templates/ca/printer-reject.tmpl
deleted file mode 100644 (file)
index 6269cf2..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Refusa les tasques a {is_class?la classe:la impressora} {printer_name}</H2>
-
-<P>{is_class?La classe:la impressora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-no accepta tasques a partir d'ara.</P>
-
-</DIV>
diff --git a/templates/ca/printer-start.tmpl b/templates/ca/printer-start.tmpl
deleted file mode 100644 (file)
index 6986fd4..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Repr&egrave;n {is_class?la classe:la impressora} {printer_name}</H2>
-
-<P>{is_class?La classe:La impressora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-ha repr&egrave;s les tasques.</P>
-
-</DIV>
diff --git a/templates/ca/printer-stop.tmpl b/templates/ca/printer-stop.tmpl
deleted file mode 100644 (file)
index af89331..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Pausa {is_class?la classe:la impressora} {printer_name}</H2>
-
-<P>{is_class?La classe:La impressora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-s'ha posat en pausa.</P>
-
-</DIV>
diff --git a/templates/ca/printer.tmpl b/templates/ca/printer.tmpl
deleted file mode 100644 (file)
index 7e026cb..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?Inactiva:{printer_state=4?Processant:En pausa}},
-{printer_is_accepting_jobs=0?Refusa les tasques:Accepta tasques},
-{server_is_sharing_printers=0?No:{printer_is_shared=0?No:}} Compartida{default_name={printer_name}?, Servidor per defecte:})</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="">Manteniment</OPTION>
-<OPTION VALUE="print-test-page">Imprimeix una p&agrave;gina de prova</OPTION>
-{printer_commands~.*Clean.*?<OPTION VALUE="clean-print-heads">Neteja els cap&ccedil;als</OPTION>:}
-{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">Imprimeix la p&agrave;gina de prova pr&ograve;pia</OPTION>:}
-{printer_state=5?<OPTION VALUE="start-printer">Repr&egrave;n la impressora</OPTION>:<OPTION VALUE="stop-printer">Pausa la impressora</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Accepta tasques</OPTION>:<OPTION VALUE="reject-jobs">Refusa les tasques</OPTION>}
-<OPTION VALUE="move-jobs">Mou totes les tasques</OPTION>
-<OPTION VALUE="purge-jobs">Cancel&middot;la totes les tasques</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<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="">Administraci&oacute;</OPTION>
-<OPTION VALUE="modify-printer">Modifica la impressora</OPTION>
-<OPTION VALUE="delete-printer">Elimina la impressora</OPTION>
-<OPTION VALUE="set-printer-options">Torna a les opcions per defecte</OPTION>
-<OPTION VALUE="set-as-default">Configura com a servidor per defecte</OPTION>
-<OPTION VALUE="set-allowed-users">Configura els permisos dels usuaris</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Descripci&oacute;:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Ubicaci&oacute;:</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 grisos}{sides_supported?, impressió a doble cara:})<BR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Connexi&oacute;:</TH><TD>{device_uri}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Configuraci&oacute; per defecte:</TH><TD>Fulls de tasques={job_sheets_default}
-safata={media_default?{media_default}:desconeguda}
-{sides_default?cares={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
diff --git a/templates/ca/printers-header.tmpl b/templates/ca/printers-header.tmpl
deleted file mode 100644 (file)
index 52eaa2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Cap impressora:Es mostr{#printer_name=1?a:en} {#printer_name} de {total} impressor{total=1?a:es}}.</P>
diff --git a/templates/ca/printers.tmpl b/templates/ca/printers.tmpl
deleted file mode 100644 (file)
index d978c17..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{#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> Nom <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nom <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Descripci&oacute;</TH><TH>Ubicaci&oacute</TH><TH>Marca i model</TH><TH>Estat</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?Preparada:{printer_state=4?Processant:En pausa}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/ca/restart.tmpl b/templates/ca/restart.tmpl
deleted file mode 100644 (file)
index 4e3983f..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Canvis en la configuraci&oacute;</H2>
-
-<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> Espereu mentre es torna a iniciar el servidor...</P>
-
-</DIV>
diff --git a/templates/ca/samba-export.tmpl b/templates/ca/samba-export.tmpl
deleted file mode 100644 (file)
index 2b16e1e..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<SCRIPT TYPE="text/javascript"><!--
-function select_printers() {
-  var list = document.export_samba.EXPORT_NAME;
-  var sel = document.export_samba.EXPORT_ALL.checked;
-
-  for (i = 0; i < list.length; i ++) {
-    list.options[i].selected = sel;
-  }
-}
---></SCRIPT>
-
-<FORM METHOD="POST" ACTION="/admin/" NAME="export_samba">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
-
-<H2 CLASS="title">Exporta les impressores al Samba</H2>
-
-{error?<P>No es pot exportar les impressores al Samba\:</P>
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-<P>Consulteu el fitxer <A HREF="/admin/log/error_log"
-TARGET="_blank">error_log</A> per obtenir m&eacute;s informaci&oacute;.</P>:
-<P>Aquesta p&agrave;gina us permet exportar les impressores al Samba per tal que
-els clients de Windows puguin accedir-hi a trav&eacute;s de les icones <VAR>Xarxa
-ve&iuml;na</VAR> o <VAR>Llocs de la xarxa</VAR> del seu
-escriptori. Abans heu d'instal&middot;lar el controlador d'impressores Windows PostScript
-tal i com s'explica a la p&agrave;gina del manual <A
-HREF="/help/man-cupsaddsmb.html"
-TARGET="_blank">cupsaddsmb(8)</A>.</P>}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Impressores:</TH>
-<TD>
-<SELECT NAME="EXPORT_NAME" SIZE="10" MULTIPLE>
-{[printer_name]<OPTION VALUE="{printer_name}"{export_all? SELECTED:{printer_export? SELECTED:}}>{printer_name}}
-</SELECT><BR>
-<INPUT TYPE="CHECKBOX" NAME="EXPORT_ALL"{export_all? CHECKED:}
-onChange="select_printers()"> Exporta totes les impressores
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Nom de l'usuari del Samba:</TH>
-<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (necessari)</TD>
-</TR>
-<TR>
-<TH CLASS="label">Contrasenya del Samba:</TH>
-<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (necess&agrave;ria)</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Exporta les impressores al Samba"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/ca/samba-exported.tmpl b/templates/ca/samba-exported.tmpl
deleted file mode 100644 (file)
index 7ea9857..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P>Les impressores s'han exportat correctament al Samba.</P>
diff --git a/templates/ca/search.tmpl b/templates/ca/search.tmpl
deleted file mode 100644 (file)
index b76afaa..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
-{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
-{ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
-
-<P ALIGN="CENTER"><B>Cerca a les 
-{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?classes:{SECTION=jobs?tasques:impressores}}}:</B>
-<INPUT TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40"  PLACEHOLDER="" AUTOSAVE="org.cups.{SECTION}" RESULTS="20"> <INPUT
-TYPE="SUBMIT" VALUE="Cerca"> <INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Neteja"></P>
-
-</FORM>
diff --git a/templates/ca/set-printer-options-header.tmpl b/templates/ca/set-printer-options-header.tmpl
deleted file mode 100644 (file)
index b4a4a4e..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Aplica les opcions per defecte a {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="Demana a la impressora les opcions per defecte">:}
-
-<SCRIPT TYPE="text/javascript"><!--
-function update_paramtable(option)
-{
-  var cb = document.getElementById("select-" + option)
-  var paramstable = document.getElementById(option + "-params");
-  if (cb.value == "Custom")
-    paramstable.style.display = "table";
-  else
-    paramstable.style.display = "none";
-}
---></SCRIPT>
-
-<H3 CLASS="title">{[group_id]
-<A HREF="#{group_id}">{group}</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</H3>
-
-<DIV CLASS="tabs">
diff --git a/templates/ca/set-printer-options-trailer.tmpl b/templates/ca/set-printer-options-trailer.tmpl
deleted file mode 100644 (file)
index 11adc70..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-</DIV>
-
-<SCRIPT TYPE="text/javascript"><!--
-// Hide custom options parameters for browsers that understand Javascript
-var paramtables = document.getElementsByName("paramtable");
-for (var i = 0; i < paramtables.length; i++)
-{
-  var opt = paramtables[i].id.substr(0, paramtables[i].id.lastIndexOf("-"));
-  var cb = document.getElementById("select-" + opt);
-  if (cb.value != "Custom")
-    paramtables[i].style.display = "none";
-}
---></SCRIPT>
-</FORM>
-
-</DIV>
diff --git a/templates/ca/subscription-added.tmpl b/templates/ca/subscription-added.tmpl
deleted file mode 100644 (file)
index 067132f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>La subscripci&oacute; {subscription_name} s'ha afegit correctament.</P>
-
-</DIV>
diff --git a/templates/ca/subscription-canceled.tmpl b/templates/ca/subscription-canceled.tmpl
deleted file mode 100644 (file)
index 8a93b4c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>La subscripci&oacute; #{notify_subscription_id} s'ha cancel&middot;lat.</P>
-
-</DIV>
diff --git a/templates/ca/test-page.tmpl b/templates/ca/test-page.tmpl
deleted file mode 100644 (file)
index 2a4b776..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Imprimeix una p&agrave;gina de prova a {printer_name}</H2>
-
-<P>S'ha enviat la p&agrave;gina de prova; l'ID de la tasca &eacute;s <A HREF="/{SECTION}/{printer_name}">
-{printer_name}-{job_id}</A>.</P>
-
-</DIV>
diff --git a/templates/ca/trailer.tmpl b/templates/ca/trailer.tmpl
deleted file mode 100644 (file)
index bbe238e..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-</DIV></TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS i el logotip de CUPS s&oacute;n marques registrades per
-<A HREF="http://www.apple.com">Apple Inc.</A> CUPS t&eacute; copyright 2007-2014 Apple
-Inc. Tots els drets reservats.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/templates/ca/users.tmpl b/templates/ca/users.tmpl
deleted file mode 100644 (file)
index cceeb02..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<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">Usuaris amb permisos per {printer_name}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Usuaris:</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:}>Permet imprimir a aquests usuaris
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>No permetis imprimir a aquests usuaris
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>
-<INPUT TYPE="SUBMIT" VALUE="Aplica els permisos">
-</TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
index c5ab251b5478799ba9252e21965688ec88df0a88..5f46939628d6dc47eaa35b31ec71140cdaf604a7 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">{op=modify-printer?Modify {printer_name}:Add Printer}</H2>
 
 {CUPS_GET_DEVICES_DONE?<FORM METHOD="POST" ACTION="/admin">
@@ -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="Busy Indicator"> Looking for printers...</P>}
-
-</DIV>
index 65096ad9a6773f9544922ead29448e253efcdff1..a5c80aafee28bd3397687e2952e1a2d4aa034b4f 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">{op=modify-printer?Modify {printer_name}:Add Printer}</H2>
 
 <FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
@@ -61,4 +59,3 @@ TYPE="FILE" NAME="PPD_FILE"></TD>
 </TABLE>
 
 </FORM>
-</DIV>
\ No newline at end of file
index 992cd01fd6806286702a809f22d4de3990580c02..ee9338cc5c9f5cab52996409c57fa933d38ebb15 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">{op=modify-printer?Modify {printer_name}:Add Printer}</H2>
 
 <FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
@@ -57,4 +55,3 @@ TYPE="FILE" NAME="PPD_FILE"></TD>
 </TABLE>
 
 </FORM>
-</DIV>
\ No newline at end of file
index 56a14a4cbfef1e954183a19031ef753dc55b9674..89a5eaf09673ea0b875c2e225f3b6887b43a84c5 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">{op=modify-printer?Modify {printer_name}:Add Printer}</H2>
 
 <FORM METHOD="POST" ACTION="/admin">
@@ -49,4 +47,3 @@
 </TABLE>
 
 </FORM>
-</DIV>
\ No newline at end of file
index 45d84de194b0d856a0e4bb7524c1dcecc365ba81..0c7f4548247e840ba9bfda428a58b447852ef14b 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">{op=modify-printer?Modify {printer_name}:Add Printer}</H2>
 
 <FORM METHOD="POST" ACTION="/admin">
@@ -41,4 +39,3 @@ Printers"</A> for the correct URI to use with your printer.</P>
 </TABLE>
 
 </FORM>
-</DIV>
\ No newline at end of file
index c062a16d5ad2d996784ea8f3c02bc93f51d5167e..6afd30295dee494059885bc7d88b66faed56f542 100644 (file)
@@ -1,8 +1,4 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Add Class</H2>
 
 <P>Class <A HREF="/classes/{printer_name}">{printer_name}</A> has been added
 successfully.
-
-</DIV>
index 5f0277cb51387ed170b9dcd04db87a5c2a2d40b7..e5643791b5903b52a28d58935f0eb59af14ad6a6 100644 (file)
@@ -1,10 +1,6 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Delete Class {printer_name}</H2>
 
 <P><B>Warning:</B> Are you sure you want to delete class
 {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="Delete Class"></FORM></P>
-
-</DIV>
index a4ad46a0ad5382cd75b78f9da80aebb9331f9ea4..6c444680c54f39b50fbf30db9943a8ec45dc8476 100644 (file)
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Delete Class {printer_name}</H2>
 
 <P>Class {printer_name} has been deleted successfully.
-
-</DIV>
\ No newline at end of file
index ba46f10260905e1c3a03c17659b20620a18017c4..61e5151d24b1c2a7bed7c76d294c99d9928cf0c8 100644 (file)
@@ -1,3 +1 @@
-<DIV CLASS="indent">
 <H3 CLASS="title">Jobs</H3>
-</DIV>
index fe42c907bb2744b8fe749c0c0d61963bcf41cfba..02b98954607405b93dd0114826a089a5e27c2ef4 100644 (file)
@@ -1,8 +1,4 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Modify Class {printer_name}</H2>
 
 <P>Class <A HREF="/classes/{printer_name}">{printer_name}</A> has been
 modified successfully.
-
-</DIV>
\ No newline at end of file
index 477e0e8edb0b0cb7934b6614580c3024162dd623..0afb0d39f01e80422c47181fdcf1a7a6d9169ca3 100644 (file)
@@ -1,4 +1,3 @@
-<DIV CLASS="indent">
 <H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
 ({printer_state=3?Idle:{printer_state=4?Processing:Paused}},
 {printer_is_accepting_jobs=0?Rejecting Jobs:Accepting Jobs},
@@ -40,5 +39,3 @@
 media={media_default?{media_default}:unknown}
 {sides_default?sides={sides_default}:}</TD></TR>
 </TABLE>
-
-</DIV>
index 9a87439ca5dc86cd94b91acb05ba71bcad8d6839..a8dc6ffb9636103207376aec02e37f0d6174a703 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">{title} On {printer_name}</H2>
 
 <P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
@@ -8,5 +6,3 @@ ALIGN="ABSMIDDLE" ALT="Busy Indicator"> }Printer command job
 {job_state=5?processing:{job_state=6?stopped:
 {job_state=7?canceled:{job_state=8?aborted:completed}}}}}}{job_state=9?:{job_printer_state_message?,
 <EM>"{job_printer_state_message}"</EM>:}}</P>
-
-</DIV>
diff --git a/templates/cs/add-class.tmpl b/templates/cs/add-class.tmpl
deleted file mode 100644 (file)
index 06bb9ad..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Přidat třídu</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Název:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Může obsahovat libovolné tisknutelné znaky kromě "/", "#" a mezery)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Popis:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Srozumitelný popis)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Umístění:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Srozumitelný popis umístění)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">členové:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Přidat třídu"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/cs/add-printer.tmpl b/templates/cs/add-printer.tmpl
deleted file mode 100644 (file)
index 1e557d2..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Přidat tiskárnu</H2>
-
-<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="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
-{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Název:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
-<SMALL>(Může obsahovat libovolné tisknutelné znaky kromě "/", "#" a mezery)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Popis:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_INFO}"><BR>
-<SMALL>(Srozumitelný popis)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Umístění:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_LOCATION}"><BR>
-<SMALL>(Srozumitelný popis umístění)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Připojení:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Sdílení:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-sdílet tuto tiskárnu</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Pokračovat"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/cs/add-rss-subscription.tmpl b/templates/cs/add-rss-subscription.tmpl
deleted file mode 100644 (file)
index d1568f7..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription">
-
-<H2 CLASS="title">Přidat RSS předplatné</H2>
-
-<TABLE SUMMARY="Add RSS Subscription form">
-<TR>
-<TH CLASS="label">Název:</TH>
-<TD COLSPAN="5"><INPUT TYPE="TEXT" NAME="SUBSCRIPTION_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?SUBSCRIPTION_NAME}"><BR>
-<SMALL>(Může obsahovat libovolné tisknutelné znaky s výjimkou mezery, "/", "?" a "#")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Fronta:</TH>
-<TD COLSPAN="5"><SELECT NAME="PRINTER_URI" SIZE="10"><OPTION VALUE="#ALL#"{?PRINTER_URI=#ALL#? SELECTED:}>Všechny fronty</OPTION>{[printer_name]<OPTION VALUE="{printer_uri_supported}"{?PRINTER_URI={printer_uri_supported}? SELECTED:}>{printer_name}</OPTION>}</SELECT></TD>
-</TR>
-<TR VALIGN="TOP">
-<TH CLASS="label">Události:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CREATED" {?EVENT_JOB_CREATED}>Vytvoření úlohy<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_COMPLETED" {?EVENT_JOB_COMPLETED}>Dokončení úlohy<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_STOPPED" {?EVENT_JOB_STOPPED}>Zastavení úlohy<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>Změna parametrů úlohy</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_STOPPED" {?EVENT_PRINTER_STOPPED}>Zastavení fronty<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_ADDED" {?EVENT_PRINTER_ADDED}>Přidání fronty<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_MODIFIED" {?EVENT_PRINTER_MODIFIED}>Změna fronty<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_DELETED" {?EVENT_PRINTER_DELETED}>Vymazání fronty</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STARTED" {?EVENT_SERVER_STARTED}>Start serveru<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STOPPED" {?EVENT_SERVER_STOPPED}>Zastavení serveru<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_RESTARTED" {?EVENT_SERVER_RESTARTED}>Restart serveru<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_AUDIT" {?EVENT_SERVER_AUDIT}>Audit bezpečnosti serveru</TD>
-</TR>
-<TR>
-<TH CLASS="label">Maximální počet zobrazených událostí:</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="Přidat RSS předplatné"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/cs/admin.tmpl b/templates/cs/admin.tmpl
deleted file mode 100644 (file)
index 247a10f..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-<TABLE CLASS="indent" SUMMARY="Administration Tasks">
-<TR><TD VALIGN="TOP">
-
-<H2 CLASS="title">Tiskárny</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="Přidat tiskárnu"></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="Hledat nové tiskárny"></FORM>
-<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Správa tiskáren"></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="Export tiskáren do Samby"></FORM>:}
-</P>
-
-<H2 CLASS="title">Třídy</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="Přidat třídu"></FORM>
-<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Správa tříd"></FORM>
-</P>
-
-<H2 CLASS="title">Úlohy</H2>
-
-<P>
-<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Správa úloh"></FORM>
-</P>
-
-</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
-
-<H2 CLASS="title">Server</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="Úprava konfiguračního souboru"></FORM>
-<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Prohlížení Access Log"></FORM>
-<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Prohlížení Error Log"></FORM>
-<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Prohlížení Page Log"></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>Nastavení serveru\:</B></P>
-
-<P><A HREF="/admin/">Skrýt rozšířené nastavení <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}> Sdílet tiskárny připojené k tomuto systému<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximální počet klientů\:
-<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}> Povolit tisk z internetu<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Nabízet webové rozhraní<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Povolit vzdálenou správu<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Používat ověřování Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">časté dotazy</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Povolit uživatelům zrušit jakoukoliv úlohu (nejen vlastní)<BR>
-<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Zachovat historii úloh<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximální počet úloh (0 bez omezení)\:
-<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Zachovat metadata\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Zachovat dokumenty\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Uložit informace o ladění pro řešení problémů<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximální velikost log souboru\:
-<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
-
-:<P><B>Nastavení serveru:</B></P>
-
-<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Zobrazit rozšířené nastavení <SMALL>&#x25b6;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Sdílet tiskárny připojené k tomuto systému<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Povolit tisk z internetu<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Povolit vzdálenou správu<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Používat ověřování Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">časté dotazy</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Povolit uživatelům zrušit jakoukoliv úlohu (nejen vlastní)<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Uložit informace o ladění pro řešení problémů</P>
-
-}
-<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Změnit nastavení"></P>
-
-</FORM>}
-
-</TD></TR>
-</TABLE>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">RSS předplatné</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="Přidat RSS předplatné"></FORM>
-</P>
-
-</DIV>
-
-{notify_subscription_id?<TABLE CLASS="list" SUMMARY="RSS Subscriptions">
-<THEAD><TR><TH>Název</TH><TH>Události</TH><TH>Název fronty</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="Zrušit RSS předplatné"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:Všechny fronty}</TD></TR>}
-</TBODY>
-</TABLE>:}
diff --git a/templates/cs/choose-device.tmpl b/templates/cs/choose-device.tmpl
deleted file mode 100644 (file)
index aa8a649..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Úprava tiskárny {printer_name}:Přidat tiskárnu}</H2>
-
-{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">Aktuální připojení\:</TH>
-<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
-{current_device_uri}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Místní tiskárny\:</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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}}
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Nalezené síťové tiskárny\:</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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}:}}
-</TD>
-</TR>
-<TR>
-<TR>
-<TH CLASS="label">Ostatní síťové tiskárny\:</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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-}:}}
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Pokračovat"></TD>
-</TR>
-</TABLE>
-
-</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> Hledání tiskáren ...</P>}
-
-</DIV>
diff --git a/templates/cs/choose-make.tmpl b/templates/cs/choose-make.tmpl
deleted file mode 100644 (file)
index f018f0e..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Úprava tiskárny {printer_name}:Přidat tiskárnu}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<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}">:}
-<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}">
-
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Název:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Popis:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Umístění:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Připojení:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Sdílení:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?ne:{?printer_is_shared=0?ne:}}sdílená</TD>
-</TR>
-<TR>
-<TH CLASS="label">Výrobce:</TH>
-<TD>
-<SELECT NAME="PPD_MAKE" SIZE="10">
-{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Pokračovat"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>&nbsp;</TD>
-</TR>
-<TR>
-<TH CLASS="label">Nebo vybrat soubor PPD:</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?Přidat tiskárnu:Upravit tiskárnu}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/cs/choose-model.tmpl b/templates/cs/choose-model.tmpl
deleted file mode 100644 (file)
index 75fc46f..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Úprava tiskárny {printer_name}:Přidat tiskárnu}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<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}">:}
-<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}">
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Název:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Popis:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Umístění:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Připojení:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Sdílení:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?ne:{?printer_is_shared=0?ne:}}sdílená</TD>
-</TR>
-<TR>
-<TH CLASS="label">Výrobce:</TH>
-<TD>{PPD_MAKE} <INPUT TYPE="SUBMIT" NAME="SELECT_MAKE" VALUE="Vybrat jiného výrobce"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Model:</TH>
-<TD>
-<SELECT NAME="PPD_NAME" SIZE="10">
-{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Aktuální: {current_make_and_model}</OPTION>:}
-{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
-}</SELECT>
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Nebo vybrat soubor PPD:</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?Přidat tiskárnu:Upravit tiskárnu}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/cs/choose-serial.tmpl b/templates/cs/choose-serial.tmpl
deleted file mode 100644 (file)
index 593bcdd..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Úprava tiskárny {printer_name}:Přidat tiskárnu}</H2>
-
-<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>
-<TR>
-<TH CLASS="label">Připojení:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Přenosová rychlost:</TH>
-<TD><SELECT NAME="BAUDRATE">
-{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Parita:</TH>
-<TD><SELECT NAME="PARITY">
-<OPTION VALUE="none" {?parity=none?SELECTED:}>Žádná
-<OPTION VALUE="even" {?parity=even?SELECTED:}>Sudá
-<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Lichá
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Datových bitů:</TH>
-<TD><SELECT NAME="BITS">
-<OPTION {?bits=8?SELECTED:}>8
-<OPTION {?bits=7?SELECTED:}>7
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Řízení toku dat:</TH>
-<TD><SELECT NAME="FLOW">
-<OPTION VALUE="none" {?flow=none?SELECTED:}>Žádné
-<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)
-</SELECT></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Pokračovat"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/cs/choose-uri.tmpl b/templates/cs/choose-uri.tmpl
deleted file mode 100644 (file)
index ad919b7..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Úprava tiskárny {printer_name}:Přidat tiskárnu}</H2>
-
-<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}">:}
-<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Připojení:</TH>
-<TD><INPUT TYPE="URL" SIZE="60" MAXLENGTH="1023" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>Příklady:
-<PRE>
-    http://hostname:631/ipp/
-    http://hostname:631/ipp/port1
-
-    ipp://hostname/ipp/
-    ipp://hostname/ipp/port1
-
-    lpd://hostname/queue
-
-    socket://hostname
-    socket://hostname:9100
-</PRE>
-
-<P>Viz. <A HREF="/help/network.html" TARGET="_blank">"Síťové tiskárny"</A> pro zadání správného URI tiskárny.</P>
-
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Pokračovat"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
-
diff --git a/templates/cs/class-added.tmpl b/templates/cs/class-added.tmpl
deleted file mode 100644 (file)
index d644303..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Přidat třídu</H2>
-
-<P>Třída <A HREF="/classes/{printer_name}">{printer_name}</A> byla úspěšně přidána.
-
-</DIV>
diff --git a/templates/cs/class-confirm.tmpl b/templates/cs/class-confirm.tmpl
deleted file mode 100644 (file)
index 87c1614..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Výmaz třídy {printer_name}</H2>
-
-<P><B>Varování:</B> Opravdu chcete vymazat třídu
-{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="Vymazat třídu"></FORM></P>
-
-</DIV>
diff --git a/templates/cs/class-deleted.tmpl b/templates/cs/class-deleted.tmpl
deleted file mode 100644 (file)
index e2fb7f8..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Výmaz třídy {printer_name}</H2>
-
-<P>Třída {printer_name} byla úspěšně vymazána.
-
-</DIV>
\ No newline at end of file
diff --git a/templates/cs/class-jobs-header.tmpl b/templates/cs/class-jobs-header.tmpl
deleted file mode 100644 (file)
index d8142d1..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Úlohy</H3>
-</DIV>
diff --git a/templates/cs/class-modified.tmpl b/templates/cs/class-modified.tmpl
deleted file mode 100644 (file)
index 131fd08..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Úprava třídy {printer_name}</H2>
-
-<P>Třída <A HREF="/classes/{printer_name}">{printer_name}</A> byla úspěšně upravena.
-
-</DIV>
\ No newline at end of file
diff --git a/templates/cs/class.tmpl b/templates/cs/class.tmpl
deleted file mode 100644 (file)
index 39f72bf..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?čeká:{printer_state=4?tiskne:pauza}},
-{printer_is_accepting_jobs=0?ne:}přijímá úlohy,
-{server_is_sharing_printers=0?není:{printer_is_shared=0?není:}} sdílení{default_name={printer_name}?, výchozí server:})</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="">Údržba</OPTION>
-<OPTION VALUE="print-test-page">Tisk zkušební stránky</OPTION>
-{printer_state=5?<OPTION VALUE="start-class">Obnovení třídy</OPTION>:<OPTION VALUE="stop-class">Pozastavení třídy</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Příjem úloh</OPTION>:<OPTION VALUE="reject-jobs">Odmítnutí úloh</OPTION>}
-<OPTION VALUE="move-jobs">Přesun všech úloh</OPTION>
-<OPTION VALUE="purge-jobs">Výmaz všech úloh</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<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="">Administrace</OPTION>
-<OPTION VALUE="modify-class">Úprava třídy</OPTION>
-<OPTION VALUE="delete-class">Výmaz třídy</OPTION>
-<OPTION VALUE="set-class-options">Nastavení parametrů</OPTION>
-<OPTION VALUE="set-as-default">Nastavení jako výchozí na serveru</OPTION>
-<OPTION VALUE="set-allowed-users">Nastavení přístupu uživatelů</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Popis:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Umístění:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Členové:</TH><TD>{?member_uris=?None:{member_uris}}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Nastavení:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:unknown}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
diff --git a/templates/cs/classes-header.tmpl b/templates/cs/classes-header.tmpl
deleted file mode 100644 (file)
index 5bfeeee..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Žádné třídy:Zobrazení {#printer_name} z {total} tříd{total=1?y:}}.</P>
diff --git a/templates/cs/classes.tmpl b/templates/cs/classes.tmpl
deleted file mode 100644 (file)
index 02d32a6..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{#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> Název fromty <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Název fronty <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Popis</TH><TH>Umístění</TH><TH>Členové</TH><TH>Stav</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=?Žádný:{member_uris}}</TD><TD>{printer_state=3?Čeká:{printer_state=4?Tiskne:Pauza}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/cs/command.tmpl b/templates/cs/command.tmpl
deleted file mode 100644 (file)
index b2a4fd4..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{title} u {printer_name}</H2>
-
-<P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
-ALIGN="ABSMIDDLE" ALT="Busy Indicator"> }Stav úlohy
-{job_state=3?čeká:{job_state=4?pozastaveno:
-{job_state=5?zpracováváno:{job_state=6?zastaveno:
-{job_state=7?zrušeno:{job_state=8?zrušeno:dokončeno}}}}}}{job_state=9?:{job_printer_state_message?,
-<EM>"{job_printer_state_message}"</EM>:}}.</P>
-
-</DIV>
diff --git a/templates/cs/edit-config.tmpl b/templates/cs/edit-config.tmpl
deleted file mode 100644 (file)
index ab3bf65..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<SCRIPT TYPE="text/javascript">
-function reset_config()
-{
-  document.cups.CUPSDCONF.value = "{?cupsdconf_default}";
-}
-</SCRIPT>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Úprava konfiguračního souboru</H2>
-
-<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-
-<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
-
-<P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="Uložit změny">
-<INPUT TYPE="BUTTON" VALUE="Použít výchozí konfigurační soubor"
-onClick="reset_config();"></P>
-
-</FORM>
-
-</DIV>
diff --git a/templates/cs/error-op.tmpl b/templates/cs/error-op.tmpl
deleted file mode 100644 (file)
index 636edc2..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Chyba {?title} u {?printer_name}</H2>
-
-<P>Chyba:</P>
-
-<BLOCKQUOTE>Neznámá operace "{op}"!</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/cs/error.tmpl b/templates/cs/error.tmpl
deleted file mode 100644 (file)
index 7ee1926..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Chyba {?title} u {?printer_name}</H2>
-
-<P>{?message?{message}:Chyba}:</P>
-
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/cs/header.tmpl.in b/templates/cs/header.tmpl.in
deleted file mode 100644 (file)
index 739e51d..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//CZ" "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}">:}
-</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="unsel"><A HREF="/">&nbsp;&nbsp;Hlavní strana&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;Administrace&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=classes?:un}sel"><A HREF="/classes/">&nbsp;&nbsp;Třídy tiskáren&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=help?:un}sel"><A HREF="/help/">&nbsp;&nbsp;Nápověda&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;Úlohy&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;Tiskárny&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Hledat"
-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>
-<TR><TD COLSPAN="9">&nbsp;</TD></TR>
-</TABLE>
diff --git a/templates/cs/help-header.tmpl b/templates/cs/help-header.tmpl
deleted file mode 100644 (file)
index fe8dca8..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<DIV CLASS="indent">
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
-{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
-
-<P ALIGN="CENTER"><B>Hledat v{HELPTITLE? {HELPTITLE}:{TOPIC? {TOPIC}:e všech dokumentech}}:</B> <INPUT
-TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER=""
-AUTOSAVE="org.cups.help" RESULTS="20">
-<INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="Hledat">
-<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Smazat"></P>
-
-</FORM>
-
-<!-- Bookmarks -->
-<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Contents">
-<TR><TD>
-
-<H3 CLASS="title">Dokumenty nápovědy</H3>
-
-<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Všechny dokumenty</A></P>
-<HR>
-
-{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
-}
-</TD></TR>
-</TABLE></DIV>
-
-{QUERY?<P>Výsledky hledání v{HELPFILE? {HELPTITLE}:{TOPIC? {TOPIC}:e všech dokumentech}}\:</P>
-{QTEXT?<UL>
-{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (v <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
-{QTEXT?</UL>:}
-:<P>Nebyl nalezen záznam.</P>}
-<HR NOSHADE>:}
-{HELPTITLE?<H1>{HELPTITLE}</H1>
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Zobrazit verzi pro tisk"></FORM>:
-
-<H1>Nápověda</H1>
-
-<P>Toto je rozhraní nápovědy CUPS. Zadejte hledané slovo nebo klikněte na
-některý z odkazů dokumentace k zobrazení nápovědy.</P>
-
-<P>Pokud jste nový uživatel programu CUPS, přečtěte si stránku "<a
-href="/help/overview.html">Popis programu CUPS</a>". Zkušení uživatelé by
-si měli přečíst stránku "<a href="/help/whatsnew.html">Co je nového v CUPS 1.6</a>".</P>
-
-<P><A HREF="http://www.cups.org/">Hlavní strana programu CUPS</A> také
-poskytuje mnoho zdrojů, včetně uživatelského diskuzního fóra, odpovědí
-na často kladené otázky a formuláře pro odesílání zpráv o chybách a
-požadavky na nové funkce.</P>}
diff --git a/templates/cs/help-printable.tmpl b/templates/cs/help-printable.tmpl
deleted file mode 100644 (file)
index 763a98b..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//CS" "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/cs/help-trailer.tmpl b/templates/cs/help-trailer.tmpl
deleted file mode 100644 (file)
index 4c1ebed..0000000
+++ /dev/null
@@ -1 +0,0 @@
-</DIV>
diff --git a/templates/cs/job-cancel.tmpl b/templates/cs/job-cancel.tmpl
deleted file mode 100644 (file)
index 31f50ea..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Zrušit úlohu {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Úloha {job_id}</A> byla zrušena.
-
-</DIV>
diff --git a/templates/cs/job-hold.tmpl b/templates/cs/job-hold.tmpl
deleted file mode 100644 (file)
index f0e7b63..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Pozastavení úlohy {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Úloha {job_id}</A> byla pozastavena.
-
-</DIV>
diff --git a/templates/cs/job-move.tmpl b/templates/cs/job-move.tmpl
deleted file mode 100644 (file)
index b706ca8..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<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}">
-{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
-
-<H2 CLASS="title">{job_id?Přesun úlohy {job_id}:Přesun všech úloh}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nová tiskárna:</TH>
-<TD>
-<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
-{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Přesunout {job_id?úlohu:úlohy}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-
-</DIV>
diff --git a/templates/cs/job-moved.tmpl b/templates/cs/job-moved.tmpl
deleted file mode 100644 (file)
index 40e5eef..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{job_id?Přesun úlohy {job_id}:Přesun všech úloh}</H2>
-
-<P>{job_id?<A HREF="/jobs/{job_id}">Úloha přesunuta {job_id}</A>:Všechny úlohy přesunuty} na tiskárnu 
-<A HREF="/{is_class?classes:printers}/{job_printer_name}">{job_printer_name}</A>.</P>
-
-</DIV>
diff --git a/templates/cs/job-release.tmpl b/templates/cs/job-release.tmpl
deleted file mode 100644 (file)
index 199c798..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Uvolnit úlohu {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Úloha {job_id}</A> byla uvolněna k tisku.
-
-</DIV>
diff --git a/templates/cs/job-restart.tmpl b/templates/cs/job-restart.tmpl
deleted file mode 100644 (file)
index 56c113a..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Opakovaný tisk úlohy {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Úloha {job_id}</A> byla znovu spuštěna.
-
-</DIV>
diff --git a/templates/cs/jobs-header.tmpl b/templates/cs/jobs-header.tmpl
deleted file mode 100644 (file)
index 591d4ce..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Aktivní úlohy"></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="Dokončené úlohy"></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="Všechny úlohy"></FORM>}</DIV>
-
-<P ALIGN="CENTER">{total=0?Žádné úlohy:Zobrazení {#job_id} z {total} {?which_jobs=?aktivních:{which_jobs=all?:dokončených}} {total=1?úloha:úloh}}.</P>
diff --git a/templates/cs/jobs.tmpl b/templates/cs/jobs.tmpl
deleted file mode 100644 (file)
index 75b483a..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-{#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>Jméno</TH><TH>Uživatel</TH><TH>Velikost</TH><TH>Počet stran</TH><TH>Stav</TH><TH>Řízení</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=?Neznámý:{job_name}}&nbsp;</TD>
-<TD>{?job_originating_user_name=?Neznámý:{job_originating_user_name}}&nbsp;</TD>
-<TD>{job_k_octets} k&nbsp;</TD>
-<TD>{job_media_sheets_completed=0?Neznámý:{?job_media_sheets_completed}}&nbsp;</TD>
-<TD>{job_state=3?Čeká od<BR>{time_at_creation}:{job_state=4?Pozastaveno od<BR>{time_at_creation}:
-{job_state=5?Zpracováváno od<BR>{time_at_processing}:{job_state=6?Zastaveno:
-{job_state=7?Zrušeno v<BR>{time_at_completed}:{job_state=8?Zrušeno:Dokončeno v<BR>{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="Opakovat tisk"></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="Uvolnit"></FORM>:}
-{job_state=3?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-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="Pozastavit"></FORM>:}
-{job_state<7?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-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="Zrušit"></FORM>
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="move-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="SUBMIT" VALUE="Přesunout"></FORM>:}
-&nbsp;</TD>
-</TR>
-}
-</TBODY>
-</TABLE>
-}
diff --git a/templates/cs/list-available-printers.tmpl b/templates/cs/list-available-printers.tmpl
deleted file mode 100644 (file)
index 8c01b27..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Dostupné tiskárny</H2>
-
-{#device_uri=0?<P>Žádné tiskárny nenalezeny.</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=""><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{device_make_and_model}"><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}"><INPUT TYPE="SUBMIT" VALUE="Přidat tiskárnu"></FORM>
-{device_make_and_model} ({device_info})</LI>
-}</UL>}
-
-</DIV>
diff --git a/templates/cs/modify-class.tmpl b/templates/cs/modify-class.tmpl
deleted file mode 100644 (file)
index 9e4881a..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Úprava třídy {printer_name}</H2>
-
-<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}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Popis:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Umístění:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Členové:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Upravit třídu"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/cs/modify-printer.tmpl b/templates/cs/modify-printer.tmpl
deleted file mode 100644 (file)
index 8fc48ed..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Úprava tiskárny {printer_name}</H2>
-
-<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="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="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Popis:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Srozumitelný popis)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Location:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Srozumitelný popis umístění)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Připojení:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Sdílení:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-sdílet tuto tiskárnu</TD>
-</TR>
-<TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Pokračovat"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/cs/norestart.tmpl b/templates/cs/norestart.tmpl
deleted file mode 100644 (file)
index 4f09e8b..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Změna nastavení</H2>
-
-<P>Server nebyl dosud restartován, protože nebyly provedeny žádné změny v
-konfiguraci ...</P>
-
-</DIV>
diff --git a/templates/cs/option-boolean.tmpl b/templates/cs/option-boolean.tmpl
deleted file mode 100644 (file)
index e832ee1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD>
-{[choices]<INPUT TYPE="RADIO" NAME="{keyword-1}" {choices={defchoice-1}?CHECKED:} VALUE="{choices}">{text}}
-</TD>
-</TR>
diff --git a/templates/cs/option-conflict.tmpl b/templates/cs/option-conflict.tmpl
deleted file mode 100644 (file)
index 8c68326..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<P><B>Chyba:</B> Následující parametry jsou v rozporu:</P>
-
-<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
-}</UL>
-
-<P>Prosím změňte jeden nebo více parametrů pro vyřešení problému.</P>
diff --git a/templates/cs/option-header.tmpl b/templates/cs/option-header.tmpl
deleted file mode 100644 (file)
index 464726a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="tab" ID="{group_id}">
-
-<H3 ALIGN="CENTER">{group}</H3>
-
-<TABLE WIDTH="100%">
diff --git a/templates/cs/option-pickmany.tmpl b/templates/cs/option-pickmany.tmpl
deleted file mode 100644 (file)
index 0da75e5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT></TD>
-</TR>
diff --git a/templates/cs/option-pickone.tmpl b/templates/cs/option-pickone.tmpl
deleted file mode 100644 (file)
index 9c7e2a2..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" ID="select-{keyword}" ONCHANGE="update_paramtable('{keyword}')">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT>
-{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
-<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
-<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Body</OPTION>
-<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Millimetry</OPTION>
-<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Centimetry</OPTION>
-<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Palce</OPTION>
-<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Stopy</OPTION>
-<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Metry</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
-}</TABLE>
-</TD>:}
-</TR>
diff --git a/templates/cs/option-trailer.tmpl b/templates/cs/option-trailer.tmpl
deleted file mode 100644 (file)
index 916de2f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-</TABLE>
-
-<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="Nastavit parametry"></P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/cs/pager.tmpl b/templates/cs/pager.tmpl
deleted file mode 100644 (file)
index 35a7a92..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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; Předchozí"></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="Další &#x25b6;"></FORM>:&nbsp;}</TD>
-</TR>
-</TABLE>
diff --git a/templates/cs/printer-accept.tmpl b/templates/cs/printer-accept.tmpl
deleted file mode 100644 (file)
index c81faef..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Příjem úloh u {is_class?třídy:tiskárny} {printer_name}</H2>
-
-<P>{is_class?Třída:Tiskárna} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-nyní přijímá úlohy.</P>
-
-</DIV>
diff --git a/templates/cs/printer-added.tmpl b/templates/cs/printer-added.tmpl
deleted file mode 100644 (file)
index ac59405..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Přidat tiskárnu</H2>
-
-<P>Tiskárna <A HREF="/printers/{printer_name}">{printer_name}</A> byla úspěšně přidána.
-
-</DIV>
diff --git a/templates/cs/printer-configured.tmpl b/templates/cs/printer-configured.tmpl
deleted file mode 100644 (file)
index c002232..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Nastavení parametrů u {printer_name}</H2>
-
-<P>{OP=set-class-options?Class <A HREF="/classes/{printer_name}">:Tiskárna <A HREF="/printers/{printer_name}">}{printer_name}</A>
-byla úspěšně nastavena.
-
-</DIV>
diff --git a/templates/cs/printer-confirm.tmpl b/templates/cs/printer-confirm.tmpl
deleted file mode 100644 (file)
index 5ace8a6..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Výmaz tiskárny {printer_name}</H2>
-
-<P><B>Varování:</B> Opravdu chcete vymazat tiskárnu
-{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="Vymazat tiskárnu"></FORM></P>
-
-</DIV>
diff --git a/templates/cs/printer-default.tmpl b/templates/cs/printer-default.tmpl
deleted file mode 100644 (file)
index d066cc0..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Nastavení {is_class?třídy:tiskárny} {printer_name} jako výchozí</H2>
-
-<P>{is_class?Třída:Tiskárna} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-byla nastavena jako výchozí na serveru.</P>
-
-<BLOCKQUOTE><B>Pozn.</B> libovolný uživatel může pomocí příkazu <TT>lpoptions</TT> přepsat toto nastavení.</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/cs/printer-deleted.tmpl b/templates/cs/printer-deleted.tmpl
deleted file mode 100644 (file)
index 76c8b22..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Výmaz tiskárny {printer_name}</H2>
-
-<P>Tiskárna {printer_name} byla úspěšně vymazána.
-
-</DIV>
diff --git a/templates/cs/printer-jobs-header.tmpl b/templates/cs/printer-jobs-header.tmpl
deleted file mode 100644 (file)
index d8142d1..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Úlohy</H3>
-</DIV>
diff --git a/templates/cs/printer-modified.tmpl b/templates/cs/printer-modified.tmpl
deleted file mode 100644 (file)
index 3dd91d2..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Úprava tiskárny {printer_name}</H2>
-
-<P>Tiskárna <A HREF="/printers/{printer_name}">{printer_name}</A> byla
-úspěšně upravena.
-
-</DIV>
\ No newline at end of file
diff --git a/templates/cs/printer-purge.tmpl b/templates/cs/printer-purge.tmpl
deleted file mode 100644 (file)
index b85195f..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Výmaz úloh u {is_class?třídy:tiskárny} {printer_name}</H2>
-
-<P>U {is_class?třídy:tiskárny} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-byly vymazány všechny úlohy.</P>
-
-</DIV>
-
diff --git a/templates/cs/printer-reject.tmpl b/templates/cs/printer-reject.tmpl
deleted file mode 100644 (file)
index 6ce184b..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Odmítnutí úloh u {is_class?třídy:tiskárny} {printer_name}</H2>
-
-<P>{is_class?Třída:Tiskárna} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-už nepřijímá úlohy.</P>
-
-</DIV>
diff --git a/templates/cs/printer-start.tmpl b/templates/cs/printer-start.tmpl
deleted file mode 100644 (file)
index cc9f3eb..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Obnovení {is_class?třídy:tiskárny} {printer_name}</H2>
-
-<P>{is_class?Třída:Tiskárna} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-byla obnovena.</P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/cs/printer-stop.tmpl b/templates/cs/printer-stop.tmpl
deleted file mode 100644 (file)
index cfecaa0..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Pozastavení {is_class?třídy:tiskárny} {printer_name}</H2>
-
-<P>{is_class?Třída:Tiskárna} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-byla pozastavena.</P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/cs/printer.tmpl b/templates/cs/printer.tmpl
deleted file mode 100644 (file)
index 7e605c5..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?čeká:{printer_state=4?tiskne:pauza}},
-{printer_is_accepting_jobs=0?ne:}přijímá úlohy,
-{server_is_sharing_printers=0?není:{printer_is_shared=0?není:}} sdílení{default_name={printer_name}?, výchozí server:})</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="">Údržba</OPTION>
-<OPTION VALUE="print-test-page">Tisk zkušební stránky</OPTION>
-{printer_commands~.*Clean.*?<OPTION VALUE="clean-print-heads">Vyčištění tiskových hlav</OPTION>:}
-{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">Tisk self-test stránky</OPTION>:}
-{printer_state=5?<OPTION VALUE="start-printer">Obnovení tiskárny</OPTION>:<OPTION VALUE="stop-printer">Pozastavení tiskárny</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Příjem úloh</OPTION>:<OPTION VALUE="reject-jobs">Odmítnutí úloh</OPTION>}
-<OPTION VALUE="move-jobs">Přesun všech úloh</OPTION>
-<OPTION VALUE="purge-jobs">Výmaz všech úloh</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<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="">Administrace</OPTION>
-<OPTION VALUE="modify-printer">Úprava tiskárny</OPTION>
-<OPTION VALUE="delete-printer">Výmaz tiskárny</OPTION>
-<OPTION VALUE="set-printer-options">Nastavení parametrů</OPTION>
-<OPTION VALUE="set-as-default">Nastavení jako výchozí na serveru</OPTION>
-<OPTION VALUE="set-allowed-users">Nastavení přístupu uživatelů</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Popis:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Umístění:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Výrobce a model:</TH><TD>{printer_make_and_model}
-({color_supported=1?barevná:černobílá}{sides_supported?, oboustranný tisk:})<BR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Připojení:</TH><TD>{device_uri}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Nastavení:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:unknown}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/cs/printers-header.tmpl b/templates/cs/printers-header.tmpl
deleted file mode 100644 (file)
index 4755aff..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Žádné tiskárny:Zobrazení {#printer_name} z {total} tiskár{total=1?ny:en}}.</P>
diff --git a/templates/cs/printers.tmpl b/templates/cs/printers.tmpl
deleted file mode 100644 (file)
index 3861ac3..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="Printers 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> Název fronty <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Název fronty <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Popis</TH><TH>Umístění</TH><TH>Výrobce a model</TH><TH>Stav</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?Čeká:{printer_state=4?Tiskne:Pauza}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/cs/restart.tmpl b/templates/cs/restart.tmpl
deleted file mode 100644 (file)
index 1c68b05..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Změna nastavení</H2>
-
-<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> Prosím čekejte, probíhá restart serveru ...</P>
-
-</DIV>
diff --git a/templates/cs/samba-export.tmpl b/templates/cs/samba-export.tmpl
deleted file mode 100644 (file)
index afc0bea..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<SCRIPT TYPE="text/javascript"><!--
-function select_printers() {
-  var list = document.export_samba.EXPORT_NAME;
-  var sel = document.export_samba.EXPORT_ALL.checked;
-
-  for (i = 0; i < list.length; i ++) {
-    list.options[i].selected = sel;
-  }
-}
---></SCRIPT>
-
-<FORM METHOD="POST" ACTION="/admin/" NAME="export_samba">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
-
-<H2 CLASS="title">Export tiskáren do Samby</H2>
-
-{error?<P>Nelze exportovat tiskárny do Samby\:</P>
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-<P>Nahlédnout do <A HREF="/admin/log/error_log"
-TARGET="_blank">error_log</A> souboru pro více informací.</P>:
-
-<P>Tato stránka umožňuje export tiskáren do Samby, aby k nim klienti
-systému Windows mohli přistupovat pomocí ikon <VAR>Okolní počítače</VAR>
-nebo <VAR>Místa v síti</VAR> na své pracovní ploše. Musíte předem
-nainstalovat ovladače OS Windows pro postScriptové tiskárny, jak je popsáno v
- <A HREF="/help/man-cupsaddsmb.html" TARGET="_blank">cupsaddsmb(8)</A> 
-manuálové stránky.</P>}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Tiskárny:</TH>
-<TD>
-<SELECT NAME="EXPORT_NAME" SIZE="10" MULTIPLE>
-{[printer_name]<OPTION VALUE="{printer_name}"{export_all? SELECTED:{printer_export? SELECTED:}}>{printer_name}}
-</SELECT><BR>
-<INPUT TYPE="CHECKBOX" NAME="EXPORT_ALL"{export_all? CHECKED:}
-onChange="select_printers()"> Export všech tiskáren
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Uživatel Samby:</TH>
-<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (povinný údaj)</TD>
-</TR>
-<TR>
-<TH CLASS="label">Heslo uživatele:</TH>
-<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (povinný údaj)</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Export tiskáren"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/cs/samba-exported.tmpl b/templates/cs/samba-exported.tmpl
deleted file mode 100644 (file)
index 121fe48..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P>Export tiskáren do Samby byl úspěšně proveden.</P>
diff --git a/templates/cs/search.tmpl b/templates/cs/search.tmpl
deleted file mode 100644 (file)
index cad77ca..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
-{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
-{ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
-
-<P ALIGN="CENTER"><B>Hledat v
-{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?třídách:{SECTION=jobs?úlohách:tiskárnách}}}:</B>
-<INPUT TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40"  PLACEHOLDER="" AUTOSAVE="org.cups.{SECTION}" RESULTS="20"> <INPUT
-TYPE="SUBMIT" VALUE="Hledat"> <INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Smazat"></P>
-
-</FORM>
diff --git a/templates/cs/set-printer-options-header.tmpl b/templates/cs/set-printer-options-header.tmpl
deleted file mode 100644 (file)
index 160ae6b..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Nastavení parametrů u {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="Nastavit výchozí parametry tiskárny">:}
-
-<SCRIPT TYPE="text/javascript"><!--
-function update_paramtable(option)
-{
-  var cb = document.getElementById("select-" + option)
-  var paramstable = document.getElementById(option + "-params");
-  if (cb.value == "Custom")
-    paramstable.style.display = "table";
-  else
-    paramstable.style.display = "none";
-}
---></SCRIPT>
-
-<H3 CLASS="title">{[group_id]
-<A HREF="#{group_id}">{group}</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</H3>
-
-<DIV CLASS="tabs">
diff --git a/templates/cs/set-printer-options-trailer.tmpl b/templates/cs/set-printer-options-trailer.tmpl
deleted file mode 100644 (file)
index 11adc70..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-</DIV>
-
-<SCRIPT TYPE="text/javascript"><!--
-// Hide custom options parameters for browsers that understand Javascript
-var paramtables = document.getElementsByName("paramtable");
-for (var i = 0; i < paramtables.length; i++)
-{
-  var opt = paramtables[i].id.substr(0, paramtables[i].id.lastIndexOf("-"));
-  var cb = document.getElementById("select-" + opt);
-  if (cb.value != "Custom")
-    paramtables[i].style.display = "none";
-}
---></SCRIPT>
-</FORM>
-
-</DIV>
diff --git a/templates/cs/subscription-added.tmpl b/templates/cs/subscription-added.tmpl
deleted file mode 100644 (file)
index 926d796..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>Předplatné {subscription_name} bylo úspěšně přidáno.</P>
-
-</DIV>
diff --git a/templates/cs/subscription-canceled.tmpl b/templates/cs/subscription-canceled.tmpl
deleted file mode 100644 (file)
index 0e25268..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>Předplatné #{notify_subscription_id} bylo zrušeno.</P>
-
-</DIV>
diff --git a/templates/cs/test-page.tmpl b/templates/cs/test-page.tmpl
deleted file mode 100644 (file)
index d1a1d9d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Tisk zkušební stránky na {printer_name}</H2>
-
-<P>Zkušební stránka odeslána; ID úlohy je <A HREF="/{SECTION}/{printer_name}">
-{printer_name}-{job_id}</A>.</P>
-
-</DIV>
diff --git a/templates/cs/trailer.tmpl b/templates/cs/trailer.tmpl
deleted file mode 100644 (file)
index 5817101..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS a logo CUPS jsou ochranné známky společnosti
-<A HREF="http://www.apple.com">Apple Inc.</A> CUPS je chráněn autorskými
-právy 2007-2014 Apple Inc. Všechna práva vyhrazena.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/templates/cs/users.tmpl b/templates/cs/users.tmpl
deleted file mode 100644 (file)
index ff39cc3..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<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">Nastavení přístupu uživatelů u {printer_name}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Uživatelé:</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:}>Povolit uživatelům tisknout
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>Zakázat uživatelům tisknout
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>
-<INPUT TYPE="SUBMIT" VALUE="Nastavení přístupů">
-</TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/de/add-class.tmpl b/templates/de/add-class.tmpl
deleted file mode 100644 (file)
index b91be30..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Klasse hinzufügen</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Name:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Darf alle druckbaren Zeichen au&szlig;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>
-</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>
-</TR>
-<TR>
-<TH CLASS="label">Mitglieder:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Klasse hinzufügen"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/de/add-printer.tmpl b/templates/de/add-printer.tmpl
deleted file mode 100644 (file)
index 05af41f..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Drucker hinzufügen (Schritt 3/5)</H2>
-
-<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="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
-{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Name:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
-<SMALL>(Darf alle druckbaren Zeichen au&szlig;er "/", "#", und Leerzeichen enthalten)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Beschreibung:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_INFO}"><BR>
-<SMALL>(Für Menschen lesbare Beschreibung wie "HP LaserJet with Duplexer")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Ort:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_LOCATION}"><BR>
-<SMALL>(Für Menschen lesbarer Ort wie "Lab 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Verbindung:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Freigabe:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Diesen Drucker im Netz freigeben</TD>
-</TR>
-<TR>
-<TH CLASS="label">Farbmanagement:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_COLORMANAGED" {PRINTER_IS_COLORMANAGED=1?CHECKED:}>
-Einschalten</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Weiter"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/de/add-rss-subscription.tmpl b/templates/de/add-rss-subscription.tmpl
deleted file mode 100644 (file)
index 16fe5ad..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<FORM METHOD="POST" ACTION="/admin">
-<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>
-
-<TABLE SUMMARY="Forumlar zum Hinzufügen einer RSS Subskription">
-<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>
-</TR>
-<TR>
-<TH CLASS="label">Warteschlange:</TH>
-<TD COLSPAN="5"><SELECT NAME="PRINTER_URI" SIZE="10"><OPTION VALUE="#ALL#"{?PRINTER_URI=#ALL#? SELECTED:}>Alle Warteschlangen</OPTION>{[printer_name]<OPTION VALUE="{printer_uri_supported}"{?PRINTER_URI={printer_uri_supported}? SELECTED:}>{printer_name}</OPTION>}</SELECT></TD>
-</TR>
-<TR VALIGN="TOP">
-<TH CLASS="label">Ereignisse:</TH>
-<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 Gestoppt<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>Auftrags Parameter Geändert</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_STOPPED" {?EVENT_PRINTER_STOPPED}>Warteschlange Gestoppt<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_ADDED" {?EVENT_PRINTER_ADDED}>Warteschlange Hinzugefügt<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_MODIFIED" {?EVENT_PRINTER_MODIFIED}>Warteschlange Geändert<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_DELETED" {?EVENT_PRINTER_DELETED}>Warteschlange Gelöscht</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<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 Gestoppt<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>
-</TR>
-<TR>
-<TH CLASS="label">Maximale Ereignisse in Durchführung:</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="RSS Subskription hinzufügen"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/de/admin.tmpl b/templates/de/admin.tmpl
deleted file mode 100644 (file)
index 6ed0585..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-<TABLE CLASS="indent" SUMMARY="Administrative Tätigkeiten">
-<TR><TD VALIGN="TOP">
-
-<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="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="Verfügbare Drucker auflisten"></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="Klassen verwalten"></FORM>
-</P>
-
-<H2 CLASS="title">Druckaufträge</H2>
-
-<P>
-<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Aufträge verwalten"></FORM>
-</P>
-
-</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
-
-<H2 CLASS="title">Server</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="Konfigurationsdatei bearbeiten"></FORM>
-<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Zugriffsprotokoll betrachten"></FORM>
-<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Fehlerprotokoll betrachten"></FORM>
-<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Seitenprotokoll betrachten"></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>Erweiterte Servereinstellungen\:</B></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="REMOTE_PRINTERS" {?remote_printers}> Zeige freigegebene Drucker von anderen Systemen<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Protokolle\:
-<INPUT TYPE="CHECKBOX" NAME="BROWSE_REMOTE_CUPS" {?browse_remote_cups}> CUPS
-{HAVE_LDAP?<INPUT TYPE="CHECKBOX" NAME="BROWSE_REMOTE_LDAP" {?browse_remote_ldap}> LDAP:}
-{HAVE_LIBSLP?<INPUT TYPE="CHECKBOX" NAME="BROWSE_REMOTE_SLP" {?browse_remote_slp}> SLP:}<BR>
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Freigeben von Druckern welche mit diesem System verbunden sind<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Klienten maximal\:
-<INPUT TYPE="TEXT" NAME="MAX_CLIENTS" VALUE="{?max_clients}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Protokolle\:
-<INPUT TYPE="CHECKBOX" NAME="BROWSE_LOCAL_CUPS" {?browse_local_cups}> CUPS
-{HAVE_DNSSD?<INPUT TYPE="CHECKBOX" NAME="BROWSE_LOCAL_DNSSD" {?browse_local_dnssd}> DNS-SD:}
-{HAVE_LDAP?<INPUT TYPE="CHECKBOX" NAME="BROWSE_LOCAL_LDAP" {?browse_local_ldap}> LDAP:}
-{HAVE_LIBSLP?<INPUT TYPE="CHECKBOX" NAME="BROWSE_LOCAL_SLP" {?browse_local_slp}> SLP:}<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Erlaube Drucken vom Internet aus<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Veröffentliche Webinterface<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Erlaube entfernte Verwaltung<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 jeden Auftrag abzubrechen (nicht nur die Eigenen)<BR>
-<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOB_HISTORY" {?preserve_job_history}> Auftragsverlauf aufbewahren<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Anzahl der Aufträge\:
-<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOB_FILES" {?preserve_job_files}> Dateien von Druckaufträgen aufbewahren<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Speichere Fehlerinformationen für Fehlersuche<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximale Grösse der Protokolldatei\:
-<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
-
-:<P><B>Grundlegende Servereinstellungen:</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="REMOTE_PRINTERS" {?remote_printers}> Zeige freigegebene Drucker von anderen Systemen<BR>
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Freigeben von Druckern welche mit diesem System verbunden sind<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Erlaube Drucken vom Internet aus<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Erlaube entfernte Verwaltung<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 jeden Auftrag abzubrechen (nicht nur die Eigenen)<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Speichere Fehlerinformationen für Fehlersuche</P>
-
-}
-<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Einstellungen ändern"></P>
-
-</FORM>}
-
-</TD></TR>
-</TABLE>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">RSS Subskriptionen</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>
-</P>
-
-</DIV>
-
-{notify_subscription_id?<TABLE CLASS="list" SUMMARY=">RSS Subskriptionen">
-<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}:Alle Warteschlangen}</TD></TR>}
-</TBODY>
-</TABLE>:}
diff --git a/templates/de/choose-device.tmpl b/templates/de/choose-device.tmpl
deleted file mode 100644 (file)
index 7cb9e77..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?{printer_name} ändern:Drucker hinzufügen (Schritt 1/5)}</H2>
-
-{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">Aktuelle Verbindung\:</TH>
-<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
-{current_device_uri}</TD>
-</TR>}
-<TR>
-<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>
-:}}
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Entdeckte 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>
-:}:}}
-</TD>
-</TR>
-<TR>
-<TR>
-<TH CLASS="label">Andere 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!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-}:}}
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Weiter"></TD>
-</TR>
-</TABLE>
-
-</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> Suche nach Druckern...</P>}
-</DIV>
-
diff --git a/templates/de/choose-make.tmpl b/templates/de/choose-make.tmpl
deleted file mode 100644 (file)
index a7eb0c1..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?{printer_name} ändern:Drucker hinzufügen (Schritt4/5)}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<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}">:}
-<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}">
-
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Name:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Beschreibung:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Ort:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Verbindung:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<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>
-</TR>
-<TR>
-<TH CLASS="label">Farbmanagement:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_COLORMANAGED" VALUE="{?printer_is_colormanaged}">{?printer_is_colormanaged=?Not:{?printer_is_colormanaged=0?Not:}} Enabled</TD>
-</TR>
-<TR>
-<TH CLASS="label">Marke:</TH>
-<TD>
-<SELECT NAME="PPD_MAKE" SIZE="10">
-{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Weiter"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>&nbsp;</TD>
-</TR>
-<TR>
-<TH CLASS="label">Oder stellen Sie eine PPD Datei bereit:</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?Drucker hinzufügen:Drucker ändern}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/de/choose-model.tmpl b/templates/de/choose-model.tmpl
deleted file mode 100644 (file)
index 74ddcc5..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?{printer_name} ändern:Drucker hinzufügen (Schritt 5/5)}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<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}">:}
-<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}">
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Name:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Beschreibung:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Ort:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Verbindung:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<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>
-</TR>
-<TR>
-<TH CLASS="label">Farmbmanagement:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_COLORMANAGED" VALUE="{?printer_is_colormanaged}">
-{?printer_is_colormanaged=?Eingeschaltet:{?printer_is_colormanaged=0?Ausgeschaltet:}} Eingeschaltet</TD>
-</TR>
-<TR>
-<TH CLASS="label">Marke:</TH>
-<TD>{PPD_MAKE} <INPUT TYPE="SUBMIT" NAME="SELECT_MAKE" VALUE="Andere(n) Marke/Hersteller auswählen"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Modell:</TH>
-<TD>
-<SELECT NAME="PPD_NAME" SIZE="10">
-{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Aktueller Treiber - {current_make_and_model}</OPTION>:}
-{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
-}</SELECT>
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Oder stellen Sie eine PPD Datei bereit:</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?Drucker hinzufügen:Drucker ändern}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/de/choose-serial.tmpl b/templates/de/choose-serial.tmpl
deleted file mode 100644 (file)
index f601f5b..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?{printer_name} ändern:Drucker hinzufügen}</H2>
-
-<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>
-<TR>
-<TH CLASS="label">Verbindung:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Baud Rate:</TH>
-<TD><SELECT NAME="BAUDRATE">
-{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Parität:</TH>
-<TD><SELECT NAME="PARITY">
-<OPTION VALUE="none" {?parity=none?SELECTED:}>Keine
-<OPTION VALUE="even" {?parity=even?SELECTED:}>Gerade
-<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Ungerade
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Daten Bits:</TH>
-<TD><SELECT NAME="BITS">
-<OPTION {?bits=8?SELECTED:}>8
-<OPTION {?bits=7?SELECTED:}>7
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Flu&szlig;kontrolle:</TH>
-<TD><SELECT NAME="FLOW">
-<OPTION VALUE="none" {?flow=none?SELECTED:}>None
-<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)
-</SELECT></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Weiter"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/de/choose-uri.tmpl b/templates/de/choose-uri.tmpl
deleted file mode 100644 (file)
index a8a202a..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?{printer_name} ändern:Drucker hinzufügen (Schritt2/5)}</H2>
-
-<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}">:}
-<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Verbindungs-URI:</TH>
-<TD><INPUT TYPE="URL" SIZE="60" MAXLENGTH="1024" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>Beispiele:
-<PRE>
-    http://Hostname:631/ipp/
-    http://Hostname:631/ipp/Anschluss1
-
-    ipp://Hostname/ipp/
-    ipp://Hostname/ipp/Anschluss1
-
-    lpd://Hostname/Warteschlange
-
-    socket://Hostname
-    socket://Hostname:9100
-</PRE>
-
-<P>Bitte lesen Sie <A HREF="/help/network.html" TARGET="_blank">"Netzwerk
-Drucker"</A> um die korrekte URI für Ihren Drucker zu benutzen.</P>
-
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Weiter"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/de/class-added.tmpl b/templates/de/class-added.tmpl
deleted file mode 100644 (file)
index 9d619da..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Klasse hinzufügen</H2>
-
-<P>Die Klasse <A HREF="/classes/{printer_name}">{printer_name}</A> wurde erfolgreich 
-hinzugefügt.
-
-</DIV>
diff --git a/templates/de/class-confirm.tmpl b/templates/de/class-confirm.tmpl
deleted file mode 100644 (file)
index d4a7777..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<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 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>
-
-</DIV>
diff --git a/templates/de/class-deleted.tmpl b/templates/de/class-deleted.tmpl
deleted file mode 100644 (file)
index 7697db2..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Klasse {printer_name} löschen</H2>
-
-<P>Die Klasse {printer_name} wurde erfolgreich gelöscht.
-
-</DIV>
diff --git a/templates/de/class-jobs-header.tmpl b/templates/de/class-jobs-header.tmpl
deleted file mode 100644 (file)
index b563995..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Aufträge</H3>
-</DIV>
diff --git a/templates/de/class-modified.tmpl b/templates/de/class-modified.tmpl
deleted file mode 100644 (file)
index d25ba85..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Klasse {printer_name} ändern</H2>
-
-<P>Die Klasse <A HREF="/classes/{printer_name}">{printer_name}</A> wurde
-erfolgreich geändert.
-
-</DIV>
diff --git a/templates/de/class.tmpl b/templates/de/class.tmpl
deleted file mode 100644 (file)
index f9cb3ea..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-<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>
-
-<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="move-jobs">Alle Aufträge verschieben</OPTION>
-<OPTION VALUE="purge-jobs">Alle Aufträge abbrechen</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<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="">Administration</OPTION>
-<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-allowed-users">Erlaubte Benutzer festlegen</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
-</FORM>
-
-<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">Standardeinstellungen:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:unbekannt}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
diff --git a/templates/de/classes-header.tmpl b/templates/de/classes-header.tmpl
deleted file mode 100644 (file)
index 5fa4d4a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Keine Klassen:Zeige {#printer_name} von {total} Klasse{total=1?:n}}.</P>
diff --git a/templates/de/classes.tmpl b/templates/de/classes.tmpl
deleted file mode 100644 (file)
index c04d02b..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{#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> 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>
-</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>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/de/command.tmpl b/templates/de/command.tmpl
deleted file mode 100644 (file)
index 2602699..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<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
-{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?,
-<EM>"{job_printer_state_message}"</EM>:}}</P>
-
-</DIV>
diff --git a/templates/de/edit-config.tmpl b/templates/de/edit-config.tmpl
deleted file mode 100644 (file)
index 9660346..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<SCRIPT TYPE="text/javascript">
-function reset_config()
-{
-  document.cups.CUPSDCONF.value = "{?cupsdconf_default}";
-}
-</SCRIPT>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Konfigurationsdatei ändern</H2>
-
-<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-
-<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"
-onClick="reset_config();"></P>
-
-</FORM>
-
-</DIV>
diff --git a/templates/de/error-op.tmpl b/templates/de/error-op.tmpl
deleted file mode 100644 (file)
index d47e730..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} Error</H2>
-
-<P>Fehler:</P>
-
-<BLOCKQUOTE>Unbekannte Operation "{op}"!</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/de/error.tmpl b/templates/de/error.tmpl
deleted file mode 100644 (file)
index 1a7f650..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} Error</H2>
-
-<P>{?message?{message}:Fehler:}</P>
-
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/de/header.tmpl.in b/templates/de/header.tmpl.in
deleted file mode 100644 (file)
index 7a0ac78..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<!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_VERSION@</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;Startseite&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;Administration&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=classes?:un}sel"><A HREF="/classes/">&nbsp;&nbsp;Klassen&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=help?:un}sel"><A HREF="/help/">&nbsp;&nbsp;Online&nbsp;Hilfe&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;Aufträge&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;Drucker&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Sucher in der Hilfe"
-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>
-<TR><TD COLSPAN="9">&nbsp;</TD></TR>
-</TABLE>
-<DIV ID="body">
diff --git a/templates/de/help-header.tmpl b/templates/de/help-header.tmpl
deleted file mode 100644 (file)
index c9f25a6..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-<DIV CLASS="indent">
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
-{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
-
-<P ALIGN="CENTER"><B>Suche in
-{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:allen Dokumenten}}:</B> <INPUT
-TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER=""
-AUTOSAVE="org.cups.help" RESULTS="20">
-<INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="Suchen">
-<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Leeren"></P>
-
-</FORM>
-
-<!-- Bookmarks -->
-<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Inhalt">
-<TR><TD>
-
-<H3 CLASS="title">Online Hilfe Dokumente</H3>
-
-<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Alle Dokumente</A></P>
-<HR>
-
-{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
-}
-</TD></TR>
-</TABLE></DIV>
-
-{QUERY?<P>Suchergebnisse in {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:allen Dokumenten}}\:</P>
-{QTEXT?<UL>
-{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (in <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
-{QTEXT?</UL>:}
-:<P>Keine Übereinstimmung gefunden.</P>}
-<HR NOSHADE>:}
-{HELPTITLE?<H1>{HELPTITLE}</H1>
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Druckversion anzeigen"></FORM>:
-
-<H1>CUPS Hilfeseiten</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>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
-1.7</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>}
diff --git a/templates/de/help-printable.tmpl b/templates/de/help-printable.tmpl
deleted file mode 100644 (file)
index 2463c16..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<!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/de/help-trailer.tmpl b/templates/de/help-trailer.tmpl
deleted file mode 100644 (file)
index 4c1ebed..0000000
+++ /dev/null
@@ -1 +0,0 @@
-</DIV>
diff --git a/templates/de/job-cancel.tmpl b/templates/de/job-cancel.tmpl
deleted file mode 100644 (file)
index 4ff2ec9..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Auftrag {job_id} löschen</H2>
-
-<P><A HREF="{job_printer_uri}">Auftrag {job_id}</A> wurde gelöscht.
-
-</DIV>
diff --git a/templates/de/job-hold.tmpl b/templates/de/job-hold.tmpl
deleted file mode 100644 (file)
index aaddb20..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Auftrag {job_id} anhalten</H2>
-
-<P><A HREF="{job_printer_uri}">Auftrag {job_id}</A> wurde vom Drucken abgehalten.
-
-</DIV>
diff --git a/templates/de/job-move.tmpl b/templates/de/job-move.tmpl
deleted file mode 100644 (file)
index 916369f..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<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}">
-{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
-
-<H2 CLASS="title">{job_id?Auftrag {job_id} verschieben:Alle Aufträge verschieben}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Neues Ziel:</TH>
-<TD>
-<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
-{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{job_id?Auftrag verschieben:Aufträge verschieben}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-
-</DIV>
diff --git a/templates/de/job-moved.tmpl b/templates/de/job-moved.tmpl
deleted file mode 100644 (file)
index 6d4a6d5..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{job_id?Auftrag {job_id} verschieben:Alle Aufträge verschieben}</H2>
-
-<P>{job_id?<A HREF="/jobs/{job_id}">Auftrag {job_id}</A>:Alle Aufträge} nach
-<A HREF="{job_printer_uri}">{job_printer_name}</A> verschoben.</P>
-
-</DIV>
diff --git a/templates/de/job-release.tmpl b/templates/de/job-release.tmpl
deleted file mode 100644 (file)
index e1d4227..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Auftrag {job_id} freigeben</H2>
-
-<P><A HREF="{job_printer_uri}">Auftrag {job_id}</A> wurde zum Drucken freigegeben.
-
-</DIV>
diff --git a/templates/de/job-restart.tmpl b/templates/de/job-restart.tmpl
deleted file mode 100644 (file)
index b487697..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Auftrag {job_id} neu starten</H2>
-
-<P><A HREF="{job_printer_uri}">Auftrag {job_id}</A> wurde neu gestartet.
-
-</DIV>
diff --git a/templates/de/jobs-header.tmpl b/templates/de/jobs-header.tmpl
deleted file mode 100644 (file)
index b2f9e18..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">{?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=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>}</DIV>
-
-<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>
diff --git a/templates/de/jobs.tmpl b/templates/de/jobs.tmpl
deleted file mode 100644 (file)
index 29214e0..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-{#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>Kontrolle</TH></TR>
-</THEAD>
-<TBODY>
-{[job_id]
-<TR VALIGN="TOP">
-<TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id}&nbsp;</TD>
-<TD>{?job_name=?Unbekannt:{job_name}}&nbsp;</TD>
-<TD>{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>
-<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="Auftrag neu drucken"></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="Auftrag freigeben"></FORM>:}
-{job_state=3?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-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="Auftrag anhalten"></FORM>:}
-{job_state<7?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-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="Auftrag löschen"></FORM>
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="move-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="SUBMIT" VALUE="Auftrag verschieben"></FORM>:}
-&nbsp;</TD>
-</TR>
-}
-</TBODY>
-</TABLE>
-}
diff --git a/templates/de/list-available-printers.tmpl b/templates/de/list-available-printers.tmpl
deleted file mode 100644 (file)
index a70fdeb..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Verfügbare Drucker</H2>
-
-{#device_uri=0?<P>Keine Drucker gefunden.</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="Diesen Drucker hinzufügen"></FORM>
-{device_make_and_model} ({device_info})</LI>
-}</UL>}
-
-</DIV>
diff --git a/templates/de/modify-class.tmpl b/templates/de/modify-class.tmpl
deleted file mode 100644 (file)
index 7caee56..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Klasse {printer_name} ändern</H2>
-
-<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}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Beschreibung:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Ort:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Mitglieder:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Klasse ändern"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/de/modify-printer.tmpl b/templates/de/modify-printer.tmpl
deleted file mode 100644 (file)
index 3903bf7..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{printer_name} ändern</H2>
-
-<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="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="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Beschreibung:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Für Menschen lesbare Beschreibung wie "HP LaserJet with Duplexer")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Ort:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Für Menschen lesbarer Ort wie "Lab 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Verbindung:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Freigabe:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Diesen Drucker im Netz freigeben</TD>
-</TR>
-<TR>
-<TH CLASS="label">Farbmanagement:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_COLORMANAGED" {PRINTER_IS_COLORMANAGED=1?CHECKED:}>
-Einschalten</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Weiter"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/de/norestart.tmpl b/templates/de/norestart.tmpl
deleted file mode 100644 (file)
index ec3c60d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Change Settings</H2>
-
-<P>Der Server wurde nicht neu gestartet, da die Konfiguration
-nicht geändert wurde...</P>
-
-</DIV>
diff --git a/templates/de/option-boolean.tmpl b/templates/de/option-boolean.tmpl
deleted file mode 100644 (file)
index e832ee1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD>
-{[choices]<INPUT TYPE="RADIO" NAME="{keyword-1}" {choices={defchoice-1}?CHECKED:} VALUE="{choices}">{text}}
-</TD>
-</TR>
diff --git a/templates/de/option-conflict.tmpl b/templates/de/option-conflict.tmpl
deleted file mode 100644 (file)
index 347908d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<P><B>Error:</B> The following options are conflicting:</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>
diff --git a/templates/de/option-header.tmpl b/templates/de/option-header.tmpl
deleted file mode 100644 (file)
index 464726a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="tab" ID="{group_id}">
-
-<H3 ALIGN="CENTER">{group}</H3>
-
-<TABLE WIDTH="100%">
diff --git a/templates/de/option-pickmany.tmpl b/templates/de/option-pickmany.tmpl
deleted file mode 100644 (file)
index 0da75e5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT></TD>
-</TR>
diff --git a/templates/de/option-pickone.tmpl b/templates/de/option-pickone.tmpl
deleted file mode 100644 (file)
index 1467b36..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" ID="select-{keyword}" ONCHANGE="update_paramtable('{keyword}')">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT>
-{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
-<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
-<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Punkte</OPTION>
-<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="m"{paramvalue=m? SELECTED:}>Meter</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
-}</TABLE>
-</TD>:}
-</TR>
diff --git a/templates/de/option-trailer.tmpl b/templates/de/option-trailer.tmpl
deleted file mode 100644 (file)
index 87adedb..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-</TABLE>
-
-<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="Standardeinstellungen festlegen"></P>
-
-</DIV>
diff --git a/templates/de/pager.tmpl b/templates/de/pager.tmpl
deleted file mode 100644 (file)
index 1164045..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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>
-</TR>
-</TABLE>
diff --git a/templates/de/printer-accept.tmpl b/templates/de/printer-accept.tmpl
deleted file mode 100644 (file)
index 3a610c0..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Aufträge von {is_class?Klasse:Drucker} {printer_name} akzeptieren</H2>
-
-<P>{is_class?Klasse:Drucker} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-aktzeptiert jetzt Aufträge.</P>
-
-</DIV>
diff --git a/templates/de/printer-added.tmpl b/templates/de/printer-added.tmpl
deleted file mode 100644 (file)
index e09ce01..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Drucker hinzufügen</H2>
-
-<P>Drucker <A HREF="/printers/{printer_name}">{printer_name}</A> wurde erfolgreich
-hinzufügt.
-
-</DIV>
diff --git a/templates/de/printer-configured.tmpl b/templates/de/printer-configured.tmpl
deleted file mode 100644 (file)
index 8ff9a60..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Standardeinstellungen für {printer_name} festlegen</H2>
-
-<P>Standardeinstellungen für {OP=set-class-options?Klasse <A HREF="/classes/{printer_name}">:Drucker <A HREF="/printers/{printer_name}">}{printer_name}</A>
-wurden erfolgreich gesetzt.
-
-</DIV>
diff --git a/templates/de/printer-confirm.tmpl b/templates/de/printer-confirm.tmpl
deleted file mode 100644 (file)
index 2a5890f..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<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 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>
-
-</DIV>
diff --git a/templates/de/printer-default.tmpl b/templates/de/printer-default.tmpl
deleted file mode 100644 (file)
index 6bfd7fc..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{is_class?Klasse:Drucker} {printer_name} als Standard festlegen</H2>
-
-<P>{is_class?Klasse:Drucker} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-wurde zum Standarddrucker für diesen Server gemacht.</P>
-
-<BLOCKQUOTE><B>Notiz:</B> Die Einstellungen des Standarddruckers
-welche von Benutzern mittels dem <TT>lpoptions</TT> Befehl gesetzt wurden,
-überschreiben diese Einstellung.</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/de/printer-deleted.tmpl b/templates/de/printer-deleted.tmpl
deleted file mode 100644 (file)
index 4e03ae6..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Drucker {printer_name} löschen</H2>
-
-<P>Drucker {printer_name} wurde erfolgreich gelöscht.
-
-</DIV>
diff --git a/templates/de/printer-jobs-header.tmpl b/templates/de/printer-jobs-header.tmpl
deleted file mode 100644 (file)
index b563995..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Aufträge</H3>
-</DIV>
diff --git a/templates/de/printer-modified.tmpl b/templates/de/printer-modified.tmpl
deleted file mode 100644 (file)
index cd9792d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Drucker {printer_name} ändern</H2>
-
-<P>Drucker <A HREF="/printers/{printer_name}">{printer_name}</A> wurde
-erfolgreich geändert.
-
-</DIV>
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>
diff --git a/templates/de/printer-reject.tmpl b/templates/de/printer-reject.tmpl
deleted file mode 100644 (file)
index 867fe40..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} ablehnen</H2>
-
-<P>{is_class?Die Klasse:Der Drucker} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-akzeptiert keine weiteren Aufträge.</P>
-
-</DIV>
diff --git a/templates/de/printer-start.tmpl b/templates/de/printer-start.tmpl
deleted file mode 100644 (file)
index 7a78568..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{is_class?Die Klasse:Den Drucker} {printer_name} fortfahren</H2>
-
-<P>{is_class?Die Klassen:Der Drucker} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-wird fortgesetzt.</P>
-
-</DIV>
diff --git a/templates/de/printer-stop.tmpl b/templates/de/printer-stop.tmpl
deleted file mode 100644 (file)
index b304bd9..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{is_class?Die Klasse:Den Drucker} {printer_name} anhalten</H2>
-
-<P>{is_class?Die Klasse:Der Drucker} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-wurde angehalten.</P>
-
-</DIV>
diff --git a/templates/de/printer.tmpl b/templates/de/printer.tmpl
deleted file mode 100644 (file)
index 3b702b1..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-<DIV CLASS="indent">
-
-<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>
-
-<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">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>}
-<OPTION VALUE="move-jobs">Alle Aufträge verschieben</OPTION>
-<OPTION VALUE="purge-jobs">Alle Aufträge abbrechen</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<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="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-allowed-users">Erlaubte Benutzer festlegen</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<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">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}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
-
-
diff --git a/templates/de/printers-header.tmpl b/templates/de/printers-header.tmpl
deleted file mode 100644 (file)
index 7ee520e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Keine Drucker:Zeige {#printer_name} von {total} Drucker{total=1?:n}}.</P>
diff --git a/templates/de/printers.tmpl b/templates/de/printers.tmpl
deleted file mode 100644 (file)
index 360154f..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{#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>
-</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>
-}
-</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>
-
-
diff --git a/templates/de/restart.tmpl b/templates/de/restart.tmpl
deleted file mode 100644 (file)
index d7efa7b..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Einstellungen ändern</H2>
-
-<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> Bitte warten Sie während der Server neu startet...</P>
-
-</DIV>
diff --git a/templates/de/samba-export.tmpl b/templates/de/samba-export.tmpl
deleted file mode 100644 (file)
index e856ff5..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<SCRIPT TYPE="text/javascript"><!--
-function select_printers() {
-  var list = document.export_samba.EXPORT_NAME;
-  var sel = document.export_samba.EXPORT_ALL.checked;
-
-  for (i = 0; i < list.length; i ++) {
-    list.options[i].selected = sel;
-  }
-}
---></SCRIPT>
-
-<FORM METHOD="POST" ACTION="/admin/" NAME="export_samba">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
-
-<H2 CLASS="title">Drucker für Samba freigeben</H2>
-
-{error?<P>Kann Drucker nicht für Samba freigeben\:</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
-HREF="/help/man-cupsaddsmb.html"
-TARGET="_blank">cupsaddsmb(8)</A> beschrieben ist.</P>}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Drucker:</TH>
-<TD>
-<SELECT NAME="EXPORT_NAME" SIZE="10" MULTIPLE>
-{[printer_name]<OPTION VALUE="{printer_name}"{export_all? SELECTED:{printer_export? SELECTED:}}>{printer_name}}
-</SELECT><BR>
-<INPUT TYPE="CHECKBOX" NAME="EXPORT_ALL"{export_all? CHECKED:}
-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>
-</TR>
-<TR>
-<TH CLASS="label">Samba Passwort:</TH>
-<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (benötigt)</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Drucker für Samba freigeben"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/de/samba-exported.tmpl b/templates/de/samba-exported.tmpl
deleted file mode 100644 (file)
index 0e088ed..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P>Drucker wurden erfolgreich für Samba freigegeben.</P>
diff --git a/templates/de/search.tmpl b/templates/de/search.tmpl
deleted file mode 100644 (file)
index c4e89b8..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
-{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
-{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>
-<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>
-
-</FORM>
diff --git a/templates/de/set-printer-options-header.tmpl b/templates/de/set-printer-options-header.tmpl
deleted file mode 100644 (file)
index 54ddd25..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Standardeinstellungen für {printer_name} festlegen</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="Drucker nach Standardeinstellungen fragen">:}
-
-<SCRIPT TYPE="text/javascript"><!--
-function update_paramtable(option)
-{
-  var cb = document.getElementById("select-" + option)
-  var paramstable = document.getElementById(option + "-params");
-  if (cb.value == "Custom")
-    paramstable.style.display = "table";
-  else
-    paramstable.style.display = "none";
-}
---></SCRIPT>
-
-<H3 CLASS="title">{[group_id]
-<A HREF="#{group_id}">{group}</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</H3>
-
-<DIV CLASS="tabs">
diff --git a/templates/de/set-printer-options-trailer.tmpl b/templates/de/set-printer-options-trailer.tmpl
deleted file mode 100644 (file)
index 11adc70..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-</DIV>
-
-<SCRIPT TYPE="text/javascript"><!--
-// Hide custom options parameters for browsers that understand Javascript
-var paramtables = document.getElementsByName("paramtable");
-for (var i = 0; i < paramtables.length; i++)
-{
-  var opt = paramtables[i].id.substr(0, paramtables[i].id.lastIndexOf("-"));
-  var cb = document.getElementById("select-" + opt);
-  if (cb.value != "Custom")
-    paramtables[i].style.display = "none";
-}
---></SCRIPT>
-</FORM>
-
-</DIV>
diff --git a/templates/de/subscription-added.tmpl b/templates/de/subscription-added.tmpl
deleted file mode 100644 (file)
index f5fd1ab..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>Subskription {subscription_name} wurde erfolgreich hinzugefügt.</P>
-
-</DIV>
diff --git a/templates/de/subscription-canceled.tmpl b/templates/de/subscription-canceled.tmpl
deleted file mode 100644 (file)
index b82a6bd..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>Subskription #{notify_subscription_id} wurde gekündigt.</P>
-
-</DIV>
diff --git a/templates/de/test-page.tmpl b/templates/de/test-page.tmpl
deleted file mode 100644 (file)
index 2a202fe..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Drucker Testseite auf {printer_name}</H2>
-
-<P>Testseite gesendet; Auftrags ID ist <A HREF="/{SECTION}/{printer_name}">
-{printer_name}-{job_id}</A>.</P>
-
-</DIV>
diff --git a/templates/de/trailer.tmpl b/templates/de/trailer.tmpl
deleted file mode 100644 (file)
index 7dcde72..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS und das CUPS Logo sind
-eingetragene Warenzeichen der <A HREF="http://www.apple.com">Apple Inc.</A> CUPS
-ist urheberrechtlich geschützt 2007-2014 von Apple Inc, alle Rechte vorbehalten.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/templates/de/users.tmpl b/templates/de/users.tmpl
deleted file mode 100644 (file)
index 6def237..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<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">Erlaubte Benutzer für {printer_name}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Benutzer:</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:}>Erlaube diesen Benutzern zu drucken
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>Verweigere diesen Benutzern zu drucken
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>
-<INPUT TYPE="SUBMIT" VALUE="Erlaubte Benutzer festlegen">
-</TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
index 8947382b19b89f5ea1d9d16e826615221c74f679..d8f9bb17de08b673e58d82bf30e9b9ca22649e3d 100644 (file)
@@ -5,8 +5,6 @@ function reset_config()
 }
 </SCRIPT>
 
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Edit Configuration File</H2>
 
 <FORM NAME="cups" METHOD="POST" ACTION="/admin/">
@@ -20,5 +18,3 @@ function reset_config()
 onClick="reset_config();"></P>
 
 </FORM>
-
-</DIV>
index feaed0f9040d605c8552358a5514a4fef606d274..652537b98193bcd8291e3f5ffbb7ffbe5de9815d 100644 (file)
@@ -1,9 +1,5 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">{?title} {?printer_name} Error</H2>
 
 <P>Error:</P>
 
 <BLOCKQUOTE>Unknown operation "{op}"!</BLOCKQUOTE>
-
-</DIV>
index 86235732e10964a9d202cf38d847fbc3d04feb93..2ac1b8ff32734d9e0535b2783a6b51200736e491 100644 (file)
@@ -1,9 +1,5 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">{?title} {?printer_name} Error</H2>
 
 <P>{?message?{message}:Error}:</P>
 
 <BLOCKQUOTE>{error}</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/es/add-class.tmpl b/templates/es/add-class.tmpl
deleted file mode 100644 (file)
index 6d61ebe..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">A&ntilde;adir clase</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nombre:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Puede contener cualquier car&aacute;cter imprimible excepto "/", "#", y espacio)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Descripci&oacute;n:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Descripci&oacute;n f&aacute;cilmente le&iacute;ble tal como "HP LaserJet de doble cara")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Ubicaci&oacute;n:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Ubicaci&oacute;n f&aacute;cilmente le&iacute;ble tal como "Lab 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Miembros:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="A&ntilde;adir clase"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/es/add-printer.tmpl b/templates/es/add-printer.tmpl
deleted file mode 100644 (file)
index eedc3db..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">A&ntilde;adir impresora</H2>
-
-<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="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
-{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nombre:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
-<SMALL>(Puede contener cualquier car&aacute;cter imprimible excepto "/", "#", y espacio)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Descripci&oacute;n:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_INFO}"><BR>
-<SMALL>(Descripci&oacute;n f&aacute;cilmente le&iacute;ble tal como "HP LaserJet de doble cara")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Ubicaci&oacute;n:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_LOCATION}"><BR>
-<SMALL>(Ubicaci&oacute;n f&aacute;cilmente le&iacute;ble tal como "Lab 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Conexi&oacute;n:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Compartici&oacute;n:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Compartir esta impresora</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Siguiente"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/es/add-rss-subscription.tmpl b/templates/es/add-rss-subscription.tmpl
deleted file mode 100644 (file)
index d17c86e..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription">
-
-<H2 CLASS="title">A&ntilde;adir subscripci&oacute;n RSS</H2>
-
-<TABLE SUMMARY="Add RSS Subscription form">
-<TR>
-<TH CLASS="label">Nombre:</TH>
-<TD COLSPAN="5"><INPUT TYPE="TEXT" NAME="SUBSCRIPTION_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?SUBSCRIPTION_NAME}"><BR>
-<SMALL>(Puede contener cualquier car&aacute;cter imprimible excepto espacio, "/", "?", y "#"))</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Cola:</TH>
-<TD COLSPAN="5"><SELECT NAME="PRINTER_URI" SIZE="10"><OPTION VALUE="#ALL#"{?PRINTER_URI=#ALL#? SELECTED:}>Todas las colas</OPTION>{[printer_name]<OPTION VALUE="{printer_uri_supported}"{?PRINTER_URI={printer_uri_supported}? SELECTED:}>{printer_name}</OPTION>}</SELECT></TD>
-</TR>
-<TR VALIGN="TOP">
-<TH CLASS="label">Eventos:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CREATED" {?EVENT_JOB_CREATED}>Trabajo creado<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_COMPLETED" {?EVENT_JOB_COMPLETED}>Trabajo completado<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_STOPPED" {?EVENT_JOB_STOPPED}>Trabajo parado<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>Opciones de trabajo cambiadas</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_STOPPED" {?EVENT_PRINTER_STOPPED}>Cola parada<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_ADDED" {?EVENT_PRINTER_ADDED}>Cola a&ntilde;adida<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_MODIFIED" {?EVENT_PRINTER_MODIFIED}>Cola modificada<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_DELETED" {?EVENT_PRINTER_DELETED}>Cola borrada</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<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}>Auditor&iacute;a de seguridad del servidor</TD>
-</TR>
-<TR>
-<TH CLASS="label">N&uacute;mero m&aacute;ximo de eventos del canal:</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="A&ntilde;adir subscripci&oacute;n RSS"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/es/admin.tmpl b/templates/es/admin.tmpl
deleted file mode 100644 (file)
index cce1f14..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-<TABLE CLASS="indent" SUMMARY="Tareas de administraci&oacute;n">
-<TR><TD VALIGN="TOP">
-
-<H2 CLASS="title">Impresoras</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="A&ntilde;adir impresora"></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 nuevas impresoras"></FORM>
-<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Administrar impresoras"></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 impresoras a Samba"></FORM>:}
-</P>
-
-<H2 CLASS="title">Clases</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="A&ntilde;adir clase"></FORM>
-<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Administrar clases"></FORM>
-</P>
-
-<H2 CLASS="title">Trabajos</H2>
-
-<P>
-<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Administrar trabajos"></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 archivo 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>
-</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>Configuraci&oacute;n del servidor\:</B></P>
-
-<P><A HREF="/admin/">Avanzada <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}> Compartir impresoras conectadas a este sistema<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N&uacute;mero 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 la impresi&oacute;n desde Internet<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Anunciar la interfaz web<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Permitir administraci&oacute;n remota<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Usar autentificaci&oacute;n Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Permitir a los usuarios cancelar cualquier trabajo (no s&oacute;lo los suyos propios)<BR>
-<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Preservar el historial de trabajos<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N&uacute;mero m&aacute;ximo de trabajos (0 sin l&iacute;mite)\:
-<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retener metadatos\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retener documentos\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Guardar informaci&oacute;n de depuraci&oacute;n para b&uacute;squeda de problemas<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tama&ntilde;o m&aacute;ximo del archivo de registro\:
-<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
-
-:<P><B>Configuraci&oacute;n del servidor:</B></P>
-
-<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Avanzada <SMALL>&#x25b6;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Compartir impresoras conectadas a este sistema<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Permitir la impresi&oacute;n desde Internet<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Permitir administraci&oacute;n remota<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Usar autentificaci&oacute;n Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Permitir a los usuarios cancelar cualquier trabajo (no s&oacute;lo los suyos propios)<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Guardar informaci&oacute;n de depuraci&oacute;n para b&uacute;squeda de problemas</P>
-
-}
-<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Cambiar configuraci&oacute;n"></P>
-
-</FORM>}
-
-</TD></TR>
-</TABLE>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Subscripciones 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="A&ntilde;adir subscripci&oacute;n RSS"></FORM>
-</P>
-
-</DIV>
-
-{notify_subscription_id?<TABLE CLASS="list" SUMMARY="Subscripciones RSS">
-<THEAD><TR><TH>Nombre</TH><TH>Eventos</TH><TH>Nombre de la cola</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 subscripci&oacute;n RSS"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:Todas las colas}</TD></TR>}
-</TBODY>
-</TABLE>:}
diff --git a/templates/es/choose-device.tmpl b/templates/es/choose-device.tmpl
deleted file mode 100644 (file)
index 9f314fd..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<DIV CLASS="indent">
-
-<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">
-<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>
-<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
-{current_device_uri}</TD>
-</TR>}
-<TR>
-<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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}}
-</TD>
-</TR>
-<TR>
-<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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}:}}
-</TD>
-</TR>
-<TR>
-<TR>
-<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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-}:}}
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Siguiente"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/es/choose-make.tmpl b/templates/es/choose-make.tmpl
deleted file mode 100644 (file)
index c846de4..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:A&ntilde;adir impresora}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<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}">:}
-<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}">
-
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Nombre:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Descripci&oacute;n:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Ubicaci&oacute;n:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Conexi&oacute;n:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Compartici&oacute;n:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?No:{?printer_is_shared=0?No:}} compartir esta impresora</TD>
-</TR>
-<TR>
-<TH CLASS="label">Marca:</TH>
-<TD>
-<SELECT NAME="PPD_MAKE" SIZE="10">
-{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Siguiente"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>&nbsp;</TD>
-</TR>
-<TR>
-<TH CLASS="label">O proporcione un archivo PPD:</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?A&ntilde;adir impresora:Modificar impresora}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/es/choose-model.tmpl b/templates/es/choose-model.tmpl
deleted file mode 100644 (file)
index 497d4b1..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:A&ntilde;adir impresora}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<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}">:}
-<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}">
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Nombre:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Descripci&oacute;n:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Ubicaci&oacute;n:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Conexi&oacute;n:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Compartici&oacute;n:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?No:{?printer_is_shared=0?No:}} compartir esta impresora</TD>
-</TR>
-<TR>
-<TH CLASS="label">Marca:</TH>
-<TD>{PPD_MAKE} <INPUT TYPE="SUBMIT" NAME="SELECT_MAKE" VALUE="Seleccione otra marca/fabricante"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Modelo:</TH>
-<TD>
-<SELECT NAME="PPD_NAME" SIZE="10">
-{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Controlador actual - {current_make_and_model}</OPTION>:}
-{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
-}</SELECT>
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">O proporcione un archivo PPD:</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?A&ntilde;adir impresora:Modificar impresora}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/es/choose-serial.tmpl b/templates/es/choose-serial.tmpl
deleted file mode 100644 (file)
index 1f734b9..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:A&ntilde;adir impresora}</H2>
-
-<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>
-<TR>
-<TH CLASS="label">Conexi&oacute;n:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Baudios:</TH>
-<TD><SELECT NAME="BAUDRATE">
-{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Paridad:</TH>
-<TD><SELECT NAME="PARITY">
-<OPTION VALUE="none" {?parity=none?SELECTED:}>Sin paridad
-<OPTION VALUE="even" {?parity=even?SELECTED:}>Par
-<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Impar
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Bits de datos:</TH>
-<TD><SELECT NAME="BITS">
-<OPTION {?bits=8?SELECTED:}>8
-<OPTION {?bits=7?SELECTED:}>7
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Control de flujo:</TH>
-<TD><SELECT NAME="FLOW">
-<OPTION VALUE="none" {?flow=none?SELECTED:}>Ninguno
-<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)
-</SELECT></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Siguiente"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/es/choose-uri.tmpl b/templates/es/choose-uri.tmpl
deleted file mode 100644 (file)
index 46ea17b..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:A&ntilde;adir impresora}</H2>
-
-<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}">:}
-<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Conexi&oacute;n:</TH>
-<TD><INPUT TYPE="URL" SIZE="60" MAXLENGTH="1023" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>Ejemplos:
-<PRE>
-    http://nombre_ordenador:631/ipp/
-    http://nombre_ordenador:631/ipp/puerto1
-
-    ipp://nombre_ordenador/ipp/
-    ipp://nombre_ordenador/ipp/puerto1
-
-    lpd://nombre_ordenador/cola
-
-    socket://nombre_ordenador
-    socket://nombre_ordenador:9100
-</PRE>
-
-<P>Vea <A HREF="/help/network.html" TARGET="_blank">"Impresoras
-en red"</A> para escoger el URI adecuado a usar con su impresora.</P>
-
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Siguiente"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/es/class-added.tmpl b/templates/es/class-added.tmpl
deleted file mode 100644 (file)
index 867c8d9..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">A&ntilde;adir clase</H2>
-
-<P>Se ha a&ntilde;adido con &eacute;xito la clase <A HREF="/classes/{printer_name}">{printer_name}</A>.
-
-</DIV>
diff --git a/templates/es/class-confirm.tmpl b/templates/es/class-confirm.tmpl
deleted file mode 100644 (file)
index a30ff72..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Borrar clase {printer_name}</H2>
-
-<P><B>Advertencia:</B> &iquest;Est&aacute; seguro de querer borrar la clase
-{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="Borrar clase"></FORM></P>
-
-</DIV>
diff --git a/templates/es/class-deleted.tmpl b/templates/es/class-deleted.tmpl
deleted file mode 100644 (file)
index ced78ad..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Borrar clase {printer_name}</H2>
-
-<P>Se ha borrado con &eacute;xito la clase {printer_name}.
-
-</DIV>
\ No newline at end of file
diff --git a/templates/es/class-jobs-header.tmpl b/templates/es/class-jobs-header.tmpl
deleted file mode 100644 (file)
index f25951b..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Trabajos</H3>
-</DIV>
diff --git a/templates/es/class-modified.tmpl b/templates/es/class-modified.tmpl
deleted file mode 100644 (file)
index d5ae2a7..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modificar clase {printer_name}</H2>
-
-<P>Se ha modificado con &eacute;xito la clase <A HREF="/classes/{printer_name}">{printer_name}</A>.
-</DIV>
\ No newline at end of file
diff --git a/templates/es/class.tmpl b/templates/es/class.tmpl
deleted file mode 100644 (file)
index 5eea4f1..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?inactiva:{printer_state=4?procesando:en pausa}},
-{printer_is_accepting_jobs=0?rechazando trabajos:aceptando trabajos},
-{server_is_sharing_printers=0?no:{printer_is_shared=0?no:}} compartida{default_name={printer_name}?, predeterminada del 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="">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_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>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<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="">Administraci&oacute;n</OPTION>
-<OPTION VALUE="modify-class">Modificar clase</OPTION>
-<OPTION VALUE="delete-class">Borrar clase</OPTION>
-<OPTION VALUE="set-class-options">Establecer opciones predeterminadas</OPTION>
-<OPTION VALUE="set-as-default">Poner como predeterminada del servidor</OPTION>
-<OPTION VALUE="set-allowed-users">Establecer usuarios permitidos</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Descripci&oacute;n:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Ubicaci&oacute;n:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Miembros:</TH><TD>{?member_uris=?Ninguno:{member_uris}}</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>
-</TABLE>
-
-</DIV>
diff --git a/templates/es/classes-header.tmpl b/templates/es/classes-header.tmpl
deleted file mode 100644 (file)
index 714ab89..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?No hay clases:Mostrando {#printer_name} de {total} clase{total=1?:s}}.</P>
diff --git a/templates/es/classes.tmpl b/templates/es/classes.tmpl
deleted file mode 100644 (file)
index 6fde7bf..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{#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>
-</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=?Ninguna:{member_uris}}</TD><TD>{printer_state=3?Inactiva:{printer_state=4?Procesando:En pausa}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/es/command.tmpl b/templates/es/command.tmpl
deleted file mode 100644 (file)
index ba50560..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{title} en {printer_name}</H2>
-
-<P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
-ALIGN="ABSMIDDLE" ALT="Indicador de ocupado"> }Trabajo de comando de impresora
-{job_state=3?pendiente:{job_state=4?retenido:
-{job_state=5?procesando:{job_state=6?parado:
-{job_state=7?cancelado:{job_state=8?anulado:completado}}}}}}{job_state=9?:{job_printer_state_message?,
-<EM>"{job_printer_state_message}"</EM>:}}</P>
-
-</DIV>
diff --git a/templates/es/edit-config.tmpl b/templates/es/edit-config.tmpl
deleted file mode 100644 (file)
index a0c6634..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<SCRIPT TYPE="text/javascript">
-function reset_config()
-{
-  document.cups.CUPSDCONF.value = "{?cupsdconf_default}";
-}
-</SCRIPT>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Editar archivo de configuraci&oacute;n</H2>
-
-<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-
-<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
-
-<P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="Guardar cambios">
-<INPUT TYPE="BUTTON" VALUE="Usar archivo de configuraci&oacute;n predeterminado"
-onClick="reset_config();"></P>
-
-</FORM>
-
-</DIV>
diff --git a/templates/es/error-op.tmpl b/templates/es/error-op.tmpl
deleted file mode 100644 (file)
index d584108..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Error en {?printer_name}: {?title}</H2>
-
-<P>Error:</P>
-
-<BLOCKQUOTE>Operaci&oacute;n desconocida "{op}".</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/es/error.tmpl b/templates/es/error.tmpl
deleted file mode 100644 (file)
index f652ea2..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Error en {?printer_name}: {?title}</H2>
-
-<P>{?message?{message}:Error}:</P>
-
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/es/header.tmpl.in b/templates/es/header.tmpl.in
deleted file mode 100644 (file)
index 3e974c8..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<!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;Inicio&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;Administraci&oacute;n&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=classes?:un}sel"><A HREF="/classes/">&nbsp;&nbsp;Clases&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=help?:un}sel"><A HREF="/help/">&nbsp;&nbsp;Ayuda&nbsp;en&nbsp;l&iacute;nea&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;Trabajos&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;Impresoras&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Buscar en la ayuda"
-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>
-<TR><TD COLSPAN="9">&nbsp;</TD></TR>
-</TABLE>
-<DIV ID="body">
diff --git a/templates/es/help-header.tmpl b/templates/es/help-header.tmpl
deleted file mode 100644 (file)
index 3e7fef9..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-<DIV CLASS="indent">
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
-{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
-
-<P ALIGN="CENTER"><B>Buscar en
-{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:todos los documentos}}:</B> <INPUT
-TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER=""
-AUTOSAVE="org.cups.help" RESULTS="20">
-<INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="Buscar">
-<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Borrar"></P>
-
-</FORM>
-
-<!-- Bookmarks -->
-<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Contenidos">
-<TR><TD>
-
-<H3 CLASS="title">Documentos de ayuda en l&iacute;nea</H3>
-
-<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Todos los documentos</A></P>
-<HR>
-
-{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
-}
-</TD></TR>
-</TABLE></DIV>
-
-{QUERY?<P>Buscar resultados en {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:todos los documentos}}\:</P>
-{QTEXT?<UL>
-{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (in <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
-{QTEXT?</UL>:}
-:<P>No hay coincidencias.</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 versi&oacute;n imprimible"></FORM>:
-
-<H1>Ayuda en l&iacute;nea</H1>
-
-<P>Esta es la interfaz de ayuda en l&iacute;nea de CUPS. Introduzca las palabras
-a buscar aqu&iacute; encima o haga clic en cualquiera de los enlaces de la
-documentaci&oacute;n para visualizar la informaci&oacute;n de ayuda en l&iacute;nea.</P>
-
-<P>Si es nuevo en CUPS, lea la p&aacute;gina "<a
-href="/help/overview.html">Informaci&oacute;n general de CUPS</a>". Los usuarios veteranos
-deber&iacute;an leer la p&aacute;gina "<a href="/help/whatsnew.html">Qu&eacute; hay de nuevo en CUPS
-1.6</a>".</P>
-
-<P>La <A HREF="http://www.cups.org/">p&aacute;gina de inicio de CUPS</A> tambi&eacute;n
-proporciona muchos recursos, incluyendo foros de discusi&oacute;n de usuarios, respuestas
-a preguntas frecuentes, y un formulario para el env&iacute;o de informes de errores y
-peticiones de mejoras.</P>}
diff --git a/templates/es/help-printable.tmpl b/templates/es/help-printable.tmpl
deleted file mode 100644 (file)
index 2463c16..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<!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/es/help-trailer.tmpl b/templates/es/help-trailer.tmpl
deleted file mode 100644 (file)
index 4c1ebed..0000000
+++ /dev/null
@@ -1 +0,0 @@
-</DIV>
diff --git a/templates/es/job-cancel.tmpl b/templates/es/job-cancel.tmpl
deleted file mode 100644 (file)
index 6a41427..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Cancelar trabajo {job_id}</H2>
-
-<P>Se ha cancelado el <A HREF="{job_printer_uri}">Trabajo {job_id}</A>.
-
-</DIV>
diff --git a/templates/es/job-hold.tmpl b/templates/es/job-hold.tmpl
deleted file mode 100644 (file)
index 3136f9d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Retener trabajo {job_id}</H2>
-
-<P>Se ha retenido el <A HREF="{job_printer_uri}">Trabajo {job_id}</A>.
-
-</DIV>
diff --git a/templates/es/job-move.tmpl b/templates/es/job-move.tmpl
deleted file mode 100644 (file)
index e6aac39..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<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}">
-{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
-
-<H2 CLASS="title">{job_id?Mover trabajo {job_id}:Mover todos los trabajos}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nuevo destino:</TH>
-<TD>
-<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
-{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{job_id?Mover trabajo:Mover trabajos}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-
-</DIV>
diff --git a/templates/es/job-moved.tmpl b/templates/es/job-moved.tmpl
deleted file mode 100644 (file)
index 8eb7a98..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<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>
-
-</DIV>
diff --git a/templates/es/job-release.tmpl b/templates/es/job-release.tmpl
deleted file mode 100644 (file)
index d925e5f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Liberar trabajo {job_id}</H2>
-
-<P>Se ha liberado el <A HREF="{job_printer_uri}">Trabajo {job_id}</A>.
-
-</DIV>
diff --git a/templates/es/job-restart.tmpl b/templates/es/job-restart.tmpl
deleted file mode 100644 (file)
index ee6c8e5..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Reimprimir trabajo {job_id}</H2>
-
-<P>Se ha reiniciado el <A HREF="{job_printer_uri}">Trabajo {job_id}</A>.
-
-</DIV>
diff --git a/templates/es/jobs-header.tmpl b/templates/es/jobs-header.tmpl
deleted file mode 100644 (file)
index fe8b51f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Mostrar trabajos activos"></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 trabajos completados"></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 los trabajos"></FORM>}</DIV>
-
-<P ALIGN="CENTER">{total=0?No hay trabajos:Mostrando {#job_id} de {total} trabajo{total=1?:s}{?which_jobs=? activo{total=1?:s}:{which_jobs=all?: completado{total=1?:s}}}}.</P>
diff --git a/templates/es/jobs.tmpl b/templates/es/jobs.tmpl
deleted file mode 100644 (file)
index 1187513..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-{#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>
-</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_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?anulado:completado el<BR>{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>:}
-{job_state=3?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-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="Retener trabajo"></FORM>:}
-{job_state<7?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-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="Cancelar trabajo"></FORM>
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="move-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="SUBMIT" VALUE="Mover trabajo"></FORM>:}
-&nbsp;</TD>
-</TR>
-}
-</TBODY>
-</TABLE>
-}
diff --git a/templates/es/list-available-printers.tmpl b/templates/es/list-available-printers.tmpl
deleted file mode 100644 (file)
index 51e0eb9..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Impresoras disponibles</H2>
-
-{#device_uri=0?<P>No se encuentran impresoras.</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="A&ntilde;adir esta impresora"></FORM>
-{device_make_and_model} ({device_info})</LI>
-}</UL>}
-
-</DIV>
diff --git a/templates/es/modify-class.tmpl b/templates/es/modify-class.tmpl
deleted file mode 100644 (file)
index a50b2bb..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modificar clase {printer_name}</H2>
-
-<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}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Descripci&oacute;n:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Ubicaci&oacute;n:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Miembros:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Modificar clase"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/es/modify-printer.tmpl b/templates/es/modify-printer.tmpl
deleted file mode 100644 (file)
index 3c09da0..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modificar {printer_name}</H2>
-
-<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="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="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Descripci&oacute;n:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Descripci&oacute;n f&aacute;cilmente le&iacute;ble tal como "HP LaserJet de doble cara")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Ubicaci&oacute;n:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Ubicaci&oacute;n f&aacute;cilmente le&iacute;ble tal como "Lab 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Conexi&oacute;n:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Compartida:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Compartir esta impresora</TD>
-</TR>
-<TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Siguiente"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/es/norestart.tmpl b/templates/es/norestart.tmpl
deleted file mode 100644 (file)
index ac0f96b..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Cambiar especificaciones</H2>
-
-<p>No se ha reiniciado el servidor debido a que no se han hecho
-cambios en la configuraci&oacute;n...</p>
-
-</DIV>
diff --git a/templates/es/option-boolean.tmpl b/templates/es/option-boolean.tmpl
deleted file mode 100644 (file)
index e832ee1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD>
-{[choices]<INPUT TYPE="RADIO" NAME="{keyword-1}" {choices={defchoice-1}?CHECKED:} VALUE="{choices}">{text}}
-</TD>
-</TR>
diff --git a/templates/es/option-conflict.tmpl b/templates/es/option-conflict.tmpl
deleted file mode 100644 (file)
index adeb436..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<P><B>Error:</B> Las siguientes opciones est&aacute;n en conflicto:</P>
-
-<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
-}</UL>
-
-<P>Cambie una o m&aacute;s de las opciones para resolver el problema.</P>
diff --git a/templates/es/option-header.tmpl b/templates/es/option-header.tmpl
deleted file mode 100644 (file)
index 464726a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="tab" ID="{group_id}">
-
-<H3 ALIGN="CENTER">{group}</H3>
-
-<TABLE WIDTH="100%">
diff --git a/templates/es/option-pickmany.tmpl b/templates/es/option-pickmany.tmpl
deleted file mode 100644 (file)
index 0da75e5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT></TD>
-</TR>
diff --git a/templates/es/option-pickone.tmpl b/templates/es/option-pickone.tmpl
deleted file mode 100644 (file)
index 40fd124..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" ID="select-{keyword}" ONCHANGE="update_paramtable('{keyword}')">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT>
-{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
-<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
-<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Puntos</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:}>Pulgadas</OPTION>
-<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Pies</OPTION>
-<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Metros</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
-}</TABLE>
-</TD>:}
-</TR>
diff --git a/templates/es/option-trailer.tmpl b/templates/es/option-trailer.tmpl
deleted file mode 100644 (file)
index ff8f2b2..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-</TABLE>
-
-<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="Cambiar opciones predeterminadas"></P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/es/pager.tmpl b/templates/es/pager.tmpl
deleted file mode 100644 (file)
index 5f27c10..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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>
-</TR>
-</TABLE>
diff --git a/templates/es/printer-accept.tmpl b/templates/es/printer-accept.tmpl
deleted file mode 100644 (file)
index 63fab1b..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Aceptar trabajos de la {is_class?clase:impresora} {printer_name}</H2>
-
-<P>La {is_class?clase:impresora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-ahora acepta trabajos.</P>
-
-</DIV>
diff --git a/templates/es/printer-added.tmpl b/templates/es/printer-added.tmpl
deleted file mode 100644 (file)
index 88c565b..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">A&ntilde;adir impresora</H2>
-
-<P>Se ha a&ntilde;adido con &eacute;xito la impresora <A HREF="/printers/{printer_name}">{printer_name}</A>.
-
-</DIV>
diff --git a/templates/es/printer-configured.tmpl b/templates/es/printer-configured.tmpl
deleted file mode 100644 (file)
index d382264..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Cambiar opciones predeterminadas de {printer_name}</H2>
-
-<P>Se han establecido con &eacute;xito las opciones predeterminadas de la
-{OP=set-class-options?clase <A HREF="/classes/{printer_name}">:impresora <A HREF="/printers/{printer_name}">}{printer_name}</A>.
-
-</DIV>
diff --git a/templates/es/printer-confirm.tmpl b/templates/es/printer-confirm.tmpl
deleted file mode 100644 (file)
index 1de104a..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Borrar impresora {printer_name}</H2>
-
-<P><B>Advertencia:</B> &iquest;Est&aacute; seguro de querer borrar la impresora
-{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="Borrar impresora"></FORM></P>
-
-</DIV>
diff --git a/templates/es/printer-default.tmpl b/templates/es/printer-default.tmpl
deleted file mode 100644 (file)
index 68b61f2..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Poner la {is_class?clase:impresora} {printer_name} como predeterminada</H2>
-
-<P>Se ha puesto como predeterminada en el servidor la {is_class?clase:impresora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>.</P>
-
-<BLOCKQUOTE><B>Nota:</B> cualquier opci&oacute;n de usuario
-que haya sido activada por mediaci&oacute;n del comando
-<TT>lpoptions</TT> tiene mayor preferencia que este ajuste 
-predeterminado.</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/es/printer-deleted.tmpl b/templates/es/printer-deleted.tmpl
deleted file mode 100644 (file)
index 8bf7db6..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Borrar impresora {printer_name}</H2>
-
-<P>Se ha borrado con &eacute;xito la impresora {printer_name}.
-
-</DIV>
diff --git a/templates/es/printer-jobs-header.tmpl b/templates/es/printer-jobs-header.tmpl
deleted file mode 100644 (file)
index f25951b..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Trabajos</H3>
-</DIV>
diff --git a/templates/es/printer-modified.tmpl b/templates/es/printer-modified.tmpl
deleted file mode 100644 (file)
index 9035dce..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modificar impresora {printer_name}</H2>
-
-<P>Se ha modificado con &eacute;xito la impresora <A HREF="/printers/{printer_name}">{printer_name}</A>.
-
-</DIV>
\ No newline at end of file
diff --git a/templates/es/printer-purge.tmpl b/templates/es/printer-purge.tmpl
deleted file mode 100644 (file)
index b26bb46..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Purgar trabajos de la {is_class?clase:impresora} {printer_name}</H2>
-
-<P>Se han purgado todos los trabajos de la {is_class?clase:impresora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>.</P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/es/printer-reject.tmpl b/templates/es/printer-reject.tmpl
deleted file mode 100644 (file)
index 637e13e..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Rechazar trabajos de la {is_class?clase:impresora} {printer_name}</H2>
-
-<P>La {is_class?clase:impresora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-ya no acepta trabajos.</P>
-
-</DIV>
diff --git a/templates/es/printer-start.tmpl b/templates/es/printer-start.tmpl
deleted file mode 100644 (file)
index 117afcd..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Reanudar la {is_class?clase:impresora} {printer_name}</H2>
-
-<P>La {is_class?clase:impresora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-ha sido reanudada.</P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/es/printer-stop.tmpl b/templates/es/printer-stop.tmpl
deleted file mode 100644 (file)
index af37494..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Pausar la {is_class?clase:impresora} {printer_name}</H2>
-
-<P>La {is_class?clase:impresora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-ha sido puesta en pausa.</P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/es/printer.tmpl b/templates/es/printer.tmpl
deleted file mode 100644 (file)
index 0ea1049..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?inactiva:{printer_state=4?procesando:en pausa}},
-{printer_is_accepting_jobs=0?rechazando trabajos:aceptando trabajos},
-{server_is_sharing_printers=0?no:{printer_is_shared=0?no:}} compartida{default_name={printer_name}?, predeterminada del 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="">Mantenimiento</OPTION>
-<OPTION VALUE="print-test-page">Imprimir p&aacute;gina de prueba</OPTION>
-{printer_commands~.*Clean.*?<OPTION VALUE="clean-print-heads">Limpiar cabezales de impresi&oacute;n</OPTION>:}
-{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">Imprimir p&aacute;gina de auto prueba</OPTION>:}
-{printer_state=5?<OPTION VALUE="start-printer">Reanudar impresora</OPTION>:<OPTION VALUE="stop-printer">Pausar impresora</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>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<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="">Administraci&oacute;n</OPTION>
-<OPTION VALUE="modify-printer">Modificar impresora</OPTION>
-<OPTION VALUE="delete-printer">Borrar impresora</OPTION>
-<OPTION VALUE="set-printer-options">Establecer opciones predeterminadas</OPTION>
-<OPTION VALUE="set-as-default">Poner como predeterminada del servidor</OPTION>
-<OPTION VALUE="set-allowed-users">Establecer usuarios permitidos</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Descripci&oacute;n:</TH><TD>{printer_info}</TD></TR>
-<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?, 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>
-</TABLE>
-
-</DIV>
diff --git a/templates/es/printers-header.tmpl b/templates/es/printers-header.tmpl
deleted file mode 100644 (file)
index 7280687..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?No hay impresoras:Mostrando {#printer_name} de {total} impresora{total=1?:s}}.</P>
diff --git a/templates/es/printers.tmpl b/templates/es/printers.tmpl
deleted file mode 100644 (file)
index 6b97fd9..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{#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>
-</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?Inactiva:{printer_state=4?Procesando:En pausa}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/es/restart.tmpl b/templates/es/restart.tmpl
deleted file mode 100644 (file)
index 607351d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Cambiar especificaciones</H2>
-
-<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Indicador de ocupado"> Por favor espere mientras se reinicia el servidor...</P>
-
-</DIV>
diff --git a/templates/es/samba-export.tmpl b/templates/es/samba-export.tmpl
deleted file mode 100644 (file)
index 0036372..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<SCRIPT TYPE="text/javascript"><!--
-function select_printers() {
-  var list = document.export_samba.EXPORT_NAME;
-  var sel = document.export_samba.EXPORT_ALL.checked;
-
-  for (i = 0; i < list.length; i ++) {
-    list.options[i].selected = sel;
-  }
-}
---></SCRIPT>
-
-<FORM METHOD="POST" ACTION="/admin/" NAME="export_samba">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
-
-<H2 CLASS="title">Exportar impresoras a Samba</H2>
-
-{error?<P>No se han podido exportar las impresoras a Samba\:</P>
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-<P>Consulte el archivo <A HREF="/admin/log/error_log"
-TARGET="_blank">error_log</A> para m&aacute;s informaci&oacute;n.</P>:
-<P>Esta p&aacute;gina le permite exportar las impresoras a Samba para que
-los clientes Windows puedan acceder a ellas por los iconos de su
-escritorio <VAR>Entorno de red</VAR> o <VAR>Sitios de red</VAR>. Debe haber instalado
-previamente el controlador de impresora PostScript de Windows
-como se describe en la p&aacute;gina del manual
-<A HREF="/help/man-cupsaddsmb.html"
-TARGET="_blank">cupsaddsmb(8)</A>.</P>}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Impresoras:</TH>
-<TD>
-<SELECT NAME="EXPORT_NAME" SIZE="10" MULTIPLE>
-{[printer_name]<OPTION VALUE="{printer_name}"{export_all? SELECTED:{printer_export? SELECTED:}}>{printer_name}}
-</SELECT><BR>
-<INPUT TYPE="CHECKBOX" NAME="EXPORT_ALL"{export_all? CHECKED:}
-onChange="select_printers()"> Exportar todas las impresoras
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Nombre de usuario Samba:</TH>
-<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (necesario)</TD>
-</TR>
-<TR>
-<TH CLASS="label">Contrase&ntilde;a Samba:</TH>
-<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (necesaria)</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Exportar impresoras a Samba"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/es/samba-exported.tmpl b/templates/es/samba-exported.tmpl
deleted file mode 100644 (file)
index a54925d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P>Se han exportado las impresoras a samba con &eacute;xito.</P>
diff --git a/templates/es/search.tmpl b/templates/es/search.tmpl
deleted file mode 100644 (file)
index 3f43068..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
-{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
-{ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
-
-<P ALIGN="CENTER"><B>Buscar en
-{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?clases:{SECTION=jobs?trabajos:impresoras}}}:</B>
-<INPUT TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40"  PLACEHOLDER="" AUTOSAVE="org.cups.{SECTION}" RESULTS="20"> <INPUT
-TYPE="SUBMIT" VALUE="Buscar"> <INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Borrar"></P>
-
-</FORM>
diff --git a/templates/es/set-printer-options-header.tmpl b/templates/es/set-printer-options-header.tmpl
deleted file mode 100644 (file)
index 8a2740b..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Establecer opciones predeterminadas de {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 a la impresora las opciones predeterminadas">:}
-
-<SCRIPT TYPE="text/javascript"><!--
-function update_paramtable(option)
-{
-  var cb = document.getElementById("select-" + option)
-  var paramstable = document.getElementById(option + "-params");
-  if (cb.value == "Custom")
-    paramstable.style.display = "table";
-  else
-    paramstable.style.display = "none";
-}
---></SCRIPT>
-
-<H3 CLASS="title">{[group_id]
-<A HREF="#{group_id}">{group}</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</H3>
-
-<DIV CLASS="tabs">
diff --git a/templates/es/set-printer-options-trailer.tmpl b/templates/es/set-printer-options-trailer.tmpl
deleted file mode 100644 (file)
index 11adc70..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-</DIV>
-
-<SCRIPT TYPE="text/javascript"><!--
-// Hide custom options parameters for browsers that understand Javascript
-var paramtables = document.getElementsByName("paramtable");
-for (var i = 0; i < paramtables.length; i++)
-{
-  var opt = paramtables[i].id.substr(0, paramtables[i].id.lastIndexOf("-"));
-  var cb = document.getElementById("select-" + opt);
-  if (cb.value != "Custom")
-    paramtables[i].style.display = "none";
-}
---></SCRIPT>
-</FORM>
-
-</DIV>
diff --git a/templates/es/subscription-added.tmpl b/templates/es/subscription-added.tmpl
deleted file mode 100644 (file)
index 87ce96a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>Se ha a&ntilde;adido con &eacute;xito la subscripci&oacute;n {subscription_name}.</P>
-
-</DIV>
diff --git a/templates/es/subscription-canceled.tmpl b/templates/es/subscription-canceled.tmpl
deleted file mode 100644 (file)
index d6ac171..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>La subscripci&oacute;n #{notify_subscription_id} ha sido cancelada.</P>
-
-</DIV>
diff --git a/templates/es/test-page.tmpl b/templates/es/test-page.tmpl
deleted file mode 100644 (file)
index 763dab5..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Imprimir p&aacute;gina de prueba en {printer_name}</H2>
-
-<P>P&aacute;gina de prueba enviada; el n&uacute;mero del trabajo es el <A HREF="/{SECTION}/{printer_name}">
-{printer_name}-{job_id}</A>.</P>
-
-</DIV>
diff --git a/templates/es/trailer.tmpl b/templates/es/trailer.tmpl
deleted file mode 100644 (file)
index 0711c26..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-</DIV></TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS y el logo de CUPS son marcas registradas de
-<A HREF="http://www.apple.com">Apple, Inc.</A> Los derechos de copia de CUPS
-2007-2014 son de Apple Inc. Todos los derechos reservados.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/templates/es/users.tmpl b/templates/es/users.tmpl
deleted file mode 100644 (file)
index a8a645e..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<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">Usuarios permitidos para {printer_name}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Usuarios:</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 a estos usuarios imprimir
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>Evitar que estos usuarios impriman
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>
-<INPUT TYPE="SUBMIT" VALUE="Establecer usuarios permitidos">
-</TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/fr/add-class.tmpl b/templates/fr/add-class.tmpl
deleted file mode 100644 (file)
index a4402d4..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Ajouter une classe</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nom:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Peux contenir n'importe quel caract&egrave;re sauf "/", "#", et espace)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Description:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Description compr&eacute;hensible comme "HP LaserJet Recto/Verso")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Emplacement:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Emplacement compr&eacute;hensible comme "Lab 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Membres:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Ajouter la classe"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/fr/add-printer.tmpl b/templates/fr/add-printer.tmpl
deleted file mode 100644 (file)
index 22dc07b..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Ajouter une imprimante</H2>
-
-<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="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
-{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nom:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
-<SMALL>(Peux contenir n'importe quel caract&egrave;re sauf "/", "#", et espace)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Description:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_INFO}"><BR>
-<SMALL>(Description compr&eacute;hensible comme "HP LaserJet Recto/Verso")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Emplacement:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_LOCATION}"><BR>
-<SMALL>(Emplacement compr&eacute;hensible comme "Lab 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Connexion:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Partage:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Partager cette imprimante</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continuer"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/fr/add-rss-subscription.tmpl b/templates/fr/add-rss-subscription.tmpl
deleted file mode 100644 (file)
index e98ee1c..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription">
-
-<H2 CLASS="title">S'abonner &agrave; un flux RSS</H2>
-
-<TABLE SUMMARY="S'abonner &agrave; un flux RSS">
-<TR>
-<TH CLASS="label">Nom:</TH>
-<TD COLSPAN="5"><INPUT TYPE="TEXT" NAME="SUBSCRIPTION_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?SUBSCRIPTION_NAME}"><BR>
-<SMALL>(Peux contenir n'importe quel caract&egrave;re sauf "/", "#", et espace)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">File:</TH>
-<TD COLSPAN="5"><SELECT NAME="PRINTER_URI" SIZE="10"><OPTION VALUE="#ALL#"{?PRINTER_URI=#ALL#? SELECTED:}>Toutes les files</OPTION>{[printer_name]<OPTION VALUE="{printer_uri_supported}"{?PRINTER_URI={printer_uri_supported}? SELECTED:}>{printer_name}</OPTION>}</SELECT></TD>
-</TR>
-<TR VALIGN="TOP">
-<TH CLASS="label">Ev&eacute;nements:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CREATED" {?EVENT_JOB_CREATED}>T&acirc;ches cr&eacute;es<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_COMPLETED" {?EVENT_JOB_COMPLETED}>T&acirc;ches finies<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_STOPPED" {?EVENT_JOB_STOPPED}>T&acirc;ches stopp&eacute;es<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>Options de t&acirc;che modifi&eacute;es</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_STOPPED" {?EVENT_PRINTER_STOPPED}>Files arr&ecirc;t&eacute;es<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_ADDED" {?EVENT_PRINTER_ADDED}>File ajout&eacute;e<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_MODIFIED" {?EVENT_PRINTER_MODIFIED}>File modifi&eacute;e<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_DELETED" {?EVENT_PRINTER_DELETED}>File supprim&eacute;e</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STARTED" {?EVENT_SERVER_STARTED}>Serveur d&eacute;marr&eacute;<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STOPPED" {?EVENT_SERVER_STOPPED}>Serveur arr&ecirc;t&eacute;<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_RESTARTED" {?EVENT_SERVER_RESTARTED}>Serveur red&eacute;marr&eacute;<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_AUDIT" {?EVENT_SERVER_AUDIT}>Audit de s&eacute;curit&eacute; du serveur</TD>
-</TR>
-<TR>
-<TH CLASS="label">Nombre maximum d'&eacute;v&eacute;nements:</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="S'abonner &agrave; un flux RSS"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/fr/admin.tmpl b/templates/fr/admin.tmpl
deleted file mode 100644 (file)
index 304e77b..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-<TABLE CLASS="indent" SUMMARY="T&acirc;ches d'Administration">
-<TR><TD VALIGN="TOP">
-
-<H2 CLASS="title">Imprimantes</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="Ajouter une imprimante"></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="Trouver de nouvelles imprimantes"></FORM>
-<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="G&eacute;rer les Imprimantes"></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="Exporter les imprimantes vers 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="Ajouter une classe"></FORM>
-<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="G&eacute;rer les Classes"></FORM>
-</P>
-
-<H2 CLASS="title">T&acirc;ches</H2>
-
-<P>
-<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="G&eacute;rer les T&acirc;ches"></FORM>
-</P>
-
-</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
-
-<H2 CLASS="title">Serveur</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="Editer le Fichier de Configuration"></FORM>
-<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Visualiser Access Log"></FORM>
-<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Visualiser Error Log"></FORM>
-<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Visualiser Page Log"></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>Param&egrave;tres du serveur\:</B></P>
-
-<P><A HREF="/admin/">Avanc&eacute; <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}> Partager les imprimantes connect&eacute;es &agrave; ce syst&egrave;me<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Nombre maximum de 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}> Autoriser l'impression depuis Internet<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Annoncer l'interface Web<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Autoriser l'administration &agrave; distance<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Utiliser l'authentification Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Autoriser les utilisateurs &agrave; annuler n'importe quelle t&acirc;che (Pas seulement les leurs)<BR>
-<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Conserver l'historique des t&acirc;ches<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Nombre de t&acirc;ches\:
-<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Conserver les meta-donn&eacute;es\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Conserver les documents\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Enregistrer les informations de debug pour la r&eacute;solution de probl&egrave;mes<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Taille maximum du fichier de log\:
-<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
-
-:<P><B>Param&egrave;tres du Serveur:</B></P>
-
-<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Avanc&eacute; <SMALL>&#x25b6;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Partager les imprimantes connect&eacute;es &agrave; ce syst&egrave;me<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Autoriser l'impression depuis Internet<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Autoriser l'administration &agrave; distance<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Utiliser l'authentification Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Autoriser les utilisateurs &agrave; annuler n'importe quelle t&acirc;che (Pas seulement les leurs)<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Enregistrer les informations de debug pour la r&eacute;solution de probl&egrave;mes</P>
-
-}
-<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Modifier les param&egrave;tres"></P>
-
-</FORM>}
-
-</TD></TR>
-</TABLE>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Abonnements 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="Ajouter un abonnement RSS"></FORM>
-</P>
-
-</DIV>
-
-{notify_subscription_id?<TABLE CLASS="list" SUMMARY="Abonnements RSS">
-<THEAD><TR><TH>Nom</TH><TH>Ev&eacute;nements</TH><TH>Nom de la File</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="Annuler l'abonnement RSS"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:Toutes les Files}</TD></TR>}
-</TBODY>
-</TABLE>:}
diff --git a/templates/fr/choose-device.tmpl b/templates/fr/choose-device.tmpl
deleted file mode 100644 (file)
index 2bcb430..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifier {printer_name}:Ajouter une imprimante}</H2>
-
-{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">Connexion courante\:</TH>
-<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
-{current_device_uri}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Imprimantes 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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}}
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Imprimantes R&eacute;seaux D&eacute;couvertes\:</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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}:}}
-</TD>
-</TR>
-<TR>
-<TR>
-<TH CLASS="label">Autres Imprimantes R&eacute;seaux\:</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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-}:}}
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continuer"></TD>
-</TR>
-</TABLE>
-
-</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Indicateur d'occupation"> Recherche en cours...</P>}
-
-</DIV>
diff --git a/templates/fr/choose-make.tmpl b/templates/fr/choose-make.tmpl
deleted file mode 100644 (file)
index d48dfc1..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifier {printer_name}:Ajouter une imprimante}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<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}">:}
-<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}">
-
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Nom:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Description:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Emplacement:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Connexion:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Partage:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?Ne pas:{?printer_is_shared=0?Ne pas:}} Partager cette Imprimante</TD>
-</TR>
-<TR>
-<TH CLASS="label">Marque:</TH>
-<TD>
-<SELECT NAME="PPD_MAKE" SIZE="10">
-{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continuer"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>&nbsp;</TD>
-</TR>
-<TR>
-<TH CLASS="label">Ou donner un fichier PPD:</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?Ajouter une imprimante:Modifier l'imprimante}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/fr/choose-model.tmpl b/templates/fr/choose-model.tmpl
deleted file mode 100644 (file)
index 5428153..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifier {printer_name}:Ajouter une imprimante}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<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}">:}
-<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}">
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Nom:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Description:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Emplacement:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Connexion:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Partage:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?Ne pas:{?printer_is_shared=0?Ne pas:}} Partager cette imprimante</TD>
-</TR>
-<TR>
-<TH CLASS="label">Marque:</TH>
-<TD>{PPD_MAKE} <INPUT TYPE="SUBMIT" NAME="SELECT_MAKE" VALUE="Choisir un autre fabriquant"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Mod&egrave;le:</TH>
-<TD>
-<SELECT NAME="PPD_NAME" SIZE="10">
-{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Pilote courrant - {current_make_and_model}</OPTION>:}
-{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
-}</SELECT>
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Ou donner un fichier PPD:</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?Ajouter une imprimante:Modifier une imprimante}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/fr/choose-serial.tmpl b/templates/fr/choose-serial.tmpl
deleted file mode 100644 (file)
index a1c7204..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifier {printer_name}:Ajouter une imprimante}</H2>
-
-<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>
-<TR>
-<TH CLASS="label">Connexion:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Baud/s:</TH>
-<TD><SELECT NAME="BAUDRATE">
-{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Parit&eacute;:</TH>
-<TD><SELECT NAME="PARITY">
-<OPTION VALUE="none" {?parity=none?SELECTED:}>Aucune
-<OPTION VALUE="even" {?parity=even?SELECTED:}>Paire
-<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Impaire
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Bits de donn&eacute;es:</TH>
-<TD><SELECT NAME="BITS">
-<OPTION {?bits=8?SELECTED:}>8
-<OPTION {?bits=7?SELECTED:}>7
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Contr&ocirc;le de flux:</TH>
-<TD><SELECT NAME="FLOW">
-<OPTION VALUE="none" {?flow=none?SELECTED:}>Aucun
-<OPTION VALUE="soft" {?flow=soft?SELECTED:}>XON/XOFF (Logiciel)
-<OPTION VALUE="hard" {?flow=hard?SELECTED:}>RTS/CTS (Mat&egrave;riel)
-<OPTION VALUE="dtrdsr" {?flow=dtrdsr?SELECTED:}>DTR/DSR (Mat&egrave;riel)
-</SELECT></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continuer"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/fr/choose-uri.tmpl b/templates/fr/choose-uri.tmpl
deleted file mode 100644 (file)
index 72b4a5e..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifier {printer_name}:Ajouter une imprimante}</H2>
-
-<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}">:}
-<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Connexion:</TH>
-<TD><INPUT TYPE="URL" SIZE="60" MAXLENGTH="1023" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>Exemples:
-<PRE>
-    http://hostname:631/ipp/
-    http://hostname:631/ipp/port1
-
-    ipp://hostname/ipp/
-    ipp://hostname/ipp/port1
-
-    lpd://hostname/queue
-
-    socket://hostname
-    socket://hostname:9100
-</PRE>
-
-<P>Cf. <A HREF="/help/network.html" TARGET="_blank">"Imprimantes
-R&eacute;seaux"</A> pour construire l'URI &agrave; employ&eacute;e avec votre imprimante.</P>
-
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continuer"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/fr/class-added.tmpl b/templates/fr/class-added.tmpl
deleted file mode 100644 (file)
index 7ed1648..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Ajouter une Classe</H2>
-
-<P>La classe <A HREF="/classes/{printer_name}">{printer_name}</A> a &eacute;t&eacute; ajout&eacute;e
-avec succ&egrave;s.
-
-</DIV>
diff --git a/templates/fr/class-confirm.tmpl b/templates/fr/class-confirm.tmpl
deleted file mode 100644 (file)
index 276ec34..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Supprimer la classe {printer_name}</H2>
-
-<P><B>Attention:</B> Etes-vous sur(e) de vouloir supprimer la 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="Supprimer la classe"></FORM></P>
-
-</DIV>
diff --git a/templates/fr/class-deleted.tmpl b/templates/fr/class-deleted.tmpl
deleted file mode 100644 (file)
index 6f8aefa..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Supprimer la classe {printer_name}</H2>
-
-<P>La classe {printer_name} a &eacute;t&eacute; supprim&eacute;e avec succ&egrave;s.
-
-</DIV>
\ No newline at end of file
diff --git a/templates/fr/class-jobs-header.tmpl b/templates/fr/class-jobs-header.tmpl
deleted file mode 100644 (file)
index 551f47e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">T&acirc;ches</H3>
-</DIV>
diff --git a/templates/fr/class-modified.tmpl b/templates/fr/class-modified.tmpl
deleted file mode 100644 (file)
index e4b8b5a..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifier la Classe {printer_name}</H2>
-
-<P>La classe <A HREF="/classes/{printer_name}">{printer_name}</A> a &eacute;t&eacute; 
-modifi&eacute;e avec succ&egrave;s.
-
-</DIV>
\ No newline at end of file
diff --git a/templates/fr/class.tmpl b/templates/fr/class.tmpl
deleted file mode 100644 (file)
index 0d6d891..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?En attente:{printer_state=4?En cours d'impression:Arr&ecirc;t&eacute;}},
-{printer_is_accepting_jobs=0?Rejette les t&acirc;ches:Accepte les t&acirc;ches},
-{server_is_sharing_printers=0?Non:{printer_is_shared=0?Non:}} Partag&eacute;e{default_name={printer_name}?, Imprimante par d&eacute;faut:})</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="">Maintenance</OPTION>
-<OPTION VALUE="print-test-page">Imprimer une page de test</OPTION>
-{printer_state=5?<OPTION VALUE="start-class">D&eacute;marrer la classe</OPTION>:<OPTION VALUE="stop-class">Arr&ecirc;ter la classe</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Accepter les t&acirc;ches</OPTION>:<OPTION VALUE="reject-jobs">Rejeter les t&acirc;ches</OPTION>}
-<OPTION VALUE="move-jobs">Transf&eacute;rer toutes les t&acirc;ches</OPTION>
-<OPTION VALUE="purge-jobs">Annuler toutes les t&acirc;ches</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<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="">Administration</OPTION>
-<OPTION VALUE="modify-class">Modifier la classe</OPTION>
-<OPTION VALUE="delete-class">Supprimer la classe</OPTION>
-<OPTION VALUE="set-class-options">R&eacute;initialiser les options</OPTION>
-<OPTION VALUE="set-as-default">D&eacute;finir par d&eacute;faut</OPTION>
-<OPTION VALUE="set-allowed-users">D&eacute;finir les autorisations</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Description:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Emplacement:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Membres:</TH><TD>{?member_uris=?None:{member_uris}}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">D&eacute;fauts:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:inconnu}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
diff --git a/templates/fr/classes-header.tmpl b/templates/fr/classes-header.tmpl
deleted file mode 100644 (file)
index 3c4d1ba..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Pas de classes:Affichage de {#printer_name} classe{total=1?:s}} sur {total}.</P>
diff --git a/templates/fr/classes.tmpl b/templates/fr/classes.tmpl
deleted file mode 100644 (file)
index 0a04ebe..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="Liste des Classes">
-<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> Nom de la file <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nom de la file <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Description</TH><TH>Emplacement</TH><TH>Membres</TH><TH>&Eacute;tat</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=?Aucun:{member_uris}}</TD><TD>{printer_state=3?Inoccup&eacute;:{printer_state=4?En cours d'impression:En pause}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/fr/command.tmpl b/templates/fr/command.tmpl
deleted file mode 100644 (file)
index bcd0f90..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{title} sur {printer_name}</H2>
-
-<P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
-ALIGN="ABSMIDDLE" ALT="Busy Indicator"> }Commandes de t&acirc;che d'impression
-{job_state=3?en attente:{job_state=4?retenu:
-{job_state=5?en cours d'impression:{job_state=6?arr&ecirc;t&eacute;:
-{job_state=7?annul&eacute;:{job_state=8?annul&eacute;:termin&eacute;}}}}}}{job_state=9?:{job_printer_state_message?,
-<EM>"{job_printer_state_message}"</EM>:}}</P>
-
-</DIV>
diff --git a/templates/fr/edit-config.tmpl b/templates/fr/edit-config.tmpl
deleted file mode 100644 (file)
index 62d1414..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<SCRIPT TYPE="text/javascript">
-function reset_config()
-{
-  document.cups.CUPSDCONF.value = "{?cupsdconf_default}";
-}
-</SCRIPT>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Edition du Fichier de Configuration</H2>
-
-<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-
-<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
-
-<P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="Enregistrer les modifications">
-<INPUT TYPE="BUTTON" VALUE="Utiliser le fichier de configuration par d&eacute;faut"
-onClick="reset_config();"></P>
-
-</FORM>
-
-</DIV>
diff --git a/templates/fr/error-op.tmpl b/templates/fr/error-op.tmpl
deleted file mode 100644 (file)
index ba5c91c..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} Erreur</H2>
-
-<P>Erreur:</P>
-
-<BLOCKQUOTE>Op&eacute;ration inconnue "{op}"!</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/fr/error.tmpl b/templates/fr/error.tmpl
deleted file mode 100644 (file)
index 2ce2451..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} Erreur</H2>
-
-<P>{?message?{message}:Erreur}:</P>
-
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/fr/header.tmpl.in b/templates/fr/header.tmpl.in
deleted file mode 100644 (file)
index d7f00c1..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!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}">:}
-</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="unsel"><A HREF="/">&nbsp;&nbsp;Accueil&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;Administration&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;Aide&nbsp;En&nbsp;Ligne&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;T&acirc;ches&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;Imprimantes&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-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>
-<TR><TD COLSPAN="9">&nbsp;</TD></TR>
-</TABLE>
diff --git a/templates/fr/help-header.tmpl b/templates/fr/help-header.tmpl
deleted file mode 100644 (file)
index 751136d..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-<DIV CLASS="indent">
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
-{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
-
-<P ALIGN="CENTER"><B>Rechercher dans
-{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:tous les documents}}:</B> <INPUT
-TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER=""
-AUTOSAVE="org.cups.help" RESULTS="20">
-<INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="Rechercher">
-<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Vider"></P>
-
-</FORM>
-
-<!-- Bookmarks -->
-<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Contenus">
-<TR><TD>
-
-<H3 CLASS="title">Documents d'aide en ligne</H3>
-
-<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Tous les documents</A></P>
-<HR>
-
-{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
-}
-</TD></TR>
-</TABLE></DIV>
-
-{QUERY?<P>R&eacute;sultats de la recherche dans {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:tous les documents}}\:</P>
-{QTEXT?<UL>
-{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (in <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
-{QTEXT?</UL>:}
-:<P>Aucun r&eacute;sultat trouv&eacute;.</P>}
-<HR NOSHADE>:}
-{HELPTITLE?<H1>{HELPTITLE}</H1>
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Voir la version imprimable"></FORM>:
-
-<H1>Aide en ligne</H1>
-
-<P>Voici l'interface d'aide en ligne de CUPS. Entrez ci-dessus les mots &agrave; rechercher
-ou cliquez sur un lien ci-contre pour afficher
-l'aide en ligne du document.</P>
-
-<P>Si vous &ecirc;tes un nouvel utilisateur de CUPS, lisez la page "<a
-href="/help/overview.html">Pr&eacute;sentation de CUPS</a>". Il est conseill&eacute; aux utilisateurs habitu&eacute;s
-de lire la page "<a href="/help/whatsnew.html">Quoi de neuf dans CUPS
-1.6</a>".</P>
-
-<P>La <A HREF="http://www.cups.org/">page d'accueil de CUPS</A> donne aussi
-acc&egrave;s &agrave; de nombreuses ressources, comme des forums de discussion pour les
-utilisateurs, des r&eacute;ponses aux questions fr&eacute;quentes, et un formulaire pour
-soumettre des rapports de bug ou des demandes pour de nouvelles fonctionnalit&eacute;s.</P>}
diff --git a/templates/fr/help-printable.tmpl b/templates/fr/help-printable.tmpl
deleted file mode 100644 (file)
index 2463c16..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<!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/fr/help-trailer.tmpl b/templates/fr/help-trailer.tmpl
deleted file mode 100644 (file)
index 4c1ebed..0000000
+++ /dev/null
@@ -1 +0,0 @@
-</DIV>
diff --git a/templates/fr/job-cancel.tmpl b/templates/fr/job-cancel.tmpl
deleted file mode 100644 (file)
index ab54269..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Annuler la T&acirc;che {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La t&acirc;che {job_id}</A> a &eacute;t&eacute; annul&eacute;e.
-
-</DIV>
diff --git a/templates/fr/job-hold.tmpl b/templates/fr/job-hold.tmpl
deleted file mode 100644 (file)
index 7c85916..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Retenir la t&acirc;che {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La t&acirc;che {job_id}</A> a &eacute;t&eacute; retenue.
-
-</DIV>
diff --git a/templates/fr/job-move.tmpl b/templates/fr/job-move.tmpl
deleted file mode 100644 (file)
index 4cca760..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<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}">
-{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
-
-<H2 CLASS="title">{job_id?Transf&eacute;rer la t&acirc;che {job_id}:Transf&eacute;rer toutes les t&acirc;ches}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nouvelle destination:</TH>
-<TD>
-<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
-{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{job_id?Transf&eacute;rer la t&acirc;che:Transf&eacute;rer les t&acirc;ches}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-
-</DIV>
diff --git a/templates/fr/job-moved.tmpl b/templates/fr/job-moved.tmpl
deleted file mode 100644 (file)
index ba28d33..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{job_id?Transf&eacute;rer la t&acirc;che {job_id}:Transf&eacute;rer toutes les t&acirc;ches}</H2>
-
-<P>{job_id?<A HREF="/jobs/{job_id}">Job {job_id}</A>:Toutes les t&acirc;ches} transf&eacute;r&eacute;e(s) vers
-<A HREF="/{is_class?classes:printers}/{job_printer_name}">{job_printer_name}</A>.</P>
-
-</DIV>
diff --git a/templates/fr/job-release.tmpl b/templates/fr/job-release.tmpl
deleted file mode 100644 (file)
index 4bfc1b9..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Lib&eacute;rer la T&acirc;che {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La t&acirc;che {job_id}</A> a &eacute;t&eacute; lib&eacute;r&eacute;e.
-
-</DIV>
diff --git a/templates/fr/job-restart.tmpl b/templates/fr/job-restart.tmpl
deleted file mode 100644 (file)
index 0858840..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">R&eacute;imprimer la T&acirc;che {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La t&acirc;che {job_id}</A> a &eacute;t&eacute; relanc&eacute;e.
-
-</DIV>
diff --git a/templates/fr/jobs-header.tmpl b/templates/fr/jobs-header.tmpl
deleted file mode 100644 (file)
index c863005..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Affichage des t&acirc;ches actives"></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="Affichage des t&acirc;ches termin&eacute;es"></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="Affichage de toutes les t&acirc;ches"></FORM>}</DIV>
-
-<P ALIGN="CENTER">{total=0?Pas de t&acirc;che:Affichage de {#job_id} t&acirc;che{total>1?s:}} {?which_jobs=?active{total>1?s:}:{which_jobs=all?:termin&eacute;e{total>1?s:}}} {total=0?:sur {total}} .</P>
diff --git a/templates/fr/jobs.tmpl b/templates/fr/jobs.tmpl
deleted file mode 100644 (file)
index c760d76..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-{#job_id=0?:
-<TABLE CLASS="list" SUMMARY="Listes des t&acirc;ches">
-<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>Nom</TH><TH>Utilisateur</TH><TH>Taille</TH><TH>Pages</TH><TH>&Eacute;tat</TH><TH>Contr&ocirc;le</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=?Inconnu:{job_name}}&nbsp;</TD>
-<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?Inconnu:{?job_media_sheets_completed}}&nbsp;</TD>
-<TD>{job_state=3?en attente depuis<BR>{time_at_creation}:{job_state=4?retenu depuis<BR>{time_at_creation}:
-{job_state=5?en cours d'impression depuis<BR>{time_at_processing}:{job_state=6?arr&ecirc;t&eacute;:
-{job_state=7?annul&eacute; &acirc;<BR>{time_at_completed}:{job_state=8?annul&eacute;:termin&eacute; &agrave;<BR>{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="R&eacute;imprimer la t&acirc;che"></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="Lib&eacute;rer la t&acirc;che"></FORM>:}
-{job_state=3?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-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="Retenir la t&acirc;che"></FORM>:}
-{job_state<7?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-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="Annuler la t&acirc;che"></FORM>
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="move-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="SUBMIT" VALUE="Transf&eacute;rer la t&acirc;che"></FORM>:}
-&nbsp;</TD>
-</TR>
-}
-</TBODY>
-</TABLE>
-}
diff --git a/templates/fr/list-available-printers.tmpl b/templates/fr/list-available-printers.tmpl
deleted file mode 100644 (file)
index dcc9937..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Imprimantes Disponibles</H2>
-
-{#device_uri=0?<P>Aucune imprimante trouv&eacute;e.</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="Ajouter cette imprimante"></FORM>
-{device_make_and_model} ({device_info})</LI>
-}</UL>}
-
-</DIV>
diff --git a/templates/fr/modify-class.tmpl b/templates/fr/modify-class.tmpl
deleted file mode 100644 (file)
index 791c560..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifier la Classe {printer_name}</H2>
-
-<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}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Description:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Emplacement:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Membres:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Modifier la classe"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/fr/modify-printer.tmpl b/templates/fr/modify-printer.tmpl
deleted file mode 100644 (file)
index 03e1b66..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifier {printer_name}</H2>
-
-<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="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="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Description:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Description compr&eacute;hensible comme "HP LaserJet Recto/Verso")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Emplacement:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Emplacement compr&eacute;hensible comme "Lab 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Connexion:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Partage:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Partager cette imprimante</TD>
-</TR>
-<TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continuer"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/fr/norestart.tmpl b/templates/fr/norestart.tmpl
deleted file mode 100644 (file)
index 95965c6..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifier les Param&egrave;tres</H2>
-
-<P>Le serveur n'a pas &eacute;t&eacute; red&eacute;marr&eacute; car la configuration
-n'a pas &eacute;t&eacute; modifi&eacute;e...</P>
-
-</DIV>
diff --git a/templates/fr/option-boolean.tmpl b/templates/fr/option-boolean.tmpl
deleted file mode 100644 (file)
index e832ee1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD>
-{[choices]<INPUT TYPE="RADIO" NAME="{keyword-1}" {choices={defchoice-1}?CHECKED:} VALUE="{choices}">{text}}
-</TD>
-</TR>
diff --git a/templates/fr/option-conflict.tmpl b/templates/fr/option-conflict.tmpl
deleted file mode 100644 (file)
index 7077aac..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<P><B>Erreur:</B> Les options suivantes sont incompatibles entre elles:</P>
-
-<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
-}</UL>
-
-<P>Veuillez modifier une ou plusieurs de ces options pour r&eacute;soudre les conflits.</P>
diff --git a/templates/fr/option-header.tmpl b/templates/fr/option-header.tmpl
deleted file mode 100644 (file)
index 464726a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="tab" ID="{group_id}">
-
-<H3 ALIGN="CENTER">{group}</H3>
-
-<TABLE WIDTH="100%">
diff --git a/templates/fr/option-pickmany.tmpl b/templates/fr/option-pickmany.tmpl
deleted file mode 100644 (file)
index 0da75e5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT></TD>
-</TR>
diff --git a/templates/fr/option-pickone.tmpl b/templates/fr/option-pickone.tmpl
deleted file mode 100644 (file)
index 3e3deeb..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" ID="select-{keyword}" ONCHANGE="update_paramtable('{keyword}')">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT>
-{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
-<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
-<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Points</OPTION>
-<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Millim&eagrave;tres</OPTION>
-<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Centim&eagrave;tres</OPTION>
-<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Pouces</OPTION>
-<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Pieds</OPTION>
-<OPTION VALUE="m"{paramvalue=m? SELECTED:}>M&egrave;tres</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
-}</TABLE>
-</TD>:}
-</TR>
diff --git a/templates/fr/option-trailer.tmpl b/templates/fr/option-trailer.tmpl
deleted file mode 100644 (file)
index ceff313..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-</TABLE>
-
-<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="D&eacute;finir les options par d&eacute;faut"></P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/fr/pager.tmpl b/templates/fr/pager.tmpl
deleted file mode 100644 (file)
index c4e7ba5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<TABLE CLASS="inset" SUMMARY="Mise en Page">
-<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; Montrer les pr&eacute;c&eacute;dentes"></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="Montrer les suivantes &#x25b6;"></FORM>:&nbsp;}</TD>
-</TR>
-</TABLE>
diff --git a/templates/fr/printer-accept.tmpl b/templates/fr/printer-accept.tmpl
deleted file mode 100644 (file)
index cc25a09..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Accepte les T&acirc;ches sur {is_class?la classe:l'imprimante} {printer_name}</H2>
-
-<P>{is_class?La classe:L'imprimante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-accepte d&eacute;sormais les t&acirc;ches d'impression.</P>
-
-</DIV>
diff --git a/templates/fr/printer-added.tmpl b/templates/fr/printer-added.tmpl
deleted file mode 100644 (file)
index ce0a3b4..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Ajouter une imprimante</H2>
-
-<P>L'imprimante <A HREF="/printers/{printer_name}">{printer_name}</A> a &eacute;t&eacute; ajout&eacute;e
-avec succ&egrave;s.
-
-</DIV>
diff --git a/templates/fr/printer-configured.tmpl b/templates/fr/printer-configured.tmpl
deleted file mode 100644 (file)
index 79ccb15..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">D&eacute;finir les options par d&eacute;faut pour {printer_name}</H2>
-
-<P>{OP=set-class-options?Class <A HREF="/classes/{printer_name}">:l'imprimante <A HREF="/printers/{printer_name}">}{printer_name}</A>
- a &eacute;t&eacute; configur&eacute;e avec succ&egrave;s.
-
-</DIV>
diff --git a/templates/fr/printer-confirm.tmpl b/templates/fr/printer-confirm.tmpl
deleted file mode 100644 (file)
index 715ddd1..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Supprimer l'imprimante {printer_name}</H2>
-
-<P><B>Warning:</B> Etes-vous s&ucirc;r(e) de vouloir supprimer l'imprimante 
-{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="Supprimer l'imprimante"></FORM></P>
-
-</DIV>
diff --git a/templates/fr/printer-default.tmpl b/templates/fr/printer-default.tmpl
deleted file mode 100644 (file)
index d7f3703..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">D&eacute;finir {is_class?la classe:l'imprimante} {printer_name} comme imprimante par d&eacute;faut</H2>
-
-<P>{is_class?La classe:L'imprimante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-a &eacute;t&eacute; d&eacute;finie comme imprimante par d&eacute;faut du serveur.</P>
-
-<BLOCKQUOTE><B>Note:</B> Tout param&egrave;tre utilisateur d&eacute;fini via la commande 
-<TT>lpoptions</TT> sera prioritaire sur le param&egrave;tre d&eacute;fini i&ccedil;i.
-</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/fr/printer-deleted.tmpl b/templates/fr/printer-deleted.tmpl
deleted file mode 100644 (file)
index 43af955..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Supprimer l'imprimante {printer_name}</H2>
-
-<P>L'imprimante {printer_name} a &eacute;t&eacute; supprim&eacute;e avec succ&egrave;s.
-
-</DIV>
diff --git a/templates/fr/printer-jobs-header.tmpl b/templates/fr/printer-jobs-header.tmpl
deleted file mode 100644 (file)
index 551f47e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">T&acirc;ches</H3>
-</DIV>
diff --git a/templates/fr/printer-modified.tmpl b/templates/fr/printer-modified.tmpl
deleted file mode 100644 (file)
index db962dc..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifier l'Imprimante {printer_name}</H2>
-
-<P>L'imprimante <A HREF="/printers/{printer_name}">{printer_name}</A> a &eacute;t&eacute;
-modifi&eacute;e avec succ&egrave;s.
-
-</DIV>
\ No newline at end of file
diff --git a/templates/fr/printer-purge.tmpl b/templates/fr/printer-purge.tmpl
deleted file mode 100644 (file)
index ce167b9..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Purger les T&acirc;ches sur {is_class?la classe:l'imprimante} {printer_name}</H2>
-
-<P>Toutes les t&acirc;ches de {is_class?la classe:l'imprimante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-ont &eacute;t&eacute; purg&eacute;es.</P> 
-
-</DIV>
\ No newline at end of file
diff --git a/templates/fr/printer-reject.tmpl b/templates/fr/printer-reject.tmpl
deleted file mode 100644 (file)
index 36edcb8..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Rejeter les T&acirc;ches sur {is_class?Classe:Imprimante} {printer_name}</H2>
-
-<P>{is_class?La classe:L'imprimante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-n'accepte plus les t&acirc;ches d'impression.</P>
-
-</DIV>
diff --git a/templates/fr/printer-start.tmpl b/templates/fr/printer-start.tmpl
deleted file mode 100644 (file)
index f476c62..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">D&eacute;marrer {is_class?la classe:l'imprimante} {printer_name}</H2>
-
-<P>{is_class?La classe:L'imprimante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-a &eacute;t&eacute; d&eacute;marr&eacute;e.</P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/fr/printer-stop.tmpl b/templates/fr/printer-stop.tmpl
deleted file mode 100644 (file)
index eb36fb5..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Arr&ecirc;ter {is_class?la classe:l'imprimante} {printer_name}</H2>
-
-<P>{is_class?La classe:L'imprimante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-a &eacute;t&eacute; arr&ecirc;t&eacute;e.</P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/fr/printer.tmpl b/templates/fr/printer.tmpl
deleted file mode 100644 (file)
index ee50883..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?Inoccup&eacute;e:{printer_state=4?En cours d'impression:En pause}},
-{printer_is_accepting_jobs=0?Rejette les t&acirc;ches:Accepte les t&acirc;ches},
-{server_is_sharing_printers=0?Non:{printer_is_shared=0?Non:}} Partag&eacute;e{default_name={printer_name}?, Imprimante par d&eacute;faut:})</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="">Maintenance</OPTION>
-<OPTION VALUE="print-test-page">Imprimer une page de test</OPTION>
-{printer_commands~.*Clean.*?<OPTION VALUE="clean-print-heads">Nettoyer les t&ecirc;tes d'impression</OPTION>:}
-{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">Imprimer la page de test de l'imprimante</OPTION>:}
-{printer_state=5?<OPTION VALUE="start-printer">D&eacute;marrer l'imprimante</OPTION>:<OPTION VALUE="stop-printer">Arr&ecirc;ter l'imprimante</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Accepter les t&acirc;ches</OPTION>:<OPTION VALUE="reject-jobs">Rejeter les t&acirc;ches</OPTION>}
-<OPTION VALUE="move-jobs">Transf&eacute;rer toutes les t&acirc;ches</OPTION>
-<OPTION VALUE="purge-jobs">Purger toutes les t&acirc;ches</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<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="modify-printer">Modifier l'imprimante</OPTION>
-<OPTION VALUE="delete-printer">Supprimer l'imprimante</OPTION>
-<OPTION VALUE="set-printer-options">D&eacute;finir les options de l'imprimante</OPTION>
-<OPTION VALUE="set-as-default">D&eacute;finir par d&eacute;faut</OPTION>
-<OPTION VALUE="set-allowed-users">D&eacute;finir les autorisations</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Description:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Emplacement:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Pilote:</TH><TD>{printer_make_and_model} ({color_supported=1?color:grayscale}{sides_supported?, 2-sided printing:})<BR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Connexion:</TH><TD>{device_uri}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">D&eacute;fauts:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:inconnu}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/fr/printers-header.tmpl b/templates/fr/printers-header.tmpl
deleted file mode 100644 (file)
index fe6753f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Pas d'imprimante:Affichage de {#printer_name} sur {total} imprimante{total>1?s:}}.</P>
diff --git a/templates/fr/printers.tmpl b/templates/fr/printers.tmpl
deleted file mode 100644 (file)
index 2abc59c..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="Liste des Imprimantes">
-<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> Nom de la file <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nom de la file <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Description</TH><TH>Emplacement</TH><TH>Marque et Mod&egrave;le</TH><TH>&Eacute;tat</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?Inoccup&eacute;e:{printer_state=4?En cours d'impression:En pause}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/fr/restart.tmpl b/templates/fr/restart.tmpl
deleted file mode 100644 (file)
index da164b7..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifier les Param&egrave;tres</H2>
-
-<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> Veuillez patienter pendant que le serveur red&eacute;marre...</P>
-
-</DIV>
diff --git a/templates/fr/samba-export.tmpl b/templates/fr/samba-export.tmpl
deleted file mode 100644 (file)
index 94ff4fd..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<SCRIPT TYPE="text/javascript"><!--
-function select_printers() {
-  var list = document.export_samba.EXPORT_NAME;
-  var sel = document.export_samba.EXPORT_ALL.checked;
-
-  for (i = 0; i < list.length; i ++) {
-    list.options[i].selected = sel;
-  }
-}
---></SCRIPT>
-
-<FORM METHOD="POST" ACTION="/admin/" NAME="export_samba">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
-
-<H2 CLASS="title">Exporter les Imprimantes vers Samba</H2>
-
-{error?<P>Impossible d'exporter les imprimantes vers Samba\:</P>
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-<P>Consulter le fichier <A HREF="/admin/log/error_log"
-TARGET="_blank">error_log</A> pour plus d'informations.</P>:
-<P>Cette page vous permet d'exporter des imprimantes vers Samba de sorte que des
-clients Windows puissent y acc&eacute;der via l'ic&oacirc;ne <VAR>Voisinage r&eacute;seau</VAR> ou
-<VAR>Favoris r&eacute;seau</VAR> du bureau. Vous devez au pr&eacute;alable installer les
-pilotes Windows d'imprimante PostScript : cf. la page <i>man</i> <A
-HREF="/help/man-cupsaddsmb.html"
-TARGET="_blank">cupsaddsmb(8)</A>.</P>}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Imprimantes:</TH>
-<TD>
-<SELECT NAME="EXPORT_NAME" SIZE="10" MULTIPLE>
-{[printer_name]<OPTION VALUE="{printer_name}"{export_all? SELECTED:{printer_export? SELECTED:}}>{printer_name}}
-</SELECT><BR>
-<INPUT TYPE="CHECKBOX" NAME="EXPORT_ALL"{export_all? CHECKED:}
-onChange="select_printers()"> Exporter toutes les imprimantes
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Utilisateur Samba:</TH>
-<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (required)</TD>
-</TR>
-<TR>
-<TH CLASS="label">Mot de passe Samba:</TH>
-<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (required)</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Exporter les imprimantes vers Samba"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/fr/samba-exported.tmpl b/templates/fr/samba-exported.tmpl
deleted file mode 100644 (file)
index d4ad778..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P>Les imprimantes ont &eacute;t&eacute; export&eacute;es vers Samba avec succ&egrave;s.</P>
diff --git a/templates/fr/search.tmpl b/templates/fr/search.tmpl
deleted file mode 100644 (file)
index 50b1b4e..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
-{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
-{ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
-
-<P ALIGN="CENTER"><B>Rechercher dans
-{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?les classes:{SECTION=jobs?les t&acirc;ches:les imprimantes}}}:</B>
-<INPUT TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40"  PLACEHOLDER="" AUTOSAVE="org.cups.{SECTION}" RESULTS="20"> <INPUT
-TYPE="SUBMIT" VALUE="Rechercher"> <INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Vider"></P>
-
-</FORM>
diff --git a/templates/fr/set-printer-options-header.tmpl b/templates/fr/set-printer-options-header.tmpl
deleted file mode 100644 (file)
index 12e0b1d..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">D&eacute;finir les Options pour {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="Interroger l'imprimante pour les options par d&eacute;faut">:}
-
-<SCRIPT TYPE="text/javascript"><!--
-function update_paramtable(option)
-{
-  var cb = document.getElementById("select-" + option)
-  var paramstable = document.getElementById(option + "-params");
-  if (cb.value == "Custom")
-    paramstable.style.display = "table";
-  else
-    paramstable.style.display = "none";
-}
---></SCRIPT>
-
-<H3 CLASS="title">{[group_id]
-<A HREF="#{group_id}">{group}</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</H3>
-
-<DIV CLASS="tabs">
diff --git a/templates/fr/set-printer-options-trailer.tmpl b/templates/fr/set-printer-options-trailer.tmpl
deleted file mode 100644 (file)
index 11adc70..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-</DIV>
-
-<SCRIPT TYPE="text/javascript"><!--
-// Hide custom options parameters for browsers that understand Javascript
-var paramtables = document.getElementsByName("paramtable");
-for (var i = 0; i < paramtables.length; i++)
-{
-  var opt = paramtables[i].id.substr(0, paramtables[i].id.lastIndexOf("-"));
-  var cb = document.getElementById("select-" + opt);
-  if (cb.value != "Custom")
-    paramtables[i].style.display = "none";
-}
---></SCRIPT>
-</FORM>
-
-</DIV>
diff --git a/templates/fr/subscription-added.tmpl b/templates/fr/subscription-added.tmpl
deleted file mode 100644 (file)
index 54ffe8f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>L'abonnement au flux RSS {subscription_name} a &eacute;t&eacute; ajout&eacute; avec succ&egrave;s.</P>
-
-</DIV>
diff --git a/templates/fr/subscription-canceled.tmpl b/templates/fr/subscription-canceled.tmpl
deleted file mode 100644 (file)
index 54fbcef..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>L'abonnement #{notify_subscription_id} au flux RSS a &eacute;t&eacute; annul&eacute;.</P>
-
-</DIV>
diff --git a/templates/fr/test-page.tmpl b/templates/fr/test-page.tmpl
deleted file mode 100644 (file)
index 8be7c6f..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Imprimer une Page de Test sur {printer_name}</H2>
-
-<P>La page de test a &eacute;t&eacute; envoy&eacute;e; l'identifiant de la t&acirc;che est <A HREF="/{SECTION}/{printer_name}">
-{printer_name}-{job_id}</A>.</P>
-
-</DIV>
diff --git a/templates/fr/trailer.tmpl b/templates/fr/trailer.tmpl
deleted file mode 100644 (file)
index 9b8bac2..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS et le logo CUPS sont des marques d&eacute;pos&eacute;es de
-<A HREF="http://www.apple.com">Apple Inc.</A> CUPS est sous copyright 2007-2014 Apple
-Inc. Tous droits r&eacute;serv&eacute;s.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/templates/fr/users.tmpl b/templates/fr/users.tmpl
deleted file mode 100644 (file)
index cb9a052..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<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">Utilisateurs autoris&eacute;s &agrave; utiliser {printer_name}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Utilisateurs:</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:}>Autoriser ces utilisateurs &agrave; imprimer
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>Emp&ecirc;cher ces utilisateurs d'imprimer
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>
-<INPUT TYPE="SUBMIT" VALUE="D&eacute;finir les autorisations">
-</TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
index 8aaf89c1828a7a8ba7ba7f50dd15373bf2ec0d93..e41da576b4f135bc906eef416d0adb6ea0eb9398 100644 (file)
@@ -1,38 +1,35 @@
-<!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.';
-         }
+<!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">
+    <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;Home&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;Administration&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;Online&nbsp;Help&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;Jobs&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;Printers&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-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>
-<TR><TD COLSPAN="9">&nbsp;</TD></TR>
-</TABLE>
-<DIV ID="body">
+      }
+    --></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="/">Home</a></li>
+       <li><a {SECTION=admin?class="active" :}href="/admin">Administration</a></li>
+       <li><a {SECTION=classes?class="active" :}href="/classes/">Classes</a></li>
+       <li><a {SECTION=help?class="active" :}href="/help/">Help</a></li>
+       <li><a {SECTION=jobs?class="active" :}href="/jobs/">Jobs</a></li>
+       <li><a {SECTION=printers?class="active" :}href="/printers/">Printers</a></li>
+      </ul>
+    </div>
+    <div class="body">
+      <div class="row">
+       <h1>{title}</h1>
index 09741b54f496b6bc7093676eb856da4a666c669d..86343e7ea1c2a02f78732009b2a15915ad78fe32 100644 (file)
@@ -1,4 +1,3 @@
-<DIV CLASS="indent">
 <FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
 {TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
 
@@ -31,21 +30,12 @@ AUTOSAVE="org.cups.help" RESULTS="20">
 {QTEXT?</UL>:}
 :<P>No matches found.</P>}
 <HR NOSHADE>:}
-{HELPTITLE?<H1>{HELPTITLE}</H1>
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="View Printable Version"></FORM>:
+{HELPTITLE?<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="View Printable Version"></FORM>:
 
 <H1>Online Help</H1>
 
-<P>This is the CUPS online help interface. Enter search words
-above or click on any of the documentation links to display
-online help information.</P>
+<P>This is the CUPS online help interface. Enter search words above or click on any of the documentation links to display online help information.</P>
 
-<P>If you are new to CUPS, read the "<a
-href="/help/overview.html">Overview of CUPS</a>" page. Veteran users
-should read the "<a href="/help/whatsnew.html">What's New in CUPS
-1.6</a>" page.</P>
+<P>If you are new to CUPS, read the "<a href="/help/overview.html">Overview of CUPS</a>" page.</P>
 
-<P>The <A HREF="http://www.cups.org/">CUPS home page</A> also
-provides many resources including user discussion forums, answers
-to frequently-asked questions, and a form for submitting bug
-reports and feature requests.</P>}
+<P>The <A HREF="http://www.cups.org/">CUPS home page</A> also provides many resources including user discussion forums, answers to frequently-asked questions, and a form for submitting bug reports and feature requests.</P>}
index 4c1ebed851d90d155e4f3deeeb6be25d5feef4e1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1 +0,0 @@
-</DIV>
diff --git a/templates/it/add-class.tmpl b/templates/it/add-class.tmpl
deleted file mode 100644 (file)
index 6d1f862..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Aggiungi una classe</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nome:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Può contenere qualsiasi carattere stampabile ad eccezione di "/", "#" e spazio)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Descrizione:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Una descrizione esplicativa, ad esempio "HP LaserJet con Duplexer")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Posizione:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Una posizione esplicativa, ad esempio "Lab 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Membri:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Aggiungi una classe"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/it/add-printer.tmpl b/templates/it/add-printer.tmpl
deleted file mode 100644 (file)
index 95148c4..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Aggiungi una stampante</H2>
-
-<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="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
-{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nome:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
-<SMALL>(Può contenere qualsiasi carattere stampabile ad eccezione di "/", "#" e spazio)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Descrizione:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_INFO}"><BR>
-<SMALL>(Una descrizione esplicativa, ad esempio "HP LaserJet con Duplexer")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Posizione:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_LOCATION}"><BR>
-<SMALL>(Una posizione esplicativa, ad esempio "Lab 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Connessione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Condivisione:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Condividi questa stampante</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/it/add-rss-subscription.tmpl b/templates/it/add-rss-subscription.tmpl
deleted file mode 100644 (file)
index 394881d..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription">
-
-<H2 CLASS="title">Abbonati ad un feed RSS</H2>
-
-<TABLE SUMMARY="Modulo per abbonarsi ad un feed 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>(Può contenere qualsiasi carattere stampabile ad eccezione di spazio, "/", "?" e "#")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Coda:</TH>
-<TD COLSPAN="5"><SELECT NAME="PRINTER_URI" SIZE="10"><OPTION VALUE="#ALL#"{?PRINTER_URI=#ALL#? SELECTED:}>Tutte le code</OPTION>{[printer_name]<OPTION VALUE="{printer_uri_supported}"{?PRINTER_URI={printer_uri_supported}? SELECTED:}>{printer_name}</OPTION>}</SELECT></TD>
-</TR>
-<TR VALIGN="TOP">
-<TH CLASS="label">Eventi:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CREATED" {?EVENT_JOB_CREATED}>La stampa è stata creata<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_COMPLETED" {?EVENT_JOB_COMPLETED}>La stampa è stato completata<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_STOPPED" {?EVENT_JOB_STOPPED}>La stampa è stata fermata<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>Le opzioni di stampa sono state modificate</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_STOPPED" {?EVENT_PRINTER_STOPPED}>La coda è stata fermata<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_ADDED" {?EVENT_PRINTER_ADDED}>La coda è stata aggiunta<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_MODIFIED" {?EVENT_PRINTER_MODIFIED}>La coda è stata modificata<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_DELETED" {?EVENT_PRINTER_DELETED}>La coda è stata eliminata</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STARTED" {?EVENT_SERVER_STARTED}>Il server è stato avviato<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STOPPED" {?EVENT_SERVER_STOPPED}>Il server è stato fermato<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_RESTARTED" {?EVENT_SERVER_RESTARTED}>Il server è stato riavviato<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_AUDIT" {?EVENT_SERVER_AUDIT}>Controllo di sicurezza del server</TD>
-</TR>
-<TR>
-<TH CLASS="label">Numero massimo di eventi nel 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="Abbonati ad un feed RSS"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/it/admin.tmpl b/templates/it/admin.tmpl
deleted file mode 100644 (file)
index e5c5764..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-<TABLE CLASS="indent" SUMMARY="Operazioni di amministrazione">
-<TR><TD VALIGN="TOP">
-
-<H2 CLASS="title">Stampanti</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="Aggiungi una stampante"></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="Trova nuove stampanti"></FORM>
-<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Gestisci le stampanti"></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="Esporta le stampanti a Samba"></FORM>:}
-</P>
-
-<H2 CLASS="title">Classi</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="Aggiungi una classe"></FORM>
-<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Gestisci le classi"></FORM>
-</P>
-
-<H2 CLASS="title">Stampe</H2>
-
-<P>
-<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Gestisci le stampe"></FORM>
-</P>
-
-</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
-
-<H2 CLASS="title">Server</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="Edita il file di configurazione"></FORM>
-<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Visualizza il log degli accessi"></FORM>
-<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Visualizza il log degli errori"></FORM>
-<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Visualizza la pagina dei log"></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>Impostazioni del server\:</B></P>
-
-<P><A HREF="/admin/">Avanzate <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}> Condividi le stampanti connesse a questo sistema<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Numero massimo di client\:
-<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}> Consenti la stampa da internet<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Pubblicizza l'interfaccia web<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Consenti l'amministrazione remota<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Utilizza l'autenticazione Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Consenti agli utenti di eliminare qualsiasi stampa (non solo le proprie)<BR>
-<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Conserva la cronologia delle stampe<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Numero massimo di stampe (0 per nessun limite)\:
-<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Conserva i metadata\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Conserva i documenti\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Salva le informazioni di debug per la risoluzione dei problemi<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dimensione massima del file di log\:
-<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
-
-:<P><B>Impostazioni del server:</B></P>
-
-<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Avanzate <SMALL>&#x25b6;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Condividi le stampanti connesse a questo sistema<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Consenti la stampa da internet<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Consenti l'amministrazione remota<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Utilizza l'autenticazione Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Consenti agli utenti di eliminare qualsiasi stampa (non solo le proprie)<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Salva le informazioni di debug per la risoluzione dei problemi</P>
-
-}
-<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Modifica le impostazioni"></P>
-
-</FORM>}
-
-</TD></TR>
-</TABLE>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Abbonamenti 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="Aggiungi un abbonamento RSS"></FORM>
-</P>
-
-</DIV>
-
-{notify_subscription_id?<TABLE CLASS="list" SUMMARY="Abbonamenti RSS">
-<THEAD><TR><TH>Name</TH><TH>Events</TH><TH>Nome della coda</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="Elimina l'abbonamento RSS"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:Tutti i file}</TD></TR>}
-</TBODY>
-</TABLE>:}
diff --git a/templates/it/choose-device.tmpl b/templates/it/choose-device.tmpl
deleted file mode 100644 (file)
index e6f3bcb..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifica {printer_name}:Aggiungi una stampante}</H2>
-
-{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">Connessione attuale\:</TH>
-<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
-{current_device_uri}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Stampanti locali\:</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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}}
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Stampanti di rete rilevate\:</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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}:}}
-</TD>
-</TR>
-<TR>
-<TR>
-<TH CLASS="label">Altre stampanti di rete\:</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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-}:}}
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-</TABLE>
-
-</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Indicatore di occupato"> Ricerca delle stampanti in corso...</P>}
-
-</DIV>
diff --git a/templates/it/choose-make.tmpl b/templates/it/choose-make.tmpl
deleted file mode 100644 (file)
index f2a2730..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifica {printer_name}:Aggiungi una stampante}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<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}">:}
-<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}">
-
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Nome:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Descrizione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Posizione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Connessione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Condivisione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?No:{?printer_is_shared=0?No:}} Condividi questa stampante</TD>
-</TR>
-<TR>
-<TH CLASS="label">Make:</TH>
-<TD>
-<SELECT NAME="PPD_MAKE" SIZE="10">
-{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>&nbsp;</TD>
-</TR>
-<TR>
-<TH CLASS="label">Or Provide a PPD File:</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?Aggiungi una stampante:Modifica la stampante}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/it/choose-model.tmpl b/templates/it/choose-model.tmpl
deleted file mode 100644 (file)
index 85a5b11..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifica {printer_name}:Aggiungi una stampante}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<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}">:}
-<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}">
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Nome:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Descrizione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Posizione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Connessione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Condivisione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?No:{?printer_is_shared=0?No:}} Condividi questa stampante</TD>
-</TR>
-<TR>
-<TH CLASS="label">Marca:</TH>
-<TD>{PPD_MAKE} <INPUT TYPE="SUBMIT" NAME="SELECT_MAKE" VALUE="Seleziona un'altra marca"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Modello:</TH>
-<TD>
-<SELECT NAME="PPD_NAME" SIZE="10">
-{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Current Driver - {current_make_and_model}</OPTION>:}
-{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
-}</SELECT>
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Oppure fornisci un file PPD:</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?Aggiungi una stampante:Modifica una stampante}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/it/choose-serial.tmpl b/templates/it/choose-serial.tmpl
deleted file mode 100644 (file)
index e228e61..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifica {printer_name}:Aggiungi una stampante}</H2>
-
-<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>
-<TR>
-<TH CLASS="label">Connessione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Velocità di trasmissione:</TH>
-<TD><SELECT NAME="BAUDRATE">
-{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Parità:</TH>
-<TD><SELECT NAME="PARITY">
-<OPTION VALUE="none" {?parity=none?SELECTED:}>Nessuna
-<OPTION VALUE="even" {?parity=even?SELECTED:}>Pari
-<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Dispari
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Bit di dati:</TH>
-<TD><SELECT NAME="BITS">
-<OPTION {?bits=8?SELECTED:}>8
-<OPTION {?bits=7?SELECTED:}>7
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Controllo di flusso:</TH>
-<TD><SELECT NAME="FLOW">
-<OPTION VALUE="none" {?flow=none?SELECTED:}>Nessuno
-<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)
-</SELECT></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/it/choose-uri.tmpl b/templates/it/choose-uri.tmpl
deleted file mode 100644 (file)
index f4a7b5e..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifica {printer_name}:Aggiungi una stampante}</H2>
-
-<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}">:}
-<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Connessione:</TH>
-<TD><INPUT TYPE="URL" SIZE="60" MAXLENGTH="1023" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>Esempi:
-<PRE>
-    http://hostname:631/ipp/
-    http://hostname:631/ipp/port1
-
-    ipp://hostname/ipp/
-    ipp://hostname/ipp/port1
-
-    lpd://hostname/queue
-
-    socket://hostname
-    socket://hostname:9100
-</PRE>
-
-<P>Vedi <A HREF="/help/network.html" TARGET="_blank">"Stampanti
-di rete"</A> per l'URI corretto da utilizzare con la tua stampante.</P>
-
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/it/class-added.tmpl b/templates/it/class-added.tmpl
deleted file mode 100644 (file)
index 1f4a37c..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Aggiungi una classe</H2>
-
-<P>La classe <A HREF="/classes/{printer_name}">{printer_name}</A> è stata aggiunta
-correttamente.
-
-</DIV>
diff --git a/templates/it/class-confirm.tmpl b/templates/it/class-confirm.tmpl
deleted file mode 100644 (file)
index da3219d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Elimina una classe {printer_name}</H2>
-
-<P><B>Attenzione:</B> sei sicuro di voler eliminare la 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="Elimina la classe"></FORM></P>
-
-</DIV>
diff --git a/templates/it/class-deleted.tmpl b/templates/it/class-deleted.tmpl
deleted file mode 100644 (file)
index 7283e52..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Elimina una classe {printer_name}</H2>
-
-<P>La classe {printer_name} è stata eliminata correttamente.
-
-</DIV>
\ No newline at end of file
diff --git a/templates/it/class-jobs-header.tmpl b/templates/it/class-jobs-header.tmpl
deleted file mode 100644 (file)
index 12a936e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Stampe</H3>
-</DIV>
diff --git a/templates/it/class-modified.tmpl b/templates/it/class-modified.tmpl
deleted file mode 100644 (file)
index 81c934c..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifica una classe {printer_name}</H2>
-
-<P>La classe <A HREF="/classes/{printer_name}">{printer_name}</A> è stata
-modificata correttamente.
-
-</DIV>
\ No newline at end of file
diff --git a/templates/it/class.tmpl b/templates/it/class.tmpl
deleted file mode 100644 (file)
index 2f23362..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?Inattiva:{printer_state=4?Stampa in corso:In pausa}},
-{printer_is_accepting_jobs=0?Rifiuta le stampe:Accetta le stampe},
-{server_is_sharing_printers=0?No:{printer_is_shared=0?No:}} Condivisa{default_name={printer_name}?, Predefinito del server:})</H2>
-
-<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="manutenzione">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
-<OPTION VALUE="">Manutenzione</OPTION>
-<OPTION VALUE="print-test-page">Stampa una pagina di prova</OPTION>
-{printer_state=5?<OPTION VALUE="start-class">Ripristina la classe</OPTION>:<OPTION VALUE="stop-class">Sospendi la classe</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Accetta le stampe</OPTION>:<OPTION VALUE="reject-jobs">Rifiuta le stampe</OPTION>}
-<OPTION VALUE="move-jobs">Sposta tutte le stampe</OPTION>
-<OPTION VALUE="purge-jobs">Elimina tutte le stampe</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Vai" STYLE="display: none;">
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="amministrazione">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<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="">Amministrazione</OPTION>
-<OPTION VALUE="modify-class">Modifica una classe</OPTION>
-<OPTION VALUE="delete-class">Elimina una classe</OPTION>
-<OPTION VALUE="set-class-options">Imposta le opzioni predefinite</OPTION>
-<OPTION VALUE="set-as-default">Imposta come predefiniti del server</OPTION>
-<OPTION VALUE="set-allowed-users">Imposta utenti autorizzati</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Vai" STYLE="display: none;">
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Descrizione:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Posizione:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Membri:</TH><TD>{?member_uris=?Nessuno:{member_uris}}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Predefiniti:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:sconosciuto}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
diff --git a/templates/it/classes-header.tmpl b/templates/it/classes-header.tmpl
deleted file mode 100644 (file)
index 1fe0f4f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Nessuna classe:Mostrat{total=1?a:e} {#printer_name} di {total} class{total=1?e:i}}.</P>
diff --git a/templates/it/classes.tmpl b/templates/it/classes.tmpl
deleted file mode 100644 (file)
index ceff6a9..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="Lista delle classi">
-<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 della coda <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nome della coda <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Descrizione</TH><TH>Posizione</TH><TH>Membri</TH><TH>Stato</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=?Nessuno:{member_uris}}</TD><TD>{printer_state=3?Inattiva:{printer_state=4?Stampa in corso:In pausa}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/it/command.tmpl b/templates/it/command.tmpl
deleted file mode 100644 (file)
index 4be1806..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{title} su {printer_name}</H2>
-
-<P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
-ALIGN="ABSMIDDLE" ALT="Indicatore di occupato"> }Processo del comando della stampante
-{job_state=3?in attesa:{job_state=4?bloccata:
-{job_state=5?stampa in corso:{job_state=6?fermata:
-{job_state=7?annullata:{job_state=8?annullata:completata}}}}}}{job_state=9?:{job_printer_state_message?,
-<EM>"{job_printer_state_message}"</EM>:}}</P>
-
-</DIV>
diff --git a/templates/it/edit-config.tmpl b/templates/it/edit-config.tmpl
deleted file mode 100644 (file)
index 4b0e735..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<SCRIPT TYPE="text/javascript">
-function reset_config()
-{
-  document.cups.CUPSDCONF.value = "{?cupsdconf_default}";
-}
-</SCRIPT>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Edita il file di configurazione</H2>
-
-<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-
-<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
-
-<P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="Salva le modifiche">
-<INPUT TYPE="BUTTON" VALUE="Utilizza il file di configurazione predefinito"
-onClick="reset_config();"></P>
-
-</FORM>
-
-</DIV>
diff --git a/templates/it/error-op.tmpl b/templates/it/error-op.tmpl
deleted file mode 100644 (file)
index c6cdfa8..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} Errore</H2>
-
-<P>Errore:</P>
-
-<BLOCKQUOTE>Operazione sconosciuta "{op}"!</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/it/error.tmpl b/templates/it/error.tmpl
deleted file mode 100644 (file)
index 87f3162..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} Errore</H2>
-
-<P>{?message?{message}:Errore}:</P>
-
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/it/header.tmpl.in b/templates/it/header.tmpl.in
deleted file mode 100644 (file)
index a5896f6..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<!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 = 'Questa pagina utilizza i cookie per prevenire attacchi comuni cross-site. Abilita i cookies nel tuo 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;Home&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;Amministrazione&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=classes?:un}sel"><A HREF="/classes/">&nbsp;&nbsp;Classi&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=help?:un}sel"><A HREF="/help/">&nbsp;&nbsp;Guida&nbsp;in&nbsp;linea&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;Stampe&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;Stampanti&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-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>
-<TR><TD COLSPAN="9">&nbsp;</TD></TR>
-</TABLE>
-<DIV ID="body">
diff --git a/templates/it/help-header.tmpl b/templates/it/help-header.tmpl
deleted file mode 100644 (file)
index 754c275..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-<DIV CLASS="indent">
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
-{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
-
-<P ALIGN="CENTER"><B>Cerca in
-{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:tutti i documenti}}:</B> <INPUT
-TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER=""
-AUTOSAVE="org.cups.help" RESULTS="20">
-<INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="Cerca">
-<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Cancella"></P>
-
-</FORM>
-
-<!-- Bookmarks -->
-<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Contenuti">
-<TR><TD>
-
-<H3 CLASS="title">Documenti della guida in linea</H3>
-
-<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Tutti i documenti</A></P>
-<HR>
-
-{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
-}
-</TD></TR>
-</TABLE></DIV>
-
-{QUERY?<P>Cerca risultati in {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:tutti i documenti}}\:</P>
-{QTEXT?<UL>
-{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (in <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
-{QTEXT?</UL>:}
-:<P>Nessuna corrispondenza trovata.</P>}
-<HR NOSHADE>:}
-{HELPTITLE?<H1>{HELPTITLE}</H1>
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Visualizza la versione stampabile"></FORM>:
-
-<H1>Guida in linea</H1>
-
-<P>Questa è l'interfaccia della guida in linea di CUPS. Digita in alto
-le parole da ricercare oppure fai clic su uno dei collegamenti della documentazione,
-per visualizzare le informazioni della guida in linea.</P>
-
-<P>Se sei un nuovo utente di CUPS, leggi la pagina "<a
-href="/help/overview.html">Overview of CUPS</a>". Gli utenti esperti
-dovrebbero leggere la pagina "<a href="/help/whatsnew.html">What's New in CUPS
-1.7</a>".</P>
-
-<P>Inoltre, la <A HREF="http://www.cups.org/">pagina principale di CUPS</A>
-fornisce molte risorse, tra le quali: forum di discussione per gli utenti,
-risposte alle domande più frequenti ed un modulo per segnalare bug
-e richiedere nuove funzionalità.</P>}
diff --git a/templates/it/help-printable.tmpl b/templates/it/help-printable.tmpl
deleted file mode 100644 (file)
index 2463c16..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<!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/it/help-trailer.tmpl b/templates/it/help-trailer.tmpl
deleted file mode 100644 (file)
index 4c1ebed..0000000
+++ /dev/null
@@ -1 +0,0 @@
-</DIV>
diff --git a/templates/it/job-cancel.tmpl b/templates/it/job-cancel.tmpl
deleted file mode 100644 (file)
index 766881e..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Annulla la stampa {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La stampa {job_id}</A> è stata annullata.
-
-</DIV>
diff --git a/templates/it/job-hold.tmpl b/templates/it/job-hold.tmpl
deleted file mode 100644 (file)
index ac2d819..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Blocca la stampa {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La stampa {job_id}</A> è stata bloccata.
-
-</DIV>
diff --git a/templates/it/job-move.tmpl b/templates/it/job-move.tmpl
deleted file mode 100644 (file)
index ed49344..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<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}">
-{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
-
-<H2 CLASS="title">{job_id?Sposta la stampa {job_id}:Sposta tutte le stampe}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nuova destinazione:</TH>
-<TD>
-<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
-{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{job_id?Sposta la stampa:Sposta le stampe}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-
-</DIV>
diff --git a/templates/it/job-moved.tmpl b/templates/it/job-moved.tmpl
deleted file mode 100644 (file)
index 518bceb..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{job_id?Sposta la stampa {job_id}:Sposta tutte le stampe}</H2>
-
-<P>{job_id?<A HREF="/jobs/{job_id}">La stampa {job_id}</A>:Tutte le stampe} {job_id?è stata:sono state} spostat{job_id?a:e} su
-<A HREF="/{is_class?classes:printers}/{job_printer_name}">{job_printer_name}</A>.</P>
-
-</DIV>
diff --git a/templates/it/job-release.tmpl b/templates/it/job-release.tmpl
deleted file mode 100644 (file)
index c6520fd..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Rilascia la stampa {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La stampa {job_id}</A> è stata rilasciata.
-
-</DIV>
diff --git a/templates/it/job-restart.tmpl b/templates/it/job-restart.tmpl
deleted file mode 100644 (file)
index 59d9aa6..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Ripeti la stampa {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La stampa {job_id}</A> è stata riavviata.
-
-</DIV>
diff --git a/templates/it/jobs-header.tmpl b/templates/it/jobs-header.tmpl
deleted file mode 100644 (file)
index e8f295b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Mostra stampe attive"></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="Mostra le stampe completate"></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="Mostra tutte le stampe"></FORM>}</DIV>
-
-<P ALIGN="CENTER">{total=0?Nessuna stampa:Sto visualizzando {#job_id} di {total} {?which_jobs=?active: stamp{total=1?a:e} {which_jobs=all?:completat{total=1?a:e}}}}.</P>
diff --git a/templates/it/jobs.tmpl b/templates/it/jobs.tmpl
deleted file mode 100644 (file)
index b1f80d3..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-{#job_id=0?:
-<TABLE CLASS="list" SUMMARY="Elenco delle stampe">
-<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>Utente</TH><TH>Dimensione</TH><TH>Pagine</TH><TH>Stato</TH><TH>Controllo</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=?Sconosciuto:{job_name}}&nbsp;</TD>
-<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?Sconosciuto:{?job_media_sheets_completed}}&nbsp;</TD>
-<TD>{job_state=3?in attesa da<BR>{time_at_creation}:{job_state=4?bloccata da<BR>{time_at_creation}:
-{job_state=5?stampa in corso da<BR>{time_at_processing}:{job_state=6?fermata:
-{job_state=7?eliminata il<BR>{time_at_completed}:{job_state=8?annullata:completata il<BR>{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="Ripeti la stampa"></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="Sblocca la stampa"></FORM>:}
-{job_state=3?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-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="Blocca la stampa"></FORM>:}
-{job_state<7?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-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="Annulla la stampa"></FORM>
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="move-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="SUBMIT" VALUE="Sposta la stampa"></FORM>:}
-&nbsp;</TD>
-</TR>
-}
-</TBODY>
-</TABLE>
-}
diff --git a/templates/it/list-available-printers.tmpl b/templates/it/list-available-printers.tmpl
deleted file mode 100644 (file)
index 15c45c0..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Stampanti disponibili</H2>
-
-{#device_uri=0?<P>Nessuna stampante trovata.</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="Stampante locale"><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{device_make_and_model}"><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}"><INPUT TYPE="SUBMIT" VALUE="Aggiungi questa stampante"></FORM>
-{device_make_and_model} ({device_info})</LI>
-}</UL>}
-
-</DIV>
diff --git a/templates/it/modify-class.tmpl b/templates/it/modify-class.tmpl
deleted file mode 100644 (file)
index 6c71a37..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifica la classe {printer_name}</H2>
-
-<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}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Descrizione:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Posizione:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Membri:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Modifica la classe"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/it/modify-printer.tmpl b/templates/it/modify-printer.tmpl
deleted file mode 100644 (file)
index f87ff12..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifica {printer_name}</H2>
-
-<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="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="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Descrizione:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Una descrizione esplicativa, ad esempio "HP LaserJet con Duplexer")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Posizione:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Una posizione esplicativa, ad esempio "Lab 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Connessione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Condivisione:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Condividi questa stampante</TD>
-</TR>
-<TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/it/norestart.tmpl b/templates/it/norestart.tmpl
deleted file mode 100644 (file)
index 9dc7cd4..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifica le impostazioni</H2>
-
-<P>Il server non è stato riavviato perché non sono state apportate modifiche
-alla configurazione...</P>
-
-</DIV>
diff --git a/templates/it/option-boolean.tmpl b/templates/it/option-boolean.tmpl
deleted file mode 100644 (file)
index e832ee1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD>
-{[choices]<INPUT TYPE="RADIO" NAME="{keyword-1}" {choices={defchoice-1}?CHECKED:} VALUE="{choices}">{text}}
-</TD>
-</TR>
diff --git a/templates/it/option-conflict.tmpl b/templates/it/option-conflict.tmpl
deleted file mode 100644 (file)
index 90b2bc0..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<P><B>Error:</B> Le seguenti opzioni sono in conflitto:</P>
-
-<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
-}</UL>
-
-<P>Modifica una o più di queste opzioni per risolvere i conflitti.</P>
diff --git a/templates/it/option-header.tmpl b/templates/it/option-header.tmpl
deleted file mode 100644 (file)
index 464726a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="tab" ID="{group_id}">
-
-<H3 ALIGN="CENTER">{group}</H3>
-
-<TABLE WIDTH="100%">
diff --git a/templates/it/option-pickmany.tmpl b/templates/it/option-pickmany.tmpl
deleted file mode 100644 (file)
index 0da75e5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT></TD>
-</TR>
diff --git a/templates/it/option-pickone.tmpl b/templates/it/option-pickone.tmpl
deleted file mode 100644 (file)
index c21fc71..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" ID="select-{keyword}" ONCHANGE="update_paramtable('{keyword}')">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT>
-{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
-<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
-<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Punti</OPTION>
-<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Millimetri</OPTION>
-<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Centimetri</OPTION>
-<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Pollici</OPTION>
-<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Piedi</OPTION>
-<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Metri</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
-}</TABLE>
-</TD>:}
-</TR>
diff --git a/templates/it/option-trailer.tmpl b/templates/it/option-trailer.tmpl
deleted file mode 100644 (file)
index 22b06d7..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-</TABLE>
-
-<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="Imposta le opzioni predefinite"></P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/it/pager.tmpl b/templates/it/pager.tmpl
deleted file mode 100644 (file)
index 019646f..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<TABLE CLASS="inset" SUMMARY="Barra di paginazione">
-<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; Mostra precedente"></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="Mostra successiva &#x25b6;"></FORM>:&nbsp;}</TD>
-</TR>
-</TABLE>
diff --git a/templates/it/printer-accept.tmpl b/templates/it/printer-accept.tmpl
deleted file mode 100644 (file)
index 6fa701a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Accetta le stampe sulla {is_class?classe:stampante} {printer_name}</H2>
-
-<P>{is_class?La classe:La stampante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-adesso accetta le stampe.</P>
-
-</DIV>
diff --git a/templates/it/printer-added.tmpl b/templates/it/printer-added.tmpl
deleted file mode 100644 (file)
index e525845..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Aggiungi una stampante</H2>
-
-<P>La stampante <A HREF="/printers/{printer_name}">{printer_name}</A> è stata aggiunta
-correttamente.
-
-</DIV>
diff --git a/templates/it/printer-configured.tmpl b/templates/it/printer-configured.tmpl
deleted file mode 100644 (file)
index 054c9ab..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Imposta le opzioni predefinite per {printer_name}</H2>
-
-<P>{OP=set-class-options?Class <A HREF="/classes/{printer_name}">:La stampante <A HREF="/printers/{printer_name}">}{printer_name}</A>
-è stata configurata correttamente con le opzioni predefinite.
-
-</DIV>
diff --git a/templates/it/printer-confirm.tmpl b/templates/it/printer-confirm.tmpl
deleted file mode 100644 (file)
index b32a3c6..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Elimina la stampante {printer_name}</H2>
-
-<P><B>Attenzione:</B> sei sicuro di voler eliminare la stampante
-{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="Elimina la stampante"></FORM></P>
-
-</DIV>
diff --git a/templates/it/printer-default.tmpl b/templates/it/printer-default.tmpl
deleted file mode 100644 (file)
index 78282e1..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Imposta {is_class?la classe:la stampante} {printer_name} come predefinita</H2>
-
-<P>{is_class?La classe:La stampante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-è stata impostata come predefinita sul server.</P>
-
-<BLOCKQUOTE><B>Nota:</B> qualsiasi utente predefinito, impostato tramite
-il comando <TT>lpoptions</TT>, sovrascriverà questa impostazione
-predefinita.</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/it/printer-deleted.tmpl b/templates/it/printer-deleted.tmpl
deleted file mode 100644 (file)
index 4698805..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Elimina la stampante {printer_name}</H2>
-
-<P>La stampante {printer_name} è stata eliminata correttamente.
-
-</DIV>
diff --git a/templates/it/printer-jobs-header.tmpl b/templates/it/printer-jobs-header.tmpl
deleted file mode 100644 (file)
index 12a936e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Stampe</H3>
-</DIV>
diff --git a/templates/it/printer-modified.tmpl b/templates/it/printer-modified.tmpl
deleted file mode 100644 (file)
index 2a34e89..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifica la stampante {printer_name}</H2>
-
-<P>La stampante <A HREF="/printers/{printer_name}">{printer_name}</A> è stata
-modificata correttamente.
-
-</DIV>
\ No newline at end of file
diff --git a/templates/it/printer-purge.tmpl b/templates/it/printer-purge.tmpl
deleted file mode 100644 (file)
index 84a8a6f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Elimina le stampe sulla {is_class?classe:stampante} {printer_name}</H2>
-
-<P>{is_class?La classe:La stampante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-è stata liberata da tutte le stampe.</P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/it/printer-reject.tmpl b/templates/it/printer-reject.tmpl
deleted file mode 100644 (file)
index 51ed140..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Rifiuta le stampe sulla {is_class?classe:stampante} {printer_name}</H2>
-
-<P>{is_class?La classe:La stampante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-non accetta le stampe.</P>
-
-</DIV>
diff --git a/templates/it/printer-start.tmpl b/templates/it/printer-start.tmpl
deleted file mode 100644 (file)
index 61e992f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Ripristina {is_class?la classe:la stampante} {printer_name}</H2>
-
-<P>{is_class?La classe:La stampante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-è stata ripristinata.</P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/it/printer-stop.tmpl b/templates/it/printer-stop.tmpl
deleted file mode 100644 (file)
index 1ddc3b9..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Metti in pausa {is_class?la classe:la stampante} {printer_name}</H2>
-
-<P>{is_class?La classe:La stampante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-è stata messa in pausa.</P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/it/printer.tmpl b/templates/it/printer.tmpl
deleted file mode 100644 (file)
index dea4d9c..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?inattiva:{printer_state=4?stampa in corso:in pausa}},
-{printer_is_accepting_jobs=0?rifiuta le stampe:accetta le stampe},
-{server_is_sharing_printers=0?non è:{printer_is_shared=0?non è:}} condivisa{default_name={printer_name}?, stampante predefinita:})</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="">Manutenzione</OPTION>
-<OPTION VALUE="print-test-page">Stampa una pagina di prova</OPTION>
-{printer_commands~.*Clean.*?<OPTION VALUE="clean-print-heads">Pulisci le testine della stampante</OPTION>:}
-{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">Stampa la pagina di prova della stampante</OPTION>:}
-{printer_state=5?<OPTION VALUE="start-printer">Riattiva la stampante</OPTION>:<OPTION VALUE="stop-printer">Metti in pausa la stampante</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Accetta le stampe</OPTION>:<OPTION VALUE="reject-jobs">Rifiuta le stampe</OPTION>}
-<OPTION VALUE="move-jobs">Sposta tutte le stampe</OPTION>
-<OPTION VALUE="purge-jobs">Elimina tutte le stampe</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<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="">Amministrazione</OPTION>
-<OPTION VALUE="modify-printer">Modifica la stampante</OPTION>
-<OPTION VALUE="delete-printer">Elimina la stampante</OPTION>
-<OPTION VALUE="set-printer-options">Imposta le opzioni predefinite</OPTION>
-<OPTION VALUE="set-as-default">Imposta come predefinita</OPTION>
-<OPTION VALUE="set-allowed-users">Imposta gli utenti autorizzati</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Descrizione:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Posizione:</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">Connessione:</TH><TD>{device_uri}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Valori predefiniti:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:sconosciuto}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/it/printers-header.tmpl b/templates/it/printers-header.tmpl
deleted file mode 100644 (file)
index c17bb2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Nessuna stampante:Sto visualizzando {#printer_name} di {total} stampant{total=1?e:i}}.</P>
diff --git a/templates/it/printers.tmpl b/templates/it/printers.tmpl
deleted file mode 100644 (file)
index 037717e..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="Elenco delle stampanti">
-<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 della coda <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nome della coda <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Descrizione</TH><TH>Posizione</TH><TH>Marca e modello</TH><TH>Stato</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?Inattiva:{printer_state=4?Stampa in corso:In pausa}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/it/restart.tmpl b/templates/it/restart.tmpl
deleted file mode 100644 (file)
index 91d904e..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifica le impostazioni</H2>
-
-<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Indicatore di occupato"> Attendere che il server si riavvii...</P>
-
-</DIV>
diff --git a/templates/it/samba-export.tmpl b/templates/it/samba-export.tmpl
deleted file mode 100644 (file)
index 00bd442..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<SCRIPT TYPE="text/javascript"><!--
-function select_printers() {
-  var list = document.export_samba.EXPORT_NAME;
-  var sel = document.export_samba.EXPORT_ALL.checked;
-
-  for (i = 0; i < list.length; i ++) {
-    list.options[i].selected = sel;
-  }
-}
---></SCRIPT>
-
-<FORM METHOD="POST" ACTION="/admin/" NAME="export_samba">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
-
-<H2 CLASS="title">Esporta le stampanti a Samba</H2>
-
-{error?<P>Non è possibile esportare le stampanti a Samba\:</P>
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-<P>Per maggiori informazioni, consulta il file <A HREF="/admin/log/error_log"
-TARGET="_blank">error_log</A>.</P>:
-<P>Questa pagina ti consente di esportare le stampanti a Samba, in modo che
-i client Windows possano accedervi tramite le icone <VAR>Risorse
-di rete</VAR> dei loro desktop. Innanzitutto, dovete installare i driver delle
-stampanti Windows PostScript, come descritto nella pagina di manuale di <A
-HREF="/help/man-cupsaddsmb.html"
-TARGET="_blank">cupsaddsmb(8)</A>.</P>}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Stampanti:</TH>
-<TD>
-<SELECT NAME="EXPORT_NAME" SIZE="10" MULTIPLE>
-{[printer_name]<OPTION VALUE="{printer_name}"{export_all? SELECTED:{printer_export? SELECTED:}}>{printer_name}}
-</SELECT><BR>
-<INPUT TYPE="CHECKBOX" NAME="EXPORT_ALL"{export_all? CHECKED:}
-onChange="select_printers()"> Esporta tutte le stampanti
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Username di Samba:</TH>
-<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (richiesto)</TD>
-</TR>
-<TR>
-<TH CLASS="label">Password di Samba:</TH>
-<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (richiesto)</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Esporta le stampanti a Samba"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/it/samba-exported.tmpl b/templates/it/samba-exported.tmpl
deleted file mode 100644 (file)
index edb6578..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P>Le stampanti sono state esportate a Samba correttamente.</P>
diff --git a/templates/it/search.tmpl b/templates/it/search.tmpl
deleted file mode 100644 (file)
index 1679a75..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
-{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
-{ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
-
-<P ALIGN="CENTER"><B>Cerca in
-{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?classi:{SECTION=jobs?stampe:stampanti}}}:</B>
-<INPUT TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40"  PLACEHOLDER="" AUTOSAVE="org.cups.{SECTION}" RESULTS="20"> <INPUT
-TYPE="SUBMIT" VALUE="Cerca"> <INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Cancella"></P>
-
-</FORM>
diff --git a/templates/it/set-printer-options-header.tmpl b/templates/it/set-printer-options-header.tmpl
deleted file mode 100644 (file)
index d551348..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Imposta le opzioni predefinite per {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="Interroga la stampante per le opzioni predefinite">:}
-
-<SCRIPT TYPE="text/javascript"><!--
-function update_paramtable(option)
-{
-  var cb = document.getElementById("select-" + option)
-  var paramstable = document.getElementById(option + "-params");
-  if (cb.value == "Custom")
-    paramstable.style.display = "table";
-  else
-    paramstable.style.display = "none";
-}
---></SCRIPT>
-
-<H3 CLASS="title">{[group_id]
-<A HREF="#{group_id}">{group}</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</H3>
-
-<DIV CLASS="tabs">
diff --git a/templates/it/set-printer-options-trailer.tmpl b/templates/it/set-printer-options-trailer.tmpl
deleted file mode 100644 (file)
index 11adc70..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-</DIV>
-
-<SCRIPT TYPE="text/javascript"><!--
-// Hide custom options parameters for browsers that understand Javascript
-var paramtables = document.getElementsByName("paramtable");
-for (var i = 0; i < paramtables.length; i++)
-{
-  var opt = paramtables[i].id.substr(0, paramtables[i].id.lastIndexOf("-"));
-  var cb = document.getElementById("select-" + opt);
-  if (cb.value != "Custom")
-    paramtables[i].style.display = "none";
-}
---></SCRIPT>
-</FORM>
-
-</DIV>
diff --git a/templates/it/subscription-added.tmpl b/templates/it/subscription-added.tmpl
deleted file mode 100644 (file)
index 19269d5..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>L'abbonamento al feed RSS {subscription_name} è stato aggiunto correttamente.</P>
-
-</DIV>
diff --git a/templates/it/subscription-canceled.tmpl b/templates/it/subscription-canceled.tmpl
deleted file mode 100644 (file)
index 4f71ffb..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>L'abbonamento al feed RSS #{notify_subscription_id} è stato annullato.</P>
-
-</DIV>
diff --git a/templates/it/test-page.tmpl b/templates/it/test-page.tmpl
deleted file mode 100644 (file)
index 3cab684..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Stampa una pagina di prova su {printer_name}</H2>
-
-<P>La pagina di prova è stata inviata; l'ID della stampa è <A HREF="/{SECTION}/{printer_name}">
-{printer_name}-{job_id}</A>.</P>
-
-</DIV>
diff --git a/templates/it/trailer.tmpl b/templates/it/trailer.tmpl
deleted file mode 100644 (file)
index e9dae0a..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-</DIV></TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS e il logo di CUPS sono marchi registrati da
-<A HREF="http://www.apple.com">Apple Inc.</A> Copyright 2007-2014 Apple
-Inc. Tutti i diritti sono riservati.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/templates/it/users.tmpl b/templates/it/users.tmpl
deleted file mode 100644 (file)
index 69a1a0f..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<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">Utenti autorizzati ad utilizzare {printer_name}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Utenti:</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:}>Consenti a questi utenti di stampare
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>Vieta a questi utenti di stampare
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>
-<INPUT TYPE="SUBMIT" VALUE="Imposta gli utenti autorizzati">
-</TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ja/add-class.tmpl b/templates/ja/add-class.tmpl
deleted file mode 100644 (file)
index b4e9166..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">クラスの追加</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">名前:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL("/"、"#"、スペースを除く表示可能文字を含めることができます)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">説明:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>("HP LaserJet with Duplexer" のように人が読みやすい説明)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">場所:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>("Lab 1" のように人が読みやすい場所)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">メンバー:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="クラスの追加"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/ja/add-printer.tmpl b/templates/ja/add-printer.tmpl
deleted file mode 100644 (file)
index 00fab5c..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">新しいプリンターの追加</H2>
-
-<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="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
-{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">名前:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
-<SMALL>("/"、"#"、スペースを除く表示可能文字を含めることができます)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">説明:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_INFO}"><BR>
-<SMALL>("HP LaserJet with Duplexer" のように人が読みやすい説明)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">場所:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_LOCATION}"><BR>
-<SMALL>("Lab 1" のように人が読みやすい場所)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">接続:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">共有:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-このプリンターを共有する</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="続ける"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/ja/add-rss-subscription.tmpl b/templates/ja/add-rss-subscription.tmpl
deleted file mode 100644 (file)
index c5afeb0..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription">
-
-<H2 CLASS="title">RSS 購読を追加</H2>
-
-<TABLE SUMMARY="RSS 購読フォームを追加">
-<TR>
-<TH CLASS="label">名前:</TH>
-<TD COLSPAN="5"><INPUT TYPE="TEXT" NAME="SUBSCRIPTION_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?SUBSCRIPTION_NAME}"><BR>
-<SMALL>("/"、"?"、"#"、スペースを除く文字を含めることができます)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">キュー:</TH>
-<TD COLSPAN="5"><SELECT NAME="PRINTER_URI" SIZE="10"><OPTION VALUE="#ALL#"{?PRINTER_URI=#ALL#? SELECTED:}>すべてのキュー</OPTION>{[printer_name]<OPTION VALUE="{printer_uri_supported}"{?PRINTER_URI={printer_uri_supported}? SELECTED:}>{printer_name}</OPTION>}</SELECT></TD>
-</TR>
-<TR VALIGN="TOP">
-<TH CLASS="label">イベント:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CREATED" {?EVENT_JOB_CREATED}>ジョブが作成された<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_COMPLETED" {?EVENT_JOB_COMPLETED}>ジョブが完了した<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_STOPPED" {?EVENT_JOB_STOPPED}>ジョブが停止した<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>ジョブオプションが変更された</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_STOPPED" {?EVENT_PRINTER_STOPPED}>キューが停止した<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_ADDED" {?EVENT_PRINTER_ADDED}>キューが追加された<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_MODIFIED" {?EVENT_PRINTER_MODIFIED}>キューが変更された<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_DELETED" {?EVENT_PRINTER_DELETED}>キューが削除された</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STARTED" {?EVENT_SERVER_STARTED}>サーバーが開始した<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STOPPED" {?EVENT_SERVER_STOPPED}>サーバーが停止した<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_RESTARTED" {?EVENT_SERVER_RESTARTED}>サーバーが再起動した<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_AUDIT" {?EVENT_SERVER_AUDIT}>サーバーのセキュリティを監査中</TD>
-</TR>
-<TR>
-<TH CLASS="label">フィード内の最大イベント数:</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="RSS 購読を追加"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/ja/admin.tmpl b/templates/ja/admin.tmpl
deleted file mode 100644 (file)
index 53cb2da..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-<TABLE CLASS="indent" SUMMARY="管理者タスク">
-<TR><TD VALIGN="TOP">
-
-<H2 CLASS="title">プリンター</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="プリンターの追加"></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="新しいプリンターの検索"></FORM>
-<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="プリンターの管理"></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="プリンターを Samba にエクスポート"></FORM>:}
-</P>
-
-<H2 CLASS="title">クラス</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="クラスの追加"></FORM>
-<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="クラスの管理"></FORM>
-</P>
-
-<H2 CLASS="title">ジョブ</H2>
-
-<P>
-<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="ジョブの管理"></FORM>
-</P>
-
-</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
-
-<H2 CLASS="title">サーバー</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="設定ファイルの編集"></FORM>
-<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="アクセスログの表示"></FORM>
-<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="エラーログの表示"></FORM>
-<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="ページログの表示"></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>サーバー設定\:</B></P>
-
-<P><A HREF="/admin/">詳細 <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}> このシステムに接続されているプリンターを共有<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最大クライアント数\:
-<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}> インターネットからの印刷を許可<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> ウェブインターフェイスを公開<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> リモート管理を許可<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Kerberos 認証を使用 (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> 所有者以外のユーザーにもジョブのキャンセルを許可<BR>
-<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> ジョブの履歴を保存<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最大ジョブ数 (0 は無制限)\:
-<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;メタデータを保持\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ドキュメントを保持\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> トラブルシューティングのためにデバッグ情報を保存<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最大ログファイルサイズ\:
-<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
-
-:<P><B>サーバー設定:</B></P>
-
-<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">詳細 <SMALL>&#x25b6;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> このシステムに接続されているプリンターを共有<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> インターネットからの印刷を許可<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> リモート管理を許可<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Kerberos 認証を使用 (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> 所有者以外のユーザーにもジョブのキャンセルを許可<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> トラブルシューティングのためにデバッグ情報を保存</P>
-
-}
-<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="設定の変更"></P>
-
-</FORM>}
-
-</TD></TR>
-</TABLE>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">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="RSS 購読の追加"></FORM>
-</P>
-
-</DIV>
-
-{notify_subscription_id?<TABLE CLASS="list" SUMMARY="RSS 購読">
-<THEAD><TR><TH>名前</TH><TH>イベント</TH><TH>キュー名</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 購読のキャンセル"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:すべてのキュー}</TD></TR>}
-</TBODY>
-</TABLE>:}
diff --git a/templates/ja/choose-device.tmpl b/templates/ja/choose-device.tmpl
deleted file mode 100644 (file)
index 83b1c6a..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?{printer_name} の変更:プリンターの追加}</H2>
-
-{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">現在の接続\:</TH>
-<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
-{current_device_uri}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">ローカルプリンター\:</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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}}
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">発見されたネットワークプリンター\:</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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}:}}
-</TD>
-</TR>
-<TR>
-<TR>
-<TH CLASS="label">その他のネットワークプリンター\:</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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-}:}}
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="続ける"></TD>
-</TR>
-</TABLE>
-
-</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> プリンターを探しています...</P>}
-
-</DIV>
diff --git a/templates/ja/choose-make.tmpl b/templates/ja/choose-make.tmpl
deleted file mode 100644 (file)
index 7d2d923..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?{printer_name}の変更:プリンターの追加}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<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}">:}
-<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}">
-
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">名前:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">説明:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">場所:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">接続:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">共有:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-このプリンターを共有{?printer_is_shared=?しない:{?printer_is_shared=0?しない:する}}</TD>
-</TR>
-<TR>
-<TH CLASS="label">メーカー:</TH>
-<TD>
-<SELECT NAME="PPD_MAKE" SIZE="10">
-{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="続ける"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>&nbsp;</TD>
-</TR>
-<TR>
-<TH CLASS="label">または PPD ファイルを提供:</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?プリンターの追加:プリンターの変更}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/ja/choose-model.tmpl b/templates/ja/choose-model.tmpl
deleted file mode 100644 (file)
index e82cece..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?{printer_name}の変更:プリンターの追加}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<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}">:}
-<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}">
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">名前:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">説明:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">場所:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">接続:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">共有:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-このプリンターを共有{?printer_is_shared=?しない:{?printer_is_shared=0?しない:する}}</TD>
-</TR>
-<TR>
-<TH CLASS="label">メーカー:</TH>
-<TD>{PPD_MAKE} <INPUT TYPE="SUBMIT" NAME="SELECT_MAKE" VALUE="他のメーカー/製造元を選択"></TD>
-</TR>
-<TR>
-<TH CLASS="label">モデル:</TH>
-<TD>
-<SELECT NAME="PPD_NAME" SIZE="10">
-{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>現在のドライバー - {current_make_and_model}</OPTION>:}
-{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
-}</SELECT>
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">または PPD ファイルを提供:</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?プリンターの追加:プリンターの変更}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/ja/choose-serial.tmpl b/templates/ja/choose-serial.tmpl
deleted file mode 100644 (file)
index 924b84a..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?{printer_name}の変更:プリンターの追加}</H2>
-
-<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>
-<TR>
-<TH CLASS="label">接続:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">ボーレート:</TH>
-<TD><SELECT NAME="BAUDRATE">
-{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">パリティ:</TH>
-<TD><SELECT NAME="PARITY">
-<OPTION VALUE="none" {?parity=none?SELECTED:}>なし
-<OPTION VALUE="even" {?parity=even?SELECTED:}>偶数
-<OPTION VALUE="odd" {?parity=odd?SELECTED:}>奇数
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">データビット:</TH>
-<TD><SELECT NAME="BITS">
-<OPTION {?bits=8?SELECTED:}>8
-<OPTION {?bits=7?SELECTED:}>7
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">フロー制御:</TH>
-<TD><SELECT NAME="FLOW">
-<OPTION VALUE="none" {?flow=none?SELECTED:}>なし
-<OPTION VALUE="soft" {?flow=soft?SELECTED:}>XON/XOFF (ソフトウェア)
-<OPTION VALUE="hard" {?flow=hard?SELECTED:}>RTS/CTS (ハードウェア)
-<OPTION VALUE="dtrdsr" {?flow=dtrdsr?SELECTED:}>DTR/DSR (ハードウェア)
-</SELECT></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="続ける"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/ja/choose-uri.tmpl b/templates/ja/choose-uri.tmpl
deleted file mode 100644 (file)
index 2c687be..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?{printer_name}の変更:プリンターの追加}</H2>
-
-<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}">:}
-<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">接続:</TH>
-<TD><INPUT TYPE="URL" SIZE="60" MAXLENGTH="1023" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>例:
-<PRE>
-    http://hostname:631/ipp/
-    http://hostname:631/ipp/port1
-
-    ipp://hostname/ipp/
-    ipp://hostname/ipp/port1
-
-    lpd://hostname/queue
-
-    socket://hostname
-    socket://hostname:9100
-</PRE>
-
-<P>あなたのプリンターにふさわしい URI については、<A HREF="/help/network.html" TARGET="_blank">"ネットワークプリンター"</A>を参照してください。</P>
-
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="続ける"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/ja/class-added.tmpl b/templates/ja/class-added.tmpl
deleted file mode 100644 (file)
index 284aa9f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">クラスの追加</H2>
-
-<P>クラス <A HREF="/classes/{printer_name}">{printer_name}</A> は正しく追加されました。
-
-</DIV>
diff --git a/templates/ja/class-confirm.tmpl b/templates/ja/class-confirm.tmpl
deleted file mode 100644 (file)
index 6ab315d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">クラス {printer_name} の削除</H2>
-
-<P><B>警告:</B> 本当にクラス 
-{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="クラスの削除"></FORM></P>
-
-</DIV>
diff --git a/templates/ja/class-deleted.tmpl b/templates/ja/class-deleted.tmpl
deleted file mode 100644 (file)
index 6941321..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">クラス {printer_name} の削除</H2>
-
-<P>クラス {printer_name} は正しく削除されました。
-
-</DIV>
\ No newline at end of file
diff --git a/templates/ja/class-jobs-header.tmpl b/templates/ja/class-jobs-header.tmpl
deleted file mode 100644 (file)
index 1d5d887..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">ジョブ</H3>
-</DIV>
diff --git a/templates/ja/class-modified.tmpl b/templates/ja/class-modified.tmpl
deleted file mode 100644 (file)
index be65f13..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">クラス {printer_name} の変更</H2>
-
-<P>クラス <A HREF="/classes/{printer_name}">{printer_name}</A> は正しく変更されました。
-
-</DIV>
\ No newline at end of file
diff --git a/templates/ja/class.tmpl b/templates/ja/class.tmpl
deleted file mode 100644 (file)
index b71ea7e..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?待機中:{printer_state=4?処理中:停止}},
-{printer_is_accepting_jobs=0?ジョブを拒否中:ジョブを受け付け中},
-{server_is_sharing_printers=0?非:{printer_is_shared=0?非:}} 共有{default_name={printer_name}?, サーバーのデフォルト:})</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="">メンテナンス</OPTION>
-<OPTION VALUE="print-test-page">テストページの印刷</OPTION>
-{printer_state=5?<OPTION VALUE="start-class">クラスの再開</OPTION>:<OPTION VALUE="stop-class">クラスの停止</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">ジョブを受け付け</OPTION>:<OPTION VALUE="reject-jobs">ジョブを拒否</OPTION>}
-<OPTION VALUE="move-jobs">すべてのジョブの移動</OPTION>
-<OPTION VALUE="purge-jobs">すべてのジョブをキャンセル</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<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="">管理</OPTION>
-<OPTION VALUE="modify-class">クラスの変更</OPTION>
-<OPTION VALUE="delete-class">クラスの削除</OPTION>
-<OPTION VALUE="set-class-options">デフォルトオプションの設定</OPTION>
-<OPTION VALUE="set-as-default">サーバーのデフォルトの設定</OPTION>
-<OPTION VALUE="set-allowed-users">許可するユーザーの設定</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="進む" STYLE="display: none;">
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">説明:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">場所:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">メンバー:</TH><TD>{?member_uris=?なし:{member_uris}}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">デフォルト:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:unknown}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
diff --git a/templates/ja/classes-header.tmpl b/templates/ja/classes-header.tmpl
deleted file mode 100644 (file)
index 506603c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?クラスはありません:{total} 個のクラスのうち {#printer_name} 個を表示中}。</P>
diff --git a/templates/ja/classes.tmpl b/templates/ja/classes.tmpl
deleted file mode 100644 (file)
index 823a832..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{#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>
-</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=?なし:{member_uris}}</TD><TD>{printer_state=3?待機中:{printer_state=4?処理中:停止}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/ja/command.tmpl b/templates/ja/command.tmpl
deleted file mode 100644 (file)
index f892335..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{printer_name} の {title}</H2>
-
-<P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
-ALIGN="ABSMIDDLE" ALT="Busy Indicator"> }プリンターコマンドジョブ
-{job_state=3?ペンディング中:{job_state=4?ホールド中:
-{job_state=5?処理中:{job_state=6?停止中:
-{job_state=7?キャンセル:{job_state=8?破棄:完了}}}}}}{job_state=9?:{job_printer_state_message?,
-<EM>"{job_printer_state_message}"</EM>:}}</P>
-
-</DIV>
diff --git a/templates/ja/edit-config.tmpl b/templates/ja/edit-config.tmpl
deleted file mode 100644 (file)
index dfd7dc9..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<SCRIPT TYPE="text/javascript">
-function reset_config()
-{
-  document.cups.CUPSDCONF.value = "{?cupsdconf_default}";
-}
-</SCRIPT>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">設定ファイルの設定</H2>
-
-<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-
-<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
-
-<P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="変更の保存">
-<INPUT TYPE="BUTTON" VALUE="デフォルトの設定ファイルを使用"
-onClick="reset_config();"></P>
-
-</FORM>
-
-</DIV>
diff --git a/templates/ja/error-op.tmpl b/templates/ja/error-op.tmpl
deleted file mode 100644 (file)
index 89ffbae..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} のエラー</H2>
-
-<P>エラー:</P>
-
-<BLOCKQUOTE>"{op}" は未知の操作です!</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/ja/error.tmpl b/templates/ja/error.tmpl
deleted file mode 100644 (file)
index d67ce36..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} のエラー</H2>
-
-<P>{?message?{message}:エラー}:</P>
-
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/ja/header.tmpl.in b/templates/ja/header.tmpl.in
deleted file mode 100644 (file)
index 1bf55fd..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<!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;ホーム&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;管理&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=classes?:un}sel"><A HREF="/classes/">&nbsp;&nbsp;クラス&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=help?:un}sel"><A HREF="/help/">&nbsp;&nbsp;ヘルプ&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;ジョブ&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;プリンター&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-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>
-<TR><TD COLSPAN="9">&nbsp;</TD></TR>
-</TABLE>
-<DIV ID="body">
diff --git a/templates/ja/help-header.tmpl b/templates/ja/help-header.tmpl
deleted file mode 100644 (file)
index 4a1f0ff..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-<DIV CLASS="indent">
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
-{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
-
-<P ALIGN="CENTER"><B>
-{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:すべてのドキュメント}}内を検索:</B> <INPUT
-TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER=""
-AUTOSAVE="org.cups.help" RESULTS="20">
-<INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="検索">
-<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="クリア"></P>
-
-</FORM>
-
-<!-- Bookmarks -->
-<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="目次">
-<TR><TD>
-
-<H3 CLASS="title">オンラインヘルプドキュメント</H3>
-
-<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">すべてのドキュメント</A></P>
-<HR>
-
-{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
-}
-</TD></TR>
-</TABLE></DIV>
-
-{QUERY?<P>{HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:すべてのドキュメント}}の検索結果\:</P>
-{QTEXT?<UL>
-{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (in <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
-{QTEXT?</UL>:}
-:<P>マッチするものは見つかりませんでした。</P>}
-<HR NOSHADE>:}
-{HELPTITLE?<H1>{HELPTITLE}</H1>
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="印刷可能なバージョンの表示"></FORM>:
-
-<H1>オンラインヘルプ</H1>
-
-<P>これは、CUPS のオンラインヘルプインターフェイスです。
-オンラインヘルプ情報を表示するには、検索語句を上に入力するか、
-ドキュメントリンクのいずれかをクリックしてください。</P>
-
-<P>あなたが CUPS について初心者なら、 "<a
-href="/help/overview.html">CUPS の概要</a>" ページを読んでください。
-上級ユーザーは、 "<a href="/help/whatsnew.html">CUPS 1.6 の新機能</a>"
-ページを読むべきです。</P>
-
-<P><A HREF="http://www.cups.org/">CUPS ホームページ</A> でも、
-ユーザーディスカッションフォーラム、FAQ、
-バグ報告や機能リクエストを申請するフォームといった、
-多くのリソースを提供しています。</P>}
diff --git a/templates/ja/help-printable.tmpl b/templates/ja/help-printable.tmpl
deleted file mode 100644 (file)
index 2463c16..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<!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/ja/help-trailer.tmpl b/templates/ja/help-trailer.tmpl
deleted file mode 100644 (file)
index 4c1ebed..0000000
+++ /dev/null
@@ -1 +0,0 @@
-</DIV>
diff --git a/templates/ja/job-cancel.tmpl b/templates/ja/job-cancel.tmpl
deleted file mode 100644 (file)
index aa10295..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">ジョブ {job_id} のキャンセル</H2>
-
-<P><A HREF="{job_printer_uri}">ジョブ {job_id}</A> はキャンセルされました。
-
-</DIV>
diff --git a/templates/ja/job-hold.tmpl b/templates/ja/job-hold.tmpl
deleted file mode 100644 (file)
index baae237..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">ジョブ {job_id} の保留</H2>
-
-<P><A HREF="{job_printer_uri}">ジョブ {job_id}</A> は印刷を保留されました。
-
-</DIV>
diff --git a/templates/ja/job-move.tmpl b/templates/ja/job-move.tmpl
deleted file mode 100644 (file)
index 54da7e0..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<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}">
-{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
-
-<H2 CLASS="title">{job_id?ジョブ {job_id} の移動:すべてのジョブの移動}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">新しい宛先:</TH>
-<TD>
-<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
-{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{job_id?ジョブの移動:ジョブの移動}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-
-</DIV>
diff --git a/templates/ja/job-moved.tmpl b/templates/ja/job-moved.tmpl
deleted file mode 100644 (file)
index c415359..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{job_id?ジョブ {job_id} の移動:すべてのジョブの移動}</H2>
-
-<P>{job_id?<A HREF="/jobs/{job_id}">ジョブ {job_id}</A>:すべてのジョブ} は
-<A HREF="/{is_class?classes:printers}/{job_printer_name}">{job_printer_name}</A> に移動しました。</P>
-
-</DIV>
diff --git a/templates/ja/job-release.tmpl b/templates/ja/job-release.tmpl
deleted file mode 100644 (file)
index fd9f89d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">ジョブ {job_id} の解放</H2>
-
-<P><A HREF="{job_printer_uri}">ジョブ {job_id}</A> は印刷から解放されました。
-
-</DIV>
diff --git a/templates/ja/job-restart.tmpl b/templates/ja/job-restart.tmpl
deleted file mode 100644 (file)
index 493a4ac..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">ジョブ {job_id} の再印刷</H2>
-
-<P><A HREF="{job_printer_uri}">ジョブ {job_id}</A> は再印刷されました。
-
-</DIV>
diff --git a/templates/ja/jobs-header.tmpl b/templates/ja/jobs-header.tmpl
deleted file mode 100644 (file)
index 76095b4..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="アクティブなジョブを表示"></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="完了したジョブを表示"></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="すべてのジョブを表示"></FORM>}</DIV>
-
-<P ALIGN="CENTER">{total=0?ジョブはありません:{total} 個の{?which_jobs=?アクティブな:{which_jobs=all?:完了した}}ジョブのうち {#job_id} 個を表示中}。</P>
diff --git a/templates/ja/jobs.tmpl b/templates/ja/jobs.tmpl
deleted file mode 100644 (file)
index 220c950..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-{#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>
-</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=?未知:{job_name}}&nbsp;</TD>
-<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>
-<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="ジョブの再印刷"></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="ジョブを解放"></FORM>:}
-{job_state=3?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-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="ジョブを保留"></FORM>:}
-{job_state<7?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-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="ジョブをキャンセル"></FORM>
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="move-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="SUBMIT" VALUE="ジョブを移動"></FORM>:}
-&nbsp;</TD>
-</TR>
-}
-</TBODY>
-</TABLE>
-}
diff --git a/templates/ja/list-available-printers.tmpl b/templates/ja/list-available-printers.tmpl
deleted file mode 100644 (file)
index f70b5aa..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">利用可能なプリンター</H2>
-
-{#device_uri=0?<P>プリンターが見つかりません。</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="このプリンターを追加"></FORM>
-{device_make_and_model} ({device_info})</LI>
-}</UL>}
-
-</DIV>
diff --git a/templates/ja/modify-class.tmpl b/templates/ja/modify-class.tmpl
deleted file mode 100644 (file)
index a41010f..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">クラス {printer_name} の変更</H2>
-
-<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}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">説明:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">場所:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">メンバー:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="クラスの変更"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/ja/modify-printer.tmpl b/templates/ja/modify-printer.tmpl
deleted file mode 100644 (file)
index 009af6d..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{printer_name} の変更</H2>
-
-<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="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="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">説明:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>("HP LaserJet with Duplexer" のように人が読みやすい説明)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">場所:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>("Lab 1" のように人が読みやすい場所)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">接続:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">共有:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-このプリンターを共有する</TD>
-</TR>
-<TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="続ける"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ja/norestart.tmpl b/templates/ja/norestart.tmpl
deleted file mode 100644 (file)
index 4740433..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">設定変更</H2>
-
-<P>設定に何も変更が行われなかったため、サーバーは再起動されませんでした...</P>
-
-</DIV>
diff --git a/templates/ja/option-boolean.tmpl b/templates/ja/option-boolean.tmpl
deleted file mode 100644 (file)
index e832ee1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD>
-{[choices]<INPUT TYPE="RADIO" NAME="{keyword-1}" {choices={defchoice-1}?CHECKED:} VALUE="{choices}">{text}}
-</TD>
-</TR>
diff --git a/templates/ja/option-conflict.tmpl b/templates/ja/option-conflict.tmpl
deleted file mode 100644 (file)
index 4f782ac..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<P><B>エラー:</B> 以下のオプションは競合します:</P>
-
-<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
-}</UL>
-
-<P>競合を解決するために、1 つ以上のオプションを変更してください。</P>
diff --git a/templates/ja/option-header.tmpl b/templates/ja/option-header.tmpl
deleted file mode 100644 (file)
index 464726a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="tab" ID="{group_id}">
-
-<H3 ALIGN="CENTER">{group}</H3>
-
-<TABLE WIDTH="100%">
diff --git a/templates/ja/option-pickmany.tmpl b/templates/ja/option-pickmany.tmpl
deleted file mode 100644 (file)
index 0da75e5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT></TD>
-</TR>
diff --git a/templates/ja/option-pickone.tmpl b/templates/ja/option-pickone.tmpl
deleted file mode 100644 (file)
index 514e2ab..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" ID="select-{keyword}" ONCHANGE="update_paramtable('{keyword}')">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT>
-{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
-<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
-<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>ポイント</OPTION>
-<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>ミリメートル</OPTION>
-<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>センチメートル</OPTION>
-<OPTION VALUE="in"{paramvalue=in? SELECTED:}>インチ</OPTION>
-<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>フィート</OPTION>
-<OPTION VALUE="m"{paramvalue=m? SELECTED:}>メートル</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
-}</TABLE>
-</TD>:}
-</TR>
diff --git a/templates/ja/option-trailer.tmpl b/templates/ja/option-trailer.tmpl
deleted file mode 100644 (file)
index da2db1e..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-</TABLE>
-
-<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="デフォルトオプションの設定"></P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/ja/pager.tmpl b/templates/ja/pager.tmpl
deleted file mode 100644 (file)
index ebba3a0..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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>
-</TR>
-</TABLE>
diff --git a/templates/ja/printer-accept.tmpl b/templates/ja/printer-accept.tmpl
deleted file mode 100644 (file)
index f13c662..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{is_class?クラス:プリンター} {printer_name} のジョブの受け付け</H2>
-
-<P>{is_class?クラス:プリンター} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-はジョブを受け付けるようになりました。</P>
-
-</DIV>
diff --git a/templates/ja/printer-added.tmpl b/templates/ja/printer-added.tmpl
deleted file mode 100644 (file)
index c07a832..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">プリンターの追加</H2>
-
-<P>プリンター <A HREF="/printers/{printer_name}">{printer_name}</A> は正しく追加されました。
-</DIV>
diff --git a/templates/ja/printer-configured.tmpl b/templates/ja/printer-configured.tmpl
deleted file mode 100644 (file)
index 1045943..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{printer_name} のデフォルトオプションの設定</H2>
-
-<P>{OP=set-class-options?クラス <A HREF="/classes/{printer_name}">:プリンター <A HREF="/printers/{printer_name}">}{printer_name}</A>
-のデフォルトオプションは正しく設定されました。
-
-</DIV>
diff --git a/templates/ja/printer-confirm.tmpl b/templates/ja/printer-confirm.tmpl
deleted file mode 100644 (file)
index 6fdb52c..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">プリンター {printer_name} の削除</H2>
-
-<P><B>警告:</B> 本当にプリンター {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="プリンターの削除"></FORM></P>
-
-</DIV>
diff --git a/templates/ja/printer-default.tmpl b/templates/ja/printer-default.tmpl
deleted file mode 100644 (file)
index fccfc0d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{is_class?クラス:プリンター} {printer_name} をデフォルトに設定</H2>
-
-<P>{is_class?クラス:プリンター} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-をサーバーのデフォルトプリンターに設定しました。</P>
-
-<BLOCKQUOTE><B>注意:</B> <TT>lpoptions</TT> コマンドで設定されたユーザーのデフォルトは、
-このサーバーのデフォルト設定を上書きします。</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/ja/printer-deleted.tmpl b/templates/ja/printer-deleted.tmpl
deleted file mode 100644 (file)
index 2f2759b..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">プリンター {printer_name} の削除</H2>
-
-<P>プリンター {printer_name} は正しく削除されました。
-
-</DIV>
diff --git a/templates/ja/printer-jobs-header.tmpl b/templates/ja/printer-jobs-header.tmpl
deleted file mode 100644 (file)
index 1d5d887..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">ジョブ</H3>
-</DIV>
diff --git a/templates/ja/printer-modified.tmpl b/templates/ja/printer-modified.tmpl
deleted file mode 100644 (file)
index a22e7da..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">プリンター {printer_name} の変更</H2>
-
-<P>プリンター <A HREF="/printers/{printer_name}">{printer_name}</A>
-は正しく変更されました。
-
-</DIV>
\ No newline at end of file
diff --git a/templates/ja/printer-purge.tmpl b/templates/ja/printer-purge.tmpl
deleted file mode 100644 (file)
index 4ba6cbc..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{is_class?クラス:プリンター} {printer_name} のジョブの全削除</H2>
-
-<P>{is_class?クラス:プリンター} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-からすべてのジョブを削除しました。</P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/ja/printer-reject.tmpl b/templates/ja/printer-reject.tmpl
deleted file mode 100644 (file)
index ba7cc52..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{is_class?クラス:プリンター} {printer_name} のジョブの拒否</H2>
-
-<P>{is_class?クラス:プリンター} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-はジョブを受け付けなくなりました。</P>
-
-</DIV>
diff --git a/templates/ja/printer-start.tmpl b/templates/ja/printer-start.tmpl
deleted file mode 100644 (file)
index 138829d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{is_class?クラス:プリンター} {printer_name} の再開</H2>
-
-<P>{is_class?クラス:プリンター} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-は再開しました。</P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/ja/printer-stop.tmpl b/templates/ja/printer-stop.tmpl
deleted file mode 100644 (file)
index cc74c1b..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{is_class?クラス:プリンター} {printer_name} の停止</H2>
-
-<P>{is_class?クラス:プリンター} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-は停止しました。</P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/ja/printer.tmpl b/templates/ja/printer.tmpl
deleted file mode 100644 (file)
index 8d76550..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?待機中:{printer_state=4?処理中:一時停止中}},
-{printer_is_accepting_jobs=0?ジョブを拒否中:ジョブを受け付け中},
-{server_is_sharing_printers=0?非:{printer_is_shared=0?非:}} 共有{default_name={printer_name}?, サーバーのデフォルト:})</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="">メンテナンス</OPTION>
-<OPTION VALUE="print-test-page">テストページの印刷</OPTION>
-{printer_commands~.*Clean.*?<OPTION VALUE="clean-print-heads">プリンターヘッドのクリーニング</OPTION>:}
-{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">自己テストページの印刷</OPTION>:}
-{printer_state=5?<OPTION VALUE="start-printer">プリンターを開始</OPTION>:<OPTION VALUE="stop-printer">プリンターの停止</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">ジョブを受け付け</OPTION>:<OPTION VALUE="reject-jobs">ジョブを拒否</OPTION>}
-<OPTION VALUE="move-jobs">すべてのジョブの移動</OPTION>
-<OPTION VALUE="purge-jobs">すべてのジョブをキャンセル</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="進む"></NOSCRIPT>
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<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="">管理</OPTION>
-<OPTION VALUE="modify-printer">プリンターの変更</OPTION>
-<OPTION VALUE="delete-printer">プリンターの削除</OPTION>
-<OPTION VALUE="set-printer-options">デフォルトオプションの設定</OPTION>
-<OPTION VALUE="set-as-default">サーバーのデフォルトの設定</OPTION>
-<OPTION VALUE="set-allowed-users">許可するユーザーの設定</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="進む"></NOSCRIPT>
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">説明:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">場所:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">プリンタードライバー:</TH><TD>{printer_make_and_model} ({color_supported=1?カラー:白黒}{sides_supported?, 両面可:})<BR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">接続:</TH><TD>{device_uri}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">デフォルト設定:</TH><TD>バナー={job_sheets_default}
-用紙サイズ={media_default?{media_default}:unknown}
-{sides_default?両面指定={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/ja/printers-header.tmpl b/templates/ja/printers-header.tmpl
deleted file mode 100644 (file)
index 1342eff..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?プリンターはありません:{total} 台のプリンターのうち {#printer_name} 台を表示中}。</P>
diff --git a/templates/ja/printers.tmpl b/templates/ja/printers.tmpl
deleted file mode 100644 (file)
index a8caaff..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{#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>
-</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?待機中:{printer_state=4?処理中:停止}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/ja/restart.tmpl b/templates/ja/restart.tmpl
deleted file mode 100644 (file)
index d8504ef..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">設定の変更</H2>
-
-<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> サーバーが再起動する間しばらくお待ちください...</P>
-
-</DIV>
diff --git a/templates/ja/samba-export.tmpl b/templates/ja/samba-export.tmpl
deleted file mode 100644 (file)
index b1d5050..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<SCRIPT TYPE="text/javascript"><!--
-function select_printers() {
-  var list = document.export_samba.EXPORT_NAME;
-  var sel = document.export_samba.EXPORT_ALL.checked;
-
-  for (i = 0; i < list.length; i ++) {
-    list.options[i].selected = sel;
-  }
-}
---></SCRIPT>
-
-<FORM METHOD="POST" ACTION="/admin/" NAME="export_samba">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
-
-<H2 CLASS="title">プリンターを Samba にエクスポート</H2>
-
-{error?<P>プリンターを Samba にエクスポートできません\:</P>
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-<P>より詳細な情報については <A HREF="/admin/log/error_log"
-TARGET="_blank">error_log</A> ファイルを参照してください。</P>:
-<P>このページは、Windows クライアントがデスクトップ上の
-<VAR>マイネットワーク</VAR> や <VAR>ネットワークの場所</VAR>
-アイコン経由でアクセスできるよう、プリンターの Samba
-へのエクスポートを許可します。<A
-HREF="/help/man-cupsaddsmb.html"
-TARGET="_blank">cupsaddsmb(8)</A> man ページに書かれているように、
-事前に Windows PostScript ドライバーをインストールしておく必要があります。</P>}
-
-<TABLE>
-<TR>
-<TH CLASS="label">プリンター:</TH>
-<TD>
-<SELECT NAME="EXPORT_NAME" SIZE="10" MULTIPLE>
-{[printer_name]<OPTION VALUE="{printer_name}"{export_all? SELECTED:{printer_export? SELECTED:}}>{printer_name}}
-</SELECT><BR>
-<INPUT TYPE="CHECKBOX" NAME="EXPORT_ALL"{export_all? CHECKED:}
-onChange="select_printers()"> すべてのプリンターをエクスポート
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Samba のユーザー名:</TH>
-<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (必須)</TD>
-</TR>
-<TR>
-<TH CLASS="label">Samba のパスワード:</TH>
-<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (必須)</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="プリンターを Samba にエクスポート"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/ja/samba-exported.tmpl b/templates/ja/samba-exported.tmpl
deleted file mode 100644 (file)
index f67ddd9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P>プリンターは Samba に正しくエクスポートされました。</P>
diff --git a/templates/ja/search.tmpl b/templates/ja/search.tmpl
deleted file mode 100644 (file)
index 3e81995..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
-{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
-{ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
-
-<P ALIGN="CENTER"><B>
-{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?クラス:{SECTION=jobs?ジョブ:プリンター}}} 内を検索:</B>
-<INPUT TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40"  PLACEHOLDER="" AUTOSAVE="org.cups.{SECTION}" RESULTS="20"> <INPUT
-TYPE="SUBMIT" VALUE="検索"> <INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="クリア"></P>
-
-</FORM>
diff --git a/templates/ja/set-printer-options-header.tmpl b/templates/ja/set-printer-options-header.tmpl
deleted file mode 100644 (file)
index cd8df91..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{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="プリンターにデフォルトオプションを問い合わせる">:}
-
-<SCRIPT TYPE="text/javascript"><!--
-function update_paramtable(option)
-{
-  var cb = document.getElementById("select-" + option)
-  var paramstable = document.getElementById(option + "-params");
-  if (cb.value == "Custom")
-    paramstable.style.display = "table";
-  else
-    paramstable.style.display = "none";
-}
---></SCRIPT>
-
-<H3 CLASS="title">{[group_id]
-<A HREF="#{group_id}">{group}</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</H3>
-
-<DIV CLASS="tabs">
diff --git a/templates/ja/set-printer-options-trailer.tmpl b/templates/ja/set-printer-options-trailer.tmpl
deleted file mode 100644 (file)
index 11adc70..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-</DIV>
-
-<SCRIPT TYPE="text/javascript"><!--
-// Hide custom options parameters for browsers that understand Javascript
-var paramtables = document.getElementsByName("paramtable");
-for (var i = 0; i < paramtables.length; i++)
-{
-  var opt = paramtables[i].id.substr(0, paramtables[i].id.lastIndexOf("-"));
-  var cb = document.getElementById("select-" + opt);
-  if (cb.value != "Custom")
-    paramtables[i].style.display = "none";
-}
---></SCRIPT>
-</FORM>
-
-</DIV>
diff --git a/templates/ja/subscription-added.tmpl b/templates/ja/subscription-added.tmpl
deleted file mode 100644 (file)
index e4ab98c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>{subscription_name} の購読は正しく追加されました。</P>
-
-</DIV>
diff --git a/templates/ja/subscription-canceled.tmpl b/templates/ja/subscription-canceled.tmpl
deleted file mode 100644 (file)
index 8787dad..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>購読 #{notify_subscription_id} はキャンセルされました。</P>
-
-</DIV>
diff --git a/templates/ja/test-page.tmpl b/templates/ja/test-page.tmpl
deleted file mode 100644 (file)
index 6cdaa87..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{printer_name} のテストページ印刷</H2>
-
-<P>テストページを送信しました; ジョブ ID は <A HREF="/{SECTION}/{printer_name}">
-{printer_name}-{job_id}</A> です。</P>
-
-</DIV>
diff --git a/templates/ja/trailer.tmpl b/templates/ja/trailer.tmpl
deleted file mode 100644 (file)
index 2e99eb7..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-</DIV></TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS and the CUPS logo are trademarks of
-<A HREF="http://www.apple.com">Apple Inc.</A> CUPS is copyright 2007-2014 Apple
-Inc. All rights reserved.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/templates/ja/users.tmpl b/templates/ja/users.tmpl
deleted file mode 100644 (file)
index b998c6b..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<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">{printer_name} に許可するユーザー</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">ユーザー:</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:}>これらのユーザーの印刷を許可
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>これらのユーザーの印刷を禁止
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>
-<INPUT TYPE="SUBMIT" VALUE="許可するユーザーの設定">
-</TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
index 3e8fd4dadf95fcb55efe00d030f1469e0ece6386..0b0106ee94cffa41248e09267264994499938ff1 100644 (file)
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Cancel Job {job_id}</H2>
 
 <P><A HREF="{job_printer_uri}">Job {job_id}</A> has been canceled.
-
-</DIV>
index 58ce97fc91df1121ae1759d2040c819ba6742a36..3b5cd6a65d83396b190334b07d371c2570c923a6 100644 (file)
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Hold Job {job_id}</H2>
 
 <P><A HREF="{job_printer_uri}">Job {job_id}</A> has been held from printing.
-
-</DIV>
index 6ef0ff12e1ed31a1e148c1536b18dffeabb34bf9..c2f70469c0999d324a034ec69ba7b16f5927a4dc 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 c4db0969680e49cf7e0eacf2354157cc0590b074..4893e24acaa7090844670dc8a1e3133ae4efd53a 100644 (file)
@@ -1,8 +1,4 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">{job_id?Move Job {job_id}:Move All Jobs}</H2>
 
 <P>{job_id?<A HREF="/jobs/{job_id}">Job {job_id}</A>:All jobs} moved to
 <A HREF="/{is_class?classes:printers}/{job_printer_name}">{job_printer_name}</A>.</P>
-
-</DIV>
index 8eb9a9667560592bd6024cfb15266b8ff097ec05..fe9379303c49da9e4c980bb22100aa5b6afc7ef7 100644 (file)
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Release Job {job_id}</H2>
 
 <P><A HREF="{job_printer_uri}">Job {job_id}</A> has been released for printing.
-
-</DIV>
index b91ced92635825d3acc155243a90b42ed98d470a..b5dfd958e86c67d92c65edeed0c864f4472cd319 100644 (file)
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Reprint Job {job_id}</H2>
 
 <P><A HREF="{job_printer_uri}">Job {job_id}</A> has been restarted.
-
-</DIV>
index e7547ba7bba4f45e40049e103690078e83f60290..a8a365b2db4f55fc2d734058151a621c73a89ff9 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="Show Active Jobs"></FORM>}
+{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Show Active Jobs"></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="Show Completed Jobs"></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="Show All Jobs"></FORM>}</DIV>
+{?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="Show All Jobs"></FORM>}
 
 <P ALIGN="CENTER">{total=0?No jobs:Showing {#job_id} of {total} {?which_jobs=?active:{which_jobs=all?:completed}} job{total=1?:s}}.</P>
index a594439ee3b68e3cf4bc02c9830f6aa84e87af7b..9fe7b12dd184da9a549133920d4b0b0b1dfd08f5 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Available Printers</H2>
 
 {#device_uri=0?<P>No printers found.</P>
@@ -7,5 +5,3 @@
 <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="Add This Printer"></FORM>
 {device_make_and_model} ({device_info})</LI>
 }</UL>}
-
-</DIV>
index 31f7b9ce3c9fd02506f0cb911f3e88aba7c18914..1aa4fe63181a0fbba8d2049af0370800691ab1af 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Modify Class {printer_name}</H2>
 
 <FORM METHOD="POST" ACTION="/admin">
@@ -31,4 +29,3 @@
 </TABLE>
 
 </FORM>
-</DIV>
\ No newline at end of file
index bdf3df60421d5dd58f9a46c5c2c4b7c46cb327da..72b4bc5e20f46d489ab51d7f418d20b4dff252f1 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Modify {printer_name}</H2>
 
 <FORM METHOD="POST" ACTION="/admin">
@@ -39,4 +37,3 @@ Share This Printer</TD>
 </TABLE>
 
 </FORM>
-</DIV>
index 6b3120337cd6413103ab0039530f82c086e4cdfb..70bf3d33e880ffcd9e208cb26fb4e64e7fd9c76f 100644 (file)
@@ -1,8 +1,4 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Change Settings</H2>
 
 <P>The server was not restarted because no changes were made to
 the configuration...</P>
-
-</DIV>
index 3e987ce64f2342ba88154338b53e3684393468ba..db5d8dad5849356d0da8d2cf34f611ff5771b787 100644 (file)
@@ -1,9 +1,5 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Accept Jobs On {is_class?Class:Printer} {printer_name}</H2>
 
 <P>{is_class?Class:Printer} <A
 HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
 is now accepting jobs.</P>
-
-</DIV>
index 9a6e798e9aa6d7c49592ebe50c3f2dc4276f7f50..0ccf6d3eed5085ce210a905145e823102ce23373 100644 (file)
@@ -1,8 +1,4 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Add Printer</H2>
 
 <P>Printer <A HREF="/printers/{printer_name}">{printer_name}</A> has been added
 successfully.
-
-</DIV>
diff --git a/templates/printer-cancel-jobs.tmpl b/templates/printer-cancel-jobs.tmpl
new file mode 100644 (file)
index 0000000..4376646
--- /dev/null
@@ -0,0 +1,5 @@
+<H2 CLASS="title">Cancel Jobs On {is_class?Class:Printer} {printer_name}</H2>
+
+<P>All jobs on {is_class?class:printer} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+have been canceled.</P>
index 6f8104e2310cabe7e55bcc094c2dfdb92395a68e..7bce3f908cf7059968573b1f20bc0017ea34be34 100644 (file)
@@ -1,8 +1,4 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Set Default Options for {printer_name}</H2>
 
 <P>{OP=set-class-options?Class <A HREF="/classes/{printer_name}">:Printer <A HREF="/printers/{printer_name}">}{printer_name}</A>
 default options have been set successfully.
-
-</DIV>
index fce9e3494bca56376292bf61073f8d815e300079..c1b2b1706fe343ad8a3c13858936ac724ad96b7d 100644 (file)
@@ -1,10 +1,6 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Delete Printer {printer_name}</H2>
 
 <P><B>Warning:</B> Are you sure you want to delete printer
 {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="Delete Printer"></FORM></P>
-
-</DIV>
index 72a7b5ea8c546d786c26b30171a37381a88b3130..af21dcacd7f127ff812c2b6ef6f312f2fae90d72 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Set {is_class?Class:Printer} {printer_name} As Default</H2>
 
 <P>{is_class?Class:Printer} <A
@@ -9,5 +7,3 @@ has been made the default printer on the server.</P>
 <BLOCKQUOTE><B>Note:</B> Any user default that has been set via
 the <TT>lpoptions</TT> command will override this default
 setting.</BLOCKQUOTE>
-
-</DIV>
index d8a31ae6153489746b7a4efc855227eeb8750f1a..ea462cee4a5eaba2d55f2e07b8ab14e4d7eb22ef 100644 (file)
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Delete Printer {printer_name}</H2>
 
 <P>Printer {printer_name} has been deleted successfully.
-
-</DIV>
index ba46f10260905e1c3a03c17659b20620a18017c4..61e5151d24b1c2a7bed7c76d294c99d9928cf0c8 100644 (file)
@@ -1,3 +1 @@
-<DIV CLASS="indent">
 <H3 CLASS="title">Jobs</H3>
-</DIV>
index b61e8e34a2b79e2859348e0fb15578897faf7a46..1193a48d8741526168f03333b75320d49978dad1 100644 (file)
@@ -1,8 +1,4 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Modify Printer {printer_name}</H2>
 
 <P>Printer <A HREF="/printers/{printer_name}">{printer_name}</A> has been
 modified successfully.
-
-</DIV>
\ No newline at end of file
diff --git a/templates/printer-purge.tmpl b/templates/printer-purge.tmpl
deleted file mode 100644 (file)
index 8cf7c14..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Purge Jobs On {is_class?Class:Printer} {printer_name}</H2>
-
-<P>{is_class?Class:Printer} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-has been purged of all jobs.</P>
-
-</DIV>
\ No newline at end of file
index 5f1c79195b4f61e5fb51ebff44cc3fbf4bf2a556..823c7e5070363bd2a8630faf63348501d6a7bacb 100644 (file)
@@ -1,9 +1,5 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Reject Jobs On {is_class?Class:Printer} {printer_name}</H2>
 
 <P>{is_class?Class:Printer} <A
 HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
 is no longer accepting jobs.</P>
-
-</DIV>
index 3eaed13d17486ae6cd2359fb0eb65d6b0addf08e..76d44ed810efd7c18ad365f124d877c72fd20ded 100644 (file)
@@ -1,9 +1,5 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Resume {is_class?Class:Printer} {printer_name}</H2>
 
 <P>{is_class?Class:Printer} <A
 HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
 has been resumed.</P>
-
-</DIV>
\ No newline at end of file
index b74e87135d968e1c6bb39418c9dc5c368eae9da6..8c264b21ea0a617ebecff89995449762bfc9f27f 100644 (file)
@@ -1,9 +1,5 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Pause {is_class?Class:Printer} {printer_name}</H2>
 
 <P>{is_class?Class:Printer} <A
 HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
 has been paused.</P>
-
-</DIV>
\ No newline at end of file
index 6e814b03de6efbbdfa5608f422480fbf19077bad..ee8d7746057acc2d5af5e2544b1e0f31550e8fb4 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
 ({printer_state=3?Idle:{printer_state=4?Processing:Paused}},
 {printer_is_accepting_jobs=0?Rejecting Jobs:Accepting Jobs},
@@ -15,7 +13,7 @@
 {printer_state=5?<OPTION VALUE="start-printer">Resume Printer</OPTION>:<OPTION VALUE="stop-printer">Pause Printer</OPTION>}
 {printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Accept Jobs</OPTION>:<OPTION VALUE="reject-jobs">Reject Jobs</OPTION>}
 <OPTION VALUE="move-jobs">Move All Jobs</OPTION>
-<OPTION VALUE="purge-jobs">Cancel All Jobs</OPTION>
+<OPTION VALUE="cancel-jobs">Cancel All Jobs</OPTION>
 </SELECT>
 <NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
 </FORM>
@@ -43,5 +41,3 @@
 media={media_default?{media_default}:unknown}
 {sides_default?sides={sides_default}:}</TD></TR>
 </TABLE>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/pt_BR/add-class.tmpl b/templates/pt_BR/add-class.tmpl
deleted file mode 100644 (file)
index 4e777b0..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Adicionar classe</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-
-<TABLE>
-<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>
-</TR>
-<TR>
-<TH CLASS="label">Descri&ccedil;&atilde;o:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Descri&ccedil;&atilde;o leg&iacute;vel para humanos, tal como "HP LaserJet com Duplexador")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Localiza&ccedil;&atilde;o:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Localiza&ccedil;&atilde;o leg&iacute;vel para humanos, tal como "Laborat&oacute;rio 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Membros:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Adicionar Classe"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/pt_BR/add-printer.tmpl b/templates/pt_BR/add-printer.tmpl
deleted file mode 100644 (file)
index acd10ba..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Adicionar impressora</H2>
-
-<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="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
-{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
-
-<TABLE>
-<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>
-</TR>
-<TR>
-<TH CLASS="label">Descriçã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>
-</TR>
-<TR>
-<TH CLASS="label">Localizaçã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>
-</TR>
-<TR>
-<TH CLASS="label">Conexã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>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continue"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/pt_BR/add-rss-subscription.tmpl b/templates/pt_BR/add-rss-subscription.tmpl
deleted file mode 100644 (file)
index ee86b24..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<FORM METHOD="POST" ACTION="/admin">
-<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>
-
-<TABLE SUMMARY="Formulário para adicionar inscriçã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>
-</TR>
-<TR>
-<TH CLASS="label">Fila:</TH>
-<TD COLSPAN="5"><SELECT NAME="PRINTER_URI" SIZE="10"><OPTION VALUE="#ALL#"{?PRINTER_URI=#ALL#? SELECTED:}>All Queues</OPTION>{[printer_name]<OPTION VALUE="{printer_uri_supported}"{?PRINTER_URI={printer_uri_supported}? SELECTED:}>{printer_name}</OPTION>}</SELECT></TD>
-</TR>
-<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_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>
-<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>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_MODIFIED" {?EVENT_PRINTER_MODIFIED}>Fila modificada<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_DELETED" {?EVENT_PRINTER_DELETED}>Fila apagada</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<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>
-</TR>
-<TR>
-<TH CLASS="label">Má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>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/pt_BR/admin.tmpl b/templates/pt_BR/admin.tmpl
deleted file mode 100644 (file)
index 5427f48..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-<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>:}
diff --git a/templates/pt_BR/choose-device.tmpl b/templates/pt_BR/choose-device.tmpl
deleted file mode 100644 (file)
index 78c8727..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:Adicionar impressora}</H2>
-
-{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">Conexão atual\:</TH>
-<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
-{current_device_uri}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Impressoras locais\:</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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}}
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Impressoras de rede descobertas\:</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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}:}}
-</TD>
-</TR>
-<TR>
-<TR>
-<TH CLASS="label">Outras impressoras de rede\:</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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-}:}}
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continar"></TD>
-</TR>
-</TABLE>
-
-</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Ocupado"> Procurando impressoras...</P>}
-
-</DIV>
diff --git a/templates/pt_BR/choose-make.tmpl b/templates/pt_BR/choose-make.tmpl
deleted file mode 100644 (file)
index abef30d..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:Adicionar impressora}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<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}">:}
-<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}">
-
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Nome:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Descrição:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Localização:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Conexã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>
-</TR>
-<TR>
-<TH CLASS="label">Fabricante:</TH>
-<TD>
-<SELECT NAME="PPD_MAKE" SIZE="10">
-{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continar"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>&nbsp;</TD>
-</TR>
-<TR>
-<TH CLASS="label">Ou forneça um arquivo PPD:</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?Adicionar impressora:Modificar impressora}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/pt_BR/choose-model.tmpl b/templates/pt_BR/choose-model.tmpl
deleted file mode 100644 (file)
index 12bd92e..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:Adicionar impressora}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<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}">:}
-<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}">
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Nome:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Descrição:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Localização:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Conexã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>
-</TR>
-<TR>
-<TH CLASS="label">Fabricante:</TH>
-<TD>{PPD_MAKE} <INPUT TYPE="SUBMIT" NAME="SELECT_MAKE" VALUE="Selecione outro fabricante"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Modelo:</TH>
-<TD>
-<SELECT NAME="PPD_NAME" SIZE="10">
-{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Driver atual - {current_make_and_model}</OPTION>:}
-{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
-}</SELECT>
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Ou forneça um arquivo PPD:</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?Adicionar impressora:Modificar impressora}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/pt_BR/choose-serial.tmpl b/templates/pt_BR/choose-serial.tmpl
deleted file mode 100644 (file)
index 517d4e7..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<DIV CLASS="indent">
-
-<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}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Conexão:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Taxa de dados (Baud Rate):</TH>
-<TD><SELECT NAME="BAUDRATE">
-{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Paridade:</TH>
-<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
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Bits de Dados:</TH>
-<TD><SELECT NAME="BITS">
-<OPTION {?bits=8?SELECTED:}>8
-<OPTION {?bits=7?SELECTED:}>7
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Controle de Fluxo:</TH>
-<TD><SELECT NAME="FLOW">
-<OPTION VALUE="none" {?flow=none?SELECTED:}>Nenhum
-<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)
-</SELECT></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continar"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/pt_BR/choose-uri.tmpl b/templates/pt_BR/choose-uri.tmpl
deleted file mode 100644 (file)
index 1fe6a4e..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modify {printer_name}:Add Printer}</H2>
-
-<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}">:}
-<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Conexã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>
-<TD></TD>
-<TD>Exemplos:
-<PRE>
-    http://hostname:631/ipp/
-    http://hostname:631/ipp/port1
-
-    ipp://hostname/ipp/
-    ipp://hostname/ipp/port1
-
-    lpd://hostname/queue
-
-    socket://hostname
-    socket://hostname:9100
-</PRE>
-
-<P>Veja <A HREF="/help/network.html" TARGET="_blank">"Network
-Printers"</A> para a URI correta a ser usada para sua impressora.</P>
-
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continuar"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/pt_BR/class-added.tmpl b/templates/pt_BR/class-added.tmpl
deleted file mode 100644 (file)
index e556d06..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Adicionar classe</H2>
-
-<P>Classe <A HREF="/classes/{printer_name}">{printer_name}</A> foi adicionada com sucesso.
-
-</DIV>
diff --git a/templates/pt_BR/class-confirm.tmpl b/templates/pt_BR/class-confirm.tmpl
deleted file mode 100644 (file)
index 454d18d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<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 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>
diff --git a/templates/pt_BR/class-deleted.tmpl b/templates/pt_BR/class-deleted.tmpl
deleted file mode 100644 (file)
index eea279f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<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
diff --git a/templates/pt_BR/class-jobs-header.tmpl b/templates/pt_BR/class-jobs-header.tmpl
deleted file mode 100644 (file)
index 05488e2..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Trabalhos</H3>
-</DIV>
diff --git a/templates/pt_BR/class-modified.tmpl b/templates/pt_BR/class-modified.tmpl
deleted file mode 100644 (file)
index 2c64e6c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<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
diff --git a/templates/pt_BR/class.tmpl b/templates/pt_BR/class.tmpl
deleted file mode 100644 (file)
index 2b23833..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<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>
-
-<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_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="purge-jobs">Cancelar todos trabalhos</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Ir" STYLE="display: none;">
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<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="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>
-</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">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}
-media={media_default?{media_default}:desconhecido}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
diff --git a/templates/pt_BR/classes-header.tmpl b/templates/pt_BR/classes-header.tmpl
deleted file mode 100644 (file)
index acac395..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Nenhuma classe:Mostrando {#printer_name} de {total} classe{total=1?:s}}.</P>
diff --git a/templates/pt_BR/classes.tmpl b/templates/pt_BR/classes.tmpl
deleted file mode 100644 (file)
index 18717dc..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{#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>
-</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>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/pt_BR/command.tmpl b/templates/pt_BR/command.tmpl
deleted file mode 100644 (file)
index 7800ac7..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<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=7?cancelado:{job_state=8?abortado:completo}}}}}}{job_state=9?:{job_printer_state_message?,
-<EM>"{job_printer_state_message}"</EM>:}}</P>
-
-</DIV>
diff --git a/templates/pt_BR/edit-config.tmpl b/templates/pt_BR/edit-config.tmpl
deleted file mode 100644 (file)
index 026a9e5..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<SCRIPT TYPE="text/javascript">
-function reset_config()
-{
-  document.cups.CUPSDCONF.value = "{?cupsdconf_default}";
-}
-</SCRIPT>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Editar arquivo de configuração</H2>
-
-<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-
-<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"
-onClick="reset_config();"></P>
-
-</FORM>
-
-</DIV>
diff --git a/templates/pt_BR/error-op.tmpl b/templates/pt_BR/error-op.tmpl
deleted file mode 100644 (file)
index d694519..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Erro {?title} {?printer_name}</H2>
-
-<P>Erro:</P>
-
-<BLOCKQUOTE>Operação desconhecida "{op}"!</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/pt_BR/error.tmpl b/templates/pt_BR/error.tmpl
deleted file mode 100644 (file)
index 1bfcc8f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Erro {?title} {?printer_name}</H2>
-
-<P>{?message?{message}:Erro}:</P>
-
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/pt_BR/header.tmpl.in b/templates/pt_BR/header.tmpl.in
deleted file mode 100644 (file)
index f2bafb3..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<!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">
-
diff --git a/templates/pt_BR/help-header.tmpl b/templates/pt_BR/help-header.tmpl
deleted file mode 100644 (file)
index 080b842..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-<DIV CLASS="indent">
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
-{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
-
-<P ALIGN="CENTER"><B>Pesquisar em 
-{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:todos os documentos}}:</B> <INPUT
-TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER=""
-AUTOSAVE="org.cups.help" RESULTS="20">
-<INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="Pesquisar">
-<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Limpar"></P>
-
-</FORM>
-
-<!-- Bookmarks -->
-<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Conteúdo">
-<TR><TD>
-
-<H3 CLASS="title">Documentos de ajuda online</H3>
-
-<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Todos os Documentos</A></P>
-<HR>
-
-{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
-}
-</TD></TR>
-</TABLE></DIV>
-
-{QUERY?<P>Pesquisar resultados em {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:Todos os documentos}}\:</P>
-{QTEXT?<UL>
-{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (em <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
-{QTEXT?</UL>:}
-:<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>:
-
-<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>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>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>}
diff --git a/templates/pt_BR/job-cancel.tmpl b/templates/pt_BR/job-cancel.tmpl
deleted file mode 100644 (file)
index c93b431..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Cancelar trabalho {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Trabalho {job_id}</A> foi cancelado.
-
-</DIV>
diff --git a/templates/pt_BR/job-hold.tmpl b/templates/pt_BR/job-hold.tmpl
deleted file mode 100644 (file)
index 37aa625..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<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>
diff --git a/templates/pt_BR/job-move.tmpl b/templates/pt_BR/job-move.tmpl
deleted file mode 100644 (file)
index 74b3a8b..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<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}">
-{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
-
-<H2 CLASS="title">{job_id?Mover trabalho {job_id}:Mover todos trabalhos}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Novo destino:</TH>
-<TD>
-<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
-{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{job_id?Mover trabalho:Mover trabalhos}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-
-</DIV>
diff --git a/templates/pt_BR/job-moved.tmpl b/templates/pt_BR/job-moved.tmpl
deleted file mode 100644 (file)
index 66f7096..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<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>
diff --git a/templates/pt_BR/job-release.tmpl b/templates/pt_BR/job-release.tmpl
deleted file mode 100644 (file)
index f44ab36..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<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>
diff --git a/templates/pt_BR/job-restart.tmpl b/templates/pt_BR/job-restart.tmpl
deleted file mode 100644 (file)
index cf08075..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Reimprimir trabalho {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Trabalho {job_id}</A> foi reiniciado.
-
-</DIV>
diff --git a/templates/pt_BR/jobs-header.tmpl b/templates/pt_BR/jobs-header.tmpl
deleted file mode 100644 (file)
index c37736f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<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>
-
-<P ALIGN="CENTER">{total=0?Nenhum trabalho:Mostrando {#job_id} de {total} trabalho{total=1?:s}} {?which_jobs=?ativos:{which_jobs=all?:completos}} .</P>
diff --git a/templates/pt_BR/jobs.tmpl b/templates/pt_BR/jobs.tmpl
deleted file mode 100644 (file)
index 3ad2108..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-{#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>
-</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_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>
-<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 trabalho"></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 trabalho"></FORM>:}
-{job_state=3?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-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="Reter trabalho"></FORM>:}
-{job_state<7?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-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="Cancelar trabalho"></FORM>
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="move-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="SUBMIT" VALUE="Mover trabalho"></FORM>:}
-&nbsp;</TD>
-</TR>
-}
-</TBODY>
-</TABLE>
-}
diff --git a/templates/pt_BR/list-available-printers.tmpl b/templates/pt_BR/list-available-printers.tmpl
deleted file mode 100644 (file)
index bdfe903..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Impressoras disponí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>
diff --git a/templates/pt_BR/modify-class.tmpl b/templates/pt_BR/modify-class.tmpl
deleted file mode 100644 (file)
index 606dcfe..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modificar classe {printer_name}</H2>
-
-<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}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Descriçã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>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Membros:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Modificar classe"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/pt_BR/modify-printer.tmpl b/templates/pt_BR/modify-printer.tmpl
deleted file mode 100644 (file)
index a43313a..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modificar {printer_name}</H2>
-
-<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="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="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Descriçã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>
-</TR>
-<TR>
-<TH CLASS="label">Localizaçã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>
-</TR>
-<TR>
-<TH CLASS="label">Conexã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 esta impressora</TD>
-</TR>
-<TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continar"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/pt_BR/norestart.tmpl b/templates/pt_BR/norestart.tmpl
deleted file mode 100644 (file)
index e0708cc..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<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>
diff --git a/templates/pt_BR/option-boolean.tmpl b/templates/pt_BR/option-boolean.tmpl
deleted file mode 100644 (file)
index e832ee1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD>
-{[choices]<INPUT TYPE="RADIO" NAME="{keyword-1}" {choices={defchoice-1}?CHECKED:} VALUE="{choices}">{text}}
-</TD>
-</TR>
diff --git a/templates/pt_BR/option-conflict.tmpl b/templates/pt_BR/option-conflict.tmpl
deleted file mode 100644 (file)
index 2874c2d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<P><B>Erro:</B> As seguintes opções estã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>
diff --git a/templates/pt_BR/option-header.tmpl b/templates/pt_BR/option-header.tmpl
deleted file mode 100644 (file)
index 464726a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="tab" ID="{group_id}">
-
-<H3 ALIGN="CENTER">{group}</H3>
-
-<TABLE WIDTH="100%">
diff --git a/templates/pt_BR/option-pickmany.tmpl b/templates/pt_BR/option-pickmany.tmpl
deleted file mode 100644 (file)
index 0da75e5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT></TD>
-</TR>
diff --git a/templates/pt_BR/option-pickone.tmpl b/templates/pt_BR/option-pickone.tmpl
deleted file mode 100644 (file)
index 758b20a..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" ID="select-{keyword}" ONCHANGE="update_paramtable('{keyword}')">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT>
-{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
-<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="in"{paramvalue=in? SELECTED:}>Polegadas</OPTION>
-<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Pés</OPTION>
-<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Metros</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
-}</TABLE>
-</TD>:}
-</TR>
diff --git a/templates/pt_BR/option-trailer.tmpl b/templates/pt_BR/option-trailer.tmpl
deleted file mode 100644 (file)
index 882c8b9..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-</TABLE>
-
-<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="Definir opções padrão"></P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/pt_BR/pager.tmpl b/templates/pt_BR/pager.tmpl
deleted file mode 100644 (file)
index 6ee823a..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<TABLE CLASS="inset" SUMMARY="Barra de paginaçã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>
-</TR>
-</TABLE>
diff --git a/templates/pt_BR/printer-accept.tmpl b/templates/pt_BR/printer-accept.tmpl
deleted file mode 100644 (file)
index d19a13f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<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>
diff --git a/templates/pt_BR/printer-added.tmpl b/templates/pt_BR/printer-added.tmpl
deleted file mode 100644 (file)
index e021f2c..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<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>
diff --git a/templates/pt_BR/printer-configured.tmpl b/templates/pt_BR/printer-configured.tmpl
deleted file mode 100644 (file)
index 8cd2aa5..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<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>
-foram configuradas com sucesso.
-
-</DIV>
diff --git a/templates/pt_BR/printer-confirm.tmpl b/templates/pt_BR/printer-confirm.tmpl
deleted file mode 100644 (file)
index 08f3a5a..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<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>
-
-</DIV>
diff --git a/templates/pt_BR/printer-default.tmpl b/templates/pt_BR/printer-default.tmpl
deleted file mode 100644 (file)
index 6c5e7de..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Definir a {is_class?classe:impressora} {printer_name} como padrã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>
-
-</DIV>
diff --git a/templates/pt_BR/printer-deleted.tmpl b/templates/pt_BR/printer-deleted.tmpl
deleted file mode 100644 (file)
index 270eb12..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Excluir Impressora {printer_name}</H2>
-
-<P>A impressora {printer_name} foi excluída com sucesso.
-
-</DIV>
diff --git a/templates/pt_BR/printer-jobs-header.tmpl b/templates/pt_BR/printer-jobs-header.tmpl
deleted file mode 100644 (file)
index 05488e2..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Trabalhos</H3>
-</DIV>
diff --git a/templates/pt_BR/printer-modified.tmpl b/templates/pt_BR/printer-modified.tmpl
deleted file mode 100644 (file)
index d0d919a..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<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
diff --git a/templates/pt_BR/printer-purge.tmpl b/templates/pt_BR/printer-purge.tmpl
deleted file mode 100644 (file)
index cb480b4..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Eliminar 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
diff --git a/templates/pt_BR/printer-reject.tmpl b/templates/pt_BR/printer-reject.tmpl
deleted file mode 100644 (file)
index 2bcca7b..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<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>
diff --git a/templates/pt_BR/printer-start.tmpl b/templates/pt_BR/printer-start.tmpl
deleted file mode 100644 (file)
index 3826f84..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<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
diff --git a/templates/pt_BR/printer-stop.tmpl b/templates/pt_BR/printer-stop.tmpl
deleted file mode 100644 (file)
index dfd8dce..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<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
diff --git a/templates/pt_BR/printer.tmpl b/templates/pt_BR/printer.tmpl
deleted file mode 100644 (file)
index b5ceb23..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<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>
-
-<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>:}
-{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>
-<OPTION VALUE="purge-jobs">Cancelar todos trabalhos</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Ir"></NOSCRIPT>
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<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="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>
-</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">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}
-media={media_default?{media_default}:desconhecido}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/pt_BR/printers-header.tmpl b/templates/pt_BR/printers-header.tmpl
deleted file mode 100644 (file)
index c5d0a74..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Nenhuma impressora:Mostrando {#printer_name} de {total} impressora{total=1?:s}}.</P>
diff --git a/templates/pt_BR/printers.tmpl b/templates/pt_BR/printers.tmpl
deleted file mode 100644 (file)
index 97ee462..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{#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>
-</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?Ociosa:{printer_state=4?Processando:Pausada}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/pt_BR/restart.tmpl b/templates/pt_BR/restart.tmpl
deleted file mode 100644 (file)
index 0a90143..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<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>
diff --git a/templates/pt_BR/samba-export.tmpl b/templates/pt_BR/samba-export.tmpl
deleted file mode 100644 (file)
index 15a6b41..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<SCRIPT TYPE="text/javascript"><!--
-function select_printers() {
-  var list = document.export_samba.EXPORT_NAME;
-  var sel = document.export_samba.EXPORT_ALL.checked;
-
-  for (i = 0; i < list.length; i ++) {
-    list.options[i].selected = sel;
-  }
-}
---></SCRIPT>
-
-<FORM METHOD="POST" ACTION="/admin/" NAME="export_samba">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
-
-<H2 CLASS="title">Exportar impressoras para o Samba</H2>
-
-{error?<P>Não foi possí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
-<A HREF="/help/man-cupsaddsmb.html" TARGET="_blank">cupsaddsmb(8)</A>.</P>}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Impressoras:</TH>
-<TD>
-<SELECT NAME="EXPORT_NAME" SIZE="10" MULTIPLE>
-{[printer_name]<OPTION VALUE="{printer_name}"{export_all? SELECTED:{printer_export? SELECTED:}}>{printer_name}}
-</SELECT><BR>
-<INPUT TYPE="CHECKBOX" NAME="EXPORT_ALL"{export_all? CHECKED:}
-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>
-</TR>
-<TR>
-<TH CLASS="label">Senha do Samba:</TH>
-<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (obrigatório)</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Exportar impressoras para o Samba"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/pt_BR/samba-exported.tmpl b/templates/pt_BR/samba-exported.tmpl
deleted file mode 100644 (file)
index c2ec3a5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P>Impressoras exportadas para o samba com sucesso.</P>
diff --git a/templates/pt_BR/search.tmpl b/templates/pt_BR/search.tmpl
deleted file mode 100644 (file)
index 1d6cbba..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
-{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
-{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>
-<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>
-
-</FORM>
diff --git a/templates/pt_BR/set-printer-options-header.tmpl b/templates/pt_BR/set-printer-options-header.tmpl
deleted file mode 100644 (file)
index 4c15c0c..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Definir opções padrão 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">:}
-
-<SCRIPT TYPE="text/javascript"><!--
-function update_paramtable(option)
-{
-  var cb = document.getElementById("select-" + option)
-  var paramstable = document.getElementById(option + "-params");
-  if (cb.value == "Custom")
-    paramstable.style.display = "table";
-  else
-    paramstable.style.display = "none";
-}
---></SCRIPT>
-
-<H3 CLASS="title">{[group_id]
-<A HREF="#{group_id}">{group}</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</H3>
-
-<DIV CLASS="tabs">
diff --git a/templates/pt_BR/set-printer-options-trailer.tmpl b/templates/pt_BR/set-printer-options-trailer.tmpl
deleted file mode 100644 (file)
index 11adc70..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-</DIV>
-
-<SCRIPT TYPE="text/javascript"><!--
-// Hide custom options parameters for browsers that understand Javascript
-var paramtables = document.getElementsByName("paramtable");
-for (var i = 0; i < paramtables.length; i++)
-{
-  var opt = paramtables[i].id.substr(0, paramtables[i].id.lastIndexOf("-"));
-  var cb = document.getElementById("select-" + opt);
-  if (cb.value != "Custom")
-    paramtables[i].style.display = "none";
-}
---></SCRIPT>
-</FORM>
-
-</DIV>
diff --git a/templates/pt_BR/subscription-added.tmpl b/templates/pt_BR/subscription-added.tmpl
deleted file mode 100644 (file)
index 32cf79a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>A inscrição {subscription_name} foi adicionada com sucesso.</P>
-
-</DIV>
diff --git a/templates/pt_BR/subscription-canceled.tmpl b/templates/pt_BR/subscription-canceled.tmpl
deleted file mode 100644 (file)
index 173230b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>A inscrição #{notify_subscription_id} foi cancelada.</P>
-
-</DIV>
diff --git a/templates/pt_BR/test-page.tmpl b/templates/pt_BR/test-page.tmpl
deleted file mode 100644 (file)
index 6d038af..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<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}">
-{printer_name}-{job_id}</A>.</P>
-
-</DIV>
diff --git a/templates/pt_BR/trailer.tmpl b/templates/pt_BR/trailer.tmpl
deleted file mode 100644 (file)
index 167e43f..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-</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>
diff --git a/templates/pt_BR/users.tmpl b/templates/pt_BR/users.tmpl
deleted file mode 100644 (file)
index 76cf19a..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<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>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Usuá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
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>
-<INPUT TYPE="SUBMIT" VALUE="Definir usuários permitidos">
-</TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
index bdfca876fb398c608f5edbc1e93258d2abf655de..6455652f8977adc9509489bbe9494688c077ac88 100644 (file)
@@ -1,8 +1,4 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Change Settings</H2>
 
 <P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
 ALT="Busy Indicator"> Please stand by while the server restarts...</P>
-
-</DIV>
diff --git a/templates/ru/Makefile b/templates/ru/Makefile
deleted file mode 100644 (file)
index bc01165..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-#
-# "$Id: Makefile 4216 2013-03-11 13:57:36Z msweet $"
-#
-#   Template makefile for CUPS.
-#
-#   Copyright 2007-2011 by Apple Inc.
-#   Copyright 1993-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/".
-#
-
-include ../Makedefs
-
-#
-# Template files...
-#
-
-FILES  =       \
-               add-class.tmpl \
-               add-printer.tmpl \
-               add-rss-subscription.tmpl \
-               admin.tmpl \
-               choose-device.tmpl \
-               choose-make.tmpl \
-               choose-model.tmpl \
-               choose-serial.tmpl \
-               choose-uri.tmpl \
-               class.tmpl \
-               class-added.tmpl \
-               class-confirm.tmpl \
-               class-deleted.tmpl \
-               class-jobs-header.tmpl \
-               class-modified.tmpl \
-               classes.tmpl \
-               classes-header.tmpl \
-               command.tmpl \
-               edit-config.tmpl \
-               error.tmpl \
-               error-op.tmpl \
-               header.tmpl \
-               help-header.tmpl \
-               help-trailer.tmpl \
-               help-printable.tmpl \
-               job-cancel.tmpl \
-               job-hold.tmpl \
-               job-move.tmpl \
-               job-moved.tmpl \
-               job-release.tmpl \
-               job-restart.tmpl \
-               jobs.tmpl \
-               jobs-header.tmpl \
-               list-available-printers.tmpl \
-               modify-class.tmpl \
-               modify-printer.tmpl \
-               norestart.tmpl \
-               option-boolean.tmpl \
-               option-conflict.tmpl \
-               option-header.tmpl \
-               option-pickmany.tmpl \
-               option-pickone.tmpl \
-               option-trailer.tmpl \
-               pager.tmpl \
-               printer.tmpl \
-               printer-accept.tmpl \
-               printer-added.tmpl \
-               printer-configured.tmpl \
-               printer-confirm.tmpl \
-               printer-default.tmpl \
-               printer-deleted.tmpl \
-               printer-jobs-header.tmpl \
-               printer-modified.tmpl \
-               printer-purge.tmpl \
-               printer-reject.tmpl \
-               printer-start.tmpl \
-               printer-stop.tmpl \
-               printers.tmpl \
-               printers-header.tmpl \
-               restart.tmpl \
-               samba-export.tmpl \
-               samba-exported.tmpl \
-               search.tmpl \
-               set-printer-options-header.tmpl \
-               set-printer-options-trailer.tmpl \
-               subscription-added.tmpl \
-               subscription-canceled.tmpl \
-               test-page.tmpl \
-               trailer.tmpl \
-               users.tmpl
-
-
-#
-# Make everything...
-#
-
-all:
-
-
-#
-# Make library targets...
-#
-
-libs:
-
-
-#
-# Make unit tests...
-#
-
-unittests:
-
-
-#
-# Clean all config and object files...
-#
-
-clean:
-
-
-#
-# Dummy depend...
-#
-
-depend:
-
-
-#
-# Install all targets...
-#
-
-install:       all install-data install-headers install-libs install-exec
-
-
-#
-# Install data files...
-#
-
-install-data: $(INSTALL_LANGUAGES)
-       $(INSTALL_DIR) -m 755 $(DATADIR)/templates
-       for file in $(FILES); do \
-               $(INSTALL_DATA) $$file $(DATADIR)/templates; \
-       done
-
-install-languages:
-       for lang in $(LANGUAGES); do \
-               if test -d $$lang; then \
-                       $(INSTALL_DIR) -m 755 $(DATADIR)/templates/$$lang; \
-                       for file in $(FILES); do \
-                               $(INSTALL_DATA) $$lang/$$file $(DATADIR)/templates/$$lang >/dev/null 2>&1 || true; \
-                       done \
-               fi \
-       done
-
-install-langbundle:
-
-
-#
-# Install programs...
-#
-
-install-exec:
-
-
-#
-# Install headers...
-#
-
-install-headers:
-
-
-#
-# Install libraries...
-#
-
-install-libs:
-
-
-#
-# Uninstall files...
-#
-
-uninstall: $(UNINSTALL_LANGUAGES)
-       for file in $(FILES); do \
-               $(RM) $(DATADIR)/templates/$$file; \
-       done
-       -$(RMDIR) $(DATADIR)/templates
-
-uninstall-languages:
-       for lang in $(LANGUAGES); do \
-               for file in $(FILES); do \
-                       $(RM) $(DATADIR)/templates/$$lang/$$file; \
-               done \
-               $(RMDIR) $(DATADIR)/templates/$$lang; \
-       done
-
-uninstall-langbundle:
-
-
-#
-# End of "$Id: Makefile 4216 2013-03-11 13:57:36Z msweet $".
-#
diff --git a/templates/ru/add-class.tmpl b/templates/ru/add-class.tmpl
deleted file mode 100644 (file)
index a119d86..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Новая группа</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Название:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(может содержать любые символы, кроме "/", "#" и пробела)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Описание:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Расширенное описание группы, например, "Дуплексный принтер")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Расположение:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Месторасположение группы, например, "Кабинет 55")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Состав группы:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Добавить группу"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/ru/add-printer.tmpl b/templates/ru/add-printer.tmpl
deleted file mode 100644 (file)
index 6690d88..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Добавление принтера</H2>
-
-<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="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
-{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Название:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
-<SMALL>(может содержать любые символы, кроме "/","#" и пробела)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Описание:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_INFO}"><BR>
-<SMALL>(расширенное описание, например, "HP LaserJet с дуплексной печатью")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Расположение:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_LOCATION}"><BR>
-<SMALL>(месторасположение принтера, например, "Кабинет 55")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Подключение:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Совместный доступ:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Разрешить совместный доступ к этому принтеру</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Продолжить"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/ru/add-rss-subscription.tmpl b/templates/ru/add-rss-subscription.tmpl
deleted file mode 100644 (file)
index 4567b92..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription">
-
-<H2 CLASS="title">Добавление подписки по RSS</H2>
-
-<TABLE SUMMARY="Добавление подписки по RSS">
-<TR>
-<TH CLASS="label">Название:</TH>
-<TD COLSPAN="5"><INPUT TYPE="TEXT" NAME="SUBSCRIPTION_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?SUBSCRIPTION_NAME}"><BR>
-<SMALL>(Может содержать любые символы, кроме "/", "#", "?" и пробела)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Очередь:</TH>
-<TD COLSPAN="5"><SELECT NAME="PRINTER_URI" SIZE="10"><OPTION VALUE="#ALL#"{?PRINTER_URI=#ALL#? SELECTED:}>Все очереди</OPTION>{[printer_name]<OPTION VALUE="{printer_uri_supported}"{?PRINTER_URI={printer_uri_supported}? SELECTED:}>{printer_name}</OPTION>}</SELECT></TD>
-</TR>
-<TR VALIGN="TOP">
-<TH CLASS="label">События:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CREATED" {?EVENT_JOB_CREATED}>Новое задание<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_COMPLETED" {?EVENT_JOB_COMPLETED}>Задание выполнено<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_STOPPED" {?EVENT_JOB_STOPPED}>Задание остановлено<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>Изменены параметры задания</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_STOPPED" {?EVENT_PRINTER_STOPPED}>Очередь остановлена<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_ADDED" {?EVENT_PRINTER_ADDED}>Очередь добавлена<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_MODIFIED" {?EVENT_PRINTER_MODIFIED}>Очередь изменена<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_DELETED" {?EVENT_PRINTER_DELETED}>Очередь удалена</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STARTED" {?EVENT_SERVER_STARTED}>Сервер запущен<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STOPPED" {?EVENT_SERVER_STOPPED}>Сервер остановлен<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_RESTARTED" {?EVENT_SERVER_RESTARTED}>Сервер перезапущен<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_AUDIT" {?EVENT_SERVER_AUDIT}>Проверка безопасности сервера</TD>
-</TR>
-<TR>
-<TH CLASS="label">Количество событий в ленте:</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="Добавить подписку по RSS"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/ru/admin.tmpl b/templates/ru/admin.tmpl
deleted file mode 100644 (file)
index ae2aab2..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-<TABLE CLASS="indent" SUMMARY="Администрирование">
-<TR><TD VALIGN="TOP">
-
-<H2 CLASS="title">Принтеры</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="Добавить принтер"></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="Найти новый принтер"></FORM>
-<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Управление принтерами"></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="Экспортировать принтер в Samba"></FORM>:}
-</P>
-
-<H2 CLASS="title">Группы</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="Добавить группу"></FORM>
-<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Управление группами"></FORM>
-</P>
-
-<H2 CLASS="title">Задания</H2>
-
-<P>
-<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Управление заданиями"></FORM>
-</P>
-
-</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
-
-<H2 CLASS="title">Сервер</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="Редактировать конфигурационный файл"></FORM>
-<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Показать журнал заданий"></FORM>
-<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Показать журнал ошибок"></FORM>
-<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Показать журнал страниц"></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>Параметры сервера\:</B></P>
-
-<P><A HREF="/admin/">Дополнительные параметры<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}> Показать принтеры, использующиеся в других системах<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Протоколы\:
-<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}> Разрешить печать из интернета<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Анонсировать веб-интерфейс<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Разрешить удаленное администрирование<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Разрешить аутентификацию Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Разрешать пользователям отменять любое задание(не только их собственные)<BR>
-<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Вести журнал заданий<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Количество заданий\:
-<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Записывать метаданные(Retain Metadata)\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Существующие документы(Retain Documents)\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Сохранять отладочную информацию в журнале<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Максимальный размер журнала ошибок\:
-<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
-
-:<P><B>Параметры сервера:</B></P>
-
-<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Дополнительные параметры <SMALL>&#x25b6;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Разрешить совместный доступ к принтерам, подключенным к этой системе<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Разрешить печать из Интернета<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Разрешить удаленное администрирование<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Разрешить аутентификацию Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Разрешить пользователям отменять любое задание(не только их собственные)<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Сохранять отладочную информацию в журнале</P>
-
-}
-<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Сохранить"></P>
-
-</FORM>}
-
-</TD></TR>
-</TABLE>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Подписка по 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="Добавить подписку по RSS"></FORM>
-</P>
-
-</DIV>
-
-{notify_subscription_id?<TABLE CLASS="list" SUMMARY="Подписки по RSS">
-<THEAD><TR><TH>Название</TH><TH>События</TH><TH>Очередь</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"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:Все очереди}</TD></TR>}
-</TBODY>
-</TABLE>:}
diff --git a/templates/ru/choose-device.tmpl b/templates/ru/choose-device.tmpl
deleted file mode 100644 (file)
index 3472f5f..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Изменение {printer_name}:Добавление принтера}</H2>
-
-{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">Текущее подключение\:</TH>
-<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
-{current_device_uri}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Локальные принтеры\:</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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}}
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Обнаруженные сетевые принтеры\:</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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}:}}
-</TD>
-</TR>
-<TR>
-<TR>
-<TH CLASS="label">Другие сетевые принтеры\:</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}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-}:}}
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Продолжить"></TD>
-</TR>
-</TABLE>
-
-</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> Поиск принтеров...</P>}
-
-</DIV>
diff --git a/templates/ru/choose-make.tmpl b/templates/ru/choose-make.tmpl
deleted file mode 100644 (file)
index 55b91db..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Изменение {printer_name}:Добавление принтера}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<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}">:}
-<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}">
-
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Название:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Описание:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Расположение:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Подключение:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Совместный доступ:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?Нет совместного доступа:{?printer_is_shared=0?Нет совместного доступа:Разрешить совместный доступ}} к этому принтеру</TD>
-</TR>
-<TR>
-<TH CLASS="label">Создать:</TH>
-<TD>
-<SELECT NAME="PPD_MAKE" SIZE="10">
-{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Продолжить"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>&nbsp;</TD>
-</TR>
-<TR>
-<TH CLASS="label">или использовать файл PPD:</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?Добавить принтер:Сохранить}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/ru/choose-model.tmpl b/templates/ru/choose-model.tmpl
deleted file mode 100644 (file)
index b666329..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Изменение {printer_name}:Добавление принтера}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<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}">:}
-<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}">
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Название:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Описание:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Расположение:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Подключение:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Совместный доступ:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?Нет совместного доступа:{?printer_is_shared=0?Нет совместного доступа:Разрешить совместный доступ}} к этому принтеру</TD>
-</TR>
-<TR>
-<TH CLASS="label">Создать:</TH>
-<TD>{PPD_MAKE} <INPUT TYPE="SUBMIT" NAME="SELECT_MAKE" VALUE="Выбрать другую модель"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Модель:</TH>
-<TD>
-<SELECT NAME="PPD_NAME" SIZE="10">
-{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Текущий драйвер - {current_make_and_model}</OPTION>:}
-{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
-}</SELECT>
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">или использовать файл PPD:</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?Добавить принтер:Сохранить}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/ru/choose-serial.tmpl b/templates/ru/choose-serial.tmpl
deleted file mode 100644 (file)
index 5a953a2..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Изменение {printer_name}:Добавление принтера}</H2>
-
-<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>
-<TR>
-<TH CLASS="label">Подключение:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Скорость передачи:</TH>
-<TD><SELECT NAME="BAUDRATE">
-{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Печать страниц:</TH>
-<TD><SELECT NAME="PARITY">
-<OPTION VALUE="none" {?parity=none?SELECTED:}>Все
-<OPTION VALUE="even" {?parity=even?SELECTED:}>Только четные
-<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Только нечетные
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Биты данных:</TH>
-<TD><SELECT NAME="BITS">
-<OPTION {?bits=8?SELECTED:}>8
-<OPTION {?bits=7?SELECTED:}>7
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Управление:</TH>
-<TD><SELECT NAME="FLOW">
-<OPTION VALUE="none" {?flow=none?SELECTED:}>Нет
-<OPTION VALUE="soft" {?flow=soft?SELECTED:}>XON/XOFF (Программное)
-<OPTION VALUE="hard" {?flow=hard?SELECTED:}>RTS/CTS (Аппаратное)
-<OPTION VALUE="dtrdsr" {?flow=dtrdsr?SELECTED:}>DTR/DSR (Аппаратное)
-</SELECT></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Продолжить"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/ru/choose-uri.tmpl b/templates/ru/choose-uri.tmpl
deleted file mode 100644 (file)
index 3c843f0..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Изменение {printer_name}:Добавление принтера}</H2>
-
-<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}">:}
-<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Подключение:</TH>
-<TD><INPUT TYPE="URL" SIZE="60" MAXLENGTH="1023" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>Примеры:
-<PRE>
-    http://hostname:631/ipp/
-    http://hostname:631/ipp/port1
-
-    ipp://hostname/ipp/
-    ipp://hostname/ipp/port1
-
-    lpd://hostname/queue
-
-    socket://hostname
-    socket://hostname:9100
-</PRE>
-
-<P>Смотрите раздел <A HREF="/help/network.html" TARGET="_blank">"Сетевые принтеры"</A> для выяснения правильного адреса вашего принтера.</P>
-
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Продолжить"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/ru/class-added.tmpl b/templates/ru/class-added.tmpl
deleted file mode 100644 (file)
index 626cfec..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Новая группа</H2>
-
-<P>Группа <A HREF="/classes/{printer_name}">{printer_name}</A> успешно добавлена.
-
-</DIV>
diff --git a/templates/ru/class-confirm.tmpl b/templates/ru/class-confirm.tmpl
deleted file mode 100644 (file)
index 0eb87ef..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Удаление группы {printer_name}</H2>
-
-<P><B>Предупреждение:</B> Вы действительно хотите удалить группу
-{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="Удалить группу"></FORM></P>
-
-</DIV>
diff --git a/templates/ru/class-deleted.tmpl b/templates/ru/class-deleted.tmpl
deleted file mode 100644 (file)
index 08f5999..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Удаление группы {printer_name}</H2>
-
-<P>Группа {printer_name} успешно удалена.
-
-</DIV>
\ No newline at end of file
diff --git a/templates/ru/class-jobs-header.tmpl b/templates/ru/class-jobs-header.tmpl
deleted file mode 100644 (file)
index 8487cbb..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Задания</H3>
-</DIV>
diff --git a/templates/ru/class-modified.tmpl b/templates/ru/class-modified.tmpl
deleted file mode 100644 (file)
index 986a02b..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Изменение группы {printer_name}</H2>
-
-<P>Группа <A HREF="/classes/{printer_name}">{printer_name}</A> успешно изменена.
-
-</DIV>
\ No newline at end of file
diff --git a/templates/ru/class.tmpl b/templates/ru/class.tmpl
deleted file mode 100644 (file)
index 643cbae..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?Idle:{printer_state=4?печать:приостановлен}},
-{printer_is_accepting_jobs=0?Не принимает задания:Принимает задания},
-{server_is_sharing_printers=0?нет совместного доступа:{printer_is_shared=0?нет совместного доступа:разрешен совместный доступ}} {default_name={printer_name}?, Сервер по умолчанию:})</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="">Обслуживание</OPTION>
-<OPTION VALUE="print-test-page">Печать пробной страницы</OPTION>
-{printer_state=5?<OPTION VALUE="start-class">Данные группы</OPTION>:<OPTION VALUE="stop-class">Приостановить группу</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Принимать задания</OPTION>:<OPTION VALUE="reject-jobs">Не принимать задания</OPTION>}
-<OPTION VALUE="move-jobs">Переместить все задания</OPTION>
-<OPTION VALUE="purge-jobs">Отменить все задания</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Сохранить" STYLE="display: none;">
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="Администрирование">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<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="">Администрирование</OPTION>
-<OPTION VALUE="modify-class">Изменить группу</OPTION>
-<OPTION VALUE="delete-class">Удалить группу</OPTION>
-<OPTION VALUE="set-class-options">Установить параметры по умолчанию</OPTION>
-<OPTION VALUE="set-as-default">Установить как принтер по умолчанию</OPTION>
-<OPTION VALUE="set-allowed-users">Список разрешенных пользователей</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Сохранить" STYLE="display: none;">
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Описание:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Расположение:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Состав:</TH><TD>{?member_uris=?Нет принтеров:{member_uris}}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">По умолчанию:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:неизвестный}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
diff --git a/templates/ru/classes-header.tmpl b/templates/ru/classes-header.tmpl
deleted file mode 100644 (file)
index 51012c5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Нет групп:Показать {#printer_name} из {total} группы{total=1?:es}}.</P>
diff --git a/templates/ru/classes.tmpl b/templates/ru/classes.tmpl
deleted file mode 100644 (file)
index 5038bea..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{#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>
-</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=?Нет принтеров:{member_uris}}</TD><TD>{printer_state=3?В ожидании:{printer_state=4?Печатает:Приостановлен}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/ru/command.tmpl b/templates/ru/command.tmpl
deleted file mode 100644 (file)
index 4dc7b4e..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{title} для {printer_name}</H2>
-
-<P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
-ALIGN="ABSMIDDLE" ALT="Индикатор занятости"> }Обработка задания
-{job_state=3?в очереди:{job_state=4?удерживается:
-{job_state=5?обрабатывается:{job_state=6?остановлено:
-{job_state=7?отменено:{job_state=8?прервано:завершено}}}}}}{job_state=9?:{job_printer_state_message?,
-<EM>"{job_printer_state_message}"</EM>:}}</P>
-
-</DIV>
diff --git a/templates/ru/edit-config.tmpl b/templates/ru/edit-config.tmpl
deleted file mode 100644 (file)
index d194059..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<SCRIPT TYPE="text/javascript">
-function reset_config()
-{
-  document.cups.CUPSDCONF.value = "{?cupsdconf_default}";
-}
-</SCRIPT>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Редактирование конфигурационного файла</H2>
-
-<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-
-<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
-
-<P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="Сохранить изменения">
-<INPUT TYPE="BUTTON" VALUE="Сбросить все изменения"
-onClick="reset_config();"></P>
-
-</FORM>
-
-</DIV>
diff --git a/templates/ru/error-op.tmpl b/templates/ru/error-op.tmpl
deleted file mode 100644 (file)
index 922976f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} - ошибка </H2>
-
-<P>Ошибка:</P>
-
-<BLOCKQUOTE>Неизвестная операция "{op}"!</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/ru/error.tmpl b/templates/ru/error.tmpl
deleted file mode 100644 (file)
index 4a35c8f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} - ошибка</H2>
-
-<P>{?message?{message}:Ошибка}:</P>
-
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/ru/header.tmpl.in b/templates/ru/header.tmpl.in
deleted file mode 100644 (file)
index 6d16855..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!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}">:}
-</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="unsel"><A HREF="/">&nbsp;&nbsp;Начало&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;Администрирование&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=classes?:un}sel"><A HREF="/classes/">&nbsp;&nbsp;Группы&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=help?:un}sel"><A HREF="/help/">&nbsp;&nbsp;Справка&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;Задания&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;Принтеры&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Поиск по справке"
-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>
-<TR><TD COLSPAN="9">&nbsp;</TD></TR>
-</TABLE>
diff --git a/templates/ru/help-header.tmpl b/templates/ru/help-header.tmpl
deleted file mode 100644 (file)
index d618a66..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<DIV CLASS="indent">
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
-{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
-
-<P ALIGN="CENTER"><B>Поиск
-{HELPTITLE?в {HELPTITLE}:{TOPIC?в {TOPIC}:по справке}}:</B> <INPUT
-TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER=""
-AUTOSAVE="org.cups.help" RESULTS="20">
-<INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="Поиск">
-<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Очистить"></P>
-
-</FORM>
-
-<!-- Bookmarks -->
-<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Содержание">
-<TR><TD>
-
-<H3 CLASS="title">Документация</H3>
-
-<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Все разделы</A></P>
-<HR>
-
-{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
-}
-</TD></TR>
-</TABLE></DIV>
-
-{QUERY?<P>Результаты поиска в {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:всей справке}}\:</P>
-{QTEXT?<UL>
-{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (in <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
-{QTEXT?</UL>:}
-:<P>Не найдено совпадений.</P>}
-<HR NOSHADE>:}
-{HELPTITLE?<H1>{HELPTITLE}</H1>
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Показать версию для печати"></FORM>:
-
-<H1>Справка</H1>
-
-<P>Это справка CUPS. Введите выше слова для поиска в справке и нажмите "Поиск", чтобы показать результаты поиска.</P>
-
-<P>Если вы пока мало знакомы с CUPS, прочтите раздел "<a
-href="/help/overview.html">Введение в CUPS</a>". Опытные пользователи
-могут обратиться к разделу "<a href="/help/whatsnew.html">Что нового в CUPS 1.6</a>".</P>
-
-<P><A HREF="http://www.cups.org/">Веб-сайт CUPS</A> так же содержит большое количество ресурсов для пользователей, включая форум, ответы на часто задаваемые вопросы и форму для регистрации ошибок и пожеланий.</P>}
diff --git a/templates/ru/help-printable.tmpl b/templates/ru/help-printable.tmpl
deleted file mode 100644 (file)
index 2463c16..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<!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/ru/help-trailer.tmpl b/templates/ru/help-trailer.tmpl
deleted file mode 100644 (file)
index 4c1ebed..0000000
+++ /dev/null
@@ -1 +0,0 @@
-</DIV>
diff --git a/templates/ru/job-cancel.tmpl b/templates/ru/job-cancel.tmpl
deleted file mode 100644 (file)
index cba5644..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Отмена задания {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Задание {job_id}</A> отменено.
-
-</DIV>
diff --git a/templates/ru/job-hold.tmpl b/templates/ru/job-hold.tmpl
deleted file mode 100644 (file)
index 162e4a4..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Приостановка задания {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Задание {job_id}</A> приостановлено.
-
-</DIV>
diff --git a/templates/ru/job-move.tmpl b/templates/ru/job-move.tmpl
deleted file mode 100644 (file)
index 598e4db..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<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}">
-{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
-
-<H2 CLASS="title">{job_id?Перемещение задания {job_id}:Перемещение всех заданий}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Переместить на принтер:</TH>
-<TD>
-<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
-{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{job_id?Переместить задание:Переместить все задания}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-
-</DIV>
diff --git a/templates/ru/job-moved.tmpl b/templates/ru/job-moved.tmpl
deleted file mode 100644 (file)
index e5bd656..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{job_id?Перемещение задания {job_id}:Перемещение всех заданий}</H2>
-
-<P>{job_id?<A HREF="/jobs/{job_id}">Задание {job_id}</A>:Все задания} перемещены на
-<A HREF="/{is_class?группы:принтеры}/{job_printer_name}">{job_printer_name}</A>.</P>
-
-</DIV>
diff --git a/templates/ru/job-release.tmpl b/templates/ru/job-release.tmpl
deleted file mode 100644 (file)
index 1cad15a..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Разблокирование задания {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Задание {job_id}</A> разблокировано.
-
-</DIV>
diff --git a/templates/ru/job-restart.tmpl b/templates/ru/job-restart.tmpl
deleted file mode 100644 (file)
index 490fc3a..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Перезапуск задания {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Задание {job_id}</A> запущено заново.
-
-</DIV>
diff --git a/templates/ru/jobs-header.tmpl b/templates/ru/jobs-header.tmpl
deleted file mode 100644 (file)
index 7b645b5..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Показать активные задания"></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="Показать завершенные задания"></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="Показать все задания"></FORM>}</DIV>
-
-<P ALIGN="CENTER">{total=0?Нет заданий:Задание {#job_id} из {total} {?which_jobs=?активных:{which_jobs=all?:завершенных}}}.</P>
diff --git a/templates/ru/jobs.tmpl b/templates/ru/jobs.tmpl
deleted file mode 100644 (file)
index ce80fdb..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-{#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>
-</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=?Неизвестное:{job_name}}&nbsp;</TD>
-<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>
-<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="Перезапустить"></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="Продолжить"></FORM>:}
-{job_state=3?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-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="Приостановить"></FORM>:}
-{job_state<7?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-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="Отменить"></FORM>
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="move-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="SUBMIT" VALUE="Переместить"></FORM>:}
-&nbsp;</TD>
-</TR>
-}
-</TBODY>
-</TABLE>
-}
diff --git a/templates/ru/list-available-printers.tmpl b/templates/ru/list-available-printers.tmpl
deleted file mode 100644 (file)
index 90d3c94..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Доступные принтеры</H2>
-
-{#device_uri=0?<P>Не обнаружено ни одного принтера.</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="Локальный принтер"><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{device_make_and_model}"><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}"><INPUT TYPE="SUBMIT" VALUE="Добавить этот принтер"></FORM>
-{device_make_and_model} ({device_info})</LI>
-}</UL>}
-
-</DIV>
diff --git a/templates/ru/modify-class.tmpl b/templates/ru/modify-class.tmpl
deleted file mode 100644 (file)
index a85698a..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Изменение группы {printer_name}</H2>
-
-<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}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Описание:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Расположение:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Состав группы:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Изменить группу"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
\ No newline at end of file
diff --git a/templates/ru/modify-printer.tmpl b/templates/ru/modify-printer.tmpl
deleted file mode 100644 (file)
index 8ec523f..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Изменение принтера {printer_name}</H2>
-
-<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="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="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Описание:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(расширенное описание принтера, например,  "HP LaserJet с дуплексной печатью")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Расположение:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(местоположение принтера, например, "Кабинет 55")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Подключение:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Совместный доступ:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Разрешить совместный доступ к этому принтеру</TD>
-</TR>
-<TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Продолжить"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ru/norestart.tmpl b/templates/ru/norestart.tmpl
deleted file mode 100644 (file)
index a08a467..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Применение изменений</H2>
-
-<P>Сервер не был перезапущен,поскольку не произошло изменений в конфигурации...</P>
-
-</DIV>
diff --git a/templates/ru/option-boolean.tmpl b/templates/ru/option-boolean.tmpl
deleted file mode 100644 (file)
index e832ee1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD>
-{[choices]<INPUT TYPE="RADIO" NAME="{keyword-1}" {choices={defchoice-1}?CHECKED:} VALUE="{choices}">{text}}
-</TD>
-</TR>
diff --git a/templates/ru/option-conflict.tmpl b/templates/ru/option-conflict.tmpl
deleted file mode 100644 (file)
index 9497fb7..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<P><B>Ошибка:</B> следующие параметры конфликтуют:</P>
-
-<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
-}</UL>
-
-<P>Измените один или несколько параметров для того, чтобы избежать конфликта.</P>
diff --git a/templates/ru/option-header.tmpl b/templates/ru/option-header.tmpl
deleted file mode 100644 (file)
index 464726a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="tab" ID="{group_id}">
-
-<H3 ALIGN="CENTER">{group}</H3>
-
-<TABLE WIDTH="100%">
diff --git a/templates/ru/option-pickmany.tmpl b/templates/ru/option-pickmany.tmpl
deleted file mode 100644 (file)
index 0da75e5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT></TD>
-</TR>
diff --git a/templates/ru/option-pickone.tmpl b/templates/ru/option-pickone.tmpl
deleted file mode 100644 (file)
index 49a9929..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" ID="select-{keyword}" ONCHANGE="update_paramtable('{keyword}')">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT>
-{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
-<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
-<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Пункты</OPTION>
-<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Миллиметры</OPTION>
-<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Сантиметры</OPTION>
-<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Дюймы</OPTION>
-<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Футы</OPTION>
-<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Метры</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
-}</TABLE>
-</TD>:}
-</TR>
diff --git a/templates/ru/option-trailer.tmpl b/templates/ru/option-trailer.tmpl
deleted file mode 100644 (file)
index f80e946..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-</TABLE>
-
-<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="Сохранить параметры по умолчанию"></P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/ru/pager.tmpl b/templates/ru/pager.tmpl
deleted file mode 100644 (file)
index 3c5dc62..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<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>
-</TR>
-</TABLE>
diff --git a/templates/ru/printer-accept.tmpl b/templates/ru/printer-accept.tmpl
deleted file mode 100644 (file)
index 24d100d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Прием заданий {is_class?в группу:на принтер} {printer_name}</H2>
-
-<P>{is_class?Группа:Принтер} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-теперь принимает задания.</P>
-
-</DIV>
diff --git a/templates/ru/printer-added.tmpl b/templates/ru/printer-added.tmpl
deleted file mode 100644 (file)
index cc78407..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Добавить принтер</H2>
-
-<P>Принтер <A HREF="/printers/{printer_name}">{printer_name}</A> успешно добавлен.
-
-</DIV>
diff --git a/templates/ru/printer-configured.tmpl b/templates/ru/printer-configured.tmpl
deleted file mode 100644 (file)
index 33c4c14..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Настройки по умолчанию для {printer_name}</H2>
-
-<P>{OP=set-class-options?Группа <A HREF="/classes/{printer_name}">:Принтер <A HREF="/printers/{printer_name}">}{printer_name}</A>
-теперь используют параметры по умолчанию.
-
-</DIV>
diff --git a/templates/ru/printer-confirm.tmpl b/templates/ru/printer-confirm.tmpl
deleted file mode 100644 (file)
index 86b6360..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Удаление принтера {printer_name}</H2>
-
-<P><B>Предупреждение:</B> вы действительно хотите удалить принтер
-{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="Удалить принтер"></FORM></P>
-
-</DIV>
diff --git a/templates/ru/printer-default.tmpl b/templates/ru/printer-default.tmpl
deleted file mode 100644 (file)
index 474f4b8..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Установка {is_class?группы:принтера} {printer_name} по умолчанию</H2>
-
-<P>{is_class?Группа:Принтер} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-установлены на сервере по умолчанию для новых заданий.</P>
-
-<BLOCKQUOTE><B>Примечания:</B> вы можете переопределить это поведение с помощью команды
-the <TT>lpoptions</TT>.</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/ru/printer-deleted.tmpl b/templates/ru/printer-deleted.tmpl
deleted file mode 100644 (file)
index 43593c7..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Удаление принтера {printer_name}</H2>
-
-<P>Принтер {printer_name} успешно удален.
-
-</DIV>
diff --git a/templates/ru/printer-jobs-header.tmpl b/templates/ru/printer-jobs-header.tmpl
deleted file mode 100644 (file)
index 8487cbb..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Задания</H3>
-</DIV>
diff --git a/templates/ru/printer-modified.tmpl b/templates/ru/printer-modified.tmpl
deleted file mode 100644 (file)
index 21c502f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Изменение принтера {printer_name}</H2>
-
-<P>Параметры принтера <A HREF="/printers/{printer_name}">{printer_name}</A> успешно изменены.
-
-</DIV>
\ No newline at end of file
diff --git a/templates/ru/printer-purge.tmpl b/templates/ru/printer-purge.tmpl
deleted file mode 100644 (file)
index c2768c8..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Очистка всех заданий для {is_class?группы:принтера} {printer_name}</H2>
-
-<P>Все задания для {is_class?группы:принтера} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-очищены.</P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/ru/printer-reject.tmpl b/templates/ru/printer-reject.tmpl
deleted file mode 100644 (file)
index 012e161..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Отмена заданий для {is_class?группы:принтера} {printer_name}</H2>
-
-<P>{is_class?Группа:Принтер} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-больше не принимает задания.</P>
-
-</DIV>
diff --git a/templates/ru/printer-start.tmpl b/templates/ru/printer-start.tmpl
deleted file mode 100644 (file)
index cb02c79..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Возобновить работу {is_class?группы:принтера} {printer_name}</H2>
-
-<P>{is_class?Группа:Принтер} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-теперь принимают задания.</P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/ru/printer-stop.tmpl b/templates/ru/printer-stop.tmpl
deleted file mode 100644 (file)
index d9fa7fc..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Приостановить {is_class?группу:принтер} {printer_name}</H2>
-
-<P>{is_class?Группа:Принтер} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-{is_class?была приостановлена:был приостановлен}.</P>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/ru/printer.tmpl b/templates/ru/printer.tmpl
deleted file mode 100644 (file)
index 289a2c6..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?в ожидании:{printer_state=4?печать:приостановлен}},
-{printer_is_accepting_jobs=0?не принимает задания:принимает задания},
-{server_is_sharing_printers=0?нет совместного доступа:{printer_is_shared=0?нет совместного доступа:разрешен совместный доступ}} {default_name={printer_name}?, По умолчанию:})</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="">Обслуживание</OPTION>
-<OPTION VALUE="print-test-page">Печать пробной страницы</OPTION>
-{printer_commands~.*Clean.*?<OPTION VALUE="clean-print-heads">Очистить головки</OPTION>:}
-{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">Печать пробной страницы принтера</OPTION>:}
-{printer_state=5?<OPTION VALUE="start-printer">Восстановить печать</OPTION>:<OPTION VALUE="stop-printer">Приостановить принтер</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Принимать задания</OPTION>:<OPTION VALUE="reject-jobs">Не принимать задания</OPTION>}
-<OPTION VALUE="move-jobs">Переместить все задания</OPTION>
-<OPTION VALUE="purge-jobs">Закрыть все задания</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<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="">Администрирование</OPTION>
-<OPTION VALUE="modify-printer">Изменить принтер</OPTION>
-<OPTION VALUE="delete-printer">Удалить принтер</OPTION>
-<OPTION VALUE="set-printer-options">Установить параметры по умолчанию</OPTION>
-<OPTION VALUE="set-as-default">Установить как принтер по умолчанию</OPTION>
-<OPTION VALUE="set-allowed-users">Список разрешенных пользователей</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Описание:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Расположение:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Драйвер:</TH><TD>{printer_make_and_model} ({color_supported=1?цветной:черно-белый}{sides_supported?, дуплексная печать:})<BR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Подключение:</TH><TD>{device_uri}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">По умолчанию:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:неизвестный}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
\ No newline at end of file
diff --git a/templates/ru/printers-header.tmpl b/templates/ru/printers-header.tmpl
deleted file mode 100644 (file)
index 6621e06..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Нет принтеров:Принтер {#printer_name} из {total}}.</P>
diff --git a/templates/ru/printers.tmpl b/templates/ru/printers.tmpl
deleted file mode 100644 (file)
index 79feae5..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{#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>
-</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?Idle:{printer_state=4?Печатает:Приостановлен}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/ru/restart.tmpl b/templates/ru/restart.tmpl
deleted file mode 100644 (file)
index c32a5ae..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Применение изменений параметров</H2>
-
-<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Ожидание"> Дождитесь перезагрузки сервера...</P>
-
-</DIV>
diff --git a/templates/ru/samba-export.tmpl b/templates/ru/samba-export.tmpl
deleted file mode 100644 (file)
index 641ca0b..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<SCRIPT TYPE="text/javascript"><!--
-function select_printers() {
-  var list = document.export_samba.EXPORT_NAME;
-  var sel = document.export_samba.EXPORT_ALL.checked;
-
-  for (i = 0; i < list.length; i ++) {
-    list.options[i].selected = sel;
-  }
-}
---></SCRIPT>
-
-<FORM METHOD="POST" ACTION="/admin/" NAME="export_samba">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
-
-<H2 CLASS="title">Экспорт принтеров в Samba</H2>
-
-{error?<P>Невозможно экспортировать принтеры в Samba\:</P>
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-<P>Посмотрите файл <A HREF="/admin/log/error_log"
-TARGET="_blank">error_log</A> для более подробной информации.</P>:
-<P>Эта страница позволяет добавить принтеры в Samba так, чтобы
-клиенты Windows могли получить доступ к ним через значок <VAR>Сетевое окружение</VAR> или <VAR>Сетевые подключения</VAR> на их рабочем столе. Вы должны установить на Windows драйвер принтера PostScript
-как описано на странице руководства <A
-HREF="/help/man-cupsaddsmb.html"
-TARGET="_blank">cupsaddsmb(8)</A>.</P>}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Принтеры:</TH>
-<TD>
-<SELECT NAME="EXPORT_NAME" SIZE="10" MULTIPLE>
-{[printer_name]<OPTION VALUE="{printer_name}"{export_all? SELECTED:{printer_export? SELECTED:}}>{printer_name}}
-</SELECT><BR>
-<INPUT TYPE="CHECKBOX" NAME="EXPORT_ALL"{export_all? CHECKED:}
-onChange="select_printers()"> Экспортировать все принтеры
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Имя пользователя Samba:</TH>
-<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (обязательный параметр)</TD>
-</TR>
-<TR>
-<TH CLASS="label">Пароль Samba:</TH>
-<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (обязательный параметр)</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Экспортировать принтеры в Samba"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/ru/samba-exported.tmpl b/templates/ru/samba-exported.tmpl
deleted file mode 100644 (file)
index 179b2ad..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<P>Принтеры успешно экспортированы в Samba.</P>
diff --git a/templates/ru/search.tmpl b/templates/ru/search.tmpl
deleted file mode 100644 (file)
index f338bc6..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
-{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
-{ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
-
-<P ALIGN="CENTER"><B>Поиск
-{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?группы:{SECTION=jobs?задания:принтеры}}}:</B>
-<INPUT TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40"  PLACEHOLDER="" AUTOSAVE="org.cups.{SECTION}" RESULTS="20"> <INPUT
-TYPE="SUBMIT" VALUE="Поиск"> <INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Очистить"></P>
-
-</FORM>
diff --git a/templates/ru/set-printer-options-header.tmpl b/templates/ru/set-printer-options-header.tmpl
deleted file mode 100644 (file)
index e5c79dd..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Установить параметры по умолчанию для {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="Запрос принтера для параметров по умолчанию">:}
-
-<SCRIPT TYPE="text/javascript"><!--
-function update_paramtable(option)
-{
-  var cb = document.getElementById("select-" + option)
-  var paramstable = document.getElementById(option + "-params");
-  if (cb.value == "Custom")
-    paramstable.style.display = "table";
-  else
-    paramstable.style.display = "none";
-}
---></SCRIPT>
-
-<H3 CLASS="title">{[group_id]
-<A HREF="#{group_id}">{group}</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</H3>
-
-<DIV CLASS="tabs">
diff --git a/templates/ru/set-printer-options-trailer.tmpl b/templates/ru/set-printer-options-trailer.tmpl
deleted file mode 100644 (file)
index 11adc70..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-</DIV>
-
-<SCRIPT TYPE="text/javascript"><!--
-// Hide custom options parameters for browsers that understand Javascript
-var paramtables = document.getElementsByName("paramtable");
-for (var i = 0; i < paramtables.length; i++)
-{
-  var opt = paramtables[i].id.substr(0, paramtables[i].id.lastIndexOf("-"));
-  var cb = document.getElementById("select-" + opt);
-  if (cb.value != "Custom")
-    paramtables[i].style.display = "none";
-}
---></SCRIPT>
-</FORM>
-
-</DIV>
diff --git a/templates/ru/subscription-added.tmpl b/templates/ru/subscription-added.tmpl
deleted file mode 100644 (file)
index f2b4642..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>Подписка {subscription_name} была успешно добавлена.</P>
-
-</DIV>
diff --git a/templates/ru/subscription-canceled.tmpl b/templates/ru/subscription-canceled.tmpl
deleted file mode 100644 (file)
index 5daed1f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>Подписка #{notify_subscription_id} была отменена.</P>
-
-</DIV>
diff --git a/templates/ru/test-page.tmpl b/templates/ru/test-page.tmpl
deleted file mode 100644 (file)
index 6dc1ba1..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Печать пробной страницы на {printer_name}</H2>
-
-<P>Пробная страница отправлена на печать;Номер задания <A HREF="/{SECTION}/{printer_name}">
-{printer_name}-{job_id}</A>.</P>
-
-</DIV>
diff --git a/templates/ru/trailer.tmpl b/templates/ru/trailer.tmpl
deleted file mode 100644 (file)
index 8c4067e..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS, а так же логотип CUPS являются зарегистрированными торговыми марками
-<A HREF="http://www.apple.com">Apple Inc.</A> Авторские права на CUPS принадлежат (2007-2014) компании Apple Inc. Все права защищены.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/templates/ru/users.tmpl b/templates/ru/users.tmpl
deleted file mode 100644 (file)
index ee718b2..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<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">Доступ пользователей на {printer_name}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Пользователи:</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:}>Разрешить этим пользователям печатать
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>Запретить этим пользователям печатать
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>
-<INPUT TYPE="SUBMIT" VALUE="Сохранить">
-</TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
index 3e7db4669c8effb54fb7f8fc09d1ee257a6efcf9..91e0981aa51b99dec99bb5d8b192d260b8837bfa 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Set Default Options for {printer_name}</H2>
 
 <FORM METHOD="POST" ACTION="/admin">
index 11adc7012522eb3598c8389955d66de5ed2a48cf..b92988a7f015b8e502f9c150542e7357233630f6 100644 (file)
@@ -12,5 +12,3 @@ for (var i = 0; i < paramtables.length; i++)
 }
 --></SCRIPT>
 </FORM>
-
-</DIV>
index c288b3649b04898f4a2b5c6bfa1f0b280a0b069a..6153d79504859e55e1c1dec32aa59e0ececc874e 100644 (file)
@@ -1,5 +1 @@
-<DIV CLASS="indent">
-
 <P>Subscription {subscription_name} has been added successfully.</P>
-
-</DIV>
index 86f2c1069126ee4b4f1132ae36f831920a697ff2..46662ccdb2480da93fba3f9c013dbbf393b1e1af 100644 (file)
@@ -1,5 +1 @@
-<DIV CLASS="indent">
-
 <P>Subscription #{notify_subscription_id} has been canceled.</P>
-
-</DIV>
index 59e314a8d4618091249ad1ab570207f16d921157..44a74f288a63c11903794e8190dfb409fe1e62f7 100644 (file)
@@ -1,8 +1,4 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Print Test Page On {printer_name}</H2>
 
 <P>Test page sent; job ID is <A HREF="/{SECTION}/{printer_name}">
 {printer_name}-{job_id}</A>.</P>
-
-</DIV>
index d754d908b14f7c53c5bdb3fc6aad11cd976fbe80..c5614fb39c5b1dd28939fca3b9aa6f26ef9d70cd 100644 (file)
@@ -1,8 +1,5 @@
-</DIV></TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS and the CUPS logo are trademarks of
-<A HREF="http://www.apple.com">Apple Inc.</A> Copyright 2007-2014 Apple
-Inc. All rights reserved.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
+      </div>
+    </div>
+    <div class="footer">CUPS and the CUPS logo are trademarks of <a href="http://www.apple.com">Apple Inc.</a> Copyright &copy; 2007-2014 Apple Inc. All rights reserved.</div>
+  </body>
+</html>
index 0889f3f31ecd8e824081482b11157ecaa8439594..c88e033133add147342119bb8318c4814ae6dc5a 100644 (file)
@@ -1,5 +1,3 @@
-<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}">
@@ -27,4 +25,3 @@
 </TABLE>
 
 </FORM>
-</DIV>
index a168d6e9423bcf9079eb3df0f84115a7f0a55db8..ab75c987aa4d333e6c5d80ca9802abe67151f647 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: 4.1-requests.test 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: 4.1-requests.test 11398 2013-11-06 20:11:11Z msweet $"
 #
 #   Verify that the server requires the following attributes:
 #
        STATUS server-error-version-not-supported
 }
 #
-# End of "$Id: 4.1-requests.test 11396 2013-11-06 20:09:03Z msweet $"
+# End of "$Id: 4.1-requests.test 11398 2013-11-06 20:11:11Z msweet $"
 #
index a95d81f5e87f9868b0aa8b2e1ed4a6d867870721..4052ee73405ed849757626185b74e176688c776b 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: 4.2-cups-printer-ops.test 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: 4.2-cups-printer-ops.test 11798 2014-04-07 15:18:44Z msweet $"
 #
 #   Verify that the CUPS printer operations work.
 #
        ATTR uri device-uri file:/tmp/Test1
        ATTR enum printer-state 3
        ATTR boolean printer-is-accepting-jobs true
+       ATTR text printer-info "Test Printer 1"
 
        FILE testps.ppd
 
 }
 
 #
-# End of "$Id: 4.2-cups-printer-ops.test 11396 2013-11-06 20:09:03Z msweet $"
+# End of "$Id: 4.2-cups-printer-ops.test 11798 2014-04-07 15:18:44Z msweet $"
 #
index 2f46fda6c8e9e3bf6d1b41cfd2b774c06d625dcd..fbfa3b958c105f4963d023f5fdbf19c41fc1ffaf 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: 4.3-job-ops.test 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: 4.3-job-ops.test 11398 2013-11-06 20:11:11Z msweet $"
 #
 #   Verify that the IPP job operations work.
 #
 }
 
 #
-# End of "$Id: 4.3-job-ops.test 11396 2013-11-06 20:09:03Z msweet $"
+# End of "$Id: 4.3-job-ops.test 11398 2013-11-06 20:11:11Z msweet $"
 #
index ebdcf283d64dc578d5c1e6ea5767fdd329aaa041..e0a18a3653d94b0f0d6efd1a5ecdda853bf5e32a 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: 4.4-subscription-ops.test 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: 4.4-subscription-ops.test 11398 2013-11-06 20:11:11Z msweet $"
 #
 #   Verify that the CUPS subscription operations work.
 #
 }
 
 #
-# End of "$Id: 4.4-subscription-ops.test 11396 2013-11-06 20:09:03Z msweet $"
+# End of "$Id: 4.4-subscription-ops.test 11398 2013-11-06 20:11:11Z msweet $"
 #
index bf26531f45c1f9ed8984537ccddfdcad62a3a8a9..dd9927b7df830705c887aca346994aeb2486a875 100644 (file)
@@ -1,17 +1,17 @@
 #!/bin/sh
 #
-# "$Id: 5.1-lpadmin.sh 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: 5.1-lpadmin.sh 11398 2013-11-06 20:11:11Z msweet $"
 #
-#   Test the lpadmin command.
+# Test the lpadmin command.
 #
-#   Copyright 2007-2012 by Apple Inc.
-#   Copyright 1997-2005 by Easy Software Products, all rights reserved.
+# Copyright 2007-2013 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 "Add Printer Test"
@@ -22,7 +22,12 @@ if test $? != 0; then
        echo "    FAILED"
        exit 1
 else
-       echo "    PASSED"
+       if test -f $CUPS_SERVERROOT/ppd/Test3.ppd; then
+               echo "    PASSED"
+       else
+               echo "    FAILED (No PPD)"
+               exit 1
+       fi
 fi
 echo ""
 
@@ -63,5 +68,5 @@ fi
 echo ""
 
 #
-# End of "$Id: 5.1-lpadmin.sh 11396 2013-11-06 20:09:03Z msweet $".
+# End of "$Id: 5.1-lpadmin.sh 11398 2013-11-06 20:11:11Z msweet $".
 #
index e315329d5e7425a2373315a17c67c07f48ddae02..3797ab08eccd9183cbdd0ab4322aec019e4e0303 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# "$Id: 5.2-lpc.sh 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: 5.2-lpc.sh 11398 2013-11-06 20:11:11Z msweet $"
 #
 #   Test the lpc command.
 #
@@ -27,5 +27,5 @@ fi
 echo ""
 
 #
-# End of "$Id: 5.2-lpc.sh 11396 2013-11-06 20:09:03Z msweet $".
+# End of "$Id: 5.2-lpc.sh 11398 2013-11-06 20:11:11Z msweet $".
 #
index 842c97e0436618bc7948dcc10b4ffcae108288ef..8c9491a38153b6054cc2cd6c2cb35c70ee64ab9b 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# "$Id: 5.3-lpq.sh 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: 5.3-lpq.sh 11398 2013-11-06 20:11:11Z msweet $"
 #
 #   Test the lpq command.
 #
@@ -27,5 +27,5 @@ fi
 echo ""
 
 #
-# End of "$Id: 5.3-lpq.sh 11396 2013-11-06 20:09:03Z msweet $".
+# End of "$Id: 5.3-lpq.sh 11398 2013-11-06 20:11:11Z msweet $".
 #
index 10f3c750326336fa84b0c86a3c9a6dd31e0fc378..2209a5de77390586044335d0434c5c38d6f47394 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# "$Id: 5.4-lpstat.sh 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: 5.4-lpstat.sh 11398 2013-11-06 20:11:11Z msweet $"
 #
 #   Test the lpstat command.
 #
@@ -39,5 +39,5 @@ fi
 echo ""
 
 #
-# End of "$Id: 5.4-lpstat.sh 11396 2013-11-06 20:09:03Z msweet $".
+# End of "$Id: 5.4-lpstat.sh 11398 2013-11-06 20:11:11Z msweet $".
 #
index dffa4fd7bf4fb1a8ff0491bb4aeb0ea21cd0ac54..8d673309f37c4c2d0e0bfb99e73f249c8892f6f3 100644 (file)
@@ -1,10 +1,10 @@
 #!/bin/sh
 #
-# "$Id: 5.5-lp.sh 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: 5.5-lp.sh 12066 2014-07-30 18:30:44Z msweet $"
 #
 #   Test the lp command.
 #
-#   Copyright 2007-2012 by Apple Inc.
+#   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
@@ -55,6 +55,7 @@ echo ""
 echo "    lp -d Test1 testfile.jpg"
 echo "    lp -d Test2 testfile.jpg"
 i=0
+pids=""
 while test $i -lt $1; do
        j=1
        while test $j -le $2; do
@@ -63,12 +64,13 @@ while test $i -lt $1; do
        done
 
        $VALGRIND ../systemv/lp -d Test1 testfile.jpg 2>&1 &
+       pids="$pids $!"
        $VALGRIND ../systemv/lp -d Test2 testfile.jpg 2>&1 &
-       lppid=$!
+       pids="$pids $!"
 
        i=`expr $i + 1`
 done
-wait $lppid
+wait $pids
 if test $? != 0; then
        echo "    FAILED"
        exit 1
@@ -79,6 +81,19 @@ echo ""
 
 ./waitjobs.sh
 
+echo "LPSTAT Completed Jobs Order Test"
+echo ""
+echo "    lpstat -W completed -o"
+$VALGRIND ../systemv/lpstat -W completed -o | tee $BASE/lpstat-completed.txt
+if test "`uniq -d $BASE/lpstat-completed.txt`" != ""; then
+       echo "    FAILED"
+       exit 1
+else
+       echo "    PASSED"
+fi
+echo ""
+
+
 #
-# End of "$Id: 5.5-lp.sh 11396 2013-11-06 20:09:03Z msweet $".
+# End of "$Id: 5.5-lp.sh 12066 2014-07-30 18:30:44Z msweet $".
 #
index 28cdb788835e4bc4b6e1ace0f4229dde160523b5..c918ab2e5fa41a41a539483b70464de5f0aba73c 100644 (file)
@@ -1,10 +1,10 @@
 #!/bin/sh
 #
-# "$Id: 5.6-lpr.sh 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: 5.6-lpr.sh 12065 2014-07-30 17:56:35Z msweet $"
 #
 #   Test the lpr command.
 #
-#   Copyright 2007-2012 by Apple Inc.
+#   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
@@ -55,6 +55,7 @@ echo ""
 echo "    lpr -P Test1 testfile.jpg"
 echo "    lpr -P Test2 testfile.jpg"
 i=0
+pids=""
 while test $i -lt $1; do
        j=1
        while test $j -le $2; do
@@ -63,12 +64,13 @@ while test $i -lt $1; do
        done
 
        $VALGRIND ../berkeley/lpr -P Test1 testfile.jpg 2>&1 &
+       pids="$pids $!"
        $VALGRIND ../berkeley/lpr -P Test2 testfile.jpg 2>&1 &
-       lprpid=$!
+       pids="$pids $!"
 
        i=`expr $i + 1`
 done
-wait $lppid
+wait $pids
 if test $? != 0; then
        echo "    FAILED"
        exit 1
@@ -80,5 +82,5 @@ echo ""
 ./waitjobs.sh
 
 #
-# End of "$Id: 5.6-lpr.sh 11396 2013-11-06 20:09:03Z msweet $".
+# End of "$Id: 5.6-lpr.sh 12065 2014-07-30 17:56:35Z msweet $".
 #
index 9dc6719f57a4d2bfd12e09c03595ff65f83fb67f..fd89569e293792d6ad95bf02011584a9e5dffbad 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# "$Id: 5.7-lprm.sh 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: 5.7-lprm.sh 11398 2013-11-06 20:11:11Z msweet $"
 #
 #   Test the lprm command.
 #
@@ -43,5 +43,5 @@ fi
 echo ""
 
 #
-# End of "$Id: 5.7-lprm.sh 11396 2013-11-06 20:09:03Z msweet $".
+# End of "$Id: 5.7-lprm.sh 11398 2013-11-06 20:11:11Z msweet $".
 #
index b60e50b24691a8ec11091907f186558b7df5fd46..321b75b83ae16283b9fc7dc002cb17fb1ffbde57 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# "$Id: 5.8-cancel.sh 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: 5.8-cancel.sh 11398 2013-11-06 20:11:11Z msweet $"
 #
 #   Test the cancel command.
 #
@@ -53,5 +53,5 @@ fi
 echo ""
 
 #
-# End of "$Id: 5.8-cancel.sh 11396 2013-11-06 20:09:03Z msweet $".
+# End of "$Id: 5.8-cancel.sh 11398 2013-11-06 20:11:11Z msweet $".
 #
index ab287c5bb44a4f8e276322bb28667ec1bad2eb56..416ac58259857837330167d759a5000eaa4d9b56 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# "$Id: 5.9-lpinfo.sh 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: 5.9-lpinfo.sh 11398 2013-11-06 20:11:11Z msweet $"
 #
 #   Test the lpinfo command.
 #
@@ -51,5 +51,5 @@ fi
 echo ""
 
 #
-# End of "$Id: 5.9-lpinfo.sh 11396 2013-11-06 20:09:03Z msweet $".
+# End of "$Id: 5.9-lpinfo.sh 11398 2013-11-06 20:11:11Z msweet $".
 #
index 9686a1f663ffc0aa948ba000c8203842e0d51e94..e7f0cfc5eed3186e4a83383e1a9413581dd14836 100644 (file)
@@ -1,11 +1,10 @@
 ippfind.o: ippfind.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/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.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/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
+  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
 ippserver.o: ippserver.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 ../config.h ../cups/string-private.h \
@@ -13,11 +12,11 @@ ippserver.o: ippserver.c ../cups/cups.h ../cups/file.h \
 ipptool.o: ipptool.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/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
-  ../cups/language.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
+  ../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
index 739bd8ed47207cc0587385e17d0dc1712838e8c0..1c7476945c62ce7de54ec8344d51e24ad30ef8b8 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: cancel-current-job.test 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: cancel-current-job.test 11398 2013-11-06 20:11:11Z msweet $"
 #
 #   Cancel the currently printing job.
 #
@@ -61,5 +61,5 @@
 
 
 #
-# End of "$Id: cancel-current-job.test 11396 2013-11-06 20:09:03Z msweet $".
+# End of "$Id: cancel-current-job.test 11398 2013-11-06 20:11:11Z msweet $".
 #
index 0c240ceddf5b6e3362af7163be9ad4007744dd30..eefb1e6f19f7990f43ce29f679480cae9d9650fb 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: create-printer-subscription.test 11897 2014-05-27 15:02:42Z msweet $"
+# "$Id: create-printer-subscription.test 11896 2014-05-27 15:00:06Z msweet $"
 #
 # Create a printer subscription.
 #
@@ -71,5 +71,5 @@
 
 
 #
-# End of "$Id: create-printer-subscription.test 11897 2014-05-27 15:02:42Z msweet $"
+# End of "$Id: create-printer-subscription.test 11896 2014-05-27 15:00:06Z msweet $"
 #
diff --git a/test/everywhere/bonjour-tests.sh b/test/everywhere/bonjour-tests.sh
new file mode 100755 (executable)
index 0000000..1a24852
--- /dev/null
@@ -0,0 +1 @@
+#!/bin/sh
diff --git a/test/everywhere/document-format-tests.sh b/test/everywhere/document-format-tests.sh
new file mode 100755 (executable)
index 0000000..1a24852
--- /dev/null
@@ -0,0 +1 @@
+#!/bin/sh
diff --git a/test/everywhere/document-format-tests.test b/test/everywhere/document-format-tests.test
new file mode 100644 (file)
index 0000000..5bcf6c0
--- /dev/null
@@ -0,0 +1,9689 @@
+#
+# "$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
new file mode 100755 (executable)
index 0000000..1a24852
--- /dev/null
@@ -0,0 +1 @@
+#!/bin/sh
diff --git a/test/everywhere/ipp-tests.test b/test/everywhere/ipp-tests.test
new file mode 100644 (file)
index 0000000..0fb6486
--- /dev/null
@@ -0,0 +1,12086 @@
+#
+# "$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 $".
+#
diff --git a/test/fax-job.test b/test/fax-job.test
new file mode 100644 (file)
index 0000000..dd35532
--- /dev/null
@@ -0,0 +1,59 @@
+# Fax a test page using Create-Job + Send-Document
+#
+# Usage:
+#
+#    ./ipptest -f filename ipp://... fax-job.test
+{
+       # The name of the test...
+       NAME "Create FaxOut Job for 555-1212 and an IPP destination"
+
+       # The operation to use
+       OPERATION Create-Job
+
+       # 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 job-attributes-tag
+       ATTR collection destination-uris {
+               MEMBER uri destination-uri tel:4055551212
+       },{
+               MEMBER uri destination-uri ipp://11.22.33.44/ipp/print
+               MEMBER enum print-quality 5
+               MEMBER keyword media na_letter_8.5x11in
+       }
+
+       # What statuses are OK?
+       STATUS successful-ok
+       STATUS successful-ok-ignored-or-substituted-attributes
+
+       # What attributes do we expect?
+       EXPECT job-id OF-TYPE integer WITH-VALUE >0
+       EXPECT job-uri OF-TYPE uri
+}
+{
+       # The name of the test...
+       NAME "Send FaxOut Document"
+
+       # The operation to use
+       OPERATION Send-Document
+
+       # 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 integer job-id $job-id
+       ATTR name requesting-user-name $user
+       ATTR mimetype document-format $filetype
+       ATTR boolean last-document true
+
+       FILE $filename
+
+       # What statuses are OK?
+       STATUS successful-ok
+       STATUS successful-ok-ignored-or-substituted-attributes
+}
index 938d900eabcdf0ab2623373ca0f9591dbed6d914..00d3754d2103d8184e5f383ec5304f8d163bcb35 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: get-completed-jobs.test 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: get-completed-jobs.test 11398 2013-11-06 20:11:11Z msweet $"
 #
 #   Get list of completed jobs.
 #
@@ -47,5 +47,5 @@
 
 
 #
-# End of "$Id: get-completed-jobs.test 11396 2013-11-06 20:09:03Z msweet $".
+# End of "$Id: get-completed-jobs.test 11398 2013-11-06 20:11:11Z msweet $".
 #
diff --git a/test/get-job-template-attributes.test b/test/get-job-template-attributes.test
new file mode 100644 (file)
index 0000000..0330160
--- /dev/null
@@ -0,0 +1,24 @@
+# Get printer Job Template attributes using get-printer-attributes
+{
+       # The name of the test...
+       NAME "Get printer Job Template attributes using Get-Printer-Attributes"
+
+       # The operation to use
+       OPERATION Get-Printer-Attributes
+
+       # 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 keyword requested-attributes job-template,media-col-database
+
+       # What statuses are OK?
+       STATUS successful-ok
+       STATUS successful-ok-ignored-or-substituted-attributes
+
+       # What attributes do we expect?
+       EXPECT copies-default
+       EXPECT copies-supported
+       EXPECT media-col-database
+}
index 68908cc9698fdfe724527b8d73accb9a1b2d019d..2b2c031e8cb60571b0ddc1c8d78f337e180560ac 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: get-jobs.test 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: get-jobs.test 11398 2013-11-06 20:11:11Z msweet $"
 #
 #   Get list of not-completed jobs.
 #
@@ -49,5 +49,5 @@
 
 
 #
-# End of "$Id: get-jobs.test 11396 2013-11-06 20:09:03Z msweet $".
+# End of "$Id: get-jobs.test 11398 2013-11-06 20:11:11Z msweet $".
 #
index 0f01b1f6ac13a9a7c57b13970e152af7f0b6ea50..874d214340510d537503c86613f217bdcc59f886 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: get-notifications.test 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: get-notifications.test 11398 2013-11-06 20:11:11Z msweet $"
 #
 #   Get subscription events.
 #
@@ -42,5 +42,5 @@
 
 
 #
-# End of "$Id: get-notifications.test 11396 2013-11-06 20:09:03Z msweet $"
+# End of "$Id: get-notifications.test 11398 2013-11-06 20:11:11Z msweet $"
 #
diff --git a/test/get-printer-description-attributes.test b/test/get-printer-description-attributes.test
new file mode 100644 (file)
index 0000000..b1d8138
--- /dev/null
@@ -0,0 +1,43 @@
+# Get Printer Description attributes using get-printer-attributes
+{
+       # The name of the test...
+       NAME "Get Printer Description attributes using Get-Printer-Attributes"
+
+       # The operation to use
+       OPERATION Get-Printer-Attributes
+
+       # 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 keyword requested-attributes printer-description
+
+       # What statuses are OK?
+       STATUS successful-ok
+       STATUS successful-ok-ignored-or-substituted-attributes
+
+       # What attributes do we expect?
+       EXPECT printer-name
+       EXPECT printer-uri-supported
+       EXPECT uri-security-supported
+       EXPECT uri-authentication-supported
+       EXPECT printer-state
+       EXPECT printer-state-reasons
+       EXPECT ipp-versions-supported
+       EXPECT operations-supported
+       EXPECT charset-configured
+       EXPECT charset-supported
+       EXPECT natural-language-configured
+       EXPECT generated-natural-language-supported
+       EXPECT document-format-default
+       EXPECT document-format-supported
+       EXPECT printer-is-accepting-jobs
+       EXPECT queued-job-count
+       EXPECT pdl-override-supported
+       EXPECT printer-up-time
+       EXPECT compression-supported
+       EXPECT !copies-default
+       EXPECT !copies-supported
+       EXPECT !media-col-database
+}
index 83d31766c30341d5c8f2c1c45e109ec0f4b7668f..7303b70ea4d02168a6ebeccbb7fae1275a8eadc2 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: ipp-1.1.test 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: ipp-1.1.test 11398 2013-11-06 20:11:11Z msweet $"
 #
 #   IPP/1.1 test suite.
 #
@@ -2346,5 +2346,5 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/"
 
 
 #
-# End of "$Id: ipp-1.1.test 11396 2013-11-06 20:09:03Z msweet $".
+# End of "$Id: ipp-1.1.test 11398 2013-11-06 20:11:11Z msweet $".
 #
index e0c2d32e5ebf4fd5c3a88dfe998b6a513c02a433..370ec4a1165ef21b3b858f5b10a4777cc0819d29 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: ipp-2.0.test 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: ipp-2.0.test 11398 2013-11-06 20:11:11Z msweet $"
 #
 #   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 11396 2013-11-06 20:09:03Z msweet $".
+# End of "$Id: ipp-2.0.test 11398 2013-11-06 20:11:11Z msweet $".
 #
index 15cd4c4f5a07103372443c9b49a6cb0527ad5675..ca483512157b1f2010c1240ce838df57b5969048 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: ipp-2.1.test 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: ipp-2.1.test 11398 2013-11-06 20:11:11Z msweet $"
 #
 #   IPP/2.1 test suite.
 #
@@ -92,5 +92,5 @@ INCLUDE "ipp-2.0.test"
 
 
 #
-# End of "$Id: ipp-2.1.test 11396 2013-11-06 20:09:03Z msweet $".
+# End of "$Id: ipp-2.1.test 11398 2013-11-06 20:11:11Z msweet $".
 #
index 954ad2353767aeaf922cc26459837ffaa2f2cf64..a6eb7a73bb73fa1753e2c786d0105b523c1a189e 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: ipp-2.2.test 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: ipp-2.2.test 11398 2013-11-06 20:11:11Z msweet $"
 #
 #   IPP/2.2 test suite.
 #
@@ -82,5 +82,5 @@ INCLUDE "ipp-2.1.test"
 
 
 #
-# End of "$Id: ipp-2.2.test 11396 2013-11-06 20:09:03Z msweet $".
+# End of "$Id: ipp-2.2.test 11398 2013-11-06 20:11:11Z msweet $".
 #
index 99aacb5d7809b4d825cec6388339c769b83437ee..5bcf6c0795776f9a60ab7caadb4bd8f2aa0883a2 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: ipp-everywhere.test 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: ipp-everywhere.test 11398 2013-11-06 20:11:11Z msweet $"
 #
 #   IPP Everywhere test suite.
 #
@@ -9685,5 +9685,5 @@ INCLUDE "ipp-2.0.test"
 
 
 #
-# End of "$Id: ipp-everywhere.test 11396 2013-11-06 20:09:03Z msweet $".
+# End of "$Id: ipp-everywhere.test 11398 2013-11-06 20:11:11Z msweet $".
 #
index b57ae889d12de6d964eec8c90f347f02cf7bc91e..517eacb43c292f22ab702e8671f689a17c8c910c 100644 (file)
@@ -1,42 +1,19 @@
 /*
- * "$Id: ippfind.c 11177 2013-07-24 12:16:37Z msweet $"
+ * "$Id: ippfind.c 11594 2014-02-14 20:09:01Z 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.
+ * 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.
  *
- *   Copyright 2008-2013 by Apple Inc.
+ * Copyright 2008-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/".
+ * These coded instructions, statements, and computer programs 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()                 - Browse for printers.
- *   browse_callback()      - Browse devices.
- *   browse_local_callback() - Browse local devices.
- *   browse_callback()      - Browse devices.
- *   client_callback()      - Avahi client callback function.
- *   compare_services()      - Compare two devices.
- *   dnssd_error_string()    - Return an error string for an error code.
- *   eval_expr()            - Evaluate the expressions against the specified
- *                            service.
- *   exec_program()         - Execute a program for a service.
- *   get_service()          - Create or update a device.
- *   get_time()             - Get the current time-of-day in seconds.
- *   list_service()         - List the contents of a service.
- *   new_expr()             - Create a new expression.
- *   poll_callback()        - Wait for input on the specified file
- *                            descriptors.
- *   resolve_callback()      - Process resolve data.
- *   set_service_uri()      - Set the URI of the service.
- *   show_usage()           - Show program usage.
- *   show_version()         - Show program version.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -782,7 +759,6 @@ main(int  argc,                             /* I - Number of command-line args */
                                  "ippfind");
                  show_usage();
                }
-                  show_usage();
 
                 if (!strcmp(argv[i], "1.1"))
                   ipp_version = 11;
@@ -948,7 +924,6 @@ main(int  argc,                             /* I - Number of command-line args */
                 _cupsLangPrintf(stderr, _("%s: Unknown option \"-%c\"."),
                                 "ippfind", *opt);
                 show_usage();
-                break;
           }
 
          if (temp)
@@ -1490,6 +1465,9 @@ browse_callback(
   * Only process "add" data...
   */
 
+  (void)sdRef;
+  (void)interfaceIndex;
+
   if (errorCode != kDNSServiceErr_NoError || !(flags & kDNSServiceFlagsAdd))
     return;
 
@@ -1523,6 +1501,9 @@ browse_local_callback(
   * Only process "add" data...
   */
 
+  (void)sdRef;
+  (void)interfaceIndex;
+
   if (errorCode != kDNSServiceErr_NoError || !(flags & kDNSServiceFlagsAdd))
     return;
 
@@ -1912,14 +1893,14 @@ exec_program(ippfind_srv_t *service,    /* I - Service */
     snprintf(txt[i], sizeof(txt[i]), "IPPFIND_TXT_%s=%s", service->txt[i].name,
              service->txt[i].value);
     for (ptr = txt[i] + 12; *ptr && *ptr != '='; ptr ++)
-      *ptr = _cups_toupper(*ptr);
+      *ptr = (char)_cups_toupper(*ptr);
   }
 
   for (i = 0, myenvc = 7 + service->num_txt; environ[i]; i ++)
     if (strncmp(environ[i], "IPPFIND_", 8))
       myenvc ++;
 
-  if ((myenvp = calloc(sizeof(char *), myenvc + 1)) == NULL)
+  if ((myenvp = calloc(sizeof(char *), (size_t)(myenvc + 1))) == NULL)
   {
     _cupsLangPuts(stderr, _("ippfind: Out of memory."));
     exit(IPPFIND_EXIT_MEMORY);
@@ -1944,7 +1925,7 @@ exec_program(ippfind_srv_t *service,      /* I - Service */
   * Allocate and copy command-line arguments...
   */
 
-  if ((myargv = calloc(sizeof(char *), num_args + 1)) == NULL)
+  if ((myargv = calloc(sizeof(char *), (size_t)(num_args + 1))) == NULL)
   {
     _cupsLangPuts(stderr, _("ippfind: Out of memory."));
     exit(IPPFIND_EXIT_MEMORY);
@@ -1980,24 +1961,24 @@ exec_program(ippfind_srv_t *service,    /* I - Service */
 
           *kptr = '\0';
           if (!keyword[0] || !strcmp(keyword, "service_uri"))
-           strlcpy(tptr, service->uri, sizeof(temp) - (tptr - temp));
+           strlcpy(tptr, service->uri, sizeof(temp) - (size_t)(tptr - temp));
          else if (!strcmp(keyword, "service_domain"))
-           strlcpy(tptr, service->domain, sizeof(temp) - (tptr - temp));
+           strlcpy(tptr, service->domain, sizeof(temp) - (size_t)(tptr - temp));
          else if (!strcmp(keyword, "service_hostname"))
-           strlcpy(tptr, service->host, sizeof(temp) - (tptr - temp));
+           strlcpy(tptr, service->host, sizeof(temp) - (size_t)(tptr - temp));
          else if (!strcmp(keyword, "service_name"))
-           strlcpy(tptr, service->name, sizeof(temp) - (tptr - temp));
+           strlcpy(tptr, service->name, sizeof(temp) - (size_t)(tptr - temp));
          else if (!strcmp(keyword, "service_path"))
-           strlcpy(tptr, service->resource, sizeof(temp) - (tptr - temp));
+           strlcpy(tptr, service->resource, sizeof(temp) - (size_t)(tptr - temp));
          else if (!strcmp(keyword, "service_port"))
-           strlcpy(tptr, port + 20, sizeof(temp) - (tptr - temp));
+           strlcpy(tptr, port + 20, sizeof(temp) - (size_t)(tptr - temp));
          else if (!strcmp(keyword, "service_scheme"))
-           strlcpy(tptr, scheme + 22, sizeof(temp) - (tptr - temp));
+           strlcpy(tptr, scheme + 22, sizeof(temp) - (size_t)(tptr - temp));
          else if (!strncmp(keyword, "txt_", 4))
          {
            if ((ptr = (char *)cupsGetOption(keyword + 4, service->num_txt,
                                             service->txt)) != NULL)
-             strlcpy(tptr, strdup(ptr), sizeof(temp) - (tptr - temp));
+             strlcpy(tptr, strdup(ptr), sizeof(temp) - (size_t)(tptr - temp));
            else
              *tptr = '\0';
          }
@@ -2279,7 +2260,7 @@ list_service(ippfind_srv_t *service)      /* I - Service */
 
     if ((attr = ippFindAttribute(response, "printer-state",
                                  IPP_TAG_ENUM)) != NULL)
-      pstate = ippGetInteger(attr, 0);
+      pstate = (ipp_pstate_t)ippGetInteger(attr, 0);
     else
       pstate = IPP_PSTATE_STOPPED;
 
@@ -2300,7 +2281,7 @@ list_service(ippfind_srv_t *service)      /* I - Service */
            i ++, ptr += strlen(ptr))
       {
         *ptr++ = ',';
-        strlcpy(ptr, ippGetString(attr, i, NULL), end - ptr + 1);
+        strlcpy(ptr, ippGetString(attr, i, NULL), (size_t)(end - ptr + 1));
       }
     }
     else
@@ -2385,11 +2366,7 @@ list_service(ippfind_srv_t *service)     /* I - Service */
     _cupsLangPrintf(stdout, "%s available", service->uri);
     httpAddrFreeList(addrlist);
 
-#ifdef WIN32
-    closesocket(sock);
-#else
-    close(sock);
-#endif /* WIN32 */
+    httpAddrClose(NULL, sock);
   }
   else
   {
@@ -2470,8 +2447,8 @@ new_expr(ippfind_op_t op,         /* I - Operation */
         break;
 
      temp->num_args = num_args;
-     temp->args     = malloc(num_args * sizeof(char *));
-     memcpy(temp->args, args, num_args * sizeof(char *));
+     temp->args     = malloc((size_t)num_args * sizeof(char *));
+     memcpy(temp->args, args, (size_t)num_args * sizeof(char *));
   }
 
   return (temp);
@@ -2540,7 +2517,12 @@ resolve_callback(
   * Only process "add" data...
   */
 
-  if (errorCode != kDNSServiceErr_NoError)
+  (void)sdRef;
+  (void)flags;
+  (void)interfaceIndex;
+  (void)fullName;
+
+   if (errorCode != kDNSServiceErr_NoError)
   {
     _cupsLangPrintf(stderr, _("ippfind: Unable to browse or resolve: %s"),
                    dnssd_error_string(errorCode));
@@ -2823,5 +2805,5 @@ show_version(void)
 
 
 /*
- * End of "$Id: ippfind.c 11177 2013-07-24 12:16:37Z msweet $".
+ * End of "$Id: ippfind.c 11594 2014-02-14 20:09:01Z msweet $".
  */
index 32a7eb1c88ff6be848060131d442bbda4f523909..8ee491fbfc012df42936a7847dfbe9f2dace4597 100644 (file)
@@ -1,75 +1,17 @@
 /*
- * "$Id: ippserver.c 11097 2013-07-04 15:54:36Z msweet $"
+ * "$Id: ippserver.c 11986 2014-07-02 15:52:01Z msweet $"
  *
- *   Sample IPP/2.0 server for CUPS.
+ * Sample IPP/2.0 server for CUPS.
  *
- *   Copyright 2010-2013 by Apple Inc.
+ * 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/".
+ * These coded instructions, statements, and computer programs 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 to the sample server.
- *   clean_jobs()                - Clean out old (completed) jobs.
- *   compare_jobs()              - Compare two jobs.
- *   copy_attributes()           - Copy attributes from one request to
- *                                 another.
- *   copy_job_attrs()            - Copy job attributes to the response.
- *   create_client()             - Accept a new network connection and create
- *                                 a client object.
- *   create_job()                - Create a new job object from a Print-Job or
- *                                 Create-Job request.
- *   create_listener()           - Create a listener socket.
- *   create_media_col()          - Create a media-col value.
- *   create_printer()            - Create, register, and listen for
- *                                 connections to a printer object.
- *   create_requested_array()    - Create an array for requested-attributes.
- *   debug_attributes()          - Print attributes in a request or response.
- *   delete_client()             - Close the socket and free all memory used
- *                                 by a client object.
- *   delete_job()                - Remove from the printer and free all memory
- *                                 used by a job object.
- *   delete_printer()            - Unregister, close listen sockets, and free
- *                                 all memory used by a printer object.
- *   dnssd_callback()            - Handle Bonjour registration events.
- *   find_job()                  - Find a job specified in a request.
- *   html_escape()               - Write a HTML-safe string.
- *   html_printf()               - Send formatted text to the client, quoting
- *                                 as needed.
- *   ipp_cancel_job()            - Cancel a job.
- *   ipp_create_job()            - Create a job object.
- *   ipp_get_job_attributes()    - Get the attributes for a job object.
- *   ipp_get_jobs()              - Get a list of job objects.
- *   ipp_get_printer_attributes() - Get the attributes for a printer object.
- *   ipp_print_job()             - Create a job object with an attached
- *                                 document.
- *   ipp_print_uri()             - Create a job object with a referenced
- *                                 document.
- *   ipp_send_document()         - Add an attached document to a job object
- *                                 created with Create-Job.
- *   ipp_send_uri()              - Add a referenced document to a job object
- *                                 created with Create-Job.
- *   ipp_validate_job()          - Validate job creation attributes.
- *   process_client()            - Process client requests on a thread.
- *   process_http()              - Process a HTTP request.
- *   process_ipp()               - Process an IPP request.
- *   process_job()               - Process a print job.
- *   register_printer()          - Register a printer object via Bonjour.
- *   respond_http()              - Send a HTTP response.
- *   respond_ipp()               - Send an IPP response.
- *   respond_unsupported()       - Respond with an unsupported attribute.
- *   run_printer()               - Run the printer service.
- *   usage()                     - Show program usage.
- *   valid_doc_attributes()      - Determine whether the document attributes
- *                                 are valid.
- *   valid_job_attributes()      - Determine whether the job attributes are
- *                                 valid.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -379,6 +321,9 @@ main(int  argc,                             /* I - Number of command-line args */
                *icon = "printer.png",  /* Icon file */
                *formats = "application/pdf,image/jpeg,image/pwg-raster";
                                        /* Supported formats */
+#ifdef HAVE_SSL
+  const char   *keypath = NULL;        /* Keychain path */
+#endif /* HAVE_SSL */
 #ifdef HAVE_DNSSD
   const char   *subtype = "_print";    /* Bonjour service subtype */
 #endif /* HAVE_DNSSD */
@@ -399,12 +344,22 @@ main(int  argc,                           /* I - Number of command-line args */
     if (argv[i][0] == '-')
     {
       for (opt = argv[i] + 1; *opt; opt ++)
+      {
         switch (*opt)
        {
          case '2' : /* -2 (enable 2-sided printing) */
              duplex = 1;
              break;
 
+#ifdef HAVE_SSL
+         case 'K' : /* -K keypath */
+             i ++;
+             if (i >= argc)
+               usage(1);
+             keypath = argv[i];
+             break;
+#endif /* HAVE_SSL */
+
          case 'M' : /* -M manufacturer */
              i ++;
              if (i >= argc)
@@ -440,7 +395,6 @@ main(int  argc,                             /* I - Number of command-line args */
 
           case 'h' : /* -h (show help) */
              usage(0);
-             break;
 
          case 'i' : /* -i icon.png */
              i ++;
@@ -505,8 +459,8 @@ main(int  argc,                             /* I - Number of command-line args */
           default : /* Unknown */
              fprintf(stderr, "Unknown option \"-%c\".\n", *opt);
              usage(1);
-             break;
        }
+      }
     }
     else if (!name)
     {
@@ -540,6 +494,10 @@ main(int  argc,                            /* I - Number of command-line args */
       fprintf(stderr, "Using spool directory \"%s\".\n", directory);
   }
 
+#ifdef HAVE_SSL
+  cupsSetServerCredentials(keypath, servername, 1);
+#endif /* HAVE_SSL */
+
  /*
   * Create the printer...
   */
@@ -675,57 +633,57 @@ copy_job_attributes(
     {
       case IPP_JSTATE_PENDING :
          ippAddString(client->response, IPP_TAG_JOB,
-                      IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST, "job-state-reasons",
+                      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_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                        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_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                        IPP_CONST_TAG(IPP_TAG_KEYWORD),
                         "job-state-reasons", NULL, "job-hold-until-specified");
           else
            ippAddString(client->response, IPP_TAG_JOB,
-                        IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                        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_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                        IPP_CONST_TAG(IPP_TAG_KEYWORD),
                         "job-state-reasons", NULL, "processing-to-stop-point");
          else
            ippAddString(client->response, IPP_TAG_JOB,
-                        IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                        IPP_CONST_TAG(IPP_TAG_KEYWORD),
                         "job-state-reasons", NULL, "job-printing");
          break;
 
       case IPP_JSTATE_STOPPED :
          ippAddString(client->response, IPP_TAG_JOB,
-                      IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST, "job-state-reasons",
+                      IPP_CONST_TAG(IPP_TAG_KEYWORD), "job-state-reasons",
                       NULL, "job-stopped");
          break;
 
       case IPP_JSTATE_CANCELED :
          ippAddString(client->response, IPP_TAG_JOB,
-                      IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST, "job-state-reasons",
+                      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_TAG_KEYWORD | IPP_TAG_CUPS_CONST, "job-state-reasons",
+                      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_TAG_KEYWORD | IPP_TAG_CUPS_CONST, "job-state-reasons",
+                      IPP_CONST_TAG(IPP_TAG_KEYWORD), "job-state-reasons",
                       NULL, "job-completed-successfully");
          break;
     }
@@ -734,12 +692,12 @@ copy_job_attributes(
   if (!ra || cupsArrayFind(ra, "time-at-completed"))
     ippAddInteger(client->response, IPP_TAG_JOB,
                   job->completed ? IPP_TAG_INTEGER : IPP_TAG_NOVALUE,
-                  "time-at-completed", job->completed);
+                  "time-at-completed", (int)job->completed);
 
   if (!ra || cupsArrayFind(ra, "time-at-processing"))
     ippAddInteger(client->response, IPP_TAG_JOB,
                   job->processing ? IPP_TAG_INTEGER : IPP_TAG_NOVALUE,
-                  "time-at-processing", job->processing);
+                  "time-at-processing", (int)job->processing);
 }
 
 
@@ -846,7 +804,7 @@ create_job(_ipp_client_t *client)   /* I - Client */
     ippSetName(job->attrs, &attr, "job-originating-user-name");
   else
     attr = ippAddString(job->attrs, IPP_TAG_JOB,
-                        IPP_TAG_NAME | IPP_TAG_CUPS_CONST,
+                        IPP_CONST_TAG(IPP_TAG_NAME),
                         "job-originating-user-name", NULL, "anonymous");
 
   if (attr)
@@ -1239,18 +1197,17 @@ create_printer(const char *servername,  /* I - Server hostname (NULL for default)
   for (i = 0; i < num_formats; i ++)
   {
     if (!_cups_strcasecmp(formats[i], "application/pdf"))
-      snprintf(ptr, sizeof(device_id) - (ptr - device_id), "%sPDF", prefix);
+      snprintf(ptr, sizeof(device_id) - (size_t)(ptr - device_id), "%sPDF", prefix);
     else if (!_cups_strcasecmp(formats[i], "application/postscript"))
-      snprintf(ptr, sizeof(device_id) - (ptr - device_id), "%sPS", prefix);
+      snprintf(ptr, sizeof(device_id) - (size_t)(ptr - device_id), "%sPS", prefix);
     else if (!_cups_strcasecmp(formats[i], "application/vnd.hp-PCL"))
-      snprintf(ptr, sizeof(device_id) - (ptr - device_id), "%sPCL", prefix);
+      snprintf(ptr, sizeof(device_id) - (size_t)(ptr - device_id), "%sPCL", prefix);
     else if (!_cups_strcasecmp(formats[i], "image/jpeg"))
-      snprintf(ptr, sizeof(device_id) - (ptr - device_id), "%sJPEG", prefix);
+      snprintf(ptr, sizeof(device_id) - (size_t)(ptr - device_id), "%sJPEG", prefix);
     else if (!_cups_strcasecmp(formats[i], "image/png"))
-      snprintf(ptr, sizeof(device_id) - (ptr - device_id), "%sPNG", prefix);
+      snprintf(ptr, sizeof(device_id) - (size_t)(ptr - device_id), "%sPNG", prefix);
     else if (_cups_strcasecmp(formats[i], "application/octet-stream"))
-      snprintf(ptr, sizeof(device_id) - (ptr - device_id), "%s%s", prefix,
-               formats[i]);
+      snprintf(ptr, sizeof(device_id) - (size_t)(ptr - device_id), "%s%s", prefix, formats[i]);
 
     ptr += strlen(ptr);
     prefix = ",";
@@ -1294,12 +1251,12 @@ create_printer(const char *servername,  /* I - Server hostname (NULL for default)
 
   /* charset-configured */
   ippAddString(printer->attrs, IPP_TAG_PRINTER,
-               IPP_TAG_CHARSET | IPP_TAG_CUPS_CONST,
+               IPP_CONST_TAG(IPP_TAG_CHARSET),
                "charset-configured", NULL, "utf-8");
 
   /* charset-supported */
   ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
-                IPP_TAG_CHARSET | IPP_TAG_CUPS_CONST,
+                IPP_CONST_TAG(IPP_TAG_CHARSET),
                 "charset-supported", sizeof(charsets) / sizeof(charsets[0]),
                NULL, charsets);
 
@@ -1309,7 +1266,7 @@ create_printer(const char *servername,    /* I - Server hostname (NULL for default)
 
   /* compression-supported */
   ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
-                IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                IPP_CONST_TAG(IPP_TAG_KEYWORD),
                "compression-supported",
                (int)(sizeof(compressions) / sizeof(compressions[0])), NULL,
                compressions);
@@ -1340,12 +1297,12 @@ create_printer(const char *servername,  /* I - Server hostname (NULL for default)
 
   /* generated-natural-language-supported */
   ippAddString(printer->attrs, IPP_TAG_PRINTER,
-               IPP_TAG_LANGUAGE | IPP_TAG_CUPS_CONST,
+               IPP_CONST_TAG(IPP_TAG_LANGUAGE),
                "generated-natural-language-supported", NULL, "en");
 
   /* ipp-versions-supported */
   ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
-                IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                IPP_CONST_TAG(IPP_TAG_KEYWORD),
                 "ipp-versions-supported",
                sizeof(versions) / sizeof(versions[0]), NULL, versions);
 
@@ -1358,7 +1315,7 @@ create_printer(const char *servername,    /* I - Server hostname (NULL for default)
 
   /* job-creation-attributes-supported */
   ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
-                IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                IPP_CONST_TAG(IPP_TAG_KEYWORD),
                 "job-creation-attributes-supported",
                sizeof(job_creation) / sizeof(job_creation[0]),
                NULL, job_creation);
@@ -1381,12 +1338,12 @@ create_printer(const char *servername,  /* I - Server hostname (NULL for default)
 
   /* job-sheets-default */
   ippAddString(printer->attrs, IPP_TAG_PRINTER,
-               IPP_TAG_NAME | IPP_TAG_CUPS_CONST,
+               IPP_CONST_TAG(IPP_TAG_NAME),
                "job-sheets-default", NULL, "none");
 
   /* job-sheets-supported */
   ippAddString(printer->attrs, IPP_TAG_PRINTER,
-               IPP_TAG_NAME | IPP_TAG_CUPS_CONST,
+               IPP_CONST_TAG(IPP_TAG_NAME),
                "job-sheets-supported", NULL, "none");
 
   /* media-bottom-margin-supported */
@@ -1472,7 +1429,7 @@ create_printer(const char *servername,    /* I - Server hostname (NULL for default)
 
   /* media-col-supported */
   ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
-                IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                IPP_CONST_TAG(IPP_TAG_KEYWORD),
                 "media-col-supported",
                (int)(sizeof(media_col_supported) /
                      sizeof(media_col_supported[0])), NULL,
@@ -1480,7 +1437,7 @@ create_printer(const char *servername,    /* I - Server hostname (NULL for default)
 
   /* media-default */
   ippAddString(printer->attrs, IPP_TAG_PRINTER,
-               IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+               IPP_CONST_TAG(IPP_TAG_KEYWORD),
                "media-default", NULL, media_supported[0]);
 
   /* media-left-margin-supported */
@@ -1499,7 +1456,7 @@ create_printer(const char *servername,    /* I - Server hostname (NULL for default)
 
   /* media-supported */
   ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
-                IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                IPP_CONST_TAG(IPP_TAG_KEYWORD),
                 "media-supported",
                (int)(sizeof(media_supported) / sizeof(media_supported[0])),
                NULL, media_supported);
@@ -1526,7 +1483,7 @@ create_printer(const char *servername,    /* I - Server hostname (NULL for default)
 
   /* media-type-supported */
   ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
-                IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                IPP_CONST_TAG(IPP_TAG_KEYWORD),
                 "media-type-supported",
                (int)(sizeof(media_type_supported) /
                      sizeof(media_type_supported[0])),
@@ -1534,7 +1491,7 @@ create_printer(const char *servername,    /* I - Server hostname (NULL for default)
 
   /* multiple-document-handling-supported */
   ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
-                IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                IPP_CONST_TAG(IPP_TAG_KEYWORD),
                 "multiple-document-handling-supported",
                 sizeof(multiple_document_handling) /
                    sizeof(multiple_document_handling[0]), NULL,
@@ -1546,7 +1503,7 @@ create_printer(const char *servername,    /* I - Server hostname (NULL for default)
 
   /* natural-language-configured */
   ippAddString(printer->attrs, IPP_TAG_PRINTER,
-               IPP_TAG_LANGUAGE | IPP_TAG_CUPS_CONST,
+               IPP_CONST_TAG(IPP_TAG_LANGUAGE),
                "natural-language-configured", NULL, "en");
 
   /* number-up-default */
@@ -1571,12 +1528,12 @@ create_printer(const char *servername,  /* I - Server hostname (NULL for default)
 
   /* output-bin-default */
   ippAddString(printer->attrs, IPP_TAG_PRINTER,
-               IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+               IPP_CONST_TAG(IPP_TAG_KEYWORD),
                "output-bin-default", NULL, "face-down");
 
   /* output-bin-supported */
   ippAddString(printer->attrs, IPP_TAG_PRINTER,
-               IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+               IPP_CONST_TAG(IPP_TAG_KEYWORD),
                "output-bin-supported", NULL, "face-down");
 
   /* pages-per-minute */
@@ -1590,7 +1547,7 @@ create_printer(const char *servername,    /* I - Server hostname (NULL for default)
 
   /* pdl-override-supported */
   ippAddString(printer->attrs, IPP_TAG_PRINTER,
-               IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+               IPP_CONST_TAG(IPP_TAG_KEYWORD),
                "pdl-override-supported", NULL, "attempted");
 
   /* print-quality-default */
@@ -1687,7 +1644,7 @@ create_printer(const char *servername,    /* I - Server hostname (NULL for default)
 
   /* reference-uri-scheme-supported */
   ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
-                IPP_TAG_URISCHEME | IPP_TAG_CUPS_CONST,
+                IPP_CONST_TAG(IPP_TAG_URISCHEME),
                 "reference-uri-schemes-supported",
                 (int)(sizeof(reference_uri_schemes_supported) /
                       sizeof(reference_uri_schemes_supported[0])),
@@ -1695,27 +1652,27 @@ create_printer(const char *servername,  /* I - Server hostname (NULL for default)
 
   /* sides-default */
   ippAddString(printer->attrs, IPP_TAG_PRINTER,
-               IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+               IPP_CONST_TAG(IPP_TAG_KEYWORD),
                "sides-default", NULL, "one-sided");
 
   /* sides-supported */
   ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
-                IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                IPP_CONST_TAG(IPP_TAG_KEYWORD),
                 "sides-supported", duplex ? 3 : 1, NULL, sides_supported);
 
   /* uri-authentication-supported */
   ippAddString(printer->attrs, IPP_TAG_PRINTER,
-               IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+               IPP_CONST_TAG(IPP_TAG_KEYWORD),
                "uri-authentication-supported", NULL, "none");
 
   /* uri-security-supported */
   ippAddString(printer->attrs, IPP_TAG_PRINTER,
-               IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+               IPP_CONST_TAG(IPP_TAG_KEYWORD),
                "uri-security-supported", NULL, "none");
 
   /* which-jobs-supported */
   ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
-                IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                IPP_CONST_TAG(IPP_TAG_KEYWORD),
                 "which-jobs-supported",
                 sizeof(which_jobs) / sizeof(which_jobs[0]), NULL, which_jobs);
 
@@ -1928,6 +1885,10 @@ dnssd_callback(
     const char          *domain,       /* I - Domain for service */
     _ipp_printer_t      *printer)      /* I - Printer */
 {
+  (void)sdRef;
+  (void)flags;
+  (void)domain;
+
   if (errorCode)
   {
     fprintf(stderr, "DNSServiceRegister for %s failed with error %d.\n",
@@ -2003,7 +1964,7 @@ html_escape(_ipp_client_t *client,        /* I - Client */
     if (*s == '&' || *s == '<')
     {
       if (s > start)
-        httpWrite2(client->http, start, s - start);
+        httpWrite2(client->http, start, (size_t)(s - start));
 
       if (*s == '&')
         httpWrite2(client->http, "&amp;", 5);
@@ -2017,7 +1978,7 @@ html_escape(_ipp_client_t *client,        /* I - Client */
   }
 
   if (s > start)
-    httpWrite2(client->http, start, s - start);
+    httpWrite2(client->http, start, (size_t)(s - start));
 }
 
 
@@ -2054,7 +2015,7 @@ html_printf(_ipp_client_t *client,        /* I - Client */
     if (*format == '%')
     {
       if (format > start)
-        httpWrite2(client->http, start, format - start);
+        httpWrite2(client->http, start, (size_t)(format - start));
 
       tptr    = tformat;
       *tptr++ = *format++;
@@ -2077,7 +2038,7 @@ html_printf(_ipp_client_t *client,        /* I - Client */
        format ++;
        width = va_arg(ap, int);
 
-       snprintf(tptr, sizeof(tformat) - (tptr - tformat), "%d", width);
+       snprintf(tptr, sizeof(tformat) - (size_t)(tptr - tformat), "%d", width);
        tptr += strlen(tptr);
       }
       else
@@ -2109,7 +2070,7 @@ html_printf(_ipp_client_t *client,        /* I - Client */
          format ++;
          prec = va_arg(ap, int);
 
-         snprintf(tptr, sizeof(tformat) - (tptr - tformat), "%d", prec);
+         snprintf(tptr, sizeof(tformat) - (size_t)(tptr - tformat), "%d", prec);
          tptr += strlen(tptr);
        }
        else
@@ -2169,7 +2130,7 @@ html_printf(_ipp_client_t *client,        /* I - Client */
        case 'e' :
        case 'f' :
        case 'g' :
-           if ((width + 2) > sizeof(temp))
+           if ((size_t)(width + 2) > sizeof(temp))
              break;
 
            sprintf(temp, tformat, va_arg(ap, double));
@@ -2185,7 +2146,7 @@ html_printf(_ipp_client_t *client,        /* I - Client */
        case 'o' :
        case 'u' :
        case 'x' :
-           if ((width + 2) > sizeof(temp))
+           if ((size_t)(width + 2) > sizeof(temp))
              break;
 
 #  ifdef HAVE_LONG_LONG
@@ -2202,7 +2163,7 @@ html_printf(_ipp_client_t *client,        /* I - Client */
            break;
 
        case 'p' : /* Pointer value */
-           if ((width + 2) > sizeof(temp))
+           if ((size_t)(width + 2) > sizeof(temp))
              break;
 
            sprintf(temp, tformat, va_arg(ap, void *));
@@ -2213,7 +2174,7 @@ html_printf(_ipp_client_t *client,        /* I - Client */
         case 'c' : /* Character or character array */
             if (width <= 1)
             {
-              temp[0] = va_arg(ap, int);
+              temp[0] = (char)va_arg(ap, int);
               temp[1] = '\0';
               html_escape(client, temp, 1);
             }
@@ -2234,7 +2195,7 @@ html_printf(_ipp_client_t *client,        /* I - Client */
   }
 
   if (format > start)
-    httpWrite2(client->http, start, format - start);
+    httpWrite2(client->http, start, (size_t)(format - start));
 
   va_end(ap);
 }
@@ -2606,7 +2567,7 @@ ipp_get_printer_attributes(
   {
     if (printer->state_reasons == _IPP_PSTATE_NONE)
       ippAddString(client->response, IPP_TAG_PRINTER,
-                   IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                   IPP_CONST_TAG(IPP_TAG_KEYWORD),
                    "printer-state-reasons", NULL, "none");
     else
     {
@@ -2647,7 +2608,7 @@ ipp_get_printer_attributes(
        reasons[num_reasons ++] = "toner-low-report";
 
       ippAddStrings(client->response, IPP_TAG_PRINTER,
-                    IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
+                    IPP_CONST_TAG(IPP_TAG_KEYWORD),
                     "printer-state-reasons", num_reasons, NULL, reasons);
     }
   }
@@ -2736,6 +2697,9 @@ ipp_print_job(_ipp_client_t *client)      /* I - Client */
     snprintf(filename, sizeof(filename), "%s/%d.prn",
              client->printer->directory, job->id);
 
+  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;
@@ -2747,7 +2711,7 @@ ipp_print_job(_ipp_client_t *client)      /* I - Client */
 
   while ((bytes = httpRead2(client->http, buffer, sizeof(buffer))) > 0)
   {
-    if (write(job->fd, buffer, bytes) < bytes)
+    if (write(job->fd, buffer, (size_t)bytes) < bytes)
     {
       int error = errno;               /* Write error */
 
@@ -2991,7 +2955,7 @@ ipp_print_uri(_ipp_client_t *client)      /* I - Client */
       if ((bytes = read(infile, buffer, sizeof(buffer))) < 0 &&
           (errno == EAGAIN || errno == EINTR))
         bytes = 1;
-      else if (bytes > 0 && write(job->fd, buffer, bytes) < bytes)
+      else if (bytes > 0 && write(job->fd, buffer, (size_t)bytes) < bytes)
       {
        int error = errno;              /* Write error */
 
@@ -3072,7 +3036,7 @@ ipp_print_uri(_ipp_client_t *client)      /* I - Client */
 
     while ((bytes = httpRead2(http, buffer, sizeof(buffer))) > 0)
     {
-      if (write(job->fd, buffer, bytes) < bytes)
+      if (write(job->fd, buffer, (size_t)bytes) < bytes)
       {
        int error = errno;              /* Write error */
 
@@ -3223,8 +3187,7 @@ ipp_send_document(_ipp_client_t *client)/* I - Client */
 
   _cupsRWLockWrite(&(client->printer->rwlock));
 
-  if ((attr = ippFindAttribute(job->attrs, "document-format",
-                               IPP_TAG_MIMETYPE)) != NULL)
+  if ((attr = ippFindAttribute(client->request, "document-format", IPP_TAG_MIMETYPE)) != NULL)
     job->format = ippGetString(attr, 0, NULL);
   else
     job->format = "application/octet-stream";
@@ -3249,6 +3212,9 @@ ipp_send_document(_ipp_client_t *client)/* I - Client */
     snprintf(filename, sizeof(filename), "%s/%d.prn",
              client->printer->directory, job->id);
 
+  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));
@@ -3264,7 +3230,7 @@ ipp_send_document(_ipp_client_t *client)/* I - Client */
 
   while ((bytes = httpRead2(client->http, buffer, sizeof(buffer))) > 0)
   {
-    if (write(job->fd, buffer, bytes) < bytes)
+    if (write(job->fd, buffer, (size_t)bytes) < bytes)
     {
       int error = errno;               /* Write error */
 
@@ -3566,7 +3532,7 @@ ipp_send_uri(_ipp_client_t *client)       /* I - Client */
       if ((bytes = read(infile, buffer, sizeof(buffer))) < 0 &&
           (errno == EAGAIN || errno == EINTR))
         bytes = 1;
-      else if (bytes > 0 && write(job->fd, buffer, bytes) < bytes)
+      else if (bytes > 0 && write(job->fd, buffer, (size_t)bytes) < bytes)
       {
        int error = errno;              /* Write error */
 
@@ -3647,7 +3613,7 @@ ipp_send_uri(_ipp_client_t *client)       /* I - Client */
 
     while ((bytes = httpRead2(http, buffer, sizeof(buffer))) > 0)
     {
-      if (write(job->fd, buffer, bytes) < bytes)
+      if (write(job->fd, buffer, (size_t)bytes) < bytes)
       {
        int error = errno;              /* Write error */
 
@@ -3746,9 +3712,39 @@ 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 Negotiating TLS session.\n", client->hostname);
+
+       if (httpEncryption(client->http, HTTP_ENCRYPTION_ALWAYS))
+       {
+         fprintf(stderr, "%s Unable to encrypt connection: %s\n", client->hostname, cupsLastErrorString());
+         break;
+        }
+      }
+
+      first_time = 0;
+    }
+#endif /* HAVE_SSL */
+
     if (!process_http(client))
       break;
+  }
 
  /*
   * Close the conection to the client and return...
@@ -3952,7 +3948,6 @@ process_http(_ipp_client_t *client)       /* I - Client connection */
          return (respond_http(client, HTTP_STATUS_OK, NULL, "text/html", 0));
        else
          return (respond_http(client, HTTP_STATUS_NOT_FOUND, NULL, NULL, 0));
-       break;
 
     case HTTP_STATE_GET :
         if (!strcmp(client->uri, "/icon.png"))
@@ -3972,14 +3967,14 @@ process_http(_ipp_client_t *client)     /* I - Client connection */
              (fd = open(client->printer->icon, O_RDONLY)) >= 0)
          {
            if (!respond_http(client, HTTP_STATUS_OK, NULL, "image/png",
-                             fileinfo.st_size))
+                             (size_t)fileinfo.st_size))
            {
              close(fd);
              return (0);
            }
 
            while ((bytes = read(fd, buffer, sizeof(buffer))) > 0)
-             httpWrite2(client->http, buffer, bytes);
+             httpWrite2(client->http, buffer, (size_t)bytes);
 
            httpFlushWrite(client->http);
 
@@ -4501,7 +4496,7 @@ register_printer(
     return (0);
   }
 
-#  if 0 /* ifdef HAVE_SSL */
+#  ifdef HAVE_SSL
  /*
   * Then register the _ipps._tcp (IPP) service type with the real port number to
   * advertise our IPP printer...
@@ -4762,7 +4757,7 @@ run_printer(_ipp_printer_t *printer)      /* I - Printer */
     else
       timeout = -1;
 
-    if (poll(polldata, num_fds, timeout) < 0 && errno != EINTR)
+    if (poll(polldata, (nfds_t)num_fds, timeout) < 0 && errno != EINTR)
     {
       perror("poll() failed");
       break;
@@ -5212,5 +5207,5 @@ valid_job_attributes(
 
 
 /*
- * End of "$Id: ippserver.c 11097 2013-07-04 15:54:36Z msweet $".
+ * End of "$Id: ippserver.c 11986 2014-07-02 15:52:01Z msweet $".
  */
index 7d0455101f69e5c524d7fda92cfc559b07305a58..6e91d83d24b73d594b3b555701bce545df1640a2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: ipptool.c 11707 2014-03-19 18:38:23Z msweet $"
+ * "$Id: ipptool.c 12031 2014-07-15 19:57:59Z msweet $"
  *
  * ipptool command for CUPS.
  *
 #include <regex.h>
 #include <sys/stat.h>
 #ifdef WIN32
-#  define R_OK 0
+#  include <windows.h>
+#  ifndef R_OK
+#    define R_OK 0
+#  endif /* !R_OK */
 #else
 #  include <signal.h>
+#  include <termios.h>
 #endif /* WIN32 */
 #ifndef O_BINARY
 #  define O_BINARY 0
@@ -123,11 +127,11 @@ typedef struct _cups_vars_s               /**** Set of variables ****/
  * Globals...
  */
 
-_cups_transfer_t Transfer = _CUPS_TRANSFER_AUTO;
+static _cups_transfer_t Transfer = _CUPS_TRANSFER_AUTO;
                                        /* How to transfer requests */
-_cups_output_t Output = _CUPS_OUTPUT_LIST;
+static _cups_output_t  Output = _CUPS_OUTPUT_LIST;
                                        /* Output mode */
-int            Cancel = 0,             /* Cancel test? */
+static int     Cancel = 0,             /* Cancel test? */
                IgnoreErrors = 0,       /* Ignore errors? */
                StopAfterIncludeError = 0,
                                        /* Stop after include errors? */
@@ -141,21 +145,6 @@ int                Cancel = 0,             /* Cancel test? */
 static char    *Username = NULL,       /* Username from URI */
                *Password = NULL;       /* Password from URI */
 static int     PasswordTries = 0;      /* Number of tries with password */
-const char * const URIStatusStrings[] =        /* URI status strings */
-{
-  "URI too large",
-  "Bad arguments to function",
-  "Bad resource in URI",
-  "Bad port number in URI",
-  "Bad hostname/address in URI",
-  "Bad username in URI",
-  "Bad scheme in URI",
-  "Bad/empty URI",
-  "OK",
-  "Missing scheme in URI",
-  "Unknown scheme in URI",
-  "Missing resource in URI"
-};
 
 
 /*
@@ -165,11 +154,11 @@ const char * const URIStatusStrings[] =   /* URI status strings */
 static void    add_stringf(cups_array_t *a, const char *s, ...)
                __attribute__ ((__format__ (__printf__, 2, 3)));
 static int     compare_vars(_cups_var_t *a, _cups_var_t *b);
-static int     do_tests(_cups_vars_t *vars, const char *testfile);
+static int     do_tests(FILE *outfile, _cups_vars_t *vars, const char *testfile);
 static void    expand_variables(_cups_vars_t *vars, char *dst, const char *src,
                                 size_t dstsize) __attribute__((nonnull(1,2,3)));
 static int      expect_matches(_cups_expect_t *expect, ipp_tag_t value_tag);
-static ipp_t   *get_collection(_cups_vars_t *vars, FILE *fp, int *linenum);
+static ipp_t   *get_collection(FILE *outfile, _cups_vars_t *vars, FILE *fp, int *linenum);
 static char    *get_filename(const char *testfile, char *dst, const char *src,
                              size_t dstsize);
 static char    *get_string(ipp_attribute_t *attr, int element, int flags,
@@ -179,26 +168,25 @@ static char       *get_token(FILE *fp, char *buf, int buflen,
 static char    *get_variable(_cups_vars_t *vars, const char *name);
 static char    *iso_date(ipp_uchar_t *date);
 static const char *password_cb(const char *prompt);
-static void    print_attr(ipp_attribute_t *attr, ipp_tag_t *group);
-static void    print_col(ipp_t *col);
-static void    print_csv(ipp_attribute_t *attr, int num_displayed,
+static void    pause_message(const char *message);
+static void    print_attr(FILE *outfile, int format, ipp_attribute_t *attr, ipp_tag_t *group);
+static void    print_csv(FILE *outfile, ipp_attribute_t *attr, int num_displayed,
                          char **displayed, size_t *widths);
-static void    print_fatal_error(const char *s, ...)
-               __attribute__ ((__format__ (__printf__, 1, 2)));
-static void    print_line(ipp_attribute_t *attr, int num_displayed,
+static void    print_fatal_error(FILE *outfile, const char *s, ...)
+               __attribute__ ((__format__ (__printf__, 2, 3)));
+static void    print_line(FILE *outfile, ipp_attribute_t *attr, int num_displayed,
                           char **displayed, size_t *widths);
-static void    print_xml_header(void);
-static void    print_xml_string(const char *element, const char *s);
-static void    print_xml_trailer(int success, const char *message);
-static void    set_variable(_cups_vars_t *vars, const char *name,
-                            const char *value);
+static void    print_xml_header(FILE *outfile);
+static void    print_xml_string(FILE *outfile, const char *element, const char *s);
+static void    print_xml_trailer(FILE *outfile, int success, const char *message);
+static void    set_variable(FILE *outfile, _cups_vars_t *vars, const char *name, const char *value);
 #ifndef WIN32
 static void    sigterm_handler(int sig);
 #endif /* WIN32 */
 static int     timeout_cb(http_t *http, void *user_data);
 static void    usage(void) __attribute__((noreturn));
-static int     validate_attr(cups_array_t *errors, ipp_attribute_t *attr);
-static int      with_value(cups_array_t *errors, char *value, int flags,
+static int     validate_attr(FILE *outfile, cups_array_t *errors, ipp_attribute_t *attr);
+static int      with_value(FILE *outfile, cups_array_t *errors, char *value, int flags,
                           ipp_attribute_t *attr, char *matchbuf,
                           size_t matchlen);
 
@@ -213,6 +201,8 @@ main(int  argc,                             /* I - Number of command-line args */
 {
   int                  i;              /* Looping var */
   int                  status;         /* Status of tests... */
+  FILE                 *outfile = stdout;
+                                       /* Output file */
   char                 *opt,           /* Current option */
                        name[1024],     /* Name/value buffer */
                        *value,         /* Pointer to value */
@@ -311,6 +301,33 @@ main(int  argc,                            /* I - Number of command-line args */
               Transfer = _CUPS_TRANSFER_LENGTH;
               break;
 
+          case 'P' : /* Output to plist file */
+             i ++;
+
+             if (i >= argc)
+             {
+               _cupsLangPrintf(stderr, _("%s: Missing filename for \"-P\"."), "ipptool");
+               usage();
+              }
+
+              if (outfile != stdout)
+                usage();
+
+              if ((outfile = fopen(argv[i], "w")) == NULL)
+              {
+                _cupsLangPrintf(stderr, _("%s: Unable to open \"%s\": %s"), "ipptool", argv[i], strerror(errno));
+                exit(1);
+              }
+
+             Output = _CUPS_OUTPUT_PLIST;
+
+              if (interval || repeat)
+             {
+               _cupsLangPuts(stderr, _("ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"."));
+               usage();
+             }
+              break;
+
          case 'S' : /* Encrypt with SSL */
 #ifdef HAVE_SSL
              vars.encryption = HTTP_ENCRYPT_ALWAYS;
@@ -369,8 +386,7 @@ main(int  argc,                             /* I - Number of command-line args */
 
               if (interval || repeat)
              {
-               _cupsLangPuts(stderr, _("ipptool: \"-i\" and \"-n\" are "
-                                       "incompatible with -X\"."));
+               _cupsLangPuts(stderr, _("ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"."));
                usage();
              }
              break;
@@ -395,7 +411,7 @@ main(int  argc,                             /* I - Number of command-line args */
              else
                value = name + strlen(name);
 
-             set_variable(&vars, name, value);
+             set_variable(outfile, &vars, name, value);
              break;
 
           case 'f' : /* Set the default test filename */
@@ -454,36 +470,43 @@ main(int  argc,                           /* I - Number of command-line args */
                 */
 
                 if (!_cups_strcasecmp(ext, ".gif"))
-                  set_variable(&vars, "filetype", "image/gif");
+                  set_variable(outfile, &vars, "filetype", "image/gif");
                 else if (!_cups_strcasecmp(ext, ".htm") ||
                          !_cups_strcasecmp(ext, ".htm.gz") ||
                          !_cups_strcasecmp(ext, ".html") ||
                          !_cups_strcasecmp(ext, ".html.gz"))
-                  set_variable(&vars, "filetype", "text/html");
-                else if (!_cups_strcasecmp(ext, ".jpg"))
-                  set_variable(&vars, "filetype", "image/jpeg");
+                  set_variable(outfile, &vars, "filetype", "text/html");
+                else if (!_cups_strcasecmp(ext, ".jpg") ||
+                         !_cups_strcasecmp(ext, ".jpeg"))
+                  set_variable(outfile, &vars, "filetype", "image/jpeg");
                 else if (!_cups_strcasecmp(ext, ".pcl") ||
                          !_cups_strcasecmp(ext, ".pcl.gz"))
-                  set_variable(&vars, "filetype", "application/vnd.hp-PCL");
+                  set_variable(outfile, &vars, "filetype", "application/vnd.hp-PCL");
                 else if (!_cups_strcasecmp(ext, ".pdf"))
-                  set_variable(&vars, "filetype", "application/pdf");
+                  set_variable(outfile, &vars, "filetype", "application/pdf");
                 else if (!_cups_strcasecmp(ext, ".png"))
-                  set_variable(&vars, "filetype", "image/png");
+                  set_variable(outfile, &vars, "filetype", "image/png");
                 else if (!_cups_strcasecmp(ext, ".ps") ||
                          !_cups_strcasecmp(ext, ".ps.gz"))
-                  set_variable(&vars, "filetype", "application/postscript");
+                  set_variable(outfile, &vars, "filetype", "application/postscript");
                 else if (!_cups_strcasecmp(ext, ".pwg") ||
                          !_cups_strcasecmp(ext, ".pwg.gz") ||
                          !_cups_strcasecmp(ext, ".ras") ||
                          !_cups_strcasecmp(ext, ".ras.gz"))
-                  set_variable(&vars, "filetype", "image/pwg-raster");
+                  set_variable(outfile, &vars, "filetype", "image/pwg-raster");
+                else if (!_cups_strcasecmp(ext, ".tif") ||
+                         !_cups_strcasecmp(ext, ".tiff"))
+                  set_variable(outfile, &vars, "filetype", "image/tiff");
                 else if (!_cups_strcasecmp(ext, ".txt") ||
                          !_cups_strcasecmp(ext, ".txt.gz"))
-                  set_variable(&vars, "filetype", "text/plain");
+                  set_variable(outfile, &vars, "filetype", "text/plain");
+                else if (!_cups_strcasecmp(ext, ".urf") ||
+                         !_cups_strcasecmp(ext, ".urf.gz"))
+                  set_variable(outfile, &vars, "filetype", "image/urf");
                 else if (!_cups_strcasecmp(ext, ".xps"))
-                  set_variable(&vars, "filetype", "application/openxps");
+                  set_variable(outfile, &vars, "filetype", "application/openxps");
                 else
-                 set_variable(&vars, "filetype", "application/octet-stream");
+                 set_variable(outfile, &vars, "filetype", "application/octet-stream");
               }
               else
               {
@@ -491,7 +514,7 @@ main(int  argc,                             /* I - Number of command-line args */
                 * Use the "auto-type" MIME media type...
                 */
 
-               set_variable(&vars, "filetype", "application/octet-stream");
+               set_variable(outfile, &vars, "filetype", "application/octet-stream");
               }
              break;
 
@@ -518,8 +541,7 @@ main(int  argc,                             /* I - Number of command-line args */
 
               if (Output == _CUPS_OUTPUT_PLIST && interval)
              {
-               _cupsLangPuts(stderr, _("ipptool: \"-i\" and \"-n\" are "
-                                       "incompatible with -X\"."));
+               _cupsLangPuts(stderr, _("ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"."));
                usage();
              }
              break;
@@ -542,8 +564,7 @@ main(int  argc,                             /* I - Number of command-line args */
 
               if (Output == _CUPS_OUTPUT_PLIST && repeat)
              {
-               _cupsLangPuts(stderr, _("ipptool: \"-i\" and \"-n\" are "
-                                       "incompatible with -X\"."));
+               _cupsLangPuts(stderr, _("ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"."));
                usage();
              }
              break;
@@ -564,7 +585,6 @@ main(int  argc,                             /* I - Number of command-line args */
              _cupsLangPrintf(stderr, _("ipptool: Unknown option \"-%c\"."),
                              *opt);
              usage();
-             break;
        }
       }
     }
@@ -600,8 +620,7 @@ main(int  argc,                             /* I - Number of command-line args */
 
       if (uri_status != HTTP_URI_OK)
       {
-        _cupsLangPrintf(stderr, _("ipptool: Bad URI - %s."),
-                       URIStatusStrings[uri_status - HTTP_URI_OVERFLOW]);
+        _cupsLangPrintf(stderr, _("ipptool: Bad URI - %s."), httpURIStatusString(uri_status));
         return (1);
       }
 
@@ -612,7 +631,7 @@ main(int  argc,                             /* I - Number of command-line args */
 
         Username = vars.userpass;
        cupsSetPasswordCB(password_cb);
-       set_variable(&vars, "uriuser", vars.userpass);
+       set_variable(outfile, &vars, "uriuser", vars.userpass);
       }
 
       httpAssembleURI(HTTP_URI_CODING_ALL, uri, sizeof(uri), vars.scheme, NULL,
@@ -647,7 +666,7 @@ main(int  argc,                             /* I - Number of command-line args */
       else
         testfile = argv[i];
 
-      if (!do_tests(&vars, testfile))
+      if (!do_tests(outfile, &vars, testfile))
         status = 1;
     }
   }
@@ -660,13 +679,13 @@ main(int  argc,                           /* I - Number of command-line args */
   */
 
   if (Output == _CUPS_OUTPUT_PLIST)
-    print_xml_trailer(!status, NULL);
+    print_xml_trailer(outfile, !status, NULL);
   else if (interval > 0 && repeat > 0)
   {
     while (repeat > 1)
     {
-      usleep(interval);
-      do_tests(&vars, testfile);
+      usleep((useconds_t)interval);
+      do_tests(outfile, &vars, testfile);
       repeat --;
     }
   }
@@ -674,11 +693,12 @@ main(int  argc,                           /* I - Number of command-line args */
   {
     for (;;)
     {
-      usleep(interval);
-      do_tests(&vars, testfile);
+      usleep((useconds_t)interval);
+      do_tests(outfile, &vars, testfile);
     }
   }
-  else if (Output == _CUPS_OUTPUT_TEST && TestCount > 1)
+
+  if ((Output == _CUPS_OUTPUT_TEST || (Output == _CUPS_OUTPUT_PLIST && outfile)) && TestCount > 1)
   {
    /*
     * Show a summary report if there were multiple tests...
@@ -750,7 +770,8 @@ compare_vars(_cups_var_t *a,                /* I - First variable */
  */
 
 static int                             /* 1 = success, 0 = failure */
-do_tests(_cups_vars_t *vars,           /* I - Variables */
+do_tests(FILE         *outfile,                /* I - Output file */
+         _cups_vars_t *vars,           /* I - Variables */
          const char   *testfile)       /* I - Test file to use */
 {
   int          i,                      /* Looping var */
@@ -814,7 +835,7 @@ do_tests(_cups_vars_t *vars,                /* I - Variables */
 
   if ((fp = fopen(testfile, "r")) == NULL)
   {
-    print_fatal_error("Unable to open test file %s - %s", testfile,
+    print_fatal_error(outfile, "Unable to open test file %s - %s", testfile,
                       strerror(errno));
     pass = 0;
     goto test_exit;
@@ -827,7 +848,7 @@ do_tests(_cups_vars_t *vars,                /* I - Variables */
   if ((http = httpConnect2(vars->hostname, vars->port, NULL, vars->family,
                            vars->encryption, 1, 30000, NULL)) == NULL)
   {
-    print_fatal_error("Unable to connect to %s on port %d - %s", vars->hostname,
+    print_fatal_error(outfile, "Unable to connect to %s on port %d - %s", vars->hostname,
                       vars->port, cupsLastErrorString());
     pass = 0;
     goto test_exit;
@@ -872,11 +893,11 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
           get_token(fp, temp, sizeof(temp), &linenum))
       {
         expand_variables(vars, token, temp, sizeof(token));
-       set_variable(vars, attr, token);
+       set_variable(outfile, vars, attr, token);
       }
       else
       {
-        print_fatal_error("Missing DEFINE name and/or value on line %d.",
+        print_fatal_error(outfile, "Missing DEFINE name and/or value on line %d.",
                          linenum);
        pass = 0;
        goto test_exit;
@@ -895,11 +916,11 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
       {
         expand_variables(vars, token, temp, sizeof(token));
        if (!get_variable(vars, attr))
-         set_variable(vars, attr, token);
+         set_variable(outfile, vars, attr, token);
       }
       else
       {
-        print_fatal_error("Missing DEFINE-DEFAULT name and/or value on line "
+        print_fatal_error(outfile, "Missing DEFINE-DEFAULT name and/or value on line "
                          "%d.", linenum);
        pass = 0;
        goto test_exit;
@@ -919,7 +940,7 @@ do_tests(_cups_vars_t *vars,                /* I - Variables */
       }
       else
       {
-        print_fatal_error("Missing FILE-ID value on line %d.", linenum);
+        print_fatal_error(outfile, "Missing FILE-ID value on line %d.", linenum);
        pass = 0;
        goto test_exit;
       }
@@ -940,7 +961,7 @@ do_tests(_cups_vars_t *vars,                /* I - Variables */
       }
       else
       {
-        print_fatal_error("Missing IGNORE-ERRORS value on line %d.", linenum);
+        print_fatal_error(outfile, "Missing IGNORE-ERRORS value on line %d.", linenum);
        pass = 0;
        goto test_exit;
       }
@@ -960,8 +981,7 @@ do_tests(_cups_vars_t *vars,                /* I - Variables */
         * Map the filename to and then run the tests...
        */
 
-        if (!do_tests(vars, get_filename(testfile, filename, temp,
-                                        sizeof(filename))))
+        if (!do_tests(outfile, vars, get_filename(testfile, filename, temp, sizeof(filename))))
        {
          pass = 0;
 
@@ -971,7 +991,7 @@ do_tests(_cups_vars_t *vars,                /* I - Variables */
       }
       else
       {
-        print_fatal_error("Missing INCLUDE filename on line %d.", linenum);
+        print_fatal_error(outfile, "Missing INCLUDE filename on line %d.", linenum);
        pass = 0;
        goto test_exit;
       }
@@ -994,8 +1014,7 @@ do_tests(_cups_vars_t *vars,               /* I - Variables */
        */
 
         if (get_variable(vars, attr) &&
-           !do_tests(vars, get_filename(testfile, filename, temp,
-                                        sizeof(filename))))
+           !do_tests(outfile, vars, get_filename(testfile, filename, temp, sizeof(filename))))
        {
          pass = 0;
 
@@ -1005,7 +1024,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
       }
       else
       {
-        print_fatal_error("Missing INCLUDE-IF-DEFINED name or filename on line "
+        print_fatal_error(outfile, "Missing INCLUDE-IF-DEFINED name or filename on line "
                          "%d.", linenum);
        pass = 0;
        goto test_exit;
@@ -1029,8 +1048,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
        */
 
         if (!get_variable(vars, attr) &&
-           !do_tests(vars, get_filename(testfile, filename, temp,
-                                        sizeof(filename))))
+           !do_tests(outfile, vars, get_filename(testfile, filename, temp, sizeof(filename))))
        {
          pass = 0;
 
@@ -1040,7 +1058,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
       }
       else
       {
-        print_fatal_error("Missing INCLUDE-IF-NOT-DEFINED name or filename on "
+        print_fatal_error(outfile, "Missing INCLUDE-IF-NOT-DEFINED name or filename on "
                          "line %d.", linenum);
        pass = 0;
        goto test_exit;
@@ -1062,7 +1080,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
       }
       else
       {
-        print_fatal_error("Missing SKIP-IF-DEFINED variable on line %d.",
+        print_fatal_error(outfile, "Missing SKIP-IF-DEFINED variable on line %d.",
                          linenum);
        pass = 0;
        goto test_exit;
@@ -1081,7 +1099,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
       }
       else
       {
-        print_fatal_error("Missing SKIP-IF-NOT-DEFINED variable on line %d.",
+        print_fatal_error(outfile, "Missing SKIP-IF-NOT-DEFINED variable on line %d.",
                          linenum);
        pass = 0;
        goto test_exit;
@@ -1101,7 +1119,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
       }
       else
       {
-        print_fatal_error("Missing STOP-AFTER-INCLUDE-ERROR value on line %d.",
+        print_fatal_error(outfile, "Missing STOP-AFTER-INCLUDE-ERROR value on line %d.",
                           linenum);
        pass = 0;
        goto test_exit;
@@ -1127,7 +1145,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
          Transfer = _CUPS_TRANSFER_LENGTH;
        else
        {
-         print_fatal_error("Bad TRANSFER value \"%s\" on line %d.", temp,
+         print_fatal_error(outfile, "Bad TRANSFER value \"%s\" on line %d.", temp,
                            linenum);
          pass = 0;
          goto test_exit;
@@ -1135,7 +1153,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
       }
       else
       {
-        print_fatal_error("Missing TRANSFER value on line %d.", linenum);
+        print_fatal_error(outfile, "Missing TRANSFER value on line %d.", linenum);
        pass = 0;
        goto test_exit;
       }
@@ -1158,14 +1176,14 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
          Version = 22;
        else
        {
-         print_fatal_error("Bad VERSION \"%s\" on line %d.", temp, linenum);
+         print_fatal_error(outfile, "Bad VERSION \"%s\" on line %d.", temp, linenum);
          pass = 0;
          goto test_exit;
        }
       }
       else
       {
-        print_fatal_error("Missing VERSION number on line %d.", linenum);
+        print_fatal_error(outfile, "Missing VERSION number on line %d.", linenum);
        pass = 0;
        goto test_exit;
       }
@@ -1174,7 +1192,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
     }
     else if (strcmp(token, "{"))
     {
-      print_fatal_error("Unexpected token %s seen on line %d.", token, linenum);
+      print_fatal_error(outfile, "Unexpected token %s seen on line %d.", token, linenum);
       pass = 0;
       goto test_exit;
     }
@@ -1186,8 +1204,8 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
     if (show_header)
     {
       if (Output == _CUPS_OUTPUT_PLIST)
-       print_xml_header();
-      else if (Output == _CUPS_OUTPUT_TEST)
+       print_xml_header(outfile);
+      if (Output == _CUPS_OUTPUT_TEST || (Output == _CUPS_OUTPUT_PLIST && outfile != stdout))
        printf("\"%s\":\n", testfile);
 
       show_header = 0;
@@ -1259,7 +1277,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
        * Another collection value
        */
 
-       ipp_t   *col = get_collection(vars, fp, &linenum);
+       ipp_t   *col = get_collection(outfile, vars, fp, &linenum);
                                        /* Collection value */
 
        if (col)
@@ -1290,7 +1308,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
          if (strcmp(compression, "none"))
 #endif /* HAVE_LIBZ */
           {
-           print_fatal_error("Unsupported COMPRESSION value '%s' on line %d.",
+           print_fatal_error(outfile, "Unsupported COMPRESSION value '%s' on line %d.",
                              compression, linenum);
            pass = 0;
            goto test_exit;
@@ -1301,7 +1319,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
        }
        else
        {
-         print_fatal_error("Missing COMPRESSION value on line %d.", linenum);
+         print_fatal_error(outfile, "Missing COMPRESSION value on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
@@ -1316,11 +1334,11 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
            get_token(fp, temp, sizeof(temp), &linenum))
        {
          expand_variables(vars, token, temp, sizeof(token));
-         set_variable(vars, attr, token);
+         set_variable(outfile, vars, attr, token);
        }
        else
        {
-         print_fatal_error("Missing DEFINE name and/or value on line %d.",
+         print_fatal_error(outfile, "Missing DEFINE name and/or value on line %d.",
                            linenum);
          pass = 0;
          goto test_exit;
@@ -1340,7 +1358,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
        }
        else
        {
-         print_fatal_error("Missing IGNORE-ERRORS value on line %d.", linenum);
+         print_fatal_error(outfile, "Missing IGNORE-ERRORS value on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
@@ -1355,6 +1373,15 @@ do_tests(_cups_vars_t *vars,             /* I - Variables */
 
        get_token(fp, name, sizeof(name), &linenum);
       }
+      else if (!_cups_strcasecmp(token, "PAUSE"))
+      {
+       /*
+        * Pause with a message...
+       */
+
+       get_token(fp, token, sizeof(token), &linenum);
+       pause_message(token);
+      }
       else if (!strcmp(token, "REQUEST-ID"))
       {
        /*
@@ -1370,7 +1397,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
            request_id = (CUPS_RAND() % 1000) * 137 + 1;
          else
          {
-           print_fatal_error("Bad REQUEST-ID value \"%s\" on line %d.", temp,
+           print_fatal_error(outfile, "Bad REQUEST-ID value \"%s\" on line %d.", temp,
                              linenum);
            pass = 0;
            goto test_exit;
@@ -1378,7 +1405,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
        }
        else
        {
-         print_fatal_error("Missing REQUEST-ID value on line %d.", linenum);
+         print_fatal_error(outfile, "Missing REQUEST-ID value on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
@@ -1396,7 +1423,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
        }
        else
        {
-         print_fatal_error("Missing SKIP-IF-DEFINED value on line %d.",
+         print_fatal_error(outfile, "Missing SKIP-IF-DEFINED value on line %d.",
                            linenum);
          pass = 0;
          goto test_exit;
@@ -1418,7 +1445,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
        }
        else
        {
-         print_fatal_error("Missing SKIP-IF-MISSING filename on line %d.",
+         print_fatal_error(outfile, "Missing SKIP-IF-MISSING filename on line %d.",
                            linenum);
          pass = 0;
          goto test_exit;
@@ -1437,7 +1464,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
        }
        else
        {
-         print_fatal_error("Missing SKIP-IF-NOT-DEFINED value on line %d.",
+         print_fatal_error(outfile, "Missing SKIP-IF-NOT-DEFINED value on line %d.",
                            linenum);
          pass = 0;
          goto test_exit;
@@ -1457,7 +1484,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
        }
        else
        {
-         print_fatal_error("Missing SKIP-PREVIOUS-ERROR value on line %d.", linenum);
+         print_fatal_error(outfile, "Missing SKIP-PREVIOUS-ERROR value on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
@@ -1476,7 +1503,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
        }
        else
        {
-         print_fatal_error("Missing TEST-ID value on line %d.", linenum);
+         print_fatal_error(outfile, "Missing TEST-ID value on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
@@ -1501,7 +1528,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
            transfer = _CUPS_TRANSFER_LENGTH;
          else
          {
-           print_fatal_error("Bad TRANSFER value \"%s\" on line %d.", temp,
+           print_fatal_error(outfile, "Bad TRANSFER value \"%s\" on line %d.", temp,
                              linenum);
            pass = 0;
            goto test_exit;
@@ -1509,7 +1536,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
        }
        else
        {
-         print_fatal_error("Missing TRANSFER value on line %d.", linenum);
+         print_fatal_error(outfile, "Missing TRANSFER value on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
@@ -1532,14 +1559,14 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
            version = 22;
          else
          {
-           print_fatal_error("Bad VERSION \"%s\" on line %d.", temp, linenum);
+           print_fatal_error(outfile, "Bad VERSION \"%s\" on line %d.", temp, linenum);
            pass = 0;
            goto test_exit;
          }
        }
        else
        {
-         print_fatal_error("Missing VERSION number on line %d.", linenum);
+         print_fatal_error(outfile, "Missing VERSION number on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
@@ -1552,7 +1579,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
 
        if (!get_token(fp, resource, sizeof(resource), &linenum))
        {
-         print_fatal_error("Missing RESOURCE path on line %d.", linenum);
+         print_fatal_error(outfile, "Missing RESOURCE path on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
@@ -1565,7 +1592,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
 
        if (!get_token(fp, temp, sizeof(temp), &linenum))
        {
-         print_fatal_error("Missing OPERATION code on line %d.", linenum);
+         print_fatal_error(outfile, "Missing OPERATION code on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
@@ -1573,9 +1600,9 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
        expand_variables(vars, token, temp, sizeof(token));
 
        if ((op = ippOpValue(token)) == (ipp_op_t)-1 &&
-           (op = strtol(token, NULL, 0)) == 0)
+           (op = (ipp_op_t)strtol(token, NULL, 0)) == 0)
        {
-         print_fatal_error("Bad OPERATION code \"%s\" on line %d.", token,
+         print_fatal_error(outfile, "Bad OPERATION code \"%s\" on line %d.", token,
                            linenum);
          pass = 0;
          goto test_exit;
@@ -1589,14 +1616,14 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
 
        if (!get_token(fp, token, sizeof(token), &linenum))
        {
-         print_fatal_error("Missing GROUP tag on line %d.", linenum);
+         print_fatal_error(outfile, "Missing GROUP tag on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
 
        if ((value = ippTagValue(token)) < 0)
        {
-         print_fatal_error("Bad GROUP tag \"%s\" on line %d.", token, linenum);
+         print_fatal_error(outfile, "Bad GROUP tag \"%s\" on line %d.", token, linenum);
          pass = 0;
          goto test_exit;
        }
@@ -1616,7 +1643,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
 
        if (!get_token(fp, temp, sizeof(temp), &linenum))
        {
-         print_fatal_error("Missing DELAY value on line %d.", linenum);
+         print_fatal_error(outfile, "Missing DELAY value on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
@@ -1625,7 +1652,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
 
        if ((delay = _cupsStrScand(token, NULL, localeconv())) <= 0.0)
        {
-         print_fatal_error("Bad DELAY value \"%s\" on line %d.", token,
+         print_fatal_error(outfile, "Bad DELAY value \"%s\" on line %d.", token,
                            linenum);
          pass = 0;
          goto test_exit;
@@ -1635,7 +1662,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
          if (Output == _CUPS_OUTPUT_TEST)
            printf("    [%g second delay]\n", delay);
 
-         usleep((int)(1000000.0 * delay));
+         usleep((useconds_t)(1000000.0 * delay));
        }
       }
       else if (!_cups_strcasecmp(token, "ATTR"))
@@ -1646,14 +1673,14 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
 
        if (!get_token(fp, token, sizeof(token), &linenum))
        {
-         print_fatal_error("Missing ATTR value tag on line %d.", linenum);
+         print_fatal_error(outfile, "Missing ATTR value tag on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
 
        if ((value = ippTagValue(token)) == IPP_TAG_ZERO)
        {
-         print_fatal_error("Bad ATTR value tag \"%s\" on line %d.", token,
+         print_fatal_error(outfile, "Bad ATTR value tag \"%s\" on line %d.", token,
                            linenum);
          pass = 0;
          goto test_exit;
@@ -1661,14 +1688,14 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
 
        if (!get_token(fp, attr, sizeof(attr), &linenum))
        {
-         print_fatal_error("Missing ATTR name on line %d.", linenum);
+         print_fatal_error(outfile, "Missing ATTR name on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
 
        if (!get_token(fp, temp, sizeof(temp), &linenum))
        {
-         print_fatal_error("Missing ATTR value on line %d.", linenum);
+         print_fatal_error(outfile, "Missing ATTR value on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
@@ -1682,20 +1709,19 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
              if (!_cups_strcasecmp(token, "true"))
                attrptr = ippAddBoolean(request, group, attr, 1);
               else
-               attrptr = ippAddBoolean(request, group, attr, atoi(token));
+               attrptr = ippAddBoolean(request, group, attr, (char)atoi(token));
              break;
 
          case IPP_TAG_INTEGER :
          case IPP_TAG_ENUM :
              if (!strchr(token, ','))
-               attrptr = ippAddInteger(request, group, value, attr,
-                                       strtol(token, &tokenptr, 0));
+               attrptr = ippAddInteger(request, group, value, attr, (int)strtol(token, &tokenptr, 0));
              else
              {
                int     values[100],    /* Values */
                        num_values = 1; /* Number of values */
 
-               values[0] = strtol(token, &tokenptr, 10);
+               values[0] = (int)strtol(token, &tokenptr, 10);
                while (tokenptr && *tokenptr &&
                       num_values < (int)(sizeof(values) / sizeof(values[0])))
                {
@@ -1704,7 +1730,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
                  else if (!isdigit(*tokenptr & 255) && *tokenptr != '-')
                    break;
 
-                 values[num_values] = strtol(tokenptr, &tokenptr, 0);
+                 values[num_values] = (int)strtol(tokenptr, &tokenptr, 0);
                  num_values ++;
                }
 
@@ -1713,7 +1739,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
 
              if (!tokenptr || *tokenptr)
              {
-               print_fatal_error("Bad %s value \"%s\" on line %d.",
+               print_fatal_error(outfile, "Bad %s value \"%s\" on line %d.",
                                  ippTagString(value), token, linenum);
                pass = 0;
                goto test_exit;
@@ -1726,11 +1752,11 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
                        yres;           /* Y resolution */
                char    *ptr;           /* Pointer into value */
 
-               xres = yres = strtol(token, (char **)&ptr, 10);
+               xres = yres = (int)strtol(token, (char **)&ptr, 10);
                if (ptr > token && xres > 0)
                {
                  if (*ptr == 'x')
-                 yres = strtol(ptr + 1, (char **)&ptr, 10);
+                   yres = (int)strtol(ptr + 1, (char **)&ptr, 10);
                }
 
                if (ptr <= token || xres <= 0 || yres <= 0 || !ptr ||
@@ -1739,22 +1765,19 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
                     _cups_strcasecmp(ptr, "dpcm") &&
                     _cups_strcasecmp(ptr, "other")))
                {
-                 print_fatal_error("Bad resolution value \"%s\" on line %d.",
+                 print_fatal_error(outfile, "Bad resolution value \"%s\" on line %d.",
                                    token, linenum);
                  pass = 0;
                  goto test_exit;
                }
 
                if (!_cups_strcasecmp(ptr, "dpi"))
-                 attrptr = ippAddResolution(request, group, attr, IPP_RES_PER_INCH,
-                                            xres, yres);
+                 attrptr = ippAddResolution(request, group, attr, IPP_RES_PER_INCH, xres, yres);
                else if (!_cups_strcasecmp(ptr, "dpc") ||
                         !_cups_strcasecmp(ptr, "dpcm"))
-                 attrptr = ippAddResolution(request, group, attr, IPP_RES_PER_CM,
-                                            xres, yres);
+                 attrptr = ippAddResolution(request, group, attr, IPP_RES_PER_CM, xres, yres);
                else
-                 attrptr = ippAddResolution(request, group, attr, (ipp_res_t)0,
-                                            xres, yres);
+                 attrptr = ippAddResolution(request, group, attr, (ipp_res_t)0, xres, yres);
              }
              break;
 
@@ -1773,7 +1796,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
 
                 if ((num_vals & 1) || num_vals == 0)
                {
-                 print_fatal_error("Bad rangeOfInteger value \"%s\" on line "
+                 print_fatal_error(outfile, "Bad rangeOfInteger value \"%s\" on line "
                                    "%d.", token, linenum);
                  pass = 0;
                  goto test_exit;
@@ -1787,7 +1810,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
           case IPP_TAG_BEGIN_COLLECTION :
              if (!strcmp(token, "{"))
              {
-               ipp_t   *col = get_collection(vars, fp, &linenum);
+               ipp_t   *col = get_collection(outfile, vars, fp, &linenum);
                                        /* Collection value */
 
                 if (col)
@@ -1803,20 +1826,49 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
               }
              else
              {
-               print_fatal_error("Bad ATTR collection value on line %d.",
+               print_fatal_error(outfile, "Bad ATTR collection value on line %d.",
                                  linenum);
                pass = 0;
                goto test_exit;
              }
+
+             do
+             {
+               ipp_t   *col;                   /* Collection value */
+               long    pos = ftell(fp);        /* Save position of file */
+
+               if (!get_token(fp, token, sizeof(token), &linenum))
+                 break;
+
+               if (strcmp(token, ","))
+               {
+                 fseek(fp, pos, SEEK_SET);
+                 break;
+               }
+
+               if (!get_token(fp, token, sizeof(token), &linenum) || strcmp(token, "{"))
+               {
+                 print_fatal_error(outfile, "Unexpected \"%s\" on line %d.", token, linenum);
+                 pass = 0;
+                 goto test_exit;
+                 break;
+               }
+
+               if ((col = get_collection(outfile, vars, fp, &linenum)) == NULL)
+                 break;
+
+               ippSetCollection(request, &attrptr, ippGetCount(attrptr), col);
+               lastcol = attrptr;
+             }
+             while (!strcmp(token, "{"));
              break;
 
           case IPP_TAG_STRING :
-              attrptr = ippAddOctetString(request, group, attr, token,
-                                          strlen(token));
+              attrptr = ippAddOctetString(request, group, attr, token, (int)strlen(token));
              break;
 
          default :
-             print_fatal_error("Unsupported ATTR value tag %s on line %d.",
+             print_fatal_error(outfile, "Unsupported ATTR value tag %s on line %d.",
                                ippTagString(value), linenum);
              pass = 0;
              goto test_exit;
@@ -1867,7 +1919,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
 
        if (!attrptr)
        {
-         print_fatal_error("Unable to add attribute on line %d: %s", linenum,
+         print_fatal_error(outfile, "Unable to add attribute on line %d: %s", linenum,
                            cupsLastErrorString());
          pass = 0;
          goto test_exit;
@@ -1881,7 +1933,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
 
        if (!get_token(fp, temp, sizeof(temp), &linenum))
        {
-         print_fatal_error("Missing FILE filename on line %d.", linenum);
+         print_fatal_error(outfile, "Missing FILE filename on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
@@ -1891,9 +1943,9 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
 
         if (access(filename, R_OK))
         {
-         print_fatal_error("Filename \"%s\" on line %d cannot be read.",
+         print_fatal_error(outfile, "Filename \"%s\" on line %d cannot be read.",
                            temp, linenum);
-         print_fatal_error("Filename mapped to \"%s\".", filename);
+         print_fatal_error(outfile, "Filename mapped to \"%s\".", filename);
          pass = 0;
          goto test_exit;
         }
@@ -1906,23 +1958,23 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
 
         if (num_statuses >= (int)(sizeof(statuses) / sizeof(statuses[0])))
        {
-         print_fatal_error("Too many STATUS's on line %d.", linenum);
+         print_fatal_error(outfile, "Too many STATUS's on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
 
        if (!get_token(fp, token, sizeof(token), &linenum))
        {
-         print_fatal_error("Missing STATUS code on line %d.", linenum);
+         print_fatal_error(outfile, "Missing STATUS code on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
 
        if ((statuses[num_statuses].status = ippErrorValue(token))
                == (ipp_status_t)-1 &&
-           (statuses[num_statuses].status = strtol(token, NULL, 0)) == 0)
+           (statuses[num_statuses].status = (ipp_status_t)strtol(token, NULL, 0)) == 0)
        {
-         print_fatal_error("Bad STATUS code \"%s\" on line %d.", token,
+         print_fatal_error(outfile, "Bad STATUS code \"%s\" on line %d.", token,
                            linenum);
          pass = 0;
          goto test_exit;
@@ -1947,14 +1999,14 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
 
         if (num_expects >= (int)(sizeof(expects) / sizeof(expects[0])))
         {
-         print_fatal_error("Too many EXPECT's on line %d.", linenum);
+         print_fatal_error(outfile, "Too many EXPECT's on line %d.", linenum);
          pass = 0;
          goto test_exit;
         }
 
        if (!get_token(fp, token, sizeof(token), &linenum))
        {
-         print_fatal_error("Missing EXPECT name on line %d.", linenum);
+         print_fatal_error(outfile, "Missing EXPECT name on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
@@ -1982,14 +2034,14 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
       {
        if (!get_token(fp, token, sizeof(token), &linenum))
        {
-         print_fatal_error("Missing COUNT number on line %d.", linenum);
+         print_fatal_error(outfile, "Missing COUNT number on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
 
         if ((i = atoi(token)) <= 0)
        {
-         print_fatal_error("Bad COUNT \"%s\" on line %d.", token, linenum);
+         print_fatal_error(outfile, "Bad COUNT \"%s\" on line %d.", token, linenum);
          pass = 0;
          goto test_exit;
        }
@@ -1998,7 +2050,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
          last_expect->count = i;
        else
        {
-         print_fatal_error("COUNT without a preceding EXPECT on line %d.",
+         print_fatal_error(outfile, "COUNT without a preceding EXPECT on line %d.",
                            linenum);
          pass = 0;
          goto test_exit;
@@ -2008,7 +2060,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
       {
        if (!get_token(fp, token, sizeof(token), &linenum))
        {
-         print_fatal_error("Missing DEFINE-MATCH variable on line %d.",
+         print_fatal_error(outfile, "Missing DEFINE-MATCH variable on line %d.",
                            linenum);
          pass = 0;
          goto test_exit;
@@ -2020,7 +2072,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
          last_status->define_match = strdup(token);
        else
        {
-         print_fatal_error("DEFINE-MATCH without a preceding EXPECT or STATUS "
+         print_fatal_error(outfile, "DEFINE-MATCH without a preceding EXPECT or STATUS "
                            "on line %d.", linenum);
          pass = 0;
          goto test_exit;
@@ -2030,7 +2082,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
       {
        if (!get_token(fp, token, sizeof(token), &linenum))
        {
-         print_fatal_error("Missing DEFINE-NO-MATCH variable on line %d.",
+         print_fatal_error(outfile, "Missing DEFINE-NO-MATCH variable on line %d.",
                            linenum);
          pass = 0;
          goto test_exit;
@@ -2042,7 +2094,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
          last_status->define_no_match = strdup(token);
        else
        {
-         print_fatal_error("DEFINE-NO-MATCH without a preceding EXPECT or "
+         print_fatal_error(outfile, "DEFINE-NO-MATCH without a preceding EXPECT or "
                            "STATUS on line %d.", linenum);
          pass = 0;
          goto test_exit;
@@ -2052,7 +2104,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
       {
        if (!get_token(fp, token, sizeof(token), &linenum))
        {
-         print_fatal_error("Missing DEFINE-VALUE variable on line %d.",
+         print_fatal_error(outfile, "Missing DEFINE-VALUE variable on line %d.",
                            linenum);
          pass = 0;
          goto test_exit;
@@ -2062,7 +2114,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
          last_expect->define_value = strdup(token);
        else
        {
-         print_fatal_error("DEFINE-VALUE without a preceding EXPECT on "
+         print_fatal_error(outfile, "DEFINE-VALUE without a preceding EXPECT on "
                            "line %d.", linenum);
          pass = 0;
          goto test_exit;
@@ -2072,7 +2124,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
       {
        if (!get_token(fp, token, sizeof(token), &linenum))
        {
-         print_fatal_error("Missing OF-TYPE value tag(s) on line %d.",
+         print_fatal_error(outfile, "Missing OF-TYPE value tag(s) on line %d.",
                            linenum);
          pass = 0;
          goto test_exit;
@@ -2082,7 +2134,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
          last_expect->of_type = strdup(token);
        else
        {
-         print_fatal_error("OF-TYPE without a preceding EXPECT on line %d.",
+         print_fatal_error(outfile, "OF-TYPE without a preceding EXPECT on line %d.",
                            linenum);
          pass = 0;
          goto test_exit;
@@ -2095,7 +2147,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
 
        if (!get_token(fp, token, sizeof(token), &linenum))
        {
-         print_fatal_error("Missing IN-GROUP group tag on line %d.", linenum);
+         print_fatal_error(outfile, "Missing IN-GROUP group tag on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
@@ -2107,7 +2159,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
          last_expect->in_group = in_group;
        else
        {
-         print_fatal_error("IN-GROUP without a preceding EXPECT on line %d.",
+         print_fatal_error(outfile, "IN-GROUP without a preceding EXPECT on line %d.",
                            linenum);
          pass = 0;
          goto test_exit;
@@ -2117,13 +2169,13 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
       {
        if (!get_token(fp, token, sizeof(token), &linenum))
        {
-         print_fatal_error("Missing REPEAT-LIMIT value on line %d.", linenum);
+         print_fatal_error(outfile, "Missing REPEAT-LIMIT value on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
        else if (atoi(token) <= 0)
        {
-         print_fatal_error("Bad REPEAT-LIMIT value on line %d.", linenum);
+         print_fatal_error(outfile, "Bad REPEAT-LIMIT value on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
@@ -2134,7 +2186,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
          last_expect->repeat_limit = atoi(token);
        else
        {
-         print_fatal_error("REPEAT-LIMIT without a preceding EXPECT or STATUS "
+         print_fatal_error(outfile, "REPEAT-LIMIT without a preceding EXPECT or STATUS "
                            "on line %d.", linenum);
          pass = 0;
          goto test_exit;
@@ -2148,7 +2200,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
          last_expect->repeat_match = 1;
        else
        {
-         print_fatal_error("REPEAT-MATCH without a preceding EXPECT or STATUS "
+         print_fatal_error(outfile, "REPEAT-MATCH without a preceding EXPECT or STATUS "
                            "on line %d.", linenum);
          pass = 0;
          goto test_exit;
@@ -2162,7 +2214,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
          last_expect->repeat_no_match = 1;
        else
        {
-         print_fatal_error("REPEAT-NO-MATCH without a preceding EXPECT or "
+         print_fatal_error(outfile, "REPEAT-NO-MATCH without a preceding EXPECT or "
                            "STATUS on ine %d.", linenum);
          pass = 0;
          goto test_exit;
@@ -2172,7 +2224,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
       {
        if (!get_token(fp, token, sizeof(token), &linenum))
        {
-         print_fatal_error("Missing SAME-COUNT-AS name on line %d.", linenum);
+         print_fatal_error(outfile, "Missing SAME-COUNT-AS name on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
@@ -2181,7 +2233,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
          last_expect->same_count_as = strdup(token);
        else
        {
-         print_fatal_error("SAME-COUNT-AS without a preceding EXPECT on line "
+         print_fatal_error(outfile, "SAME-COUNT-AS without a preceding EXPECT on line "
                            "%d.", linenum);
          pass = 0;
          goto test_exit;
@@ -2191,7 +2243,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
       {
        if (!get_token(fp, token, sizeof(token), &linenum))
        {
-         print_fatal_error("Missing IF-DEFINED name on line %d.", linenum);
+         print_fatal_error(outfile, "Missing IF-DEFINED name on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
@@ -2202,7 +2254,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
          last_status->if_defined = strdup(token);
        else
        {
-         print_fatal_error("IF-DEFINED without a preceding EXPECT or STATUS "
+         print_fatal_error(outfile, "IF-DEFINED without a preceding EXPECT or STATUS "
                            "on line %d.", linenum);
          pass = 0;
          goto test_exit;
@@ -2212,7 +2264,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
       {
        if (!get_token(fp, token, sizeof(token), &linenum))
        {
-         print_fatal_error("Missing IF-NOT-DEFINED name on line %d.", linenum);
+         print_fatal_error(outfile, "Missing IF-NOT-DEFINED name on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
@@ -2223,7 +2275,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
          last_status->if_not_defined = strdup(token);
        else
        {
-         print_fatal_error("IF-NOT-DEFINED without a preceding EXPECT or STATUS "
+         print_fatal_error(outfile, "IF-NOT-DEFINED without a preceding EXPECT or STATUS "
                            "on line %d.", linenum);
          pass = 0;
          goto test_exit;
@@ -2256,7 +2308,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
 
        if (!get_token(fp, temp, sizeof(temp), &linenum))
        {
-         print_fatal_error("Missing %s value on line %d.", token, linenum);
+         print_fatal_error(outfile, "Missing %s value on line %d.", token, linenum);
          pass = 0;
          goto test_exit;
        }
@@ -2277,11 +2329,11 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
            * WITH-VALUE is a POSIX extended regular expression.
            */
 
-           last_expect->with_value = calloc(1, tokenptr - token);
+           last_expect->with_value = calloc(1, (size_t)(tokenptr - token));
            last_expect->with_flags |= _CUPS_WITH_REGEX;
 
            if (last_expect->with_value)
-             memcpy(last_expect->with_value, token + 1, tokenptr - token - 1);
+             memcpy(last_expect->with_value, token + 1, (size_t)(tokenptr - token - 1));
          }
          else
          {
@@ -2309,7 +2361,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
        }
        else
        {
-         print_fatal_error("%s without a preceding EXPECT on line %d.", token,
+         print_fatal_error(outfile, "%s without a preceding EXPECT on line %d.", token,
                            linenum);
          pass = 0;
          goto test_exit;
@@ -2323,14 +2375,14 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
 
         if (num_displayed >= (int)(sizeof(displayed) / sizeof(displayed[0])))
        {
-         print_fatal_error("Too many DISPLAY's on line %d", linenum);
+         print_fatal_error(outfile, "Too many DISPLAY's on line %d", linenum);
          pass = 0;
          goto test_exit;
        }
 
        if (!get_token(fp, token, sizeof(token), &linenum))
        {
-         print_fatal_error("Missing DISPLAY name on line %d.", linenum);
+         print_fatal_error(outfile, "Missing DISPLAY name on line %d.", linenum);
          pass = 0;
          goto test_exit;
        }
@@ -2340,7 +2392,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
       }
       else
       {
-       print_fatal_error("Unexpected token %s seen on line %d.", token,
+       print_fatal_error(outfile, "Unexpected token %s seen on line %d.", token,
                          linenum);
        pass = 0;
        goto test_exit;
@@ -2353,54 +2405,54 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
 
     TestCount ++;
 
-    request->request.op.version[0]   = version / 10;
-    request->request.op.version[1]   = version % 10;
-    request->request.op.operation_id = op;
-    request->request.op.request_id   = request_id;
+    ippSetVersion(request, version / 10, version % 10);
+    ippSetOperation(request, op);
+    ippSetRequestId(request, request_id);
 
     if (Output == _CUPS_OUTPUT_PLIST)
     {
-      puts("<dict>");
-      puts("<key>Name</key>");
-      print_xml_string("string", name);
+      fputs("<dict>\n", outfile);
+      fputs("<key>Name</key>\n", outfile);
+      print_xml_string(outfile, "string", name);
       if (file_id[0])
       {
-       puts("<key>FileId</key>");
-       print_xml_string("string", file_id);
+       fputs("<key>FileId</key>\n", outfile);
+       print_xml_string(outfile, "string", file_id);
       }
       if (test_id[0])
       {
-        puts("<key>TestId</key>");
-        print_xml_string("string", test_id);
+        fputs("<key>TestId</key>\n", outfile);
+        print_xml_string(outfile, "string", test_id);
       }
-      puts("<key>Version</key>");
-      printf("<string>%d.%d</string>\n", version / 10, version % 10);
-      puts("<key>Operation</key>");
-      print_xml_string("string", ippOpString(op));
-      puts("<key>RequestId</key>");
-      printf("<integer>%d</integer>\n", request_id);
-      puts("<key>RequestAttributes</key>");
-      puts("<array>");
+      fputs("<key>Version</key>\n", outfile);
+      fprintf(outfile, "<string>%d.%d</string>\n", version / 10, version % 10);
+      fputs("<key>Operation</key>\n", outfile);
+      print_xml_string(outfile, "string", ippOpString(op));
+      fputs("<key>RequestId</key>\n", outfile);
+      fprintf(outfile, "<integer>%d</integer>\n", request_id);
+      fputs("<key>RequestAttributes</key>\n", outfile);
+      fputs("<array>\n", outfile);
       if (request->attrs)
       {
-       puts("<dict>");
+       fputs("<dict>\n", outfile);
        for (attrptr = request->attrs,
                 group = attrptr ? attrptr->group_tag : IPP_TAG_ZERO;
             attrptr;
             attrptr = attrptr->next)
-         print_attr(attrptr, &group);
-       puts("</dict>");
+         print_attr(outfile, Output, attrptr, &group);
+       fputs("</dict>\n", outfile);
       }
-      puts("</array>");
+      fputs("</array>\n", outfile);
     }
-    else if (Output == _CUPS_OUTPUT_TEST)
+
+    if (Output == _CUPS_OUTPUT_TEST || (Output == _CUPS_OUTPUT_PLIST && outfile != stdout))
     {
       if (Verbosity)
       {
        printf("    %s:\n", ippOpString(op));
 
        for (attrptr = request->attrs; attrptr; attrptr = attrptr->next)
-         print_attr(attrptr, NULL);
+         print_attr(stdout, _CUPS_OUTPUT_TEST, attrptr, NULL);
       }
 
       printf("    %-68.68s [", name);
@@ -2416,14 +2468,15 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
 
       if (Output == _CUPS_OUTPUT_PLIST)
       {
-       puts("<key>Successful</key>");
-       puts("<true />");
-       puts("<key>StatusCode</key>");
-       print_xml_string("string", "skip");
-       puts("<key>ResponseAttributes</key>");
-       puts("<dict />");
+       fputs("<key>Successful</key>\n", outfile);
+       fputs("<true />\n", outfile);
+       fputs("<key>StatusCode</key>\n", outfile);
+       print_xml_string(outfile, "string", "skip");
+       fputs("<key>ResponseAttributes</key>\n", outfile);
+       fputs("<dict />\n", outfile);
       }
-      else if (Output == _CUPS_OUTPUT_TEST)
+
+      if (Output == _CUPS_OUTPUT_TEST || (Output == _CUPS_OUTPUT_PLIST && outfile != stdout))
        puts("SKIP]");
 
       goto skip_error;
@@ -2464,7 +2517,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
          */
 
          while ((bytes = cupsFileRead(reqfile, buffer, sizeof(buffer))) > 0)
-           length += bytes;
+           length += (size_t)bytes;
 
          cupsFileClose(reqfile);
        }
@@ -2495,10 +2548,8 @@ do_tests(_cups_vars_t *vars,             /* I - Variables */
            if ((reqfile = cupsFileOpen(filename, "r")) != NULL)
            {
              while (!Cancel &&
-                    (bytes = cupsFileRead(reqfile, buffer,
-                                          sizeof(buffer))) > 0)
-               if ((status = cupsWriteRequestData(http, buffer,
-                                                  bytes)) != HTTP_STATUS_CONTINUE)
+                    (bytes = cupsFileRead(reqfile, buffer, sizeof(buffer))) > 0)
+               if ((status = cupsWriteRequestData(http, buffer, (size_t)bytes)) != HTTP_STATUS_CONTINUE)
                  break;
 
              cupsFileClose(reqfile);
@@ -2603,18 +2654,18 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
                                        IPP_TAG_INTEGER)) != NULL)
        {
          snprintf(temp, sizeof(temp), "%d", attrptr->values[0].integer);
-         set_variable(vars, "job-id", temp);
+         set_variable(outfile, vars, "job-id", temp);
        }
 
        if ((attrptr = ippFindAttribute(response, "job-uri",
                                        IPP_TAG_URI)) != NULL)
-         set_variable(vars, "job-uri", attrptr->values[0].string.text);
+         set_variable(outfile, vars, "job-uri", attrptr->values[0].string.text);
 
        if ((attrptr = ippFindAttribute(response, "notify-subscription-id",
                                        IPP_TAG_INTEGER)) != NULL)
        {
          snprintf(temp, sizeof(temp), "%d", attrptr->values[0].integer);
-         set_variable(vars, "notify-subscription-id", temp);
+         set_variable(outfile, vars, "notify-subscription-id", temp);
        }
 
        /*
@@ -2796,7 +2847,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
              group = attrptr->group_tag;
          }
 
-         validate_attr(errors, attrptr);
+         validate_attr(outfile, errors, attrptr);
 
           if (attrptr->name)
           {
@@ -2832,7 +2883,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
              repeat_test = 1;
 
             if (statuses[i].define_match)
-              set_variable(vars, statuses[i].define_match, "1");
+              set_variable(outfile, vars, statuses[i].define_match, "1");
 
             break;
          }
@@ -2844,7 +2895,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
 
             if (statuses[i].define_no_match)
             {
-              set_variable(vars, statuses[i].define_no_match, "1");
+              set_variable(outfile, vars, statuses[i].define_no_match, "1");
               break;
             }
           }
@@ -2892,7 +2943,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
               found->group_tag != expect->in_group))
          {
            if (expect->define_no_match)
-             set_variable(vars, expect->define_no_match, "1");
+             set_variable(outfile, vars, expect->define_no_match, "1");
            else if (!expect->define_match && !expect->define_value)
            {
              if (found && expect->not_expect)
@@ -2924,11 +2975,11 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
            ippAttributeString(found, buffer, sizeof(buffer));
 
          if (found &&
-             !with_value(NULL, expect->with_value, expect->with_flags, found,
+             !with_value(outfile, NULL, expect->with_value, expect->with_flags, found,
                          buffer, sizeof(buffer)))
          {
            if (expect->define_no_match)
-             set_variable(vars, expect->define_no_match, "1");
+             set_variable(outfile, vars, expect->define_no_match, "1");
            else if (!expect->define_match && !expect->define_value &&
                     !expect->repeat_match && !expect->repeat_no_match)
            {
@@ -2945,7 +2996,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
                                "WITH-ALL-VALUES" : "WITH-VALUE",
                            expect->with_value);
 
-             with_value(errors, expect->with_value, expect->with_flags, found,
+             with_value(outfile, errors, expect->with_value, expect->with_flags, found,
                         buffer, sizeof(buffer));
            }
 
@@ -2960,7 +3011,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
              found->num_values != expect->count)
          {
            if (expect->define_no_match)
-             set_variable(vars, expect->define_no_match, "1");
+             set_variable(outfile, vars, expect->define_no_match, "1");
            else if (!expect->define_match && !expect->define_value)
            {
              add_stringf(errors, "EXPECTED: %s COUNT %d (got %d)", expect->name,
@@ -2982,7 +3033,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
            if (!attrptr || attrptr->num_values != found->num_values)
            {
              if (expect->define_no_match)
-               set_variable(vars, expect->define_no_match, "1");
+               set_variable(outfile, vars, expect->define_no_match, "1");
              else if (!expect->define_match && !expect->define_value)
              {
                if (!attrptr)
@@ -3006,10 +3057,10 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
          }
 
          if (found && expect->define_match)
-           set_variable(vars, expect->define_match, "1");
+           set_variable(outfile, vars, expect->define_match, "1");
 
          if (found && expect->define_value)
-           set_variable(vars, expect->define_value, buffer);
+           set_variable(outfile, vars, expect->define_value, buffer);
 
          if (found && expect->repeat_match &&
              repeat_count < expect->repeat_limit)
@@ -3024,16 +3075,16 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
 
       if (repeat_test)
       {
-       if (Output == _CUPS_OUTPUT_TEST)
+       if (Output == _CUPS_OUTPUT_TEST || (Output == _CUPS_OUTPUT_PLIST && outfile != stdout))
         {
           printf("%04d]\n", repeat_count);
           fflush(stdout);
         }
 
-        sleep(repeat_interval);
+        sleep((unsigned)repeat_interval);
         repeat_interval = _cupsNextDelay(repeat_interval, &repeat_prev);
 
-       if (Output == _CUPS_OUTPUT_TEST)
+       if (Output == _CUPS_OUTPUT_TEST || (Output == _CUPS_OUTPUT_PLIST && outfile != stdout))
        {
          printf("    %-68.68s [", name);
          fflush(stdout);
@@ -3056,22 +3107,23 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
 
     if (Output == _CUPS_OUTPUT_PLIST)
     {
-      puts("<key>Successful</key>");
-      puts(prev_pass ? "<true />" : "<false />");
-      puts("<key>StatusCode</key>");
-      print_xml_string("string", ippErrorString(cupsLastError()));
-      puts("<key>ResponseAttributes</key>");
-      puts("<array>");
-      puts("<dict>");
+      fputs("<key>Successful</key>\n", outfile);
+      fputs(prev_pass ? "<true />\n" : "<false />\n", outfile);
+      fputs("<key>StatusCode</key>\n", outfile);
+      print_xml_string(outfile, "string", ippErrorString(cupsLastError()));
+      fputs("<key>ResponseAttributes</key>\n", outfile);
+      fputs("<array>\n", outfile);
+      fputs("<dict>\n", outfile);
       for (attrptr = response ? response->attrs : NULL,
                group = attrptr ? attrptr->group_tag : IPP_TAG_ZERO;
           attrptr;
           attrptr = attrptr->next)
-       print_attr(attrptr, &group);
-      puts("</dict>");
-      puts("</array>");
+       print_attr(outfile, Output, attrptr, &group);
+      fputs("</dict>\n", outfile);
+      fputs("</array>\n", outfile);
     }
-    else if (Output == _CUPS_OUTPUT_TEST)
+
+    if (Output == _CUPS_OUTPUT_TEST || (Output == _CUPS_OUTPUT_PLIST && outfile != stdout))
     {
       puts(prev_pass ? "PASS]" : "FAIL]");
 
@@ -3087,7 +3139,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
          for (attrptr = response->attrs;
               attrptr != NULL;
               attrptr = attrptr->next)
-           print_attr(attrptr, NULL);
+           print_attr(stdout, _CUPS_OUTPUT_TEST, attrptr, NULL);
        }
       }
     }
@@ -3115,9 +3167,9 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
       }
 
       if (Output == _CUPS_OUTPUT_CSV)
-       print_csv(NULL, num_displayed, displayed, widths);
+       print_csv(outfile, NULL, num_displayed, displayed, widths);
       else
-       print_line(NULL, num_displayed, displayed, widths);
+       print_line(outfile, NULL, num_displayed, displayed, widths);
 
       attrptr = response->attrs;
 
@@ -3129,9 +3181,9 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
        if (attrptr)
        {
          if (Output == _CUPS_OUTPUT_CSV)
-           print_csv(attrptr, num_displayed, displayed, widths);
+           print_csv(outfile, attrptr, num_displayed, displayed, widths);
          else
-           print_line(attrptr, num_displayed, displayed, widths);
+           print_line(outfile, attrptr, num_displayed, displayed, widths);
 
          while (attrptr && attrptr->group_tag > IPP_TAG_OPERATION)
            attrptr = attrptr->next;
@@ -3142,17 +3194,18 @@ do_tests(_cups_vars_t *vars,            /* I - Variables */
     {
       if (Output == _CUPS_OUTPUT_PLIST)
       {
-       puts("<key>Errors</key>");
-       puts("<array>");
+       fputs("<key>Errors</key>\n", outfile);
+       fputs("<array>\n", outfile);
 
        for (error = (char *)cupsArrayFirst(errors);
             error;
             error = (char *)cupsArrayNext(errors))
-         print_xml_string("string", error);
+         print_xml_string(outfile, "string", error);
 
-       puts("</array>");
+       fputs("</array>\n", outfile);
       }
-      else
+
+      if (Output == _CUPS_OUTPUT_TEST || (Output == _CUPS_OUTPUT_PLIST && outfile != stdout))
       {
        for (error = (char *)cupsArrayFirst(errors);
             error;
@@ -3161,8 +3214,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
       }
     }
 
-    if (num_displayed > 0 && !Verbosity && response &&
-        Output == _CUPS_OUTPUT_TEST)
+    if (num_displayed > 0 && !Verbosity && response && Output == _CUPS_OUTPUT_TEST)
     {
       for (attrptr = response->attrs;
           attrptr != NULL;
@@ -3174,7 +3226,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
          {
            if (!strcmp(displayed[i], attrptr->name))
            {
-             print_attr(attrptr, NULL);
+             print_attr(outfile, Output, attrptr, NULL);
              break;
            }
          }
@@ -3185,7 +3237,7 @@ do_tests(_cups_vars_t *vars,              /* I - Variables */
     skip_error:
 
     if (Output == _CUPS_OUTPUT_PLIST)
-      puts("</dict>");
+      fputs("</dict>\n", outfile);
 
     fflush(stdout);
 
@@ -3376,7 +3428,7 @@ expand_variables(_cups_vars_t *vars,      /* I - Variables */
 
       if (value)
       {
-        strlcpy(dstptr, value, dstend - dstptr + 1);
+        strlcpy(dstptr, value, (size_t)(dstend - dstptr + 1));
        dstptr += strlen(dstptr);
       }
     }
@@ -3456,7 +3508,8 @@ expect_matches(
  */
 
 static ipp_t *                         /* O  - Collection value */
-get_collection(_cups_vars_t *vars,     /* I  - Variables */
+get_collection(FILE         *outfile,  /* I  - Output file */
+               _cups_vars_t *vars,     /* I  - Variables */
                FILE         *fp,       /* I  - File to read from */
               int          *linenum)   /* IO - Line number */
 {
@@ -3478,7 +3531,7 @@ get_collection(_cups_vars_t *vars,        /* I  - Variables */
       * Another collection value
       */
 
-      ipp_t    *subcol = get_collection(vars, fp, linenum);
+      ipp_t    *subcol = get_collection(outfile, vars, fp, linenum);
                                        /* Collection value */
 
       if (subcol)
@@ -3496,26 +3549,26 @@ get_collection(_cups_vars_t *vars,      /* I  - Variables */
 
       if (!get_token(fp, token, sizeof(token), linenum))
       {
-       print_fatal_error("Missing MEMBER value tag on line %d.", *linenum);
+       print_fatal_error(outfile, "Missing MEMBER value tag on line %d.", *linenum);
        goto col_error;
       }
 
       if ((value = ippTagValue(token)) == IPP_TAG_ZERO)
       {
-       print_fatal_error("Bad MEMBER value tag \"%s\" on line %d.", token,
+       print_fatal_error(outfile, "Bad MEMBER value tag \"%s\" on line %d.", token,
                          *linenum);
        goto col_error;
       }
 
       if (!get_token(fp, attr, sizeof(attr), linenum))
       {
-       print_fatal_error("Missing MEMBER name on line %d.", *linenum);
+       print_fatal_error(outfile, "Missing MEMBER name on line %d.", *linenum);
        goto col_error;
       }
 
       if (!get_token(fp, temp, sizeof(temp), linenum))
       {
-       print_fatal_error("Missing MEMBER value on line %d.", *linenum);
+       print_fatal_error(outfile, "Missing MEMBER value on line %d.", *linenum);
        goto col_error;
       }
 
@@ -3527,7 +3580,7 @@ get_collection(_cups_vars_t *vars,        /* I  - Variables */
            if (!_cups_strcasecmp(token, "true"))
              ippAddBoolean(col, IPP_TAG_ZERO, attr, 1);
            else
-             ippAddBoolean(col, IPP_TAG_ZERO, attr, atoi(token));
+             ippAddBoolean(col, IPP_TAG_ZERO, attr, (char)atoi(token));
            break;
 
        case IPP_TAG_INTEGER :
@@ -3547,21 +3600,18 @@ get_collection(_cups_vars_t *vars,      /* I  - Variables */
                   _cups_strcasecmp(units, "dpcm") &&
                   _cups_strcasecmp(units, "other")))
              {
-               print_fatal_error("Bad resolution value \"%s\" on line %d.",
+               print_fatal_error(outfile, "Bad resolution value \"%s\" on line %d.",
                                  token, *linenum);
                goto col_error;
              }
 
              if (!_cups_strcasecmp(units, "dpi"))
-               ippAddResolution(col, IPP_TAG_ZERO, attr, xres, yres,
-                                IPP_RES_PER_INCH);
+               ippAddResolution(col, IPP_TAG_ZERO, attr, IPP_RES_PER_INCH, xres, yres);
              else if (!_cups_strcasecmp(units, "dpc") ||
                       !_cups_strcasecmp(units, "dpcm"))
-               ippAddResolution(col, IPP_TAG_ZERO, attr, xres, yres,
-                                IPP_RES_PER_CM);
+               ippAddResolution(col, IPP_TAG_ZERO, attr, IPP_RES_PER_CM, xres, yres);
              else
-               ippAddResolution(col, IPP_TAG_ZERO, attr, xres, yres,
-                                (ipp_res_t)0);
+               ippAddResolution(col, IPP_TAG_ZERO, attr, (ipp_res_t)0, xres, yres);
            }
            break;
 
@@ -3580,7 +3630,7 @@ get_collection(_cups_vars_t *vars,        /* I  - Variables */
 
              if ((num_vals & 1) || num_vals == 0)
              {
-               print_fatal_error("Bad rangeOfInteger value \"%s\" on line %d.",
+               print_fatal_error(outfile, "Bad rangeOfInteger value \"%s\" on line %d.",
                                  token, *linenum);
                goto col_error;
              }
@@ -3593,7 +3643,7 @@ get_collection(_cups_vars_t *vars,        /* I  - Variables */
        case IPP_TAG_BEGIN_COLLECTION :
            if (!strcmp(token, "{"))
            {
-             ipp_t     *subcol = get_collection(vars, fp, linenum);
+             ipp_t     *subcol = get_collection(outfile, vars, fp, linenum);
                                      /* Collection value */
 
              if (subcol)
@@ -3606,12 +3656,12 @@ get_collection(_cups_vars_t *vars,      /* I  - Variables */
            }
            else
            {
-             print_fatal_error("Bad collection value on line %d.", *linenum);
+             print_fatal_error(outfile, "Bad collection value on line %d.", *linenum);
              goto col_error;
            }
            break;
        case IPP_TAG_STRING :
-           ippAddOctetString(col, IPP_TAG_ZERO, attr, token, strlen(token));
+           ippAddOctetString(col, IPP_TAG_ZERO, attr, token, (int)strlen(token));
            break;
 
        default :
@@ -3710,7 +3760,7 @@ get_filename(const char *testfile,        /* I - Current test file */
     else
       dstptr = dst; /* Should never happen */
 
-    strlcpy(dstptr, src, dstsize - (dstptr - dst));
+    strlcpy(dstptr, src, dstsize - (size_t)(dstptr - dst));
   }
 
   return (dst);
@@ -3740,30 +3790,24 @@ get_string(ipp_attribute_t *attr,       /* I - IPP attribute */
 
   if (flags & _CUPS_WITH_HOSTNAME)
   {
-    if (httpSeparateURI(HTTP_URI_CODING_ALL, ptr, scheme, sizeof(scheme),
-                        userpass, sizeof(userpass), buffer, bufsize, &port,
-                        resource, sizeof(resource)) < HTTP_URI_STATUS_OK)
-      return ("");
-    else
-      return (buffer);
+    if (httpSeparateURI(HTTP_URI_CODING_ALL, ptr, scheme, sizeof(scheme), userpass, sizeof(userpass), buffer, (int)bufsize, &port, resource, sizeof(resource)) < HTTP_URI_STATUS_OK)
+      buffer[0] = '\0';
+
+    return (buffer);
   }
   else if (flags & _CUPS_WITH_RESOURCE)
   {
-    if (httpSeparateURI(HTTP_URI_CODING_ALL, ptr, scheme, sizeof(scheme),
-                        userpass, sizeof(userpass), hostname, sizeof(hostname),
-                        &port, buffer, bufsize) < HTTP_URI_STATUS_OK)
-      return ("");
-    else
-      return (buffer);
+    if (httpSeparateURI(HTTP_URI_CODING_ALL, ptr, scheme, sizeof(scheme), userpass, sizeof(userpass), hostname, sizeof(hostname), &port, buffer, (int)bufsize) < HTTP_URI_STATUS_OK)
+      buffer[0] = '\0';
+
+    return (buffer);
   }
   else if (flags & _CUPS_WITH_SCHEME)
   {
-    if (httpSeparateURI(HTTP_URI_CODING_ALL, ptr, buffer, bufsize,
-                        userpass, sizeof(userpass), hostname, sizeof(hostname),
-                        &port, resource, sizeof(resource)) < HTTP_URI_STATUS_OK)
-      return ("");
-    else
-      return (buffer);
+    if (httpSeparateURI(HTTP_URI_CODING_ALL, ptr, buffer, (int)bufsize, userpass, sizeof(userpass), hostname, sizeof(hostname), &port, resource, sizeof(resource)) < HTTP_URI_STATUS_OK)
+      buffer[0] = '\0';
+
+    return (buffer);
   }
   else
     return (ptr);
@@ -3823,15 +3867,15 @@ get_token(FILE *fp,                     /* I  - File to read from */
          */
 
          if (bufptr < bufend)
-           *bufptr++ = ch;
+           *bufptr++ = (char)ch;
 
          if ((ch = getc(fp)) != EOF && bufptr < bufend)
-           *bufptr++ = ch;
+           *bufptr++ = (char)ch;
        }
        else if (ch == quote)
           break;
        else if (bufptr < bufend)
-          *bufptr++ = ch;
+          *bufptr++ = (char)ch;
       }
 
       *bufptr = '\0';
@@ -3850,6 +3894,13 @@ get_token(FILE *fp,                      /* I  - File to read from */
 
       (*linenum) ++;
     }
+    else if (ch == '{' || ch == '}' || ch == ',')
+    {
+      buf[0] = (char)ch;
+      buf[1] = '\0';
+
+      return (buf);
+    }
     else
     {
      /*
@@ -3865,7 +3916,7 @@ get_token(FILE *fp,                       /* I  - File to read from */
        if (isspace(ch) || ch == '#')
           break;
        else if (bufptr < bufend)
-          *bufptr++ = ch;
+          *bufptr++ = (char)ch;
 
       if (ch == '#')
         ungetc(ch, fp);
@@ -3945,26 +3996,129 @@ password_cb(const char *prompt)                /* I - Prompt (unused) */
 }
 
 
+/*
+ * 'pause_message()' - Display the message and pause until the user presses a key.
+ */
+
+static void
+pause_message(const char *message)     /* I - Message */
+{
+#ifdef WIN32
+  HANDLE       tty;                    /* Console handle */
+  DWORD                mode;                   /* Console mode */
+  char         key;                    /* Key press */
+  DWORD                bytes;                  /* Bytes read for key press */
+
+
+ /*
+  * Disable input echo and set raw input...
+  */
+
+  if ((tty = GetStdHandle(STD_INPUT_HANDLE)) == INVALID_HANDLE_VALUE)
+    return;
+
+  if (!GetConsoleMode(tty, &mode))
+    return;
+
+  if (!SetConsoleMode(tty, 0))
+    return;
+
+#else
+  int                  tty;            /* /dev/tty - never read from stdin */
+  struct termios       original,       /* Original input mode */
+                       noecho;         /* No echo input mode */
+  char                 key;            /* Current key press */
+
+
+ /*
+  * Disable input echo and set raw input...
+  */
+
+  if ((tty = open("/dev/tty", O_RDONLY)) < 0)
+    return;
+
+  if (tcgetattr(tty, &original))
+  {
+    close(tty);
+    return;
+  }
+
+  noecho = original;
+  noecho.c_lflag &= (tcflag_t)~(ICANON | ECHO | ECHOE | ISIG);
+
+  if (tcsetattr(tty, TCSAFLUSH, &noecho))
+  {
+    close(tty);
+    return;
+  }
+#endif /* WIN32 */
+
+ /*
+  * Display the prompt...
+  */
+
+  printf("%s\n---- PRESS ANY KEY ----", message);
+  fflush(stdout);
+
+#ifdef WIN32
+ /*
+  * Read a key...
+  */
+
+  ReadFile(tty, &key, 1, &bytes, NULL);
+
+ /*
+  * Cleanup...
+  */
+
+  SetConsoleMode(tty, mode);
+
+#else
+ /*
+  * Read a key...
+  */
+
+  read(tty, &key, 1);
+
+ /*
+  * Cleanup...
+  */
+
+  tcsetattr(tty, TCSAFLUSH, &original);
+  close(tty);
+#endif /* WIN32 */
+
+ /*
+  * Erase the "press any key" prompt...
+  */
+
+  fputs("\r                       \r", stdout);
+  fflush(stdout);
+}
+
+
 /*
  * 'print_attr()' - Print an attribute on the screen.
  */
 
 static void
-print_attr(ipp_attribute_t *attr,      /* I  - Attribute to print */
+print_attr(FILE            *outfile,   /* I  - Output file */
+           int             format,     /* I  - Output format */
+           ipp_attribute_t *attr,      /* I  - Attribute to print */
            ipp_tag_t       *group)     /* IO - Current group */
 {
   int                  i;              /* Looping var */
   ipp_attribute_t      *colattr;       /* Collection attribute */
 
 
-  if (Output == _CUPS_OUTPUT_PLIST)
+  if (format == _CUPS_OUTPUT_PLIST)
   {
     if (!attr->name || (group && *group != attr->group_tag))
     {
       if (attr->group_tag != IPP_TAG_ZERO)
       {
-       puts("</dict>");
-       puts("<dict>");
+       fputs("</dict>\n", outfile);
+       fputs("<dict>\n", outfile);
       }
 
       if (group)
@@ -3974,100 +4128,56 @@ print_attr(ipp_attribute_t *attr,      /* I  - Attribute to print */
     if (!attr->name)
       return;
 
-    print_xml_string("key", attr->name);
+    print_xml_string(outfile, "key", attr->name);
     if (attr->num_values > 1)
-      puts("<array>");
+      fputs("<array>\n", outfile);
 
     switch (attr->value_tag)
     {
       case IPP_TAG_INTEGER :
       case IPP_TAG_ENUM :
          for (i = 0; i < attr->num_values; i ++)
-           if (Output == _CUPS_OUTPUT_PLIST)
-             printf("<integer>%d</integer>\n", attr->values[i].integer);
-           else
-             printf("%d ", attr->values[i].integer);
+           fprintf(outfile, "<integer>%d</integer>\n", attr->values[i].integer);
          break;
 
       case IPP_TAG_BOOLEAN :
          for (i = 0; i < attr->num_values; i ++)
-           if (Output == _CUPS_OUTPUT_PLIST)
-             puts(attr->values[i].boolean ? "<true />" : "<false />");
-           else if (attr->values[i].boolean)
-             fputs("true ", stdout);
-           else
-             fputs("false ", stdout);
+           fputs(attr->values[i].boolean ? "<true />\n" : "<false />\n", outfile);
          break;
 
       case IPP_TAG_RANGE :
          for (i = 0; i < attr->num_values; i ++)
-           if (Output == _CUPS_OUTPUT_PLIST)
-             printf("<dict><key>lower</key><integer>%d</integer>"
-                    "<key>upper</key><integer>%d</integer></dict>\n",
-                    attr->values[i].range.lower, attr->values[i].range.upper);
-           else
-             printf("%d-%d ", attr->values[i].range.lower,
-                    attr->values[i].range.upper);
+           fprintf(outfile, "<dict><key>lower</key><integer>%d</integer>"
+                            "<key>upper</key><integer>%d</integer></dict>\n",
+                   attr->values[i].range.lower, attr->values[i].range.upper);
          break;
 
       case IPP_TAG_RESOLUTION :
          for (i = 0; i < attr->num_values; i ++)
-           if (Output == _CUPS_OUTPUT_PLIST)
-             printf("<dict><key>xres</key><integer>%d</integer>"
-                    "<key>yres</key><integer>%d</integer>"
-                    "<key>units</key><string>%s</string></dict>\n",
-                    attr->values[i].resolution.xres,
-                    attr->values[i].resolution.yres,
-                    attr->values[i].resolution.units == IPP_RES_PER_INCH ?
-                        "dpi" : "dpcm");
-           else
-             printf("%dx%d%s ", attr->values[i].resolution.xres,
-                    attr->values[i].resolution.yres,
-                    attr->values[i].resolution.units == IPP_RES_PER_INCH ?
-                        "dpi" : "dpcm");
+           fprintf(outfile, "<dict><key>xres</key><integer>%d</integer>"
+                            "<key>yres</key><integer>%d</integer>"
+                            "<key>units</key><string>%s</string></dict>\n",
+                  attr->values[i].resolution.xres,
+                  attr->values[i].resolution.yres,
+                  attr->values[i].resolution.units == IPP_RES_PER_INCH ?
+                      "dpi" : "dpcm");
          break;
 
       case IPP_TAG_DATE :
          for (i = 0; i < attr->num_values; i ++)
-           if (Output == _CUPS_OUTPUT_PLIST)
-             printf("<date>%s</date>\n", iso_date(attr->values[i].date));
-           else
-             printf("%s ", iso_date(attr->values[i].date));
+           fprintf(outfile, "<date>%s</date>\n", iso_date(attr->values[i].date));
          break;
 
       case IPP_TAG_STRING :
           for (i = 0; i < attr->num_values; i ++)
           {
-            if (Output == _CUPS_OUTPUT_PLIST)
-            {
-             char      buffer[IPP_MAX_LENGTH * 5 / 4 + 1];
+           char        buffer[IPP_MAX_LENGTH * 5 / 4 + 1];
                                        /* Output buffer */
 
-              printf("<data>%s</data>\n",
-                     httpEncode64_2(buffer, sizeof(buffer),
-                                    attr->values[i].unknown.data,
-                                    attr->values[i].unknown.length));
-            }
-            else
-            {
-              char     *ptr,           /* Pointer into data */
-                       *end;           /* End of data */
-
-              putchar('\"');
-              for (ptr = attr->values[i].unknown.data,
-                       end = ptr + attr->values[i].unknown.length;
-                   ptr < end;
-                   ptr ++)
-              {
-                if (*ptr == '\\' || *ptr == '\"')
-                  printf("\\%c", *ptr);
-                else if (!isprint(*ptr & 255))
-                  printf("\\%03o", *ptr & 255);
-                else
-                  putchar(*ptr);
-              }
-              putchar('\"');
-            }
+           fprintf(outfile, "<data>%s</data>\n",
+                   httpEncode64_2(buffer, sizeof(buffer),
+                                  attr->values[i].unknown.data,
+                                  attr->values[i].unknown.length));
           }
           break;
 
@@ -4079,178 +4189,69 @@ print_attr(ipp_attribute_t *attr,      /* I  - Attribute to print */
       case IPP_TAG_MIMETYPE :
       case IPP_TAG_LANGUAGE :
          for (i = 0; i < attr->num_values; i ++)
-           if (Output == _CUPS_OUTPUT_PLIST)
-             print_xml_string("string", attr->values[i].string.text);
-           else
-             printf("\"%s\" ", attr->values[i].string.text);
+           print_xml_string(outfile, "string", attr->values[i].string.text);
          break;
 
       case IPP_TAG_TEXTLANG :
       case IPP_TAG_NAMELANG :
          for (i = 0; i < attr->num_values; i ++)
-           if (Output == _CUPS_OUTPUT_PLIST)
-           {
-             fputs("<dict><key>language</key><string>", stdout);
-             print_xml_string(NULL, attr->values[i].string.language);
-             fputs("</string><key>string</key><string>", stdout);
-             print_xml_string(NULL, attr->values[i].string.text);
-             puts("</string></dict>");
-           }
-           else
-             printf("\"%s\"[%s] ", attr->values[i].string.text,
-                    attr->values[i].string.language);
+         {
+           fputs("<dict><key>language</key><string>", outfile);
+           print_xml_string(outfile, NULL, attr->values[i].string.language);
+           fputs("</string><key>string</key><string>", outfile);
+           print_xml_string(outfile, NULL, attr->values[i].string.text);
+           fputs("</string></dict>\n", outfile);
+         }
          break;
 
       case IPP_TAG_BEGIN_COLLECTION :
          for (i = 0; i < attr->num_values; i ++)
          {
-           if (Output == _CUPS_OUTPUT_PLIST)
-           {
-             puts("<dict>");
-             for (colattr = attr->values[i].collection->attrs;
-                  colattr;
-                  colattr = colattr->next)
-               print_attr(colattr, NULL);
-             puts("</dict>");
-           }
-           else
-           {
-             if (i)
-               putchar(' ');
-
-             print_col(attr->values[i].collection);
-           }
+           fputs("<dict>\n", outfile);
+           for (colattr = attr->values[i].collection->attrs;
+                colattr;
+                colattr = colattr->next)
+             print_attr(outfile, format, colattr, NULL);
+           fputs("</dict>\n", outfile);
          }
          break;
 
       default :
-         if (Output == _CUPS_OUTPUT_PLIST)
-           printf("<string>&lt;&lt;%s&gt;&gt;</string>\n",
-                  ippTagString(attr->value_tag));
-         else
-           fputs(ippTagString(attr->value_tag), stdout);
+         fprintf(outfile, "<string>&lt;&lt;%s&gt;&gt;</string>\n", ippTagString(attr->value_tag));
          break;
     }
 
     if (attr->num_values > 1)
-      puts("</array>");
+      fputs("</array>\n", outfile);
   }
   else
   {
     char       buffer[8192];           /* Value buffer */
 
-    if (Output == _CUPS_OUTPUT_TEST)
+    if (format == _CUPS_OUTPUT_TEST)
     {
       if (!attr->name)
       {
-        puts("        -- separator --");
+        fputs("        -- separator --\n", outfile);
         return;
       }
 
-      printf("        %s (%s%s) = ", attr->name,
-            attr->num_values > 1 ? "1setOf " : "",
-            ippTagString(attr->value_tag));
+      fprintf(outfile, "        %s (%s%s) = ", attr->name, attr->num_values > 1 ? "1setOf " : "", ippTagString(attr->value_tag));
     }
 
     ippAttributeString(attr, buffer, sizeof(buffer));
-    puts(buffer);
+    fprintf(outfile, "%s\n", buffer);
   }
 }
 
 
-/*
- * 'print_col()' - Print a collection attribute on the screen.
- */
-
-static void
-print_col(ipp_t *col)                  /* I - Collection attribute to print */
-{
-  int                  i;              /* Looping var */
-  ipp_attribute_t      *attr;          /* Current attribute in collection */
-
-
-  fputs("{ ", stdout);
-  for (attr = col->attrs; attr; attr = attr->next)
-  {
-    printf("%s (%s%s) = ", attr->name, attr->num_values > 1 ? "1setOf " : "",
-          ippTagString(attr->value_tag));
-
-    switch (attr->value_tag)
-    {
-      case IPP_TAG_INTEGER :
-      case IPP_TAG_ENUM :
-         for (i = 0; i < attr->num_values; i ++)
-           printf("%d ", attr->values[i].integer);
-         break;
-
-      case IPP_TAG_BOOLEAN :
-         for (i = 0; i < attr->num_values; i ++)
-           if (attr->values[i].boolean)
-             printf("true ");
-           else
-             printf("false ");
-         break;
-
-      case IPP_TAG_NOVALUE :
-         printf("novalue");
-         break;
-
-      case IPP_TAG_RANGE :
-         for (i = 0; i < attr->num_values; i ++)
-           printf("%d-%d ", attr->values[i].range.lower,
-                  attr->values[i].range.upper);
-         break;
-
-      case IPP_TAG_RESOLUTION :
-         for (i = 0; i < attr->num_values; i ++)
-           printf("%dx%d%s ", attr->values[i].resolution.xres,
-                  attr->values[i].resolution.yres,
-                  attr->values[i].resolution.units == IPP_RES_PER_INCH ?
-                      "dpi" : "dpcm");
-         break;
-
-      case IPP_TAG_STRING :
-      case IPP_TAG_TEXT :
-      case IPP_TAG_NAME :
-      case IPP_TAG_KEYWORD :
-      case IPP_TAG_CHARSET :
-      case IPP_TAG_URI :
-      case IPP_TAG_MIMETYPE :
-      case IPP_TAG_LANGUAGE :
-         for (i = 0; i < attr->num_values; i ++)
-           printf("\"%s\" ", attr->values[i].string.text);
-         break;
-
-      case IPP_TAG_TEXTLANG :
-      case IPP_TAG_NAMELANG :
-         for (i = 0; i < attr->num_values; i ++)
-           printf("\"%s\"[%s] ", attr->values[i].string.text,
-                  attr->values[i].string.language);
-         break;
-
-      case IPP_TAG_BEGIN_COLLECTION :
-         for (i = 0; i < attr->num_values; i ++)
-         {
-           print_col(attr->values[i].collection);
-           putchar(' ');
-         }
-         break;
-
-      default :
-         break; /* anti-compiler-warning-code */
-    }
-  }
-
-  putchar('}');
-}
-
-
 /*
  * 'print_csv()' - Print a line of CSV text.
  */
 
 static void
 print_csv(
+    FILE            *outfile,          /* I - Output file */
     ipp_attribute_t *attr,             /* I - First attribute for line */
     int             num_displayed,     /* I - Number of attributes to display */
     char            **displayed,       /* I - Attributes to display */
@@ -4285,7 +4286,7 @@ print_csv(
     for (i = 0; i < num_displayed; i ++)
     {
       if (i)
-        putchar(',');
+        fputc(',', outfile);
 
       buffer[0] = '\0';
 
@@ -4303,30 +4304,30 @@ print_csv(
       if (strchr(buffer, ',') != NULL || strchr(buffer, '\"') != NULL ||
          strchr(buffer, '\\') != NULL)
       {
-        putchar('\"');
+        putc('\"', outfile);
         for (bufptr = buffer; *bufptr; bufptr ++)
         {
           if (*bufptr == '\\' || *bufptr == '\"')
-            putchar('\\');
-          putchar(*bufptr);
+            putc('\\', outfile);
+          putc(*bufptr, outfile);
         }
-        putchar('\"');
+        putc('\"', outfile);
       }
       else
-        fputs(buffer, stdout);
+        fputs(buffer, outfile);
     }
-    putchar('\n');
+    putc('\n', outfile);
   }
   else
   {
     for (i = 0; i < num_displayed; i ++)
     {
       if (i)
-        putchar(',');
+        putc(',', outfile);
 
-      fputs(displayed[i], stdout);
+      fputs(displayed[i], outfile);
     }
-    putchar('\n');
+    putc('\n', outfile);
   }
 
   free(buffer);
@@ -4338,7 +4339,8 @@ print_csv(
  */
 
 static void
-print_fatal_error(const char *s,       /* I - Printf-style format string */
+print_fatal_error(FILE       *outfile, /* I - Output file */
+                 const char *s,        /* I - Printf-style format string */
                   ...)                 /* I - Additional arguments as needed */
 {
   char         buffer[10240];          /* Format buffer */
@@ -4359,11 +4361,11 @@ print_fatal_error(const char *s,        /* I - Printf-style format string */
 
   if (Output == _CUPS_OUTPUT_PLIST)
   {
-    print_xml_header();
-    print_xml_trailer(0, buffer);
+    print_xml_header(outfile);
+    print_xml_trailer(outfile, 0, buffer);
   }
-  else
-    _cupsLangPrintf(stderr, "ipptool: %s", buffer);
+
+  _cupsLangPrintf(stderr, "ipptool: %s", buffer);
 }
 
 
@@ -4373,6 +4375,7 @@ print_fatal_error(const char *s,  /* I - Printf-style format string */
 
 static void
 print_line(
+    FILE            *outfile,          /* I - Output file */
     ipp_attribute_t *attr,             /* I - First attribute for line */
     int             num_displayed,     /* I - Number of attributes to display */
     char            **displayed,       /* I - Attributes to display */
@@ -4406,7 +4409,7 @@ print_line(
     for (i = 0; i < num_displayed; i ++)
     {
       if (i)
-        putchar(' ');
+        putc(' ', outfile);
 
       buffer[0] = '\0';
 
@@ -4421,31 +4424,31 @@ print_line(
         }
       }
 
-      printf("%*s", (int)-widths[i], buffer);
+      fprintf(outfile, "%*s", (int)-widths[i], buffer);
     }
-    putchar('\n');
+    putc('\n', outfile);
   }
   else
   {
     for (i = 0; i < num_displayed; i ++)
     {
       if (i)
-        putchar(' ');
+        putc(' ', outfile);
 
-      printf("%*s", (int)-widths[i], displayed[i]);
+      fprintf(outfile, "%*s", (int)-widths[i], displayed[i]);
     }
-    putchar('\n');
+    putc('\n', outfile);
 
     for (i = 0; i < num_displayed; i ++)
     {
       if (i)
-       putchar(' ');
+       putc(' ', outfile);
 
       memset(buffer, '-', widths[i]);
       buffer[widths[i]] = '\0';
-      fputs(buffer, stdout);
+      fputs(buffer, outfile);
     }
-    putchar('\n');
+    putc('\n', outfile);
   }
 
   free(buffer);
@@ -4457,23 +4460,23 @@ print_line(
  */
 
 static void
-print_xml_header(void)
+print_xml_header(FILE *outfile)                /* I - Output file */
 {
   if (!XMLHeader)
   {
-    puts("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
-    puts("<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" "
-         "\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">");
-    puts("<plist version=\"1.0\">");
-    puts("<dict>");
-    puts("<key>ipptoolVersion</key>");
-    puts("<string>" CUPS_SVERSION "</string>");
-    puts("<key>Transfer</key>");
-    printf("<string>%s</string>\n",
-           Transfer == _CUPS_TRANSFER_AUTO ? "auto" :
-              Transfer == _CUPS_TRANSFER_CHUNKED ? "chunked" : "length");
-    puts("<key>Tests</key>");
-    puts("<array>");
+    fputs("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n", outfile);
+    fputs("<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" "
+         "\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n", outfile);
+    fputs("<plist version=\"1.0\">\n", outfile);
+    fputs("<dict>\n", outfile);
+    fputs("<key>ipptoolVersion</key>\n", outfile);
+    fputs("<string>" CUPS_SVERSION "</string>\n", outfile);
+    fputs("<key>Transfer</key>\n", outfile);
+    fprintf(outfile, "<string>%s</string>\n",
+           Transfer == _CUPS_TRANSFER_AUTO ? "auto" :
+               Transfer == _CUPS_TRANSFER_CHUNKED ? "chunked" : "length");
+    fputs("<key>Tests</key>\n", outfile);
+    fputs("<array>\n", outfile);
 
     XMLHeader = 1;
   }
@@ -4485,20 +4488,21 @@ print_xml_header(void)
  */
 
 static void
-print_xml_string(const char *element,  /* I - Element name or NULL */
+print_xml_string(FILE       *outfile,  /* I - Output file */
+                 const char *element,  /* I - Element name or NULL */
                 const char *s)         /* I - String to print */
 {
   if (element)
-    printf("<%s>", element);
+    fprintf(outfile, "<%s>", element);
 
   while (*s)
   {
     if (*s == '&')
-      fputs("&amp;", stdout);
+      fputs("&amp;", outfile);
     else if (*s == '<')
-      fputs("&lt;", stdout);
+      fputs("&lt;", outfile);
     else if (*s == '>')
-      fputs("&gt;", stdout);
+      fputs("&gt;", outfile);
     else if ((*s & 0xe0) == 0xc0)
     {
      /*
@@ -4507,13 +4511,13 @@ print_xml_string(const char *element,   /* I - Element name or NULL */
 
       if ((s[1] & 0xc0) != 0x80)
       {
-        putchar('?');
+        putc('?', outfile);
         s ++;
       }
       else
       {
-        putchar(*s++);
-        putchar(*s);
+        putc(*s++, outfile);
+        putc(*s, outfile);
       }
     }
     else if ((*s & 0xf0) == 0xe0)
@@ -4524,14 +4528,14 @@ print_xml_string(const char *element,   /* I - Element name or NULL */
 
       if ((s[1] & 0xc0) != 0x80 || (s[2] & 0xc0) != 0x80)
       {
-        putchar('?');
+        putc('?', outfile);
         s += 2;
       }
       else
       {
-        putchar(*s++);
-        putchar(*s++);
-        putchar(*s);
+        putc(*s++, outfile);
+        putc(*s++, outfile);
+        putc(*s, outfile);
       }
     }
     else if ((*s & 0xf8) == 0xf0)
@@ -4543,15 +4547,15 @@ print_xml_string(const char *element,   /* I - Element name or NULL */
       if ((s[1] & 0xc0) != 0x80 || (s[2] & 0xc0) != 0x80 ||
           (s[3] & 0xc0) != 0x80)
       {
-        putchar('?');
+        putc('?', outfile);
         s += 3;
       }
       else
       {
-        putchar(*s++);
-        putchar(*s++);
-        putchar(*s++);
-        putchar(*s);
+        putc(*s++, outfile);
+        putc(*s++, outfile);
+        putc(*s++, outfile);
+        putc(*s, outfile);
       }
     }
     else if ((*s & 0x80) || (*s < ' ' && !isspace(*s & 255)))
@@ -4560,16 +4564,16 @@ print_xml_string(const char *element,   /* I - Element name or NULL */
       * Invalid control character...
       */
 
-      putchar('?');
+      putc('?', outfile);
     }
     else
-      putchar(*s);
+      putc(*s, outfile);
 
     s ++;
   }
 
   if (element)
-    printf("</%s>\n", element);
+    fprintf(outfile, "</%s>\n", element);
 }
 
 
@@ -4578,21 +4582,22 @@ print_xml_string(const char *element,   /* I - Element name or NULL */
  */
 
 static void
-print_xml_trailer(int        success,  /* I - 1 on success, 0 on failure */
+print_xml_trailer(FILE       *outfile, /* I - Output file */
+                  int        success,  /* I - 1 on success, 0 on failure */
                   const char *message) /* I - Error message or NULL */
 {
   if (XMLHeader)
   {
-    puts("</array>");
-    puts("<key>Successful</key>");
-    puts(success ? "<true />" : "<false />");
+    fputs("</array>\n", outfile);
+    fputs("<key>Successful</key>\n", outfile);
+    fputs(success ? "<true />\n" : "<false />\n", outfile);
     if (message)
     {
-      puts("<key>ErrorMessage</key>");
-      print_xml_string("string", message);
+      fputs("<key>ErrorMessage</key>\n", outfile);
+      print_xml_string(outfile, "string", message);
     }
-    puts("</dict>");
-    puts("</plist>");
+    fputs("</dict>\n", outfile);
+    fputs("</plist>\n", outfile);
 
     XMLHeader = 0;
   }
@@ -4604,7 +4609,8 @@ print_xml_trailer(int        success,     /* I - 1 on success, 0 on failure */
  */
 
 static void
-set_variable(_cups_vars_t *vars,       /* I - Variables */
+set_variable(FILE         *outfile,    /* I - Output file */
+             _cups_vars_t *vars,       /* I - Variables */
              const char   *name,       /* I - Variable name */
              const char   *value)      /* I - Value string */
 {
@@ -4629,7 +4635,7 @@ set_variable(_cups_vars_t *vars,  /* I - Variables */
   }
   else if ((var = malloc(sizeof(_cups_var_t))) == NULL)
   {
-    print_fatal_error("Unable to allocate memory for variable \"%s\".", name);
+    print_fatal_error(outfile, "Unable to allocate memory for variable \"%s\".", name);
     exit(1);
   }
   else
@@ -4671,7 +4677,9 @@ timeout_cb(http_t *http,          /* I - Connection to server */
   int          buffered = 0;           /* Bytes buffered but not yet sent */
 
 
- /*
+  (void)user_data;
+
+  /*
   * If the socket still have data waiting to be sent to the printer (as can
   * happen if the printer runs out of paper), continue to wait until the output
   * buffer is empty...
@@ -4689,7 +4697,6 @@ timeout_cb(http_t *http,          /* I - Connection to server */
 
 #else                                  /* Windows (not possible) */
   (void)http;
-  (void)user_data;
 #endif /* SO_NWRITE */
 
   return (buffered > 0);
@@ -4744,7 +4751,8 @@ usage(void)
  */
 
 static int                             /* O - 1 if valid, 0 otherwise */
-validate_attr(cups_array_t    *errors, /* I - Errors array */
+validate_attr(FILE            *outfile,        /* I - Output file */
+              cups_array_t    *errors, /* I - Errors array */
               ipp_attribute_t *attr)   /* I - Attribute to validate */
 {
   int          i;                      /* Looping var */
@@ -5009,7 +5017,7 @@ validate_attr(cups_array_t    *errors,    /* I - Errors array */
               colattr;
               colattr = colattr->next)
          {
-           if (!validate_attr(NULL, colattr))
+           if (!validate_attr(outfile, NULL, colattr))
            {
              valid = 0;
              break;
@@ -5022,7 +5030,7 @@ validate_attr(cups_array_t    *errors,    /* I - Errors array */
 
            while (colattr)
            {
-             validate_attr(errors, colattr);
+             validate_attr(outfile, errors, colattr);
              colattr = colattr->next;
            }
          }
@@ -5198,8 +5206,7 @@ validate_attr(cups_array_t    *errors,    /* I - Errors array */
                        "\"%s\": Bad URI value \"%s\" - %s "
                        "(RFC 2911 section 4.1.5).", attr->name,
                        attr->values[i].string.text,
-                       URIStatusStrings[uri_status -
-                                        HTTP_URI_OVERFLOW]);
+                       httpURIStatusString(uri_status));
          }
 
          if (strlen(attr->values[i].string.text) > (IPP_MAX_URI - 1))
@@ -5307,7 +5314,7 @@ validate_attr(cups_array_t    *errors,    /* I - Errors array */
           char temp[256];              /* Temporary error string */
 
           regerror(i, &re, temp, sizeof(temp));
-         print_fatal_error("Unable to compile naturalLanguage regular "
+         print_fatal_error(outfile, "Unable to compile naturalLanguage regular "
                            "expression: %s.", temp);
          break;
         }
@@ -5360,7 +5367,7 @@ validate_attr(cups_array_t    *errors,    /* I - Errors array */
           char temp[256];              /* Temporary error string */
 
           regerror(i, &re, temp, sizeof(temp));
-         print_fatal_error("Unable to compile mimeMediaType regular "
+         print_fatal_error(outfile, "Unable to compile mimeMediaType regular "
                            "expression: %s.", temp);
          break;
         }
@@ -5405,7 +5412,8 @@ validate_attr(cups_array_t    *errors,    /* I - Errors array */
  */
 
 static int                             /* O - 1 on match, 0 on non-match */
-with_value(cups_array_t    *errors,    /* I - Errors array */
+with_value(FILE            *outfile,   /* I - Output file */
+           cups_array_t    *errors,    /* I - Errors array */
            char            *value,     /* I - Value string */
            int             flags,      /* I - Flags for match */
            ipp_attribute_t *attr,      /* I - Attribute to compare */
@@ -5460,7 +5468,7 @@ with_value(cups_array_t    *errors,       /* I - Errors array */
             if (!*valptr)
              break;
 
-           intvalue = strtol(valptr, &nextptr, 0);
+           intvalue = (int)strtol(valptr, &nextptr, 0);
            if (nextptr == valptr)
              break;
            valptr = nextptr;
@@ -5470,8 +5478,7 @@ with_value(cups_array_t    *errors,       /* I - Errors array */
                 (op == '>' && attr->values[i].integer > intvalue))
            {
              if (!matchbuf[0])
-               snprintf(matchbuf, matchlen, "%d",
-                        attr->values[i].integer);
+               snprintf(matchbuf, matchlen, "%d", attr->values[i].integer);
 
              valmatch = 1;
              break;
@@ -5526,7 +5533,7 @@ with_value(cups_array_t    *errors,       /* I - Errors array */
             if (!*valptr)
              break;
 
-           intvalue = strtol(valptr, &nextptr, 0);
+           intvalue = (int)strtol(valptr, &nextptr, 0);
            if (nextptr == valptr)
              break;
            valptr = nextptr;
@@ -5682,7 +5689,7 @@ with_value(cups_array_t    *errors,       /* I - Errors array */
          {
             regerror(i, &re, temp, sizeof(temp));
 
-           print_fatal_error("Unable to compile WITH-VALUE regular expression "
+           print_fatal_error(outfile, "Unable to compile WITH-VALUE regular expression "
                              "\"%s\" - %s", value, temp);
            return (0);
          }
@@ -5762,5 +5769,5 @@ with_value(cups_array_t    *errors,       /* I - Errors array */
 
 
 /*
- * End of "$Id: ipptool.c 11707 2014-03-19 18:38:23Z msweet $".
+ * End of "$Id: ipptool.c 12031 2014-07-15 19:57:59Z msweet $".
  */
index ce9ead32bcb2ac20c3f5c3fa097878f6a566985c..d437e07a4150e36a11428592eed3e08b766d32cf 100755 (executable)
@@ -1,18 +1,18 @@
 #!/bin/sh
 #
-# "$Id: run-stp-tests.sh 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: run-stp-tests.sh 12065 2014-07-30 17:56:35Z msweet $"
 #
-#   Perform the complete set of IPP compliance tests specified in the
-#   CUPS Software Test Plan.
+# Perform the complete set of IPP compliance tests specified in the
+# CUPS Software Test Plan.
 #
-#   Copyright 2007-2013 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/".
 #
 
 argcount=$#
@@ -192,6 +192,14 @@ fi
 port=8631
 cwd=`pwd`
 root=`dirname $cwd`
+CUPS_TESTROOT="$root"; export CUPS_TESTROOT
+
+if test -d /private/tmp; then
+       BASE=/private/tmp/cups-$user
+else
+       BASE=/tmp/cups-$user
+fi
+export BASE
 
 #
 # Make sure that the LPDEST and PRINTER environment variables are
@@ -223,12 +231,12 @@ echo ""
 
 case "$usevalgrind" in
        Y* | y*)
-               VALGRIND="valgrind --tool=memcheck --log-file=/tmp/cups-$user/log/valgrind.%p --error-limit=no --leak-check=yes --trace-children=yes --read-var-info=yes"
+               VALGRIND="valgrind --tool=memcheck --log-file=$BASE/log/valgrind.%p --error-limit=no --leak-check=yes --trace-children=yes --read-var-info=yes"
                if test `uname` = Darwin; then
                        VALGRIND="$VALGRIND --dsymutil=yes"
                fi
                export VALGRIND
-               echo "Using Valgrind; log files can be found in /tmp/cups-$user/log..."
+               echo "Using Valgrind; log files can be found in $BASE/log..."
                ;;
 
        *)
@@ -257,15 +265,15 @@ echo ""
 
 case "$usedebugprintfs" in
        Y* | y*)
-               echo "Enabling debug printfs (level 5); log files can be found in /tmp/cups-$user/log..."
-               CUPS_DEBUG_LOG="/tmp/cups-$user/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
+               echo "Enabling debug printfs (level 5); log files can be found in $BASE/log..."
+               CUPS_DEBUG_LOG="$BASE/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
                CUPS_DEBUG_LEVEL=5; export CUPS_DEBUG_LEVEL
                CUPS_DEBUG_FILTER='^(http|_http|ipp|_ipp|cups.*Request|cupsGetResponse|cupsSend).*$'; export CUPS_DEBUG_FILTER
                ;;
 
        0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9)
-               echo "Enabling debug printfs (level $usedebugprintfs); log files can be found in /tmp/cups-$user/log..."
-               CUPS_DEBUG_LOG="/tmp/cups-$user/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
+               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
                ;;
@@ -280,67 +288,67 @@ esac
 
 echo "Creating directories for test..."
 
-rm -rf /tmp/cups-$user
-mkdir /tmp/cups-$user
-mkdir /tmp/cups-$user/bin
-mkdir /tmp/cups-$user/bin/backend
-mkdir /tmp/cups-$user/bin/driver
-mkdir /tmp/cups-$user/bin/filter
-mkdir /tmp/cups-$user/certs
-mkdir /tmp/cups-$user/share
-mkdir /tmp/cups-$user/share/banners
-mkdir /tmp/cups-$user/share/drv
-mkdir /tmp/cups-$user/share/locale
+rm -rf $BASE
+mkdir $BASE
+mkdir $BASE/bin
+mkdir $BASE/bin/backend
+mkdir $BASE/bin/driver
+mkdir $BASE/bin/filter
+mkdir $BASE/certs
+mkdir $BASE/share
+mkdir $BASE/share/banners
+mkdir $BASE/share/drv
+mkdir $BASE/share/locale
 for file in ../locale/cups_*.po; do
        loc=`basename $file .po | cut -c 6-`
-       mkdir /tmp/cups-$user/share/locale/$loc
-       ln -s $root/locale/cups_$loc.po /tmp/cups-$user/share/locale/$loc
-       ln -s $root/locale/ppdc_$loc.po /tmp/cups-$user/share/locale/$loc
+       mkdir $BASE/share/locale/$loc
+       ln -s $root/locale/cups_$loc.po $BASE/share/locale/$loc
+       ln -s $root/locale/ppdc_$loc.po $BASE/share/locale/$loc
 done
-mkdir /tmp/cups-$user/share/mime
-mkdir /tmp/cups-$user/share/model
-mkdir /tmp/cups-$user/share/ppdc
-mkdir /tmp/cups-$user/interfaces
-mkdir /tmp/cups-$user/log
-mkdir /tmp/cups-$user/ppd
-mkdir /tmp/cups-$user/spool
-mkdir /tmp/cups-$user/spool/temp
-mkdir /tmp/cups-$user/ssl
-
-ln -s $root/backend/dnssd /tmp/cups-$user/bin/backend
-ln -s $root/backend/http /tmp/cups-$user/bin/backend
-ln -s $root/backend/ipp /tmp/cups-$user/bin/backend
-ln -s $root/backend/lpd /tmp/cups-$user/bin/backend
-ln -s $root/backend/mdns /tmp/cups-$user/bin/backend
-ln -s $root/backend/pseudo /tmp/cups-$user/bin/backend
-ln -s $root/backend/snmp /tmp/cups-$user/bin/backend
-ln -s $root/backend/socket /tmp/cups-$user/bin/backend
-ln -s $root/backend/usb /tmp/cups-$user/bin/backend
-ln -s $root/cgi-bin /tmp/cups-$user/bin
-ln -s $root/monitor /tmp/cups-$user/bin
-ln -s $root/notifier /tmp/cups-$user/bin
-ln -s $root/scheduler /tmp/cups-$user/bin/daemon
-ln -s $root/filter/commandtops /tmp/cups-$user/bin/filter
-ln -s $root/filter/gziptoany /tmp/cups-$user/bin/filter
-ln -s $root/filter/pstops /tmp/cups-$user/bin/filter
-ln -s $root/filter/rastertoepson /tmp/cups-$user/bin/filter
-ln -s $root/filter/rastertohp /tmp/cups-$user/bin/filter
-ln -s $root/filter/rastertolabel /tmp/cups-$user/bin/filter
-ln -s $root/filter/rastertopwg /tmp/cups-$user/bin/filter
-
-ln -s $root/data/classified /tmp/cups-$user/share/banners
-ln -s $root/data/confidential /tmp/cups-$user/share/banners
-ln -s $root/data/secret /tmp/cups-$user/share/banners
-ln -s $root/data/standard /tmp/cups-$user/share/banners
-ln -s $root/data/topsecret /tmp/cups-$user/share/banners
-ln -s $root/data/unclassified /tmp/cups-$user/share/banners
-ln -s $root/data /tmp/cups-$user/share
-ln -s $root/ppdc/sample.drv /tmp/cups-$user/share/drv
-ln -s $root/conf/mime.types /tmp/cups-$user/share/mime
-ln -s $root/conf/mime.convs /tmp/cups-$user/share/mime
-ln -s $root/data/*.h /tmp/cups-$user/share/ppdc
-ln -s $root/data/*.defs /tmp/cups-$user/share/ppdc
-ln -s $root/templates /tmp/cups-$user/share
+mkdir $BASE/share/mime
+mkdir $BASE/share/model
+mkdir $BASE/share/ppdc
+mkdir $BASE/interfaces
+mkdir $BASE/log
+mkdir $BASE/ppd
+mkdir $BASE/spool
+mkdir $BASE/spool/temp
+mkdir $BASE/ssl
+
+ln -s $root/backend/dnssd $BASE/bin/backend
+ln -s $root/backend/http $BASE/bin/backend
+ln -s $root/backend/ipp $BASE/bin/backend
+ln -s $root/backend/lpd $BASE/bin/backend
+ln -s $root/backend/mdns $BASE/bin/backend
+ln -s $root/backend/pseudo $BASE/bin/backend
+ln -s $root/backend/snmp $BASE/bin/backend
+ln -s $root/backend/socket $BASE/bin/backend
+ln -s $root/backend/usb $BASE/bin/backend
+ln -s $root/cgi-bin $BASE/bin
+ln -s $root/monitor $BASE/bin
+ln -s $root/notifier $BASE/bin
+ln -s $root/scheduler $BASE/bin/daemon
+ln -s $root/filter/commandtops $BASE/bin/filter
+ln -s $root/filter/gziptoany $BASE/bin/filter
+ln -s $root/filter/pstops $BASE/bin/filter
+ln -s $root/filter/rastertoepson $BASE/bin/filter
+ln -s $root/filter/rastertohp $BASE/bin/filter
+ln -s $root/filter/rastertolabel $BASE/bin/filter
+ln -s $root/filter/rastertopwg $BASE/bin/filter
+
+ln -s $root/data/classified $BASE/share/banners
+ln -s $root/data/confidential $BASE/share/banners
+ln -s $root/data/secret $BASE/share/banners
+ln -s $root/data/standard $BASE/share/banners
+ln -s $root/data/topsecret $BASE/share/banners
+ln -s $root/data/unclassified $BASE/share/banners
+ln -s $root/data $BASE/share
+ln -s $root/ppdc/sample.drv $BASE/share/drv
+ln -s $root/conf/mime.types $BASE/share/mime
+ln -s $root/conf/mime.convs $BASE/share/mime
+ln -s $root/data/*.h $BASE/share/ppdc
+ln -s $root/data/*.defs $BASE/share/ppdc
+ln -s $root/templates $BASE/share
 
 #
 # Local filters and configuration files...
@@ -358,7 +366,7 @@ instfilter() {
 
        for dir in /usr/libexec/cups/filter /usr/lib/cups/filter; do
                if test -x "$dir/$src"; then
-                       ln -s "$dir/$src" "/tmp/cups-$user/bin/filter/$dst"
+                       ln -s "$dir/$src" "$BASE/bin/filter/$dst"
                        return
                fi
        done
@@ -366,10 +374,10 @@ instfilter() {
        # Source filter not present, create a dummy filter
        case $format in
                passthru)
-                       ln -s gziptoany "/tmp/cups-$user/bin/filter/$dst"
+                       ln -s gziptoany "$BASE/bin/filter/$dst"
                        ;;
                pdf)
-                       cat >"/tmp/cups-$user/bin/filter/$dst" <<EOF
+                       cat >"$BASE/bin/filter/$dst" <<EOF
 #!/bin/sh
 case "\$5" in
        *media=a4* | *media=iso_a4* | *PageSize=A4*)
@@ -380,10 +388,10 @@ case "\$5" in
                ;;
 esac
 EOF
-                       chmod +x "/tmp/cups-$user/bin/filter/$dst"
+                       chmod +x "$BASE/bin/filter/$dst"
                        ;;
                ps)
-                       cat >"/tmp/cups-$user/bin/filter/$dst" <<EOF
+                       cat >"$BASE/bin/filter/$dst" <<EOF
 #!/bin/sh
 case "\$5" in
        *media=a4* | *media=iso_a4* | *PageSize=A4*)
@@ -394,10 +402,10 @@ case "\$5" in
                ;;
 esac
 EOF
-                       chmod +x "/tmp/cups-$user/bin/filter/$dst"
+                       chmod +x "$BASE/bin/filter/$dst"
                        ;;
                raster)
-                       cat >"/tmp/cups-$user/bin/filter/$dst" <<EOF
+                       cat >"$BASE/bin/filter/$dst" <<EOF
 #!/bin/sh
 case "\$5" in
        *media=a4* | *media=iso_a4* | *PageSize=A4*)
@@ -408,12 +416,12 @@ case "\$5" in
                ;;
 esac
 EOF
-                       chmod +x "/tmp/cups-$user/bin/filter/$dst"
+                       chmod +x "$BASE/bin/filter/$dst"
                        ;;
        esac
 }
-ln -s $root/test/test.convs /tmp/cups-$user/share/mime
+
+ln -s $root/test/test.convs $BASE/share/mime
 
 if test `uname` = Darwin; then
        instfilter cgbannertopdf bannertopdf pdf
@@ -435,7 +443,7 @@ else
        instfilter texttopdf texttopdf pdf
 
        if test -d /usr/share/cups/charsets; then
-               ln -s /usr/share/cups/charsets /tmp/cups-$user/share
+               ln -s /usr/share/cups/charsets $BASE/share
        fi
 fi
 
@@ -451,11 +459,11 @@ else
        encryption=""
 fi
 
-cat >/tmp/cups-$user/cupsd.conf <<EOF
+cat >$BASE/cupsd.conf <<EOF
 StrictConformance Yes
 Browsing Off
 Listen localhost:$port
-Listen /tmp/cups-$user/sock
+Listen $BASE/sock
 PassEnv LOCALEDIR
 PassEnv DYLD_INSERT_LIBRARIES
 MaxSubscriptions 3
@@ -473,26 +481,30 @@ $encryption
 </Policy>
 EOF
 
-cat >/tmp/cups-$user/cups-files.conf <<EOF
+if test $testtype = 0; then
+       echo WebInterface yes >>$BASE/cupsd.conf
+fi
+
+cat >$BASE/cups-files.conf <<EOF
 FileDevice yes
 Printcap
 User $user
-ServerRoot /tmp/cups-$user
-StateDir /tmp/cups-$user
-ServerBin /tmp/cups-$user/bin
-CacheDir /tmp/cups-$user/share
-DataDir /tmp/cups-$user/share
-FontPath /tmp/cups-$user/share/fonts
+ServerRoot $BASE
+StateDir $BASE
+ServerBin $BASE/bin
+CacheDir $BASE/share
+DataDir $BASE/share
+FontPath $BASE/share/fonts
 DocumentRoot $root/doc
-RequestRoot /tmp/cups-$user/spool
-TempDir /tmp/cups-$user/spool/temp
-AccessLog /tmp/cups-$user/log/access_log
-ErrorLog /tmp/cups-$user/log/error_log
-PageLog /tmp/cups-$user/log/page_log
+RequestRoot $BASE/spool
+TempDir $BASE/spool/temp
+AccessLog $BASE/log/access_log
+ErrorLog $BASE/log/error_log
+PageLog $BASE/log/page_log
 EOF
 
 if test $ssltype != 0 -a `uname` = Darwin; then
-       echo "ServerCertificate $HOME/Library/Keychains/login.keychain" >> /tmp/cups-$user/cups-files.conf
+       echo "ServerKeychain $HOME/Library/Keychains/login.keychain" >> $BASE/cups-files.conf
 fi
 
 #
@@ -503,7 +515,7 @@ echo "Creating printers.conf for test..."
 
 i=1
 while test $i -le $nprinters1; do
-       cat >>/tmp/cups-$user/printers.conf <<EOF
+       cat >>$BASE/printers.conf <<EOF
 <Printer test-$i>
 Accepting Yes
 DeviceURI file:/dev/null
@@ -515,13 +527,13 @@ StateMessage Printer $1 is idle.
 </Printer>
 EOF
 
-       cp testps.ppd /tmp/cups-$user/ppd/test-$i.ppd
+       cp testps.ppd $BASE/ppd/test-$i.ppd
 
        i=`expr $i + 1`
 done
 
 while test $i -le $nprinters2; do
-       cat >>/tmp/cups-$user/printers.conf <<EOF
+       cat >>$BASE/printers.conf <<EOF
 <Printer test-$i>
 Accepting Yes
 DeviceURI file:/dev/null
@@ -536,10 +548,10 @@ EOF
        i=`expr $i + 1`
 done
 
-if test -f /tmp/cups-$user/printers.conf; then
-       cp /tmp/cups-$user/printers.conf /tmp/cups-$user/printers.conf.orig
+if test -f $BASE/printers.conf; then
+       cp $BASE/printers.conf $BASE/printers.conf.orig
 else
-       touch /tmp/cups-$user/printers.conf.orig
+       touch $BASE/printers.conf.orig
 fi
 
 #
@@ -580,16 +592,16 @@ export SHLIB_PATH
 
 CUPS_DISABLE_APPLE_DEFAULT=yes; export CUPS_DISABLE_APPLE_DEFAULT
 CUPS_SERVER=localhost:8631; export CUPS_SERVER
-CUPS_SERVERROOT=/tmp/cups-$user; export CUPS_SERVERROOT
-CUPS_STATEDIR=/tmp/cups-$user; export CUPS_STATEDIR
-CUPS_DATADIR=/tmp/cups-$user/share; export CUPS_DATADIR
-LOCALEDIR=/tmp/cups-$user/share/locale; export LOCALEDIR
+CUPS_SERVERROOT=$BASE; export CUPS_SERVERROOT
+CUPS_STATEDIR=$BASE; export CUPS_STATEDIR
+CUPS_DATADIR=$BASE/share; export CUPS_DATADIR
+LOCALEDIR=$BASE/share/locale; export LOCALEDIR
 
 #
 # Set a new home directory to avoid getting user options mixed in...
 #
 
-HOME=/tmp/cups-$user
+HOME=$BASE
 export HOME
 
 #
@@ -607,14 +619,14 @@ export LC_MESSAGES
 #
 
 echo "Starting scheduler:"
-echo "    $VALGRIND ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &"
+echo "    $VALGRIND ../scheduler/cupsd -c $BASE/cupsd.conf -f >$BASE/log/debug_log 2>&1 &"
 echo ""
 
 if test `uname` = Darwin -a "x$VALGRIND" = x; then
        DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib
-       ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &
+       ../scheduler/cupsd -c $BASE/cupsd.conf -f >$BASE/log/debug_log 2>&1 &
 else
-       $VALGRIND ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &
+       $VALGRIND ../scheduler/cupsd -c $BASE/cupsd.conf -f >$BASE/log/debug_log 2>&1 &
 fi
 
 cupsd=$!
@@ -625,7 +637,7 @@ if test "x$testtype" = x0; then
        echo ""
 
        # Create a helper script to run programs with...
-       runcups="/tmp/cups-$user/runcups"
+       runcups="$BASE/runcups"
 
        echo "#!/bin/sh" >$runcups
        echo "# Helper script for running CUPS test instance." >>$runcups
@@ -683,7 +695,7 @@ done
 #
 
 date=`date "+%Y-%m-%d"`
-strfile=/tmp/cups-$user/cups-str-1.7-$date-$user.html
+strfile=$BASE/cups-str-2.0-$date-$user.html
 
 rm -f $strfile
 cat str-header.html >$strfile
@@ -755,6 +767,35 @@ for file in 5*.sh; do
        fi
 done
 
+#
+# Restart the server...
+#
+
+echo $ac_n "Performing restart test: $ac_c"
+echo "" >>$strfile
+echo "\"5.10-restart\":" >>$strfile
+
+kill -HUP $cupsd
+
+while true; do
+       running=`../systemv/lpstat -r 2>/dev/null`
+       if test "x$running" = "xscheduler is running"; then
+               break
+       fi
+
+       sleep 10
+done
+
+description="`lpstat -l -p Test1 | grep Description | sed -e '1,$s/^[^:]*: //g'`"
+if test "x$description" != "xTest Printer 1"; then
+       echo "Failed, printer-info for Test1 is '$description', expected 'Test Printer 1'." >>$strfile
+       echo "FAIL (got '$description', expected 'Test Printer 1')"
+       fail=`expr $fail + 1`
+else
+       echo "Passed." >>$strfile
+       echo PASS
+fi
+
 echo "</PRE>" >>$strfile
 
 #
@@ -778,7 +819,7 @@ echo ""
 echo "<H2>Summary</H2>" >>$strfile
 
 # Job control files
-count=`ls -1 /tmp/cups-$user/spool | wc -l`
+count=`ls -1 $BASE/spool | wc -l`
 count=`expr $count - 1`
 if test $count != 0; then
        echo "FAIL: $count job control files were not purged."
@@ -790,7 +831,7 @@ else
 fi
 
 # Pages printed on Test1 (within 1 page for timing-dependent cancel issues)
-count=`$GREP '^Test1 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
+count=`$GREP '^Test1 ' $BASE/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
 expected=`expr $pjobs \* 2 + 34`
 expected2=`expr $expected + 2`
 if test $count -lt $expected -a $count -gt $expected2; then
@@ -803,7 +844,7 @@ else
 fi
 
 # Paged printed on Test2
-count=`$GREP '^Test2 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
+count=`$GREP '^Test2 ' $BASE/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
 expected=`expr $pjobs \* 2 + 3`
 if test $count != $expected; then
        echo "FAIL: Printer 'Test2' produced $count page(s), expected $expected."
@@ -815,7 +856,7 @@ else
 fi
 
 # Paged printed on Test3
-count=`$GREP '^Test3 ' /tmp/cups-$user/log/page_log | grep -v total | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
+count=`$GREP '^Test3 ' $BASE/log/page_log | grep -v total | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
 expected=2
 if test $count != $expected; then
        echo "FAIL: Printer 'Test3' produced $count page(s), expected $expected."
@@ -827,7 +868,7 @@ else
 fi
 
 # Requests logged
-count=`wc -l /tmp/cups-$user/log/access_log | awk '{print $1}'`
+count=`wc -l $BASE/log/access_log | awk '{print $1}'`
 expected=`expr 37 + 18 + 28 + $pjobs \* 8 + $pprinters \* $pjobs \* 4`
 if test $count != $expected; then
        echo "FAIL: $count requests logged, expected $expected."
@@ -839,11 +880,11 @@ else
 fi
 
 # Did CUPS-Get-Default get logged?
-if $GREP -q CUPS-Get-Default /tmp/cups-$user/log/access_log; then
+if $GREP -q CUPS-Get-Default $BASE/log/access_log; then
        echo "FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'"
        echo "<P>FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'</P>" >>$strfile
        echo "<PRE>" >>$strfile
-       $GREP CUPS-Get-Default /tmp/cups-$user/log/access_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
+       $GREP CUPS-Get-Default $BASE/log/access_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
        echo "</PRE>" >>$strfile
        fail=`expr $fail + 1`
 else
@@ -852,13 +893,13 @@ else
 fi
 
 # Emergency log messages
-count=`$GREP '^X ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
+count=`$GREP '^X ' $BASE/log/error_log | wc -l | awk '{print $1}'`
 if test $count != 0; then
        echo "FAIL: $count emergency messages, expected 0."
-       $GREP '^X ' /tmp/cups-$user/log/error_log
+       $GREP '^X ' $BASE/log/error_log
        echo "<P>FAIL: $count emergency messages, expected 0.</P>" >>$strfile
        echo "<PRE>" >>$strfile
-       $GREP '^X ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
+       $GREP '^X ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
        echo "</PRE>" >>$strfile
        fail=`expr $fail + 1`
 else
@@ -867,13 +908,13 @@ else
 fi
 
 # Alert log messages
-count=`$GREP '^A ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
+count=`$GREP '^A ' $BASE/log/error_log | wc -l | awk '{print $1}'`
 if test $count != 0; then
        echo "FAIL: $count alert messages, expected 0."
-       $GREP '^A ' /tmp/cups-$user/log/error_log
+       $GREP '^A ' $BASE/log/error_log
        echo "<P>FAIL: $count alert messages, expected 0.</P>" >>$strfile
        echo "<PRE>" >>$strfile
-       $GREP '^A ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
+       $GREP '^A ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
        echo "</PRE>" >>$strfile
        fail=`expr $fail + 1`
 else
@@ -882,13 +923,13 @@ else
 fi
 
 # Critical log messages
-count=`$GREP '^C ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
+count=`$GREP '^C ' $BASE/log/error_log | wc -l | awk '{print $1}'`
 if test $count != 0; then
        echo "FAIL: $count critical messages, expected 0."
-       $GREP '^C ' /tmp/cups-$user/log/error_log
+       $GREP '^C ' $BASE/log/error_log
        echo "<P>FAIL: $count critical messages, expected 0.</P>" >>$strfile
        echo "<PRE>" >>$strfile
-       $GREP '^C ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
+       $GREP '^C ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
        echo "</PRE>" >>$strfile
        fail=`expr $fail + 1`
 else
@@ -897,13 +938,13 @@ else
 fi
 
 # Error log messages
-count=`$GREP '^E ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
+count=`$GREP '^E ' $BASE/log/error_log | wc -l | awk '{print $1}'`
 if test $count != 33; then
        echo "FAIL: $count error messages, expected 33."
-       $GREP '^E ' /tmp/cups-$user/log/error_log
+       $GREP '^E ' $BASE/log/error_log
        echo "<P>FAIL: $count error messages, expected 33.</P>" >>$strfile
        echo "<PRE>" >>$strfile
-       $GREP '^E ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
+       $GREP '^E ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
        echo "</PRE>" >>$strfile
        fail=`expr $fail + 1`
 else
@@ -912,13 +953,13 @@ else
 fi
 
 # Warning log messages
-count=`$GREP '^W ' /tmp/cups-$user/log/error_log | $GREP -v CreateProfile | wc -l | awk '{print $1}'`
-if test $count != 9; then
-       echo "FAIL: $count warning messages, expected 9."
-       $GREP '^W ' /tmp/cups-$user/log/error_log
-       echo "<P>FAIL: $count warning messages, expected 9.</P>" >>$strfile
+count=`$GREP '^W ' $BASE/log/error_log | $GREP -v CreateProfile | wc -l | awk '{print $1}'`
+if test $count != 18; then
+       echo "FAIL: $count warning messages, expected 18."
+       $GREP '^W ' $BASE/log/error_log
+       echo "<P>FAIL: $count warning messages, expected 18.</P>" >>$strfile
        echo "<PRE>" >>$strfile
-       $GREP '^W ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
+       $GREP '^W ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
        echo "</PRE>" >>$strfile
        fail=`expr $fail + 1`
 else
@@ -927,13 +968,13 @@ else
 fi
 
 # Notice log messages
-count=`$GREP '^N ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
+count=`$GREP '^N ' $BASE/log/error_log | wc -l | awk '{print $1}'`
 if test $count != 0; then
        echo "FAIL: $count notice messages, expected 0."
-       $GREP '^N ' /tmp/cups-$user/log/error_log
+       $GREP '^N ' $BASE/log/error_log
        echo "<P>FAIL: $count notice messages, expected 0.</P>" >>$strfile
        echo "<PRE>" >>$strfile
-       $GREP '^N ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
+       $GREP '^N ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
        echo "</PRE>" >>$strfile
        fail=`expr $fail + 1`
 else
@@ -942,7 +983,7 @@ else
 fi
 
 # Info log messages
-count=`$GREP '^I ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
+count=`$GREP '^I ' $BASE/log/error_log | wc -l | awk '{print $1}'`
 if test $count = 0; then
        echo "FAIL: $count info messages, expected more than 0."
        echo "<P>FAIL: $count info messages, expected more than 0.</P>" >>$strfile
@@ -953,7 +994,7 @@ else
 fi
 
 # Debug log messages
-count=`$GREP '^D ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
+count=`$GREP '^D ' $BASE/log/error_log | wc -l | awk '{print $1}'`
 if test $count = 0; then
        echo "FAIL: $count debug messages, expected more than 0."
        echo "<P>FAIL: $count debug messages, expected more than 0.</P>" >>$strfile
@@ -964,7 +1005,7 @@ else
 fi
 
 # Debug2 log messages
-count=`$GREP '^d ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
+count=`$GREP '^d ' $BASE/log/error_log | wc -l | awk '{print $1}'`
 if test $count = 0; then
        echo "FAIL: $count debug2 messages, expected more than 0."
        echo "<P>FAIL: $count debug2 messages, expected more than 0.</P>" >>$strfile
@@ -977,17 +1018,17 @@ fi
 # Log files...
 echo "<H2>access_log</H2>" >>$strfile
 echo "<PRE>" >>$strfile
-sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' /tmp/cups-$user/log/access_log >>$strfile
+sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' $BASE/log/access_log >>$strfile
 echo "</PRE>" >>$strfile
 
 echo "<H2>error_log</H2>" >>$strfile
 echo "<PRE>" >>$strfile
-$GREP -v '^d' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
+$GREP -v '^d' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
 echo "</PRE>" >>$strfile
 
 echo "<H2>page_log</H2>" >>$strfile
 echo "<PRE>" >>$strfile
-sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' /tmp/cups-$user/log/page_log >>$strfile
+sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' $BASE/log/page_log >>$strfile
 echo "</PRE>" >>$strfile
 
 #
@@ -1000,13 +1041,13 @@ echo ""
 
 if test $fail != 0; then
        echo "$fail tests failed."
-       cp /tmp/cups-$user/log/error_log error_log-$date-$user
+       cp $BASE/log/error_log error_log-$date-$user
        cp $strfile .
 else
        echo "All tests were successful."
 fi
 
-echo "Log files can be found in /tmp/cups-$user/log."
+echo "Log files can be found in $BASE/log."
 echo "A HTML report was created in $strfile."
 echo ""
 
@@ -1019,5 +1060,5 @@ if test $fail != 0; then
 fi
 
 #
-# End of "$Id: run-stp-tests.sh 11396 2013-11-06 20:09:03Z msweet $"
+# End of "$Id: run-stp-tests.sh 12065 2014-07-30 17:56:35Z msweet $"
 #
index 7d97e91bffb8e3bec81b2d57ce5af051b572df8c..4dafd6806be7fbd602ae8ea20ea8e760c7bafe3b 100644 (file)
@@ -1,10 +1,10 @@
 <HTML>
 <HEAD>
        <META NAME="Description" CONTENT="CUPS Test Report">
-       <META NAME="COPYRIGHT" CONTENT="Copyright 2007-2012, All Rights Reserved">
-       <META NAME="DOCNUMBER" CONTENT="CUPS-STR-1.7">
+       <META NAME="COPYRIGHT" CONTENT="Copyright 2007-2013, All Rights Reserved">
+       <META NAME="DOCNUMBER" CONTENT="CUPS-STR-2.0">
        <META NAME="Author" CONTENT="Apple Inc.">
-       <TITLE>CUPS 1.7 Software Test Report</TITLE>
+       <TITLE>CUPS 2.0 Software Test Report</TITLE>
        <STYLE TYPE="text/css"><!--
        PRE {
          font-size: 80%;
 </HEAD>
 <BODY>
 
-<H1>CUPS 1.7 Software Test Report</H1>
+<H1>CUPS 2.0 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 1.7.
+are used to evaluate the stability and compliance of CUPS Version 2.0.
 
 <H2>Document Overview</H2>
 
index ddc5c2d8fbbc1e5c9ffaeb37e4e62ca373ac24f7..a71994ed5a78198024fe7ae0fc460c600ab6e0fb 100644 (file)
@@ -1,6 +1,6 @@
 *PPD-Adobe: "4.3"
 *%
-*% "$Id: testhp.ppd 11397 2013-11-06 20:09:46Z msweet $"
+*% "$Id: testhp.ppd 11398 2013-11-06 20:11:11Z msweet $"
 *%
 *% 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 11397 2013-11-06 20:09:46Z msweet $".
+*% End of "$Id: testhp.ppd 11398 2013-11-06 20:11:11Z msweet $".
 *%
index 462c42b356280e77bac77a6ae48c16aee8b3e660..6251d06e350a67c1ee7189db2c850c554b61272d 100644 (file)
@@ -1,6 +1,6 @@
 *PPD-Adobe: "4.3"
 *%
-*% "$Id: testps.ppd 11397 2013-11-06 20:09:46Z msweet $"
+*% "$Id: testps.ppd 11398 2013-11-06 20:11:11Z msweet $"
 *%
 *%   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 11397 2013-11-06 20:09:46Z msweet $".
+*% End of "$Id: testps.ppd 11398 2013-11-06 20:11:11Z msweet $".
 *%
index c0e9812bd3591fa5ca6e70bca1a9923086f5d3e6..98db19a3be9ecc9b8ca662438c66801fbb7c98c9 100644 (file)
@@ -1,16 +1,16 @@
 /*
- * "$Id: config.h 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: config.h 12031 2014-07-15 19:57:59Z msweet $"
  *
- *   Configuration file for CUPS on Windows.
+ * Configuration file for CUPS on Windows.
  *
- *   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/".
  */
 
 #ifndef _CUPS_CONFIG_H_
@@ -57,6 +57,7 @@
  * Map the POSIX sleep() and usleep() functions to the Win32 Sleep() function...
  */
 
+typedef unsigned long useconds_t;
 #define sleep(X)       Sleep(1000 * (X))
 #define usleep(X)      Sleep((X)/1000)
 
@@ -86,8 +87,8 @@
  * Version of software...
  */
 
-#define CUPS_SVERSION "CUPS v1.7.0"
-#define CUPS_MINIMAL "CUPS/1.7.0"
+#define CUPS_SVERSION "CUPS v2.0.0"
+#define CUPS_MINIMAL "CUPS/2.0.0"
 
 
 /*
 
 /* #undef HAVE_CDSASSL */
 /* #undef HAVE_GNUTLS */
-/* #undef HAVE_LIBSSL */
 #define HAVE_SSPISSL
 #define HAVE_SSL
 
 
-/*
- * Do we have the SSL_set_tlsext_host_name function?
- */
-
-/* #undef HAVE_SSL_SET_TLSEXT_HOST_NAME */
-
-
 /*
  * What Security framework headers do we have?
  */
 /* #undef HAVE_STRUCT_SOCKADDR_SA_LEN */
 
 
-/*
- * Do we have the AIX usersec.h header file?
- */
-
-/* #undef HAVE_USERSEC_H */
-
-
 /*
  * Do we have pthread support?
  */
 /* #undef HAVE_NOTIFY_POST */
 
 
-/*
- * Do we have Darwin's IOKit private headers?
- */
-
-/* #undef HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H */
-
-
 /*
  * Do we have DBUS?
  */
@@ -771,5 +750,5 @@ static __inline int _cups_abs(int i) { return (i < 0 ? -i : i); }
 #endif /* !_CUPS_CONFIG_H_ */
 
 /*
- * End of "$Id: config.h 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: config.h 12031 2014-07-15 19:57:59Z msweet $".
  */
index 64e65c825b26bfc8b1b8356ae142f1749e82e668..555cd2e4824719be90a5a3dde2f3863aa15c9172 100644 (file)
         }\r
         "Entry"\r
         {\r
-        "MsmKey" = "8:_4454D1BB58774F95972FB94388DC5E6A"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
+        "MsmKey" = "8:_4273A45FE6E54897AC9A4F66D9AA59EC"\r
+        "OwnerKey" = "8:_8A6033CAC27E4C1185B4FDF7D2BF8D2E"\r
         "MsmSig" = "8:_UNDEFINED"\r
         }\r
         "Entry"\r
         {\r
-        "MsmKey" = "8:_46AB64FF360D4F309866FF5F49C65D88"\r
+        "MsmKey" = "8:_4454D1BB58774F95972FB94388DC5E6A"\r
         "OwnerKey" = "8:_UNDEFINED"\r
         "MsmSig" = "8:_UNDEFINED"\r
         }\r
         "Entry"\r
         {\r
-        "MsmKey" = "8:_4FEB166CB8954184934B4C82D1A99107"\r
-        "OwnerKey" = "8:_73D53D5857124164BE3824FD94E0CB2A"\r
+        "MsmKey" = "8:_46AB64FF360D4F309866FF5F49C65D88"\r
+        "OwnerKey" = "8:_UNDEFINED"\r
         "MsmSig" = "8:_UNDEFINED"\r
         }\r
         "Entry"\r
         }\r
         "Entry"\r
         {\r
-        "MsmKey" = "8:_73D53D5857124164BE3824FD94E0CB2A"\r
-        "OwnerKey" = "8:_58DC0E72F0944BEFB927AED718CD1660"\r
+        "MsmKey" = "8:_80DBA85C961E447CB92C95CE1F38C56B"\r
+        "OwnerKey" = "8:_UNDEFINED"\r
         "MsmSig" = "8:_UNDEFINED"\r
         }\r
         "Entry"\r
         {\r
-        "MsmKey" = "8:_73D53D5857124164BE3824FD94E0CB2A"\r
-        "OwnerKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"\r
+        "MsmKey" = "8:_842C04D73EBC4F5DBC2FD58D5B98D5D1"\r
+        "OwnerKey" = "8:_UNDEFINED"\r
         "MsmSig" = "8:_UNDEFINED"\r
         }\r
         "Entry"\r
         {\r
-        "MsmKey" = "8:_73D53D5857124164BE3824FD94E0CB2A"\r
-        "OwnerKey" = "8:_E97571D3FBE048DABDC59B37762D800F"\r
+        "MsmKey" = "8:_8A6033CAC27E4C1185B4FDF7D2BF8D2E"\r
+        "OwnerKey" = "8:_58DC0E72F0944BEFB927AED718CD1660"\r
         "MsmSig" = "8:_UNDEFINED"\r
         }\r
         "Entry"\r
         {\r
-        "MsmKey" = "8:_73D53D5857124164BE3824FD94E0CB2A"\r
-        "OwnerKey" = "8:_D02EB13951314EFD9C539150EF8E53B8"\r
+        "MsmKey" = "8:_8A6033CAC27E4C1185B4FDF7D2BF8D2E"\r
+        "OwnerKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"\r
         "MsmSig" = "8:_UNDEFINED"\r
         }\r
         "Entry"\r
         {\r
-        "MsmKey" = "8:_80DBA85C961E447CB92C95CE1F38C56B"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
+        "MsmKey" = "8:_8A6033CAC27E4C1185B4FDF7D2BF8D2E"\r
+        "OwnerKey" = "8:_E97571D3FBE048DABDC59B37762D800F"\r
         "MsmSig" = "8:_UNDEFINED"\r
         }\r
         "Entry"\r
         {\r
-        "MsmKey" = "8:_842C04D73EBC4F5DBC2FD58D5B98D5D1"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
+        "MsmKey" = "8:_8A6033CAC27E4C1185B4FDF7D2BF8D2E"\r
+        "OwnerKey" = "8:_D02EB13951314EFD9C539150EF8E53B8"\r
         "MsmSig" = "8:_UNDEFINED"\r
         }\r
         "Entry"\r
         {\r
         "Name" = "8:Microsoft Visual Studio"\r
         "ProductName" = "8:ipptool for Windows"\r
-        "ProductCode" = "8:{B5950B89-CE18-455C-B176-E0B74DCDF400}"\r
-        "PackageCode" = "8:{0307E5A5-247E-4097-A50B-35A35B548502}"\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:14.03.2800"\r
+        "ProductVersion" = "8:13.07.3100"\r
         "Manufacturer" = "8:Apple Inc."\r
         "ARPHELPTELEPHONE" = "8:"\r
         "ARPHELPLINK" = "8:http://www.cups.org/str.php"\r
         }\r
         "MergeModule"\r
         {\r
-            "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_4FEB166CB8954184934B4C82D1A99107"\r
+            "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_4273A45FE6E54897AC9A4F66D9AA59EC"\r
             {\r
             "UseDynamicProperties" = "11:TRUE"\r
             "IsDependency" = "11:TRUE"\r
             "Feature" = "8:"\r
             "IsolateTo" = "8:"\r
             }\r
-            "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_73D53D5857124164BE3824FD94E0CB2A"\r
+            "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_8A6033CAC27E4C1185B4FDF7D2BF8D2E"\r
             {\r
             "UseDynamicProperties" = "11:TRUE"\r
             "IsDependency" = "11:TRUE"\r
         {\r
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_58DC0E72F0944BEFB927AED718CD1660"\r
             {\r
-            "SourcePath" = "8:Win32\\Debug\\ippfind.exe"\r
+            "SourcePath" = "8:Win32\\Release\\ippfind.exe"\r
             "TargetName" = "8:"\r
             "Tag" = "8:"\r
             "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
             }\r
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_D02EB13951314EFD9C539150EF8E53B8"\r
             {\r
-            "SourcePath" = "8:Win32\\Debug\\regex.dll"\r
+            "SourcePath" = "8:Win32\\Release\\regex.dll"\r
             "TargetName" = "8:"\r
             "Tag" = "8:"\r
             "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
             }\r
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_E97571D3FBE048DABDC59B37762D800F"\r
             {\r
-            "SourcePath" = "8:Win32\\Debug\\ipptool.exe"\r
+            "SourcePath" = "8:Win32\\Release\\ipptool.exe"\r
             "TargetName" = "8:"\r
             "Tag" = "8:"\r
             "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
             }\r
             "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_EA282F32A10B4ED1A81AA6133B997C6A"\r
             {\r
-            "SourcePath" = "8:Win32\\Debug\\libcups2.dll"\r
+            "SourcePath" = "8:Win32\\Release\\libcups2.dll"\r
             "TargetName" = "8:"\r
             "Tag" = "8:"\r
             "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
index 2580eb21a2406b7bed4e40f52a3f3aec7db23dc2..d2f0e4fac708d89b486ed388b5e6495783c90b1a 100644 (file)
                                        />\r
                                </FileConfiguration>\r
                        </File>\r
+                       <File\r
+                               RelativePath="..\cups\libcups2.def"\r
+                               >\r
+                       </File>\r
                        <File\r
                                RelativePath="..\cups\localize.c"\r
                                >\r
                                        />\r
                                </FileConfiguration>\r
                        </File>\r
-                       <File\r
-                               RelativePath="..\cups\sspi.c"\r
-                               >\r
-                       </File>\r
                        <File\r
                                RelativePath="..\cups\string.c"\r
                                >\r
                                RelativePath="..\cups\thread.c"\r
                                >\r
                        </File>\r
+                       <File\r
+                               RelativePath="..\cups\tls.c"\r
+                               >\r
+                       </File>\r
                        <File\r
                                RelativePath="..\cups\transcode.c"\r
                                >\r
                                RelativePath="..\cups\pwg-private.h"\r
                                >\r
                        </File>\r
-                       <File\r
-                               RelativePath="..\cups\sspi-private.h"\r
-                               >\r
-                       </File>\r
                        <File\r
                                RelativePath="..\cups\string-private.h"\r
                                >\r
index 5df5d53fc15586821ba70b09de9addf57389ed2f..22e74336aa2d148ade53803a6a5963534bf78060 100644 (file)
@@ -1345,7 +1345,7 @@ sopno finish;                     /* to this less one */
                return(ret);
        enlarge(p, p->ssize + len);     /* this many unexpected additions */
        assert(p->ssize >= p->slen + len);
-       (void) memcpy((char *)(p->strip + p->slen),
+       (void) memmove((char *)(p->strip + p->slen),
                (char *)(p->strip + start), (size_t)len*sizeof(sop));
        p->slen += len;
        return(ret);
index b780dd29d175fab6b4136a1f5d726c1b018b25e2..dd1afa698268fb86ad597d2a8b4c57f2e739b96d 100644 (file)
@@ -1,5 +1,5 @@
 @rem Script to enable debug logging for IPPTOOL
 set CUPS_DEBUG_LOG=ipptool.log
 set CUPS_DEBUG_LEVEL=6
-set "CUPS_DEBUG_FILTER=^(http|_http|ipp|_ipp|cupsDo|cupsGetResponse|cupsSend|cupsWrite|sspi|_sspi)"
+set "CUPS_DEBUG_FILTER=^(http|_http|ipp|_ipp|cupsDo|cupsGetResponse|cupsSend|cupsWrite)"
 
index b16aca116250019b0e28893ab70f9ae3507cb5c8..bff5aa03633a7de9301dbd9e51fe365489868ca4 100644 (file)
@@ -14,7 +14,9 @@
                        );
                        dependencies = (
                                726AD704135E8AA1002C930D /* PBXTargetDependency */,
+                               2767FC5419267469000F61D3 /* PBXTargetDependency */,
                                273BF6DE1333B6370022CAAB /* PBXTargetDependency */,
+                               2767FC5619267469000F61D3 /* PBXTargetDependency */,
                                278C58D6136B641D00836530 /* PBXTargetDependency */,
                                270CCDB2135E3CDE00007BE2 /* PBXTargetDependency */,
                        );
                276683FD1337F7B8000D33D0 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
                2766840F1337FA38000D33D0 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
                276684111337FA7C000D33D0 /* cupsaddsmb.c in Sources */ = {isa = PBXBuildFile; fileRef = 276684101337FA7C000D33D0 /* cupsaddsmb.c */; };
+               2767FC5219266A36000F61D3 /* testdest.c in Sources */ = {isa = PBXBuildFile; fileRef = 2767FC5119266A36000F61D3 /* testdest.c */; };
+               2767FC57192674C4000F61D3 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               2767FC58192674E0000F61D3 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               2767FC5F1926750C000F61D3 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC591926750C000F61D3 /* CoreFoundation.framework */; };
+               2767FC601926750C000F61D3 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5A1926750C000F61D3 /* libiconv.dylib */; };
+               2767FC611926750C000F61D3 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5B1926750C000F61D3 /* libresolv.dylib */; };
+               2767FC621926750C000F61D3 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5C1926750C000F61D3 /* libz.dylib */; };
+               2767FC631926750C000F61D3 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5D1926750C000F61D3 /* Security.framework */; };
+               2767FC641926750C000F61D3 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */; };
+               2767FC6519267538000F61D3 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               2767FC6619267538000F61D3 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC591926750C000F61D3 /* CoreFoundation.framework */; };
+               2767FC6719267538000F61D3 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5B1926750C000F61D3 /* libresolv.dylib */; };
+               2767FC6819267538000F61D3 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5C1926750C000F61D3 /* libz.dylib */; };
+               2767FC6919267538000F61D3 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5D1926750C000F61D3 /* Security.framework */; };
+               2767FC6A19267538000F61D3 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */; };
+               2767FC6B192685E6000F61D3 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               2767FC6C192685E6000F61D3 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC591926750C000F61D3 /* CoreFoundation.framework */; };
+               2767FC6D192685E6000F61D3 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5A1926750C000F61D3 /* libiconv.dylib */; };
+               2767FC6E192685E6000F61D3 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5B1926750C000F61D3 /* libresolv.dylib */; };
+               2767FC6F192685E6000F61D3 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5C1926750C000F61D3 /* libz.dylib */; };
+               2767FC70192685E6000F61D3 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5D1926750C000F61D3 /* Security.framework */; };
+               2767FC71192685E6000F61D3 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */; };
+               2767FC7219268F06000F61D3 /* dest-job.c in Sources */ = {isa = PBXBuildFile; fileRef = 72CF95E018A13543000FCAE4 /* dest-job.c */; };
+               2767FC7319268F09000F61D3 /* dest-localization.c in Sources */ = {isa = PBXBuildFile; fileRef = 72CF95E118A13543000FCAE4 /* dest-localization.c */; };
+               2767FC7419268F0C000F61D3 /* dest-options.c in Sources */ = {isa = PBXBuildFile; fileRef = 72CF95E218A13543000FCAE4 /* dest-options.c */; };
                278C58E3136B647200836530 /* testhttp.c in Sources */ = {isa = PBXBuildFile; fileRef = 278C58E2136B647200836530 /* testhttp.c */; };
                278C58E9136B64B000836530 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
                278C58EA136B64B000836530 /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
                278C58EB136B64B000836530 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
                278C58EC136B64B000836530 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               7200511218F492F200E7B81B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
                720DD6CD1358FD720064AA82 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
                720DD6D31358FDDE0064AA82 /* snmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 720DD6D21358FDDE0064AA82 /* snmp.c */; };
                720DD6D413590AB90064AA82 /* ieee1284.c in Sources */ = {isa = PBXBuildFile; fileRef = 724379CA1334000E009631B9 /* ieee1284.c */; };
                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 */; };
-               728FB7E8153600FA005426E1 /* tls.c in Sources */ = {isa = PBXBuildFile; fileRef = 728FB7E3153600FA005426E1 /* tls.c */; };
+               727AD5B719100A58009F6862 /* tls.c in Sources */ = {isa = PBXBuildFile; fileRef = 727AD5B619100A58009F6862 /* tls.c */; };
+               727AD5B819100A58009F6862 /* tls.c in Sources */ = {isa = PBXBuildFile; fileRef = 727AD5B619100A58009F6862 /* tls.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 */; };
+               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 */; };
+               72BFD5FE191AF0A30005DA37 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EF1536167A005426E1 /* libiconv.dylib */; };
+               72BFD5FF191AF0A30005DA37 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7F01536167A005426E1 /* libresolv.dylib */; };
+               72BFD600191AF0A30005DA37 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EC1536161C005426E1 /* libz.dylib */; };
+               72BFD601191AF0A30005DA37 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               72BFD602191AF1270005DA37 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               72BFD603191AF1270005DA37 /* GSS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72D53A2915B49110003F877F /* GSS.framework */; };
+               72BFD604191AF1270005DA37 /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               72BFD605191AF1270005DA37 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EF1536167A005426E1 /* libiconv.dylib */; };
+               72BFD606191AF1270005DA37 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7F01536167A005426E1 /* libresolv.dylib */; };
+               72BFD607191AF1270005DA37 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EC1536161C005426E1 /* libz.dylib */; };
+               72BFD608191AF1270005DA37 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               72BFD609191AF14C0005DA37 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
                72C16CB9137B195D007E4BF4 /* file.c in Sources */ = {isa = PBXBuildFile; fileRef = 72C16CB8137B195D007E4BF4 /* file.c */; };
+               72CEF95618A966E000FA9B81 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               72CF95E318A13543000FCAE4 /* dest-job.c in Sources */ = {isa = PBXBuildFile; fileRef = 72CF95E018A13543000FCAE4 /* dest-job.c */; };
+               72CF95E418A13543000FCAE4 /* dest-localization.c in Sources */ = {isa = PBXBuildFile; fileRef = 72CF95E118A13543000FCAE4 /* dest-localization.c */; };
+               72CF95E518A13543000FCAE4 /* dest-options.c in Sources */ = {isa = PBXBuildFile; fileRef = 72CF95E218A13543000FCAE4 /* dest-options.c */; };
+               72CF95EC18A19134000FCAE4 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               72CF95F318A19165000FCAE4 /* ippfind.c in Sources */ = {isa = PBXBuildFile; fileRef = 72CF95F218A19165000FCAE4 /* ippfind.c */; };
                72D53A2A15B49110003F877F /* GSS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72D53A2915B49110003F877F /* GSS.framework */; };
                72D53A2D15B4913D003F877F /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72D53A2C15B4913D003F877F /* IOKit.framework */; };
                72D53A2E15B4915B003F877F /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
                        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 */;
                        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 */;
                        );
                        runOnlyForDeploymentPostprocessing = 1;
                };
+               2767FC4C19266A0D000F61D3 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
                278C58C9136B640300836530 /* CopyFiles */ = {
                        isa = PBXCopyFilesBuildPhase;
                        buildActionMask = 2147483647;
                        );
                        runOnlyForDeploymentPostprocessing = 1;
                };
+               72CF95ED18A19134000FCAE4 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
                72F75A501336F950004BB496 /* CopyFiles */ = {
                        isa = PBXCopyFilesBuildPhase;
                        buildActionMask = 2147483647;
 /* 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>"; };
                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>"; };
-               2732E091137A3F5200FAFEF6 /* lppasswd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lppasswd.c; path = ../systemv/lppasswd.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>"; };
                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>"; };
-               27D3037C134148CB00F022B1 /* libcups_s.exp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.exports; name = libcups_s.exp; path = ../cups/libcups_s.exp; sourceTree = "<group>"; };
                27D3037D134148CB00F022B1 /* libcups2.def */ = {isa = PBXFileReference; lastKnownFileType = text; name = libcups2.def; path = ../cups/libcups2.def; 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>"; };
                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>"; };
+               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>"; };
                72220FB313330BCE00FCA411 /* mime.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mime.c; path = ../scheduler/mime.c; sourceTree = "<group>"; };
                72220FB413330BCE00FCA411 /* mime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mime.h; path = ../scheduler/mime.h; sourceTree = "<group>"; };
                72220FB513330BCE00FCA411 /* type.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = type.c; path = ../scheduler/type.c; sourceTree = "<group>"; };
+               7226369B18AE6D19004ED309 /* org.cups.cups-lpd.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "org.cups.cups-lpd.plist"; path = "../scheduler/org.cups.cups-lpd.plist"; sourceTree = SOURCE_ROOT; };
+               7226369C18AE6D19004ED309 /* org.cups.cupsd.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = org.cups.cupsd.plist; path = ../scheduler/org.cups.cupsd.plist; sourceTree = SOURCE_ROOT; };
+               7226369D18AE73BB004ED309 /* config.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; name = config.h.in; path = ../config.h.in; sourceTree = "<group>"; };
                7234F41F1378A16F00D3E9C9 /* array-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "array-private.h"; path = "../cups/array-private.h"; sourceTree = "<group>"; };
                724378FD1333E43E009631B9 /* ipp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ipp; sourceTree = BUILT_PRODUCTS_DIR; };
                724379091333E4E3009631B9 /* backend-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "backend-private.h"; path = "../backend/backend-private.h"; sourceTree = "<group>"; };
                7271882213746EA8001A2036 /* rastertohp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = rastertohp.c; path = ../filter/rastertohp.c; sourceTree = "<group>"; };
                7271882313746EA8001A2036 /* rastertolabel.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = rastertolabel.c; path = ../filter/rastertolabel.c; sourceTree = "<group>"; };
                7271883C1374AB14001A2036 /* mime-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "mime-private.h"; path = "../scheduler/mime-private.h"; sourceTree = "<group>"; };
-               728FB7E0153600FA005426E1 /* tls-darwin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "tls-darwin.c"; path = "../scheduler/tls-darwin.c"; sourceTree = "<group>"; };
-               728FB7E1153600FA005426E1 /* tls-gnutls.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "tls-gnutls.c"; path = "../scheduler/tls-gnutls.c"; sourceTree = "<group>"; };
-               728FB7E2153600FA005426E1 /* tls-openssl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "tls-openssl.c"; path = "../scheduler/tls-openssl.c"; sourceTree = "<group>"; };
-               728FB7E3153600FA005426E1 /* tls.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tls.c; path = ../scheduler/tls.c; sourceTree = "<group>"; };
-               728FB7EC1536161C005426E1 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = ../../../../../usr/lib/libz.dylib; sourceTree = "<group>"; };
-               728FB7EF1536167A005426E1 /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = ../../../../../usr/lib/libiconv.dylib; sourceTree = "<group>"; };
-               728FB7F01536167A005426E1 /* libresolv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libresolv.dylib; path = ../../../../../usr/lib/libresolv.dylib; sourceTree = "<group>"; };
+               727AD5B619100A58009F6862 /* tls.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tls.c; path = ../cups/tls.c; sourceTree = "<group>"; };
+               727EF02F192E3498001EF690 /* admin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = admin.c; path = "../cgi-bin/admin.c"; sourceTree = "<group>"; };
+               727EF030192E3498001EF690 /* cgi-private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "cgi-private.h"; path = "../cgi-bin/cgi-private.h"; sourceTree = "<group>"; };
+               727EF031192E3498001EF690 /* cgi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = cgi.h; path = "../cgi-bin/cgi.h"; sourceTree = "<group>"; };
+               727EF032192E3498001EF690 /* classes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = classes.c; path = "../cgi-bin/classes.c"; sourceTree = "<group>"; };
+               727EF033192E3498001EF690 /* help-index.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "help-index.c"; path = "../cgi-bin/help-index.c"; sourceTree = "<group>"; };
+               727EF034192E3498001EF690 /* help-index.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "help-index.h"; path = "../cgi-bin/help-index.h"; sourceTree = "<group>"; };
+               727EF035192E3498001EF690 /* help.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = help.c; path = "../cgi-bin/help.c"; sourceTree = "<group>"; };
+               727EF036192E3498001EF690 /* html.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = html.c; path = "../cgi-bin/html.c"; sourceTree = "<group>"; };
+               727EF037192E3498001EF690 /* ipp-var.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "ipp-var.c"; path = "../cgi-bin/ipp-var.c"; sourceTree = "<group>"; };
+               727EF038192E3498001EF690 /* jobs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jobs.c; path = "../cgi-bin/jobs.c"; sourceTree = "<group>"; };
+               727EF039192E3498001EF690 /* makedocset.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = makedocset.c; path = "../cgi-bin/makedocset.c"; sourceTree = "<group>"; };
+               727EF03A192E3498001EF690 /* printers.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = printers.c; path = "../cgi-bin/printers.c"; sourceTree = "<group>"; };
+               727EF03B192E3498001EF690 /* search.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = search.c; path = "../cgi-bin/search.c"; sourceTree = "<group>"; };
+               727EF03C192E3498001EF690 /* template.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = template.c; path = "../cgi-bin/template.c"; sourceTree = "<group>"; };
+               727EF03D192E3498001EF690 /* testcgi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testcgi.c; path = "../cgi-bin/testcgi.c"; sourceTree = "<group>"; };
+               727EF03E192E3498001EF690 /* testhi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testhi.c; path = "../cgi-bin/testhi.c"; sourceTree = "<group>"; };
+               727EF03F192E3498001EF690 /* testtemplate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testtemplate.c; path = "../cgi-bin/testtemplate.c"; sourceTree = "<group>"; };
+               727EF040192E3498001EF690 /* var.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = var.c; path = "../cgi-bin/var.c"; sourceTree = "<group>"; };
+               727EF041192E3544001EF690 /* testadmin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testadmin.c; path = ../cups/testadmin.c; sourceTree = "<group>"; };
+               727EF042192E3544001EF690 /* testarray.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testarray.c; path = ../cups/testarray.c; sourceTree = "<group>"; };
+               727EF043192E3544001EF690 /* testcache.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testcache.c; path = ../cups/testcache.c; sourceTree = "<group>"; };
+               727EF044192E3544001EF690 /* testconflicts.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testconflicts.c; path = ../cups/testconflicts.c; sourceTree = "<group>"; };
+               727EF045192E3544001EF690 /* testfile.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testfile.c; path = ../cups/testfile.c; sourceTree = "<group>"; };
+               727EF046192E3544001EF690 /* testi18n.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testi18n.c; path = ../cups/testi18n.c; sourceTree = "<group>"; };
+               727EF047192E3544001EF690 /* testipp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testipp.c; path = ../cups/testipp.c; sourceTree = "<group>"; };
+               727EF048192E3544001EF690 /* testlang.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testlang.c; path = ../cups/testlang.c; sourceTree = "<group>"; };
+               727EF049192E3544001EF690 /* testoptions.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testoptions.c; path = ../cups/testoptions.c; sourceTree = "<group>"; };
+               727EF04A192E3544001EF690 /* testppd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testppd.c; path = ../cups/testppd.c; sourceTree = "<group>"; };
+               727EF04B192E3544001EF690 /* testpwg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testpwg.c; path = ../cups/testpwg.c; sourceTree = "<group>"; };
+               727EF04C192E3544001EF690 /* testsnmp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testsnmp.c; path = ../cups/testsnmp.c; sourceTree = "<group>"; };
+               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>"; };
+               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>"; };
                72A4332F155844CF002E172D /* libcups_static.a */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libcups_static.a; sourceTree = BUILT_PRODUCTS_DIR; };
                72C16CB8137B195D007E4BF4 /* file.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = file.c; path = ../scheduler/file.c; sourceTree = SOURCE_ROOT; };
-               72D53A2915B49110003F877F /* GSS.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GSS.framework; path = ../../../../../System/Library/Frameworks/GSS.framework; sourceTree = "<group>"; };
-               72D53A2C15B4913D003F877F /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = ../../../../../System/Library/Frameworks/IOKit.framework; sourceTree = "<group>"; };
-               72D53A3315B4925B003F877F /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = ../../../../../System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<group>"; };
+               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>"; };
+               72CF95E218A13543000FCAE4 /* dest-options.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "dest-options.c"; path = "../cups/dest-options.c"; sourceTree = "<group>"; };
+               72CF95F118A19134000FCAE4 /* ipptool copy */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "ipptool copy"; sourceTree = BUILT_PRODUCTS_DIR; };
+               72CF95F218A19165000FCAE4 /* ippfind.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ippfind.c; path = ../test/ippfind.c; sourceTree = "<group>"; };
+               72D53A2915B49110003F877F /* GSS.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GSS.framework; path = /System/Library/Frameworks/GSS.framework; sourceTree = "<absolute>"; };
+               72D53A2C15B4913D003F877F /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; };
+               72D53A3315B4925B003F877F /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<absolute>"; };
                72D53A3615B4929D003F877F /* colorman.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = colorman.c; path = ../scheduler/colorman.c; sourceTree = "<group>"; };
                72D53A3715B4929D003F877F /* colorman.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = colorman.h; path = ../scheduler/colorman.h; sourceTree = "<group>"; };
-               72D53A3915B492FA003F877F /* libpam.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libpam.dylib; path = ../../../../../usr/lib/libpam.dylib; sourceTree = "<group>"; };
+               72D53A3915B492FA003F877F /* libpam.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libpam.dylib; path = /usr/lib/libpam.dylib; sourceTree = "<absolute>"; };
+               72E65BA318DC797E00097E89 /* configure.ac */ = {isa = PBXFileReference; lastKnownFileType = text; name = configure.ac; path = ../configure.ac; sourceTree = "<group>"; };
+               72E65BA418DC799B00097E89 /* cups-common.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-common.m4"; path = "../config-scripts/cups-common.m4"; sourceTree = "<group>"; };
+               72E65BA518DC799B00097E89 /* cups-compiler.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-compiler.m4"; path = "../config-scripts/cups-compiler.m4"; sourceTree = "<group>"; };
+               72E65BA618DC799B00097E89 /* cups-defaults.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-defaults.m4"; path = "../config-scripts/cups-defaults.m4"; sourceTree = "<group>"; };
+               72E65BA718DC799B00097E89 /* cups-directories.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-directories.m4"; path = "../config-scripts/cups-directories.m4"; sourceTree = "<group>"; };
+               72E65BA818DC799B00097E89 /* cups-dnssd.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-dnssd.m4"; path = "../config-scripts/cups-dnssd.m4"; sourceTree = "<group>"; };
+               72E65BA918DC799B00097E89 /* cups-gssapi.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-gssapi.m4"; path = "../config-scripts/cups-gssapi.m4"; sourceTree = "<group>"; };
+               72E65BAA18DC799B00097E89 /* cups-largefile.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-largefile.m4"; path = "../config-scripts/cups-largefile.m4"; sourceTree = "<group>"; };
+               72E65BAB18DC799B00097E89 /* cups-startup.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-startup.m4"; path = "../config-scripts/cups-startup.m4"; sourceTree = "<group>"; };
+               72E65BAC18DC799B00097E89 /* cups-libtool.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-libtool.m4"; path = "../config-scripts/cups-libtool.m4"; sourceTree = "<group>"; };
+               72E65BAD18DC799B00097E89 /* cups-manpages.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-manpages.m4"; path = "../config-scripts/cups-manpages.m4"; sourceTree = "<group>"; };
+               72E65BAE18DC799B00097E89 /* cups-network.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-network.m4"; path = "../config-scripts/cups-network.m4"; sourceTree = "<group>"; };
+               72E65BAF18DC799B00097E89 /* cups-opsys.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-opsys.m4"; path = "../config-scripts/cups-opsys.m4"; sourceTree = "<group>"; };
+               72E65BB018DC799B00097E89 /* cups-pam.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-pam.m4"; path = "../config-scripts/cups-pam.m4"; sourceTree = "<group>"; };
+               72E65BB118DC799B00097E89 /* cups-poll.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-poll.m4"; path = "../config-scripts/cups-poll.m4"; sourceTree = "<group>"; };
+               72E65BB218DC799B00097E89 /* cups-scripting.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-scripting.m4"; path = "../config-scripts/cups-scripting.m4"; sourceTree = "<group>"; };
+               72E65BB318DC799B00097E89 /* cups-sharedlibs.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-sharedlibs.m4"; path = "../config-scripts/cups-sharedlibs.m4"; sourceTree = "<group>"; };
+               72E65BB418DC799B00097E89 /* cups-ssl.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-ssl.m4"; path = "../config-scripts/cups-ssl.m4"; sourceTree = "<group>"; };
+               72E65BB518DC799B00097E89 /* cups-threads.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-threads.m4"; path = "../config-scripts/cups-threads.m4"; sourceTree = "<group>"; };
+               72E65BB618DC79CC00097E89 /* cups-config.in */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; name = "cups-config.in"; path = "../cups-config.in"; sourceTree = "<group>"; };
+               72E65BB718DC79CC00097E89 /* Makedefs.in */ = {isa = PBXFileReference; lastKnownFileType = text; name = Makedefs.in; path = ../Makedefs.in; sourceTree = "<group>"; };
+               72E65BB918DC7A3600097E89 /* doc */ = {isa = PBXFileReference; lastKnownFileType = folder; name = doc; path = ../doc; sourceTree = "<group>"; };
+               72E65BBA18DC7A3600097E89 /* man */ = {isa = PBXFileReference; lastKnownFileType = folder; name = man; path = ../man; sourceTree = "<group>"; };
+               72E65BBB18DC7A6B00097E89 /* api-array.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "api-array.header"; path = "../cups/api-array.header"; sourceTree = "<group>"; };
+               72E65BBC18DC7A6B00097E89 /* api-array.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "api-array.shtml"; path = "../cups/api-array.shtml"; sourceTree = "<group>"; };
+               72E65BBD18DC7A6B00097E89 /* api-cups.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "api-cups.header"; path = "../cups/api-cups.header"; sourceTree = "<group>"; };
+               72E65BBE18DC7A6B00097E89 /* api-cups.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "api-cups.shtml"; path = "../cups/api-cups.shtml"; sourceTree = "<group>"; };
+               72E65BBF18DC7A6B00097E89 /* api-filedir.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "api-filedir.header"; path = "../cups/api-filedir.header"; sourceTree = "<group>"; };
+               72E65BC018DC7A6B00097E89 /* api-filedir.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "api-filedir.shtml"; path = "../cups/api-filedir.shtml"; sourceTree = "<group>"; };
+               72E65BC118DC7A6B00097E89 /* api-filter.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "api-filter.header"; path = "../cups/api-filter.header"; sourceTree = "<group>"; };
+               72E65BC218DC7A6B00097E89 /* api-filter.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "api-filter.shtml"; path = "../cups/api-filter.shtml"; sourceTree = "<group>"; };
+               72E65BC318DC7A6B00097E89 /* api-httpipp.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "api-httpipp.header"; path = "../cups/api-httpipp.header"; sourceTree = "<group>"; };
+               72E65BC418DC7A6B00097E89 /* api-httpipp.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "api-httpipp.shtml"; path = "../cups/api-httpipp.shtml"; sourceTree = "<group>"; };
+               72E65BC518DC7A6B00097E89 /* api-overview.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "api-overview.header"; path = "../cups/api-overview.header"; 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>"; };
+               72E65BCE18DC7A9800097E89 /* postscript-driver.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "postscript-driver.shtml"; path = "../filter/postscript-driver.shtml"; sourceTree = "<group>"; };
+               72E65BCF18DC7A9800097E89 /* ppd-compiler.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "ppd-compiler.header"; path = "../filter/ppd-compiler.header"; sourceTree = "<group>"; };
+               72E65BD018DC7A9800097E89 /* ppd-compiler.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "ppd-compiler.shtml"; path = "../filter/ppd-compiler.shtml"; sourceTree = "<group>"; };
+               72E65BD118DC7A9800097E89 /* raster-driver.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "raster-driver.header"; path = "../filter/raster-driver.header"; sourceTree = "<group>"; };
+               72E65BD218DC7A9800097E89 /* raster-driver.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "raster-driver.shtml"; path = "../filter/raster-driver.shtml"; sourceTree = "<group>"; };
+               72E65BD318DC7A9800097E89 /* spec-ppd.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "spec-ppd.header"; path = "../filter/spec-ppd.header"; sourceTree = "<group>"; };
+               72E65BD418DC7A9800097E89 /* spec-ppd.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "spec-ppd.shtml"; path = "../filter/spec-ppd.shtml"; sourceTree = "<group>"; };
+               72E65BD518DC818400097E89 /* org.cups.cups-lpd.plist.in */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = "org.cups.cups-lpd.plist.in"; path = "../scheduler/org.cups.cups-lpd.plist.in"; sourceTree = SOURCE_ROOT; };
+               72E65BD618DC818400097E89 /* org.cups.cupsd.path.in */ = {isa = PBXFileReference; lastKnownFileType = text; name = org.cups.cupsd.path.in; path = ../scheduler/org.cups.cupsd.path.in; sourceTree = SOURCE_ROOT; };
+               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; };
                72F75A5B1336F988004BB496 /* cupstestppd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cupstestppd.c; path = ../systemv/cupstestppd.c; sourceTree = "<group>"; };
                72F75A611336F9A3004BB496 /* libcupsimage.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libcupsimage.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
                        isa = PBXFrameworksBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
+                               2767FC57192674C4000F61D3 /* libcups_static.a in Frameworks */,
                                278C58E9136B64B000836530 /* CoreFoundation.framework in Frameworks */,
                                278C58EA136B64B000836530 /* Kerberos.framework in Frameworks */,
                                278C58EB136B64B000836530 /* Security.framework in 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;
                };
                        isa = PBXFrameworksBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
+                               7200511218F492F200E7B81B /* CoreFoundation.framework in Frameworks */,
                                274FF6231333321400317ECB /* libcups.dylib in Frameworks */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                        isa = PBXFrameworksBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
+                               72CEF95618A966E000FA9B81 /* libcups.dylib in Frameworks */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
                        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;
                };
                        );
                        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;
                };
                        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;
                };
                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 */,
+                               727EF04C192E3544001EF690 /* testsnmp.c */,
+                               727EF04E192E3602001EF690 /* testspeed.c */,
+                               727EF04F192E3602001EF690 /* testsub.c */,
                        );
                        name = tests;
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
                274FF5D513332C2C00317ECB /* daemon */ = {
                        isa = PBXGroup;
                        );
                        name = daemon;
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
                274FF5F41333310400317ECB /* libcupsppdc */ = {
                        isa = PBXGroup;
                        );
                        name = libcupsppdc;
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
                274FF67313333B0A00317ECB /* commands */ = {
                        isa = PBXGroup;
                                274FF68713333B6E00317ECB /* cupsfilter.c */,
                                2732E08B137A3F5200FAFEF6 /* cupstestdsc.c */,
                                72F75A5B1336F988004BB496 /* cupstestppd.c */,
+                               72CF95F218A19165000FCAE4 /* ippfind.c */,
                                726AD701135E8A90002C930D /* ippserver.c */,
                                276683F91337F7A9000D33D0 /* ipptool.c */,
                                2732E08C137A3F5200FAFEF6 /* lp.c */,
                                2732E08E137A3F5200FAFEF6 /* lpinfo.c */,
                                2732E08F137A3F5200FAFEF6 /* lpmove.c */,
                                2732E090137A3F5200FAFEF6 /* lpoptions.c */,
-                               2732E091137A3F5200FAFEF6 /* lppasswd.c */,
                                2732E092137A3F5200FAFEF6 /* lpstat.c */,
                        );
                        name = commands;
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
                276683CB1337B1CC000D33D0 /* ppdc tools */ = {
                        isa = PBXGroup;
                        );
                        name = "ppdc tools";
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
                72220EAF1333047D00FCA411 /* Products */ = {
                        isa = PBXGroup;
                                726AD6F7135E88F0002C930D /* ippserver */,
                                278C58CB136B640300836530 /* testhttp */,
                                72A4332F155844CF002E172D /* libcups_static.a */,
+                               72CF95F118A19134000FCAE4 /* ipptool copy */,
+                               2767FC5019266A0D000F61D3 /* testdest */,
                        );
                        name = Products;
                        sourceTree = "<group>";
                        isa = PBXGroup;
                        children = (
                                276683561337A8C5000D33D0 /* cups.strings */,
-                               27D3037C134148CB00F022B1 /* libcups_s.exp */,
                                27D3037D134148CB00F022B1 /* libcups2.def */,
                                72220EB51333052D00FCA411 /* adminutil.c */,
                                72220EB81333056300FCA411 /* array.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 */,
                                72220EDB133305BB00FCA411 /* getifaddrs.c */,
                                72220EDC133305BB00FCA411 /* getputfile.c */,
                                72220EDD133305BB00FCA411 /* globals.c */,
+                               72220EE2133305BB00FCA411 /* http.c */,
                                72220EDE133305BB00FCA411 /* http-addr.c */,
                                72220EDF133305BB00FCA411 /* http-addrlist.c */,
                                72220EE1133305BB00FCA411 /* http-support.c */,
-                               72220EE2133305BB00FCA411 /* http.c */,
-                               72220EE5133305BB00FCA411 /* ipp-support.c */,
                                72220EE6133305BB00FCA411 /* ipp.c */,
+                               72220EE5133305BB00FCA411 /* ipp-support.c */,
                                72220EE8133305BB00FCA411 /* langprintf.c */,
                                72220EEA133305BB00FCA411 /* language.c */,
                                72220EEC133305BB00FCA411 /* localize.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;
                                72220FB413330BCE00FCA411 /* mime.h */,
                                72220EF7133305BB00FCA411 /* ppd.h */,
                                274FF6091333315100317ECB /* ppdc.h */,
+                               2767FC7519269687000F61D3 /* pwg.h */,
                                72220EFA133305BB00FCA411 /* raster.h */,
                                72220EFD133305BB00FCA411 /* sidechannel.h */,
                                72220F07133305BB00FCA411 /* transcode.h */,
                        );
                        name = "Public Headers";
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
                72220F461333060C00FCA411 /* Private Headers */ = {
                        isa = PBXGroup;
                                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 */,
+                               72E65BD618DC818400097E89 /* org.cups.cupsd.path.in */,
+                               7226369C18AE6D19004ED309 /* org.cups.cupsd.plist */,
+                               72E65BD718DC818400097E89 /* org.cups.cupsd.service.in */,
+                               72E65BD818DC818400097E89 /* org.cups.cupsd.socket.in */,
                                72D53A3615B4929D003F877F /* colorman.c */,
                                72D53A3715B4929D003F877F /* colorman.h */,
                                72220F6913330B0C00FCA411 /* auth.c */,
                                72220F8D13330B0C00FCA411 /* subscriptions.h */,
                                72220F8E13330B0C00FCA411 /* sysman.c */,
                                72220F8F13330B0C00FCA411 /* sysman.h */,
-                               728FB7E3153600FA005426E1 /* tls.c */,
-                               728FB7E0153600FA005426E1 /* tls-darwin.c */,
-                               728FB7E1153600FA005426E1 /* tls-gnutls.c */,
-                               728FB7E2153600FA005426E1 /* tls-openssl.c */,
                        );
                        name = cupsd;
                        path = .;
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
                72220FB013330B3400FCA411 /* libcupsmime */ = {
                        isa = PBXGroup;
                        );
                        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 */,
                        );
                        name = backends;
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
                7258EADC134594A8009286F1 /* filters */ = {
                        isa = PBXGroup;
                        );
                        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 */,
+                               727EF03D192E3498001EF690 /* testcgi.c */,
+                               727EF03E192E3498001EF690 /* testhi.c */,
+                               727EF03F192E3498001EF690 /* testtemplate.c */,
+                               727EF040192E3498001EF690 /* var.c */,
+                       );
+                       name = "cgi-bin";
+                       sourceTree = "<group>";
                };
                72BF96351333042100B1EAD7 = {
                        isa = PBXGroup;
                        children = (
-                               72D53A3915B492FA003F877F /* libpam.dylib */,
-                               72D53A3315B4925B003F877F /* ApplicationServices.framework */,
-                               72D53A2C15B4913D003F877F /* IOKit.framework */,
-                               72D53A2915B49110003F877F /* GSS.framework */,
-                               728FB7EF1536167A005426E1 /* libiconv.dylib */,
-                               728FB7F01536167A005426E1 /* libresolv.dylib */,
-                               728FB7EC1536161C005426E1 /* libz.dylib */,
-                               72220FB113330B4A00FCA411 /* Frameworks */,
+                               72E65BA218DC796500097E89 /* Autoconf Files */,
+                               72E65BB818DC79F800097E89 /* Documentation */,
                                72220F45133305D000FCA411 /* Public Headers */,
                                72220F461333060C00FCA411 /* Private Headers */,
                                72220EB41333050100FCA411 /* libcups */,
                                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;
                        tabWidth = 8;
                        wrapsLines = 0;
                };
+               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 = (
+                               72E65BDE18DCA35700097E89 /* CHANGES.txt */,
+                               72E65BDD18DCA35700097E89 /* CHANGES-1.7.txt */,
+                               72E65BDF18DCA35700097E89 /* CREDITS.txt */,
+                               72E65BE018DCA35700097E89 /* INSTALL.txt */,
+                               72E65BE118DCA35700097E89 /* IPPTOOL.txt */,
+                               72E65BE218DCA35700097E89 /* LICENSE.txt */,
+                               72E65BE318DCA35700097E89 /* README.txt */,
+                               72E65BB918DC7A3600097E89 /* doc */,
+                               72E65BBA18DC7A3600097E89 /* man */,
+                               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 */,
+                               72E65BCD18DC7A9800097E89 /* postscript-driver.header */,
+                               72E65BCE18DC7A9800097E89 /* postscript-driver.shtml */,
+                               72E65BCF18DC7A9800097E89 /* ppd-compiler.header */,
+                               72E65BD018DC7A9800097E89 /* ppd-compiler.shtml */,
+                               72E65BD118DC7A9800097E89 /* raster-driver.header */,
+                               72E65BD218DC7A9800097E89 /* raster-driver.shtml */,
+                               72E65BD318DC7A9800097E89 /* spec-ppd.header */,
+                               72E65BD418DC7A9800097E89 /* spec-ppd.shtml */,
+                       );
+                       name = Documentation;
+                       sourceTree = "<group>";
+               };
                72F75A681336FA42004BB496 /* libcupsimage */ = {
                        isa = PBXGroup;
                        children = (
                        );
                        name = libcupsimage;
                        sourceTree = "<group>";
+                       wrapsLines = 1;
                };
 /* End PBXGroup section */
 
                        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" */;
                        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" */;
                72BF96371333042100B1EAD7 /* Project object */ = {
                        isa = PBXProject;
                        attributes = {
-                               LastUpgradeCheck = 0500;
+                               LastUpgradeCheck = 0600;
                                ORGANIZATIONNAME = "Apple Inc.";
                        };
                        buildConfigurationList = 72BF963A1333042100B1EAD7 /* Build configuration list for PBXProject "CUPS" */;
                                72F75A511336F950004BB496 /* cupstestppd */,
                                724379461333FEA9009631B9 /* dnssd */,
                                724378FC1333E43E009631B9 /* ipp */,
+                               72CF95E618A19134000FCAE4 /* ippfind */,
                                726AD6F6135E88F0002C930D /* ippserver */,
                                276683EF1337F78E000D33D0 /* ipptool */,
                                724379171333E532009631B9 /* lpd */,
                                720DD6C11358FD5F0064AA82 /* snmp */,
                                7243792F1333FB85009631B9 /* socket */,
                                273BF6BC1333B5000022CAAB /* testcups */,
+                               2767FC4619266A0D000F61D3 /* testdest */,
                                278C58CA136B640300836530 /* testhttp */,
                                270CCDA6135E3C9E00007BE2 /* testmime */,
                                7243795A1333FF1D009631B9 /* usb */,
                                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 */,
                                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 */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
+               2767FC4919266A0D000F61D3 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2767FC5219266A36000F61D3 /* testdest.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
                278C58C7136B640300836530 /* Sources */ = {
                        isa = PBXSourcesBuildPhase;
                        buildActionMask = 2147483647;
                                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 */,
                                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 */,
                                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;
                };
                                72220FA613330B0C00FCA411 /* subscriptions.c in Sources */,
                                72220FA713330B0C00FCA411 /* sysman.c in Sources */,
                                72C16CB9137B195D007E4BF4 /* file.c in Sources */,
-                               728FB7E8153600FA005426E1 /* tls.c in Sources */,
                                72D53A3815B4929D003F877F /* colorman.c in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
+               72CF95E918A19134000FCAE4 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               72CF95F318A19165000FCAE4 /* ippfind.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
                72F75A4E1336F950004BB496 /* Sources */ = {
                        isa = PBXSourcesBuildPhase;
                        buildActionMask = 2147483647;
                        target = 276684031337FA1D000D33D0 /* cupsaddsmb */;
                        targetProxy = 276684121337FA8D000D33D0 /* PBXContainerItemProxy */;
                };
+               2767FC4719266A0D000F61D3 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 2767FC4819266A0D000F61D3 /* PBXContainerItemProxy */;
+               };
+               2767FC5419267469000F61D3 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 276683EF1337F78E000D33D0 /* ipptool */;
+                       targetProxy = 2767FC5319267469000F61D3 /* PBXContainerItemProxy */;
+               };
+               2767FC5619267469000F61D3 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 2767FC4619266A0D000F61D3 /* testdest */;
+                       targetProxy = 2767FC5519267469000F61D3 /* PBXContainerItemProxy */;
+               };
                278C58D6136B641D00836530 /* PBXTargetDependency */ = {
                        isa = PBXTargetDependency;
                        target = 278C58CA136B640300836530 /* testhttp */;
                        target = 274FF6891333B1C400317ECB /* libcups_static */;
                        targetProxy = 726AD705135E8AC5002C930D /* PBXContainerItemProxy */;
                };
+               72CF95E718A19134000FCAE4 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 72CF95E818A19134000FCAE4 /* PBXContainerItemProxy */;
+               };
                72F75A661336FA30004BB496 /* PBXTargetDependency */ = {
                        isa = PBXTargetDependency;
                        target = 72220EAD1333047D00FCA411 /* libcups */;
                        isa = XCBuildConfiguration;
                        buildSettings = {
                                PRODUCT_NAME = "$(TARGET_NAME)";
+                               SDKROOT = macosx;
                        };
                        name = Debug;
                };
                        isa = XCBuildConfiguration;
                        buildSettings = {
                                PRODUCT_NAME = "$(TARGET_NAME)";
+                               SDKROOT = macosx;
                        };
                        name = Release;
                };
                274FF5F0133330C800317ECB /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               COMBINE_HIDPI_IMAGES = YES;
                                EXECUTABLE_PREFIX = "";
                                INSTALL_PATH = /usr/lib;
                                PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
                274FF5F1133330C800317ECB /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               COMBINE_HIDPI_IMAGES = YES;
                                EXECUTABLE_PREFIX = "";
                                INSTALL_PATH = /usr/lib;
                                PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
                274FF6DE1333B1C400317ECB /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               COMBINE_HIDPI_IMAGES = YES;
                                EXECUTABLE_EXTENSION = a;
                                EXECUTABLE_PREFIX = "";
                                INSTALL_PATH = /usr/local/lib;
                274FF6DF1333B1C400317ECB /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               COMBINE_HIDPI_IMAGES = YES;
                                EXECUTABLE_EXTENSION = a;
                                EXECUTABLE_PREFIX = "";
                                INSTALL_PATH = /usr/local/lib;
                        };
                        name = Release;
                };
+               2767FC4E19266A0D000F61D3 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = testdest;
+                       };
+                       name = Debug;
+               };
+               2767FC4F19266A0D000F61D3 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = testdest;
+                       };
+                       name = Release;
+               };
                278C58D1136B640300836530 /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
                72220EB01333047D00FCA411 /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               COMBINE_HIDPI_IMAGES = YES;
                                EXECUTABLE_PREFIX = "";
                                INSTALL_PATH = /usr/lib;
                                PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
                72220EB11333047D00FCA411 /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               COMBINE_HIDPI_IMAGES = YES;
                                EXECUTABLE_PREFIX = "";
                                INSTALL_PATH = /usr/lib;
                                PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
                72220FAE13330B2300FCA411 /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               COMBINE_HIDPI_IMAGES = YES;
                                EXECUTABLE_PREFIX = "";
                                INSTALL_PATH = /usr/lib;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                72220FAF13330B2300FCA411 /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               COMBINE_HIDPI_IMAGES = YES;
                                EXECUTABLE_PREFIX = "";
                                INSTALL_PATH = /usr/lib;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                72BF963C1333042100B1EAD7 /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES;
+                               CLANG_WARN_ENUM_CONVERSION = YES;
+                               CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;
+                               CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
                                DEBUG_INFORMATION_FORMAT = dwarf;
                                GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
+                               GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
+                               GCC_TREAT_WARNINGS_AS_ERRORS = YES;
                                GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
                                GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
                                GCC_WARN_ABOUT_RETURN_TYPE = YES;
                                GCC_WARN_SHADOW = YES;
+                               GCC_WARN_SIGN_COMPARE = YES;
                                GCC_WARN_UNINITIALIZED_AUTOS = YES;
                                GCC_WARN_UNUSED_FUNCTION = YES;
                                GCC_WARN_UNUSED_LABEL = YES;
                72BF963D1333042100B1EAD7 /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES;
+                               CLANG_WARN_ENUM_CONVERSION = YES;
+                               CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;
+                               CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
                                DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+                               GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
+                               GCC_TREAT_WARNINGS_AS_ERRORS = YES;
                                GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
                                GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
                                GCC_WARN_ABOUT_RETURN_TYPE = YES;
                                GCC_WARN_SHADOW = YES;
+                               GCC_WARN_SIGN_COMPARE = YES;
                                GCC_WARN_UNINITIALIZED_AUTOS = YES;
                                GCC_WARN_UNUSED_FUNCTION = YES;
                                GCC_WARN_UNUSED_LABEL = YES;
                        };
                        name = Release;
                };
+               72CF95EF18A19134000FCAE4 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "ipptool copy";
+                       };
+                       name = Debug;
+               };
+               72CF95F018A19134000FCAE4 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "ipptool copy";
+                       };
+                       name = Release;
+               };
                72F75A591336F951004BB496 /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
                72F75A631336F9A3004BB496 /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               COMBINE_HIDPI_IMAGES = YES;
                                EXECUTABLE_PREFIX = "";
                                INSTALL_PATH = /usr/lib;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                72F75A641336F9A3004BB496 /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               COMBINE_HIDPI_IMAGES = YES;
                                EXECUTABLE_PREFIX = "";
                                INSTALL_PATH = /usr/lib;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Release;
                };
+               2767FC4D19266A0D000F61D3 /* Build configuration list for PBXNativeTarget "testdest" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               2767FC4E19266A0D000F61D3 /* Debug */,
+                               2767FC4F19266A0D000F61D3 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
                278C58D3136B640300836530 /* Build configuration list for PBXNativeTarget "testhttp" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Release;
                };
+               72CF95EE18A19134000FCAE4 /* Build configuration list for PBXNativeTarget "ippfind" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               72CF95EF18A19134000FCAE4 /* Debug */,
+                               72CF95F018A19134000FCAE4 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
                72F75A581336F951004BB496 /* Build configuration list for PBXNativeTarget "cupstestppd" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (
index f2cd5bdb86c94e67fc7322dd0900df9ddbfe1869..bd8124dc11922316bb5ce933cf593a13a1dec246 100644 (file)
@@ -1,17 +1,16 @@
-/* config.h.  Generated from config.h.in by configure.  */
 /*
- * "$Id: config.h 4216 2013-03-11 13:57:36Z msweet $"
+ * "$Id: config.h 11591 2014-02-14 16:07:13Z msweet $"
  *
- *   Configuration file for CUPS.
+ * Configuration file for CUPS and Xcode.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
+ * Copyright 2007-2014 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_CONFIG_H_
@@ -21,8 +20,8 @@
  * Version of software...
  */
 
-#define CUPS_SVERSION "CUPS v1.7.0"
-#define CUPS_MINIMAL "CUPS/1.7.0"
+#define CUPS_SVERSION "CUPS v2.0.0"
+#define CUPS_MINIMAL "CUPS/2.0.0"
 
 
 /*
@@ -33,6 +32,7 @@
 #define CUPS_DEFAULT_GROUP "_lp"
 #define CUPS_DEFAULT_SYSTEM_GROUPS "admin"
 #define CUPS_DEFAULT_PRINTOPERATOR_AUTH "@AUTHKEY(system.print.operator) @admin @lpadmin"
+#define CUPS_DEFAULT_SYSTEM_AUTHKEY "system.print.admin"
 
 
 /*
 #define CUPS_STATEDIR "/private/etc/cups"
 
 
+/*
+ * Do we have posix_spawn?
+ */
+
+#define HAVE_POSIX_SPAWN 1
+
+
 /*
  * Do we have ZLIB?
  */
 
 #define HAVE_CDSASSL 1
 /* #undef HAVE_GNUTLS */
-/* #undef HAVE_LIBSSL */
 #define HAVE_SSL 1
 
 
-/*
- * Do we have the SSL_set_tlsext_host_name function?
- */
-
-/* #undef HAVE_SSL_SET_TLSEXT_HOST_NAME */
-
-
 /*
  * What Security framework headers do we have?
  */
 #define HAVE_CSSMERRORSTRING 1
 
 
+/*
+ * Do we have the SecGenerateSelfSignedCertificate function?
+ */
+
+/* #undef HAVE_SECGENERATESELFSIGNEDCERTIFICATE */
+
+
+/*
+ * Do we have the SecKeychainOpen function?
+ */
+
+#define HAVE_SECKEYCHAINOPEN 1
+
+
 /*
  * Do we have libpaper?
  */
 /* #undef HAVE_STRUCT_SOCKADDR_SA_LEN */
 
 
-/*
- * Do we have the AIX usersec.h header file?
- */
-
-/* #undef HAVE_USERSEC_H */
-
-
 /*
  * Do we have pthread support?
  */
 
 #define HAVE_LAUNCH_H 1
 #define HAVE_LAUNCHD 1
+#undef HAVE_LAUNCH_ACTIVATE_SOCKET
 
 
 /*
 #define HAVE_NOTIFY_POST 1
 
 
-/*
- * Do we have Darwin's IOKit private headers?
- */
-
-/* #undef HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H */
-
-
 /*
  * Do we have DBUS?
  */
@@ -706,5 +706,5 @@ static __inline int _cups_abs(int i) { return (i < 0 ? -i : i); }
 #endif /* !_CUPS_CONFIG_H_ */
 
 /*
- * End of "$Id: config.h 4216 2013-03-11 13:57:36Z msweet $".
+ * End of "$Id: config.h 11591 2014-02-14 16:07:13Z msweet $".
  */