From 1a18c85cd15c6af88ec2c3a5ece0d67add6f56a7 Mon Sep 17 00:00:00 2001 From: Michael Sweet Date: Tue, 15 Mar 2016 10:40:21 -0400 Subject: [PATCH] Import CUPS v2.0b1 --- CHANGES-1.7.txt | 250 + CHANGES-IPPTOOL.txt | 9 +- CHANGES.txt | 307 +- INSTALL.txt | 2 +- IPPTOOL.txt | 4 +- LICENSE.txt | 20 +- Makedefs.in | 43 +- Makefile | 40 +- README.txt | 15 +- backend/Dependencies | 117 +- backend/Makefile | 32 +- backend/backend-private.h | 24 +- backend/dnssd.c | 58 +- backend/ieee1284.c | 48 +- backend/ipp.c | 173 +- backend/lpd.c | 99 +- backend/network.c | 84 +- backend/runloop.c | 41 +- backend/snmp-supplies.c | 53 +- backend/snmp.c | 67 +- backend/socket.c | 39 +- backend/testbackend.c | 44 +- backend/usb-darwin.c | 110 +- backend/usb-libusb.c | 52 +- backend/usb-unix.c | 33 +- berkeley/Dependencies | 41 +- berkeley/lpc.c | 34 +- berkeley/lpq.c | 60 +- berkeley/lpr.c | 26 +- cgi-bin/Dependencies | 39 +- cgi-bin/Makefile | 59 +- cgi-bin/admin.c | 76 +- cgi-bin/classes.c | 38 +- cgi-bin/help-index.c | 50 +- cgi-bin/ipp-var.c | 40 +- cgi-bin/jobs.c | 28 +- cgi-bin/printers.c | 38 +- cgi-bin/search.c | 34 +- cgi-bin/template.c | 49 +- cgi-bin/testcgi.c | 28 +- cgi-bin/var.c | 111 +- cgi-bin/websearch.c | 116 - conf/cups-files.conf.in | 8 +- conf/cupsd.conf.in | 9 +- conf/mime.types | 5 +- conf/snmp.conf.in | 10 +- config-scripts/cups-common.m4 | 14 +- config-scripts/cups-compiler.m4 | 96 +- config-scripts/cups-defaults.m4 | 17 +- config-scripts/cups-directories.m4 | 142 +- config-scripts/cups-dnssd.m4 | 4 +- config-scripts/cups-gssapi.m4 | 6 +- config-scripts/cups-largefile.m4 | 4 +- config-scripts/cups-launchd.m4 | 43 - config-scripts/cups-libtool.m4 | 4 +- config-scripts/cups-manpages.m4 | 28 +- config-scripts/cups-network.m4 | 23 +- config-scripts/cups-opsys.m4 | 4 +- config-scripts/cups-pam.m4 | 23 +- config-scripts/cups-poll.m4 | 4 +- config-scripts/cups-scripting.m4 | 4 +- config-scripts/cups-sharedlibs.m4 | 106 +- config-scripts/cups-ssl.m4 | 86 +- config-scripts/cups-startup.m4 | 176 + config-scripts/cups-threads.m4 | 4 +- config.h.in | 71 +- configure | 1060 +- configure.in => configure.ac | 29 +- cups/Dependencies | 439 +- cups/Makefile | 92 +- cups/adminutil.c | 41 +- cups/array.c | 92 +- cups/auth.c | 50 +- cups/backchannel.c | 30 +- cups/conflicts.c | 42 +- cups/cups-private.h | 8 +- cups/cups.h | 17 +- cups/debug.c | 57 +- cups/dest-job.c | 36 +- cups/dest-localization.c | 198 +- cups/dest-options.c | 68 +- cups/dest.c | 236 +- cups/emit.c | 79 +- cups/encode.c | 16 +- cups/file-private.h | 30 +- cups/file.c | 123 +- cups/file.h | 30 +- cups/getputfile.c | 39 +- cups/globals.c | 6 +- cups/http-addr.c | 257 +- cups/http-addrlist.c | 23 +- cups/http-private.h | 120 +- cups/http-support.c | 386 +- cups/http.c | 2172 +-- cups/http.h | 61 +- cups/ipp-private.h | 22 +- cups/ipp-support.c | 208 +- cups/ipp.c | 502 +- cups/ipp.h | 45 +- cups/langprintf.c | 61 +- cups/language.c | 74 +- cups/libcups2.def | 950 +- cups/libcups_s.exp | 85 - cups/localize.c | 89 +- cups/mark.c | 49 +- cups/md5.c | 12 +- cups/options.c | 43 +- cups/ppd-cache.c | 110 +- cups/ppd-private.h | 36 +- cups/ppd.c | 116 +- cups/pwg-media.c | 67 +- cups/pwg-private.h | 5 +- cups/request.c | 52 +- cups/sidechannel.c | 71 +- cups/snmp-private.h | 28 +- cups/snmp.c | 208 +- cups/sspi-private.h | 82 - cups/sspi.c | 1468 -- cups/string-private.h | 4 +- cups/string.c | 49 +- cups/tempfile.c | 72 +- cups/testarray.c | 33 +- cups/testcache.c | 98 + cups/testcups.c | 34 +- cups/testdest.c | 460 + cups/testfile.c | 64 +- cups/testhttp.c | 79 +- cups/testi18n.c | 53 +- cups/testipp.c | 109 +- cups/testppd.c | 52 +- cups/testpwg.c | 4 +- cups/testsnmp.c | 31 +- cups/thread-private.h | 22 +- cups/thread.c | 31 +- cups/tls-darwin.c | 1664 +++ cups/tls-gnutls.c | 1293 ++ cups/tls-sspi.c | 2363 +++ cups/tls.c | 57 + cups/transcode.c | 60 +- cups/usersys.c | 48 +- cups/util.c | 327 +- cups/versioning.h | 12 +- desktop/cups.desktop.in | 2 - doc/Makefile | 45 +- doc/apple-touch-icon.opacity | Bin 0 -> 13914 bytes doc/apple-touch-icon.png | Bin 0 -> 6139 bytes doc/ca/index.html.in | 105 - doc/cs/index.html.in | 105 - doc/cups-printable.css | 16 +- doc/cups.css | 182 +- doc/de/index.html.in | 105 - doc/es/index.html.in | 105 - doc/fr/index.html.in | 105 - doc/help/api-array.html | 16 +- doc/help/api-cgi.html | 16 +- doc/help/api-cups.html | 83 +- doc/help/api-filedir.html | 16 +- doc/help/api-filter.html | 16 +- doc/help/api-httpipp.html | 529 +- doc/help/api-mime.html | 16 +- doc/help/api-overview.html | 16 +- doc/help/api-ppd.html | 16 +- doc/help/api-ppdc.html | 16 +- doc/help/api-raster.html | 16 +- doc/help/license.html | 22 +- doc/help/man-backend.html | 292 +- doc/help/man-cancel.html | 128 +- doc/help/man-classes.conf.html | 123 +- doc/help/man-client.conf.html | 94 +- doc/help/man-cups-config.html | 167 +- doc/help/man-cups-deviced.html | 38 - doc/help/man-cups-driverd.html | 122 - doc/help/man-cups-files.conf.html | 303 +- doc/help/man-cups-lpd.html | 185 +- doc/help/man-cups-snmp.conf.html | 101 +- doc/help/man-cups-snmp.html | 75 +- doc/help/man-cups.html | 119 + doc/help/man-cupsaccept.html | 115 +- doc/help/man-cupsaddsmb.html | 191 +- doc/help/man-cupsctl.html | 122 +- doc/help/man-cupsd-helper.html | 84 + doc/help/man-cupsd-logs.html | 194 + doc/help/man-cupsd.conf.html | 1242 +- doc/help/man-cupsd.html | 153 +- doc/help/man-cupsenable.html | 144 +- doc/help/man-cupsfilter.html | 210 +- doc/help/man-cupstestdsc.html | 50 +- doc/help/man-cupstestppd.html | 234 +- doc/help/man-filter.html | 392 +- doc/help/man-ippfind.html | 462 +- doc/help/man-ipptool.html | 340 +- doc/help/man-ipptoolfile.html | 822 +- doc/help/man-lp.html | 421 +- doc/help/man-lpadmin.html | 382 +- doc/help/man-lpc.html | 89 +- doc/help/man-lpinfo.html | 203 +- doc/help/man-lpmove.html | 100 +- doc/help/man-lpoptions.html | 221 +- doc/help/man-lppasswd.html | 64 - doc/help/man-lpq.html | 96 +- doc/help/man-lpr.html | 223 +- doc/help/man-lprm.html | 109 +- doc/help/man-lpstat.html | 241 +- doc/help/man-mailto.conf.html | 68 +- doc/help/man-mime.convs.html | 55 +- doc/help/man-mime.types.html | 169 +- doc/help/man-notifier.html | 176 +- doc/help/man-ppdc.html | 124 +- doc/help/man-ppdcfile.html | 289 +- doc/help/man-ppdhtml.html | 53 +- doc/help/man-ppdi.html | 59 +- doc/help/man-ppdmerge.html | 53 +- doc/help/man-ppdpo.html | 64 +- doc/help/man-printers.conf.html | 142 +- doc/help/man-subscriptions.conf.html | 96 +- doc/help/overview.html | 9 +- doc/help/postscript-driver.html | 16 +- doc/help/ppd-compiler.html | 16 +- doc/help/raster-driver.html | 16 +- doc/help/ref-access_log.html | 140 - doc/help/ref-classes-conf.html | 565 - doc/help/ref-client-conf.html | 94 - doc/help/ref-cups-files-conf.html.in | 529 - doc/help/ref-cupsd-conf.html.in | 2155 --- doc/help/ref-error_log.html | 55 - doc/help/ref-mailto-conf.html | 108 - doc/help/ref-page_log.html | 77 - doc/help/ref-printers-conf.html | 719 - doc/help/ref-snmp-conf.html | 145 - doc/help/ref-subscriptions-conf.html | 354 - doc/help/security.html | 48 +- doc/help/spec-browsing.html | 0 doc/help/spec-cmp.html | 2 +- doc/help/spec-design.html | 6 +- doc/help/spec-ipp.html | 14 +- doc/help/spec-pdf.html | 11 +- doc/help/spec-ppd.html | 16 +- doc/help/whatsnew.html | 20 - doc/index.html.in | 160 +- doc/it/index.html.in | 105 - doc/ja/index.html.in | 105 - doc/pt_BR/index.html.in | 107 - doc/ru/index.html.in | 101 - filter/Dependencies | 73 +- filter/commandtops.c | 33 +- filter/common.c | 35 +- filter/error.c | 44 +- filter/gziptoany.c | 30 +- filter/interpret.c | 136 +- filter/pstops.c | 208 +- filter/raster.c | 181 +- filter/rasterbench.c | 37 +- filter/rastertoepson.c | 129 +- filter/rastertohp.c | 117 +- filter/rastertolabel.c | 124 +- filter/rastertopwg.c | 54 +- filter/testraster.c | 64 +- locale/Dependencies | 26 +- locale/Makefile | 38 +- locale/cups.header | 16 +- locale/cups.pot | 2303 +-- locale/cups.strings | 90 +- locale/cups_ca.po | 442 +- locale/cups_cs.po | 2649 ++-- locale/cups_de.po | 8739 ----------- locale/cups_es.po | 433 +- locale/cups_fr.po | 270 +- locale/cups_it.po | 433 +- locale/cups_ja.po | 429 +- locale/cups_pt_BR.po | 6019 -------- locale/cups_ru.po | 299 +- locale/po2strings.c | 26 +- locale/strings2po.c | 20 +- locale/translate.c | 439 - man/Makefile | 36 +- man/backend.man | 269 +- man/cancel.man | 116 +- man/classes.conf.man | 122 +- man/client.conf.man.in | 101 +- man/cups-config.man | 157 +- man/cups-deviced.man.in | 44 - man/cups-driverd.man.in | 122 - man/cups-files.conf.man.in | 263 +- man/cups-lpd.man.in | 200 +- man/cups-snmp.conf.man | 99 +- man/cups-snmp.man.in | 79 +- man/cups.man | 147 + man/cupsaccept.man | 107 +- man/cupsaddsmb.man.in | 193 +- man/cupsctl.man | 101 +- man/cupsd-helper.man | 94 + man/cupsd-logs.man | 241 + man/cupsd.conf.man.in | 992 +- man/cupsd.man.in | 149 +- man/cupsenable.man | 131 +- man/cupsfilter.man | 141 +- man/cupstestdsc.man | 63 +- man/cupstestppd.man | 166 +- man/filter.man | 318 +- man/ippfind.man | 268 +- man/ipptool.man | 271 +- man/ipptoolfile.man | 822 +- man/lp.man | 320 +- man/lpadmin.man | 305 +- man/lpc.man | 77 +- man/lpinfo.man | 165 +- man/lpmove.man | 92 +- man/lpoptions.man.in | 192 +- man/lppasswd.man | 68 - man/lpq.man | 84 +- man/lpr.man | 183 +- man/lprm.man | 105 +- man/lpstat.man | 197 +- man/mailto.conf.man | 70 +- man/mantohtml.c | 1042 +- man/mime.convs.man | 76 +- man/mime.types.man | 163 +- man/notifier.man | 163 +- man/ppdc.man | 149 +- man/ppdcfile.man | 175 +- man/ppdhtml.man | 65 +- man/ppdi.man | 68 +- man/ppdmerge.man | 63 +- man/ppdpo.man | 76 +- man/printers.conf.man | 136 +- man/subscriptions.conf.man | 103 +- monitor/Dependencies | 19 +- monitor/bcp.c | 49 +- monitor/tbcp.c | 49 +- notifier/Dependencies | 24 +- notifier/dbus.c | 20 +- packaging/cups.list.in | 24 +- packaging/cups.spec | 93 +- packaging/cups.spec.in | 89 +- ppdc/Dependencies | 284 +- ppdc/Makefile | 46 +- ppdc/genstrings.cxx | 31 +- ppdc/ppdc-array.cxx | 35 +- ppdc/ppdc-catalog.cxx | 161 +- ppdc/ppdc-driver.cxx | 40 +- ppdc/ppdc-source.cxx | 118 +- ppdc/ppdc.cxx | 29 +- ppdc/ppdmerge.cxx | 30 +- ppdc/sample.drv | 77 +- scheduler/Dependencies | 459 +- scheduler/Makefile | 118 +- scheduler/auth.c | 508 +- scheduler/auth.h | 36 +- scheduler/cert.c | 40 +- scheduler/classes.c | 42 +- scheduler/client.c | 1677 +-- scheduler/client.h | 36 +- scheduler/colorman.c | 78 +- scheduler/conf.c | 182 +- scheduler/conf.h | 81 +- scheduler/cups-deviced.c | 43 +- scheduler/cups-driverd.cxx | 108 +- scheduler/cups-exec.c | 160 +- scheduler/cups-lpd.c | 20 +- scheduler/cups.sh.in | 43 +- scheduler/cupsd.h | 37 +- scheduler/cupsfilter.c | 366 +- scheduler/dirsvc.c | 4 +- scheduler/file.c | 36 +- scheduler/ipp.c | 505 +- scheduler/job.c | 281 +- scheduler/job.h | 30 +- scheduler/listen.c | 185 +- scheduler/log.c | 220 +- scheduler/main.c | 694 +- scheduler/mime.c | 61 +- scheduler/mime.h | 11 +- scheduler/network.c | 27 +- scheduler/org.cups.cups-lpd.plist.in | 4 + scheduler/org.cups.cupsd.path.in | 8 + scheduler/org.cups.cupsd.plist | 9 +- scheduler/org.cups.cupsd.service.in | 10 + scheduler/org.cups.cupsd.socket.in | 12 + scheduler/policy.c | 6 +- scheduler/printers.c | 88 +- scheduler/printers.h | 4 +- scheduler/process.c | 431 +- scheduler/select.c | 50 +- scheduler/server.c | 6 +- scheduler/statbuf.c | 31 +- scheduler/subscriptions.c | 49 +- scheduler/sysman.c | 321 +- scheduler/testlpd.c | 69 +- scheduler/testmime.c | 32 +- scheduler/testspeed.c | 29 +- scheduler/testsub.c | 29 +- scheduler/tls-darwin.c | 432 - scheduler/tls-gnutls.c | 292 - scheduler/tls-openssl.c | 353 - scheduler/tls.c | 30 - scheduler/type.c | 142 +- scheduler/util.c | 46 +- scheduler/util.h | 22 +- systemv/Dependencies | 120 +- systemv/Makefile | 35 +- systemv/cupstestppd.c | 10 +- systemv/lp.c | 28 +- systemv/lpadmin.c | 40 +- systemv/lpoptions.c | 58 +- systemv/lppasswd.c | 489 - systemv/lpstat.c | 89 +- templates/Makefile | 22 +- templates/add-class.tmpl | 3 - templates/add-printer.tmpl | 3 - templates/admin.tmpl | 199 +- templates/ca/add-class.tmpl | 40 - templates/ca/add-printer.tmpl | 47 - templates/ca/add-rss-subscription.tmpl | 44 - templates/ca/admin.tmpl | 102 - templates/ca/choose-device.tmpl | 53 - templates/ca/choose-make.tmpl | 64 - templates/ca/choose-model.tmpl | 60 - templates/ca/choose-serial.tmpl | 52 - templates/ca/choose-uri.tmpl | 43 - templates/ca/class-added.tmpl | 7 - templates/ca/class-confirm.tmpl | 10 - templates/ca/class-deleted.tmpl | 7 - templates/ca/class-jobs-header.tmpl | 3 - templates/ca/class-modified.tmpl | 7 - templates/ca/class.tmpl | 44 - templates/ca/classes-header.tmpl | 1 - templates/ca/classes.tmpl | 11 - templates/ca/command.tmpl | 12 - templates/ca/edit-config.tmpl | 24 - templates/ca/error-op.tmpl | 9 - templates/ca/error.tmpl | 9 - templates/ca/header.tmpl.in | 38 - templates/ca/help-header.tmpl | 52 - templates/ca/help-printable.tmpl | 9 - templates/ca/help-trailer.tmpl | 1 - templates/ca/job-cancel.tmpl | 7 - templates/ca/job-hold.tmpl | 7 - templates/ca/job-move.tmpl | 27 - templates/ca/job-moved.tmpl | 8 - templates/ca/job-release.tmpl | 7 - templates/ca/job-restart.tmpl | 7 - templates/ca/jobs-header.tmpl | 5 - templates/ca/jobs.tmpl | 36 - templates/ca/list-available-printers.tmpl | 11 - templates/ca/modify-class.tmpl | 34 - templates/ca/modify-printer.tmpl | 42 - templates/ca/norestart.tmpl | 8 - templates/ca/option-boolean.tmpl | 6 - templates/ca/option-conflict.tmpl | 7 - templates/ca/option-header.tmpl | 5 - templates/ca/option-pickmany.tmpl | 6 - templates/ca/option-pickone.tmpl | 18 - templates/ca/option-trailer.tmpl | 5 - templates/ca/pager.tmpl | 6 - templates/ca/printer-accept.tmpl | 9 - templates/ca/printer-added.tmpl | 8 - templates/ca/printer-configured.tmpl | 6 - templates/ca/printer-confirm.tmpl | 10 - templates/ca/printer-default.tmpl | 12 - templates/ca/printer-deleted.tmpl | 7 - templates/ca/printer-jobs-header.tmpl | 3 - templates/ca/printer-modified.tmpl | 8 - templates/ca/printer-purge.tmpl | 8 - templates/ca/printer-reject.tmpl | 9 - templates/ca/printer-start.tmpl | 9 - templates/ca/printer-stop.tmpl | 9 - templates/ca/printer.tmpl | 47 - templates/ca/printers-header.tmpl | 1 - templates/ca/printers.tmpl | 11 - templates/ca/restart.tmpl | 8 - templates/ca/samba-export.tmpl | 55 - templates/ca/samba-exported.tmpl | 1 - templates/ca/search.tmpl | 10 - templates/ca/set-printer-options-header.tmpl | 26 - templates/ca/set-printer-options-trailer.tmpl | 16 - templates/ca/subscription-added.tmpl | 5 - templates/ca/subscription-canceled.tmpl | 5 - templates/ca/test-page.tmpl | 8 - templates/ca/trailer.tmpl | 8 - templates/ca/users.tmpl | 30 - templates/choose-device.tmpl | 4 - templates/choose-make.tmpl | 3 - templates/choose-model.tmpl | 3 - templates/choose-serial.tmpl | 3 - templates/choose-uri.tmpl | 3 - templates/class-added.tmpl | 4 - templates/class-confirm.tmpl | 4 - templates/class-deleted.tmpl | 4 - templates/class-jobs-header.tmpl | 2 - templates/class-modified.tmpl | 4 - templates/class.tmpl | 3 - templates/command.tmpl | 4 - templates/cs/add-class.tmpl | 40 - templates/cs/add-printer.tmpl | 47 - templates/cs/add-rss-subscription.tmpl | 44 - templates/cs/admin.tmpl | 102 - templates/cs/choose-device.tmpl | 53 - templates/cs/choose-make.tmpl | 64 - templates/cs/choose-model.tmpl | 60 - templates/cs/choose-serial.tmpl | 52 - templates/cs/choose-uri.tmpl | 44 - templates/cs/class-added.tmpl | 7 - templates/cs/class-confirm.tmpl | 10 - templates/cs/class-deleted.tmpl | 7 - templates/cs/class-jobs-header.tmpl | 3 - templates/cs/class-modified.tmpl | 7 - templates/cs/class.tmpl | 44 - templates/cs/classes-header.tmpl | 1 - templates/cs/classes.tmpl | 12 - templates/cs/command.tmpl | 12 - templates/cs/edit-config.tmpl | 24 - templates/cs/error-op.tmpl | 9 - templates/cs/error.tmpl | 9 - templates/cs/header.tmpl.in | 29 - templates/cs/help-header.tmpl | 48 - templates/cs/help-printable.tmpl | 9 - templates/cs/help-trailer.tmpl | 1 - templates/cs/job-cancel.tmpl | 7 - templates/cs/job-hold.tmpl | 7 - templates/cs/job-move.tmpl | 27 - templates/cs/job-moved.tmpl | 8 - templates/cs/job-release.tmpl | 7 - templates/cs/job-restart.tmpl | 7 - templates/cs/jobs-header.tmpl | 5 - templates/cs/jobs.tmpl | 37 - templates/cs/list-available-printers.tmpl | 11 - templates/cs/modify-class.tmpl | 34 - templates/cs/modify-printer.tmpl | 42 - templates/cs/norestart.tmpl | 8 - templates/cs/option-boolean.tmpl | 6 - templates/cs/option-conflict.tmpl | 7 - templates/cs/option-header.tmpl | 5 - templates/cs/option-pickmany.tmpl | 6 - templates/cs/option-pickone.tmpl | 18 - templates/cs/option-trailer.tmpl | 5 - templates/cs/pager.tmpl | 6 - templates/cs/printer-accept.tmpl | 9 - templates/cs/printer-added.tmpl | 7 - templates/cs/printer-configured.tmpl | 8 - templates/cs/printer-confirm.tmpl | 10 - templates/cs/printer-default.tmpl | 11 - templates/cs/printer-deleted.tmpl | 7 - templates/cs/printer-jobs-header.tmpl | 3 - templates/cs/printer-modified.tmpl | 8 - templates/cs/printer-purge.tmpl | 10 - templates/cs/printer-reject.tmpl | 9 - templates/cs/printer-start.tmpl | 9 - templates/cs/printer-stop.tmpl | 9 - templates/cs/printer.tmpl | 48 - templates/cs/printers-header.tmpl | 1 - templates/cs/printers.tmpl | 11 - templates/cs/restart.tmpl | 8 - templates/cs/samba-export.tmpl | 55 - templates/cs/samba-exported.tmpl | 1 - templates/cs/search.tmpl | 10 - templates/cs/set-printer-options-header.tmpl | 26 - templates/cs/set-printer-options-trailer.tmpl | 16 - templates/cs/subscription-added.tmpl | 5 - templates/cs/subscription-canceled.tmpl | 5 - templates/cs/test-page.tmpl | 8 - templates/cs/trailer.tmpl | 8 - templates/cs/users.tmpl | 30 - templates/de/add-class.tmpl | 40 - templates/de/add-printer.tmpl | 52 - templates/de/add-rss-subscription.tmpl | 44 - templates/de/admin.tmpl | 110 - templates/de/choose-device.tmpl | 53 - templates/de/choose-make.tmpl | 68 - templates/de/choose-model.tmpl | 65 - templates/de/choose-serial.tmpl | 52 - templates/de/choose-uri.tmpl | 44 - templates/de/class-added.tmpl | 8 - templates/de/class-confirm.tmpl | 10 - templates/de/class-deleted.tmpl | 7 - templates/de/class-jobs-header.tmpl | 3 - templates/de/class-modified.tmpl | 8 - templates/de/class.tmpl | 44 - templates/de/classes-header.tmpl | 1 - templates/de/classes.tmpl | 11 - templates/de/command.tmpl | 12 - templates/de/edit-config.tmpl | 24 - templates/de/error-op.tmpl | 9 - templates/de/error.tmpl | 9 - templates/de/header.tmpl.in | 38 - templates/de/help-header.tmpl | 51 - templates/de/help-printable.tmpl | 9 - templates/de/help-trailer.tmpl | 1 - templates/de/job-cancel.tmpl | 7 - templates/de/job-hold.tmpl | 7 - templates/de/job-move.tmpl | 27 - templates/de/job-moved.tmpl | 8 - templates/de/job-release.tmpl | 7 - templates/de/job-restart.tmpl | 7 - templates/de/jobs-header.tmpl | 5 - templates/de/jobs.tmpl | 37 - templates/de/list-available-printers.tmpl | 11 - templates/de/modify-class.tmpl | 34 - templates/de/modify-printer.tmpl | 46 - templates/de/norestart.tmpl | 8 - templates/de/option-boolean.tmpl | 6 - templates/de/option-conflict.tmpl | 7 - templates/de/option-header.tmpl | 5 - templates/de/option-pickmany.tmpl | 6 - templates/de/option-pickone.tmpl | 18 - templates/de/option-trailer.tmpl | 5 - templates/de/pager.tmpl | 6 - templates/de/printer-accept.tmpl | 9 - templates/de/printer-added.tmpl | 8 - templates/de/printer-configured.tmpl | 8 - templates/de/printer-confirm.tmpl | 10 - templates/de/printer-default.tmpl | 13 - templates/de/printer-deleted.tmpl | 7 - templates/de/printer-jobs-header.tmpl | 3 - templates/de/printer-modified.tmpl | 8 - templates/de/printer-purge.tmpl | 9 - templates/de/printer-reject.tmpl | 9 - templates/de/printer-start.tmpl | 9 - templates/de/printer-stop.tmpl | 9 - templates/de/printer.tmpl | 49 - templates/de/printers-header.tmpl | 1 - templates/de/printers.tmpl | 11 - templates/de/replace-ppd.tmpl | 40 - templates/de/restart.tmpl | 8 - templates/de/samba-export.tmpl | 55 - templates/de/samba-exported.tmpl | 1 - templates/de/search.tmpl | 10 - templates/de/set-printer-options-header.tmpl | 26 - templates/de/set-printer-options-trailer.tmpl | 16 - templates/de/subscription-added.tmpl | 5 - templates/de/subscription-canceled.tmpl | 5 - templates/de/test-page.tmpl | 8 - templates/de/trailer.tmpl | 8 - templates/de/users.tmpl | 30 - templates/edit-config.tmpl | 4 - templates/error-op.tmpl | 4 - templates/error.tmpl | 4 - templates/es/add-class.tmpl | 40 - templates/es/add-printer.tmpl | 47 - templates/es/add-rss-subscription.tmpl | 44 - templates/es/admin.tmpl | 102 - templates/es/choose-device.tmpl | 54 - templates/es/choose-make.tmpl | 64 - templates/es/choose-model.tmpl | 60 - templates/es/choose-serial.tmpl | 52 - templates/es/choose-uri.tmpl | 44 - templates/es/class-added.tmpl | 7 - templates/es/class-confirm.tmpl | 10 - templates/es/class-deleted.tmpl | 7 - templates/es/class-jobs-header.tmpl | 3 - templates/es/class-modified.tmpl | 6 - templates/es/class.tmpl | 44 - templates/es/classes-header.tmpl | 1 - templates/es/classes.tmpl | 11 - templates/es/command.tmpl | 12 - templates/es/edit-config.tmpl | 24 - templates/es/error-op.tmpl | 9 - templates/es/error.tmpl | 9 - templates/es/header.tmpl.in | 38 - templates/es/help-header.tmpl | 51 - templates/es/help-printable.tmpl | 9 - templates/es/help-trailer.tmpl | 1 - templates/es/job-cancel.tmpl | 7 - templates/es/job-hold.tmpl | 7 - templates/es/job-move.tmpl | 27 - templates/es/job-moved.tmpl | 8 - templates/es/job-release.tmpl | 7 - templates/es/job-restart.tmpl | 7 - templates/es/jobs-header.tmpl | 5 - templates/es/jobs.tmpl | 37 - templates/es/list-available-printers.tmpl | 11 - templates/es/modify-class.tmpl | 34 - templates/es/modify-printer.tmpl | 42 - templates/es/norestart.tmpl | 8 - templates/es/option-boolean.tmpl | 6 - templates/es/option-conflict.tmpl | 7 - templates/es/option-header.tmpl | 5 - templates/es/option-pickmany.tmpl | 6 - templates/es/option-pickone.tmpl | 18 - templates/es/option-trailer.tmpl | 5 - templates/es/pager.tmpl | 6 - templates/es/printer-accept.tmpl | 9 - templates/es/printer-added.tmpl | 7 - templates/es/printer-configured.tmpl | 8 - templates/es/printer-confirm.tmpl | 10 - templates/es/printer-default.tmpl | 13 - templates/es/printer-deleted.tmpl | 7 - templates/es/printer-jobs-header.tmpl | 3 - templates/es/printer-modified.tmpl | 7 - templates/es/printer-purge.tmpl | 8 - templates/es/printer-reject.tmpl | 9 - templates/es/printer-start.tmpl | 9 - templates/es/printer-stop.tmpl | 9 - templates/es/printer.tmpl | 47 - templates/es/printers-header.tmpl | 1 - templates/es/printers.tmpl | 11 - templates/es/restart.tmpl | 8 - templates/es/samba-export.tmpl | 55 - templates/es/samba-exported.tmpl | 1 - templates/es/search.tmpl | 10 - templates/es/set-printer-options-header.tmpl | 26 - templates/es/set-printer-options-trailer.tmpl | 16 - templates/es/subscription-added.tmpl | 5 - templates/es/subscription-canceled.tmpl | 5 - templates/es/test-page.tmpl | 8 - templates/es/trailer.tmpl | 8 - templates/es/users.tmpl | 30 - templates/fr/add-class.tmpl | 40 - templates/fr/add-printer.tmpl | 47 - templates/fr/add-rss-subscription.tmpl | 44 - templates/fr/admin.tmpl | 102 - templates/fr/choose-device.tmpl | 53 - templates/fr/choose-make.tmpl | 64 - templates/fr/choose-model.tmpl | 60 - templates/fr/choose-serial.tmpl | 52 - templates/fr/choose-uri.tmpl | 44 - templates/fr/class-added.tmpl | 8 - templates/fr/class-confirm.tmpl | 10 - templates/fr/class-deleted.tmpl | 7 - templates/fr/class-jobs-header.tmpl | 3 - templates/fr/class-modified.tmpl | 8 - templates/fr/class.tmpl | 44 - templates/fr/classes-header.tmpl | 1 - templates/fr/classes.tmpl | 11 - templates/fr/command.tmpl | 12 - templates/fr/edit-config.tmpl | 24 - templates/fr/error-op.tmpl | 9 - templates/fr/error.tmpl | 9 - templates/fr/header.tmpl.in | 29 - templates/fr/help-header.tmpl | 51 - templates/fr/help-printable.tmpl | 9 - templates/fr/help-trailer.tmpl | 1 - templates/fr/job-cancel.tmpl | 7 - templates/fr/job-hold.tmpl | 7 - templates/fr/job-move.tmpl | 27 - templates/fr/job-moved.tmpl | 8 - templates/fr/job-release.tmpl | 7 - templates/fr/job-restart.tmpl | 7 - templates/fr/jobs-header.tmpl | 5 - templates/fr/jobs.tmpl | 36 - templates/fr/list-available-printers.tmpl | 11 - templates/fr/modify-class.tmpl | 34 - templates/fr/modify-printer.tmpl | 42 - templates/fr/norestart.tmpl | 8 - templates/fr/option-boolean.tmpl | 6 - templates/fr/option-conflict.tmpl | 7 - templates/fr/option-header.tmpl | 5 - templates/fr/option-pickmany.tmpl | 6 - templates/fr/option-pickone.tmpl | 18 - templates/fr/option-trailer.tmpl | 5 - templates/fr/pager.tmpl | 6 - templates/fr/printer-accept.tmpl | 9 - templates/fr/printer-added.tmpl | 8 - templates/fr/printer-configured.tmpl | 8 - templates/fr/printer-confirm.tmpl | 10 - templates/fr/printer-default.tmpl | 13 - templates/fr/printer-deleted.tmpl | 7 - templates/fr/printer-jobs-header.tmpl | 3 - templates/fr/printer-modified.tmpl | 8 - templates/fr/printer-purge.tmpl | 9 - templates/fr/printer-reject.tmpl | 9 - templates/fr/printer-start.tmpl | 9 - templates/fr/printer-stop.tmpl | 9 - templates/fr/printer.tmpl | 47 - templates/fr/printers-header.tmpl | 1 - templates/fr/printers.tmpl | 11 - templates/fr/restart.tmpl | 8 - templates/fr/samba-export.tmpl | 54 - templates/fr/samba-exported.tmpl | 1 - templates/fr/search.tmpl | 10 - templates/fr/set-printer-options-header.tmpl | 26 - templates/fr/set-printer-options-trailer.tmpl | 16 - templates/fr/subscription-added.tmpl | 5 - templates/fr/subscription-canceled.tmpl | 5 - templates/fr/test-page.tmpl | 8 - templates/fr/trailer.tmpl | 8 - templates/fr/users.tmpl | 30 - templates/header.tmpl.in | 71 +- templates/help-header.tmpl | 18 +- templates/help-trailer.tmpl | 1 - templates/it/add-class.tmpl | 40 - templates/it/add-printer.tmpl | 47 - templates/it/add-rss-subscription.tmpl | 44 - templates/it/admin.tmpl | 102 - templates/it/choose-device.tmpl | 53 - templates/it/choose-make.tmpl | 64 - templates/it/choose-model.tmpl | 60 - templates/it/choose-serial.tmpl | 52 - templates/it/choose-uri.tmpl | 44 - templates/it/class-added.tmpl | 8 - templates/it/class-confirm.tmpl | 10 - templates/it/class-deleted.tmpl | 7 - templates/it/class-jobs-header.tmpl | 3 - templates/it/class-modified.tmpl | 8 - templates/it/class.tmpl | 44 - templates/it/classes-header.tmpl | 1 - templates/it/classes.tmpl | 11 - templates/it/command.tmpl | 12 - templates/it/edit-config.tmpl | 24 - templates/it/error-op.tmpl | 9 - templates/it/error.tmpl | 9 - templates/it/header.tmpl.in | 38 - templates/it/help-header.tmpl | 51 - templates/it/help-printable.tmpl | 9 - templates/it/help-trailer.tmpl | 1 - templates/it/job-cancel.tmpl | 7 - templates/it/job-hold.tmpl | 7 - templates/it/job-move.tmpl | 27 - templates/it/job-moved.tmpl | 8 - templates/it/job-release.tmpl | 7 - templates/it/job-restart.tmpl | 7 - templates/it/jobs-header.tmpl | 5 - templates/it/jobs.tmpl | 36 - templates/it/list-available-printers.tmpl | 11 - templates/it/modify-class.tmpl | 34 - templates/it/modify-printer.tmpl | 42 - templates/it/norestart.tmpl | 8 - templates/it/option-boolean.tmpl | 6 - templates/it/option-conflict.tmpl | 7 - templates/it/option-header.tmpl | 5 - templates/it/option-pickmany.tmpl | 6 - templates/it/option-pickone.tmpl | 18 - templates/it/option-trailer.tmpl | 5 - templates/it/pager.tmpl | 6 - templates/it/printer-accept.tmpl | 9 - templates/it/printer-added.tmpl | 8 - templates/it/printer-configured.tmpl | 8 - templates/it/printer-confirm.tmpl | 10 - templates/it/printer-default.tmpl | 13 - templates/it/printer-deleted.tmpl | 7 - templates/it/printer-jobs-header.tmpl | 3 - templates/it/printer-modified.tmpl | 8 - templates/it/printer-purge.tmpl | 9 - templates/it/printer-reject.tmpl | 9 - templates/it/printer-start.tmpl | 9 - templates/it/printer-stop.tmpl | 9 - templates/it/printer.tmpl | 47 - templates/it/printers-header.tmpl | 1 - templates/it/printers.tmpl | 11 - templates/it/restart.tmpl | 8 - templates/it/samba-export.tmpl | 54 - templates/it/samba-exported.tmpl | 1 - templates/it/search.tmpl | 10 - templates/it/set-printer-options-header.tmpl | 26 - templates/it/set-printer-options-trailer.tmpl | 16 - templates/it/subscription-added.tmpl | 5 - templates/it/subscription-canceled.tmpl | 5 - templates/it/test-page.tmpl | 8 - templates/it/trailer.tmpl | 8 - templates/it/users.tmpl | 30 - templates/ja/add-class.tmpl | 40 - templates/ja/add-printer.tmpl | 47 - templates/ja/add-rss-subscription.tmpl | 44 - templates/ja/admin.tmpl | 102 - templates/ja/choose-device.tmpl | 53 - templates/ja/choose-make.tmpl | 64 - templates/ja/choose-model.tmpl | 60 - templates/ja/choose-serial.tmpl | 52 - templates/ja/choose-uri.tmpl | 43 - templates/ja/class-added.tmpl | 7 - templates/ja/class-confirm.tmpl | 10 - templates/ja/class-deleted.tmpl | 7 - templates/ja/class-jobs-header.tmpl | 3 - templates/ja/class-modified.tmpl | 7 - templates/ja/class.tmpl | 44 - templates/ja/classes-header.tmpl | 1 - templates/ja/classes.tmpl | 11 - templates/ja/command.tmpl | 12 - templates/ja/edit-config.tmpl | 24 - templates/ja/error-op.tmpl | 9 - templates/ja/error.tmpl | 9 - templates/ja/header.tmpl.in | 38 - templates/ja/help-header.tmpl | 51 - templates/ja/help-printable.tmpl | 9 - templates/ja/help-trailer.tmpl | 1 - templates/ja/job-cancel.tmpl | 7 - templates/ja/job-hold.tmpl | 7 - templates/ja/job-move.tmpl | 27 - templates/ja/job-moved.tmpl | 8 - templates/ja/job-release.tmpl | 7 - templates/ja/job-restart.tmpl | 7 - templates/ja/jobs-header.tmpl | 5 - templates/ja/jobs.tmpl | 36 - templates/ja/list-available-printers.tmpl | 11 - templates/ja/modify-class.tmpl | 34 - templates/ja/modify-printer.tmpl | 42 - templates/ja/norestart.tmpl | 7 - templates/ja/option-boolean.tmpl | 6 - templates/ja/option-conflict.tmpl | 7 - templates/ja/option-header.tmpl | 5 - templates/ja/option-pickmany.tmpl | 6 - templates/ja/option-pickone.tmpl | 18 - templates/ja/option-trailer.tmpl | 5 - templates/ja/pager.tmpl | 6 - templates/ja/printer-accept.tmpl | 9 - templates/ja/printer-added.tmpl | 6 - templates/ja/printer-configured.tmpl | 8 - templates/ja/printer-confirm.tmpl | 9 - templates/ja/printer-default.tmpl | 12 - templates/ja/printer-deleted.tmpl | 7 - templates/ja/printer-jobs-header.tmpl | 3 - templates/ja/printer-modified.tmpl | 8 - templates/ja/printer-purge.tmpl | 9 - templates/ja/printer-reject.tmpl | 9 - templates/ja/printer-start.tmpl | 9 - templates/ja/printer-stop.tmpl | 9 - templates/ja/printer.tmpl | 47 - templates/ja/printers-header.tmpl | 1 - templates/ja/printers.tmpl | 11 - templates/ja/restart.tmpl | 8 - templates/ja/samba-export.tmpl | 55 - templates/ja/samba-exported.tmpl | 1 - templates/ja/search.tmpl | 10 - templates/ja/set-printer-options-header.tmpl | 26 - templates/ja/set-printer-options-trailer.tmpl | 16 - templates/ja/subscription-added.tmpl | 5 - templates/ja/subscription-canceled.tmpl | 5 - templates/ja/test-page.tmpl | 8 - templates/ja/trailer.tmpl | 8 - templates/ja/users.tmpl | 30 - templates/job-cancel.tmpl | 4 - templates/job-hold.tmpl | 4 - templates/job-move.tmpl | 4 - templates/job-moved.tmpl | 4 - templates/job-release.tmpl | 4 - templates/job-restart.tmpl | 4 - templates/jobs-header.tmpl | 4 +- templates/list-available-printers.tmpl | 4 - templates/modify-class.tmpl | 3 - templates/modify-printer.tmpl | 3 - templates/norestart.tmpl | 4 - templates/printer-accept.tmpl | 4 - templates/printer-added.tmpl | 4 - templates/printer-cancel-jobs.tmpl | 5 + templates/printer-configured.tmpl | 4 - templates/printer-confirm.tmpl | 4 - templates/printer-default.tmpl | 4 - templates/printer-deleted.tmpl | 4 - templates/printer-jobs-header.tmpl | 2 - templates/printer-modified.tmpl | 4 - templates/printer-purge.tmpl | 9 - templates/printer-reject.tmpl | 4 - templates/printer-start.tmpl | 4 - templates/printer-stop.tmpl | 4 - templates/printer.tmpl | 6 +- templates/pt_BR/add-class.tmpl | 40 - templates/pt_BR/add-printer.tmpl | 47 - templates/pt_BR/add-rss-subscription.tmpl | 44 - templates/pt_BR/admin.tmpl | 102 - templates/pt_BR/choose-device.tmpl | 53 - templates/pt_BR/choose-make.tmpl | 64 - templates/pt_BR/choose-model.tmpl | 60 - templates/pt_BR/choose-serial.tmpl | 52 - templates/pt_BR/choose-uri.tmpl | 44 - templates/pt_BR/class-added.tmpl | 7 - templates/pt_BR/class-confirm.tmpl | 9 - templates/pt_BR/class-deleted.tmpl | 7 - templates/pt_BR/class-jobs-header.tmpl | 3 - templates/pt_BR/class-modified.tmpl | 7 - templates/pt_BR/class.tmpl | 44 - templates/pt_BR/classes-header.tmpl | 1 - templates/pt_BR/classes.tmpl | 11 - templates/pt_BR/command.tmpl | 12 - templates/pt_BR/edit-config.tmpl | 24 - templates/pt_BR/error-op.tmpl | 9 - templates/pt_BR/error.tmpl | 9 - templates/pt_BR/header.tmpl.in | 38 - templates/pt_BR/help-header.tmpl | 51 - templates/pt_BR/job-cancel.tmpl | 7 - templates/pt_BR/job-hold.tmpl | 7 - templates/pt_BR/job-move.tmpl | 27 - templates/pt_BR/job-moved.tmpl | 8 - templates/pt_BR/job-release.tmpl | 7 - templates/pt_BR/job-restart.tmpl | 7 - templates/pt_BR/jobs-header.tmpl | 5 - templates/pt_BR/jobs.tmpl | 36 - templates/pt_BR/list-available-printers.tmpl | 11 - templates/pt_BR/modify-class.tmpl | 34 - templates/pt_BR/modify-printer.tmpl | 42 - templates/pt_BR/norestart.tmpl | 7 - templates/pt_BR/option-boolean.tmpl | 6 - templates/pt_BR/option-conflict.tmpl | 7 - templates/pt_BR/option-header.tmpl | 5 - templates/pt_BR/option-pickmany.tmpl | 6 - templates/pt_BR/option-pickone.tmpl | 18 - templates/pt_BR/option-trailer.tmpl | 5 - templates/pt_BR/pager.tmpl | 6 - templates/pt_BR/printer-accept.tmpl | 9 - templates/pt_BR/printer-added.tmpl | 8 - templates/pt_BR/printer-configured.tmpl | 8 - templates/pt_BR/printer-confirm.tmpl | 10 - templates/pt_BR/printer-default.tmpl | 12 - templates/pt_BR/printer-deleted.tmpl | 7 - templates/pt_BR/printer-jobs-header.tmpl | 3 - templates/pt_BR/printer-modified.tmpl | 8 - templates/pt_BR/printer-purge.tmpl | 9 - templates/pt_BR/printer-reject.tmpl | 9 - templates/pt_BR/printer-start.tmpl | 9 - templates/pt_BR/printer-stop.tmpl | 9 - templates/pt_BR/printer.tmpl | 47 - templates/pt_BR/printers-header.tmpl | 1 - templates/pt_BR/printers.tmpl | 11 - templates/pt_BR/restart.tmpl | 8 - templates/pt_BR/samba-export.tmpl | 54 - templates/pt_BR/samba-exported.tmpl | 1 - templates/pt_BR/search.tmpl | 10 - .../pt_BR/set-printer-options-header.tmpl | 26 - .../pt_BR/set-printer-options-trailer.tmpl | 16 - templates/pt_BR/subscription-added.tmpl | 5 - templates/pt_BR/subscription-canceled.tmpl | 5 - templates/pt_BR/test-page.tmpl | 8 - templates/pt_BR/trailer.tmpl | 8 - templates/pt_BR/users.tmpl | 30 - templates/restart.tmpl | 4 - templates/ru/Makefile | 204 - templates/ru/add-class.tmpl | 40 - templates/ru/add-printer.tmpl | 47 - templates/ru/add-rss-subscription.tmpl | 44 - templates/ru/admin.tmpl | 102 - templates/ru/choose-device.tmpl | 53 - templates/ru/choose-make.tmpl | 64 - templates/ru/choose-model.tmpl | 60 - templates/ru/choose-serial.tmpl | 52 - templates/ru/choose-uri.tmpl | 43 - templates/ru/class-added.tmpl | 7 - templates/ru/class-confirm.tmpl | 10 - templates/ru/class-deleted.tmpl | 7 - templates/ru/class-jobs-header.tmpl | 3 - templates/ru/class-modified.tmpl | 7 - templates/ru/class.tmpl | 44 - templates/ru/classes-header.tmpl | 1 - templates/ru/classes.tmpl | 11 - templates/ru/command.tmpl | 12 - templates/ru/edit-config.tmpl | 24 - templates/ru/error-op.tmpl | 9 - templates/ru/error.tmpl | 9 - templates/ru/header.tmpl.in | 29 - templates/ru/help-header.tmpl | 45 - templates/ru/help-printable.tmpl | 9 - templates/ru/help-trailer.tmpl | 1 - templates/ru/job-cancel.tmpl | 7 - templates/ru/job-hold.tmpl | 7 - templates/ru/job-move.tmpl | 27 - templates/ru/job-moved.tmpl | 8 - templates/ru/job-release.tmpl | 7 - templates/ru/job-restart.tmpl | 7 - templates/ru/jobs-header.tmpl | 5 - templates/ru/jobs.tmpl | 36 - templates/ru/list-available-printers.tmpl | 11 - templates/ru/modify-class.tmpl | 34 - templates/ru/modify-printer.tmpl | 42 - templates/ru/norestart.tmpl | 7 - templates/ru/option-boolean.tmpl | 6 - templates/ru/option-conflict.tmpl | 7 - templates/ru/option-header.tmpl | 5 - templates/ru/option-pickmany.tmpl | 6 - templates/ru/option-pickone.tmpl | 18 - templates/ru/option-trailer.tmpl | 5 - templates/ru/pager.tmpl | 6 - templates/ru/printer-accept.tmpl | 9 - templates/ru/printer-added.tmpl | 7 - templates/ru/printer-configured.tmpl | 8 - templates/ru/printer-confirm.tmpl | 10 - templates/ru/printer-default.tmpl | 12 - templates/ru/printer-deleted.tmpl | 7 - templates/ru/printer-jobs-header.tmpl | 3 - templates/ru/printer-modified.tmpl | 7 - templates/ru/printer-purge.tmpl | 9 - templates/ru/printer-reject.tmpl | 9 - templates/ru/printer-start.tmpl | 9 - templates/ru/printer-stop.tmpl | 9 - templates/ru/printer.tmpl | 47 - templates/ru/printers-header.tmpl | 1 - templates/ru/printers.tmpl | 11 - templates/ru/restart.tmpl | 8 - templates/ru/samba-export.tmpl | 53 - templates/ru/samba-exported.tmpl | 1 - templates/ru/search.tmpl | 10 - templates/ru/set-printer-options-header.tmpl | 26 - templates/ru/set-printer-options-trailer.tmpl | 16 - templates/ru/subscription-added.tmpl | 5 - templates/ru/subscription-canceled.tmpl | 5 - templates/ru/test-page.tmpl | 8 - templates/ru/trailer.tmpl | 7 - templates/ru/users.tmpl | 30 - templates/set-printer-options-header.tmpl | 2 - templates/set-printer-options-trailer.tmpl | 2 - templates/subscription-added.tmpl | 4 - templates/subscription-canceled.tmpl | 4 - templates/test-page.tmpl | 4 - templates/trailer.tmpl | 13 +- templates/users.tmpl | 3 - test/4.1-requests.test | 4 +- test/4.2-cups-printer-ops.test | 5 +- test/4.3-job-ops.test | 4 +- test/4.4-subscription-ops.test | 4 +- test/5.1-lpadmin.sh | 27 +- test/5.2-lpc.sh | 4 +- test/5.3-lpq.sh | 4 +- test/5.4-lpstat.sh | 4 +- test/5.5-lp.sh | 25 +- test/5.6-lpr.sh | 12 +- test/5.7-lprm.sh | 4 +- test/5.8-cancel.sh | 4 +- test/5.9-lpinfo.sh | 4 +- test/Dependencies | 15 +- test/cancel-current-job.test | 4 +- test/create-printer-subscription.test | 4 +- test/everywhere/bonjour-tests.sh | 1 + test/everywhere/document-format-tests.sh | 1 + test/everywhere/document-format-tests.test | 9689 +++++++++++++ test/everywhere/ipp-tests.sh | 1 + test/everywhere/ipp-tests.test | 12086 ++++++++++++++++ test/fax-job.test | 59 + test/get-completed-jobs.test | 4 +- test/get-job-template-attributes.test | 24 + test/get-jobs.test | 4 +- test/get-notifications.test | 4 +- test/get-printer-description-attributes.test | 43 + test/ipp-1.1.test | 4 +- test/ipp-2.0.test | 4 +- test/ipp-2.1.test | 4 +- test/ipp-2.2.test | 4 +- test/ipp-everywhere.test | 4 +- test/ippfind.c | 98 +- test/ippserver.c | 271 +- test/ipptool.c | 1185 +- test/run-stp-tests.sh | 347 +- test/str-header.html | 10 +- test/testhp.ppd | 4 +- test/testps.ppd | 4 +- vcnet/config.h | 47 +- vcnet/ipptool-installer.vdproj | 52 +- vcnet/libcups2.vcproj | 16 +- vcnet/regex/regcomp.c | 2 +- vcnet/setdebug.bat | 2 +- xcode/CUPS.xcodeproj/project.pbxproj | 633 +- xcode/config.h | 70 +- 1137 files changed, 55013 insertions(+), 65082 deletions(-) create mode 100644 CHANGES-1.7.txt delete mode 100644 cgi-bin/websearch.c delete mode 100644 config-scripts/cups-launchd.m4 create mode 100644 config-scripts/cups-startup.m4 rename configure.in => configure.ac (70%) delete mode 100644 cups/libcups_s.exp delete mode 100644 cups/sspi-private.h delete mode 100644 cups/sspi.c create mode 100644 cups/testcache.c create mode 100644 cups/testdest.c create mode 100644 cups/tls-darwin.c create mode 100644 cups/tls-gnutls.c create mode 100644 cups/tls-sspi.c create mode 100644 cups/tls.c create mode 100644 doc/apple-touch-icon.opacity create mode 100644 doc/apple-touch-icon.png delete mode 100644 doc/ca/index.html.in delete mode 100644 doc/cs/index.html.in delete mode 100644 doc/de/index.html.in delete mode 100644 doc/es/index.html.in delete mode 100644 doc/fr/index.html.in delete mode 100644 doc/help/man-cups-deviced.html delete mode 100644 doc/help/man-cups-driverd.html create mode 100644 doc/help/man-cups.html create mode 100644 doc/help/man-cupsd-helper.html create mode 100644 doc/help/man-cupsd-logs.html delete mode 100644 doc/help/man-lppasswd.html delete mode 100644 doc/help/ref-access_log.html delete mode 100644 doc/help/ref-classes-conf.html delete mode 100644 doc/help/ref-client-conf.html delete mode 100644 doc/help/ref-cups-files-conf.html.in delete mode 100644 doc/help/ref-cupsd-conf.html.in delete mode 100644 doc/help/ref-error_log.html delete mode 100644 doc/help/ref-mailto-conf.html delete mode 100644 doc/help/ref-page_log.html delete mode 100644 doc/help/ref-printers-conf.html delete mode 100644 doc/help/ref-snmp-conf.html delete mode 100644 doc/help/ref-subscriptions-conf.html delete mode 100644 doc/help/spec-browsing.html delete mode 100644 doc/help/whatsnew.html delete mode 100644 doc/it/index.html.in delete mode 100644 doc/ja/index.html.in delete mode 100644 doc/pt_BR/index.html.in delete mode 100644 doc/ru/index.html.in delete mode 100644 locale/cups_de.po delete mode 100644 locale/cups_pt_BR.po delete mode 100644 locale/translate.c delete mode 100644 man/cups-deviced.man.in delete mode 100644 man/cups-driverd.man.in create mode 100644 man/cups.man create mode 100644 man/cupsd-helper.man create mode 100644 man/cupsd-logs.man delete mode 100644 man/lppasswd.man create mode 100644 scheduler/org.cups.cupsd.path.in create mode 100644 scheduler/org.cups.cupsd.service.in create mode 100644 scheduler/org.cups.cupsd.socket.in delete mode 100644 scheduler/tls-darwin.c delete mode 100644 scheduler/tls-gnutls.c delete mode 100644 scheduler/tls-openssl.c delete mode 100644 scheduler/tls.c delete mode 100644 systemv/lppasswd.c delete mode 100644 templates/ca/add-class.tmpl delete mode 100644 templates/ca/add-printer.tmpl delete mode 100644 templates/ca/add-rss-subscription.tmpl delete mode 100644 templates/ca/admin.tmpl delete mode 100644 templates/ca/choose-device.tmpl delete mode 100644 templates/ca/choose-make.tmpl delete mode 100644 templates/ca/choose-model.tmpl delete mode 100644 templates/ca/choose-serial.tmpl delete mode 100644 templates/ca/choose-uri.tmpl delete mode 100644 templates/ca/class-added.tmpl delete mode 100644 templates/ca/class-confirm.tmpl delete mode 100644 templates/ca/class-deleted.tmpl delete mode 100644 templates/ca/class-jobs-header.tmpl delete mode 100644 templates/ca/class-modified.tmpl delete mode 100644 templates/ca/class.tmpl delete mode 100644 templates/ca/classes-header.tmpl delete mode 100644 templates/ca/classes.tmpl delete mode 100644 templates/ca/command.tmpl delete mode 100644 templates/ca/edit-config.tmpl delete mode 100644 templates/ca/error-op.tmpl delete mode 100644 templates/ca/error.tmpl delete mode 100644 templates/ca/header.tmpl.in delete mode 100644 templates/ca/help-header.tmpl delete mode 100644 templates/ca/help-printable.tmpl delete mode 100644 templates/ca/help-trailer.tmpl delete mode 100644 templates/ca/job-cancel.tmpl delete mode 100644 templates/ca/job-hold.tmpl delete mode 100644 templates/ca/job-move.tmpl delete mode 100644 templates/ca/job-moved.tmpl delete mode 100644 templates/ca/job-release.tmpl delete mode 100644 templates/ca/job-restart.tmpl delete mode 100644 templates/ca/jobs-header.tmpl delete mode 100644 templates/ca/jobs.tmpl delete mode 100644 templates/ca/list-available-printers.tmpl delete mode 100644 templates/ca/modify-class.tmpl delete mode 100644 templates/ca/modify-printer.tmpl delete mode 100644 templates/ca/norestart.tmpl delete mode 100644 templates/ca/option-boolean.tmpl delete mode 100644 templates/ca/option-conflict.tmpl delete mode 100644 templates/ca/option-header.tmpl delete mode 100644 templates/ca/option-pickmany.tmpl delete mode 100644 templates/ca/option-pickone.tmpl delete mode 100644 templates/ca/option-trailer.tmpl delete mode 100644 templates/ca/pager.tmpl delete mode 100644 templates/ca/printer-accept.tmpl delete mode 100644 templates/ca/printer-added.tmpl delete mode 100644 templates/ca/printer-configured.tmpl delete mode 100644 templates/ca/printer-confirm.tmpl delete mode 100644 templates/ca/printer-default.tmpl delete mode 100644 templates/ca/printer-deleted.tmpl delete mode 100644 templates/ca/printer-jobs-header.tmpl delete mode 100644 templates/ca/printer-modified.tmpl delete mode 100644 templates/ca/printer-purge.tmpl delete mode 100644 templates/ca/printer-reject.tmpl delete mode 100644 templates/ca/printer-start.tmpl delete mode 100644 templates/ca/printer-stop.tmpl delete mode 100644 templates/ca/printer.tmpl delete mode 100644 templates/ca/printers-header.tmpl delete mode 100644 templates/ca/printers.tmpl delete mode 100644 templates/ca/restart.tmpl delete mode 100644 templates/ca/samba-export.tmpl delete mode 100644 templates/ca/samba-exported.tmpl delete mode 100644 templates/ca/search.tmpl delete mode 100644 templates/ca/set-printer-options-header.tmpl delete mode 100644 templates/ca/set-printer-options-trailer.tmpl delete mode 100644 templates/ca/subscription-added.tmpl delete mode 100644 templates/ca/subscription-canceled.tmpl delete mode 100644 templates/ca/test-page.tmpl delete mode 100644 templates/ca/trailer.tmpl delete mode 100644 templates/ca/users.tmpl delete mode 100644 templates/cs/add-class.tmpl delete mode 100644 templates/cs/add-printer.tmpl delete mode 100644 templates/cs/add-rss-subscription.tmpl delete mode 100644 templates/cs/admin.tmpl delete mode 100644 templates/cs/choose-device.tmpl delete mode 100644 templates/cs/choose-make.tmpl delete mode 100644 templates/cs/choose-model.tmpl delete mode 100644 templates/cs/choose-serial.tmpl delete mode 100644 templates/cs/choose-uri.tmpl delete mode 100644 templates/cs/class-added.tmpl delete mode 100644 templates/cs/class-confirm.tmpl delete mode 100644 templates/cs/class-deleted.tmpl delete mode 100644 templates/cs/class-jobs-header.tmpl delete mode 100644 templates/cs/class-modified.tmpl delete mode 100644 templates/cs/class.tmpl delete mode 100644 templates/cs/classes-header.tmpl delete mode 100644 templates/cs/classes.tmpl delete mode 100644 templates/cs/command.tmpl delete mode 100644 templates/cs/edit-config.tmpl delete mode 100644 templates/cs/error-op.tmpl delete mode 100644 templates/cs/error.tmpl delete mode 100644 templates/cs/header.tmpl.in delete mode 100644 templates/cs/help-header.tmpl delete mode 100644 templates/cs/help-printable.tmpl delete mode 100644 templates/cs/help-trailer.tmpl delete mode 100644 templates/cs/job-cancel.tmpl delete mode 100644 templates/cs/job-hold.tmpl delete mode 100644 templates/cs/job-move.tmpl delete mode 100644 templates/cs/job-moved.tmpl delete mode 100644 templates/cs/job-release.tmpl delete mode 100644 templates/cs/job-restart.tmpl delete mode 100644 templates/cs/jobs-header.tmpl delete mode 100644 templates/cs/jobs.tmpl delete mode 100644 templates/cs/list-available-printers.tmpl delete mode 100644 templates/cs/modify-class.tmpl delete mode 100644 templates/cs/modify-printer.tmpl delete mode 100644 templates/cs/norestart.tmpl delete mode 100644 templates/cs/option-boolean.tmpl delete mode 100644 templates/cs/option-conflict.tmpl delete mode 100644 templates/cs/option-header.tmpl delete mode 100644 templates/cs/option-pickmany.tmpl delete mode 100644 templates/cs/option-pickone.tmpl delete mode 100644 templates/cs/option-trailer.tmpl delete mode 100644 templates/cs/pager.tmpl delete mode 100644 templates/cs/printer-accept.tmpl delete mode 100644 templates/cs/printer-added.tmpl delete mode 100644 templates/cs/printer-configured.tmpl delete mode 100644 templates/cs/printer-confirm.tmpl delete mode 100644 templates/cs/printer-default.tmpl delete mode 100644 templates/cs/printer-deleted.tmpl delete mode 100644 templates/cs/printer-jobs-header.tmpl delete mode 100644 templates/cs/printer-modified.tmpl delete mode 100644 templates/cs/printer-purge.tmpl delete mode 100644 templates/cs/printer-reject.tmpl delete mode 100644 templates/cs/printer-start.tmpl delete mode 100644 templates/cs/printer-stop.tmpl delete mode 100644 templates/cs/printer.tmpl delete mode 100644 templates/cs/printers-header.tmpl delete mode 100644 templates/cs/printers.tmpl delete mode 100644 templates/cs/restart.tmpl delete mode 100644 templates/cs/samba-export.tmpl delete mode 100644 templates/cs/samba-exported.tmpl delete mode 100644 templates/cs/search.tmpl delete mode 100644 templates/cs/set-printer-options-header.tmpl delete mode 100644 templates/cs/set-printer-options-trailer.tmpl delete mode 100644 templates/cs/subscription-added.tmpl delete mode 100644 templates/cs/subscription-canceled.tmpl delete mode 100644 templates/cs/test-page.tmpl delete mode 100644 templates/cs/trailer.tmpl delete mode 100644 templates/cs/users.tmpl delete mode 100644 templates/de/add-class.tmpl delete mode 100644 templates/de/add-printer.tmpl delete mode 100644 templates/de/add-rss-subscription.tmpl delete mode 100644 templates/de/admin.tmpl delete mode 100644 templates/de/choose-device.tmpl delete mode 100644 templates/de/choose-make.tmpl delete mode 100644 templates/de/choose-model.tmpl delete mode 100644 templates/de/choose-serial.tmpl delete mode 100644 templates/de/choose-uri.tmpl delete mode 100644 templates/de/class-added.tmpl delete mode 100644 templates/de/class-confirm.tmpl delete mode 100644 templates/de/class-deleted.tmpl delete mode 100644 templates/de/class-jobs-header.tmpl delete mode 100644 templates/de/class-modified.tmpl delete mode 100644 templates/de/class.tmpl delete mode 100644 templates/de/classes-header.tmpl delete mode 100644 templates/de/classes.tmpl delete mode 100644 templates/de/command.tmpl delete mode 100644 templates/de/edit-config.tmpl delete mode 100644 templates/de/error-op.tmpl delete mode 100644 templates/de/error.tmpl delete mode 100644 templates/de/header.tmpl.in delete mode 100644 templates/de/help-header.tmpl delete mode 100644 templates/de/help-printable.tmpl delete mode 100644 templates/de/help-trailer.tmpl delete mode 100644 templates/de/job-cancel.tmpl delete mode 100644 templates/de/job-hold.tmpl delete mode 100644 templates/de/job-move.tmpl delete mode 100644 templates/de/job-moved.tmpl delete mode 100644 templates/de/job-release.tmpl delete mode 100644 templates/de/job-restart.tmpl delete mode 100644 templates/de/jobs-header.tmpl delete mode 100644 templates/de/jobs.tmpl delete mode 100644 templates/de/list-available-printers.tmpl delete mode 100644 templates/de/modify-class.tmpl delete mode 100644 templates/de/modify-printer.tmpl delete mode 100644 templates/de/norestart.tmpl delete mode 100644 templates/de/option-boolean.tmpl delete mode 100644 templates/de/option-conflict.tmpl delete mode 100644 templates/de/option-header.tmpl delete mode 100644 templates/de/option-pickmany.tmpl delete mode 100644 templates/de/option-pickone.tmpl delete mode 100644 templates/de/option-trailer.tmpl delete mode 100644 templates/de/pager.tmpl delete mode 100644 templates/de/printer-accept.tmpl delete mode 100644 templates/de/printer-added.tmpl delete mode 100644 templates/de/printer-configured.tmpl delete mode 100644 templates/de/printer-confirm.tmpl delete mode 100644 templates/de/printer-default.tmpl delete mode 100644 templates/de/printer-deleted.tmpl delete mode 100644 templates/de/printer-jobs-header.tmpl delete mode 100644 templates/de/printer-modified.tmpl delete mode 100644 templates/de/printer-purge.tmpl delete mode 100644 templates/de/printer-reject.tmpl delete mode 100644 templates/de/printer-start.tmpl delete mode 100644 templates/de/printer-stop.tmpl delete mode 100644 templates/de/printer.tmpl delete mode 100644 templates/de/printers-header.tmpl delete mode 100644 templates/de/printers.tmpl delete mode 100644 templates/de/replace-ppd.tmpl delete mode 100644 templates/de/restart.tmpl delete mode 100644 templates/de/samba-export.tmpl delete mode 100644 templates/de/samba-exported.tmpl delete mode 100644 templates/de/search.tmpl delete mode 100644 templates/de/set-printer-options-header.tmpl delete mode 100644 templates/de/set-printer-options-trailer.tmpl delete mode 100644 templates/de/subscription-added.tmpl delete mode 100644 templates/de/subscription-canceled.tmpl delete mode 100644 templates/de/test-page.tmpl delete mode 100644 templates/de/trailer.tmpl delete mode 100644 templates/de/users.tmpl delete mode 100644 templates/es/add-class.tmpl delete mode 100644 templates/es/add-printer.tmpl delete mode 100644 templates/es/add-rss-subscription.tmpl delete mode 100644 templates/es/admin.tmpl delete mode 100644 templates/es/choose-device.tmpl delete mode 100644 templates/es/choose-make.tmpl delete mode 100644 templates/es/choose-model.tmpl delete mode 100644 templates/es/choose-serial.tmpl delete mode 100644 templates/es/choose-uri.tmpl delete mode 100644 templates/es/class-added.tmpl delete mode 100644 templates/es/class-confirm.tmpl delete mode 100644 templates/es/class-deleted.tmpl delete mode 100644 templates/es/class-jobs-header.tmpl delete mode 100644 templates/es/class-modified.tmpl delete mode 100644 templates/es/class.tmpl delete mode 100644 templates/es/classes-header.tmpl delete mode 100644 templates/es/classes.tmpl delete mode 100644 templates/es/command.tmpl delete mode 100644 templates/es/edit-config.tmpl delete mode 100644 templates/es/error-op.tmpl delete mode 100644 templates/es/error.tmpl delete mode 100644 templates/es/header.tmpl.in delete mode 100644 templates/es/help-header.tmpl delete mode 100644 templates/es/help-printable.tmpl delete mode 100644 templates/es/help-trailer.tmpl delete mode 100644 templates/es/job-cancel.tmpl delete mode 100644 templates/es/job-hold.tmpl delete mode 100644 templates/es/job-move.tmpl delete mode 100644 templates/es/job-moved.tmpl delete mode 100644 templates/es/job-release.tmpl delete mode 100644 templates/es/job-restart.tmpl delete mode 100644 templates/es/jobs-header.tmpl delete mode 100644 templates/es/jobs.tmpl delete mode 100644 templates/es/list-available-printers.tmpl delete mode 100644 templates/es/modify-class.tmpl delete mode 100644 templates/es/modify-printer.tmpl delete mode 100644 templates/es/norestart.tmpl delete mode 100644 templates/es/option-boolean.tmpl delete mode 100644 templates/es/option-conflict.tmpl delete mode 100644 templates/es/option-header.tmpl delete mode 100644 templates/es/option-pickmany.tmpl delete mode 100644 templates/es/option-pickone.tmpl delete mode 100644 templates/es/option-trailer.tmpl delete mode 100644 templates/es/pager.tmpl delete mode 100644 templates/es/printer-accept.tmpl delete mode 100644 templates/es/printer-added.tmpl delete mode 100644 templates/es/printer-configured.tmpl delete mode 100644 templates/es/printer-confirm.tmpl delete mode 100644 templates/es/printer-default.tmpl delete mode 100644 templates/es/printer-deleted.tmpl delete mode 100644 templates/es/printer-jobs-header.tmpl delete mode 100644 templates/es/printer-modified.tmpl delete mode 100644 templates/es/printer-purge.tmpl delete mode 100644 templates/es/printer-reject.tmpl delete mode 100644 templates/es/printer-start.tmpl delete mode 100644 templates/es/printer-stop.tmpl delete mode 100644 templates/es/printer.tmpl delete mode 100644 templates/es/printers-header.tmpl delete mode 100644 templates/es/printers.tmpl delete mode 100644 templates/es/restart.tmpl delete mode 100644 templates/es/samba-export.tmpl delete mode 100644 templates/es/samba-exported.tmpl delete mode 100644 templates/es/search.tmpl delete mode 100644 templates/es/set-printer-options-header.tmpl delete mode 100644 templates/es/set-printer-options-trailer.tmpl delete mode 100644 templates/es/subscription-added.tmpl delete mode 100644 templates/es/subscription-canceled.tmpl delete mode 100644 templates/es/test-page.tmpl delete mode 100644 templates/es/trailer.tmpl delete mode 100644 templates/es/users.tmpl delete mode 100644 templates/fr/add-class.tmpl delete mode 100644 templates/fr/add-printer.tmpl delete mode 100644 templates/fr/add-rss-subscription.tmpl delete mode 100644 templates/fr/admin.tmpl delete mode 100644 templates/fr/choose-device.tmpl delete mode 100644 templates/fr/choose-make.tmpl delete mode 100644 templates/fr/choose-model.tmpl delete mode 100644 templates/fr/choose-serial.tmpl delete mode 100644 templates/fr/choose-uri.tmpl delete mode 100644 templates/fr/class-added.tmpl delete mode 100644 templates/fr/class-confirm.tmpl delete mode 100644 templates/fr/class-deleted.tmpl delete mode 100644 templates/fr/class-jobs-header.tmpl delete mode 100644 templates/fr/class-modified.tmpl delete mode 100644 templates/fr/class.tmpl delete mode 100644 templates/fr/classes-header.tmpl delete mode 100644 templates/fr/classes.tmpl delete mode 100644 templates/fr/command.tmpl delete mode 100644 templates/fr/edit-config.tmpl delete mode 100644 templates/fr/error-op.tmpl delete mode 100644 templates/fr/error.tmpl delete mode 100644 templates/fr/header.tmpl.in delete mode 100644 templates/fr/help-header.tmpl delete mode 100644 templates/fr/help-printable.tmpl delete mode 100644 templates/fr/help-trailer.tmpl delete mode 100644 templates/fr/job-cancel.tmpl delete mode 100644 templates/fr/job-hold.tmpl delete mode 100644 templates/fr/job-move.tmpl delete mode 100644 templates/fr/job-moved.tmpl delete mode 100644 templates/fr/job-release.tmpl delete mode 100644 templates/fr/job-restart.tmpl delete mode 100644 templates/fr/jobs-header.tmpl delete mode 100644 templates/fr/jobs.tmpl delete mode 100644 templates/fr/list-available-printers.tmpl delete mode 100644 templates/fr/modify-class.tmpl delete mode 100644 templates/fr/modify-printer.tmpl delete mode 100644 templates/fr/norestart.tmpl delete mode 100644 templates/fr/option-boolean.tmpl delete mode 100644 templates/fr/option-conflict.tmpl delete mode 100644 templates/fr/option-header.tmpl delete mode 100644 templates/fr/option-pickmany.tmpl delete mode 100644 templates/fr/option-pickone.tmpl delete mode 100644 templates/fr/option-trailer.tmpl delete mode 100644 templates/fr/pager.tmpl delete mode 100644 templates/fr/printer-accept.tmpl delete mode 100644 templates/fr/printer-added.tmpl delete mode 100644 templates/fr/printer-configured.tmpl delete mode 100644 templates/fr/printer-confirm.tmpl delete mode 100644 templates/fr/printer-default.tmpl delete mode 100644 templates/fr/printer-deleted.tmpl delete mode 100644 templates/fr/printer-jobs-header.tmpl delete mode 100644 templates/fr/printer-modified.tmpl delete mode 100644 templates/fr/printer-purge.tmpl delete mode 100644 templates/fr/printer-reject.tmpl delete mode 100644 templates/fr/printer-start.tmpl delete mode 100644 templates/fr/printer-stop.tmpl delete mode 100644 templates/fr/printer.tmpl delete mode 100644 templates/fr/printers-header.tmpl delete mode 100644 templates/fr/printers.tmpl delete mode 100644 templates/fr/restart.tmpl delete mode 100644 templates/fr/samba-export.tmpl delete mode 100644 templates/fr/samba-exported.tmpl delete mode 100644 templates/fr/search.tmpl delete mode 100644 templates/fr/set-printer-options-header.tmpl delete mode 100644 templates/fr/set-printer-options-trailer.tmpl delete mode 100644 templates/fr/subscription-added.tmpl delete mode 100644 templates/fr/subscription-canceled.tmpl delete mode 100644 templates/fr/test-page.tmpl delete mode 100644 templates/fr/trailer.tmpl delete mode 100644 templates/fr/users.tmpl delete mode 100644 templates/it/add-class.tmpl delete mode 100644 templates/it/add-printer.tmpl delete mode 100644 templates/it/add-rss-subscription.tmpl delete mode 100644 templates/it/admin.tmpl delete mode 100644 templates/it/choose-device.tmpl delete mode 100644 templates/it/choose-make.tmpl delete mode 100644 templates/it/choose-model.tmpl delete mode 100644 templates/it/choose-serial.tmpl delete mode 100644 templates/it/choose-uri.tmpl delete mode 100644 templates/it/class-added.tmpl delete mode 100644 templates/it/class-confirm.tmpl delete mode 100644 templates/it/class-deleted.tmpl delete mode 100644 templates/it/class-jobs-header.tmpl delete mode 100644 templates/it/class-modified.tmpl delete mode 100644 templates/it/class.tmpl delete mode 100644 templates/it/classes-header.tmpl delete mode 100644 templates/it/classes.tmpl delete mode 100644 templates/it/command.tmpl delete mode 100644 templates/it/edit-config.tmpl delete mode 100644 templates/it/error-op.tmpl delete mode 100644 templates/it/error.tmpl delete mode 100644 templates/it/header.tmpl.in delete mode 100644 templates/it/help-header.tmpl delete mode 100644 templates/it/help-printable.tmpl delete mode 100644 templates/it/help-trailer.tmpl delete mode 100644 templates/it/job-cancel.tmpl delete mode 100644 templates/it/job-hold.tmpl delete mode 100644 templates/it/job-move.tmpl delete mode 100644 templates/it/job-moved.tmpl delete mode 100644 templates/it/job-release.tmpl delete mode 100644 templates/it/job-restart.tmpl delete mode 100644 templates/it/jobs-header.tmpl delete mode 100644 templates/it/jobs.tmpl delete mode 100644 templates/it/list-available-printers.tmpl delete mode 100644 templates/it/modify-class.tmpl delete mode 100644 templates/it/modify-printer.tmpl delete mode 100644 templates/it/norestart.tmpl delete mode 100644 templates/it/option-boolean.tmpl delete mode 100644 templates/it/option-conflict.tmpl delete mode 100644 templates/it/option-header.tmpl delete mode 100644 templates/it/option-pickmany.tmpl delete mode 100644 templates/it/option-pickone.tmpl delete mode 100644 templates/it/option-trailer.tmpl delete mode 100644 templates/it/pager.tmpl delete mode 100644 templates/it/printer-accept.tmpl delete mode 100644 templates/it/printer-added.tmpl delete mode 100644 templates/it/printer-configured.tmpl delete mode 100644 templates/it/printer-confirm.tmpl delete mode 100644 templates/it/printer-default.tmpl delete mode 100644 templates/it/printer-deleted.tmpl delete mode 100644 templates/it/printer-jobs-header.tmpl delete mode 100644 templates/it/printer-modified.tmpl delete mode 100644 templates/it/printer-purge.tmpl delete mode 100644 templates/it/printer-reject.tmpl delete mode 100644 templates/it/printer-start.tmpl delete mode 100644 templates/it/printer-stop.tmpl delete mode 100644 templates/it/printer.tmpl delete mode 100644 templates/it/printers-header.tmpl delete mode 100644 templates/it/printers.tmpl delete mode 100644 templates/it/restart.tmpl delete mode 100644 templates/it/samba-export.tmpl delete mode 100644 templates/it/samba-exported.tmpl delete mode 100644 templates/it/search.tmpl delete mode 100644 templates/it/set-printer-options-header.tmpl delete mode 100644 templates/it/set-printer-options-trailer.tmpl delete mode 100644 templates/it/subscription-added.tmpl delete mode 100644 templates/it/subscription-canceled.tmpl delete mode 100644 templates/it/test-page.tmpl delete mode 100644 templates/it/trailer.tmpl delete mode 100644 templates/it/users.tmpl delete mode 100644 templates/ja/add-class.tmpl delete mode 100644 templates/ja/add-printer.tmpl delete mode 100644 templates/ja/add-rss-subscription.tmpl delete mode 100644 templates/ja/admin.tmpl delete mode 100644 templates/ja/choose-device.tmpl delete mode 100644 templates/ja/choose-make.tmpl delete mode 100644 templates/ja/choose-model.tmpl delete mode 100644 templates/ja/choose-serial.tmpl delete mode 100644 templates/ja/choose-uri.tmpl delete mode 100644 templates/ja/class-added.tmpl delete mode 100644 templates/ja/class-confirm.tmpl delete mode 100644 templates/ja/class-deleted.tmpl delete mode 100644 templates/ja/class-jobs-header.tmpl delete mode 100644 templates/ja/class-modified.tmpl delete mode 100644 templates/ja/class.tmpl delete mode 100644 templates/ja/classes-header.tmpl delete mode 100644 templates/ja/classes.tmpl delete mode 100644 templates/ja/command.tmpl delete mode 100644 templates/ja/edit-config.tmpl delete mode 100644 templates/ja/error-op.tmpl delete mode 100644 templates/ja/error.tmpl delete mode 100644 templates/ja/header.tmpl.in delete mode 100644 templates/ja/help-header.tmpl delete mode 100644 templates/ja/help-printable.tmpl delete mode 100644 templates/ja/help-trailer.tmpl delete mode 100644 templates/ja/job-cancel.tmpl delete mode 100644 templates/ja/job-hold.tmpl delete mode 100644 templates/ja/job-move.tmpl delete mode 100644 templates/ja/job-moved.tmpl delete mode 100644 templates/ja/job-release.tmpl delete mode 100644 templates/ja/job-restart.tmpl delete mode 100644 templates/ja/jobs-header.tmpl delete mode 100644 templates/ja/jobs.tmpl delete mode 100644 templates/ja/list-available-printers.tmpl delete mode 100644 templates/ja/modify-class.tmpl delete mode 100644 templates/ja/modify-printer.tmpl delete mode 100644 templates/ja/norestart.tmpl delete mode 100644 templates/ja/option-boolean.tmpl delete mode 100644 templates/ja/option-conflict.tmpl delete mode 100644 templates/ja/option-header.tmpl delete mode 100644 templates/ja/option-pickmany.tmpl delete mode 100644 templates/ja/option-pickone.tmpl delete mode 100644 templates/ja/option-trailer.tmpl delete mode 100644 templates/ja/pager.tmpl delete mode 100644 templates/ja/printer-accept.tmpl delete mode 100644 templates/ja/printer-added.tmpl delete mode 100644 templates/ja/printer-configured.tmpl delete mode 100644 templates/ja/printer-confirm.tmpl delete mode 100644 templates/ja/printer-default.tmpl delete mode 100644 templates/ja/printer-deleted.tmpl delete mode 100644 templates/ja/printer-jobs-header.tmpl delete mode 100644 templates/ja/printer-modified.tmpl delete mode 100644 templates/ja/printer-purge.tmpl delete mode 100644 templates/ja/printer-reject.tmpl delete mode 100644 templates/ja/printer-start.tmpl delete mode 100644 templates/ja/printer-stop.tmpl delete mode 100644 templates/ja/printer.tmpl delete mode 100644 templates/ja/printers-header.tmpl delete mode 100644 templates/ja/printers.tmpl delete mode 100644 templates/ja/restart.tmpl delete mode 100644 templates/ja/samba-export.tmpl delete mode 100644 templates/ja/samba-exported.tmpl delete mode 100644 templates/ja/search.tmpl delete mode 100644 templates/ja/set-printer-options-header.tmpl delete mode 100644 templates/ja/set-printer-options-trailer.tmpl delete mode 100644 templates/ja/subscription-added.tmpl delete mode 100644 templates/ja/subscription-canceled.tmpl delete mode 100644 templates/ja/test-page.tmpl delete mode 100644 templates/ja/trailer.tmpl delete mode 100644 templates/ja/users.tmpl create mode 100644 templates/printer-cancel-jobs.tmpl delete mode 100644 templates/printer-purge.tmpl delete mode 100644 templates/pt_BR/add-class.tmpl delete mode 100644 templates/pt_BR/add-printer.tmpl delete mode 100644 templates/pt_BR/add-rss-subscription.tmpl delete mode 100644 templates/pt_BR/admin.tmpl delete mode 100644 templates/pt_BR/choose-device.tmpl delete mode 100644 templates/pt_BR/choose-make.tmpl delete mode 100644 templates/pt_BR/choose-model.tmpl delete mode 100644 templates/pt_BR/choose-serial.tmpl delete mode 100644 templates/pt_BR/choose-uri.tmpl delete mode 100644 templates/pt_BR/class-added.tmpl delete mode 100644 templates/pt_BR/class-confirm.tmpl delete mode 100644 templates/pt_BR/class-deleted.tmpl delete mode 100644 templates/pt_BR/class-jobs-header.tmpl delete mode 100644 templates/pt_BR/class-modified.tmpl delete mode 100644 templates/pt_BR/class.tmpl delete mode 100644 templates/pt_BR/classes-header.tmpl delete mode 100644 templates/pt_BR/classes.tmpl delete mode 100644 templates/pt_BR/command.tmpl delete mode 100644 templates/pt_BR/edit-config.tmpl delete mode 100644 templates/pt_BR/error-op.tmpl delete mode 100644 templates/pt_BR/error.tmpl delete mode 100644 templates/pt_BR/header.tmpl.in delete mode 100644 templates/pt_BR/help-header.tmpl delete mode 100644 templates/pt_BR/job-cancel.tmpl delete mode 100644 templates/pt_BR/job-hold.tmpl delete mode 100644 templates/pt_BR/job-move.tmpl delete mode 100644 templates/pt_BR/job-moved.tmpl delete mode 100644 templates/pt_BR/job-release.tmpl delete mode 100644 templates/pt_BR/job-restart.tmpl delete mode 100644 templates/pt_BR/jobs-header.tmpl delete mode 100644 templates/pt_BR/jobs.tmpl delete mode 100644 templates/pt_BR/list-available-printers.tmpl delete mode 100644 templates/pt_BR/modify-class.tmpl delete mode 100644 templates/pt_BR/modify-printer.tmpl delete mode 100644 templates/pt_BR/norestart.tmpl delete mode 100644 templates/pt_BR/option-boolean.tmpl delete mode 100644 templates/pt_BR/option-conflict.tmpl delete mode 100644 templates/pt_BR/option-header.tmpl delete mode 100644 templates/pt_BR/option-pickmany.tmpl delete mode 100644 templates/pt_BR/option-pickone.tmpl delete mode 100644 templates/pt_BR/option-trailer.tmpl delete mode 100644 templates/pt_BR/pager.tmpl delete mode 100644 templates/pt_BR/printer-accept.tmpl delete mode 100644 templates/pt_BR/printer-added.tmpl delete mode 100644 templates/pt_BR/printer-configured.tmpl delete mode 100644 templates/pt_BR/printer-confirm.tmpl delete mode 100644 templates/pt_BR/printer-default.tmpl delete mode 100644 templates/pt_BR/printer-deleted.tmpl delete mode 100644 templates/pt_BR/printer-jobs-header.tmpl delete mode 100644 templates/pt_BR/printer-modified.tmpl delete mode 100644 templates/pt_BR/printer-purge.tmpl delete mode 100644 templates/pt_BR/printer-reject.tmpl delete mode 100644 templates/pt_BR/printer-start.tmpl delete mode 100644 templates/pt_BR/printer-stop.tmpl delete mode 100644 templates/pt_BR/printer.tmpl delete mode 100644 templates/pt_BR/printers-header.tmpl delete mode 100644 templates/pt_BR/printers.tmpl delete mode 100644 templates/pt_BR/restart.tmpl delete mode 100644 templates/pt_BR/samba-export.tmpl delete mode 100644 templates/pt_BR/samba-exported.tmpl delete mode 100644 templates/pt_BR/search.tmpl delete mode 100644 templates/pt_BR/set-printer-options-header.tmpl delete mode 100644 templates/pt_BR/set-printer-options-trailer.tmpl delete mode 100644 templates/pt_BR/subscription-added.tmpl delete mode 100644 templates/pt_BR/subscription-canceled.tmpl delete mode 100644 templates/pt_BR/test-page.tmpl delete mode 100644 templates/pt_BR/trailer.tmpl delete mode 100644 templates/pt_BR/users.tmpl delete mode 100644 templates/ru/Makefile delete mode 100644 templates/ru/add-class.tmpl delete mode 100644 templates/ru/add-printer.tmpl delete mode 100644 templates/ru/add-rss-subscription.tmpl delete mode 100644 templates/ru/admin.tmpl delete mode 100644 templates/ru/choose-device.tmpl delete mode 100644 templates/ru/choose-make.tmpl delete mode 100644 templates/ru/choose-model.tmpl delete mode 100644 templates/ru/choose-serial.tmpl delete mode 100644 templates/ru/choose-uri.tmpl delete mode 100644 templates/ru/class-added.tmpl delete mode 100644 templates/ru/class-confirm.tmpl delete mode 100644 templates/ru/class-deleted.tmpl delete mode 100644 templates/ru/class-jobs-header.tmpl delete mode 100644 templates/ru/class-modified.tmpl delete mode 100644 templates/ru/class.tmpl delete mode 100644 templates/ru/classes-header.tmpl delete mode 100644 templates/ru/classes.tmpl delete mode 100644 templates/ru/command.tmpl delete mode 100644 templates/ru/edit-config.tmpl delete mode 100644 templates/ru/error-op.tmpl delete mode 100644 templates/ru/error.tmpl delete mode 100644 templates/ru/header.tmpl.in delete mode 100644 templates/ru/help-header.tmpl delete mode 100644 templates/ru/help-printable.tmpl delete mode 100644 templates/ru/help-trailer.tmpl delete mode 100644 templates/ru/job-cancel.tmpl delete mode 100644 templates/ru/job-hold.tmpl delete mode 100644 templates/ru/job-move.tmpl delete mode 100644 templates/ru/job-moved.tmpl delete mode 100644 templates/ru/job-release.tmpl delete mode 100644 templates/ru/job-restart.tmpl delete mode 100644 templates/ru/jobs-header.tmpl delete mode 100644 templates/ru/jobs.tmpl delete mode 100644 templates/ru/list-available-printers.tmpl delete mode 100644 templates/ru/modify-class.tmpl delete mode 100644 templates/ru/modify-printer.tmpl delete mode 100644 templates/ru/norestart.tmpl delete mode 100644 templates/ru/option-boolean.tmpl delete mode 100644 templates/ru/option-conflict.tmpl delete mode 100644 templates/ru/option-header.tmpl delete mode 100644 templates/ru/option-pickmany.tmpl delete mode 100644 templates/ru/option-pickone.tmpl delete mode 100644 templates/ru/option-trailer.tmpl delete mode 100644 templates/ru/pager.tmpl delete mode 100644 templates/ru/printer-accept.tmpl delete mode 100644 templates/ru/printer-added.tmpl delete mode 100644 templates/ru/printer-configured.tmpl delete mode 100644 templates/ru/printer-confirm.tmpl delete mode 100644 templates/ru/printer-default.tmpl delete mode 100644 templates/ru/printer-deleted.tmpl delete mode 100644 templates/ru/printer-jobs-header.tmpl delete mode 100644 templates/ru/printer-modified.tmpl delete mode 100644 templates/ru/printer-purge.tmpl delete mode 100644 templates/ru/printer-reject.tmpl delete mode 100644 templates/ru/printer-start.tmpl delete mode 100644 templates/ru/printer-stop.tmpl delete mode 100644 templates/ru/printer.tmpl delete mode 100644 templates/ru/printers-header.tmpl delete mode 100644 templates/ru/printers.tmpl delete mode 100644 templates/ru/restart.tmpl delete mode 100644 templates/ru/samba-export.tmpl delete mode 100644 templates/ru/samba-exported.tmpl delete mode 100644 templates/ru/search.tmpl delete mode 100644 templates/ru/set-printer-options-header.tmpl delete mode 100644 templates/ru/set-printer-options-trailer.tmpl delete mode 100644 templates/ru/subscription-added.tmpl delete mode 100644 templates/ru/subscription-canceled.tmpl delete mode 100644 templates/ru/test-page.tmpl delete mode 100644 templates/ru/trailer.tmpl delete mode 100644 templates/ru/users.tmpl create mode 100755 test/everywhere/bonjour-tests.sh create mode 100755 test/everywhere/document-format-tests.sh create mode 100644 test/everywhere/document-format-tests.test create mode 100755 test/everywhere/ipp-tests.sh create mode 100644 test/everywhere/ipp-tests.test create mode 100644 test/fax-job.test create mode 100644 test/get-job-template-attributes.test create mode 100644 test/get-printer-description-attributes.test diff --git a/CHANGES-1.7.txt b/CHANGES-1.7.txt new file mode 100644 index 000000000..d3438ff18 --- /dev/null +++ b/CHANGES-1.7.txt @@ -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" + () + - Several ippGet* functions incorrectly returned -1 instead of 0 on + error. + - The cupsGetResponse function did not work properly with + CUPS_HTTP_DEFAULT () + - The IPP backend did not abort a job when the printer did not validate + the supplied options () + - 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 () + - 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 + () + - 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 () + - The IPP backend might not include all job attributes in Validate-Job + operations () + - Fixed some clang-reported issues () + + +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 () + - Some gzip'd PPD files could not be used () + - Cleaned up some job logging in the scheduler + () + - ATTR messages could cause string pool memory corruption in the + scheduler () + - The RPM spec file did not list the build requirements; this was on + purpose, but now we are listing the Red Hat package names + (, STR #4322) + - Printing to a raw queue could result in corrupt output due to + opportunistic compression () + - The GNU TLS support code triggered many compiler warnings due to the + use of old GNU TLS compatibility type names + () + - The "make check" test suite did not work on Linux without the + cups-filters package installed () + - Japanese PPDs using with the Shift-JIS encoding did not work + () + - "tel:" URIs incorrectly had slashes () + - The libusb-based USB backend incorrectly used write timeouts + () + - Shared printers could become inaccessible after a few days on OS X + () + - The IPP backend did not wait for a busy printer to become available + before attempting to print () + - CUPS did not support "auto-monochrome" or "process-monochrome" for the + "print-color-mode" option () + - 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 + () + - Network backends now use the prtMarkerSuppliesClass property to + determine the direction of supply level values + () + - The scheduler did not remove backup PPD files when a printer was + deleted () + - The scheduler incorrectly responded to HEAD requests when the web + interface was disabled () + - The scheduler did not respond using the hostname specified by the + client () + - Fax queues did not work when shared via Bonjour + () + - Error messages from the scheduler were not localized using the + language specified in the client's IPP request + () + - Added an Italian localization () + - 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 () + - The ippfind utility reported the wrong port numbers when compiled + against Avahi () + - 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 () + - The scheduler incorrectly did not pass a FINAL_CONTENT_TYPE + environment variable to the filters or backend + () + - The cups-exec helper program could fail randomly on OS X due to + sandbox violations when closing excess file descriptors + () + - 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 () + - Fixed deprecation warnings for many functions on OS X so they are tied + to the deployment version when building () + - 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 () + - Fixed some issues with conversion of PWG media size names to + hundredths of millimeters () + - The IPP backend could crash on OS X when printing to a Kerberized + printer () + - The ipptool program now automatically extends timeouts when the + output buffer is filled () + - The ipptool program now supports the --help and --version options. + - The ipptool program did not continue past include file errors by + default () + - The ipptool program now supports FILE-ID and TEST-ID directives and + includes their values in its XML output () + - The ipptool program now supports WITH-HOSTNAME, WITH-RESOURCE, and + WITH-SCHEME expect predicates to compare the corresponding URI + components () + + +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) diff --git a/CHANGES-IPPTOOL.txt b/CHANGES-IPPTOOL.txt index cc42e2b0f..c96addbde 100644 --- a/CHANGES-IPPTOOL.txt +++ b/CHANGES-IPPTOOL.txt @@ -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 diff --git a/CHANGES.txt b/CHANGES.txt index d05ce49e6..eb812c4d7 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,250 +1,61 @@ -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" - () - - Several ippGet* functions incorrectly returned -1 instead of 0 on - error. - - The cupsGetResponse function did not work properly with - CUPS_HTTP_DEFAULT () - - The IPP backend did not abort a job when the printer did not validate - the supplied options () - - 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 () - - 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 - () - - 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 () - - The IPP backend might not include all job attributes in Validate-Job - operations () - - Fixed some clang-reported issues () - - -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 () - - Some gzip'd PPD files could not be used () - - Cleaned up some job logging in the scheduler - () - - ATTR messages could cause string pool memory corruption in the - scheduler () - - The RPM spec file did not list the build requirements; this was on - purpose, but now we are listing the Red Hat package names - (, STR #4322) - - Printing to a raw queue could result in corrupt output due to - opportunistic compression () - - The GNU TLS support code triggered many compiler warnings due to the - use of old GNU TLS compatibility type names - () - - The "make check" test suite did not work on Linux without the - cups-filters package installed () - - Japanese PPDs using with the Shift-JIS encoding did not work - () - - "tel:" URIs incorrectly had slashes () - - The libusb-based USB backend incorrectly used write timeouts - () - - Shared printers could become inaccessible after a few days on OS X - () - - The IPP backend did not wait for a busy printer to become available - before attempting to print () - - CUPS did not support "auto-monochrome" or "process-monochrome" for the - "print-color-mode" option () - - 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 - () - - Network backends now use the prtMarkerSuppliesClass property to - determine the direction of supply level values - () - - The scheduler did not remove backup PPD files when a printer was - deleted () - - The scheduler incorrectly responded to HEAD requests when the web - interface was disabled () - - The scheduler did not respond using the hostname specified by the - client () - - Fax queues did not work when shared via Bonjour - () - - Error messages from the scheduler were not localized using the - language specified in the client's IPP request - () - - Added an Italian localization () - - 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 () - - The ippfind utility reported the wrong port numbers when compiled - against Avahi () - - 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 () - - The scheduler incorrectly did not pass a FINAL_CONTENT_TYPE - environment variable to the filters or backend - () - - The cups-exec helper program could fail randomly on OS X due to - sandbox violations when closing excess file descriptors - () - - 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 () - - Fixed deprecation warnings for many functions on OS X so they are tied - to the deployment version when building () - - 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 () - - Fixed some issues with conversion of PWG media size names to - hundredths of millimeters () - - The IPP backend could crash on OS X when printing to a Kerberized - printer () - - The ipptool program now automatically extends timeouts when the - output buffer is filled () - - The ipptool program now supports the --help and --version options. - - The ipptool program did not continue past include file errors by - default () - - The ipptool program now supports FILE-ID and TEST-ID directives and - includes their values in its XML output () - - The ipptool program now supports WITH-HOSTNAME, WITH-RESOURCE, and - WITH-SCHEME expect predicates to compare the corresponding URI - components () - - -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 () + - Added support for regular expression matching in the MIME type rules + () + - 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 () + - The ipptool program now supports collection attributes with multiple + values () + - The sample drivers now include all of the installed localizations by + default () + - 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 () + - cupsRasterInterpretPPD now supports the Orientation header in order to + support long-edge feed raster printers () + - 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 + () + - 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 () + - Increased the default idle exit timeout to 60 seconds on OS X + () + - Printer classes were not accessible on OS X + () + - The scheduler now uses 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) diff --git a/INSTALL.txt b/INSTALL.txt index 26cb7c03c..feeafe7c2 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -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 diff --git a/IPPTOOL.txt b/IPPTOOL.txt index f8a008bef..2293a45e2 100644 --- a/IPPTOOL.txt +++ b/IPPTOOL.txt @@ -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. diff --git a/LICENSE.txt b/LICENSE.txt index 75c4a376f..658ea1e46 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -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 diff --git a/Makedefs.in b/Makedefs.in index 6d25b41cb..f9c275f3c 100644 --- a/Makedefs.in +++ b/Makedefs.in @@ -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 $" # diff --git a/Makefile b/Makefile index 199d0a0b3..79e46a3aa 100644 --- 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 $". # diff --git a/README.txt b/README.txt index de91fe8a8..2f5722c1f 100644 --- a/README.txt +++ b/README.txt @@ -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... diff --git a/backend/Dependencies b/backend/Dependencies index eeb231a2e..2d6e7eb03 100644 --- a/backend/Dependencies +++ b/backend/Dependencies @@ -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 diff --git a/backend/Makefile b/backend/Makefile index ec17c0a13..61a2ce80d 100644 --- a/backend/Makefile +++ b/backend/Makefile @@ -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 $". # diff --git a/backend/backend-private.h b/backend/backend-private.h index 09e4bac4e..2ad3d485c 100644 --- a/backend/backend-private.h +++ b/backend/backend-private.h @@ -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 $". */ diff --git a/backend/dnssd.c b/backend/dnssd.c index 742f9124c..c8f3139a6 100644 --- a/backend/dnssd.c +++ b/backend/dnssd.c @@ -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 $". */ diff --git a/backend/ieee1284.c b/backend/ieee1284.c index fc5ad1d09..a2fc623fc 100644 --- a/backend/ieee1284.c +++ b/backend/ieee1284.c @@ -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 /* @@ -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 $". */ diff --git a/backend/ipp.c b/backend/ipp.c index bfca6a8ed..784b47044 100644 --- a/backend/ipp.c +++ b/backend/ipp.c @@ -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 $". */ diff --git a/backend/lpd.c b/backend/lpd.c index f95f6ba5f..33e84086c 100644 --- a/backend/lpd.c +++ b/backend/lpd.c @@ -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 $". */ diff --git a/backend/network.c b/backend/network.c index 9e557dd75..fa016c655 100644 --- a/backend/network.c +++ b/backend/network.c @@ -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. */ /* @@ -26,11 +21,7 @@ #include "backend-private.h" #include -#ifdef __hpux -# include -#else -# include -#endif /* __hpux */ +#include /* @@ -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 $". */ diff --git a/backend/runloop.c b/backend/runloop.c index 74cdc512d..48b458a47 100644 --- a/backend/runloop.c +++ b/backend/runloop.c @@ -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. */ /* @@ -28,11 +21,7 @@ #include "backend-private.h" #include -#ifdef __hpux -# include -#else -# include -#endif /* __hpux */ +#include /* @@ -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 $". */ diff --git a/backend/snmp-supplies.c b/backend/snmp-supplies.c index 568af8586..4b1f13867 100644 --- a/backend/snmp-supplies.c +++ b/backend/snmp-supplies.c @@ -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 $". */ diff --git a/backend/snmp.c b/backend/snmp.c index a94e89c57..d2dd1e096 100644 --- a/backend/snmp.c +++ b/backend/snmp.c @@ -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 $". */ diff --git a/backend/socket.c b/backend/socket.c index 821b53a8a..11abd0037 100644 --- a/backend/socket.c +++ b/backend/socket.c @@ -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 $". */ diff --git a/backend/testbackend.c b/backend/testbackend.c index aecfd9cd9..b1f27e440 100644 --- a/backend/testbackend.c +++ b/backend/testbackend.c @@ -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 $". */ diff --git a/backend/usb-darwin.c b/backend/usb-darwin.c index 8c693d53b..2ec10d4a1 100644 --- a/backend/usb-darwin.c +++ b/backend/usb-darwin.c @@ -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 $". */ diff --git a/backend/usb-libusb.c b/backend/usb-libusb.c index 34c28999b..b0d996c0d 100644 --- a/backend/usb-libusb.c +++ b/backend/usb-libusb.c @@ -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 $". */ diff --git a/backend/usb-unix.c b/backend/usb-unix.c index 203380049..5e63a0e41 100644 --- a/backend/usb-unix.c +++ b/backend/usb-unix.c @@ -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 $". */ diff --git a/berkeley/Dependencies b/berkeley/Dependencies index 46b71d924..76b1f2a5e 100644 --- a/berkeley/Dependencies +++ b/berkeley/Dependencies @@ -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 diff --git a/berkeley/lpc.c b/berkeley/lpc.c index ffd76296a..72b0f717d 100644 --- a/berkeley/lpc.c +++ b/berkeley/lpc.c @@ -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 $". */ diff --git a/berkeley/lpq.c b/berkeley/lpq.c index 1cde7b071..0cb90476d 100644 --- a/berkeley/lpq.c +++ b/berkeley/lpq.c @@ -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 $". */ diff --git a/berkeley/lpr.c b/berkeley/lpr.c index a90818d34..24242ca99 100644 --- a/berkeley/lpr.c +++ b/berkeley/lpr.c @@ -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 $". */ diff --git a/cgi-bin/Dependencies b/cgi-bin/Dependencies index ff16e4849..66ffa01e1 100644 --- a/cgi-bin/Dependencies +++ b/cgi-bin/Dependencies @@ -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 diff --git a/cgi-bin/Makefile b/cgi-bin/Makefile index 64635a375..342a8a53d 100644 --- a/cgi-bin/Makefile +++ b/cgi-bin/Makefile @@ -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 $". # diff --git a/cgi-bin/admin.c b/cgi-bin/admin.c index 490a46bbe..b4ed294f5 100644 --- a/cgi-bin/admin.c +++ b/cgi-bin/admin.c @@ -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 $". */ diff --git a/cgi-bin/classes.c b/cgi-bin/classes.c index eb280df38..0af538b2f 100644 --- a/cgi-bin/classes.c +++ b/cgi-bin/classes.c @@ -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 $". */ diff --git a/cgi-bin/help-index.c b/cgi-bin/help-index.c index 997d22fad..50cac45d6 100644 --- a/cgi-bin/help-index.c +++ b/cgi-bin/help-index.c @@ -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 $". */ diff --git a/cgi-bin/ipp-var.c b/cgi-bin/ipp-var.c index 90fd39f25..ae47c9b85 100644 --- a/cgi-bin/ipp-var.c +++ b/cgi-bin/ipp-var.c @@ -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), "%s", 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 $". */ diff --git a/cgi-bin/jobs.c b/cgi-bin/jobs.c index ccff8cf86..383532d8b 100644 --- a/cgi-bin/jobs.c +++ b/cgi-bin/jobs.c @@ -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 $". */ diff --git a/cgi-bin/printers.c b/cgi-bin/printers.c index d690c4573..9cfd44c4e 100644 --- a/cgi-bin/printers.c +++ b/cgi-bin/printers.c @@ -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 $". */ diff --git a/cgi-bin/search.c b/cgi-bin/search.c index ed67008a7..9a9343127 100644 --- a/cgi-bin/search.c +++ b/cgi-bin/search.c @@ -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 $". */ diff --git a/cgi-bin/template.c b/cgi-bin/template.c index bc350a386..88343bd28 100644 --- a/cgi-bin/template.c +++ b/cgi-bin/template.c @@ -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 $". */ diff --git a/cgi-bin/testcgi.c b/cgi-bin/testcgi.c index cbe80ed82..61d32964f 100644 --- a/cgi-bin/testcgi.c +++ b/cgi-bin/testcgi.c @@ -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 $". */ diff --git a/cgi-bin/var.c b/cgi-bin/var.c index 382771d6d..dc06cbc4c 100644 --- a/cgi-bin/var.c +++ b/cgi-bin/var.c @@ -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 index 20d8d7e4b..000000000 --- a/cgi-bin/websearch.c +++ /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 $". - */ diff --git a/conf/cups-files.conf.in b/conf/cups-files.conf.in index 4e7a2cd90..f3f702321 100644 --- a/conf/cups-files.conf.in +++ b/conf/cups-files.conf.in @@ -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 $". -# diff --git a/conf/cupsd.conf.in b/conf/cupsd.conf.in index e671c16c2..e17601446 100644 --- a/conf/cupsd.conf.in +++ b/conf/cupsd.conf.in @@ -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 - -# -# End of "$Id: cupsd.conf.in 11025 2013-06-07 01:00:33Z msweet $". -# diff --git a/conf/mime.types b/conf/mime.types index 31001100f..002674e43 100644 --- a/conf/mime.types +++ b/conf/mime.types @@ -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,) -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)) diff --git a/conf/snmp.conf.in b/conf/snmp.conf.in index 3b4565f09..23a5babb2 100644 --- a/conf/snmp.conf.in +++ b/conf/snmp.conf.in @@ -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 $". -# diff --git a/config-scripts/cups-common.m4 b/config-scripts/cups-common.m4 index c79070d89..5822fe53e 100644 --- a/config-scripts/cups-common.m4 +++ b/config-scripts/cups-common.m4 @@ -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 ],[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 diff --git a/config-scripts/cups-compiler.m4 b/config-scripts/cups-compiler.m4 index 19a08f8db..421bfe775 100644 --- a/config-scripts/cups-compiler.m4 +++ b/config-scripts/cups-compiler.m4 @@ -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 diff --git a/config-scripts/cups-defaults.m4 b/config-scripts/cups-defaults.m4 index 173cfeac8..cf268ded2 100644 --- a/config-scripts/cups-defaults.m4 +++ b/config-scripts/cups-defaults.m4 @@ -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 diff --git a/config-scripts/cups-directories.m4 b/config-scripts/cups-directories.m4 index eec3dec02..fa3369e3f 100644 --- a/config-scripts/cups-directories.m4 +++ b/config-scripts/cups-directories.m4 @@ -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 diff --git a/config-scripts/cups-dnssd.m4 b/config-scripts/cups-dnssd.m4 index 02974ef8a..570856321 100644 --- a/config-scripts/cups-dnssd.m4 +++ b/config-scripts/cups-dnssd.m4 @@ -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 diff --git a/config-scripts/cups-gssapi.m4 b/config-scripts/cups-gssapi.m4 index d0923d75d..616d96c1f 100644 --- a/config-scripts/cups-gssapi.m4 +++ b/config-scripts/cups-gssapi.m4 @@ -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 diff --git a/config-scripts/cups-largefile.m4 b/config-scripts/cups-largefile.m4 index 8243de787..6be7b1f36 100644 --- a/config-scripts/cups-largefile.m4 +++ b/config-scripts/cups-largefile.m4 @@ -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 index 23a229516..000000000 --- a/config-scripts/cups-launchd.m4 +++ /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 diff --git a/config-scripts/cups-libtool.m4 b/config-scripts/cups-libtool.m4 index d6026b24b..2dcaab3a9 100644 --- a/config-scripts/cups-libtool.m4 +++ b/config-scripts/cups-libtool.m4 @@ -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 diff --git a/config-scripts/cups-manpages.m4 b/config-scripts/cups-manpages.m4 index 16246838c..bd6b8d557 100644 --- a/config-scripts/cups-manpages.m4 +++ b/config-scripts/cups-manpages.m4 @@ -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 diff --git a/config-scripts/cups-network.m4 b/config-scripts/cups-network.m4 index b97fb4a49..12c39fc2c 100644 --- a/config-scripts/cups-network.m4 +++ b/config-scripts/cups-network.m4 @@ -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 ]) - 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 diff --git a/config-scripts/cups-opsys.m4 b/config-scripts/cups-opsys.m4 index acf5b51a3..755f9d7e2 100644 --- a/config-scripts/cups-opsys.m4 +++ b/config-scripts/cups-opsys.m4 @@ -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 diff --git a/config-scripts/cups-pam.m4 b/config-scripts/cups-pam.m4 index 72bf32fc3..904a2739d 100644 --- a/config-scripts/cups-pam.m4 +++ b/config-scripts/cups-pam.m4 @@ -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 diff --git a/config-scripts/cups-poll.m4 b/config-scripts/cups-poll.m4 index 901068c27..8774a2f61 100644 --- a/config-scripts/cups-poll.m4 +++ b/config-scripts/cups-poll.m4 @@ -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 diff --git a/config-scripts/cups-scripting.m4 b/config-scripts/cups-scripting.m4 index d4ed98850..defaf097f 100644 --- a/config-scripts/cups-scripting.m4 +++ b/config-scripts/cups-scripting.m4 @@ -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 diff --git a/config-scripts/cups-sharedlibs.m4 b/config-scripts/cups-sharedlibs.m4 index ef2c71424..a8df14a3e 100644 --- a/config-scripts/cups-sharedlibs.m4 +++ b/config-scripts/cups-sharedlibs.m4 @@ -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 diff --git a/config-scripts/cups-ssl.m4 b/config-scripts/cups-ssl.m4 index f3dc0595f..cdd035c5a 100644 --- a/config-scripts/cups-ssl.m4 +++ b/config-scripts/cups-ssl.m4 @@ -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 index 000000000..946aacbfb --- /dev/null +++ b/config-scripts/cups-startup.m4 @@ -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 diff --git a/config-scripts/cups-threads.m4 b/config-scripts/cups-threads.m4 index b95c79fa4..9eaf63a12 100644 --- a/config-scripts/cups-threads.m4 +++ b/config-scripts/cups-threads.m4 @@ -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 diff --git a/config.h.in b/config.h.in index 2c5399e0b..c3347945b 100644 --- a/config.h.in +++ b/config.h.in @@ -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_ @@ -131,6 +131,13 @@ #define CUPS_STATEDIR "/var/run/cups" +/* + * Do we have posix_spawn? + */ + +#undef HAVE_POSIX_SPAWN + + /* * Do we have ZLIB? */ @@ -290,17 +297,9 @@ #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? */ @@ -323,6 +322,20 @@ #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? */ @@ -428,13 +441,6 @@ #undef HAVE_STRUCT_SOCKADDR_SA_LEN -/* - * Do we have the AIX usersec.h header file? - */ - -#undef HAVE_USERSEC_H - - /* * Do we have pthread support? */ @@ -448,6 +454,14 @@ #undef HAVE_LAUNCH_H #undef HAVE_LAUNCHD +#undef HAVE_LAUNCH_ACTIVATE_SOCKET + + +/* + * Do we have systemd support? + */ + +#undef HAVE_SYSTEMD /* @@ -522,13 +536,6 @@ #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 $". */ diff --git a/configure b/configure index 04a23df9a..4b270fee7 100755 --- 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 -" -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 @@ -10802,12 +10791,8 @@ do "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" ;; diff --git a/configure.in b/configure.ac similarity index 70% rename from configure.in rename to configure.ac index 4a5d80437..21d7f93a7 100644 --- a/configure.in +++ b/configure.ac @@ -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 diff --git a/cups/Dependencies b/cups/Dependencies index 10beea26b..54bd08c7c 100644 --- a/cups/Dependencies +++ b/cups/Dependencies @@ -1,260 +1,313 @@ 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 diff --git a/cups/Makefile b/cups/Makefile index e3647f3de..00b9b2b80 100644 --- a/cups/Makefile +++ b/cups/Makefile @@ -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 $". # diff --git a/cups/adminutil.c b/cups/adminutil.c index 580511b8f..9307893f5 100644 --- a/cups/adminutil.c +++ b/cups/adminutil.c @@ -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 $". */ diff --git a/cups/array.c b/cups/array.c index 29ae6d95e..b93ca1895 100644 --- a/cups/array.c +++ b/cups/array.c @@ -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 #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 $". */ diff --git a/cups/auth.c b/cups/auth.c index 9d38b3911..048dd4f08 100644 --- a/cups/auth.c +++ b/cups/auth.c @@ -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 $". */ diff --git a/cups/backchannel.c b/cups/backchannel.c index 66fa1ce4d..dca31d286 100644 --- a/cups/backchannel.c +++ b/cups/backchannel.c @@ -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 $". */ diff --git a/cups/conflicts.c b/cups/conflicts.c index 2ec8b7eb6..23fecde8d 100644 --- a/cups/conflicts.c +++ b/cups/conflicts.c @@ -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 $". */ diff --git a/cups/cups-private.h b/cups/cups-private.h index 9328cdadf..90420a220 100644 --- a/cups/cups-private.h +++ b/cups/cups-private.h @@ -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 $". */ diff --git a/cups/cups.h b/cups/cups.h index 3a1e8d1fd..77e824d0b 100644 --- a/cups/cups.h +++ b/cups/cups.h @@ -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 $". */ diff --git a/cups/debug.c b/cups/debug.c index 6df860cb7..d6c38f7d7 100644 --- a/cups/debug.c +++ b/cups/debug.c @@ -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 $". */ diff --git a/cups/dest-job.c b/cups/dest-job.c index f346444c6..703b1710d 100644 --- a/cups/dest-job.c +++ b/cups/dest-job.c @@ -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 $". */ diff --git a/cups/dest-localization.c b/cups/dest-localization.c index 9c3cfae15..f2bb9eb06 100644 --- a/cups/dest-localization.c +++ b/cups/dest-localization.c @@ -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 $". */ diff --git a/cups/dest-options.c b/cups/dest-options.c index 8c585340a..8fda3c832 100644 --- a/cups/dest-options.c +++ b/cups/dest-options.c @@ -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 $". */ diff --git a/cups/dest.c b/cups/dest.c index 7b30340a5..ab36a0660 100644 --- a/cups/dest.c +++ b/cups/dest.c @@ -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 $". */ diff --git a/cups/emit.c b/cups/emit.c index a9c35bb94..b1ad41050 100644 --- a/cups/emit.c +++ b/cups/emit.c @@ -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 $". */ diff --git a/cups/encode.c b/cups/encode.c index dcee8f65e..5847f5684 100644 --- a/cups/encode.c +++ b/cups/encode.c @@ -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 $". */ diff --git a/cups/file-private.h b/cups/file-private.h index bc147ff8f..7a34207fa 100644 --- a/cups/file-private.h +++ b/cups/file-private.h @@ -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 $". */ diff --git a/cups/file.c b/cups/file.c index e0ea5cef7..f1b65e677 100644 --- a/cups/file.c +++ b/cups/file.c @@ -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 $". */ diff --git a/cups/file.h b/cups/file.h index 887c33a1e..43bf294d6 100644 --- a/cups/file.h +++ b/cups/file.h @@ -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 $". */ diff --git a/cups/getputfile.c b/cups/getputfile.c index 33c5e5b8f..73d214246 100644 --- a/cups/getputfile.c +++ b/cups/getputfile.c @@ -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 $". */ diff --git a/cups/globals.c b/cups/globals.c index 9eb9c5a28..40727381d 100644 --- a/cups/globals.c +++ b/cups/globals.c @@ -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 $". */ diff --git a/cups/http-addr.c b/cups/http-addr.c index e8daaf3e7..51bf039a5 100644 --- a/cups/http-addr.c +++ b/cups/http-addr.c @@ -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 #ifdef HAVE_RESOLV_H # include #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 $". */ diff --git a/cups/http-addrlist.c b/cups/http-addrlist.c index bb1ff949f..b83214810 100644 --- a/cups/http-addrlist.c +++ b/cups/http-addrlist.c @@ -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 $". */ diff --git a/cups/http-private.h b/cups/http-private.h index 99a85c39e..23aee761f 100644 --- a/cups/http-private.h +++ b/cups/http-private.h @@ -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 # include # include @@ -39,7 +40,6 @@ # include # include # include -# 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 -# include -# include -# elif defined HAVE_GNUTLS +# ifdef HAVE_GNUTLS # include # include # include @@ -98,6 +94,19 @@ typedef int socklen_t; # include # include # endif /* HAVE_SECCERTIFICATE_H */ +# ifdef HAVE_SECCERTIFICATEPRIV_H +# include +# 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 # endif /* HAVE_SECITEMPRIV_H */ @@ -108,8 +117,13 @@ typedef int socklen_t; # include # endif /* HAVE_SECPOLICYPRIV_H */ # elif defined(HAVE_SSPISSL) -# include "sspi-private.h" -# endif /* HAVE_LIBSSL */ +# include +# include +# include +# define SECURITY_WIN32 +# include +# include +# endif /* HAVE_GNUTLS */ # ifndef WIN32 # include @@ -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 $". */ diff --git a/cups/http-support.c b/cups/http-support.c index a4250beec..0f224097a 100644 --- a/cups/http-support.c +++ b/cups/http-support.c @@ -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 $". */ diff --git a/cups/http.c b/cups/http.c index d840769f9..b4c9d71fb 100644 --- a/cups/http.c +++ b/cups/http.c @@ -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 $". */ diff --git a/cups/http.h b/cups/http.h index f9c83a88e..bce03ca8e 100644 --- a/cups/http.h +++ b/cups/http.h @@ -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 $". */ diff --git a/cups/ipp-private.h b/cups/ipp-private.h index 210c2e796..262baf7c7 100644 --- a/cups/ipp-private.h +++ b/cups/ipp-private.h @@ -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 $". */ diff --git a/cups/ipp-support.c b/cups/ipp-support.c index 2eaa8e530..a94888160 100644 --- a/cups/ipp-support.c +++ b/cups/ipp-support.c @@ -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. */ /* @@ -47,6 +26,14 @@ * 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 $". */ diff --git a/cups/ipp.c b/cups/ipp.c index 0946a0d6d..fab338453 100644 --- a/cups/ipp.c +++ b/cups/ipp.c @@ -1,124 +1,18 @@ /* - * "$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 $". */ diff --git a/cups/ipp.h b/cups/ipp.h index beada0af6..c56e7abe8 100644 --- a/cups/ipp.h +++ b/cups/ipp.h @@ -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 $". */ diff --git a/cups/langprintf.c b/cups/langprintf.c index af641c91d..420ca7e79 100644 --- a/cups/langprintf.c +++ b/cups/langprintf.c @@ -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 $". */ diff --git a/cups/language.c b/cups/language.c index 0836f6d96..035f9d259 100644 --- a/cups/language.c +++ b/cups/language.c @@ -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 $". */ diff --git a/cups/libcups2.def b/cups/libcups2.def index f3ea9ff6c..66ab4ad66 100644 --- a/cups/libcups2.def +++ b/cups/libcups2.def @@ -1,411 +1,539 @@ -LIBRARY libcups2 -VERSION 2.10 -EXPORTS -_cupsBufferGet -_cupsBufferRelease -_cupsGet1284Values -_cupsGetDests -_cupsGetPassword -_cupsGlobals -_cupsLangPrintError -_cupsLangPrintf -_cupsLangPuts -_cupsLangString -_cupsMD5Append -_cupsMD5Finish -_cupsMD5Init -_cupsMessageFree -_cupsMessageLoad -_cupsMessageLookup -_cupsMutexLock -_cupsMutexUnlock -_cupsNextDelay -_cupsSetError -_cupsSetLocale -_cupsStrAlloc -_cupsStrDate -_cupsStrFlush -_cupsStrFormatd -_cupsStrFree -_cupsStrRetain -_cupsStrScand -_cupsStrStatistics -_cups_strcasecmp -_cups_strncasecmp -_cups_strcpy -_cups_strlcat -_cups_strlcpy -_httpAddrSetPort -_httpAssembleUUID -_httpEncodeURI -_httpResolveURI -_httpWait -_ippFindOption -_ppdCacheCreateWithFile -_ppdCacheCreateWithPPD -_ppdCacheDestroy -_ppdCacheGetBin -_ppdCacheGetInputSlot -_ppdCacheGetMediaType -_ppdCacheGetOutputBin -_ppdCacheGetPageSize -_ppdCacheGetSize -_ppdCacheGetSource -_ppdCacheGetType -_ppdCacheWriteFile -_ppdFreeLanguages -_ppdGetEncoding -_ppdGetLanguages -_ppdHashName -_ppdLocalizedAttr -_ppdNormalizeMakeAndModel -_ppdOpen -_ppdOpenFile -_ppdParseOptions -_pwgMediaTable -cupsAddDest -cupsAddOption -cupsAdminCreateWindowsPPD -cupsAdminExportSamba -cupsArrayAdd -cupsArrayClear -cupsArrayCount -cupsArrayCurrent -cupsArrayDelete -cupsArrayDup -cupsArrayFind -cupsArrayFirst -cupsArrayGetIndex -cupsArrayGetInsert -cupsArrayIndex -cupsArrayInsert -cupsArrayLast -cupsArrayNew -cupsArrayNew2 -cupsArrayNew3 -cupsArrayNext -cupsArrayPrev -cupsArrayRemove -cupsArrayRestore -cupsArraySave -cupsArrayUserData -cupsCancelJob -cupsCharsetToUTF8 -cupsDirClose -cupsDirOpen -cupsDirRead -cupsDirRewind -cupsDoAuthentication -cupsDoFileRequest -cupsDoIORequest -cupsDoRequest -cupsEncodeOptions -cupsEncodeOptions2 -cupsEncryption -cupsFileClose -cupsFileCompression -cupsFileEOF -cupsFileFind -cupsFileFlush -cupsFileGetChar -cupsFileGetConf -cupsFileGetLine -cupsFileGets -cupsFileLock -cupsFileNumber -cupsFileOpen -cupsFileOpenFd -cupsFilePeekChar -cupsFilePrintf -cupsFilePutChar -cupsFilePuts -cupsFileRead -cupsFileRewind -cupsFileSeek -cupsFileStderr -cupsFileStdin -cupsFileStdout -cupsFileTell -cupsFileUnlock -cupsFileWrite -cupsFindDestDefault -cupsFindDestReady -cupsFindDestSupported -cupsFreeDests -cupsFreeJobs -cupsFreeOptions -cupsGetClasses -cupsGetDefault -cupsGetDefault2 -cupsGetDest -cupsGetDestMediaByIndex -cupsGetDestMediaCount -cupsGetDestMediaDefault -cupsGetDests -cupsGetDests2 -cupsGetFd -cupsGetFile -cupsGetJobs -cupsGetJobs2 -cupsGetOption -cupsGetPPD -cupsGetPPD2 -cupsGetPassword -cupsGetPrinters -cupsGetResponse -cupsLangDefault -cupsLangEncoding -cupsLangFlush -cupsLangFree -cupsLangGet -cupsLastError -cupsLastErrorString -cupsMarkOptions -cupsNotifySubject -cupsNotifyText -cupsParseOptions -cupsPrintFile -cupsPrintFile2 -cupsPrintFiles -cupsPrintFiles2 -cupsPutFd -cupsPutFile -cupsRemoveOption -cupsResolveConflicts -cupsSendRequest -cupsServer -cupsSetClientCertCB -cupsSetCredentials -cupsSetDests -cupsSetDests2 -cupsSetEncryption -cupsSetPasswordCB -cupsSetServer -cupsSetServerCertCB -cupsSetUser -cupsSetUserAgent -cupsTempFd -cupsTempFile -cupsTempFile2 -cupsUserAgent -cupsUTF32ToUTF8 -cupsUTF8ToCharset -cupsUTF8ToUTF32 -cupsUser -cupsWriteRequestData -httpAcceptConnection -httpAddCredential -httpAddrAny -httpAddrConnect -httpAddrCopyList -httpAddrEqual -httpAddrFreeList -httpAddrGetList -httpAddrLength -httpAddrListen -httpAddrLocalhost -httpAddrLookup -httpAddrPort -httpAddrString -httpAssembleURI -httpAssembleURIf -httpAssembleUUID -httpBlocking -httpCheck -httpClearCookie -httpClearFields -httpClose -httpConnect -httpConnect2 -httpConnectEncrypt -httpCopyCredentials -httpDecode64 -httpDecode64_2 -httpDelete -httpEncode64 -httpEncode64_2 -httpEncryption -httpError -httpFlush -httpFlushWrite -httpFreeCredentials -httpGet -httpGetBlocking -httpGetContentEncoding -httpGetCookie -httpGetDateString -httpGetDateString2 -httpGetDateTime -httpGetExpect -httpGetFd -httpGetField -httpGetHostByName -httpGetHostname -httpGetLength -httpGetLength2 -httpGetStatus -httpGetSubField -httpGetSubField2 -httpGets -httpHead -httpInitialize -httpMD5 -httpMD5Final -httpMD5String -httpOptions -httpPeek -httpPost -httpPrintf -httpPut -httpRead -httpRead2 -httpReadRequest -httpReconnect -httpSeparate -httpSeparate2 -httpSeparateURI -httpSetCookie -httpSetCredentials -httpSetDefaultField -httpSetExpect -httpSetField -httpSetLength -httpSetTimeout -httpStatus -httpTrace -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 -ippSetPort -ippSetBoolean -ippSetCollection -ippSetDate -ippSetGroupTag -ippSetInteger -ippSetName -ippSetOctetString -ippSetOperation -ippSetRange -ippSetRequestId -ippSetResolution -ippSetState -ippSetStatusCode -ippSetString -ippSetStringf -ippSetStringfv -ippSetValueTag -ippSetVersion -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 -ppdIsMarked -ppdLastError -ppdLocalize -ppdMarkDefaults -ppdMarkOption -ppdNextCustomParam -ppdNextOption -ppdOpen -ppdOpen2 -ppdOpenFd -ppdOpenFile -ppdPageLength -ppdPageSize -ppdPageWidth -ppdSetConformance -pwgFormatSizeName -pwgInitSize -pwgMediaForLegacy -pwgMediaForPPD -pwgMediaForPWG -pwgMediaForSize +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 index b8b22072d..000000000 --- a/cups/libcups_s.exp +++ /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 diff --git a/cups/localize.c b/cups/localize.c index 5a9b55f95..42c5fff93 100644 --- a/cups/localize.c +++ b/cups/localize.c @@ -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 $". */ diff --git a/cups/mark.c b/cups/mark.c index 23a399701..9580c0da7 100644 --- a/cups/mark.c +++ b/cups/mark.c @@ -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 $". */ diff --git a/cups/md5.c b/cups/md5.c index c3e73133a..5f473cb36 100644 --- a/cups/md5.c +++ b/cups/md5.c @@ -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 $". */ diff --git a/cups/options.c b/cups/options.c index d02500995..49b16f11a 100644 --- a/cups/options.c +++ b/cups/options.c @@ -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 $". */ diff --git a/cups/ppd-cache.c b/cups/ppd-cache.c index 75eef2d9c..7b3a9e5bf 100644 --- a/cups/ppd-cache.c +++ b/cups/ppd-cache.c @@ -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 $". */ diff --git a/cups/ppd-private.h b/cups/ppd-private.h index 4b8c4ba09..c1376d2cb 100644 --- a/cups/ppd-private.h +++ b/cups/ppd-private.h @@ -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 $". */ diff --git a/cups/ppd.c b/cups/ppd.c index c172c3d74..b3ebea4d4 100644 --- a/cups/ppd.c +++ b/cups/ppd.c @@ -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. */ /* @@ -70,14 +36,6 @@ * 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 $". */ diff --git a/cups/pwg-media.c b/cups/pwg-media.c index 657e1fef7..f1e2b0f53 100644 --- a/cups/pwg-media.c +++ b/cups/pwg-media.c @@ -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 $". */ diff --git a/cups/pwg-private.h b/cups/pwg-private.h index 1f1bc7cff..3e086dbab 100644 --- a/cups/pwg-private.h +++ b/cups/pwg-private.h @@ -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 $". */ diff --git a/cups/request.c b/cups/request.c index cf261f4ac..8f5131730 100644 --- a/cups/request.c +++ b/cups/request.c @@ -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 $". */ diff --git a/cups/sidechannel.c b/cups/sidechannel.c index cad2a2b40..8ecfbfc12 100644 --- a/cups/sidechannel.c +++ b/cups/sidechannel.c @@ -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. */ /* @@ -35,12 +26,8 @@ #else # include #endif /* WIN32 */ -#ifdef __hpux -# include -#elif !defined(WIN32) -# include -#endif /* __hpux */ #ifndef WIN32 +# include # include #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 $". */ diff --git a/cups/snmp-private.h b/cups/snmp-private.h index 9661243b7..21698e047 100644 --- a/cups/snmp-private.h +++ b/cups/snmp-private.h @@ -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 $". */ diff --git a/cups/snmp.c b/cups/snmp.c index b50d3d57a..86d4598c3 100644 --- a/cups/snmp.c +++ b/cups/snmp.c @@ -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 index e8f36c2d1..000000000 --- a/cups/sspi-private.h +++ /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 -# include -# include -# include -# include -# include -# define SECURITY_WIN32 -# include -# include - -/* - * 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 index ba66f729b..000000000 --- a/cups/sspi.c +++ /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 $". - */ diff --git a/cups/string-private.h b/cups/string-private.h index 1b3a86388..7bb77fc5c 100644 --- a/cups/string-private.h +++ b/cups/string-private.h @@ -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 $". */ diff --git a/cups/string.c b/cups/string.c index f66d59810..9f9949447 100644 --- a/cups/string.c +++ b/cups/string.c @@ -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 $". */ diff --git a/cups/tempfile.c b/cups/tempfile.c index 6973702c1..72eb96340 100644 --- a/cups/tempfile.c +++ b/cups/tempfile.c @@ -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 $". */ diff --git a/cups/testarray.c b/cups/testarray.c index 8003dfc31..7003331ff 100644 --- a/cups/testarray.c +++ b/cups/testarray.c @@ -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 index 000000000..0051f81e5 --- /dev/null +++ b/cups/testcache.c @@ -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 $". + */ diff --git a/cups/testcups.c b/cups/testcups.c index 0f6c24e75..690d93742 100644 --- a/cups/testcups.c +++ b/cups/testcups.c @@ -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 index 000000000..c760719ca --- /dev/null +++ b/cups/testdest.c @@ -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 +#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 $". + */ diff --git a/cups/testfile.c b/cups/testfile.c index 2c86d821d..6543e0a2f 100644 --- a/cups/testfile.c +++ b/cups/testfile.c @@ -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 $". */ diff --git a/cups/testhttp.c b/cups/testhttp.c index 71fe4df84..cd8cb5e37 100644 --- a/cups/testhttp.c +++ b/cups/testhttp.c @@ -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 $". */ diff --git a/cups/testi18n.c b/cups/testi18n.c index e5d3b8c10..490c938ca 100644 --- a/cups/testi18n.c +++ b/cups/testi18n.c @@ -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 $" */ diff --git a/cups/testipp.c b/cups/testipp.c index d4cf5b425..96a431b6f 100644 --- a/cups/testipp.c +++ b/cups/testipp.c @@ -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 $". */ diff --git a/cups/testppd.c b/cups/testppd.c index 640c4801f..65183dbf6 100644 --- a/cups/testppd.c +++ b/cups/testppd.c @@ -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 # include #endif /* WIN32 */ +#include /* @@ -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 $". */ diff --git a/cups/testpwg.c b/cups/testpwg.c index c054accb6..3dcbc34d7 100644 --- a/cups/testpwg.c +++ b/cups/testpwg.c @@ -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 $". */ diff --git a/cups/testsnmp.c b/cups/testsnmp.c index b60c2b795..d5e38569a 100644 --- a/cups/testsnmp.c +++ b/cups/testsnmp.c @@ -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 $". */ diff --git a/cups/thread-private.h b/cups/thread-private.h index ae1b86a6b..dadc034a3 100644 --- a/cups/thread-private.h +++ b/cups/thread-private.h @@ -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 $". */ diff --git a/cups/thread.c b/cups/thread.c index 8c4525221..ea49f1d9c 100644 --- a/cups/thread.c +++ b/cups/thread.c @@ -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 index 000000000..9fa0465dc --- /dev/null +++ b/cups/tls-darwin.c @@ -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 + +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 index 000000000..c69327226 --- /dev/null +++ b/cups/tls-gnutls.c @@ -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 + + +/* + * 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 index 000000000..868e6027a --- /dev/null +++ b/cups/tls-sspi.c @@ -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 index 000000000..e7937a07f --- /dev/null +++ b/cups/tls.c @@ -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 +#include +#ifdef WIN32 +# include +#else +# include +# include +# include +#endif /* WIN32 */ +#ifdef HAVE_POLL +# include +#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 $". + */ diff --git a/cups/transcode.c b/cups/transcode.c index 131b0741c..e3e7c8347 100644 --- a/cups/transcode.c +++ b/cups/transcode.c @@ -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 $" */ diff --git a/cups/usersys.c b/cups/usersys.c index a5b2c93ca..eef1b311e 100644 --- a/cups/usersys.c +++ b/cups/usersys.c @@ -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 $". */ diff --git a/cups/util.c b/cups/util.c index 602b6b683..753fbbccc 100644 --- a/cups/util.c +++ b/cups/util.c @@ -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 $". */ diff --git a/cups/versioning.h b/cups/versioning.h index fe2e30bf7..7f61f6d18 100644 --- a/cups/versioning.h +++ b/cups/versioning.h @@ -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 */ /* @@ -157,5 +159,5 @@ #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 $". */ diff --git a/desktop/cups.desktop.in b/desktop/cups.desktop.in index 2587543a4..2d521fa2f 100644 --- a/desktop/cups.desktop.in +++ b/desktop/cups.desktop.in @@ -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 diff --git a/doc/Makefile b/doc/Makefile index 0db512cc0..a6ba24d50 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -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 index 0000000000000000000000000000000000000000..a1d742df9c6fcb01b64807b7be40988b27815a43 GIT binary patch literal 13914 zc-qB!cYKr87x%r-eX^R}j3((wplsUGmJT*;Q#zn6g{0|Vlr%}(K$?UkWfkmYh)kKX zWfWwIpllJ@dv8=!KtwQ42dN~r#njj~f?sd3bs)H-S>^(nQB+D+}D_EP((L)0)D7xe>L&F)b)R}b{YpKg9#g*~AqqzkNQ-o+5o(MgQFGK9 zwLys}2_>U;s1xdnQcx-?L`A3=m7qSTFY1T-qf(HE%%}`mPz4%I-{V8v)bXfDv1R=5Cr%@0E9pU#6SY1AQ;Gi94LSiga8## z0}TiTVIUkt04>mgMxZf>1WiCw&5J z(4Gj}k=#3h&Y%nVq<~bA2K3~U4!VI1kO{ItHYs%nJwOh~1$m$+Y1Iq#1_odR1*Cl; zC<4Wx1oR>O`hotS6bv9O(tw4uZC~hiIffhT)PQy4E7NPWfgjtgP9`3 z?l3j6ILuzJiOgj5n3=)yJ?TcD+2b`?sy!JVv%%&xnH+Yf%~)wNSNmLP#sY68SyYjS zc&VO@%!pynHIml73(5QjTZPx?Ba;=D+a08{x1h>wcj`@qW%N`qgZ3;NXsW2T=h&Ub zA`Fz=heEgM%=?@1WfDY@e;lX!kj6 z{p$;<)xJuX$6G3q)HC!h_i&HBqS99?3Dy_n8+3)XGM&Nhv+1%eF6TM_>_fn?Wnd`g zVqU*oyQR`>bLb31Z8qOIPy#M32U0ayqY5&pYmvL#?C@zpw`gK-qI(_UpP zaHLvtyjV)6ltp&^cs_G2ASPsO(CZ4Y8o2*MiEI5z3}%!Vn05UN1q8|)!LT~832er4 zoP>E_f^A?s_!#T}pMag;`+t>KN3>1N*>!f(i%0A#j+Kjsimg*;l8vu*&Qm zL@d0(X3g~uG7#nYImDw3L+nHVhu-Bh5lKChdjIq9#x*i-(;(tKaGw$J zCmgX1{EW4KBjP6Th=?eEO+=>W?~IP0;6|8tRU!q?z@Okb1YjqGkb(%(pfO}YHjqFL z&_OQb!63*d+ROtfPz)tRzj;swNdeV0KoJiY(mtg^syg-U~Xi9{d20ixY9=iz1fu zaKeicw^X92sfmk?(j~->iqh4@wIyUy;;2#QVK@;c0&1ZSHX^`4rnWmPh+C)n2vt_? zvw3k7+!i-|bz@-@*b>I9fK6dD*c`UN&2V$v0=HZNTY*k63P$5r1fpYb9F8Z@mS@N} zd(0Icv%AvZ8}6_XC?e;K%VWwjWDxrxj~+IU^E^x-<0gVGFd1|pm})ea8AyER?L$`L zuva*%Y)&7s;nsdzf$d?3Qc1`QSbBYe<**~{#Mt3KHTauForhguSF(T<&>p6e6&6+! z(Cu5lQgZZKY-w=-M+aut!}JCr>YyIfUVs@e6K0X_*|0n80dt5<2Xj=eHWTaOVW)0}D4i++-@HaIL!WJ{arpM`GUr5#$_9J*}BtB~*=IZjSg#BSD z901L*%#Xw`Yf2?j2AD0rG_%)c4e*E)28h3N%zwc}XoKa%S1Q3FIFOVaz`(^FaWW5g zBJkGrpW$sY99$1?Nx0oB@CK{lP~!V=2yVX&4#OS()AwOH97TLT`4!(UNi$mpRd`(0 z&W1Aqj)r5IVaDLj%iuWNNlGn`0VnlzL4|X0D!c$M63!)fnY8!} zq?kN5M^1jcq0Et0NIcn^>Z~Xrk4(LhY>}~$)RHCYP0W6|yasc(!Nk+uMNB8VGe3^u zGx4r}khlU;%C0iGe3gXP&?eqc(QPnOlj$*dx(zO3CSgFSz+I77U1caEBa%v-Pps1v zaBQ3_fjAeNZ~^X#GjJX;%S>Vcy|4lI##z|NI}fk;UGGaGLTW*tp?79lPHarPuKr6L zv7yCPrUj`>($#;zpI$yUH$-~;$8sQnB7?;QHC z6F(+8x)+$K!B;aIW_k*r^?w1z{y=m&e9DBPrhw@bF^}lv#Cn1lP^l!WCN3r+J}$Oh zVnT9UVtj0TY;1xpIxZnfN7|K2LTlQ`BqX0A^yV%%xQkxj1Bb|H2_VN|R z#m4HQbv^@m`WHcQDPE~W8IUA^Q;Z+kJU+Y4yMhX$_>_PF%ztR{k3kG2f;X2@VqAoC zu1dnFV87XKB8LCE+3zG~PmG?DQF6xcDFre8I}OH9DM1H#l$iffN<&QiC>7>6e}>nE zlp4XQ1S3<3TU?}?5vo7DM73m`fNE{DnB4}0+eMN%CkYe{L+#cAtJzy=z`0zU`-)*= zGcn3s%uppbg-0HSmylIV%(D+R;{NqV0~O624Qa72?U9PDx5ors{kOp$skX!(sRSw! z_r?AGVvm%V>OfY@m_^Y`%qhm*|Jo{r$QWq#!gxv;<6*{6C-F7ajmp5KcmU?T$kkpy z6saCmPN_tduO~;GYmn`)+Ix@6rShnrR6e8Oe{A*tsC;JH-jtzl;2;e2Sw$JC0?I@c zQbkm8efH8&M+*67U*-RJfCe_B4-=SfW)h9S{H4?Y5)PAuyvp_-Wv0p~3uOhh4J;Dr z7KC{*AGY5wG=b_8V&{PF3XAUeeHIN!aIjAbacf#$Ii*i$giS>FYFW^%?f2`Yu z8b%E#N3fo%@xK|F!f>h4Ag$P3O~M~Nb4WRDLo>{l0<$~Y8E148;f;h$FR+lh-hOU; zf!*8N<{)>1S4M_!BH2H|FD{puLnR(V?iEa`4++DLHAJG9$Bq9jN4gpRidQEQ*RLgCQuWpNkoXr)D&te^)_>EQ`4yF)C_7SHH(@}y+h5R=2G)O z3blY*2nDh@0-ld9G6RPa(hTBW+xAFTIdbs z9&>@kRpmAmR4{K?3My<)eHP(ZZ3dIo?#(n;8JQP0CfhK^u>2J{1@8R3%$`Pf;6S(9 z@*M?k57`NSZHAwf;gLPBzj$~wuE7#69)^eWFv&p6NtzAt2>b>fh)3dDJgWW(r#_%I z1NTa5J+*=Qkot()NNvJ{ume|NCw5^{v4z?SI#JuHkEtDaF!qpe-HUyADCV1Lx@Tl( zj4G(fB==HD<3ak&>?(7GE#2nz*_~!434a+R`9t7>8Y03dQ;jh@gXz)gZ+hgoyx!q@ zvNa_CXWr)asx~|9zTpjv-A^3=?xjmHzkzX>I`TT>ICbK6#%by-2~nssxOy3N4iCZn zKCcWfVMTVmdxE)6mbk0S9Ciz15B=)NauQ|RJPiYVL0zdIxgO`fuE)7VT`cp7NhCOD zuoHZ>xGXMnf#1eVxx-C%+fY+MHuDHL;&;?75^OhQzAvF;Idz-5;}69Dv+gfg@&k3Z zm^iMPL4e^as2{0&)K8%HCF`GE_h)!>Db6YO+8j3j%b1dvkyrzwKVlHQTWm}+BM`}r z^x67Kn`MyAQ|2;zteG|v(V594|C`r5^?S{8#%mBoU|{U!Bg?uc-l&&L?NIP zQX>rt#nbT&V!bo*Ed0*@7wbh$P}A3J6SY7sUuQ(2=+_ysD4tj^io>)2#(H1aZmC2| z;3URjA7t}Yx~eNGeKE{yA2M~rvthjUsKaYUj5_~~5x;J<4PDbv4sfqQdX$d3p$wFX zvQReaj(Xrl_+7jhFTqRkGF*q3;}vUAF8TCC`Q+Xk8JH4&k9=0*Rph=Jukn}o#L&x` zqbJ|a7?;WJwG(qKskB>dy{jEIkGIcIyVL3#T7NtRJD3+a%!1PGB*kas@5i(?nLT#K z&b=kJVQ#aZ?=5zdyI6HZ9`KBss`@Ws0ule z3%Su? z&c8f^i9r<0KeAs=&?nDebh!f~l9)Wr<@33!0!3cqwCMoU-!|9Z{LqA^qPI!M{00To zp=qG@RYt=G%|MHQdo7xYW}(^W9W)2cMf1>nv;Zx{JMpJ@7v7Ec;JtVs-j5I9gKN>d zXfaxXmQod{4lPG3(0gb$K7^0p6ZjlC+|J|A@aOm{=|(mz=AWE_IL;7aKr#0GN|)1S zu=$ANR*+b(#lLkRXvw@*B263rThnU$e=#13LP)aYu@#mF@VZnI`EOl@+R6y%{HtVc zMl$9nfKo}be`{>1_IR1_ve|z(s*xncwg&ZWLR%PM+Kdk`^LsbH4{7YNIjxN4G&I_Q zb^-Tt^a3cOANpzQGsp#X9sYx`{90%a~tiwptnNEwD4dPn1^a^SL{;Y4hsdk-cnF zzkh9r&f1hpqW+6k{sEcTqhSqq(Y?Q4+%M=i;9h|qkZpO0j^HoI#$3TCSD?q}ck~2w z!e8RA@YiIE_(hd2pV#g36*UmW|M`Zeeo&gCCBXdwjcA%?k%5oUT$)D*(R^A!3uzH8 z#@Fz5{0*7vB));a#W(SH_!hp6@8Iu0prv#$Eu-a(Zs-uAAM&9?nLGXg-^D-TdwzZW zM83@DzW>fIU|w<;8yy6){A6Jtr+G-4+2eo3>gN=dO2h%{$hA4E{rtZ5X5ufD1e}q%3sC2hlor`sQ;l(5}9JJC%G@UktrDsDIp_&+>1AG=jlW`iExtXc657V zo`IwwN?S#ncwvMnUYkH1%M!ng!L{;0zj41=jol9rYkBg(Q!@z z3h)3M!~tNoc-^^%4FB(q+1>OyFKGl`yB=Kv(65r{tbCmg{J&jNi`(M^0Ok|At<~nW z5PBS;9YcL?hR?WwylfCdQ#3<+$N~wiV(5wh9p!Hmpcz+@TdSN_LNjZ2TdS-LeSpvt zhE&@KO`-t+#xw9h=nI5y;;6178;u?_eXDF{F95WF;rncsNf+kBZ>P($4RsLIj?O2c8Hq)8OfY124hJA0v;PWa_EtwW zIVrAvQc`q$Ox!CQ^?$AWFE2*70qQ|7zs{iY#7o}awR6=0(C#7Go9QokW%B{p_9g(T zFJAJRECoPJ^tSc%EAl8Ad#Q(zp+gB6+bl86hQ7G|wZVUJy)s`6Gu(^q(WTqU&D9Q{ zj@dT`aH~B!FY_yhF8Z%V{6Ba6`*lS1wv{s{3hBW_edMGj>UNUwjUc_w?))bu{*T@M zas}*~T(T8^0(of+kerqS^y3LY%lH8GUCe0xh2C;_Cct=Jq4rk5?)?}1&rzvq%*|`B z@b}aAHtNU`JS0%ZxFukLARq>Epau~Hq+5V!5D$_;N00)#f$pFuFoI&xA6P&or~)1^ z6pRF;!FVv)|G%XLU+lZz z1wNq=C7|R~IMs}5L$#w)sUDP(>PJ;jgQ*eJIO=U`9#u!Jqqb6eNlt!|x<+!=hX^1( zNy!?aXw;4*5Y|KLe@O?e%7J$Y8%aNacD3f>OhY2HoVA3@Tf z=0TlM2=2STB+nJ`6IBJ>I07OoNQ7k({#ERu<0MA;&%s8+O4v{iIYbWh9^Hx;Lf z`-?}2=ZH6nPmAwLc#>uky~HeeL$XlvvE;Jkp;RV~llGKWNvBBHN{>o!2Xlg(1$PU! z29FC~9=t#Jh78FfWqO%KHdeMmc2IUx&XzZqXUhl5C(A#OpOW8K1S=90CdDwtLdBEd>KwXxx&ylVjlvpbHL7m3tkJ1P ze>861xS;Wv#v2-c6&V!SF0wpwcI3Xu`%Sb>a+{27@_v&qn(~^qYg*ZKZqvg}e{0sf zSz)ucnr&-#ySb`)cJmR<-*5h93t@|{Ee5x!YjL3^yJfqUgId1Z@=PnLRbs2kRtsC5 zZcVjLYHe@*ZtJsAtf=-;&ZxSm%h7`9)aW76??+#cQO4xNjEUJ6bFWR4HYIIlv^m`7 z&)CFRN9>B&D{;Yb-Q&i@?TGs&zE!*>eqsEDw!*djYcE;)KrmAp7WbeZUnW5CM*6_%fW}IfcQqZEHx?rD4 zZ0c)TWBRQyy>MpXwW2mfql%6fYl`i~+eu&8H@4hy;!{B!Y-}m(Jtn@-}Kks&*oCH%Rs#{dQS$%y-mmv#>JRWKq zx@nknm~+^P;jM;G9DZv=#)$W7=o(ASzLAYajvje^RO+Z@Z@@Ro-q=?gSv#)wCeFmG zM+c1_H2UP2*fBH5{5rO9?2d8a-N&-lx4b$n~d1bTvf!l{XEC(fVv z=OpW-W0PYi&zbymie<{Nsc}>1O@01$`P-+aB~4pAoju(-{nCuCGgi-(&KxoG#;n{~ zTW9NLPn!MfJEiX&os%$U$=sm1)pM`S%bB-*ev|pr=RaLgx!~f$w1pcMg)N%6=(l&R z@19$nvUvTH@FkO%JXvaA`q{F~Wn1f-)y-MXUOr^`cPmUQ4!_s#y)`Q}D<`jfw#vEc z+Unk`53EUEvu17B+G+1o?^nNnXI(VEg*$^~*LWH%$Hzd|3VA_a6=T=+ed> z8~1H$w`u+6rkfXSk!_i@6>c5A_5QZXZP&IJZ$JBS_mB7O=(uCcCo!L_+SzF5!cP^S zPTLiFv_G@sY^Srk&UHPv_k8;KLl?3y z9KV=%@$997OP^itd->XD*3WK#?)d!YFNS>a#})h~>&r=BNxqu%b=cQ+S6g1)a4qTD zr`OZ3pZLb`&6OLL8$W#O{r2h2ao-8Qn{!KhYt8NW+dJ=M+&S}opYLz};Qrx{yW@Y9 z{yM#NIZx+3Yx!))pFRHk@_E(s=lECu8x*=Lozm~+|L91Pv7E3{L9Hpzz?1@w z^mO`be>$n7yZQfP_mUH6mq}+8=Ii}0D&M2C>F#t7I>-O3Pj(=M{jYxYA*mSi-<#n! zYij*ps?X9r!4#v%+&xFlX_3|fOk&;fL%VyPtRcLWg+36Tt`Py}j%TA(&48Ffb8 zP&Ud#26FC~l9Rs*c}bpFi{3<&(M&WSEk&!)I8$Sp3sma zrD9r6htiRBOS(0Q4BF6fbX$_IF}Yd?l9hEK(qP@M4L&>V52MON_rsepq;dv z_Rv0h6p11*J&~SFPo<~PGe|tKh+a%DrR(Sw^h$aay_w!gAEr;yXXtbE1^Np86@8UN z8aGI+@thURYR-yfwPhu;l3CqYd8}eq8EYWR#Tv$%&3c!$iM4}un01DAoN2@V?Aec*$Q?TyCplG-I3jeox)CI_hAoUm$MygC)>^Tkho+NyOzWzv)J#j z=d$Osm$K{FE7&X9tJxp1H?z00x3l-M53!H1kFig%pK%a}&yjKzoN!JfPIFEaCytZE zN#?ZYbmVm6bm63M(l~lf4kwRe;n+A896M(ar;0OzGm2Bo8N(SzqMT`*MV!T)Rh%`P zjhq9VlboxZ?>P@RPdU#x&$(Q#lG}*ehMUYyAysqq&o~ zQ@HPN=W!Qs7jbWJZ*za-{>**Cea=HXE>FOd@j`gvyhbEKYR-%0#qr{KZF!w|-FO+i zOkOsx2hYee@d|mxyfU7JSHqjYo55SmTgs~=QPdjVR^D#jUfzD*LEd5B8QwYG1>Pmz zXS^?XKk^>(o(7>HNl++>uv!MS4oV2h3n~b51&s-s7Bn|#MbN6CH9;GLb_DGXIump` z=vvUNp!-3;1pONHh(up8pfKEVOONx^BsXM!t&uLM^~R2L;o5Ox%%3A2RVg*n1p zVV*EwSWF_lK0>RoO6U>}7LE{(6pj*(7rrH&Eu1TyFI*&CEL=17NwFX zu&2l<>MOE{Dnx@sK2eQmjA(*rnrNPAk*H3zQnW#|Mf9=gQ_*hG9??|H z689Ak5SNLq;wrIAJeWk96U8&d%f#!%Tg1o2C&Z`3m&KopuZX`DKM+5WKuM59CW)8i zOL|L;lD?7w61!xKWU^$1WP@b8WUu6aRB&Q&m*C9cvf!%V3Bk*P*9C70-W7a2 z_>16M!N1D5GN~*~)>IZFi<7mLCCa+UGGx7E#WII%s0_;{%BINPmQ9zPmVGX}Ci_nI zgY3TSk?g6Ql5^!kxm>Q0E9EM=Mjj@Qkn7})<&pBH@@6D@ZYggq?;hzbL;Vzb?Nm|55&{{D}f6SPB7&tW^rFqJ^TRqO~Gg(MA!gh$pdjq9R$*PSHWp zNzp}-qDWJuD>4*WitdU+g;i0ms8kG8I22BWTQN#es~D{qt9VoKmSUn}vSOxU9*NNR zD~>6CQ_@P7lC9(_6-uQtM5!h*dvj$AWh-T}vV*ddva2#xsaN(?_EMH8ZAz~aD@QBG zD90&hC>JZ2Dpx4iDnC?iQ|?k8R(`3xp?n+yLxMu&B+_pl5+BkrBt4{CNM=Z{kiH@I z5Ld|HkjWw6h1?3c6Y@jIk0JL$?uYym@*w14$fJs!~;YRX0_pDqEGWGO21*qg4}BTU7g0`&9>2hg9cP7f3E~ zS@o^zrs_M@ZPi27W7QMYGu3l7R14Kgbvu${WT-RM*=m#8qPD3WYOflrXQ|&&&sEP? zFI2y)UZP&6Uao#my{ zek1&T_;2CAhyM}&EP{?;M{py8A_Nh^5fKs1BcdW=B4Q)rBRWQ;NA!v?MwlXsBl<-2 zBl(sqVsL~vVpzn8h>;O*M2wG^60tGjdc?hmpCcYbJc@W6@kGnfO0>aRxmKxFX&Y%H zwN16nwJo)+wF%nJ+6-+^ZC~wB?Qm_4c9gbOJ6bzd`=<6S?L_Tl?NseF?F{WY?RxEp z+Kt-H+O68{+8x@R+FjZ`+I`vs+C$nS+Ed!|+RwE&wLfT|>4He67piNjYpILZCFnZq zy6UoYy>unIe!5bfS?APwb;ETvx>34X-2~nAs4t_wj=B}~FzRVEB6*oQIwHDtbV78e i=*;Mz(Phz9Bu|?VJvDk}{o5C+{!L4-*Wb!S&;CCd`{2?5 literal 0 Hc-jL100001 diff --git a/doc/apple-touch-icon.png b/doc/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e4d8f81ce253ae8952b17858b5f9a597f2e3edf9 GIT binary patch literal 6139 zc-oCucQl+^*B>Pzh)5!c2%<)U5iQYs86}9`4MrVCi#}x3Xwi)ly%QyR8@&^wL=U12 z(R**7+SoQka=g>pR;; zJo~eWmtER(lPlHZljhs-@j8I=g%574lNQzo?sP5Et@ReY2M_z&kFhC8u!yy=n&-{T zaAi&;vAE5obp+u z09yjbFWtX;Ym4=&FD|s37{pLH?lx7AJ+psBM#A z5xH4JwYjN1wrp|QG&x7@rFtpU?S8Jl%d~+`5erSxo`Y_D0iwtNM+`biPs*vx17t*4Fkb80jBuKzD}m0vM;{DLg% z{RI(P5$vV}e%_<=-W0sdc#pl3tw}B38v@||e9AQ-yl$8fK!P5J!B)f_8@{ef@`|9l zvB9D!vcxf*)BS4YjD}Dz*mhn)j81j=h$!6DfiZ*iaps&Kv<3S?1fEkG0XKr31Dn<8 zF4YGvJDgcsfZqpM5}Y_3c3EsoQQR^y;fb3Td^LgP>}zEQ_>OQN#C_|-Yj;}@SF`!9 z9U;*N8Bv0O7I_Y=S%f9N&ko6>46%X;vaEXv;$tLFbnx9I#FXEV;&ey^MUX^^o(?kQ zQM~XiNS9C+I-qx=ti#v$JxjwIq~*SSi3Rt&ACEl(zB>V^`Y>54K!q>U+V@k^_0eZM z^5*Gzxf(KI;_6oN`6oL7R)53RXnfIbe4HU^E&M0DlHw6s3|RM{Sx3@kVdqOFMi6H` zsST5jv|qxx9heS|ry%Qmycnn*I&Z829y6BX7>zfH*H9o|<~1YXLY(?!8;^d?(PI80 z;(Ukqeo`1)yM|G?k!~sSE6xOXLx767tNHN)m7P}&g&wCZPcd%wz46fc59@7r=b3h0 z8(z$kZu{J8aojQXeAYo-xbUPZMGdAS$M}(WIaN2J&|dED03|HINmZK9dj=>REITzp0D^g|?`H zQZYj+ts&#RC=unD=S-wZa#T{{lW+OtYDL{d-6XQ#-OaQ8u2m3Um#m|Nl7!2_filrt z$bIBuPf>JXq;>2%(t}YcW*q5)G-OX@HhktSca?KdgRRmc+M|aI_rES zdbQ(#<`?SV4ulb+i+PTr!cbz$d*9t|Mp5`sFG`MbH zi9LN``@%DpF4im-D>l49K^-EOZDfadj{{E0qQu zu?buKYG#b(A$;jY#hbZoL&8}zg+fIpdF5K>nQzMn9_mN2>%JDN)~i-^5m%B2Y5@&P zRJPNFRZ@#mvzla@biI3<2Wh8_Ld23<^3sFTo4_gH%y|>~g2=+57nwSl0-bM6s_cVz zg%@?1N`sO?QJ}CMMb(M#vuZ|l=n6EE^|A#McOg%GS4Qa%ZS618V`+SCg592(Zb_#v z357zmLXyd5$P8IGSykEAS!uLcv~OwIRIHVrwN14rTI-v@y8^5hP09yyW|k|9^4aE` zn>OJBiTb58Wc6?B(MQBbbmvUxukeHdT?0|X#}iJ@&+Gl*qxaW;&DRXaJd{F1T#QQj!ww^|ImJ!`(6=VPx`TF48?R z9a5t*ic%g@NGW-w7OQsol60s}C~b}q8O@VN9t_S7`NzXE@_~yR3j~W>>|A>L)Z$=SZ%D9=7IV6p9ZFYh5t7vP(0&C{9wBfm{l_EGk^%TH%~mmf2$b^BTg#@YsxgT+7fi!l9r8GF_Bnj4K8 zU|oBodzRs*;T4>DWhl84E1A*UwX8J+Wq9H;YR#j1GkL0Odc0}Q#(M-S45tH6n3|NT z!Mpod*}6!~rUU$A{!1HrJ!7q|$=ut}TXIu&Hxe!5FO%KX8vcG%;QRRNyw@?jtzl7} zUl;AWV3$7+B|IJ$t}1h7)}G+LdB(T9&~-wyokAoy=@twxSY^IUJ*pbi3D!v;`!N<& zmBnl6q2MvM`e7vb>A+Jqk)&(SgV3Xd#PVKqd35B!qt8ivsV-i7;+_7xAwlGU{F+X} zbrnm)$;G9`vwa9;iNS8IL;f`C{6ZaBXkN^xF91)5qc#IB!^WuVQ{oIayewBMw{1|X zcIB6Gi$$LrZ^2j2^v{8_M|E(_r|aY=I3c&sw%8jzt_^+&t-@z7hw$?68Hn_|zqz!y zG}&0pU?xy{ky0R1bUAu5ZkCTa*hm{ULYIFu4-cr30A9zQmMFE|Lg%AjN>@m)$rQ<; zLr+6z+`k@l?DT~qM;85?Sgxv$V}}Y;yDF6lM%zceSwt{5C;X{+p!@#0gC6Y6G=(K z#K~HSPD@dlRs!Y#q2*!cX6K+2CZMII6?8B)<9{b9{a5*=vV_^v{@#O)Veg%U z=;;26`P2R+GBx>|$L_rY^bZzO6CeZ%v4Pk+IRam?zXJZZJUa`R6U@;9X7_ixt>a%c zxv38D@8cT)4&dMFehV};;Wu%BfSq6t!vDbiL%Ax%{-54|9Y8IG6)jCHzz`^{stW|- zBnbS=`%etue}V`C|10Bf9S)Y}7EX@;MTQvE>3@^)`~Lh;u&uceohzFu#0>l%>O?0j z0kd=a1C5rG;}sXJn4KLILJP7rVgJ8${*&boo&TXo@b60U%R<1WP)l2gu!Op@Dy=5O zm{!%&>4wDwW-AE%FJT1#&h>9C@n^pQ|7tj40zu&4%_~f>bEM>Y)9TNa71X4}#l4qobp%tE;D{r?0PXU|?WqXlP_)1O|hRjg3uAOiWEpArOd} znVGq{xrK#=rKP2nm6f%%H53Z9v9YnWwS~c8c6N65_Vx}A4vvnFPB-@cw>djI-+UUb zuC8uwZtm{x9v&W^o}O?x+{??$+uQrYhYtt@!pFzQ*Vot2&(GiAKOi6=Ffj1r$B#il zLBYYnAt525p`l@6VV^#I3J(vDh=_=cjEstkijIzsiHV7gjg535kh` zNl8hcKYvb6PEJWlNxiYO)U>p;^z`(MjEv08%&e@e?Ck8EoSfX;+`PQJ{QUfaf`Y=r z!Y^OG6crT}7Z;b6m6ey5S5#C~RaI42SJ%|k)YjJ4)z#J4*P~FV#>U2`rl#iR=9ZS0 z*4Eaxwzl^6_KuE@&d$!RuCDIx?w+2W-rnB6zP|qc{(*r3G#WiPI5;#kG(0>!GBWc0 z`}fh&(ed%|iHV8H$;qjysUJUn%*@Qp&d$!w&HeoObAEn)VPRo$adByB34_5bFE6jG zto-`*Yjt&XZEbCReSKqNV{>zJYinzJdwXYRXLomZZ*OmZfB)d%;PCM9=;-M9`1s`H zgwwH`dTtE>@fgBwdrdB!5E+RD28iKK z`j>@%kJPYavwbculSb!}@67r_E2L7RkZi-4ywY&pT;#NFe5*)aKAZi*0|k0pl^`&( z>E^!QCiMC>A8eqOIf3D|+e+(D=7>zKLZ%f?z)fveS(vo65c4~c^nuCKJ#J+4=nio@+&AlzA#Hzz;D5+~p!h+~QeLG1_}Zh3|jjQ?GVqbCkVO;0J9QtVBA z7;`2NV5lb)>gfsn9IICjXv>Smrf)l-T&|6tM1Z^H5OCiCDTp17W>GT-N2yCQ=@Sk? zOt(SgtB%`5mzVHMy))%XEQy;IH3U9n{nAV__b|Nc_|1cr9%3RT9hSkHchIJK?_2$5 zbE$_5xuU+-RuzuKcyY15c-@2zPQbuGa1?`b_Mqb<7&{1kX(ixVN_lAIs%*a(u?#VamuQ(FZw`Hby zjlQOTBPRNK_*Dyf>7HoJT8-V-_NhV`8hlJKR%ET83o3j{k-^3`6lW1L^J&%?FJO6@ zDKW7WdLt{7Nii(PH835~E3x7A@g=WOUT#@jwtJ*Uc=~`GB5{iHStXrYczRv1fqJ~A z`ZOZFtSlo+PU_ZZo-Izm9?z$k5*G8?UcpY~9FSWA%Pjagi#A4&u^}ROoFX_xlgv>& zsNgO|a6BnLlHI`M`CxWwS~D@x>1m{=BAv65)>mUGYWV?0M*)tdrRAmNVOD0Df>{&% zz_!Uru)F`)QY?w*6@nF>ZXXTR%CRNLVj--MpdTJY2%|v|E8$M)ViXG4^nUXU^RO+v zgmVLPF~NDExmV5_h#1|2W-{w*r|4c3G_KZK8|v{3P1bj!;Iuh*RKIG^j6mI}=PzS1OGHO@`4<33MY^62>N3o%8yj^Y^|9m=1@lQeY`!rw-wyTB%i@o%wBw!k7r zBhpJ2Any$6ka_Nzx>)qZ9O?SP@XHnU>*v0BLDcuo8S7-W1Lg(~mv^gzWmWZx{YLt2 zL*rbPlO*|c7WF@EP|G&J@1?#G)3+v}`j**<__qJ?wGXw@x4iiAwD_}o^q#>z4;NN6 zRlkgpiPgUfva(Sp^k`u;uy2}ZQPoSmzbRE(%Ox4k?7?JS{xAs@AC?J9JF2>z`Xx7xJH##v0 z^Ye4^b3Pbcv@GwM_qv)m1U%=8n4PShoUEnw%dAu&o!=)a7NnG z##L1J#45Mz*w!zvmS;n98WTHXQ(+Z@N*!mQs#MzY4NSzb-95|(R);pzd0P}Y@NQTM z++B5s3ov$CygDyzFbnkEvn@#8I9m6uWZAuSyVCsr^LFMv%n^9%o4&!+Xo747i1Y~T znH9G%p>Gm>xjH(FP2ZTPAsC+bseZ<%x!@do-8`e>X8h7%yF>DzzhuK*_jC6TZ>7B> z?-f^;tcqNXCv3XAq3^ohyxLfHezAGxoVc~)HpuGSSrVn_!u)P}WI#sT_{TPV(dz*H zB*~d8^G|E4!y?v8(q+4=OGgTg>U}6L5Ju!W6vh|&GUF7_gv&5#c_`Gg5FfP{bsFC8 z9S&nV$Zaq5T)SZVW@5wC_(=3j*?cdxm70ld`F8pSY^QFEJKA-9V@*vMvxK4!mw{& zw+u~)?}i%-@(8fU9P-Z<@SZ*#H~gIKz?-&PZzJpBlW?Lz_-U2+k_4Z=Tw8IMS#K_9 z()T1}UGFrG+S?!n@ZxHvq4+udocQvq)WY4=MOmW9Z@O9p5}yX4lUZFFvpbr)ZIsrS z4|p1j*!sGws}}9Pk@rmff_EU7z~^ZyLhtV;(1Y5lV*-|(gjuJ3jjvv>pND#e;6}=^ z>z7D2!JGDiOB^WJ+q|s_lP$tOw=f4hyF2%8cYW|sTvRP!XEplqDVgZu(_Qc5))d9C z^Jp`FErXY_t-L2=u{uH8aSe7 z!1%Pk1IP_Dm*&^bQ&|ai%%mGT2#_M910uB_D!TMN-fK*#-rToot!lb$F3xmGmug!} z!EH+}(u_viX?2tntTeA{cEO8mxpG!CYxJLCOX8t9-;^CJEpcbG6czdSqP|uvBIaZ? zcZ=z8&2)=qhpo0lTIuDU{l1ocFzPDfjI82dmu$wiA&A8@EUp6$w7^^5r9>V@pT@Me zjHR!t!alo!YY;V45|1{|%?6sdt15*ztk55k<2KZS&R5?N`a|L_-s9W4WJbupCg-0^ z+qxP*W43kUer9d!wiAEuul~})G*@S LTghT^BcJ~PPloDY literal 0 Hc-jL100001 diff --git a/doc/ca/index.html.in b/doc/ca/index.html.in deleted file mode 100644 index 87d18e57f..000000000 --- a/doc/ca/index.html.in +++ /dev/null @@ -1,105 +0,0 @@ - - - - - Inici - CUPS @CUPS_VERSION@@CUPS_REVISION@ - - - - - - - - -
- - - - - - - - - - - - -
  Inici    Administració    Classes    Ajuda en línia    Tasques    Impressores  
- - - - - -
- -

CUPS @CUPS_VERSION@

- -

CUPS és el sistema d'impressió de codi obert i basat en estandards desenvolupat per -Apple Inc. per OS® X and -altres sistemes operatius basats en UNIX®

- -
CUPS
- - - -
- -

CUPS per usuaris

- -

Descripció general del CUPS

- -

Impresió i opcions en linia de comandes

- -

Novetats del CUPS 1.4

- -

Fòrum d'usuaris

- -
- -

CUPS per Administradors

- -

Afegir impressores i classes

- -

Gestió de les polítiques de treball

- -

Bàsic de comptes d'impressió

- -

Seguritat del servidor

- -

Ús d'autenticació amb el Kerberos

- -

Ús d'impressores en xarxa

- -

Referència del cupsd.conf

- -
- -

CUPS per desenvolupadors

- -

Introducció a la programació amb CUPS

- -

La API de CUPS

- -

Programació de filtres i rerefons

- -

APIs per HTTP i IPP

- -

API per PPD

- -

API per Raster

- -

Referència del fitxer d'inf. del compilador del controlador per PPD

- -

Fòrum de desenvolupadors

- -
- -
 
CUPS i el seu logotip són marques registrades de -Apple Inc. CUPS té copyright 2007-2014 d'Apple -Inc. Tots els drets reservats.
- - diff --git a/doc/cs/index.html.in b/doc/cs/index.html.in deleted file mode 100644 index 5d2a8d021..000000000 --- a/doc/cs/index.html.in +++ /dev/null @@ -1,105 +0,0 @@ - - - - - Hlavní strana - CUPS @CUPS_VERSION@@CUPS_REVISION@ - - - - - - - - -
- - - - - - - - - - - - -
  Hlavní strana    Administrace    Třídy tiskáren    Nápověda    Ãšlohy    Tiskárny  
- - - - - -
- -

CUPS @CUPS_VERSION@

- -

CUPS je na bázi standardů otevřený zdrojový kód tiskového systému vyvinutý -společností Apple Inc. pro Mac OS® -X a jiné UNIX®ové operační systémy.

- -
CUPS
- - - -
- -

CUPS pro uživatele

- -

Popis CUPS

- -

Příkazová řádka tisku a Možnosti

- -

Co je nového v CUPS 1.6

- -

Uživatelské fórum

- -
- -

CUPS pro administrátory

- -

Přidání tiskáren a tříd

- -

Správa politik

- -

Základní účtování tiskáren

- -

Zabezpečení serveru

- -

Použití ověřování pomocí protokolu Kerberos

- -

Použití síťových tiskáren

- -

Konfigurační soubor cupsd.conf

- -
- -

CUPS pro vývojáře

- -

Úvod do CUPS programování

- -

CUPS API knihovny

- -

Programování filtrů a backendů

- -

HTTP a IPP API knihovny

- -

PPD API knihovny

- -

Raster API knihovny

- -

PPD kompilátor Driver Information File Reference

- -

Vývojářské fórum

- -
- -
 
CUPS a logo CUPS jsou ochranné známky společnosti -Apple Inc. CUPS je chráněn autorskými -právy 2007-2014 Apple Inc. Všechna práva vyhrazena.
- - diff --git a/doc/cups-printable.css b/doc/cups-printable.css index 42ea2bee1..262e625f4 100644 --- a/doc/cups-printable.css +++ b/doc/cups-printable.css @@ -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; } diff --git a/doc/cups.css b/doc/cups.css index 815c193c3..da6ac1594 100644 --- a/doc/cups.css +++ b/doc/cups.css @@ -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 index 5dd6e2d6a..000000000 --- a/doc/de/index.html.in +++ /dev/null @@ -1,105 +0,0 @@ - - - - - Home - CUPS @CUPS_VERSION@@CUPS_REVISION@ - - - - - - - - -
- - - - - - - - - - - - -
  Startseite    Verwaltung    Klassen    Online- Hilfe    Aufträge    Drucker  
- - - - - -
- -

CUPS @CUPS_VERSION@

- -

CUPS ist das auf Standards basierte, Opensource-Drucksystem, welches von -Apple Inc. für Mac OS® X und -andere UNIX®-ähnliche Betriebssysteme entwickelt wird.

- -
CUPS
- - - -
- -

CUPS für Benutzer

- -

CUPS Übersicht

- -

Kommandozeilendruck und Einstellungen

- -

Neues in CUPS 1.7

- -

Benutzerforum

- -
- -

CUPS für Administratoren

- -

Drucker und Klassen hinzufügen

- -

Betriebsrichtlinien verwalten

- -

Basiswissen Druckabrechnung

- -

Sicherheit des Servers

- -

Verwenden der Kerberos Authentifizierung

- -

Benutzen von Netzwerkdruckern

- -

cupsd.conf Referenz

- -
- -

CUPS für Entwickler

- -

Einführung in die CUPS-Programmierung

- -

CUPS-API

- -

Filter- und Backend-Programmierung

- -

HTTP- und IPP-APIs

- -

PPD-API

- -

Raster-API

- -

PPD Compiler Treiber Dateireferenz

- -

Entwicklerforum

- -
- -
 
CUPS und das CUPS Logo sind -eingetragene Warenzeichen der Apple Inc. -CUPS ist urheberrechtlich geschützt 2007-2014 von Apple Inc, alle Rechte vorbehalten.
- - diff --git a/doc/es/index.html.in b/doc/es/index.html.in deleted file mode 100644 index e7dc3a502..000000000 --- a/doc/es/index.html.in +++ /dev/null @@ -1,105 +0,0 @@ - - - - - Inicio - CUPS @CUPS_VERSION@@CUPS_REVISION@ - - - - - - - - -
- - - - - - - - - - - - -
  Inicio    Administración    Clases    Ayuda en línea    Trabajos    Impresoras  
- - - - - -
- -

CUPS @CUPS_VERSION@

- -

CUPS es el sistema de impresión de código abierto basado en -estándares desarrollado por Apple Inc. para -OS® X y otros sistemas operativos tipo UNIX®.

- -
CUPS
- - - -
- -

CUPS para usuarios

- -

Descripción de CUPS

- -

Impresión desde la línea de comandos y opciones

- -

Qué hay de nuevo en CUPS 1.6

- -

Foro de usuarios

- -
- -

CUPS para administradores

- -

Añadiendo impresoras y clases

- -

Gestionando políticas de funcionamiento

- -

Contabilidad básica de impresora

- -

Seguridad del servidor

- -

Usando autentificación Kerberos

- -

Usando impresoras de red

- -

Referencia de cupsd.conf

- -
- -

CUPS para desarrolladores

- -

Introducción a la programación de CUPS

- -

La API de CUPS

- -

Programación de filtros y programas de conexión

- -

Las APIs HTTP e IPP

- -

La API PPD

- -

La API Raster

- -

Referencia del archivo de información del compilador de controladores PPD

- -

Foro de desarrollo

- -
- -
 
CUPS y el logo de CUPS son -marcas registradas de Apple Inc. Los derechos -de copia de CUPS 2007-2014 son de Apple Inc. Todos los derechos reservados.
- - diff --git a/doc/fr/index.html.in b/doc/fr/index.html.in deleted file mode 100644 index 73d5458aa..000000000 --- a/doc/fr/index.html.in +++ /dev/null @@ -1,105 +0,0 @@ - - - - - Accueil - CUPS @CUPS_VERSION@@CUPS_REVISION@ - - - - - - - - -
- - - - - - - - - - - - -
  Accueil    Administration    Classes    Aide En Ligne    Tâches    Imprimantes  
- - - - - -
- -

CUPS @CUPS_VERSION@

- -

CUPS est le système d'impression Open Source, basé sur des standards, développé par -Apple Inc. pour Mac OS® X et -les autres OS UNIX®-like.

- -
CUPS
- - - -
- -

CUPS pour les utilisateurs

- -

Présentation de CUPS

- -

Impression en ligne de commande et options

- -

Quoi de neuf dans CUPS 1.6

- -

Forum utilisateur

- -
- -

CUPS pour les administrateurs

- -

Ajout d'imprimantes et de classes

- -

Gérer les politiques

- -

Printer Accounting Basics

- -

Sécurité du serveur

- -

Utiliser l'authentification Kerberos

- -

Utiliser des imprimantes réseaux

- -

Références sur cupsd.conf

- -
- -

CUPS pour les développeurs

- -

Introduction à la programmation CUPS

- -

L'API CUPS

- -

Programmation de filtres et de backends

- -

Les API HTTP et IPP

- -

L'API PPD

- -

L'API Raster

- -

PPD Compiler Driver Information File Reference

- -

Forum développeurs

- -
- -
 
CUPS et le logo CUPS sont des marques déposées de -Apple Inc. CUPS est sous copyright 2007-2014 Apple -Inc. Tous droits réservés.
- - diff --git a/doc/help/api-array.html b/doc/help/api-array.html index 0c1998ee3..220c0f1cb 100644 --- a/doc/help/api-array.html +++ b/doc/help/api-array.html @@ -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/api-cgi.html b/doc/help/api-cgi.html index 82c740a86..63eb9ca6d 100644 --- a/doc/help/api-cgi.html +++ b/doc/help/api-cgi.html @@ -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/api-cups.html b/doc/help/api-cups.html index b355e108b..dd9a4fb12 100644 --- a/doc/help/api-cups.html +++ b/doc/help/api-cups.html @@ -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
  • cupsGetDestMediaCount
  • cupsGetDestMediaDefault
  • +
  • cupsGetDestWithURI
  • cupsGetDests
  • cupsGetDests2
  • cupsGetJobs
  • @@ -457,6 +470,8 @@ for the given language.">cupsLangEncoding
  • cupsLangFlush
  • cupsLangFree
  • cupsLangGet
  • +
  • cupsLocalizeDestMedia
  • cupsLocalizeDestOption
  • Return Value

    Number of classes

    Discussion

    -

    This function is deprecated - use cupsGetDests instead. +

    This function is deprecated and no longer returns a list of printer +classes - use cupsGetDests instead.

    cupsGetDefault

    @@ -2080,6 +2096,29 @@ int cupsGetDestMediaDefault (
    example, passing CUPS_MEDIA_FLAGS_BORDERLESS will return the default borderless size, typically US Letter or A4, but sometimes 4x6 photo media. +

    +

     CUPS 2.0 cupsGetDestWithURI

    +

    Get a destination associated with a URI.

    +

    +cups_dest_t *cupsGetDestWithURI (
    +    const char *name,
    +    const char *uri
    +);

    +

    Parameters

    +
    +
    name
    +
    Desired printer name or NULL
    +
    uri
    +
    URI for the printer
    +
    +

    Return Value

    +

    Destination or NULL

    +

    Discussion

    +

    "name" is the desired name for the printer. If NULL, a name will be +created using the URI.
    +
    +"uri" is the "ipp" or "ipps" URI for the printer. +

    cupsGetDests

    Get the list of destinations from the default server.

    @@ -2405,7 +2444,8 @@ int cupsGetPrinters (

    Return Value

    Number of printers

    Discussion

    -

    This function is deprecated - use cupsGetDests instead. +

    This function is deprecated and no longer returns a list of printers - use +cupsGetDests instead.

     CUPS 1.3/OS X 10.5 cupsGetServerPPD

    @@ -2485,6 +2525,37 @@ cups_lang_t *cupsLangGet (

    Return Value

    Language data

    +

     CUPS 2.0 cupsLocalizeDestMedia

    +

    Get the localized string for a destination media +size.

    +

    +const char *cupsLocalizeDestMedia (
    +    http_t *http,
    +    cups_dest_t *dest,
    +    cups_dinfo_t *dinfo,
    +    unsigned flags,
    +    cups_size_t *size
    +);

    +

    Parameters

    +
    +
    http
    +
    Connection to destination
    +
    dest
    +
    Destination
    +
    dinfo
    +
    Destination information
    +
    flags
    +
    Media flags
    +
    size
    +
    Media size
    +
    +

    Return Value

    +

    Localized string

    +

    Discussion

    +

    The returned string is stored in the destination information and will become +invalid if the destination information is deleted. + +

     CUPS 1.6/OS X 10.8 cupsLocalizeDestOption

    Get the localized string for a destination option.

    @@ -3156,8 +3227,8 @@ char *cupsTempFile (

    Filename or NULL on error

    Discussion

    The temporary filename is returned in the filename buffer. -This function is deprecated - use cupsTempFd or -cupsTempFile2 instead. +This function is deprecated and will no longer generate a temporary +filename - use cupsTempFd or cupsTempFile2 instead.

     CUPS 1.2/OS X 10.5 cupsTempFile2

    diff --git a/doc/help/api-filedir.html b/doc/help/api-filedir.html index fc7b72a40..309d09daa 100644 --- a/doc/help/api-filedir.html +++ b/doc/help/api-filedir.html @@ -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/api-filter.html b/doc/help/api-filter.html index 566bc149d..416e2fbab 100644 --- a/doc/help/api-filter.html +++ b/doc/help/api-filter.html @@ -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/api-httpipp.html b/doc/help/api-httpipp.html index 9023f0e98..083794489 100644 --- a/doc/help/api-httpipp.html +++ b/doc/help/api-httpipp.html @@ -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
  • specified listening socket.">httpAcceptConnection
  • httpAddCredential
  • httpAddrAny
  • +
  • httpAddrClose
  • httpAddrEqual
  • +
  • httpAddrFamily
  • httpAddrLength
  • httpAddrListen
  • @@ -426,11 +441,10 @@ components with a formatted resource.">httpAssembleURIf
  • httpClearCookie
  • httpClearFields
  • httpClose
  • +
  • httpCompareCredentials
  • httpConnect
  • httpConnect2
  • httpConnectEncrypt
  • -
  • httpCopyCredentials
  • httpDecode64
  • httpDecode64_2
  • httpDelete
  • @@ -438,10 +452,14 @@ connection.">httpCopyCredentials
  • httpEncode64_2
  • httpEncryption
  • httpError
  • +
  • httpFieldValue
  • httpFlush
  • httpFlushWrite
  • httpFreeCredentials
  • httpGet
  • +
  • httpGetActivity
  • +
  • httpGetAddress
  • httpGetAuthString
  • httpGetBlocking
  • httpGetContentEncoding
  • httpGetDateString
  • httpGetDateString2
  • httpGetDateTime
  • +
  • httpGetEncryption
  • httpGetExpect
  • httpGetFd
  • httpGetField
  • httpGetHostByName
  • httpGetHostname
  • +
  • httpGetKeepAlive
  • httpGetLength
  • httpGetLength2
  • +
  • httpGetPending
  • +
  • httpGetReady
  • +
  • httpGetRemaining
  • httpGetState
  • httpGetStatus
  • httpGetSubField
  • @@ -469,6 +493,8 @@ content-length or transfer-encoding fields.">httpGetLength2
  • httpHead
  • httpInitialize
  • +
  • httpIsChunked
  • +
  • httpIsEncrypted
  • httpMD5
  • httpMD5Final
  • httpReconnect
  • httpReconnect2
  • +
  • httpResolveHostname
  • httpSeparate
  • httpSetCredentials
  • httpSetDefaultField
  • httpSetExpect
  • httpSetField
  • +
  • httpSetKeepAlive
  • httpSetLength
  • httpSetTimeout
  • +
  • httpShutdown
  • +
  • httpStateString
  • httpStatus
  • httpTrace
  • +
  • httpURIStatusString
  • httpUpdate
  • httpWait
  • httpWrite
  • @@ -592,6 +624,7 @@ in seconds.">ippDateToTime
  • ippSetStringfv
  • ippSetValueTag
  • ippSetVersion
  • +
  • ippStateString
  • ippTagString
  • ippTagValue
  • ippTimeToDate
  • @@ -621,6 +654,7 @@ with a hostname. ">http_addrlist_t are server-oriented...">http_state_t
  • http_t
  • http_timeout_cb_t
  • +
  • http_trust_t
  • http_uri_coding_t
  • http_uri_status_t
  • http_version_t
  • @@ -658,6 +692,7 @@ with a hostname. ">http_addrlist_s
  • http_state_e
  • http_status_e
  • +
  • http_trust_e
  • http_uri_coding_e
  • http_uri_status_e
  • http_version_e
  • @@ -1455,6 +1490,29 @@ int httpAddrAny (

    Return Value

    1 if "any", 0 otherwise

    +

     CUPS 2.0 httpAddrClose

    +

    Close a socket created by httpAddrConnect or +httpAddrListen.

    +

    +int httpAddrClose (
    +    http_addr_t *addr,
    +    int fd
    +);

    +

    Parameters

    +
    +
    addr
    +
    Listen address or NULL
    +
    fd
    +
    Socket file descriptor
    +
    +

    Return Value

    +

    0 on success, -1 on failure

    +

    Discussion

    +

    Pass NULL for sockets created with httpAddrConnect and the +listen address for sockets created with httpAddrListen. This will +ensure that domain sockets are removed when closed. + +

     CUPS 1.2/OS X 10.5 httpAddrEqual

    Compare two addresses.

    @@ -1471,6 +1529,19 @@ int httpAddrEqual (

    Return Value

    1 if equal, 0 if not

    +

    httpAddrFamily

    +

    Get the address family of an address.

    +

    +int httpAddrFamily (
    +    http_addr_t *addr
    +);

    +

    Parameters

    +
    +
    addr
    +
    Address
    +
    +

    Return Value

    +

    Address family

     CUPS 1.2/OS X 10.5 httpAddrLength

    Return the length of the address in bytes.

    @@ -1699,7 +1770,7 @@ void httpBlocking (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    b
    1 = blocking, 0 = non-blocking
    @@ -1712,7 +1783,7 @@ int httpCheck (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection

    Return Value

    0 = no data, 1 = data available

    @@ -1725,7 +1796,7 @@ void httpClearCookie (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection

    httpClearFields

    Clear HTTP request fields.

    @@ -1736,7 +1807,7 @@ void httpClearFields (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection

    httpClose

    Close an HTTP connection.

    @@ -1747,8 +1818,24 @@ void httpClose (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    +
    +

     CUPS 2.0 httpCompareCredentials

    +

    Compare two sets of X.509 credentials.

    +

    +int httpCompareCredentials (
    +    cups_array_t *cred1,
    +    cups_array_t *cred2
    +);

    +

    Parameters

    +
    +
    cred1
    +
    First set of X.509 credentials
    +
    cred2
    +
    Second set of X.509 credentials
    +

    Return Value

    +

    1 if they match, 0 if they do not

     DEPRECATED httpConnect

    Connect to a HTTP server.

    @@ -1827,23 +1914,6 @@ void httpClose (
    instead.

    -

     CUPS 1.5/OS X 10.7 httpCopyCredentials

    -

    Copy the credentials associated with an encrypted -connection.

    -

    -int httpCopyCredentials (
    -    http_t *http,
    -    cups_array_t **credentials
    -);

    -

    Parameters

    -
    -
    http
    -
    Connection to server
    -
    credentials
    -
    Array of credentials
    -
    -

    Return Value

    -

    Status of call (0 = success)

     DEPRECATED httpDecode64

    Base64-decode a string.

    @@ -1894,7 +1964,7 @@ int httpDelete (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    uri
    URI to delete
    @@ -1953,7 +2023,7 @@ int httpEncryption (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    e
    New encryption preference
    @@ -1968,10 +2038,24 @@ int httpError (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection

    Return Value

    Error code (errno) value

    +

    httpFieldValue

    +

    Return the HTTP field enumeration value for a field +name.

    +

    +http_field_t httpFieldValue (
    +    const char *name
    +);

    +

    Parameters

    +
    +
    name
    +
    String name
    +
    +

    Return Value

    +

    Field index

    httpFlush

    Flush data from a HTTP connection.

    @@ -1981,7 +2065,7 @@ void httpFlush (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection

     CUPS 1.2/OS X 10.5 httpFlushWrite

    Flush data in write buffer.

    @@ -1992,7 +2076,7 @@ int httpFlushWrite (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection

    Return Value

    Bytes written or -1 on error

    @@ -2017,12 +2101,46 @@ int httpGet (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    uri
    URI to get

    Return Value

    Status of call (0 = success)

    +

     CUPS 2.0 httpGetActivity

    +

    Get the most recent activity for a connection.

    +

    +time_t httpGetActivity (
    +    http_t *http
    +);

    +

    Parameters

    +
    +
    http
    +
    HTTP connection
    +
    +

    Return Value

    +

    Time of last read or write

    +

    Discussion

    +

    The return value is the UNIX time of the last read or write. + +

    +

     CUPS 2.0 httpGetAddress

    +

    Get the address of the connected peer of a connection.

    +

    +http_addr_t *httpGetAddress (
    +    http_t *http
    +);

    +

    Parameters

    +
    +
    http
    +
    HTTP connection
    +
    +

    Return Value

    +

    Connected address or NULL

    +

    Discussion

    +

    Returns NULL if the socket is currently unconnected. + +

     CUPS 1.3/OS X 10.5 httpGetAuthString

    Get the current authorization string.

    @@ -2032,7 +2150,7 @@ char *httpGetAuthString (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection

    Return Value

    Authorization string

    @@ -2052,7 +2170,7 @@ int httpGetBlocking (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection

    Return Value

    1 if blocking, 0 if non-blocking

    @@ -2066,7 +2184,7 @@ const char *httpGetContentEncoding (

    Parameters

    http
    -
    Connection to client/server
    +
    HTTP connection

    Return Value

    Content-Coding value or @@ -2137,6 +2255,25 @@ time_t httpGetDateTime (

    Return Value

    UNIX time

    +

     CUPS 2.0 httpGetEncryption

    +

    Get the current encryption mode of a connection.

    +

    +http_encryption_t httpGetEncryption (
    +    http_t *http
    +);

    +

    Parameters

    +
    +
    http
    +
    HTTP connection
    +
    +

    Return Value

    +

    Current encryption mode

    +

    Discussion

    +

    This function returns the encryption mode for the connection. Use the +httpIsEncrypted function to determine whether a TLS session has +been established. + +

     CUPS 1.7/OS X 10.9 httpGetExpect

    Get the value of the Expect header, if any.

    @@ -2146,7 +2283,7 @@ http_status_t httpGetExpect (

    Parameters

    http
    -
    Connection to client
    +
    HTTP connection

    Return Value

    Expect: status, if any

    @@ -2164,7 +2301,7 @@ int httpGetFd (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection

    Return Value

    File descriptor or -1 if none

    @@ -2178,7 +2315,7 @@ const char *httpGetField (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    field
    Field to get
    @@ -2219,11 +2356,25 @@ const char *httpGetHostname (

    FQDN for connection or system

    Discussion

    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.

    +

     CUPS 2.0 httpGetKeepAlive

    +

    Get the current Keep-Alive state of the connection.

    +

    +http_keepalive_t httpGetKeepAlive (
    +    http_t *http
    +);

    +

    Parameters

    +
    +
    http
    +
    HTTP connection
    +
    +

    Return Value

    +

    Keep-Alive state

     DEPRECATED httpGetLength

    Get the amount of data remaining from the content-length or transfer-encoding fields.

    @@ -2234,7 +2385,7 @@ int httpGetLength (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection

    Return Value

    Content length

    @@ -2253,7 +2404,7 @@ off_t httpGetLength2 (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection

    Return Value

    Content length

    @@ -2261,6 +2412,51 @@ off_t httpGetLength2 (

    This function returns the complete content length, even for content larger than 2^31 - 1. +

    +

     CUPS 2.0 httpGetPending

    +

    Get the number of bytes that are buffered for writing.

    +

    +size_t httpGetPending (
    +    http_t *http
    +);

    +

    Parameters

    +
    +
    http
    +
    HTTP connection
    +
    +

    Return Value

    +

    Number of bytes buffered

    +

     CUPS 2.0 httpGetReady

    +

    Get the number of bytes that can be read without blocking.

    +

    +size_t httpGetReady (
    +    http_t *http
    +);

    +

    Parameters

    +
    +
    http
    +
    HTTP connection
    +
    +

    Return Value

    +

    Number of bytes available

    +

     CUPS 2.0 httpGetRemaining

    +

    Get the number of remaining bytes in the message +body or current chunk.

    +

    +size_t httpGetRemaining (
    +    http_t *http
    +);

    +

    Parameters

    +
    +
    http
    +
    HTTP connection
    +
    +

    Return Value

    +

    Remaining bytes

    +

    Discussion

    +

    The httpIsChunked function can be used to determine whether the +message body is chunked or fixed-length. +

    httpGetState

    Get the current state of the HTTP request.

    @@ -2271,7 +2467,7 @@ content larger than 2^31 - 1.

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection

    Return Value

    HTTP state

    @@ -2284,7 +2480,7 @@ http_status_t httpGetStatus (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection

    Return Value

    HTTP status

    @@ -2300,7 +2496,7 @@ char *httpGetSubField (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    field
    Field index
    name
    @@ -2323,7 +2519,7 @@ char *httpGetSubField2 (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    field
    Field index
    name
    @@ -2344,7 +2540,7 @@ char *httpGetSubField2 (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection

    Return Value

    Version number

    @@ -2363,7 +2559,7 @@ char *httpGets (
    length
    Max length of buffer
    http
    -
    Connection to server
    +
    HTTP connection

    Return Value

    Line or NULL

    @@ -2377,7 +2573,7 @@ int httpHead (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    uri
    URI for head
    @@ -2388,6 +2584,41 @@ int httpHead (
    default HTTP proxy (if any).

    void httpInitialize (void);

    +

     CUPS 2.0 httpIsChunked

    +

    Report whether a message body is chunked.

    +

    +int httpIsChunked (
    +    http_t *http
    +);

    +

    Parameters

    +
    +
    http
    +
    HTTP connection
    +
    +

    Return Value

    +

    1 if chunked, 0 if not

    +

    Discussion

    +

    This function returns non-zero if the message body is composed of +variable-length chunks. + +

    +

     CUPS 2.0 httpIsEncrypted

    +

    Report whether a connection is encrypted.

    +

    +int httpIsEncrypted (
    +    http_t *http
    +);

    +

    Parameters

    +
    +
    http
    +
    HTTP connection
    +
    +

    Return Value

    +

    1 if encrypted, 0 if not

    +

    Discussion

    +

    This function returns non-zero if the connection is currently encrypted. + +

    httpMD5

    Compute the MD5 sum of the username:group:password.

    @@ -2460,7 +2691,7 @@ int httpOptions (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    uri
    URI for options
    @@ -2477,7 +2708,7 @@ ssize_t httpPeek (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    buffer
    Buffer for data
    length
    @@ -2503,7 +2734,7 @@ int httpPost (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    uri
    URI for post
    @@ -2519,7 +2750,7 @@ int httpPut (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    uri
    URI to put
    @@ -2536,7 +2767,7 @@ int httpRead (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    buffer
    Buffer for data
    length
    @@ -2560,7 +2791,7 @@ ssize_t httpRead2 (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    buffer
    Buffer for data
    length
    @@ -2596,7 +2827,7 @@ int httpReconnect (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection

    Return Value

    0 on success, non-zero on failure

    @@ -2617,7 +2848,7 @@ int httpReconnect2 (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    msec
    Timeout in milliseconds
    cancel
    @@ -2625,6 +2856,26 @@ int httpReconnect2 (

    Return Value

    0 on success, non-zero on failure

    +

     CUPS 2.0 httpResolveHostname

    +

    Resolve the hostname of the HTTP connection +address.

    +

    +const char *httpResolveHostname (
    +    http_t *http,
    +    char *buffer,
    +    size_t bufsize
    +);

    +

    Parameters

    +
    +
    http
    +
    HTTP connection
    +
    buffer
    +
    Hostname buffer
    +
    bufsize
    +
    Size of buffer
    +
    +

    Return Value

    +

    Resolved hostname or NULL

     DEPRECATED httpSeparate

    Separate a Universal Resource Identifier into its components.

    @@ -2755,7 +3006,7 @@ void httpSetAuthString (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    scheme
    Auth scheme (NULL to clear it)
    data
    @@ -2793,7 +3044,7 @@ int httpSetCredentials (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    credentials
    Array of credentials
    @@ -2810,7 +3061,7 @@ void httpSetDefaultField (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    field
    Field index
    value
    @@ -2831,7 +3082,7 @@ void httpSetExpect (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    expect
    HTTP status to expect (HTTP_STATUS_CONTINUE)
    @@ -2852,12 +3103,26 @@ void httpSetField (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    field
    Field index
    value
    Value
    +

     CUPS 2.0 httpSetKeepAlive

    +

    Set the current Keep-Alive state of a connection.

    +

    +void httpSetKeepAlive (
    +    http_t *http,
    +    http_keepalive_t keep_alive
    +);

    +

    Parameters

    +
    +
    http
    +
    HTTP connection
    +
    keep_alive
    +
    New Keep-Alive value
    +

     CUPS 1.2/OS X 10.5 httpSetLength

    Set the content-length and content-encoding.

    @@ -2868,7 +3133,7 @@ void httpSetLength (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    length
    Length (0 for chunked)
    @@ -2884,7 +3149,7 @@ void httpSetTimeout (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    timeout
    Number of seconds for timeout, must be greater than 0
    @@ -2898,6 +3163,30 @@ must be greater than 0 data pointer and must return 1 to continue or 0 to error (time) out.

    +

     CUPS 2.0 httpShutdown

    +

    Shutdown one side of an HTTP connection.

    +

    +void httpShutdown (
    +    http_t *http
    +);

    +

    Parameters

    +
    +
    http
    +
    HTTP connection
    +
    +

     CUPS 2.0 httpStateString

    +

    Return the string describing a HTTP state value.

    +

    +const char *httpStateString (
    +    http_state_t state
    +);

    +

    Parameters

    +
    +
    state
    +
    HTTP state value
    +
    +

    Return Value

    +

    State string

    httpStatus

    Return a short string describing a HTTP status code.

    @@ -2924,12 +3213,25 @@ int httpTrace (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    uri
    URI for trace

    Return Value

    Status of call (0 = success)

    +

     CUPS 2.0 httpURIStatusString

    +

    Return a string describing a URI status code.

    +

    +const char *httpURIStatusString (
    +    http_uri_status_t status
    +);

    +

    Parameters

    +
    +
    status
    +
    URI status code
    +
    +

    Return Value

    +

    Localized status string

    httpUpdate

    Update the current HTTP state for incoming data.

    @@ -2939,7 +3241,7 @@ http_status_t httpUpdate (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection

    Return Value

    HTTP status

    @@ -2953,7 +3255,7 @@ int httpWait (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    msec
    Milliseconds to wait
    @@ -2970,7 +3272,7 @@ int httpWrite (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    buffer
    Buffer for data
    length
    @@ -2994,7 +3296,7 @@ ssize_t httpWrite2 (

    Parameters

    http
    -
    Connection to server
    +
    HTTP connection
    buffer
    Buffer for data
    length
    @@ -4025,6 +4327,10 @@ ipp_status_t ippErrorValue (

    Return Value

    Matching attribute

    +

    Discussion

    +

    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".

    ippFindNextAttribute

    Find the next named attribute in a request.

    @@ -4044,6 +4350,10 @@ ipp_status_t ippErrorValue (

    Return Value

    Matching attribute

    +

    Discussion

    +

    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".

     CUPS 1.6/OS X 10.8 ippFirstAttribute

    Return the first attribute in the message.

    @@ -4072,7 +4382,7 @@ int ippGetBoolean (

    Value number (0-based)

    Return Value

    -

    Boolean value or -1 on error

    +

    Boolean value or 0 on error

    Discussion

    The element parameter specifies which value to get from 0 to ippGetCount(attr) - 1. @@ -4111,7 +4421,7 @@ int ippGetCount (

    IPP attribute

    Return Value

    -

    Number of values or -1 on error

    +

    Number of values or 0 on error

     CUPS 1.6/OS X 10.8 ippGetDate

    Get a date value for an attribute.

    @@ -4161,7 +4471,7 @@ int ippGetInteger (

    Value number (0-based)

    Return Value

    -

    Value or -1 on error

    +

    Value or 0 on error

    Discussion

    The element parameter specifies which value to get from 0 to ippGetCount(attr) - 1. @@ -4216,7 +4526,7 @@ ipp_op_t ippGetOperation (

    IPP request message

    Return Value

    -

    Operation ID or -1 on error

    +

    Operation ID or 0 on error

     CUPS 1.6/OS X 10.8 ippGetRange

    Get a rangeOfInteger value from an attribute.

    @@ -4235,7 +4545,7 @@ int ippGetRange (

    Upper value of range

    Return Value

    -

    Lower value of range or -1

    +

    Lower value of range or 0

    Discussion

    The element parameter specifies which value to get from 0 to ippGetCount(attr) - 1. @@ -4253,7 +4563,7 @@ int ippGetRequestId (

    IPP message

    Return Value

    -

    Request ID or -1 on error

    +

    Request ID or 0 on error

     CUPS 1.6/OS X 10.8 ippGetResolution

    Get a resolution value for an attribute.

    @@ -4275,7 +4585,7 @@ int ippGetResolution (

    Units for resolution

    Return Value

    -

    Horizontal/cross feed resolution or -1

    +

    Horizontal/cross feed resolution or 0

    Discussion

    The element parameter specifies which value to get from 0 to ippGetCount(attr) - 1. @@ -4358,7 +4668,7 @@ int ippGetVersion (

    Minor version number or NULL

    Return Value

    -

    Major version number or -1 on error

    +

    Major version number or 0 on error

    ippLength

    Compute the length of an IPP message.

    @@ -5083,6 +5393,19 @@ the ippNew, ip The valid version numbers are currently 1.0, 1.1, 2.0, 2.1, and 2.2.

    +

     CUPS 2.0 ippStateString

    +

    Return the name corresponding to a state value.

    +

    +const char *ippStateString (
    +    ipp_state_t state
    +);

    +

    Parameters

    +
    +
    state
    +
    State value
    +
    +

    Return Value

    +

    State name

     CUPS 1.4/OS X 10.6 ippTagString

    Return the tag name corresponding to a tag value.

    @@ -5293,6 +5616,11 @@ typedef struct _http_s http_t;

    typedef int (*http_timeout_cb_t)(http_t *http, void *user_data);

    +

     CUPS 2.0 http_trust_t

    +

    Level of trust for credentials

    +

    +typedef enum http_trust_e http_trust_t; +

    http_uri_coding_t

    URI en/decode flags

    @@ -5690,6 +6018,23 @@ are server-oriented...

    HTTP_STATUS_USE_PROXY
    Must use a proxy to access this URI
    +

     CUPS 2.0 http_trust_e

    +

    Level of trust for credentials

    +

    Constants

    +
    +
    HTTP_TRUST_CHANGED
    +
    Credentials have changed
    +
    HTTP_TRUST_EXPIRED
    +
    Credentials are expired
    +
    HTTP_TRUST_INVALID
    +
    Credentials are invalid
    +
    HTTP_TRUST_OK
    +
    Credentials are OK/trusted
    +
    HTTP_TRUST_RENEWED
    +
    Credentials have been renewed
    +
    HTTP_TRUST_UNKNOWN
    +
    Credentials are unknown/new
    +

    http_uri_coding_e

    URI en/decode flags

    Constants

    @@ -5784,6 +6129,8 @@ are server-oriented...

    Bind on top
    IPP_FINISHINGS_BOOKLET_MAKER
    Fold to make booklet
    +
    IPP_FINISHINGS_COAT
    +
    Apply protective liquid or powder coating
    IPP_FINISHINGS_COVER
    Add cover
    IPP_FINISHINGS_CUPS_FOLD_ACCORDIAN
    @@ -5876,6 +6223,8 @@ are server-oriented...

    Fold the paper vertically into three sections, forming a Z
    IPP_FINISHINGS_JOG_OFFSET
    Offset for binding (any type)
    +
    IPP_FINISHINGS_LAMINATE
    +
    Apply protective (solid) material
    IPP_FINISHINGS_NONE
    No finishing
    IPP_FINISHINGS_PUNCH
    @@ -5932,6 +6281,14 @@ are server-oriented...

    Staple top left corner
    IPP_FINISHINGS_STAPLE_TOP_RIGHT
    Staple top right corner
    +
    IPP_FINISHINGS_STAPLE_TRIPLE_BOTTOM
    +
    Three staples on bottom
    +
    IPP_FINISHINGS_STAPLE_TRIPLE_LEFT
    +
    Three staples on left
    +
    IPP_FINISHINGS_STAPLE_TRIPLE_RIGHT
    +
    Three staples on right
    +
    IPP_FINISHINGS_STAPLE_TRIPLE_TOP
    +
    Three staples on top
    IPP_FINISHINGS_TRIM
    Trim (any type)
    IPP_FINISHINGS_TRIM_AFTER_COPIES
    @@ -6073,6 +6430,8 @@ are server-oriented...

    IPP_ORIENT_LANDSCAPE
    90 degrees counter-clockwise
    +
    IPP_ORIENT_NONE
    +
    No rotation
    IPP_ORIENT_PORTRAIT
    No rotation
    IPP_ORIENT_REVERSE_LANDSCAPE
    @@ -6134,6 +6493,14 @@ are server-oriented...

    Invalid status name for ippErrorValue
    IPP_STATUS_CUPS_SEE_OTHER
    cups-see-other
    +
    IPP_STATUS_ERROR_ACCOUNT_AUTHORIZATION_FAILED
    +
    client-error-account-authorization-failed
    +
    IPP_STATUS_ERROR_ACCOUNT_CLOSED
    +
    client-error-account-closed
    +
    IPP_STATUS_ERROR_ACCOUNT_INFO_NEEDED
    +
    client-error-account-info-needed
    +
    IPP_STATUS_ERROR_ACCOUNT_LIMIT_REACHED
    +
    client-error-account-limit-reached
    IPP_STATUS_ERROR_ATTRIBUTES_NOT_SETTABLE
    client-error-attributes-not-settable
    IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES
    @@ -6150,13 +6517,13 @@ are server-oriented...

    client-error-compression-not-supported
    IPP_STATUS_ERROR_CONFLICTING
    client-error-conflicting-attributes
    -
    IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED  CUPS 1.7/OS X 10.9 
    +
    IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED  DEPRECATED 
    cups-error-account-authorization-failed
    -
    IPP_STATUS_ERROR_CUPS_ACCOUNT_CLOSED  CUPS 1.7/OS X 10.9 
    -
    cups-error-account-closed
    -
    IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED  CUPS 1.7/OS X 10.9 
    +
    IPP_STATUS_ERROR_CUPS_ACCOUNT_CLOSED
    +
    cups-error-account-closed @deprecate@
    +
    IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED  DEPRECATED 
    cups-error-account-info-needed
    -
    IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED  CUPS 1.7/OS X 10.9 
    +
    IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED  DEPRECATED 
    cups-error-account-limit-reached
    IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED  CUPS 1.5/OS X 10.7 
    cups-authentication-canceled - Authentication canceled by user
    diff --git a/doc/help/api-mime.html b/doc/help/api-mime.html index 226992780..d95734299 100644 --- a/doc/help/api-mime.html +++ b/doc/help/api-mime.html @@ -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/api-overview.html b/doc/help/api-overview.html index a310f6e16..01a041493 100644 --- a/doc/help/api-overview.html +++ b/doc/help/api-overview.html @@ -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/api-ppd.html b/doc/help/api-ppd.html index 6530d4b9f..5121b6594 100644 --- a/doc/help/api-ppd.html +++ b/doc/help/api-ppd.html @@ -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/api-ppdc.html b/doc/help/api-ppdc.html index 484288e68..df3213575 100644 --- a/doc/help/api-ppdc.html +++ b/doc/help/api-ppdc.html @@ -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/api-raster.html b/doc/help/api-raster.html index f2dade43c..9acda474f 100644 --- a/doc/help/api-raster.html +++ b/doc/help/api-raster.html @@ -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/license.html b/doc/help/license.html index 9bbc729ed..005662183 100644 --- a/doc/help/license.html +++ b/doc/help/license.html @@ -8,7 +8,7 @@

    Software License Agreement

    -

    Copyright 2007-2012 by Apple Inc.
    +

    Copyright 2007-2013 by Apple Inc.
    1 Infinite Loop
    Cupertino, CA 95014 USA

    @@ -16,10 +16,7 @@ WWW: http://www.cups.org/

    Introduction

    -

    CUPSTM 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.

    +

    CUPSTM 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.

    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.

    License Exceptions

    In addition, as the copyright holder of CUPS, Apple Inc. grants -the following special exceptions:

    +the following special exception:

      @@ -111,20 +108,9 @@ the following special exceptions:

    -
  • OpenSSL Toolkit License Exception; - -
      - -
    1. Apple Inc. explicitly allows the - compilation and distribution of the CUPS - software with the OpenSSL Toolkit.
    2. - -
    - -

    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

    diff --git a/doc/help/man-backend.html b/doc/help/man-backend.html index 5f41e34cd..e60bc53b1 100644 --- a/doc/help/man-backend.html +++ b/doc/help/man-backend.html @@ -1,4 +1,4 @@ - + @@ -7,165 +7,173 @@

    backend(7)

    -

    Name

    backend - cups backend transmission interfaces

    Synopsis

    -backend -
    -backend -job user title num-copies options [ -filename -] +backend +
    +backend +job +user +title +num-copies +options +[ +filename +] +
    +
    +#include <cups/cups.h>
    +
    +const char *cupsBackendDeviceURI(char **argv);
    +
    +void cupsBackendReport(const char *device_scheme,
    +                       const char *device_uri,
    +                       const char *device_make_and_model,
    +                       const char *device_info,
    +                       const char *device_id,
    +                       const char *device_location);
    +
    +ssize_t cupsBackChannelWrite(const char *buffer,
    +                             size_t bytes, double timeout);
    +
    +int cupsSideChannelRead(cups_sc_command_t *command,
    +                        cups_sc_status_t *status, char *data,
    +                        int *datalen, double timeout);
    +
    +int cupsSideChannelWrite(cups_sc_command_t command,
    +                         cups_sc_status_t status, const char *data,
    +                         int datalen, double timeout);
    +

    Description

    -Backends are a special type of filter(7) which is used to send print data -to and discover different devices on the system. -

    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. -

    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 -cupsBackendDeviceURI function for retrieving the correct device URI. -

    Back-channel data from the device should be relayed to the job -filters by writing to file descriptor 3. The CUPS API includes -the cupsBackChannelWrite function for this purpose. -

    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. -

    Unless you are a developer and know what you are doing, please do not run -backends directly. Instead, use the lp(1) or lpr(1) programs to send -a print job or lpinfo(8) program to query for available printers using the -backend. The one exception is the SNMP backend - see snmpbackend(8) for -more information. -

    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 a special type of +filter(7) +which is used to send print data to and discover different devices on the system. +

    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. +

    The command name (argv[0]) is set to the device URI of the destination printer. 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 +cupsBackendDeviceURI() +function may be used to retrieve the correct device URI. +

    Back-channel data from the device should be relayed to the job filters using the cupsBackChannelWrite function. +

    Backends are responsible for reading side-channel requests using the +cupsSideChannelRead() +function and responding with the +cupsSideChannelWrite() +function. The +CUPS_SC_FD +constant defines the file descriptor that should be monitored for incoming requests. +

    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: +
     
    -
         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"
     
    -

    The device-class field is one of the following values: -

    -
    direct -
    -
    -
    The device-uri refers to a specific direct-access device with no options, such -as a parallel, USB, or SCSI device. -
    -
    file -
    -
    -
    The device-uri refers to a file on disk. -
    -
    network -
    -
    -
    The device-uri refers to a networked device and conforms to the general form for +

    The +cupsBackendReport() +function can be used to generate these lines and handle any necessary escaping of characters in the various strings. +

    The +device-class +field is one of the following values: +

    +
    direct +
    The device-uri refers to a specific direct-access device with no options, such as a parallel, USB, or SCSI device. +
    file +
    The device-uri refers to a file on disk. +
    network +
    The device-uri refers to a networked device and conforms to the general form for network URIs. -
    -
    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. -
    +
    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.
    -

    The 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 device-uri field specifies the full URI to use when -communicating with the device. -

    The 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". -

    The 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". -

    The optional device-id field specifies the IEEE-1284 device ID string for -the device, which is used to select a matching driver. -

    The optional 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. -

    Permissions

    -Backends without world execute permissions are run as the root user. Otherwise, -the backend is run using an unprivileged user account, typically "lp". -

    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: -
    -
    0 (CUPS_BACKEND_OK) -
    -
    -
    The print file was successfully transmitted to the device or remote server. -
    -
    1 (CUPS_BACKEND_FAILED) -
    -
    -
    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. -
    -
    2 (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" +

    The +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 +device-uri +field specifies the full URI to use when communicating with the device. +

    The +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". +

    The +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". +

    The optional +device-id +field specifies the IEEE-1284 device ID string for the device, which is used to select a matching driver. +

    The optional +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. +

    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". +

    Exit Status

    +The following exit codes are defined for backends: +
    +
    CUPS_BACKEND_OK +
    The print file was successfully transmitted to the device or remote server. +
    CUPS_BACKEND_FAILED +

    +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 +printer-error-policy attribute. -
    -
    3 (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. -
    -
    4 (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. -
    -
    5 (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. -
    -
    6 (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. -
    -
    7 (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. -
    +
    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. +
    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. +
    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. +
    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. +
    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. +
    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.

    All other exit code values are reserved. +

    Environment

    +In addition to the environment variables listed in +cups(1) +and +filter(7), +CUPS backends can expect the following environment variable: +
    +
    DEVICE_URI +
    The device URI associated with the printer. +
    +

    Files

    +/etc/cups/cups-files.conf +

    Notes

    +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. +

    Unless you are a developer and know what you are doing, please do not run backends directly. Instead, use the +lp(1) +or +lpr(1) +programs to send print jobs or +lpinfo(8) +to query for available printers using the backend. The one exception is the SNMP backend - see +cups-snmp(8) +for more information.

    See Also

    -cups-snmp(8), cupsd(8), cupsd.conf(5), filter(7), -lpinfo(8), +cups(1), +cups-files.conf(5), +cups-snmp(8), +cupsd(8), +filter(7), +lp(1), +lpinfo(8), +lpr(1),
    -http://localhost:631/help +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-cancel.html b/doc/help/man-cancel.html index 96a24c339..40b3bf218 100644 --- a/doc/help/man-cancel.html +++ b/doc/help/man-cancel.html @@ -1,4 +1,4 @@ - + @@ -10,72 +10,80 @@

    Name

    cancel - cancel jobs

    Synopsis

    -cancel -[ -E ] [ -U -username -] [ -a ] [ -h -hostname[:port] -] [ -u -username -] [ -x ] [ -id -] [ -destination -] [ -destination-id -] +cancel +[ +-E +] [ +-U +username +] [ +-a +] [ +-h +hostname[:port] +] [ +-u +username +] [ +-x +] [ +id +] [ +destination +] [ +destination-id +]

    Description

    -cancel cancels existing print jobs. The -a option will remove -all jobs from the specified destination. +The cancel command cancels print jobs. +If no destination or id is specified, the currently printing job on the default destination is canceled.

    Options

    -The following options are recognized by cancel: -
    -
    -E -
    -
    -
    Forces encryption when connecting to the server. -
    -
    -U username -
    -
    -
    Specifies the username to use when connecting to the server. -
    -
    -a -
    -
    -
    Cancel all jobs on the named destination, or all jobs on all +The following options are recognized by cancel: +
    +
    -a +
    Cancel all jobs on the named destination, or all jobs on all destinations if none is provided. -
    -
    -h hostname[:port] -
    -
    -
    Chooses an alternate server. -
    -
    -u username -
    -
    -
    Cancels jobs owned by username. -
    -
    -x -
    -
    -
    Deletes job data files in addition to canceling. -
    +
    -E +
    Forces encryption when connecting to the server. +
    -h hostname[:port] +
    Specifies an alternate server. +
    -U username +
    Specifies the username to use when connecting to the server. +
    -u username +
    Cancels jobs owned by username. +
    -x +
    Deletes job data files in addition to canceling.
    -

    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 not case-sensitive. +

    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 not case-sensitive. +

    Examples

    +Cancel the current print job: +
    +
    +    cancel
    +
    +
    +Cancel job "myprinter-42": +
    +
    +    cancel myprinter-42
    +
    +
    +Cancel all jobs: +
    +
    +    cancel -a
    +

    Notes

    -Administrators wishing to prevent unauthorized cancellation of -jobs via the -u option should require authentication for -Cancel-Jobs operations in cupsd.conf(5). +Administrators wishing to prevent unauthorized cancellation of jobs via the -u option should require authentication for Cancel-Jobs operations in +cupsd.conf(5).

    See Also

    -lp(1), lpmove(8), lpstat(1), -
    -http://localhost:631/help +cupsd.conf(5), +lp(1), +lpmove(8), +lpstat(1), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-classes.conf.html b/doc/help/man-classes.conf.html index db767c275..76e7c0b80 100644 --- a/doc/help/man-classes.conf.html +++ b/doc/help/man-classes.conf.html @@ -1,4 +1,4 @@ - + @@ -10,116 +10,21 @@

    Name

    classes.conf - class configuration file for cups

    Description

    -The classes.conf file defines the local printer classes that are -available. It is normally located in the /etc/cups directory and -is generated automatically by the cupsd(8) program when printer -classes are added or deleted. -

    Each line in the file can be a configuration directive, a blank line, -or a comment. Comment lines start with the # character. -

    Directives

    -
    -
    <Class name> ... </Class> -
    -
    -
    Defines a specific printer class. -
    -
    <DefaultClass name> ... </Class> -
    -
    -
    Defines a default printer class. -
    -
    Accepting Yes -
    -
    -
    Accepting No -
    -
    -
    Specifies whether the printer is accepting new jobs. -
    -
    AllowUser [ user @group ... ] -
    -
    -
    Allows specific users and groups to print to the printer. -
    -
    DenyUser [ user @group ... ] -
    -
    -
    Prevents specific users and groups from printing to the printer. -
    -
    Info text -
    -
    -
    Specifies human-readable text describing the printer. -
    -
    JobSheets banner banner -
    -
    -
    Specifies the banner pages to use for the printer. -
    -
    KLimit number -
    -
    -
    Specifies the job-k-limit value for the printer. -
    -
    Location text -
    -
    -
    Specifies human-readable text describing the location of the printer. -
    -
    OpPolicy name -
    -
    -
    Specifies the operation policy for the printer. -
    -
    PageLimit number -
    -
    -
    Specifies the job-page-limit value for the printer. -
    -
    Printer -
    -
    -
    Specifies a printer that is a member of the printer class. -
    -
    QuotaPeriod seconds -
    -
    -
    Specifies the job-quota-period value for the printer. -
    -
    Shared Yes -
    -
    -
    Shared No -
    -
    -
    Specifies whether the printer is shared. -
    -
    State idle -
    -
    -
    State stopped -
    -
    -
    Specifies the initial state of the printer (Idle or Stopped) -
    -
    StateMessage text -
    -
    -
    Specifies the message associated with the state. -
    -
    StateTime seconds -
    -
    -
    Specifies the date/time associated with the state. -
    -
    +The classes.conf file defines the local printer classes that are available. It is normally located in the /etc/cups directory and is maintained by the +cupsd(8) +program. This file is not intended to be edited or managed manually. +

    Notes

    +The name, location, and format of this file are an implementation detail that will change in future releases of CUPS.

    See Also

    -cupsd(8), cupsd.conf(5), mime.convs(5), -mime.types(5), printers.conf(5), -
    -http://localhost:631/help +cupsd(8), +cupsd.conf(5), +mime.convs(5), +mime.types(5), +printers.conf(5), +subscriptions.conf(5), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-client.conf.html b/doc/help/man-client.conf.html index a18e8dca2..a25435927 100644 --- a/doc/help/man-client.conf.html +++ b/doc/help/man-client.conf.html @@ -1,4 +1,4 @@ - + @@ -8,62 +8,50 @@

    client.conf(5)

    Name

    -client.conf - client configuration file for cups +client.conf - client configuration file for cups (deprecated)

    Description

    -The client.conf file configures the CUPS client and is -normally located in the /etc/cups or ~/.cups -directory. Each line in the file can be a configuration -directive, a blank line, or a comment. Comment lines start with -the # character. -

    Directives

    -The following directives are understood by the client. Consult the -on-line help for detailed descriptions: -
    -
    Encryption IfRequested -
    -
    -
    Encryption Never -
    -
    -
    Encryption Required -
    -
    -
    Specifies the level of encryption that is required for a particular -location. -
    -
    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". -
    -
    ServerName hostname-or-ip-address[:port] -
    -
    -
    ServerName /domain/socket -
    -
    -
    Specifies the address and optionally the port to use when connecting to the -server. Note: Not supported on OS X 10.7 or later. -
    -
    ServerName hostname-or-ip-address[:port]/version=1.1 -
    -
    -
    Specifies the address and optionally the port to use when connecting to a -server running CUPS 1.3.12 and earlier. Note: Not supported on OS X 10.7 or -later. -
    -
    User name -
    -
    -
    Specifies the default user name to use for requests. -
    +The client.conf file configures the CUPS client and is normally located in the /etc/cups and/or ~/.cups directories. +Each line in the file can be a configuration directive, a blank line, or a comment. Comment lines start with the # character. +

    Note: Starting with OS X 10.7, this file is only used by command-line and X11 applications. +The ServerName directive is not supported on OS X at all. +

    Directives

    +The following directives are understood by the client. Consult the online help for detailed descriptions: +
    +
    AllowAnyRoot Yes +
    AllowAnyRoot No +
    Specifies whether to allow TLS with certificates that have not been signed by a trusted Certificate Authority. +The default is "Yes". +
    AllowExpiredCerts Yes +
    AllowExpiredCerts No +
    Specifies whether to allow TLS with expired certificates. +The default is "Yes". +
    Encryption IfRequested +
    Encryption Never +
    Encryption Required +
    Specifies the level of encryption that should be used. +
    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". +
    ServerName hostname-or-ip-address[:port] +
    ServerName /domain/socket +
    Specifies the address and optionally the port to use when connecting to the server. +Note: This directive it not supported on OS X 10.7 or later. +
    ServerName hostname-or-ip-address[:port]/version=1.1 +
    Specifies the address and optionally the port to use when connecting to a server running CUPS 1.3.12 and earlier. +
    User name +
    Specifies the default user name to use for requests. +
    ValidateCerts Yes +
    ValidateCerts No +
    Specifies whether to only allow TLS with certificates whose common name matches the hostname. +The default is "No".
    +

    Notes

    +The client.conf file is deprecated and will no longer be supported in a future version of CUPS.

    See Also

    -http://localhost:631/help +cups(1), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-cups-config.html b/doc/help/man-cups-config.html index 2bae394a9..389c08110 100644 --- a/doc/help/man-cups-config.html +++ b/doc/help/man-cups-config.html @@ -1,4 +1,4 @@ - + @@ -10,116 +10,91 @@

    Name

    cups-config - get cups api, compiler, directory, and link information.

    Synopsis

    -cups-config ---api-version +cups-config +--api-version
    -cups-config ---build +cups-config +--build
    -cups-config ---cflags +cups-config +--cflags
    -cups-config ---datadir +cups-config +--datadir
    -cups-config ---help +cups-config +--help
    -cups-config ---ldflags +cups-config +--ldflags
    -cups-config -[ ---image -] [ ---static -] --libs +cups-config +[ +--image +] [ +--static +] +--libs
    -cups-config ---serverbin +cups-config +--serverbin
    -cups-config ---serverroot +cups-config +--serverroot
    -cups-config ---version +cups-config +--version

    Description

    -cups-config 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 cups-config 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.

    Options

    -
    -
    --api-version -
    -
    -
    Displays the current API version (major.minor). -
    -
    --build -
    -
    -
    Displays a system-specific build number. -
    -
    --cflags -
    -
    -
    Displays the necessary compiler options. -
    -
    --datadir -
    -
    -
    Displays the default CUPS data directory. -
    -
    --help -
    -
    -
    Displays the program usage message. -
    -
    --image -
    -
    -
    When used with --libs, adds the CUPS imaging library to the -list of displayed libraries. -
    -
    --ldflags -
    -
    -
    Displays the necessary linker options. -
    -
    --libs -
    -
    -
    Displays the necessary librarys to link to. -
    -
    --serverbin -
    -
    -
    Displays the default CUPS binary directory, -where filters and backends are stored. -
    -
    --serverroot -
    -
    -
    Displays the default CUPS configuration file directory. -
    -
    --static -
    -
    -
    When used with --libs, shows the static libraries instead -of the default (shared) libraries. -
    -
    --version -
    -
    -
    Displays the full version number of the CUPS installation -(major.minor.patch). -
    +The cups-config command accepts the following command-line options: +
    +
    --api-version +
    Reports the current API version (major.minor). +
    --build +
    Reports a system-specific build number. +
    --cflags +
    Reports the necessary compiler options. +
    --datadir +
    Reports the default CUPS data directory. +
    --help +
    Reports the program usage message. +
    --image +
    When used with --libs, adds the CUPS imaging library to the +list of libraries. +
    --ldflags +
    Reports the necessary linker options. +
    --libs +
    Reports the necessary libraries to link to. +
    --serverbin +
    Reports the default CUPS binary directory, where filters and backends are stored. +
    --serverroot +
    Reports the default CUPS configuration file directory. +
    --static +
    When used with --libs, reports the static libraries instead of the default (shared) libraries. +
    --version +
    Reports the full version number of the CUPS installation (major.minor.patch).
    +

    Examples

    +Show the currently installed version of CUPS: +
    +
    +    cups-config --version
    +
    +
    +Compile a simple one-file CUPS filter: +
    +
    +    cc `cups-config --cflags --ldflags` -o filter filter.c \
    +        `cups-config --libs`
    +

    See Also

    -http://localhost:631/help +cups(1), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-cups-deviced.html b/doc/help/man-cups-deviced.html deleted file mode 100644 index df2525085..000000000 --- a/doc/help/man-cups-deviced.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - cups-deviced(8) - - -

    cups-deviced(8)

    -

    Name

    -cups-deviced - cups device daemon -

    Synopsis

    -cups-deviced -request-id limit user-id options -

    Description

    -cups-deviced polls the backends in -/usr/lib/cups/backend or /usr/libexec/cups/backend (OS X) for a -list of available devices. It is run by cupsd(8) in response to a -CUPS-Get-Devices request. The output format is an IPP -response message. The request-id argument is the request ID -from the original IPP request, typically 1. The limit -argument is the limit value from the original IPP request - 0 -means no limit. The user-id argument is the -requesting-user-name value from the original IPP request. -Finally, the options argument is a space-delimited list of -attributes ("name=value name=value ...") that were passed in -with the request. Currently cups-deviced looks for the -requested-attributes attribute and tailors the output -accordingly. -

    See Also

    -backend(7), cupsd(8), cupsd.conf(5), -
    -http://localhost:631/help -

    Copyright

    -Copyright 2007-2013 by Apple Inc. - - - diff --git a/doc/help/man-cups-driverd.html b/doc/help/man-cups-driverd.html deleted file mode 100644 index 0fc9183a6..000000000 --- a/doc/help/man-cups-driverd.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - cups-driverd(8) - - -

    cups-driverd(8)

    -

    Name

    -cups-driverd - cups driver daemon -

    Synopsis

    -cups-driverd -cat -ppd-name -
    -cups-driverd -list -request_id limit options -

    Description

    -cups-driverd 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. -

    The second form lists the available manufacturers or PPD files to -stdout as indicated by the options argument. The output -format is an IPP response message. The request_id argument -is the request ID from the original IPP request, typically 1. The -limit argument is the limit value from the original IPP -request - 0 means no limit. Finally, the options argument -is a space-delimited list of attributes ("name=value name=value -...") that were passed in with the request. Currently -cups-driverd looks for the ppd-make and -requested-attributes attributes and tailors the output -accordingly. -

    Drivers

    -Drivers can be static PPD files under the -/usr/share/cups/model directory or programs under the -/usr/lib/cups/driver or /usr/libexec/cups/driver (OS X) directories. -Static PPD files must conform to the Adobe PPD File Format Specification version -4.3 and may be compressed using the gzip(1) program. Driver -programs must implement the command-line interface shown in the -next section. -

    Driver Programs

    -Driver programs provide a interface to dynamically-generated PPD -files. The following arguments are currently defined: -
    -
    drivername list -
    -
    -
    Lists the supported PPD files to stdout. -
    -
    drivername cat ppdname -
    -
    -
    Writes the named PPD file to stdout. -
    -
    -

    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. -

    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: -
    -    "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"
    -
    -

    Drivername is the name of the driver program. Ppdname -is the name used to select the given driver. Language is -the locale associated with the default language of the PPD file, -typically "en". Make is the Manufacturer name from the PPD -file. Make and model is the NickName name from the PPD -file. 1284 device id is the 1284DeviceId from the PPD file, -if any. (PPD product) is the Product string as it would appear in the PPD -file or from a PostScript query. PostScript version is the PSVersion -string as it would appear in the PPD file or from a PostScript query. Type -is "postscript" for PostScript printers, "pdf" for PDF printers, "raster" for -raster printers, or "fax" for facsimile devices. -

    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. -

    Driver Error Messages

    -Error messages can be relayed back to cupsd by writing them -to stderr. The following prefixes are recognized: -
    -
    DEBUG: [drivername] -
    -
    -
    Debugging messages -
    -
    ERROR: [drivername] -
    -
    -
    Error messages -
    -
    INFO: [drivername] -
    -
    -
    Informational messages -
    -
    -

    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 lpinfo(8) command will request lists from all -driver programs. -

    See Also

    -cupsd(8), cupsd.conf(5), cupstestppd(1), lpinfo(8), -
    -http://localhost:631/help -

    Copyright

    -Copyright 2007-2013 by Apple Inc. - - - diff --git a/doc/help/man-cups-files.conf.html b/doc/help/man-cups-files.conf.html index 3e30a9d98..2c3caa2c1 100644 --- a/doc/help/man-cups-files.conf.html +++ b/doc/help/man-cups-files.conf.html @@ -1,4 +1,4 @@ - + @@ -10,168 +10,151 @@

    Name

    cups-files.conf - file and directory configuration file for cups

    Description

    -The cups-files.conf file configures the files and directories used by the -CUPS scheduler, cupsd(8). It is normally located in the -/etc/cups directory. -

    Each line in the file can be a configuration directive, a blank line, -or a comment. Comment lines start with the # character. -

    Directives

    -The following directives are understood by cupsd(8). Consult the -on-line help for detailed descriptions: -
    -
    AccessLog filename -
    -
    -
    AccessLog syslog -
    -
    -
    Defines the access log filename. -
    -
    ConfigFilePerm mode -
    -
    -
    Specifies the permissions for all configuration files that the scheduler -writes. -
    -
    DataDir path -
    -
    -
    Specified the directory where data files can be found. -
    -
    DocumentRoot directory -
    -
    -
    Specifies the root directory for the internal web server documents. -
    -
    ErrorLog filename -
    -
    -
    ErrorLog syslog -
    -
    -
    Specifies the error log filename. -
    -
    FatalErrors none -
    -
    -
    FatalErrors all -kind [... -kind] -
    -
    -
    FatalErrors kind [... kind] -
    -
    -
    Specifies which errors are fatal, causing the scheduler to exit. "Kind" is -"browse", "config", "listen", "log", or "permissions". -
    -
    FileDevice Yes -
    -
    -
    FileDevice No -
    -
    -
    Specifies whether the file pseudo-device can be used for new -printer queues. -
    -
    FontPath directory[:directory:...] -
    -
    -
    Specifies the search path for fonts. -
    -
    Group group-name-or-number -
    -
    -
    Specifies the group name or ID that will be used when executing -external programs. -
    -
    LogFilePerm mode -
    -
    -
    Specifies the permissions for all log files that the scheduler writes. -
    -
    PageLog filename -
    -
    -
    PageLog syslog -
    -
    -
    Specifies the page log filename. -
    -
    Printcap -
    -
    -
    Printcap filename -
    -
    -
    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. -
    -
    RemoteRoot user-name -
    -
    -
    Specifies the username that is associated with unauthenticated root -accesses. -
    -
    RequestRoot directory -
    -
    -
    Specifies the directory to store print jobs and other HTTP request -data. -
    -
    ServerBin directory -
    -
    -
    Specifies the directory where backends, CGIs, daemons, and filters may -be found. -
    -
    ServerCertificate filename -
    -
    -
    Specifies the encryption certificate to use. -
    -
    ServerKey filename -
    -
    -
    Specifies the encryption key to use. -
    -
    ServerRoot directory -
    -
    -
    Specifies the directory where the server configuration files can be found. -
    -
    SyncOnClose Yes -
    -
    -
    SyncOnClose No -
    -
    Specifies whether the scheduler calls fsync(2) after writing configuration -or state files. The default is No. -
    -
    SystemGroup group-name [group-name ...] -
    -
    -
    Specifies the group(s) to use for System class authentication. -
    -
    TempDir directory -
    -
    -
    Specifies the directory where temporary files are stored. -
    -
    User user-name -
    -
    -
    Specifies the user name or ID that is used when running external programs. -
    +The cups-files.conf file configures the files and directories used by the CUPS scheduler, +cupsd(8). +It is normally located in the /etc/cups directory. +

    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. +

    Directives

    +The following directives are understood by +cupsd(8): +
    +
    AccessLog +
    AccessLog filename +
    AccessLog syslog +
    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: +
    +
    +    AccessLog /var/log/cups/%s-access_log
    +
    +
    +The default is "/var/log/cups/access_log". +
    ConfigFilePerm mode +
    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. +
    +

    Note: The permissions for the printers.conf 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. +

    +
    DataDir path +
    Specifies the directory where data files can be found. +The default is usually "/usr/share/cups". +
    DocumentRoot directory +
    Specifies the root directory for the CUPS web interface content. +The default is usually "/usr/share/doc/cups". +
    ErrorLog +
    ErrorLog filename +
    ErrorLog syslog +
    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: +
    +
    +    ErrorLog /var/log/cups/%s-error_log
    +
    +
    +The default is "/var/log/cups/error_log". +
    FatalErrors none +
    FatalErrors all -kind [ ... -kind ] +
    FatalErrors kind [ ... kind ] +
    Specifies which errors are fatal, causing the scheduler to exit. +The default is "config". +The kind strings are: +
    +
    +
    none +
    No errors are fatal. +
    all +
    All of the errors below are fatal. +
    browse +
    Browsing initialization errors are fatal, for example failed connections to the DNS-SD daemon. +
    config +
    Configuration file syntax errors are fatal. +
    listen +
    Listen or Port errors are fatal, except for IPv6 failures on the loopback or "any" addresses. +
    log +
    Log file creation or write errors are fatal. +
    permissions +
    Bad startup file permissions are fatal, for example shared TLS certificate and key files with world-read permissions. +
    +
    FileDevice Yes +
    FileDevice No +
    Specifies whether the file pseudo-device can be used for new printer queues. +The URI "file:///dev/null" is always allowed. +
    Group group-name-or-number +
    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". +
    LogFilePerm mode +
    Specifies the permissions of all log files that the scheduler writes. +The default is "0644". +
    PageLog [ filename ] +
    PageLog syslog +
    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: +
    +
    +    PageLog /var/log/cups/%s-page_log
    +
    +
    +The default is "/var/log/cups/page_log". +
    RemoteRoot username +
    Specifies the username that is associated with unauthenticated accesses by clients claiming to be the root user. +The default is "remroot". +
    RequestRoot directory +
    Specifies the directory that contains print jobs and other HTTP request data. +The default is "/var/spool/cups". +
    Sandboxing off +
    Sandboxing relaxed +
    Sandboxing strict +
    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. +
    ServerBin directory +
    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. +
    ServerKeychain path +
    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. +
    ServerRoot directory +
    Specifies the directory containing the server configuration files. +The default is "/etc/cups". +
    SyncOnClose Yes +
    SyncOnClose No +
    Specifies whether the scheduler calls +fsync(2) +after writing configuration or state files. +The default is "No". +
    SystemGroup group-name [ ... group-name ] +
    Specifies the group(s) to use for @SYSTEM group authentication. +The default contains "admin", "lpadmin", "root", "sys", and/or "system". +
    TempDir directory +
    Specifies the directory where temporary files are stored. +The default is "/var/spool/cups/tmp". +
    User username +
    Specifies the user name or ID that is used when running external programs. +The default is "lp".

    See Also

    -classes.conf(5), cupsd(8), cupsd.conf(5), mime.convs(5), -mime.types(5), printers.conf(5), -subscriptions.conf(5), -
    -http://localhost:631/help +classes.conf(5), +cups(1), +cupsd(8), +cupsd.conf(5), +mime.convs(5), +mime.types(5), +printers.conf(5), +subscriptions.conf(5), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-cups-lpd.html b/doc/help/man-cups-lpd.html index fc891605a..b4f1184e0 100644 --- a/doc/help/man-cups-lpd.html +++ b/doc/help/man-cups-lpd.html @@ -1,4 +1,4 @@ - + @@ -10,108 +10,105 @@

    Name

    cups-lpd - receive print jobs and report printer status to lpd clients

    Synopsis

    -cups-lpd -[ -h -hostname[:port] -] [ -n ] [ -o -option=value -] +cups-lpd +[ +-h hostname[:port] +] [ +-n +] [ +-o +option=value +]

    Description

    -cups-lpd is the CUPS Line Printer Daemon ("LPD") -mini-server that supports legacy client systems that use the LPD -protocol. cups-lpd does not act as a standalone network -daemon but instead operates using the Internet "super-server" -inetd(8) or xinetd(8). If you are using inetd, +cups-lpd +is the CUPS Line Printer Daemon ("LPD") mini-server that supports legacy client systems that use the LPD protocol. +cups-lpd +does not act as a standalone network daemon but instead operates using any of the Internet "super-servers" such as +inetd(8), +launchd(8), +and +systemd(8). +

    Options

    +
    +
    -h hostname[:port] +
    Sets the CUPS server (and port) to use. +
    -n +
    Disables reverse address lookups; normally +cups-lpd +will try to discover the hostname of the client via a reverse DNS lookup. +
    -o name=value +
    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 +inetd(8) +example below sets the "document-format" option to "application/octet-stream" which forces autodetection of the print file format. +
    +

    Conforming To

    +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. +

    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. +

    Errors

    +Errors are sent to the system log. +

    Files

    +
    +/etc/inetd.conf
    +/etc/xinetd.d/cups-lpd
    +/System/Library/LaunchDaemons/org.cups.cups-lpd.plist
    +
    +

    Notes

    +

    Performance

    +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. +

    Security

    +cups-lpd +currently does not perform any access control based on the settings in cupsd.conf(5) or in the hosts.allow(5) or hosts.deny(5) files used by TCP wrappers. +Therefore, running +cups-lpd +on your server will allow any computer on your network (and perhaps the entire +Internet) to print to your server. +

    While +xinetd(8) +has built-in access control support, you should use the TCP wrappers package with +inetd(8) +to limit access to only those computers that should be able to print through your server. +

    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. +

    Example

    +If you are using +inetd(8), add the following line to the inetd.conf file to enable the -cups-lpd mini-server: -
    -
    +cups-lpd
    +mini-server:
    +
     
         printer stream tcp nowait lp /usr/lib/cups/daemon/cups-lpd cups-lpd \
             -o document-format=application/octet-stream
    -
    -

    Note: If you are using Solaris 10 or higher, you must run -the inetdconv(1m) program to register the changes to the -inetd.conf file. -

    If you are using the newer xinetd(8) daemon, create a file -named /etc/xinetd.d/cups containing the following lines: -
    -

     
    -    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
    -    }
     
    -

    Options

    -
    -
    -h hostname[:port] -
    -
    -
    Sets the CUPS server (and port) to use. -
    -
    -n -
    -
    -
    Disables reverse address lookups; normally cups-lpd will -try to discover the hostname of the client via a reverse DNS -lookup. -
    -
    -o name=value -
    -
    -
    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. -
    -
    -

    Performance

    -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. -

    Security

    -cups-lpd currently does not perform any access control -based on the settings in cupsd.conf(5) or in the -hosts.allow(5) or hosts.deny(5) files used by TCP -wrappers. Therefore, running cups-lpd on your server will -allow any computer on your network (and perhaps the entire -Internet) to print to your server. -

    While xinetd has built-in access control support, you -should use the TCP wrappers package with inetd to limit -access to only those computers that should be able to print -through your server. -

    cups-lpd is not enabled by the standard CUPS distribution. -Please consult with your operating system vendor to determine -whether it is enabled on your system. -

    Compatibility

    -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. -

    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. +

    Note: If you are using Solaris 10 or higher, you must run the +inetdconv(1m) +program to register the changes to the inetd.conf file. +

    CUPS includes configuration files for +launchd(8), +systemd(8), +and +xinetd(8). +Simply enable the +cups-lpd +service using the corresponding control program.

    See Also

    -cups(1), cupsd(8), inetconv(1m), -inetd(8), xinetd(8), -
    -http://localhost:631/help +cups(1), +cupsd(8), +inetconv(1m), +inetd(8), +launchd(8), +xinetd(8), +CUPS Online Help (http://localhost:631/help), +RFC 2569

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-cups-snmp.conf.html b/doc/help/man-cups-snmp.conf.html index 130ef3cf8..fb8c88925 100644 --- a/doc/help/man-cups-snmp.conf.html +++ b/doc/help/man-cups-snmp.conf.html @@ -1,4 +1,4 @@ - + @@ -7,76 +7,49 @@

    snmp.conf(5)

    -

    Name

    snmp.conf - snmp configuration file for cups

    Description

    -The 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 /etc/cups directory. Each line in -the file can be a configuration directive, a blank line, or a comment. Comment -lines start with the # character. -

    The Community and DebugLevel directives are used by all backends. The remainder -apply only to the SNMP backend (cups-snmp(8)). +The +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 /etc/cups directory. +Each line in the file can be a configuration directive, a blank line, or a comment. Comment lines start with the # character. +

    The Community and DebugLevel directives are used by all backends. The remainder apply only to the SNMP backend - +cups-snmp(8).

    Directives

    -The following directives are understood by the CUPS network backends. Consult -the on-line help for detailed descriptions: -
    -
    Address @IF(name) -
    -
    -
    Address @LOCAL -
    -
    -
    Address address -
    -
    -
    Sends SNMP broadcast queries to the specified address(es). There is no default -for the broadcast address. -
    -
    Community name -
    -
    -
    Specifies the community name to use. Only a single community name may be -specified. The default community name is "public". -
    -
    DebugLevel number -
    -
    -
    Specifies the logging level from 0 (none) to 3 (everything). Typically only used -for debugging (thus the name). The default debug level is 0. -
    -
    DeviceURI "regular expression" device-uri [... device-uri] -
    -
    -
    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. -
    -
    HostNameLookups on -
    -
    -
    HostNameLookups off -
    -
    -
    Specifies whether the addresses of printers should be converted to hostnames or -left as numeric IP addresses. The default is "off". -
    -
    MaxRunTime seconds -
    -
    -
    Specifies the maximum number of seconds that the SNMP backend will scan the -network for printers. The default is 120 seconds (2 minutes). -
    +The following directives are understood by the CUPS network backends: +
    +
    Address @IF(name) +
    Address @LOCAL +
    Address address +
    Sends SNMP broadcast queries (for discovery) to the specified address(es). +There is no default for the broadcast address. +
    Community name +
    Specifies the community name to use. +Only a single community name may be specified. +The default community name is "public". +
    DebugLevel number +
    Specifies the logging level from 0 (none) to 3 (everything). +Typically only used for debugging (thus the name). +The default debug level is 0. +
    DeviceURI "regular expression" device-uri [... device-uri] +
    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. +
    HostNameLookups on +
    HostNameLookups off +
    Specifies whether the addresses of printers should be converted to hostnames or left as numeric IP addresses. +The default is "off". +
    MaxRunTime seconds +
    Specifies the maximum number of seconds that the SNMP backend will scan the +network for printers. +The default is 120 seconds (2 minutes).

    See Also

    -cups-snmp(8), -
    -http://localhost:631/help +cups-snmp(8), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-cups-snmp.html b/doc/help/man-cups-snmp.html index d3d1a6a7a..06a48133f 100644 --- a/doc/help/man-cups-snmp.html +++ b/doc/help/man-cups-snmp.html @@ -1,4 +1,4 @@ - + @@ -10,46 +10,45 @@

    Name

    snmp - cups snmp backend

    Synopsis

    -/usr/lib/cups/backend/snmp -ip-address-or-hostname -
    -/usr/libexec/cups/backend/snmp -ip-address-or-hostname -
    -lpinfo -v --include-schemes snmp -

    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. -

    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 second form, the SNMP backend is run indirectly using the lpinfo(8) -command. The output provides all printers detected via SNMP on the configured -broadcast addresses. Note: no broadcast addresses are configured by -default. -

    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. -

    Configuration

    -The SNMP backend reads the /etc/cups/snmp.conf configuration file, if +/usr/lib/cups/backend/snmp +ip-address-or-hostname +
    +/usr/libexec/cups/backend/snmp +ip-address-or-hostname +
    +lpinfo +-v +--include-schemes +snmp +

    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. +

    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 second form, the SNMP backend is run indirectly using the +lpinfo(8) +command. +The output provides all printers detected via SNMP on the configured +broadcast addresses. +Note: no broadcast addresses are configured by default. +

    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. +

    Files

    +The SNMP backend reads the /etc/cups/snmp.conf configuration file, if present, to set the default broadcast address, community name, and logging -level. The configuration file is documented in cups-snmp.conf(5). 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. +

    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.

    See Also

    -backend(7), cups-snmp.conf(5), cupsd(8), cupsd.conf(5), -filter(7), lpinfo(8), -
    -http://localhost:631/help +backend(7), +cups-snmp.conf(5), +cupsd(8), +lpinfo(8), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-cups.html b/doc/help/man-cups.html new file mode 100644 index 000000000..016056e2a --- /dev/null +++ b/doc/help/man-cups.html @@ -0,0 +1,119 @@ + + + + + + cups(1) + + +

    cups(1)

    +

    Name

    +cups - a standards-based, open source printing system +

    Description

    +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. +

    Now, since every printer manufacturer does things differently, printing can be very complicated. +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 +CUPS +can often figure things out on its own. +

    How Does It Work?

    +The first time you print to a printer, +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. +

    Every time you print something, +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 +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. +

    When the print job is completely printed, +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. +

    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. +

    When you are asked for a username and password, enter your login username and password or the "root" username and password. +

    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. +

    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. +

    You can also use the +lpadmin(8) +and +lpinfo(8) +commands to add printers to +CUPS. +Additionally, your operating system may include graphical user interfaces or automatically create printer queues when you connect a printer to your computer. +

    How Do I Get Help?

    +The +CUPS +web site (http://www.CUPS.org) provides access to the +cups +and +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. +

    Environment

    +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: +
    +
    CUPS_ANYROOT +
    Whether to allow any X.509 certificate root (Y or N). +
    CUPS_CACHEDIR +
    The directory where semi-persistent cache files can be found. +
    CUPS_DATADIR +
    The directory where data files can be found. +
    CUPS_ENCRYPTION +
    The default level of encryption (Always, IfRequested, Never, Required). +
    CUPS_EXPIREDCERTS +
    Whether to allow expired X.509 certificates (Y or N). +
    CUPS_GSSSERVICENAME +
    The Kerberos service name used for authentication. +
    CUPS_SERVER +
    The hostname/IP address and port number of the CUPS scheduler (hostname:port or ipaddress:port). +
    CUPS_SERVERBIN +
    The directory where server helper programs, filters, backend, etc. can be found. +
    CUPS_SERVERROOT +
    The root directory of the server. +
    CUPS_STATEDIR +
    The directory where state files can be found. +
    CUPS_USER +
    Specifies the name of the user for print requests. +
    HOME +
    Specifies the home directory of the current user. +
    IPP_PORT +
    Specifies the default port number for IPP requests. +
    LOCALEDIR +
    Specifies the location of localization files. +
    LPDEST +
    Specifies the default print queue (System V standard). +
    PRINTER +
    Specifies the default print queue (Berkeley standard). +
    TMPDIR +
    Specifies the location of temporary files. +
    +

    Files

    +
    +~/.cups/client.conf
    +~/.cups/lpoptions
    +
    +

    Conforming To

    +CUPS +conforms to the Internet Printing Protocol version 2.1 and implements the Berkeley and System V UNIX print commands. +

    See Also

    +cancel(1), +client.conf(7), +cupsctl(8), +cupsd(8), +lp(1), +lpadmin(8), +lpinfo(8), +lpoptions(1), +lpr(1), +lprm(1), +lpq(1), +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) +

    Copyright

    +Copyright © 2007-2014 by Apple Inc. + + + diff --git a/doc/help/man-cupsaccept.html b/doc/help/man-cupsaccept.html index 6624bf979..739d615f0 100644 --- a/doc/help/man-cupsaccept.html +++ b/doc/help/man-cupsaccept.html @@ -1,4 +1,4 @@ - + @@ -10,68 +10,75 @@

    Name

    cupsaccept/cupsreject - accept/reject jobs sent to a destination

    Synopsis

    -cupsaccept -[ -E ] [ -U -username -] [ -h -hostname[:port] -] destination(s) +cupsaccept +[ +-E +] [ +-U +username +] [ +-h +hostname[:port] +] +destination(s)
    -cupsreject -[ -E ] [ -U -username -] [ -h -hostname[:port] -] [ -r -reason -] destination(s) +cupsreject +[ +-E +] [ +-U +username +] [ +-h +hostname[:port] +] [ +-r +reason +] +destination(s)

    Description

    -cupsaccept instructs the printing system to accept print jobs to the +The +cupsaccept +command instructs the printing system to accept print jobs to the specified destinations. +

    The +cupsreject +command instructs the printing system to reject print jobs to the specified destinations. -

    cupsreject instructs the printing system to reject print jobs to the -specified destinations. The -r option sets the reason for rejecting -print jobs. If not specified the reason defaults to "Reason Unknown". +The -r option sets the reason for rejecting print jobs. If not specified, the reason defaults to "Reason Unknown".

    Options

    -The following options are supported by both cupsaccept and -cupsreject: -
    -
    -E -
    -
    -
    Forces encryption when connecting to the server. -
    -
    -U username -
    -
    -
    Sets the username that is sent when connecting to the server. -
    -
    -h hostname[:port] -
    -
    -
    Chooses an alternate server. -
    -
    -r "reason" -
    -
    -
    Sets the reason string that is shown for a printer that is -rejecting jobs. -
    +The following options are supported by both +cupsaccept +and +cupsreject: +
    +
    -E +
    Forces encryption when connecting to the server. +
    -U username +
    Sets the username that is sent when connecting to the server. +
    -h hostname[:port] +
    Chooses an alternate server. +
    -r "reason" +
    Sets the reason string that is shown for a printer that is rejecting jobs.
    -

    Compatibility

    -Unlike the System V printing system, CUPS allows printer names to -contain any printable character except SPACE, TAB, "/", or "#". +

    Conforming To

    +The +cupsaccept +and +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 not case-sensitive. -

    The CUPS versions of accept and reject 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.

    See Also

    -cancel(1), cupsenable(8), lp(1), -lpadmin(8), lpstat(1), +cancel(1), +cupsenable(8), +lp(1), +lpadmin(8), +lpstat(1),
    -http://localhost:631/help +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-cupsaddsmb.html b/doc/help/man-cupsaddsmb.html index cc4e46e6c..622d30a7d 100644 --- a/doc/help/man-cupsaddsmb.html +++ b/doc/help/man-cupsaddsmb.html @@ -1,4 +1,4 @@ - + @@ -11,74 +11,49 @@ cupsaddsmb - export printers to samba for windows clients

    Synopsis

    -cupsaddsmb -[ -H -samba-server -] [ -U -samba-user[%samba-password] -] [ -h -cups-server[:port] -] [ -v ] -a +cupsaddsmb +[ +-H +samba-server +] [ +-U +samba-user[%samba-password] +] [ +-h +cups-server[:port] +] [ +-v +] +-a
    -cupsaddsmb -[ -H -samba-server -] [ -U -samba-user[%samba-password] -] [ -h -cups-server[:port] -] [ -v ] printer [ ... printer ] - +cupsaddsmb +[ +-H +samba-server +] [ +-U +samba-user[%samba-password] +] [ +-h +cups-server[:port] +] [ +-v +] +printer +[ ... +printer +]

    Description

    -cupsaddsmb 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. - -

    Options

    -cupsaddsmb supports the following options: -
    -
    -H samba-server -
    -
    -
    Specifies the SAMBA server which defaults to the CUPS server. -
    -
    -U samba-user[%samba-password] -
    -
    -
    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. -
    -
    -a -
    -
    -
    Exports all known printers. Otherwise only the named printers are -exported. -
    -
    -h cups-server[:port] -
    -
    -
    Specifies a different CUPS server to use. -
    -
    -v -
    -
    -
    Specifies that verbose information should be shown. This is -useful for debugging SAMBA configuration problems. - -
    -
    -

    Samba Configuration

    -cupsaddsmb 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 smb.conf(5) file to support -printing through CUPS and provide a printer driver download +The cupsaddsmb 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. +

    Samba Configuration

    +cupsaddsmb 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 +smb.conf(5) +file to support printing through CUPS and provide a printer driver download share, as follows: -
    +
     
         [global]
     	load printers = yes
    @@ -101,70 +76,46 @@ share, as follows:
     	guest ok = no
     	read only = yes
     	write list = root
    -
    -

    This configuration assumes a FHS-compliant installation of -SAMBA; adjust the [printers] and [print$] share paths -accordingly on your system as needed. -

    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. -

    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. -

    Once you have extracted the driver files, copy the 32-bit drivers -to the /usr/share/cups/drivers directory and the 64-bit -drivers to the /usr/share/cups/drivers/x64 directory exactly -as named below: -

    +
    +This configuration assumes a FHS-compliant installation of SAMBA; adjust the [printers] and [print$] share paths accordingly on your system as needed. +

    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. +

    Copy the 32-bit drivers to the /usr/share/cups/drivers directory and the 64-bit drivers to the /usr/share/cups/drivers/x64 directory exactly as named below: +

     
    -    [Windows 2000 and higher]
         ps5ui.dll
         pscript.hlp
         pscript.ntf
         pscript5.dll
    -
    -

    Note: Unlike Windows, case is significant - make sure that -you use the lowercase filenames shown above, otherwise -cupsaddsmb will fail to export the drivers. - -

    Adobe Postscript Drivers For Windows 95, 98, And Me

    -cupsaddsmb 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). -

    The Adobe driver does not support the page-label, job-billing, or -job-hold-until options. -

    Once you have installed the driver on a Windows system, copy the -following files to the /usr/share/cups/drivers directory -exactly as named below: -

     
    -    [Windows 95, 98, and Me]
    -    ADFONTS.MFM
    -    ADOBEPS4.DRV
    -    ADOBEPS4.HLP
    -    ICONLIB.DLL
    -    PSMON.DLL
     
    -

    Note: Unlike Windows, case is significant - make sure that -you use the UPPERCASE filenames shown above, otherwise -cupsaddsmb will fail to export the drivers. - -

    Known Issues

    -Getting the full set of Windows driver files should be easier. - +Note: Unlike Windows, case is significant - make sure that you use the lowercase filenames shown above, otherwise cupsaddsmb will fail to export the drivers. +

    Options

    +cupsaddsmb supports the following options: +
    +
    -H samba-server +
    Specifies the SAMBA server which defaults to the CUPS server. +
    -U samba-user[%samba-password] +
    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. +
    -a +
    Exports all known printers. +Otherwise only the named printers are exported. +
    -h cups-server[:port] +
    Specifies a different CUPS server to use. +
    -v +
    Specifies that verbose information should be shown. +This is useful for debugging SAMBA configuration problems. +

    See Also

    -smbd(8), smb.conf(5), -http://localhost:631/help - +rpcclient(1), +smbclient(1), +smbd(8), +smb.conf(5), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-cupsctl.html b/doc/help/man-cupsctl.html index 1434321bf..7fe7fe99c 100644 --- a/doc/help/man-cupsctl.html +++ b/doc/help/man-cupsctl.html @@ -1,4 +1,4 @@ - + @@ -10,89 +10,85 @@

    Name

    cupsctl - configure cupsd.conf options

    Synopsis

    -cupsctl -[ -E ] [-U -username -] [ -h -server[:port] -] [ --[no-]debug-logging ] [ --[no-]remote-admin ] [ --[no-]remote-any ] -[ --[no-]share-printers ] [ --[no-]user-cancel-any ] +cupsctl [ -name=value -] +-E +] [ +-U +username +] [ +-h +server[:port] +] [ +--[no-]debug-logging +] [ +--[no-]remote-admin +] [ +--[no-]remote-any +] [ +--[no-]share-printers +] [ +--[no-]user-cancel-any +] [ +name=value +]

    Description

    -cupsctl updates or queries the cupsd.conf file for a server. When +cupsctl updates or queries the cupsd.conf 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.

    Options

    The following options are recognized: -
    -
    -E -
    -
    -
    Enables encryption on the connection to the scheduler. -
    -
    -U username -
    -
    -
    Specifies an alternate username to use when authenticating with the scheduler. -
    -
    -h server[:port] -
    -
    -
    Specifies the server address. -
    -
    --[no-]debug-logging -
    -
    -
    Enables or disables debug logging in the error_log file. -
    -
    --[no-]remote-admin -
    -
    -
    Enables or disables remote administration. -
    -
    --[no-]remote-any -
    -
    -
    Enables or disables printing from any address, e.g. the Internet. -
    -
    --[no-]share-printers -
    -
    -
    Enables or disables sharing of local printers with other computers. -
    -
    --[no-]user-cancel-any -
    -
    -
    Allows or prevents users from canceling jobs owned by others. -
    +
    +
    -E +
    Enables encryption on the connection to the scheduler. +
    -U username +
    Specifies an alternate username to use when authenticating with the scheduler. +
    -h server[:port] +
    Specifies the server address. +
    --fR[fBno-fR]fBdebug-logging +
    Enables (disables) debug logging to the error_log file. +
    --fR[fBno-fR]fBremote-admin +
    Enables (disables) remote administration. +
    --fR[fBno-fR]fBremote-any +
    Enables (disables) printing from any address, e.g., the Internet. +
    --fR[fBno-fR]fBshare-printers +
    Enables (disables) sharing of local printers with other computers. +
    --fR[fBno-fR]fBuser-cancel-any +
    Allows (prevents) users to cancel jobs owned by others.

    Examples

    Display the current settings: -
    +
    +
         cupsctl
    +
     
    -

    Enable debug logging: -

    +Enable debug logging:
    +
    +
         cupsctl --debug-logging
    +
     
    -

    Get the current debug logging state: -

    +Get the current debug logging state:
    +
    +
         cupsctl | grep '^_debug_logging' | awk -F= '{print $2}'
    +
     
    -

    Disable printer sharing: -

    +Disable printer sharing:
    +
    +
         cupsctl --no-share-printers
     

    Known Issues

    -You cannot set the Listen or Port directives using cupsctl. +You cannot set the Listen or Port directives using cupsctl.

    See Also

    -cupsd.conf(5), cupsd(8), +cupsd.conf(5), +cupsd(8),
    -http://localhost:631/help +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-cupsd-helper.html b/doc/help/man-cupsd-helper.html new file mode 100644 index 000000000..ecdb2ac8f --- /dev/null +++ b/doc/help/man-cupsd-helper.html @@ -0,0 +1,84 @@ + + + + + + cupsd-helper(8) + + +

    cupsd-helper(8)

    +

    Name

    +cupsd-helper - cupsd helper programs +

    Synopsis

    +cups-deviced +request-id +limit +user-id +options +
    +cups-driverd +cat +ppd-name +
    +cups-driverd +list +request_id +limit +options +
    +cups-exec +sandbox-profile +[ +-g +group-id +] [ +-n +nice-value +] [ +-u +user-id +] +/path/to/program +argv0 +... +argvN +

    Description

    +The cupsd-helper programs perform long-running operations on behalf of the scheduler, +cupsd(8). +The cups-deviced helper program runs each CUPS +backend(7) +with no arguments in order to discover the available printers. +

    The cups-driverd helper program lists all available printer drivers, a subset of "matching" printer drivers, or a copy of a specific driver PPD file. +

    The cups-exec helper program runs backends, filters, and other programs. On OS X these programs are run in a secure sandbox. +

    Files

    +The cups-driverd program looks for PPD and driver information files in the following directories: +
    +
    +    /Library/Printers
    +    /opt/share/ppd
    +    /System/Library/Printers
    +    /usr/local/share/ppd
    +    /usr/share/cups/drv
    +    /usr/share/cups/model
    +    /usr/share/ppd
    +
    +

    PPD files can be compressed using the +gzip(1) +program or placed in compressed +tar(1) +archives to further reduce their size. +

    Driver information files must conform to the format defined in +ppdcfile(5). +

    See Also

    +backend(7), +cups(1), +cupsd(8), +cupsd.conf(5), +filter(7), +ppdcfile(5), +CUPS Online Help (http://localhost:631/help) +

    Copyright

    +Copyright © 2007-2014 by Apple Inc. + + + diff --git a/doc/help/man-cupsd-logs.html b/doc/help/man-cupsd-logs.html new file mode 100644 index 000000000..aa1a77b7f --- /dev/null +++ b/doc/help/man-cupsd-logs.html @@ -0,0 +1,194 @@ + + + + + + cupsd-logs(5) + + +

    cupsd-logs(5)

    +

    Name

    +cupsd-logs - cupsd log files (access_log, error_log, and page_log) +

    Description

    +cupsd(8) +normally maintains three log files: access_log to track requests that are submitted to the scheduler, error_log to track progress and errors, and page_log to track pages that are printed. +Configuration directives in +cupsd.conf(5) +and +cups-files.conf(5) +control what information is logged and where it is stored. +

    Access Log File Format

    +The access_log 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: +
    +
    +    host group user date-time "method resource version" status bytes
    +      ipp-operation ipp-status
    +
    +
    +For example: +
    +
    +    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 - -
    +
    +
    +The host field will normally only be an IP address unless you have enabled the HostNameLookups directive in the cupsd.conf file or if the IP address corresponds to your local machine. +

    The group field always contains "-". +

    The user field is the authenticated username of the requesting user. +If no username and password is supplied for the request then this field contains "-". +

    The date-time field is the date and time of the request in local time and is in the format "[DD/MON/YYYY:HH:MM:SS +ZZZZ]". +

    The method 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. +

    The resource field is the filename of the requested resource. +

    The version field is the HTTP specification version used by the client. +For CUPS clients this will always be "HTTP/1.1". +

    The status field contains the HTTP result status of the request, as follows: +

    +
    +
    200 +
    Successful operation. +
    201 +
    File created/modified successfully. +
    304 +
    The requested file has not changed. +
    400 +
    Bad HTTP request; typically this means that you have a malicious program trying to access your server. +
    401 +
    Unauthorized, authentication (username + password) is required. +
    403 +
    Access is forbidden; typically this means that a client tried to access a file or resource they do not have permission to access. +
    404 +
    The file or resource does not exist. +
    405 +
    URL access method is not allowed; typically this means you have a web browser using your server as a proxy. +
    413 +
    Request too large; typically this means that a client tried to print a file larger than the MaxRequestSize allows. +
    426 +
    Upgrading to TLS-encrypted connection. +
    500 +
    Server error; typically this happens when the server is unable to open/create a file - consult the error_log file for details. +
    501 +
    The client requested encryption but encryption support is not enabled/compiled in. +
    505 +
    HTTP version number not supported; typically this means that you have a malicious program trying to access your server. +
    +
    +

    The bytes 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. +

    The ipp-operation field contains either "-" for non-IPP requests or the IPP operation name for POST requests containing an IPP request. +

    The ipp-status field contains either "-" for non-IPP requests or the IPP status code name for POST requests containing an IPP response. +

    Error Log File Format

    +The error_log file lists messages from the scheduler - errors, warnings, etc. The LogLevel directive in the +cupsd.conf(5) +file controls which messages are logged: +
    +
    +    level date-time message
    +
    +
    +For example: +
    +
    +    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'.
    +
    +
    +The level field contains the type of message: +
    +
    A +
    Alert message (LogLevel alert) +
    C +
    Critical error message (LogLevel crit) +
    D +
    Debugging message (LogLevel debug) +
    d +
    Detailed debugging message (LogLevel debug2) +
    E +
    Normal error message (LogLevel error) +
    I +
    Informational message (LogLevel info) +
    N +
    Notice message (LogLevel notice) +
    W +
    Warning message (LogLevel warn) +
    X +
    Emergency error message (LogLevel emerg) +
    +

    The date-time 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 access_log file. +

    The message field contains a free-form textual message. +Messages from job filters are prefixed with "[Job NNN]" where "NNN" is the job ID. +

    Page Log File Format

    +The page_log file lists each page or group of pages that are sent to a printer. +By default, each line contains the following information: +
    +
    +    printer user job-id date-time page-number num-copies job-billing
    +      job-originating-host-name job-name media sides
    +
    +    printer user job-id date-time total num-impressions job-billing
    +      job-originating-host-name job-name media sides
    +
    +
    +For example the entries for a two page job called "myjob" might look like: +
    +
    +    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
    +
    +
    +The PageLogFormat directive in the +cupsd.conf(5) +file can be used to change this information. +

    The printer 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. +

    The user field contains the name of the user (the IPP requesting-user-name attribute) that submitted this file for printing. +

    The job-id field contains the job number of the page being printed. +

    The date-time 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 access_log file. +

    The page-number and num-copies 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. +

    Lines containing the keyword "total" have a num-impressions field instead which provides the total number of impressions (sides) that have been printed on for the job. +

    The job-billing 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. +

    The job-originating-host-name field contains the hostname or IP address of the client that printed the job. +

    The job-name field contains a copy of the job-name attribute provided with the IPP Create-Job or Print-Job requests or "-" if none was provided. +

    The media 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. +

    The sides field contains a copy of the sides attribute provided with the IPP Create-Job or Print-Job requests or "-" if none was provided. +

    See Also

    +cupsd(8), +cupsd.conf(5), +cups-files.conf(5), +CUPS Online Help (http://localhost:631/help) +

    Copyright

    +Copyright © 2007-2014 by Apple Inc. + + + diff --git a/doc/help/man-cupsd.conf.html b/doc/help/man-cupsd.conf.html index 542d9c159..c627824a7 100644 --- a/doc/help/man-cupsd.conf.html +++ b/doc/help/man-cupsd.conf.html @@ -1,4 +1,4 @@ - + @@ -10,681 +10,579 @@

    Name

    cupsd.conf - server configuration file for cups

    Description

    -The cupsd.conf file configures the CUPS scheduler, cupsd(8). It -is normally located in the /etc/cups directory. Note: -File, directory, and user configuration directives that used to be allowed in -the cupsd.conf file are now stored in the cups-files.conf(5) instead -in order to prevent certain types of privilege escalation attacks. -

    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. -

    Directives

    -The following directives are understood by cupsd(8). Consult the -on-line help for detailed descriptions: -
    -
    AccessLogLevel config -
    -
    -
    AccessLogLevel actions -
    -
    -
    AccessLogLevel all -
    -
    -
    Specifies the logging level for the AccessLog file. -
    -
    Allow all -
    -
    -
    Allow none -
    -
    -
    Allow host.domain.com -
    -
    -
    Allow *.domain.com -
    -
    -
    Allow ip-address -
    -
    -
    Allow ip-address/netmask -
    -
    -
    Allow ip-address/mm -
    -
    -
    Allow @IF(name) -
    -
    -
    Allow @LOCAL -
    -
    -
    Allows access from the named hosts or addresses. -
    -
    AuthType None -
    -
    -
    AuthType Basic -
    -
    -
    AuthType BasicDigest -
    -
    -
    AuthType Digest -
    -
    -
    AuthType Negotiate -
    -
    -
    Specifies the authentication type (None, Basic, BasicDigest, Digest, Negotiate) -
    -
    AutoPurgeJobs Yes -
    -
    -
    AutoPurgeJobs No -
    -
    -
    Specifies whether to purge job history data automatically when -it is no longer required for quotas. -
    -
    BrowseLocalProtocols [All] [DNSSD] -
    -
    -
    Specifies the protocols to use for local printer sharing. -
    -
    BrowseWebIF Yes -
    -
    -
    BrowseWebIF No -
    -
    -
    Specifies whether the CUPS web interface is advertised via DNS-SD. -
    -
    Browsing Yes -
    -
    -
    Browsing No -
    -
    -
    Specifies whether or not shared printers should be advertised. -
    -
    Classification banner -
    -
    -
    Specifies the security classification of the server. -
    -
    ClassifyOverride Yes -
    -
    -
    ClassifyOverride No -
    -
    -
    Specifies whether to allow users to override the classification -of individual print jobs. -
    -
    DefaultAuthType Basic -
    -
    -
    DefaultAuthType BasicDigest -
    -
    -
    DefaultAuthType Digest -
    -
    -
    DefaultAuthType Negotiate -
    -
    -
    Specifies the default type of authentication to use. -
    -
    DefaultEncryption Never -
    -
    -
    DefaultEncryption IfRequested -
    -
    -
    DefaultEncryption Required -
    -
    -
    Specifies the type of encryption to use for authenticated requests. -
    -
    DefaultLanguage locale -
    -
    -
    Specifies the default language to use for text and web content. -
    -
    DefaultPaperSize Auto -
    -
    -
    DefaultPaperSize None -
    -
    -
    DefaultPaperSize sizename -
    -
    -
    Specifies the default paper size for new print queues. "Auto" uses a locale- -specific default, while "None" specifies there is no default paper size. -
    -
    DefaultPolicy policy-name -
    -
    -
    Specifies the default access policy to use. -
    -
    DefaultShared Yes -
    -
    -
    DefaultShared No -
    -
    -
    Specifies whether local printers are shared by default. -
    -
    Deny all -
    -
    -
    Deny none -
    -
    -
    Deny host.domain.com -
    -
    -
    Deny *.domain.com -
    -
    -
    Deny ip-address -
    -
    -
    Deny ip-address/netmask -
    -
    -
    Deny ip-address/mm -
    -
    -
    Deny @IF(name) -
    -
    -
    Deny @LOCAL -
    -
    -
    Denies access to the named host or address. -
    -
    DirtyCleanInterval seconds -
    -
    -
    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. -
    -
    Encryption IfRequested -
    -
    -
    Encryption Never -
    -
    -
    Encryption Required -
    -
    -
    Specifies the level of encryption that is required for a particular -location. -
    -
    ErrorPolicy abort-job -
    -
    Specifies that a failed print job should be aborted (discarded) unless otherwise specified for the printer. -
    -
    ErrorPolicy retry-job -
    -
    Specifies that a failed print job should be retried at a later time unless otherwise specified for the printer. -
    -
    ErrorPolicy retry-this-job -
    -
    Specifies that a failed print job should be retried immediately unless otherwise specified for the printer. -
    -
    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. -
    -
    FilterLimit limit -
    -
    -
    Specifies the maximum cost of filters that are run concurrently. -
    -
    FilterNice nice-value -
    -
    -
    Specifies the scheduling priority ("nice" value) of filters that -are run to print a job. -
    -
    GSSServiceName name -
    -
    -
    Specifies the service name when using Kerberos authentication. The default -service name is "http". -
    -
    HostNameLookups On -
    -
    -
    HostNameLookups Off -
    -
    -
    HostNameLookups Double -
    -
    -
    Specifies whether or not to do reverse lookups on client addresses. -
    -
    Include filename -
    -
    -
    Includes the named file. -
    -
    JobKillDelay seconds -
    -
    -
    Specifies the number of seconds to wait before killing the filters and backend -associated with a canceled or held job. -
    -
    JobPrivateAccess all -
    -
    -
    JobPrivateAccess default -
    -
    -
    JobPrivateAccess {user|@group|@ACL|@OWNER|@SYSTEM}+ -
    -
    -
    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. -
    -
    JobPrivateValues all -
    -
    -
    JobPrivateValues default -
    -
    -
    JobPrivateValues none -
    -
    -
    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". -
    -
    JobRetryInterval seconds -
    -
    -
    Specifies the interval between retries of jobs in seconds. -
    -
    JobRetryLimit count -
    -
    -
    Specifies the number of retries that are done for jobs. -
    -
    KeepAlive Yes -
    -
    -
    KeepAlive No -
    -
    -
    Specifies whether to support HTTP keep-alive connections. -
    -
    KeepAliveTimeout seconds -
    -
    -
    Specifies the amount of time that connections are kept alive. -
    -
    <Limit operations> ... </Limit> -
    -
    -
    Specifies the IPP operations that are being limited inside a policy. -
    -
    <Limit methods> ... </Limit> -
    -
    -
    <LimitExcept methods> ... </LimitExcept> -
    -
    -
    Specifies the HTTP methods that are being limited inside a location. -
    -
    LimitRequestBody -
    -
    -
    Specifies the maximum size of any print job request. -
    -
    Listen ip-address:port -
    -
    -
    Listen *:port -
    -
    -
    Listen /path/to/domain/socket -
    -
    -
    Listens to the specified address and port or domain socket path. -
    -
    <Location /path> ... </Location> -
    -
    -
    Specifies access control for the named location. -
    -
    LogDebugHistory #-messages -
    -
    -
    Specifies the number of debugging messages that are logged when an error -occurs in a print job. -
    -
    LogLevel alert -
    -
    -
    LogLevel crit -
    -
    -
    LogLevel debug2 -
    -
    -
    LogLevel debug -
    -
    -
    LogLevel emerg -
    -
    -
    LogLevel error -
    -
    -
    LogLevel info -
    -
    -
    LogLevel none -
    -
    -
    LogLevel notice -
    -
    -
    LogLevel warn -
    -
    -
    Specifies the logging level for the ErrorLog file. -
    -
    LogTimeFormat standard -
    -
    -
    LogTimeFormat usecs -
    -
    -
    Specifies the format of the date and time in the log files. -
    -
    MaxClients number -
    -
    -
    Specifies the maximum number of simultaneous clients to support. -
    -
    MaxClientsPerHost number -
    -
    -
    Specifies the maximum number of simultaneous clients to support from a +The +cupsd.conf +file configures the CUPS scheduler, +cupsd(8). +It is normally located in the +/etc/cups +directory. +Note: File, directory, and user configuration directives that used to be allowed in the cupsd.conf file are now stored in the +cups-files.conf(5) +file instead in order to prevent certain types of privilege escalation attacks. +

    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. +

    Top-level Directives

    +The following top-level directives are understood by +cupsd(8): +
    +
    AccessLogLevel config +
    AccessLogLevel actions +
    AccessLogLevel all +
    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". +
    AutoPurgeJobs Yes +
    AutoPurgeJobs No +

    +Specifies whether to purge job history data automatically when it is no longer required for quotas. +The default is "No". +
    BrowseLocalProtocols all +
    BrowseLocalProtocols dnssd +
    BrowseLocalProtocols none +
    Specifies which protocols to use for local printer sharing. +The default is "dnssd" on systems that support Bonjour and "none" otherwise. +
    BrowseWebIF Yes +
    BrowseWebIF No +

    +Specifies whether the CUPS web interface is advertised. +The default is "No". +
    Browsing Yes +
    Browsing No +

    +Specifies whether shared printers are advertised. +The default is "No". +
    Classification banner +

    +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. +
    ClassifyOverride Yes +
    ClassifyOverride No +

    +Specifies whether users may override the classification (cover page) of individual print jobs using the "job-sheets" option. +The default is "No". +
    DefaultAuthType Basic +
    DefaultAuthType Negotiate +

    +Specifies the default type of authentication to use. +The default is "Basic". +
    DefaultEncryption Never +
    DefaultEncryption IfRequested +
    DefaultEncryption Required +
    Specifies whether encryption will be used for authenticated requests. +The default is "Required". +
    DefaultLanguage locale +
    Specifies the default language to use for text and web content. +The default is "en". +
    DefaultPaperSize Auto +
    DefaultPaperSize None +
    DefaultPaperSize sizename +
    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". +
    DefaultPolicy policy-name +
    Specifies the default access policy to use. +The default access policy is "default". +
    DefaultShared Yes +
    DefaultShared No +
    Specifies whether local printers are shared by default. +The default is "Yes". +
    DirtyCleanInterval seconds +
    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". +
    ErrorPolicy abort-job +
    Specifies that a failed print job should be aborted (discarded) unless otherwise specified for the printer. +
    ErrorPolicy retry-job +
    Specifies that a failed print job should be retried at a later time unless otherwise specified for the printer. +
    ErrorPolicy retry-this-job +
    Specifies that a failed print job should be retried immediately unless otherwise specified for the printer. +
    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. +
    FilterLimit limit +
    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". +
    FilterNice nice-value +
    Specifies the scheduling priority ( +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. +
    GSSServiceName name +
    Specifies the service name when using Kerberos authentication. +The default service name is "http." +
    HostNameLookups On +
    HostNameLookups Off +
    HostNameLookups Double +
    Specifies whether to do reverse lookups on connecting clients. +The "Double" setting causes +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. +
    JobKillDelay seconds +
    Specifies the number of seconds to wait before killing the filters and backend associated with a canceled or held job. +The default is "30". +
    JobRetryInterval seconds +
    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". +
    JobRetryLimit count +
    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". +
    KeepAlive Yes +
    KeepAlive No +
    Specifies whether to support HTTP keep-alive connections. +The default is "Yes". +
    KeepAliveTimeout seconds +
    Specifies how long an idle client connection remains open. +The default is "30". +
    <Limit operation ...> ... </Limit> +
    Specifies the IPP operations that are being limited inside a Policy section. IPP operation names are listed below in the section "IPP OPERATIONS". +
    <Limit method ...> ... </Limit> +
    <LimitExcept method ...> ... </LimitExcept> +
    Specifies the HTTP methods that are being limited inside a Location section. HTTP method names are listed below in the section "HTTP METHODS". +
    LimitRequestBody size +
    Specifies the maximum size of print files, IPP requests, and HTML form data. +The default is "0" which disables the limit check. +
    Listen ipv4-address:port +
    Listen [ipv6-address]:port +
    Listen *:port +
    Listen /path/to/domain/socket +
    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. +
    ListenBackLog number +
    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. +
    <Location /path> ... </Location> +
    Specifies access control for the named location. +Paths are documented below in the section "LOCATION PATHS". +
    LogDebugHistory number +
    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. +
    LogLevel none +
    LogLevel emerg +
    LogLevel alert +
    LogLevel crit +
    LogLevel error +
    LogLevel warn +
    LogLevel notice +
    LogLevel info +
    LogLevel debug +
    LogLevel debug2 +
    Specifies the level of logging for the ErrorLog file. +The value "none" stops all logging while "debug2" logs everything. +The default is "warn". +
    LogTimeFormat standard +
    LogTimeFormat usecs +
    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. +
    MaxClients number +
    Specifies the maximum number of simultaneous clients that are allowed by the scheduler. +The default is "100". +
    MaxClientsPerHost number +
    Specifies the maximum number of simultaneous clients that are allowed from a single address. -
    -
    MaxCopies number -
    -
    -
    Specifies the maximum number of copies that a user can print of each job. -
    -
    MaxHoldTime seconds -
    -
    -
    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. -
    -
    MaxJobs number -
    -
    -
    Specifies the maximum number of simultaneous jobs to support. -
    -
    MaxJobsPerPrinter number -
    -
    -
    Specifies the maximum number of simultaneous jobs per printer to support. -
    -
    MaxJobsPerUser number -
    -
    -
    Specifies the maximum number of simultaneous jobs per user to support. -
    -
    MaxJobTime seconds -
    -
    -
    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. -
    -
    MaxLogSize number-bytes -
    -
    -
    Specifies the maximum size of the log files before they are -rotated (0 to disable rotation) -
    -
    MaxRequestSize number-bytes -
    -
    -
    Specifies the maximum request/file size in bytes (0 for no limit) -
    -
    MultipleOperationTimeout seconds -
    -
    -
    Specifies the maximum amount of time to allow between files in a multiple file -print job. -
    -
    Order allow,deny -
    -
    -
    Order deny,allow -
    -
    -
    Specifies the order of HTTP access control (allow,deny or deny,allow) -
    -
    PageLogFormat format string -
    -
    -
    Specifies the format of page log lines. -
    -
    PassEnv variable [... variable] -
    -
    -
    Passes the specified environment variable(s) to child processes. -
    -
    <Policy name> ... </Policy> -
    -
    -
    Specifies access control for the named policy. -
    -
    Port number -
    -
    -
    Specifies a port number to listen to for HTTP requests. -
    -
    PreserveJobFiles Yes -
    -
    -
    PreserveJobFiles No -
    -
    -
    Specifies whether or not to preserve job files after they are printed. -
    -
    PreserveJobHistory Yes -
    -
    -
    PreserveJobHistory No -
    -
    -
    Specifies whether or not to preserve the job history after they are -printed. -
    -
    PrintcapFormat bsd -
    -
    -
    PrintcapFormat plist -
    -
    -
    PrintcapFormat solaris -
    -
    -
    Specifies the format of the printcap file. -
    -
    ReloadTimeout seconds -
    -
    -
    Specifies the amount of time to wait for job completion before -restarting the scheduler. -
    -
    Require group group-name-list -
    -
    -
    Require user user-name-list -
    -
    -
    Require valid-user -
    -
    -
    Specifies that user or group authentication is required. -
    -
    RIPCache bytes -
    -
    -
    Specifies the maximum amount of memory to use when converting images -and PostScript files to bitmaps for a printer. -
    -
    Satisfy all -
    -
    -
    Satisfy any -
    -
    -
    Specifies whether all or any limits set for a Location must be -satisfied to allow access. -
    -
    ServerAdmin user@domain.com -
    -
    -
    Specifies the email address of the server administrator. -
    -
    ServerAlias hostname [... hostname] -
    -
    -
    ServerAlias * -
    -
    -
    Specifies an alternate name that the server is known by. The special name "*" -allows any name to be used. -
    -
    ServerName hostname-or-ip-address -
    -
    -
    Specifies the fully-qualified hostname of the server. -
    -
    ServerTokens Full -
    -
    -
    ServerTokens Major -
    -
    -
    ServerTokens Minimal -
    -
    -
    ServerTokens Minor -
    -
    -
    ServerTokens None -
    -
    -
    ServerTokens OS -
    -
    -
    ServerTokens ProductOnly -
    -
    -
    Specifies what information is included in the Server header of HTTP -responses. -
    -
    SetEnv variable value -
    -
    -
    Set the specified environment variable to be passed to child processes. -
    -
    SSLListen -
    -
    -
    Listens on the specified address and port for encrypted connections. -
    -
    SSLOptions None -
    -
    -
    SSLOptions NoEmptyFragments -
    -
    -
    Sets SSL/TLS protocol options for encrypted connections. -
    -
    SSLPort -
    -
    -
    Listens on the specified port for encrypted connections. -
    -
    StrictConformance Yes -
    -
    -
    StrictConformance No -
    -
    -
    Specifies whether the scheduler requires clients to strictly adhere to the IPP -specifications. The default is No. -
    -
    SubscriptionPrivateAccess all -
    -
    -
    SubscriptionPrivateAccess default -
    -
    -
    SubscriptionPrivateAccess {user|@group|@ACL|@OWNER|@SYSTEM}+ -
    -
    -
    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. -
    -
    SubscriptionPrivateValues all -
    -
    -
    SubscriptionPrivateValues default -
    -
    -
    SubscriptionPrivateValues none -
    -
    -
    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". -
    -
    Timeout seconds -
    -
    -
    Specifies the HTTP request timeout in seconds. -
    -
    WebInterface yes -
    -
    -
    WebInterface no -
    -
    Specifies whether the web interface is enabled. -
    +The default is the MaxClients value. +
    MaxCopies number +
    Specifies the maximum number of copies that a user can print of each job. +The default is "9999". +
    MaxHoldTime seconds +
    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. +
    MaxJobs number +
    Specifies the maximum number of simultaneous jobs that are allowed. +Set to "0" to allow an unlimited number of jobs. +The default is "500". +
    MaxJobsPerPrinter number +
    Specifies the maximum number of simultaneous jobs that are allowed per printer. +The default is "0" which allows up to MaxJobs jobs per printer. +
    MaxJobsPerUser number +
    Specifies the maximum number of simultaneous jobs that are allowed per user. +The default is "0" which allows up to MaxJobs jobs per user. +
    MaxJobTime seconds +
    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). +
    MaxLogSize size +
    Specifies the maximum size of the log files before they are rotated. +The value "0" disables log rotation. +The default is "1048576" (1MB). +
    MultipleOperationTimeout seconds +
    Specifies the maximum amount of time to allow between files in a multiple file print job. +The default is "300" (5 minutes). +
    PageLogFormat format-string +
    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: +
    +
    +    "%%" 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.
    +
    +
    +The default is "%p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}". +
    PassEnv variable [ ... variable ] +
    Passes the specified environment variable(s) to child processes. +
    <Policy name> ... </Policy> +
    Specifies access control for the named policy. +
    Port number +
    Listens to the specified port number for connections. +
    PreserveJobFiles Yes +
    PreserveJobFiles No +
    PreserveJobFiles seconds +
    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). +
    PreserveJobHistory Yes +
    PreserveJobHistory No +
    PreserveJobHistory seconds +
    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". +
    ReloadTimeout seconds +
    Specifies the amount of time to wait for job completion before restarting the scheduler. +The default is "30". +
    RIPCache size +
    Specifies the maximum amount of memory to use when converting documents into bitmaps for a printer. +The default is "128m". +
    ServerAdmin email-address +
    Specifies the email address of the server administrator. +The default value is "root@ServerName". +
    ServerAlias hostname [ ... hostname ] +
    ServerAlias * +
    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 "*". +
    ServerName hostname +
    Specifies the fully-qualified hostname of the server. +The default is the value reported by the +hostname(1) +command. +
    ServerTokens None +
    ServerTokens ProductOnly +
    ServerTokens Major +
    ServerTokens Minor +
    ServerTokens Minimal +
    ServerTokens OS +
    ServerTokens Full +
    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 +uname(1) +command. +"Full" reports "CUPS 2.0.0 (UNAME) IPP/2.0". +The default is "Minimal". +
    SetEnv variable value +
    Set the specified environment variable to be passed to child processes. +
    SSLListen ipv4-address:port +
    SSLListen [ipv6-address]:port +
    SSLListen *:port +
    Listens on the specified address and port for encrypted connections. +
    SSLPort port +
    Listens on the specified port for encrypted connections. +
    StrictConformance Yes +
    StrictConformance No +
    Specifies whether the scheduler requires clients to strictly adhere to the IPP specifications. +The default is "No". +
    Timeout seconds +
    Specifies the HTTP request timeout. +The default is "300" (5 minutes). +
    WebInterface yes +
    WebInterface no +
    Specifies whether the web interface is enabled. +The default is "No". +
    +

    Http Method Names

    +The following HTTP methods are supported by +cupsd(8): +
    +
    GET +
    Used by a client to download icons and other printer resources and to access the CUPS web interface. +
    HEAD +
    Used by a client to get the type, size, and modification date of resources. +
    OPTIONS +
    Used by a client to establish a secure (SSL/TLS) connection. +
    POST +
    Used by a client to submit IPP requests and HTML forms from the CUPS web interface. +
    PUT +
    Used by a client to upload configuration files. +
    +

    Ipp Operation Names

    +The following IPP operations are supported by +cupsd(8): +
    +
    CUPS-Accept-Jobs +
    Allows a printer to accept new jobs. +
    CUPS-Add-Modify-Class +
    Adds or modifies a printer class. +
    CUPS-Add-Modify-Printer +
    Adds or modifies a printer. +
    CUPS-Authenticate-Job +
    Releases a job that is held for authentication. +
    CUPS-Delete-Class +
    Deletes a printer class. +
    CUPS-Delete-Printer +
    Deletes a printer. +
    CUPS-Get-Classes +
    Gets a list of printer classes. +
    CUPS-Get-Default +
    Gets the server default printer or printer class. +
    CUPS-Get-Devices +
    Gets a list of devices that are currently available. +
    CUPS-Get-Document +
    Gets a document file for a job. +
    CUPS-Get-PPD +
    Gets a PPD file. +
    CUPS-Get-PPDs +
    Gets a list of installed PPD files. +
    CUPS-Get-Printers +
    Gets a list of printers. +
    CUPS-Move-Job +
    Moves a job. +
    CUPS-Reject-Jobs +
    Prevents a printer from accepting new jobs. +
    CUPS-Set-Default +
    Sets the server default printer or printer class. +
    Cancel-Job +
    Cancels a job. +
    Cancel-Jobs +
    Cancels one or more jobs. +
    Cancel-My-Jobs +
    Cancels one or more jobs creates by a user. +
    Cancel-Subscription +
    Cancels a subscription. +
    Close-Job +
    Closes a job that is waiting for more documents. +
    Create-Job +
    Creates a new job with no documents. +
    Create-Job-Subscriptions +
    Creates a subscription for job events. +
    Create-Printer-Subscriptions +
    Creates a subscription for printer events. +
    Get-Job-Attributes +
    Gets information about a job. +
    Get-Jobs +
    Gets a list of jobs. +
    Get-Notifications +
    Gets a list of event notifications for a subscription. +
    Get-Printer-Attributes +
    Gets information about a printer or printer class. +
    Get-Subscription-Attributes +
    Gets information about a subscription. +
    Get-Subscriptions +
    Gets a list of subscriptions. +
    Hold-Job +
    Holds a job from printing. +
    Hold-New-Jobs +
    Holds all new jobs from printing. +
    Pause-Printer +
    Stops processing of jobs by a printer or printer class. +
    Pause-Printer-After-Current-Job +
    Stops processing of jobs by a printer or printer class after the current job is finished. +
    Print-Job +
    Creates a new job with a single document. +
    Purge-Jobs +
    Cancels one or more jobs and deletes the job history. +
    Release-Held-New-Jobs +
    Allows previously held jobs to print. +
    Release-Job +
    Allows a job to print. +
    Renew-Subscription +
    Renews a subscription. +
    Restart-Job +
    Reprints a job, if possible. +
    Send-Document +
    Adds a document to a job. +
    Set-Job-Attributes +
    Changes job information. +
    Set-Printer-Attributes +
    Changes printer or printer class information. +
    Validate-Job +
    Validates options for a new job. +
    +

    Location Paths

    +The following paths are commonly used when configuring +cupsd(8): +
    +
    / +
    The path for all get operations (get-printers, get-jobs, etc.) +
    /admin +
    The path for all administration operations (add-printer, delete-printer, start-printer, etc.) +
    /admin/conf +
    The path for access to the CUPS configuration files (cupsd.conf, client.conf, etc.) +
    /admin/log +
    The path for access to the CUPS log files (access_log, error_log, page_log) +
    /classes +
    The path for all printer classes +
    /classes/name +
    The resource for the named printer class +
    /jobs +
    The path for all jobs (hold-job, release-job, etc.) +
    /jobs/id +
    The path for the specified job. +
    /printers +
    The path for all printers +
    /printers/name +
    The path for the named printer +
    /printers/name.png +
    The icon file path for the named printer +
    /printers/name.ppd +
    The PPD file path for the named printer
    +

    Directives Valid Within Location And Limit Sections

    +The following directives may be placed inside Location and Limit sections in the cupsd.conf file: +
    +
    Allow all +
    Allow none +
    Allow host.domain.com +
    Allow *.domain.com +
    Allow ipv4-address +
    Allow ipv4-address/netmask +
    Allow ipv4-address/mm +
    Allow [ipv6-address] +
    Allow [ipv6-address]/mm +
    Allow @IF(name) +
    Allow @LOCAL +
    Allows access from the named hosts, domains, addresses, or interfaces. +The Order directive controls whether Allow lines are evaluated before or after Deny lines. +
    AuthType None +
    AuthType Basic +
    AuthType Default +
    AuthType Negotiate +
    Specifies the type of authentication required. +The value "Default" corresponds to the DefaultAuthType value. +
    Deny all +
    Deny none +
    Deny host.domain.com +
    Deny *.domain.com +
    Deny ipv4-address +
    Deny ipv4-address/netmask +
    Deny ipv4-address/mm +
    Deny [ipv6-address] +
    Deny [ipv6-address]/mm +
    Deny @IF(name) +
    Deny @LOCAL +
    Denies access from the named hosts, domains, addresses, or interfaces. +The Order directive controls whether Deny lines are evaluated before or after Allow lines. +
    Encryption IfRequested +
    Encryption Never +
    Encryption Required +
    Specifies the level of encryption that is required for a particular location. +The default value is "IfRequested". +
    Order allow,deny +
    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. +
    Order deny,allow +
    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. +
    Require group group-name [ group-name ... ] +
    Specifies that an authenticated user must be a member of one of the named groups. +
    Require user {user-name|@group-name} ... +
    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 +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. +
    Require valid-user +
    Specifies that any authenticated user is acceptable. +
    Satisfy all +
    Specifies that all Allow, AuthType, Deny, Order, and Require conditions must be satisfied to allow access. +
    Satisfy any +
    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. +
    +

    Directives Valid Within Policy Sections

    +The following directives may be placed inside Policy sections in the cupsd.conf file: +
    +
    JobPrivateAccess all +
    JobPrivateAccess default +
    JobPrivateAccess {user|@group|@ACL|@OWNER|@SYSTEM} ... +
    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 +cups-files.conf(5) +file. +
    JobPrivateValues all +
    JobPrivateValues default +
    JobPrivateValues none +
    JobPrivateValues attribute-name [ ... attribute-name ] +
    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". +
    SubscriptionPrivateAccess all +
    SubscriptionPrivateAccess default +
    SubscriptionPrivateAccess {user|@group|@ACL|@OWNER|@SYSTEM} ... +
    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 +cups-files.conf(5) +file. +
    SubscriptionPrivateValues all +
    SubscriptionPrivateValues default +
    SubscriptionPrivateValues none +
    SubscriptionPrivateValues attribute-name [ ... attribute-name ] +
    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". +
    +

    Conforming To

    +The cupsd.conf file format is based on the Apache HTTP Server configuration file format. +

    Examples

    +Log everything with a maximum log file size of 32 megabytes: +
    +
    +    AccessLogLevel all
    +    LogLevel debug2
    +    MaxLogSize 32m
    +
    +
    +Require authentication for accesses from outside the 10. network: +
    +
    +    <Location />
    +    Order allow,deny
    +    Allow from 10./8
    +    AuthType Basic
    +    Require valid-user
    +    Satisfy any
    +    </Location>
    +

    See Also

    -classes.conf(5), cups-files.conf(5), cupsd(8), -mime.convs(5), mime.types(5), printers.conf(5), -subscriptions.conf(5), -
    -http://localhost:631/help +classes.conf(5), +cups-files.conf(5), +cupsd(8), +mime.convs(5), +mime.types(5), +printers.conf(5), +subscriptions.conf(5), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-cupsd.html b/doc/help/man-cupsd.html index b292cba20..8f90f447c 100644 --- a/doc/help/man-cupsd.html +++ b/doc/help/man-cupsd.html @@ -1,4 +1,4 @@ - + @@ -10,65 +10,108 @@

    Name

    cupsd - cups scheduler

    Synopsis

    -cupsd -[ -c -config-file -] [ -f ] [ -F ] [ -h ] [ -l ] [ -t ] +cupsd +[ +-c +config-file +] [ +-f +] [ +-F +] [ +-h +] [ +-l +] [ +-t +]

    Description

    -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 -/etc/cups/cupsd.conf will be used. +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 +/etc/cups/cupsd.conf +will be used.

    Options

    -
    -
    -c config-file -
    -
    -
    Uses the named configuration file. -
    -
    -f -
    -
    -
    Run cupsd in the foreground; the default is to run in the -background as a "daemon". -
    -
    -F -
    -
    -
    Run cupsd in the foreground but detach the process from the -controlling terminal and current directory. This is useful for -running cupsd from init(8). -
    -
    -h -
    -
    -
    Shows the program usage. -
    -
    -l -
    -
    -
    This option is passed to cupsd when it is run from -launchd(8). -
    -
    -t -
    -
    -
    Test the configuration file for syntax errors. -
    +
    +
    -c config-file +
    Uses the named configuration file. +
    -f +
    Run +cupsd +in the foreground; the default is to run in the background as a "daemon". +
    -F +
    Run +cupsd +in the foreground but detach the process from the controlling terminal and current directory. This is useful for running +cupsd +from +init(8). +
    -h +
    Shows the program usage. +
    -l +
    This option is passed to +cupsd +when it is run from +launchd(8) +or +systemd(8). +
    -t +
    Test the configuration file for syntax errors.
    -

    Compatibility

    -cupsd implements all of the required IPP/2.1 attributes and -operations. It also implements several CUPS-specific administration -operations. +

    Files

    +
    +/etc/cups/classes.conf
    +/etc/cups/cups-files.conf
    +/etc/cups/cupsd.conf
    +/usr/share/cups/mime/mime.convs
    +/usr/share/cups/mime/mime.types
    +/etc/cups/printers.conf
    +/etc/cups/subscriptions.conf
    +
    +

    Conforming To

    +cupsd +implements all of the required IPP/2.1 attributes and operations. It also implements several CUPS-specific administrative operations. +

    Examples

    +Run +cupsd +in the background with the default configuration file: +
    +
    +    cupsd
    +
    +
    +Test a configuration file called +test.conf: +
    +
    +    cupsd -t -c test.conf
    +
    +
    +Run +cupsd +in the foreground with a test configuration file called +test.conf: +
    +
    +    cupsd -f -c test.conf
    +
    +

    See Also

    -backend(7), classes.conf(5), cups-deviced(8), -cups-driverd(8), cups-lpd(8), cups-polld(8), -cupsd.conf(5), filter(7), launchd(8), -mime.convs(5), mime.types(5), printers.conf(5), -
    -http://localhost:631/help +backend(7), +classes.conf(5), +cups(1), +cups-lpd(8), +cupsd.conf(5), +cupsd-helper(8), +cupsd-logs(8), +filter(7), +launchd(8), +mime.convs(5), +mime.types(5), +printers.conf(5), +systemd(8), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-cupsenable.html b/doc/help/man-cupsenable.html index b0cf74bfe..dbd8ab6e2 100644 --- a/doc/help/man-cupsenable.html +++ b/doc/help/man-cupsenable.html @@ -1,4 +1,4 @@ - + @@ -10,83 +10,83 @@

    Name

    cupsdisable, cupsenable - stop/start printers and classes

    Synopsis

    -cupsdisable -[ -E ] [-U -username -] [ -c ] [ -h -server[:port] -] [ -r -reason -] [ --hold ] destination(s) +cupsdisable +[ +-E +] [ +-U +username +] [ +-c +] [ +-h server[:port] +] [ +-r +reason +] [ +--hold +] +destination(s)
    -cupsenable -[ -E ] [-U -username -] [ -c ] [ -h -server[:port] -] [ --release ] destination(s) +cupsenable +[ +-E +] [ +-U +username +] [ +-c +] [ +-h server[:port] +] [ +--release +] +destination(s)

    Description

    -cupsenable starts the named printers or classes. -

    cupsdisable stops the named printers or classes. The -following options may be used: -

    -
    -E -
    -
    -
    Forces encryption of the connection to the server. -
    -
    -U username -
    -
    -
    Uses the specified username when connecting to the server. -
    -
    -c -
    -
    -
    Cancels all jobs on the named destination. -
    -
    -h server[:port] -
    -
    -
    Uses the specified server and port. -
    -
    --hold -
    -
    -
    Holds remaining jobs on the named printer. Useful for allowing the current -job to complete before performing maintenance. -
    -
    -r "reason" -
    -
    -
    Sets the message associated with the stopped state. If no reason is specified -then the message is set to "Reason Unknown". -
    -
    --release -
    -
    -
    Releases pending jobs for printing. Use after running cupsdisable with -the --hold option to resume printing. -
    +cupsenable +starts the named printers or classes while +cupsdisable +stops the named printers or classes. +

    Options

    +The following options may be used: +
    +
    -E +
    Forces encryption of the connection to the server. +
    -U username +
    Uses the specified username when connecting to the server. +
    -c +
    Cancels all jobs on the named destination. +
    -h server[:port] +
    Uses the specified server and port. +
    --hold +
    Holds remaining jobs on the named printer. +Useful for allowing the current job to complete before performing maintenance. +
    -r "reason" +
    Sets the message associated with the stopped state. +If no reason is specified then the message is set to "Reason Unknown". +
    --release +
    Releases pending jobs for printing. +Use after running cupsdisable with the --hold option to resume printing.
    -

    Compatibility

    -Unlike the System V printing system, CUPS allows printer names to -contain any printable character except SPACE, TAB, "/", or "#". +

    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 not case-sensitive. -

    The System V versions of these commands are disable and -enable. They have been renamed to avoid conflicts with the -bash(1) build-in commands of the same name. -

    The CUPS versions of disable and enable 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 System V versions of these commands are disable and enable, respectively. +They have been renamed to avoid conflicts with the +bash(1) +build-in commands of the same names. +

    The CUPS versions of disable and enable 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.

    See Also

    -cupsaccept(8), cupsreject(8), cancel(1), lp(1), -lpadmin(8), lpstat(1), -
    -http://localhost:631/help +cupsaccept(8), +cupsreject(8), +cancel(1), +lp(1), +lpadmin(8), +lpstat(1), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-cupsfilter.html b/doc/help/man-cupsfilter.html index 5ff9c3404..4053c6e9c 100644 --- a/doc/help/man-cupsfilter.html +++ b/doc/help/man-cupsfilter.html @@ -1,4 +1,4 @@ - + @@ -10,111 +10,117 @@

    Name

    cupsfilter - convert a file to another format using cups filters

    Synopsis

    -cupsfilter -[ -D ] [ -U -user -] [ -c -config-file -] [ -d -printer -] [ -e ] [ -i -mime/type -] [ -j -job-id[,N] -] [ -m -mime/type -] [ -n -copies -] [ -o -name=value -] [ -p -filename.ppd -] [ -t -title -] [ -u ] -filename -

    Description

    -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, cupsfilter generates a PDF file. The converted -file is sent to the standard output. +cupsfilter +[ +--list-filters +] [ +-D +] [ +-U +user +] [ +-c +config-file +] [ +-d +printer +] [ +-e +] [ +-i +mime/type +] [ +-j +job-id[,N] +] [ +-m +mime/type +] [ +-n +copies +] [ +-o +name=value +] [ +-p +filename.ppd +] [ +-t +title +] [ +-u +] +filename +

    Description

    +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, +cupsfilter +generates a PDF file. The converted file is sent to the standard output.

    Options

    -
    -
    -D -
    -
    -
    Delete the input file after conversion. -
    -
    -U user -
    -
    -
    Specifies the username passed to the filters. The default is the name of the current user. -
    -
    -c config-file -
    -
    -
    Uses the named cups-files.conf configuration file. -
    -
    -d printer -
    -
    Uses information from the named printer. -
    -
    -e -
    -
    -
    Use every filter from the PPD file. -
    -
    -i mime/type -
    -
    -
    Specifies the source file type. The default file type is guessed using the -filename and contents of the file. -
    -
    -j job-id[,N] -
    -
    -
    Converts document N from the specified job. If N is omitted, document 1 is -converted. -
    -
    -m mime/type -
    -
    -
    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. -
    -
    -n copies -
    -
    -
    Specifies the number of copies to generate. -
    -
    -o name=value -
    -
    -
    Specifies options to pass to the CUPS filters. -
    -
    -p filename.ppd -
    -
    -
    Specifies the PPD file to use. -
    -
    -t title -
    -
    -
    Specifies the document title. -
    -
    -u -
    -
    -
    Delete the PPD file after conversion. -
    +
    +
    --list-filters +
    Do not actually run the filters, just print the filters used to stdout. +
    -D +
    Delete the input file after conversion. +
    -U user +
    Specifies the username passed to the filters. The default is the name of the current user. +
    -c config-file +
    Uses the named cups-files.conf configuration file. +
    -d printer +
    Uses information from the named printer. +
    -e +
    Use every filter from the PPD file. +
    -i mime/type +
    Specifies the source file type. The default file type is guessed using the filename and contents of the file. +
    -j job-id[,N] +
    Converts document N from the specified job. If N is omitted, document 1 is converted. +
    -m mime/type +
    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. +
    -n copies +
    Specifies the number of copies to generate. +
    -o name=value +
    Specifies options to pass to the CUPS filters. +
    -p filename.ppd +
    Specifies the PPD file to use. +
    -t title +
    Specifies the document title. +
    -u +
    Delete the PPD file after conversion.
    +

    Exit Status

    +cupsfilter +returns a non-zero exit status on any error. +

    Environment

    +All of the standard +cups(1) +environment variables affect the operation of +cupsfilter. +

    Files

    +
    +/etc/cups/cups-files.conf
    +/etc/cups/*.convs
    +/etc/cups/*.types
    +/usr/share/cups/mime/*.convs
    +/usr/share/cups/mime/*.types
    +

    Notes

    +Unlike when printing, filters run using the +cupsfilter +command use the current user and security session. This may result in different output or unexpected behavior. +

    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": +
    +
    +    cupsfilter -m application/pdf -d myprinter -j 42 >preview.pdf
    +

    See Also

    -cups-files.conf(5) -
    -http://localhost:631/help +cups(1), +cupsd.conf(5), +filter(7), +mime.convs(7), +mime.types(7), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2014 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-cupstestdsc.html b/doc/help/man-cupstestdsc.html index aa83e00dd..74f42efcf 100644 --- a/doc/help/man-cupstestdsc.html +++ b/doc/help/man-cupstestdsc.html @@ -1,4 +1,4 @@ - + @@ -8,37 +8,37 @@

    cupstestdsc(1)

    Name

    -cupstestdsc - test conformance of postscript files +cupstestdsc - test conformance of postscript files (deprecated)

    Synopsis

    -cupstestdsc -[ -h ] filename.ps [ ... -filenameN.ps -] +cupstestdsc +[ +-h +] +filename.ps +[ ... +filenameN.ps +]
    -cupstestdsc -[ -h ] - +cupstestdsc +[ +-h +] +-

    Description

    -cupstestdsc 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. -

    Limitations

    -cupstestdsc 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. +cupstestdsc 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. +

    Notes

    +This program is deprecated and will be removed in a future release of CUPS. +

    cupstestdsc 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.

    See Also

    -http://localhost:631/help -
    +CUPS Online Help (http://localhost:631/help), Adobe PostScript Language Document Structuring Conventions Specification, Version 3.0.

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-cupstestppd.html b/doc/help/man-cupstestppd.html index 21e23570f..549426da0 100644 --- a/doc/help/man-cupstestppd.html +++ b/doc/help/man-cupstestppd.html @@ -1,4 +1,4 @@ - + @@ -10,172 +10,118 @@

    Name

    cupstestppd - test conformance of ppd files

    Synopsis

    -cupstestppd -[ -I -category -] [ -R -rootdir -] [ -W -category -] [ -q ] [-r] [ -v[v] ] filename.ppd[.gz] [ ... filenameN.ppd[.gz] ] +cupstestppd +[ +-I +category +] [ +-R +rootdir +] [ +-W +category +] [ +-q +] [ +-r +] [ +-v[v] +] +filename.ppd[.gz] +[ ... +filename.ppd[.gz] +]
    -cupstestppd -[ -R -rootdir -] [ -W -category -] [ -q ] [-r] [ -v[v] ] - +cupstestppd +[ +-R +rootdir +] [ +-W +category +] [ +-q +] [ +-r +] [ +-v[v] +] +-

    Description

    -cupstestppd 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. -

    The first form of cupstestppd tests one or more PPD files -on the command-line. The second form tests the PPD file provided -on the standard input. +cupstestppd 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. +

    The first form of cupstestppd tests one or more PPD files on the command-line. +The second form tests the PPD file provided on the standard input.

    Options

    -cupstestppd supports the following options: -
    -
    -I filename -
    -
    -
    Ignores all PCFileName warnings. -
    -
    -I filters -
    -
    -
    Ignores all filter errors. -
    -
    -I profiles -
    -
    -
    Ignores all profile errors. -
    -
    -R rootdir -
    -
    -
    Specifies an alternate root directory for the filter, pre-filter, -and other support file checks. -
    -
    -W constraints -
    -
    -
    Report all UIConstraint errors as warnings. -
    -
    -W defaults -
    -
    -
    Except for size-related options, report all default option errors as warnings. -
    -
    -W filters -
    -
    -
    Report all filter errors as warnings. -
    -
    -W profiles -
    -
    -
    Report all profile errors as warnings. -
    -
    -W sizes -
    -
    -
    Report all media size errors as warnings. -
    -
    -W translations -
    -
    -
    Report all translation errors as warnings. -
    -
    -W all -
    -
    -
    Report all of the previous errors as warnings. -
    -
    -W none -
    -
    -
    Report all of the previous errors as errors. -
    -
    -q -
    -
    -
    Specifies that no information should be displayed. -
    -
    -r -
    -
    -
    Relaxes the PPD conformance requirements so that common -whitespace, control character, and formatting problems are not -treated as hard errors. -
    -
    -v -
    -
    -
    Specifies that detailed conformance testing results should be -displayed rather than the concise PASS/FAIL/ERROR status. -
    -
    -vv -
    -
    -
    Specifies that all information in the PPD file should be -displayed in addition to the detailed conformance testing -results. -
    +cupstestppd supports the following options: +
    +
    -I filename +
    Ignores all PCFileName warnings. +
    -I filters +
    Ignores all filter errors. +
    -I profiles +
    Ignores all profile errors. +
    -R rootdir +
    Specifies an alternate root directory for the filter, pre-filter, and other support file checks. +
    -W constraints +
    Report all UIConstraint errors as warnings. +
    -W defaults +
    Except for size-related options, report all default option errors as warnings. +
    -W filters +
    Report all filter errors as warnings. +
    -W profiles +
    Report all profile errors as warnings. +
    -W sizes +
    Report all media size errors as warnings. +
    -W translations +
    Report all translation errors as warnings. +
    -W all +
    Report all of the previous errors as warnings. +
    -W none +
    Report all of the previous errors as errors. +
    -q +
    Specifies that no information should be displayed. +
    -r +
    Relaxes the PPD conformance requirements so that common whitespace, control character, and formatting problems are not treated as hard errors. +
    -v +
    Specifies that detailed conformance testing results should be displayed rather than the concise PASS/FAIL/ERROR status. +
    -vv +
    Specifies that all information in the PPD file should be displayed in addition to the detailed conformance testing results.

    The -q, -v, and -vv options are mutually exclusive.

    Exit Status

    -cupstestppd returns zero on success and non-zero on error. The -error codes are as follows: -
    +cupstestppd returns zero on success and non-zero on error. +The error codes are as follows: +
    1 -
    -
    -
    Bad command-line arguments or missing PPD filename. -
    +
    Bad command-line arguments or missing PPD filename.
    2 -
    -
    -
    Unable to open or read PPD file. -
    +
    Unable to open or read PPD file.
    3 -
    -
    -
    The PPD file contains format errors that cannot be skipped. -
    +
    The PPD file contains format errors that cannot be skipped.
    4 -
    -
    -
    The PPD file does not conform to the Adobe PPD specification. -
    +
    The PPD file does not conform to the Adobe PPD specification.

    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:
    +
     
         find . -name \*.ppd \! -exec cupstestppd -q '{}' \; -print
     
     
    -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:
    +
     
         find . -name \*.ppd \! -exec cupstestppd -q '{}' \; \
             -exec cupstestppd -v '{}' \;
    -
     

    See Also

    -lpadmin(8), -
    -http://localhost:631/help -
    +lpadmin(8), +CUPS Online Help (http://localhost:631/help), Adobe PostScript Printer Description File Format Specification, Version 4.3.

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-filter.html b/doc/help/man-filter.html index b4ca60975..1ed2a9595 100644 --- a/doc/help/man-filter.html +++ b/doc/help/man-filter.html @@ -1,4 +1,4 @@ - + @@ -10,258 +10,180 @@

    Name

    filter - cups file conversion filter interface

    Synopsis

    -filter -job user title num-copies options [ -filename -] +filter +job +user +title +num-copies +options +[ +filename +] +
    +
    +#include <cups/cups.h>
    +
    +ssize_t cupsBackChannelRead(char *buffer, size_t bytes,
    +                            double timeout);
    +
    +cups_sc_status_t cupsSideChannelDoRequest(cups_sc_command_t command,
    +                                          char *data, int *datalen,
    +                                          double timeout);
    +
    +#include <cups/ppd.h>
    +
    +const char *cupsGetOption(const char *name, int num_options,
    +                 cups_option_t *options);
    +
    +int cupsMarkOptions(ppd_file_t *ppd, int num_options,
    +                    cups_option_t *options);
    +
    +int cupsParseOptions(const char *arg, int num_options,
    +                     cups_option_t **options);
    +
    +ppd_choice_t *ppdFindMarkedChoice(ppd_file_t *ppd, const char *keyword);
    +
    +void ppdMarkDefaults(ppd_file_t *ppd);
    +
    +ppd_file_t *ppdOpenFile(const char *filename);
    +

    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. -

    Filters 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 file format. All output must be sent to the -standard output. -

    The command name (argv[0]) is set to the name of the destination printer but is -also available in the PRINTER environment variable. -

    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 cupsfilter(8) program to use the -appropriate filters to do the conversions you need. -

    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 must -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. -

    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. +

    Filters 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 file format. +All output MUST be sent to the standard output. +Filters MUST NOT attempt to communicate directly with the printer, other processes, or other services. +

    The command name (argv[0]) is set to the name of the destination printer but is also available in the PRINTER environment variable. +

    Options

    +Options are passed in argv[5] and are encoded from the corresponding IPP attributes used when the job was submitted. Use the +cupsParseOptions() +function to load the options into a cups_option_t array and the +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. +

    Options passed on the command-line typically do not include the default choices the printer's PPD file. Use the +ppdMarkDefaults() +and +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 +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 Duplex PPD option: +

    +
    +    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");
    +
    +

    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.

    Log Messages

    -Messages sent to stderr are generally logged to -printer-state-message attribute and the current ErrorLog. +Messages sent to the standard error are generally stored in the printer's "printer-state-message" attribute and the current ErrorLog file. Each line begins with a standard prefix: -
    -
    ALERT: message -
    -
    -
    Sets the printer-state-message attribute and adds the specified -message to the current ErrorLog using the "alert" log level. -
    -
    ATTR: attribute=value [attribute=value] -
    -
    -
    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: +
    +
    ALERT: message +
    Sets the "printer-state-message" attribute and adds the specified message to the current ErrorLog using the "alert" log level. +
    ATTR: attribute=value [ ... attribute=value] +
    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". -
    -
    CRIT: message -
    -
    -
    Sets the printer-state-message attribute and adds the specified -message to the current ErrorLog using the "critical" log level. -
    -
    DEBUG: message -
    -
    -
    Sets the printer-state-message attribute and adds the specified -message to the current ErrorLog using the "debug" log level. -
    -
    DEBUG2: message -
    -
    -
    Sets the printer-state-message attribute and adds the specified -message to the current ErrorLog using the "debug2" log level. -
    -
    EMERG: message -
    -
    -
    Sets the printer-state-message attribute and adds the specified -message to the current ErrorLog using the "emergency" log level. -
    -
    ERROR: message -
    -
    -
    Sets the printer-state-message attribute and adds the specified -message to the current ErrorLog using the "error" log level. -
    -
    INFO: message -
    -
    -
    Sets the printer-state-message attribute. If the current LogLevel -is set to "debug2", also adds the specified message to the -current ErrorLog using the "info" log level. -
    -
    NOTICE: message -
    -
    -
    Sets the printer-state-message attribute and adds the specified -message to the current ErrorLog using the "notice" log level. -
    -
    PAGE: page-number #-copies -
    -
    -
    PAGE: total #-pages -
    -
    -
    Adds an entry to the current PageLog. The first form adds -#-copies to the job-media-sheets-completed attribute. The second -form sets the job-media-sheets-completed attribute to #-pages. -
    -
    PPD: Keyword=Value ... KeywordN=Value -
    -
    -
    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. -
    -
    STATE: printer-state-reason [printer-state-reason ...] -
    -
    -
    STATE: + printer-state-reason [printer-state-reason ...] -
    -
    -
    STATE: - printer-state-reason [printer-state-reason ...] -
    -
    -
    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. -
    -
    WARNING: message -
    -
    -
    Sets the printer-state-message attribute and adds the specified -message to the current ErrorLog using the "warning" log level. -
    +
    CRIT: message +
    Sets the "printer-state-message" attribute and adds the specified message to the current ErrorLog using the "critical" log level. +
    DEBUG: message +
    Adds the specified message to the current ErrorLog using the "debug" log level. +DEBUG messages are never stored in the "printer-state-message" attribute. +
    DEBUG2: message +

    +Adds the specified message to the current ErrorLog using the "debug2" log level. +DEBUG2 messages are never stored in the "printer-state-message" attribute. +
    EMERG: message +
    Sets the "printer-state-message" attribute and adds the specified message to the current ErrorLog using the "emergency" log level. +
    ERROR: message +
    Sets the "printer-state-message" attribute and adds the specified message to the current ErrorLog using the "error" log level. +
    INFO: message +
    Sets the "printer-state-message" attribute. If the current LogLevel is set to "debug2", also adds the specified message to the current ErrorLog using the "info" log level. +
    NOTICE: message +
    Sets the "printer-state-message" attribute and adds the specified message to the current ErrorLog using the "notice" log level. +
    PAGE: page-number #-copies +
    PAGE: total #-pages +
    Adds an entry to the current PageLog. The first form adds #-copies to the "job-media-sheets-completed" attribute. The second form sets the "job-media-sheets-completed" attribute to #-pages. +
    PPD: Keyword=Value [ ... KeywordN=Value ] +
    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. +
    STATE: printer-state-reason [ ... printer-state-reason ] +
    STATE: + printer-state-reason [ ... printer-state-reason ] +
    STATE: - printer-state-reason [ ... printer-state-reason ] +
    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. +
    WARNING: message +
    Sets the "printer-state-message" attribute and adds the specified message to the current ErrorLog using the "warning" log level.

    Environment Variables

    The following environment variables are defined by the CUPS server when executing the filter: -
    -
    CHARSET -
    -
    -
    The default text character set, typically utf-8. -
    -
    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. -
    -
    CONTENT_TYPE -
    -
    -
    The MIME type associated with the file (e.g. -application/postscript). -
    -
    CUPS_CACHEDIR -
    -
    -
    The directory for semi-persistent cache files can be found. -
    -
    CUPS_DATADIR -
    -
    -
    The directory where data files can be found. -
    -
    CUPS_FILETYPE -
    -
    -
    The type of file being printed: "job-sheet" for a banner page and "document" +
    +
    CHARSET +
    The default text character set, typically "utf-8". +
    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. +
    CONTENT_TYPE +
    The MIME media type associated with the submitted job file, for example "application/postscript". +
    CUPS_CACHEDIR +
    The directory where semi-persistent cache files can be found and stored. +
    CUPS_DATADIR +
    The directory where data files can be found. +
    CUPS_FILETYPE +
    The type of file being printed: "job-sheet" for a banner page and "document" for a regular print file. -
    -
    CUPS_MAX_MESSAGE -
    -
    -
    The maximum size of a message sent to stderr, including any leading prefix and -the trailing newline. -
    -
    CUPS_SERVERROOT -
    -
    -
    The root directory of the server. -
    -
    DEVICE_URI -
    -
    -
    The device-uri associated with the printer. -
    -
    FINAL_CONTENT_TYPE -
    -
    -
    The MIME type associated with the printer (e.g. -application/vnd.cups-postscript). -
    -
    LANG -
    -
    -
    The default language locale (typically C or en). -
    -
    PATH -
    -
    -
    The standard execution path for external programs that may be run by -the filter. -
    -
    PPD -
    -
    -
    The full pathname of the PostScript Printer Description (PPD) -file for this printer. -
    -
    PRINTER -
    -
    -
    The name of the printer. -
    -
    RIP_CACHE -
    -
    -
    The recommended amount of memory to use for Raster Image -Processors (RIPs). -
    -
    SOFTWARE -
    -
    -
    The name and version number of the server (typically CUPS/1.2). -
    -
    TZ -
    -
    -
    The timezone of the server. -
    -
    USER -
    -
    -
    The user executing the filter, typically "lp" or "root"; consult the -cupsd.conf(5) file for the current setting. -
    +
    CUPS_MAX_MESSAGE +
    The maximum size of a message sent to stderr, including any leading prefix and the trailing newline. +
    CUPS_SERVERROOT +
    The root directory of the server. +
    FINAL_CONTENT_TYPE +
    The MIME media type associated with the output destined for the printer, for example "application/vnd.cups-postscript". +
    LANG +
    The default language locale (typically C or en). +
    PATH +
    The standard execution path for external programs that may be run by the filter. +
    PPD +
    The full pathname of the PostScript Printer Description (PPD) file for this printer. +
    PRINTER +
    The name of the printer. +
    RIP_CACHE +
    The recommended amount of memory to use for Raster Image Processors (RIPs). +
    SOFTWARE +
    The name and version number of the server (typically CUPS/major.minor). +
    TZ +
    The timezone of the server. +
    USER +
    The user executing the filter, typically "lp" or "root"; consult the cups-files.conf file for the current setting.
    -

    Compatibility

    +

    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 -lpadmin(8) command using the -i option. +lpadmin(8) command using the -i option. +

    Notes

    +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 +cupsfilter(8) +program to use the appropriate filters to do the conversions you need.

    See Also

    -backend(7), cupsd(8), cupsfilter(8), +backend(7), +cups(1), +cups-files.conf(5), +cupsd(8), +cupsfilter(8),
    -http://localhost:631/help +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-ippfind.html b/doc/help/man-ippfind.html index e614ad4da..b946c987e 100644 --- a/doc/help/man-ippfind.html +++ b/doc/help/man-ippfind.html @@ -1,4 +1,4 @@ - + @@ -10,307 +10,195 @@

    Name

    ippfind - find internet printing protocol printers

    Synopsis

    -ippfind -[ -options -] regtype[,subtype][.domain.] ... [ -expression ... -] -ippfind -[ -options -] name[.regtype[.domain.]] ... [ -expression ... -] -ippfind ---help -ippfind ---version -

    Options

    -
    -
    --help -
    -
    Show program help -
    -
    --version -
    -
    Show program version -
    -
    -4 -
    -
    Use IPv4 when listing -
    -
    -6 -
    -
    Use IPv6 when listing -
    -
    -T seconds -
    -
    Specify find timeout in seconds. If 1 or less, ippfind stops as soon as it thinks it has found everything. The default is 1 second. -
    -
    -V version -
    -
    Specifies the IPP version when listing. Supported values are 1.1, 2.0, 2.1, and 2.2. - -
    -
    +ippfind +[ +options +] regtype[,subtype][.domain.] ... [ +expression + ... ] +
    +ippfind +[ +options +] name[.regtype[.domain.]] ... [ +expression + ... ] +
    +ippfind +--help +
    +ippfind +--version

    Description

    -ippfind 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: -
    -    ippfind --ls
    -
    -Similarly, to send a PostScript test page to every PostScript printer, run: -
    -    ippfind --txt-pdl application/postscript --exec ipptool \
    -        -f onepage-letter.ps '{}' print-job.test \;
    -
    - -

    Registration Types

    -ippfind supports the following registration types: -
    +ippfind 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. +

    Registration Types

    +ippfind supports the following registration types: +
    _http._tcp -
    -
    HyperText Transport Protocol (HTTP, RFC 2616) -
    +
    HyperText Transport Protocol (HTTP, RFC 2616)
    _https._tcp -
    -
    Secure HyperText Transport Protocol (HTTPS, RFC 2818) -
    +
    Secure HyperText Transport Protocol (HTTPS, RFC 2818)
    _ipp._tcp -
    -
    Internet Printing Protocol (IPP, RFC 2911) -
    +
    Internet Printing Protocol (IPP, RFC 2911)
    _ipps._tcp -
    -
    Secure Internet Printing Protocol (IPPS, draft) -
    +
    Secure Internet Printing Protocol (IPPS, draft)
    _printer._tcp -
    -
    Line Printer Daemon (LPD, RFC 1179) - -
    +
    Line Printer Daemon (LPD, RFC 1179)
    -

    Expressions

    -ippfind supports expressions much like the find(1) utility. However, unlike find, ippfind 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, ippfind adds --print to print the service URI of anything it finds. The following expressions are supported: -
    -
    -d regex -
    -
    -
    --domain regex -
    -
    True if the domain matches the given regular expression. -
    -
    --false -
    -
    Always false. -
    -
    -h regex -
    -
    -
    --host regex -
    -
    True is the hostname matches the given regular expression. -
    -
    -l -
    -
    -
    --ls -
    -
    Lists attributes returned by Get-Printer-Attributes for IPP printers and traditional find "-ls" output for HTTP URLs. The result is true if the URI is accessible, false otherwise. -
    -
    --local -
    -
    True if the service is local to this computer. -
    -
    -n regex -
    -
    -
    --name regex -
    -
    True if the service instance name matches the given regular expression. -
    -
    --path regex -
    -
    True if the URI resource path matches the given regular expression. -
    -
    -P number[-number] -
    -
    -
    --port number[-number] -
    -
    True if the port matches the given number or range. -
    -
    -p -
    -
    -
    --print -
    -
    Prints the URI if the result of previous expressions is true. The result is always true. -
    -
    -q -
    -
    -
    --quiet -
    -
    Quiet mode - just returns the exit codes below. -
    -
    -r -
    -
    -
    --remote -
    -
    True if the service is not local to this computer. -
    -
    -s -
    -
    -
    --print-name -
    -
    Prints the service instance name if the result of previous expressions is true. The result is always true. -
    -
    --true -
    -
    Always true. -
    -
    -t key -
    -
    -
    --txt key -
    -
    True if the TXT record contains the named key. -
    -
    --txt-key regex -
    -
    True if the TXT record contains the named key and matches the given regular -expression. -
    -
    -u regex -
    -
    -
    --uri regex -
    -
    True if the URI matches the given regular expression. -
    -
    -x utility [argument ...] ; -
    -
    -
    --exec utility [argument ...] ; -
    -
    Executes the specified program if the current result is true. "{foo}" arguments are replaced with the corresponding value - see SUBSTITUTIONS below. -
    +

    Expressions

    +ippfind supports expressions much like the +find(1) +utility. +However, unlike +find(1), +ippfind 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, ippfind adds --print to print the service URI of anything it finds. +The following expressions are supported: +
    +
    -d regex +
    --domain regex +
    True if the domain matches the given regular expression. +
    --false +
    Always false. +
    -h regex +
    --host regex +
    True is the hostname matches the given regular expression. +
    -l +
    --ls +
    Lists attributes returned by Get-Printer-Attributes for IPP printers and traditional find "-ls" output for HTTP URLs. +The result is true if the URI is accessible, false otherwise. +
    --local +
    True if the service is local to this computer. +
    -n regex +
    --name regex +
    True if the service instance name matches the given regular expression. +
    --path regex +
    True if the URI resource path matches the given regular expression. +
    -P number[-number] +
    --port number[-number] +
    True if the port matches the given number or range. +
    -p +
    --print +
    Prints the URI if the result of previous expressions is true. +The result is always true. +
    -q +
    --quiet +
    Quiet mode - just returns the exit codes below. +
    -r +
    --remote +
    True if the service is not local to this computer. +
    -s +
    --print-name +
    Prints the service instance name if the result of previous expressions is true. +The result is always true. +
    --true +
    Always true. +
    -t key +
    --txt key +
    True if the TXT record contains the named key. +
    --txt-key regex +
    True if the TXT record contains the named key and matches the given regular expression. +
    -u regex +
    --uri regex +
    True if the URI matches the given regular expression. +
    -x utility [ argument ... ] ; +
    --exec utility [ argument ... ] ; +
    Executes the specified program if the current result is true. +"{foo}" arguments are replaced with the corresponding value - see SUBSTITUTIONS below.

    Expressions may also contain modifiers: -

    -
    ( expression ) -
    -
    Group the result of expressions. -
    -
    ! expression -
    -
    -
    --not expression -
    -
    Unary NOT of the expression. -
    -
    expression expression -
    -
    -
    expression --and expression -
    -
    Logical AND of expressions. -
    -
    expression --or expression -
    -
    Logical OR of expressions. - -
    +
    +
    ( expression ) +
    Group the result of expressions. +
    ! expression +
    --not expression +
    Unary NOT of the expression. +
    expression expression +
    expression --and expression +
    Logical AND of expressions. +
    expression --or expression +
    Logical OR of expressions.
    -

    Substitutions

    -The substitutions for "{foo}" in -e and --exec are: -
    -
    {} -
    -
    URI -
    -
    {service_domain} -
    -
    Domain name, e.g., "example.com.", "local.", etc. -
    -
    {service_hostname} -
    -
    Fully-qualified domain name, e.g., "printer.example.com.", "printer.local.", etc. -
    -
    {service_name} -
    -
    Service instance name, e.g., "My Fine Printer". -
    -
    {service_port} -
    -
    Port number for server, typically 631 for IPP and 80 for HTTP. -
    -
    {service_regtype} -
    -
    DNS-SD registration type, e.g., "_ipp._tcp", "_http._tcp", etc. -
    -
    {service_scheme} -
    -
    URI scheme for DNS-SD registration type, e.g., "ipp", "http", etc. -
    -
    {service_uri} -
    -
    URI for service, e.g., "ipp://printer.local./ipp/print", "http://printer.local./", etc. -
    -
    {txt_key} -
    -
    Value of TXT record key (lowercase). - -
    +

    Substitutions

    +The substitutions for "{foo}" in -e and --exec are: +
    +
    {service_domain} +
    Domain name, e.g., "example.com.", "local.", etc. +
    {service_hostname} +
    Fully-qualified domain name, e.g., "printer.example.com.", "printer.local.", etc. +
    {service_name} +
    Service instance name, e.g., "My Fine Printer". +
    {service_port} +
    Port number for server, typically 631 for IPP and 80 for HTTP. +
    {service_regtype} +
    DNS-SD registration type, e.g., "_ipp._tcp", "_http._tcp", etc. +
    {service_scheme} +
    URI scheme for DNS-SD registration type, e.g., "ipp", "http", etc. +
    {} +
    {service_uri} +
    URI for service, e.g., "ipp://printer.local./ipp/print", "http://printer.local./", etc. +
    {txt_key} +
    Value of TXT record key (lowercase).
    -

    Environment Variables

    -When executing a program, ippfind sets the following environment variables for the matching service registration: -
    -
    IPPFIND_SERVICE_DOMAIN -
    -
    Domain name, e.g., "example.com.", "local.", etc. -
    -
    IPPFIND_SERVICE_HOSTNAME -
    -
    Fully-qualified domain name, e.g., "printer.example.com.", "printer.local.", etc. -
    -
    IPPFIND_SERVICE_NAME -
    -
    Service instance name, e.g., "My Fine Printer". -
    -
    IPPFIND_SERVICE_PORT -
    -
    Port number for server, typically 631 for IPP and 80 for HTTP. -
    -
    IPPFIND_SERVICE_REGTYPE -
    -
    DNS-SD registration type, e.g., "_ipp._tcp", "_http._tcp", etc. -
    -
    IPPFIND_SERVICE_SCHEME -
    -
    URI scheme for DNS-SD registration type, e.g., "ipp", "http", etc. -
    -
    IPPFIND_SERVICE_URI -
    -
    URI for service, e.g., "ipp://printer.local./ipp/print", "http://printer.local./", etc. -
    -
    IPPFIND_TXT_KEY -
    -
    Values of TXT record KEY (uppercase). - -
    +

    Options

    +ippfind supports the following options: +
    +
    --help +
    Show program help. +
    --version +
    Show program version. +
    -4 +
    Use IPv4 when listing. +
    -6 +
    Use IPv6 when listing. +
    -T seconds +
    Specify find timeout in seconds. +If 1 or less, ippfind stops as soon as it thinks it has found everything. +The default timeout is 1 second. +
    -V version +
    Specifies the IPP version when listing. +Supported values are "1.1", "2.0", "2.1", and "2.2". +
    +

    Exit Status

    +ippfind 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. +

    Environment

    +When executing a program, ippfind sets the following environment variables for the matching service registration: +
    +
    IPPFIND_SERVICE_DOMAIN +
    Domain name, e.g., "example.com.", "local.", etc. +
    IPPFIND_SERVICE_HOSTNAME +
    Fully-qualified domain name, e.g., "printer.example.com.", "printer.local.", etc. +
    IPPFIND_SERVICE_NAME +
    Service instance name, e.g., "My Fine Printer". +
    IPPFIND_SERVICE_PORT +
    Port number for server, typically 631 for IPP and 80 for HTTP. +
    IPPFIND_SERVICE_REGTYPE +
    DNS-SD registration type, e.g., "_ipp._tcp", "_http._tcp", etc. +
    IPPFIND_SERVICE_SCHEME +
    URI scheme for DNS-SD registration type, e.g., "ipp", "http", etc. +
    IPPFIND_SERVICE_URI +
    URI for service, e.g., "ipp://printer.local./ipp/print", "http://printer.local./", etc. +
    IPPFIND_TXT_fIKEYfR +
    Values of TXT record KEY (uppercase).
    -

    Exit Codes

    -ippfind 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. +

    Examples

    +To show the status of all registered IPP printers on your network, run: +
     
    -

    See Also

    -ipptool(1) + ippfind --ls +
    +Similarly, to send a PostScript test page to every PostScript printer, run: +
    +
    +    ippfind --txt-pdl application/postscript --exec ipptool
    +      -f onepage-letter.ps '{}' print-job.test \;
    +
    +

    See Also

    +ipptool(1)

    Copyright

    -Copyright 2013 by Apple Inc. +Copyright © 2013-2014 by Apple Inc. diff --git a/doc/help/man-ipptool.html b/doc/help/man-ipptool.html index 5d3b5bea2..fc6ac1b70 100644 --- a/doc/help/man-ipptool.html +++ b/doc/help/man-ipptool.html @@ -1,4 +1,4 @@ - + @@ -10,174 +10,200 @@

    Name

    ipptool - perform internet printing protocol requests

    Synopsis

    -ipptool -[ --help ] [ --stop-after-include-error ] [ --version ] -[ -4 ] [ -6 ] [ -C ] [ -E ] [ -I ] [ -L ] [ -S ] [ -T -seconds -] [ -V -version -] [ -X ] [ -c ] [ -d -name=value -] [ -f -filename -] [ -i -seconds -] [ -n -repeat-count -] [ -q ] [ -t ] [ -v ] -URI -filename -[ -... filenameN -] +ipptool +[ +--help +] [ +--stop-after-include-error +] [ +--version +] [ +-4 +] [ +-6 +] [ +-C +] [ +-E +] [ +-I +] [ +-L +] [ +-P +filename.plist +] [ +-S +] [ +-T +seconds +] [ +-V +version +] [ +-X +] [ +-c +] [ +-d +name=value +] [ +-f +filename +] [ +-i +seconds +] [ +-n +repeat-count +] [ +-q +] [ +-t +] [ +-v] +printer-uri +testfile +[ ... +testfile +]

    Description

    -ipptool 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 ipptoolfile(5). +ipptool +sends IPP requests to the specified +printer-uri +and tests and/or displays the results. Each named +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 +testfile +format is described in +ipptoolfile(5).

    Options

    -The following options are recognized by ipptool: -
    -
    --help -
    -
    Shows program help. -
    -
    --stop-after-include-error -
    -
    Tells ipptool to stop if an error occurs in an included file. Normally ipptool will continue with subsequent tests after the INCLUDE directive. -
    -
    --version -
    -
    Shows the version of ipptool being used. -
    -
    -4 -
    -
    Specifies that ipptool must connect to the printer or server using IPv4. -
    -
    -6 -
    -
    Specifies that ipptool must connect to the printer or server using IPv6. -
    -
    -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. -
    -
    -E -
    -
    Forces TLS encryption when connecting to the server using the HTTP "Upgrade" header. -
    -
    -I -
    -
    Specifies that ipptool will continue past errors. -
    -
    -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. -
    -
    -S -
    -
    Forces (dedicated) SSL encryption when connecting to the server. -
    -
    -T seconds -
    -
    Specifies a timeout for IPP requests in seconds. -
    -
    -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. -
    -
    -X -
    -
    Specifies that XML (Apple plist) output is desired instead of the plain text report. This option is incompatible with the -i (interval) and -n (repeat-count) options. -
    -
    -c -
    -
    Specifies that CSV (comma-separated values) output is desired instead of the plain text output. -
    -
    -d name=value -
    -
    Defines the named variable. -
    -
    -f filename -
    -
    Defines the default request filename for tests. -
    -
    -i seconds -
    -
    Specifies that the (last) file should be repeated at the specified interval. This option is incompatible with the -X (XML plist output) option. -
    -
    -l -
    -
    Specifies that plain text output is desired. -
    -
    -n repeat-count -
    -
    Specifies that the (last) file should be repeated the specified number of times. This option is incompatible with the -X (XML plist output) option. -
    -
    -t -
    -
    Specifies that CUPS test report output is desired instead of the plain text output. -
    -
    -v -
    -
    Specifies that all request and response attributes should be output in CUPS test mode (-t). This is the default for XML output. -
    +The following options are recognized by +ipptool: +
    +
    --help +
    Shows program help. +
    --stop-after-include-error +
    Tells +ipptool +to stop if an error occurs in an included file. Normally +ipptool +will continue with subsequent tests after the INCLUDE directive. +
    --version +
    Shows the version of +ipptool +being used. +
    -4 +
    Specifies that +ipptool +must connect to the printer or server using IPv4. +
    -6 +
    Specifies that +ipptool +must connect to the printer or server using IPv6. +
    -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. +
    -E +
    Forces TLS encryption when connecting to the server using the HTTP "Upgrade" header. +
    -I +
    Specifies that +ipptool +will continue past errors. +
    -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. +
    -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 -i (interval) and -n (repeat-count) options. +
    -S +
    Forces (dedicated) TLS encryption when connecting to the server. +
    -T seconds +
    Specifies a timeout for IPP requests in seconds. +
    -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. +
    -X +
    Specifies that XML (Apple plist) output is desired instead of the plain text report. This option is incompatible with the -i (interval) and -n (repeat-count) options. +
    -c +
    Specifies that CSV (comma-separated values) output is desired instead of the plain text output. +
    -d name=value +
    Defines the named variable. +
    -f filename +
    Defines the default request filename for tests. +
    -i seconds +
    Specifies that the (last) +testfile +should be repeated at the specified interval. This option is incompatible with the -X (XML plist output) option. +
    -l +
    Specifies that plain text output is desired. +
    -n repeat-count +
    Specifies that the (last) +testfile +should be repeated the specified number of times. This option is incompatible with the -X (XML plist output) option. +
    -t +
    Specifies that CUPS test report output is desired instead of the plain text output. +
    -v +
    Specifies that all request and response attributes should be output in CUPS test mode (-t). This is the default for XML output.
    -

    Exit Code

    -The ipptool program returns 0 if all tests were sucessful and 1 otherwise. -

    Compatibility

    -The ipptool program is unique to CUPS. +

    Exit Status

    +The +ipptool +program returns 0 if all tests were sucessful and 1 otherwise. +

    Files

    +The following standard files are available: +
    +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
    +
    +

    Conforming To

    +The +ipptool +program is unique to CUPS and conforms to the Internet Printing Protocol up to version 2.2.

    Examples

    Get a list of completed jobs for "myprinter": -
    +
    +
         ipptool ipp://localhost/printers/myprinter get-completed-jobs.test
     

    Send email notifications to "user@example.com" when "myprinter" changes: -

    -    ipptool -d recipient=mailto:user@example.com 
    +
    +
    +    ipptool -d recipient=mailto:user@example.com \
             ipp://localhost/printers/myprinter create-printer-subscription.test
     
    -

    Standard Files

    -The following standard files are available: -
    -    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
    -

    See Also

    -ipptoolfile(5), RFC 2911, -
    -http://localhost:631/help -
    -http://www.iana.org/assignments/ipp-registrations -
    -http://www.pwg.org/ipp +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),

    Copyright

    -Copyright 2007-2014 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-ipptoolfile.html b/doc/help/man-ipptoolfile.html index ce64e2550..3fffb25f1 100644 --- a/doc/help/man-ipptoolfile.html +++ b/doc/help/man-ipptoolfile.html @@ -1,4 +1,4 @@ - + @@ -9,15 +9,16 @@

    ipptoolfile(5)

    Name

    ipptoolfile - ipptool file format -

    Description

    -The 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: -
    +The
    +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:
    +
     
         # 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 ipptool(1) 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 ipptool(1) 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"
         }
     
    - -

    Top-level Directives

    -The following directives can be used outside of a test: -
    -
    { test } -
    -
    Defines a test. -
    -
    DEFINE variable-name value -
    -
    Defines the named variable to the given value. This is equivalent to specifying -"-d variable-name=value" on the ipptool command-line. -
    -
    DEFINE-DEFAULT variable-name value -
    -
    Defines the named variable to the given value if it does not already have a -value. -
    -
    FILE-ID "identifier" -
    -
    Specifies an identifier string for the current file. -
    -
    IGNORE-ERRORS yes -
    -
    -
    IGNORE-ERRORS no -
    -
    Specifies whether, by default, ipptool will ignore errors and continue with -subsequent tests. -
    -
    INCLUDE "filename" -
    -
    -
    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 ipptool +

    Top-level Directives

    +The following directives can be used outside of a test: +
    +
    { test } +
    Defines a test. +
    DEFINE variable-name value +
    Defines the named variable to the given value. This is equivalent to specifying -d variable-name=value on the +ipptool(8) +command-line. +
    DEFINE-DEFAULT variable-name value +
    Defines the named variable to the given value if it does not already have a value. +
    FILE-ID "identifier" +
    Specifies an identifier string for the current file. +
    IGNORE-ERRORS yes +
    IGNORE-ERRORS no +
    Specifies whether, by default, +ipptool(8) +will ignore errors and continue with subsequent tests. +
    INCLUDE "filename" +
    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 +ipptool(8) include directory. -
    -
    INCLUDE-IF-DEFINED name "filename" -
    -
    -
    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 ipptool include directory. -
    -
    INCLUDE-IF-NOT-DEFINED name "filename" -
    -
    -
    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 ipptool include directory. -
    -
    SKIP-IF-DEFINED variable-name -
    -
    -
    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. -
    -
    STOP-AFTER-INCLUDE-ERROR no -
    -
    -
    STOP-AFTER-INCLUDE-ERROR yes -
    -
    Specifies whether tests will be stopped after an error in an included file. -
    -
    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. -
    -
    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 -ipptool command-line. Support for chunked requests is required for -conformance with all versions of IPP. -
    -
    TRANSFER length -
    -
    Specifies that tests will, by default, use the HTTP/1.0 "Content-Length:" -header. This is equivalent to specifying "-l" on the ipptool command-line. -Support for content length requests is required for conformance with all -versions of IPP. -
    -
    VERSION 1.0 -
    -
    -
    VERSION 1.1 -
    -
    -
    VERSION 2.0 -
    -
    -
    VERSION 2.1 -
    -
    -
    VERSION 2.2 -
    -
    Specifies the default IPP version number to use for the tests that follow. - -
    +
    INCLUDE-IF-DEFINED name "filename" +
    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 +ipptool(8) +include directory. +
    INCLUDE-IF-NOT-DEFINED name "filename" +
    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 +ipptool(8) +include directory. +
    SKIP-IF-DEFINED variable-name +
    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. +
    STOP-AFTER-INCLUDE-ERROR no +
    STOP-AFTER-INCLUDE-ERROR yes +
    Specifies whether tests will be stopped after an error in an included file. +
    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. +
    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 +ipptool(8) +command-line. Support for chunked requests is required for conformance with all versions of IPP. +
    TRANSFER length +
    Specifies that tests will, by default, use the HTTP/1.0 "Content-Length:" header. This is equivalent to specifying -l on the +ipptool(8) +command-line. Support for content length requests is required for conformance with all versions of IPP. +
    VERSION 1.0 +
    VERSION 1.1 +
    VERSION 2.0 +
    VERSION 2.1 +
    VERSION 2.2 +
    Specifies the default IPP version number to use for the tests that follow.
    -

    Test Directives

    -The following directives are understood in a test: -
    -
    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. -
    -
    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. -
    -
    COMPRESSION deflate -
    -
    -
    COMPRESSION gzip -
    -
    -
    COMPRESSION none -
    -
    -
    Uses the specified compression on the document data following the attributes in -a Print-Job or Send-Document request. -
    -
    DELAY seconds -
    -
    Specifies a delay before this test will be run. -
    -
    DISPLAY attribute-name -
    -
    Specifies that value of the named attribute should be output as part of the +

    Test Directives

    +The following directives are understood within a test: +
    +
    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. +
    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, separated by commas. +
    COMPRESSION deflate +
    COMPRESSION gzip +
    COMPRESSION none +
    Uses the specified compression on the document data following the attributes in a Print-Job or Send-Document request. +
    DELAY seconds +
    Specifies a delay before this test will be run. +
    DISPLAY attribute-name +
    Specifies that value of the named attribute should be output as part of the test report. -
    -
    EXPECT attribute-name [ predicate(s) ] -
    -
    -
    EXPECT ?attribute-name predicate(s) -
    -
    -
    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. -
    -
    FILE filename -
    -
    Specifies a file to include at the end of the request. This is typically used -when sending a test print file. -
    -
    GROUP tag -
    -
    Specifies the group tag for subsequent attributes in the request. -
    -
    IGNORE-ERRORS yes -
    -
    -
    IGNORE-ERRORS no -
    -
    Specifies whether ipptool will ignore errors and continue with subsequent -tests. -
    -
    NAME "literal string" -
    -
    Specifies the human-readable name of the test. -
    -
    OPERATION operation-code -
    -
    Specifies the operation to be performed. -
    -
    REQUEST-ID number -
    -
    -
    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). -
    -
    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 ipptool program. -
    -
    SKIP-IF-DEFINED variable-name -
    -
    -
    SKIP-IF-NOT-DEFINED variable-name -
    -
    Specifies that the current test should be skipped when the variable is or is not -defined. -
    -
    SKIP-PREVIOUS-ERROR yes -
    -
    -
    SKIP-PREVIOUS-ERROR no -
    -
    Specifies whether ipptool will skip the current test if the previous test -resulted in an error/failure. -
    -
    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. -
    -
    TEST-ID "identifier" -
    -
    Specifies an identifier string for the current test. -
    -
    TRANSFER auto -
    -
    Specifies that this test will use "Transfer-Encoding: chunked" if it has an -attached file or "Content-Length:" otherwise. -
    -
    TRANSFER chunked -
    -
    Specifies that this test will use the HTTP/1.1 "Transfer-Encoding: chunked" -header. -
    -
    TRANSFER length -
    -
    Specifies that this test will use the HTTP/1.0 "Content-Length:" header. -
    -
    VERSION 1.0 -
    -
    -
    VERSION 1.1 -
    -
    -
    VERSION 2.0 -
    -
    -
    VERSION 2.1 -
    -
    -
    VERSION 2.2 -
    -
    Specifies the IPP version number to use for this test. - -
    +
    EXPECT attribute-name [ predicate(s) ] +
    EXPECT ?attribute-name predicate(s) +
    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. 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". +
    FILE filename +
    Specifies a file to include at the end of the request. This is typically used when sending a test print file. +
    GROUP tag +
    Specifies the group tag for subsequent attributes in the request. +
    IGNORE-ERRORS yes +
    IGNORE-ERRORS no +
    Specifies whether +ipptool(8) +will ignore errors and continue with subsequent tests. +
    NAME "literal string" +
    Specifies the human-readable name of the test. +
    OPERATION operation-code +
    Specifies the operation to be performed. +
    PAUSE "message" +
    Displays the provided message and waits for the user to press a key to continue. +
    REQUEST-ID number +
    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). +
    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 +ipptool(8) +program. +
    SKIP-IF-DEFINED variable-name +
    SKIP-IF-NOT-DEFINED variable-name +
    Specifies that the current test should be skipped when the variable is or is not defined. +
    SKIP-PREVIOUS-ERROR yes +
    SKIP-PREVIOUS-ERROR no +
    Specifies whether +ipptool(8) +will skip the current test if the previous test resulted in an error/failure. +
    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. +
    TEST-ID "identifier" +
    Specifies an identifier string for the current test. +
    TRANSFER auto +
    Specifies that this test will use "Transfer-Encoding: chunked" if it has an attached file or "Content-Length:" otherwise. +
    TRANSFER chunked +
    Specifies that this test will use the HTTP/1.1 "Transfer-Encoding: chunked" header. +
    TRANSFER length +
    Specifies that this test will use the HTTP/1.0 "Content-Length:" header. +
    VERSION 1.0 +
    VERSION 1.1 +
    VERSION 2.0 +
    VERSION 2.1 +
    VERSION 2.2 +
    Specifies the IPP version number to use for this test.
    -

    Expect Predicates

    -The following predicates are understood following the EXPECT test directive: -
    -
    COUNT number -
    -
    Requires the EXPECT attribute to have the specified number of values. -
    -
    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. -
    -
    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. -
    -
    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. -
    -
    IF-DEFINED variable-name -
    -
    Makes the EXPECT conditions apply only if the specified variable is defined. -
    -
    IF-NOT-DEFINED variable-name -
    -
    Makes the EXPECT conditions apply only if the specified variable is not -defined. -
    -
    IN-GROUP tag -
    -
    Requires the EXPECT attribute to be in the specified group tag. -
    -
    OF-TYPE tag[,tag,...] -
    -
    Requires the EXPECT attribute to use the specified value tag(s). -
    -
    REPEAT-LIMIT number -
    -
    -
    Specifies the maximum number of times to repeat. The default value is 1000. -
    -
    REPEAT-MATCH -
    -
    -
    REPEAT-NO-MATCH -
    -
    Specifies that the current test should be repeated when the EXPECT condition -matches or does not match. -
    -
    SAME-COUNT-AS attribute-name -
    -
    Requires the EXPECT attribute to have the same number of values as the specified -parallel attribute. -
    -
    WITH-ALL-HOSTNAMES "literal string" -
    -
    -
    WITH-ALL-HOSTNAMES "/regular expression/" -
    -
    Requires that all URI values contain a matching hostname. -
    -
    WITH-ALL-RESOURCES "literal string" -
    -
    -
    WITH-ALL-RESOURCES "/regular expression/" -
    -
    Requires that all URI values contain a matching resource (including leading /). -
    -
    WITH-ALL-SCHEMES "literal string" -
    -
    -
    WITH-ALL-SCHEMES "/regular expression/" -
    -
    Requires that all URI values contain a matching scheme. -
    -
    WITH-ALL-VALUES "literal string" -
    -
    Requires that all values of the EXPECT attribute match the literal string. Comparisons are case-sensitive. -
    -
    WITH-ALL-VALUES <number -
    -
    -
    WITH-ALL-VALUES =number -
    -
    -
    WITH-ALL-VALUES >number -
    -
    -
    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. -
    -
    WITH-ALL-VALUES "false" -
    -
    -
    WITH-ALL-VALUES "true" -
    -
    Requires that all values of the EXPECT attribute match the boolean value given. -
    -
    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. -
    -
    WITH-HOSTNAME "literal string" -
    -
    -
    WITH-HOSTNAME "/regular expression/" -
    -
    Requires that at least one URI value contains a matching hostname. -
    -
    WITH-RESOURCE "literal string" -
    -
    -
    WITH-RESOURCE "/regular expression/" -
    -
    Requires that at least one URI value contains a matching resource (including leading /). -
    -
    WITH-SCHEME "literal string" -
    -
    -
    WITH-SCHEME "/regular expression/" -
    -
    Requires that at least one URI value contains a matching scheme. -
    -
    WITH-VALUE "literal string" -
    -
    Requires that at least one value of the EXPECT attribute matches the literal string. Comparisons are case-sensitive. -
    -
    WITH-VALUE <number -
    -
    -
    WITH-VALUE =number -
    -
    -
    WITH-VALUE >number -
    -
    -
    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. -
    -
    WITH-VALUE "false" -
    -
    -
    WITH-VALUE "true" -
    -
    Requires that at least one value of the EXPECT attribute matches the boolean value given. -
    -
    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. - -
    +

    Expect Predicates

    +The following predicates are understood following the EXPECT test directive: +
    +
    COUNT number +
    Requires the EXPECT attribute to have the specified number of values. +
    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. +
    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. +
    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. +
    IF-DEFINED variable-name +
    Makes the EXPECT conditions apply only if the specified variable is defined. +
    IF-NOT-DEFINED variable-name +
    Makes the EXPECT conditions apply only if the specified variable is not defined. +
    IN-GROUP tag +
    Requires the EXPECT attribute to be in the specified group tag. +
    OF-TYPE tag[,tag,...] +
    Requires the EXPECT attribute to use one of the specified value tag(s). +
    REPEAT-LIMIT number +

    +Specifies the maximum number of times to repeat if the REPEAT-MATCH or REPEAT-NO-MATCH predicate is specified. The default value is 1000. +
    REPEAT-MATCH +
    REPEAT-NO-MATCH +
    Specifies that the current test should be repeated when the EXPECT condition matches or does not match. +
    SAME-COUNT-AS attribute-name +
    Requires the EXPECT attribute to have the same number of values as the specified parallel attribute. +
    WITH-ALL-HOSTNAMES "literal string" +
    WITH-ALL-HOSTNAMES "/regular expression/" +
    Requires that all URI values contain a matching hostname. +
    WITH-ALL-RESOURCES "literal string" +
    WITH-ALL-RESOURCES "/regular expression/" +
    Requires that all URI values contain a matching resource (including leading /). +
    WITH-ALL-SCHEMES "literal string" +
    WITH-ALL-SCHEMES "/regular expression/" +
    Requires that all URI values contain a matching scheme. +
    WITH-ALL-VALUES "literal string" +
    Requires that all values of the EXPECT attribute match the literal string. Comparisons are case-sensitive. +
    WITH-ALL-VALUES <number +
    WITH-ALL-VALUES =number +
    WITH-ALL-VALUES >number +
    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. +
    WITH-ALL-VALUES "false" +
    WITH-ALL-VALUES "true" +
    Requires that all values of the EXPECT attribute match the boolean value given. +
    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. +
    WITH-HOSTNAME "literal string" +
    WITH-HOSTNAME "/regular expression/" +
    Requires that at least one URI value contains a matching hostname. +
    WITH-RESOURCE "literal string" +
    WITH-RESOURCE "/regular expression/" +
    Requires that at least one URI value contains a matching resource (including leading /). +
    WITH-SCHEME "literal string" +
    WITH-SCHEME "/regular expression/" +
    Requires that at least one URI value contains a matching scheme. +
    WITH-VALUE "literal string" +
    Requires that at least one value of the EXPECT attribute matches the literal string. Comparisons are case-sensitive. +
    WITH-VALUE <number +
    WITH-VALUE =number +
    WITH-VALUE >number +
    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. +
    WITH-VALUE "false" +
    WITH-VALUE "true" +
    Requires that at least one value of the EXPECT attribute matches the boolean value given. +
    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.
    -

    Status Predicates

    -The following predicates are understood following the STATUS test directive: -
    -
    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. -
    -
    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. -
    -
    IF-DEFINED variable-name -
    -
    Makes the STATUS apply only if the specified variable is defined. -
    -
    IF-NOT-DEFINED variable-name -
    -
    Makes the STATUS apply only if the specified variable is not defined. -
    -
    REPEAT-LIMIT number -
    -
    -
    Specifies the maximum number of times to repeat. The default value is 1000. -
    -
    REPEAT-MATCH -
    -
    -
    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. - -
    +

    Status Predicates

    +The following predicates are understood following the STATUS test directive: +
    +
    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. +
    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. +
    IF-DEFINED variable-name +
    Makes the STATUS apply only if the specified variable is defined. +
    IF-NOT-DEFINED variable-name +
    Makes the STATUS apply only if the specified variable is not defined. +
    REPEAT-LIMIT number +

    +Specifies the maximum number of times to repeat. The default value is 1000. +
    REPEAT-MATCH +
    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.
    -

    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: -
    +

    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 +ipptool(8): +
    +
         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
     
    +

    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 +ipptool(8): +
     
    -

    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: -
    +    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
     
    +

    Tags

    +Value and group tags correspond to the names from RFC 2911 and other IPP extension specifications. Here are the group tags: +
     
    -

    Tags

    -Value and group tags correspond to the names from RFC 2911 and other IPP -extension specifications. Here are the group tags: -
    +    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
     

    Here are the value tags: -

    +
    +
         admin-define
         boolean
         charset
    @@ -669,81 +443,59 @@ extension specifications. Here are the group tags:
         uri
         uriScheme
     
    - -

    Variables

    -The ipptool 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: -
    -
    $$ -
    -
    Inserts a single "$" character. -
    -
    $ENV[name] -
    -
    Inserts the value of the named environment variable, or an empty string if the -environment variable is not defined. -
    -
    $filename -
    -
    Inserts the filename provided to ipptool with the "-f" option. -
    -
    $hostname -
    -
    Inserts the hostname from the URI provided to ipptool. -
    -
    $job-id -
    -
    Inserts the last job-id value returned in a test response or 0 if no job-id has -been seen. -
    -
    $job-uri -
    -
    Inserts the last job-uri value returned in a test response or an empty string if -no job-uri has been seen. -
    -
    $scheme -
    -
    Inserts the scheme from the URI provided to ipptool. -
    -
    $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. -
    -
    $port -
    -
    Inserts the port number from the URI provided to ipptool. -
    -
    $resource -
    -
    Inserts the resource path from the URI provided to ipptool. -
    -
    $uri -
    -
    Inserts the URI provided to ipptool. -
    -
    $user -
    -
    Inserts the current user's login name. -
    -
    $username -
    -
    Inserts the username from the URI provided to ipptool, if any. - -
    +

    Variables

    +The +ipptool(8) +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: +
    +
    $$ +
    Inserts a single "$" character. +
    $ENV[name] +
    Inserts the value of the named environment variable, or an empty string if the environment variable is not defined. +
    $filename +
    Inserts the filename provided to +ipptool(8) +with the -f option. +
    $filetype +
    Inserts the MIME media type for the filename provided to +ipptool(8) +with the -f option. +
    $hostname +
    Inserts the hostname from the URI provided to +ipptool(8). +
    $job-id +
    Inserts the last "job-id" attribute value returned in a test response or 0 if no "job-id" attribute has been seen. +
    $job-uri +
    Inserts the last "job-uri" attribute value returned in a test response or an empty string if no "job-uri" attribute has been seen. +
    $notify-subscription-id +
    Inserts the last "notify-subscription-id" attribute value returned in a test response or 0 if no "notify-subscription-id" attribute has been seen. +
    $port +
    Inserts the port number from the URI provided to +ipptool(8). +
    $resource +
    Inserts the resource path from the URI provided to +ipptool(8). +
    $scheme +
    Inserts the scheme from the URI provided to +ipptool(8). +
    $uri +
    Inserts the URI provided to +ipptool(8). +
    $uriuser +
    Inserts the username from the URI provided to +ipptool(8), +if any. +
    $user +
    Inserts the current user's login name.

    See Also

    -ipptool(1), RFC 2911, -
    -http://localhost:631/help -
    -http://www.iana.org/assignments/ipp-registrations -
    -http://www.pwg.org/ipp +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)

    Copyright

    -Copyright 2007-2014 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-lp.html b/doc/help/man-lp.html index aceb569e3..0af3e0b53 100644 --- a/doc/help/man-lp.html +++ b/doc/help/man-lp.html @@ -1,4 +1,4 @@ - + @@ -10,275 +10,184 @@

    Name

    lp - print files

    Synopsis

    -lp -[ -E ] [ -U -username -] [ -c ] [ -d -destination[/instance] -] [ -h -hostname[:port] -] [ -m ] [ -n -num-copies -] [ -o -option[=value] -] [ -q -priority -] [ -s ] [ -t -title -] [ -H -handling -] [ -P -page-list -] [ -- ] [ -file(s) -] +lp +[ +-E +] [ +-U +username +] [ +-c +] [ +-d destination[/instance] +] [ +-h hostname[:port] +] [ +-m +] [ +-n +num-copies +] [ +-o option[=value] +] [ +-q +priority +] [ +-s +] [ +-t +title +] [ +-H +handling +] [ +-P +page-list +] [ +-- +] [ +file(s) +]
    -lp -[ -E ] [ -U -username -] [ -c ] [ -h -hostname[:port] -] [ -i -job-id -] [ -n -num-copies -] [ -o -option[=value] -] [ -q -priority -] [ -t -title -] [ -H -handling -] [ -P -page-list -] +lp +[ +-E +] [ +-U +username +] [ +-c +] [ +-h hostname[:port] +] [ +-i +job-id +] [ +-n +num-copies +] [ +-o option[=value] +] [ +-q +priority +] [ +-t +title +] [ +-H +handling +] [ +-P +page-list +]

    Description

    -lp submits files for printing or alters a pending job. Use -a filename of "-" to force printing from the standard input. -

    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 lpoptions(1) command is used, -followed by the default set using the lpadmin(8) command. +lp submits files for printing or alters a pending job. +Use a filename of "-" to force printing from the standard input. +

    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 +lpoptions(1) +command is used, followed by the default set using the +lpadmin(8) +command.

    Options

    The following options are recognized by lp: -
    -
    -- -
    -
    -
    Marks the end of options; use this to print a file whose name -begins with a dash (-). -
    -
    -E -
    -
    -
    Forces encryption when connecting to the server. -
    -
    -U username -
    -
    -
    Specifies the username to use when connecting to the server. -
    -
    -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. -
    -
    -d destination -
    -
    -
    Prints files to the named printer. -
    -
    -h hostname[:port] -
    -
    -
    Chooses an alternate server. -
    -
    -i job-id -
    -
    -
    Specifies an existing job to modify. -
    -
    -m -
    -
    -
    Sends an email when the job is completed. -
    -
    -n copies -
    -
    -
    Sets the number of copies to print from 1 to 100. -
    -
    -o "name=value [name=value ...]" -
    -
    -
    Sets one or more job options. -
    -
    -q priority -
    -
    -
    Sets the job priority from 1 (lowest) to 100 (highest). The -default priority is 50. -
    -
    -s -
    -
    -
    Do not report the resulting job IDs (silent mode.) -
    -
    -t "name" -
    -
    -
    Sets the job name. -
    -
    -H hh:mm -
    -
    -
    -H hold -
    -
    -
    -H immediate -
    -
    -
    -H restart -
    -
    -
    -H resume -
    -
    -
    Specifies when the job should be printed. A value of immediate will print -the file immediately, a value of hold 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 resume with the -i option to resume a held job. -Use a value of restart with the -i option to restart -a completed job. -
    -
    -P page-list -
    -
    -
    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. -
    +
    +
    -- +
    Marks the end of options; use this to print a file whose name begins with a dash (-). +
    -E +
    Forces encryption when connecting to the server. +
    -U username +
    Specifies the username to use when connecting to the server. +
    -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. +
    -d destination +
    Prints files to the named printer. +
    -h hostname[:port] +
    Chooses an alternate server. +
    -i job-id +
    Specifies an existing job to modify. +
    -m +
    Sends an email when the job is completed. +
    -n copies +
    Sets the number of copies to print. +
    -o "name=value [ ... name=value ]" +
    Sets one or more job options. +
    -q priority +
    Sets the job priority from 1 (lowest) to 100 (highest). +The default priority is 50. +
    -s +
    Do not report the resulting job IDs (silent mode.) +
    -t "name" +
    Sets the job name. +
    -H hh:mm +
    -H hold +
    -H immediate +
    -H restart +
    -H resume +
    Specifies when the job should be printed. +A value of immediate will print the file immediately, a value of hold 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 resume with the -i option to resume a held job. +Use a value of restart with the -i option to restart a completed job. +
    -P page-list +
    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.
    -

    Common Job Options

    +

    Common Job Options

    Aside from the printer-specific options reported by the -lpoptions(1) command, the following generic options are -available: -
    -
    -o media=size -
    -
    -
    Sets the page size to size. Most printers support at least -the size names "a4", "letter", and "legal". -
    -
    -o landscape -
    -
    -
    -o orientation-requested=4 -
    -
    -
    Prints the job in landscape (rotated 90 degrees). -
    -
    -o sides=one-sided -
    -
    -
    -o sides=two-sided-long-edge -
    -
    -
    -o sides=two-sided-short-edge -
    -
    -
    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. -
    -
    -o fit-to-page -
    -
    -
    Scales the print file to fit on the page. -
    -
    -o number-up=2 -
    -
    -
    -o number-up=4 -
    -
    -
    -o number-up=6 -
    -
    -
    -o number-up=9 -
    -
    -
    -o number-up=16 -
    -
    -
    Prints multiple document pages on each output page. -
    -
    -o cpi=N -
    -
    -
    Sets the number of characters per inch to use when printing a -text file. The default is 10. -
    -
    -o lpi=N -
    -
    -
    Sets the number of lines per inch to use when printing a text -file. The default is 6. -
    -
    -o page-bottom=N -
    -
    -
    -o page-left=N -
    -
    -
    -o page-right=N -
    -
    -
    -o page-top=N -
    -
    -
    Sets the page margins when printing text files. The values are in -points - there are 72 points to the inch. -
    +lpoptions(1) +command, the following generic options are available: +
    +
    -o media=size +
    Sets the page size to size. Most printers support at least the size names "a4", "letter", and "legal". +
    -o orientation-requested=4 +
    Prints the job in landscape (rotated 90 degrees). +
    -o sides=one-sided +
    Prints on one side of the paper. +
    -o sides=two-sided-long-edge +
    Prints on both sides of the paper for portrait output. +
    -o sides=two-sided-short-edge +
    Prints on both sides of the paper for landscape output. +
    -o fit-to-page +
    Scales the print file to fit on the page. +
    -o number-up={2|4|6|9|16} +
    Prints 2, 4, 6, 9, or 16 document (input) pages on each output page.
    +

    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 not case-sensitive. +

    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).

    Examples

    +Print two copies of a document to the default printer: +
    +
    +    lp -n 2 filename
    +
    +
    Print a double-sided legal document to a printer called "foo": -
    +
    +
         lp -d foo -o media=legal -o sides=two-sided-long-edge filename
    +
     
    -

    Print an image across 4 pages: -

    -    lp -d bar -o scaling=200 filename
    -
    -

    Print a text file with 12 characters per inch, 8 lines per inch, and -a 1 inch left margin: -

    -    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":
    +
    +
    +    lp -d foo -o number-up=2 filename
     
    -

    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 not case-sensitive. -

    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).

    See Also

    -cancel(1), lpadmin(8), lpmove(8), lpoptions(1), -lpstat(1), -
    -http://localhost:631/help +cancel(1), +lpadmin(8), +lpoptions(1), +lpq(1), +lpr(1), +lprm(1), +lpstat(1), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-lpadmin.html b/doc/help/man-lpadmin.html index 236e71568..1f8502991 100644 --- a/doc/help/man-lpadmin.html +++ b/doc/help/man-lpadmin.html @@ -1,4 +1,4 @@ - + @@ -10,239 +10,165 @@

    Name

    lpadmin - configure cups printers and classes

    Synopsis

    -lpadmin -[ -E ] [-U -username -] [ -h -server[:port] -] -d -destination -
    -lpadmin -[ -E ] [-U -username -] [ -h -server[:port] -] -p -destination -[ -R -name-default -] -option(s) -
    -lpadmin -[ -E ] [-U -username -] [ -h -server[:port] -] -x -destination -

    Description

    -lpadmin configures printer and class queues provided by -CUPS. It can also be used to set the server default printer or -class. -

    When specified before the -d, -p, or -x -options, the -E option forces encryption when connecting to -the server. -

    The first form of the command (-d) sets the default printer -or class to destination. Subsequent print jobs submitted -via the lp(1) or lpr(1) commands will use this -destination unless the user specifies otherwise with the -lpoptions(1) command. -

    The second form of the command (-p) configures the named -printer or class. The additional options are described below. -

    The third form of the command (-x) deletes the printer or -class destination. Any jobs that are pending for the -destination will be removed and any job that is currently printed -will be aborted. -

    Configuration Options

    -The following options are recognized when configuring a printer -queue: -
    -
    -c class -
    -
    -
    Adds the named printer to class. If class does -not exist it is created automatically. -
    -
    -i interface -
    -
    -
    Sets a System V style interface script for the printer. This -option cannot be specified with the -P option (PPD file) -and is intended for providing support for legacy printer drivers. -
    -
    -m model -
    -
    -
    Sets a standard System V interface script or PPD file for the printer from the -model directory or using one of the driver interfaces. Use the -m -option with the lpinfo(8) command to get a list of supported models. -
    -
    -o cupsIPPSupplies=true -
    -
    -
    -o cupsIPPSupplies=false -
    -
    -
    Specifies whether IPP supply level values should be reported. -
    -
    -o cupsSNMPSupplies=true -
    -
    -
    -o cupsSNMPSupplies=false -
    -
    -
    Specifies whether SNMP supply level (RFC 3805) values should be reported. -
    -
    -o job-k-limit=value -
    -
    -
    Sets the kilobyte limit for per-user quotas. The value is an -integer number of kilobytes; one kilobyte is 1024 bytes. -
    -
    -o job-page-limit=value -
    -
    -
    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. -
    -
    -o job-quota-period=value -
    -
    -
    Sets the accounting period for per-user quotas. The value is an -integer number of seconds; 86,400 seconds are in one day. -
    -
    -o job-sheets-default=banner -
    -
    -
    -o job-sheets-default=banner,banner -
    -
    -
    Sets the default banner page(s) to use for print jobs. -
    -
    -o name=value -
    -
    -
    Sets a PPD option for the printer. PPD options can be listed using the -l -option with the lpoptions(1) command. -
    -
    -o name-default=value -
    -
    -
    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. -
    -
    -o port-monitor=name -
    -
    -
    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. -
    -
    -o printer-error-policy=name -
    -
    -
    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 +lpadmin +[ +-E +] [ +-U +username +] [ +-h server[:port] +] +-d +destination +
    +lpadmin +[ +-E +] [ +-U +username +] [ +-h server[:port] +] +-p +destination +[ +-R +name-default +] +option(s) +
    +lpadmin +[ +-E +] [ +-U +username +] [ +-h server[:port] +] +-x +destination +

    Description

    +lpadmin configures printer and class queues provided by CUPS. +It can also be used to set the server default printer or class. +

    When specified before the -d, -p, or -x options, the -E option forces encryption when connecting to the server. +

    The first form of the command (-d) sets the default printer or class to destination. +Subsequent print jobs submitted via the +lp(1) +or +lpr(1) +commands will use this destination unless the user specifies otherwise with the +lpoptions(1) +command. +

    The second form of the command (-p) configures the named printer or class. The additional options are described below. +

    The third form of the command (-x) deletes the printer or class destination. +Any jobs that are pending for the destination will be removed and any job that is currently printed will be aborted. +

    Options

    +The following options are recognized when configuring a printer queue: +
    +
    -c class +
    Adds the named printer to class. +If class does not exist it is created automatically. +
    -i interface +
    Sets a System V style interface script for the printer. +This option cannot be specified with the -P option (PPD file) and is intended for providing support for legacy printer drivers. +
    -m model +
    Sets a standard System V interface script or PPD file for the printer from the model directory or using one of the driver interfaces. +Use the -m option with the +lpinfo(8) +command to get a list of supported models. +
    -o cupsIPPSupplies=true +
    -o cupsIPPSupplies=false +
    Specifies whether IPP supply level values should be reported. +
    -o cupsSNMPSupplies=true +
    -o cupsSNMPSupplies=false +
    Specifies whether SNMP supply level (RFC 3805) values should be reported. +
    -o job-k-limit=value +
    Sets the kilobyte limit for per-user quotas. +The value is an integer number of kilobytes; one kilobyte is 1024 bytes. +
    -o job-page-limit=value +
    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. +
    -o job-quota-period=value +
    Sets the accounting period for per-user quotas. +The value is an integer number of seconds; 86,400 seconds are in one day. +
    -o job-sheets-default=banner +
    -o job-sheets-default=banner,banner +
    Sets the default banner page(s) to use for print jobs. +
    -o name=value +
    Sets a PPD option for the printer. +PPD options can be listed using the -l option with the +lpoptions(1) +command. +
    -o name-default=value +
    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. +
    -o port-monitor=name +
    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. +
    -o printer-error-policy=name +
    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. -
    -
    -o printer-is-shared=true/false -
    -
    -
    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 -cupsd.conf, while unshared/unpublished destinations are not -announced. The default value is "true". -
    -
    -o printer-op-policy=name -
    -
    -
    Sets the IPP operation policy associated with the destination. The -name must be defined in the cupsd.conf in a Policy section. +
    -o printer-is-shared=true +
    -o printer-is-shared=false +
    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 cupsd.conf, while unshared/unpublished destinations are not announced. +The default value is "true". +
    -o printer-op-policy=name +
    Sets the IPP operation policy associated with the destination. +The name must be defined in the cupsd.conf in a Policy section. The default operation policy is "default". -
    -
    -R name-default -
    -
    -
    Deletes the named option from printer. -
    -
    -r class -
    -
    -
    Removes the named printer from class. If the -resulting class becomes empty it is removed. -
    -
    -u allow:user,user,@group -
    -
    -
    -u deny:user,user,@group -
    -
    -
    -u allow:all -
    -
    -
    -u deny:none -
    -
    -
    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. -
    -
    -v "device-uri" -
    -
    -
    Sets the device-uri attribute of the printer queue. Use the -v -option with the lpinfo(8) command to get a list of supported device URIs -and schemes. -
    -
    -D "info" -
    -
    -
    Provides a textual description of the destination. -
    -
    -E -
    -
    -
    Enables the destination and accepts jobs; this is the same as running the -cupsaccept(8) and cupsenable(8) programs on the destination. -
    -
    -L "location" -
    -
    -
    Provides a textual location of the destination. -
    -
    -P ppd-file -
    -
    -
    Specifies a PostScript Printer Description file to use with the -printer. If specified, this option overrides the -i option -(interface script). -
    +
    -R name-default +
    Deletes the named option from printer. +
    -r class +
    Removes the named printer from class. +If the resulting class becomes empty it is removed. +
    -u allow:{user|@group}{,user|,@group}* +
    -u deny:{user|@group}{,user|,@group}* +
    -u allow:all +
    -u deny:none +
    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. +
    -v "device-uri" +
    Sets the device-uri attribute of the printer queue. +Use the -v option with the +lpinfo(8) +command to get a list of supported device URIs and schemes. +
    -D "info" +
    Provides a textual description of the destination. +
    -E +
    Enables the destination and accepts jobs; this is the same as running the +cupsaccept(8) +and +cupsenable(8) +programs on the destination. +
    -L "location" +
    Provides a textual location of the destination. +
    -P ppd-file +
    Specifies a PostScript Printer Description file to use with the printer. +If specified, this option overrides the -i option (interface script).
    -

    Compatibility

    -Unlike the System V printing system, CUPS allows printer names to -contain any printable character except SPACE, TAB, "/", or "#". +

    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 not case-sensitive. -Finally, the CUPS version of lpadmin 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. -

    Limitations

    -The CUPS version of lpadmin does not support all of the -System V or Solaris printing system configuration options. +Finally, the CUPS version of lpadmin 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. +

    Notes

    +The CUPS version of lpadmin does not support all of the System V or Solaris printing system configuration options.

    See Also

    -cupsaccept(8), cupsenable(8), lpinfo(8), -lpoptions(1), -
    -http://localhost:631/help +cupsaccept(8), +cupsenable(8), +lpinfo(8), +lpoptions(1), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-lpc.html b/doc/help/man-lpc.html index c322c9566..c79e47061 100644 --- a/doc/help/man-lpc.html +++ b/doc/help/man-lpc.html @@ -1,4 +1,4 @@ - + @@ -10,62 +10,45 @@

    Name

    lpc - line printer control program

    Synopsis

    -lpc -[ -command -[ -parameter(s) -] ] +lpc +[ +command +[ +parameter(s) +] ]

    Description

    -lpc provides limited control over printer and class queues -provided by CUPS. It can also be used to query the state of -queues. -

    If no command is specified on the command-line, lpc will -display a prompt and accept commands from the standard input. -

    Commands

    -The lpc program accepts a subset of commands accepted by -the Berkeley lpc program of the same name: -
    -
    exit -
    -
    -
    Exits the command interpreter. -
    -
    help [command] -
    -
    -
    ? [command] -
    -
    -
    Displays a short help message. -
    -
    quit -
    -
    -
    Exits the command interpreter. -
    -
    status [queue] -
    -
    -
    Displays the status of one or more printer or class queues. -
    +lpc provides limited control over printer and class queues provided by CUPS. It can also be used to query the state of queues. +

    If no command is specified on the command-line, lpc displays a prompt and accepts commands from the standard input. +

    Commands

    +The lpc program accepts a subset of commands accepted by the Berkeley lpc program of the same name: +
    +
    exit +
    Exits the command interpreter. +
    help [command] +
    ? [command] +
    Displays a short help message. +
    quit +
    Exits the command interpreter. +
    status [queue] +
    Displays the status of one or more printer or class queues.
    -

    Limitations

    -Since lpc is geared towards the Berkeley printing system, -it is impossible to use lpc to configure printer or class -queues provided by CUPS. To configure printer or class queues -you must use the lpadmin(8) command or another -CUPS-compatible client with that functionality. -

    Compatibility

    -The CUPS version of lpc does not implement all of the -standard Berkeley or LPRng commands. +

    Notes

    +Since lpc is geared towards the Berkeley printing system, it is impossible to use lpc to configure printer or class queues provided by CUPS. +To configure printer or class queues you must use the +lpadmin(8) +command or another CUPS-compatible client with that functionality.

    See Also

    -cancel(1), cupsaccept(8), cupsenable(8), -lp(1), lpr(1), lprm(1), lpstat(1), -
    -http://localhost:631/help +cancel(1), +cupsaccept(8), +cupsenable(8), +lp(1), +lpadmin(8), +lpr(1), +lprm(1), +lpstat(1), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-lpinfo.html b/doc/help/man-lpinfo.html index cfa4eb633..876e1f693 100644 --- a/doc/help/man-lpinfo.html +++ b/doc/help/man-lpinfo.html @@ -1,4 +1,4 @@ - + @@ -10,113 +10,114 @@

    Name

    lpinfo - show available devices or drivers

    Synopsis

    -lpinfo -[ -E ] [ -U -username -] [ -h -server[:port] -] [ -l ] [ --device-id -device-id-string -] [ --exclude-schemes -scheme-list -] [ --include-schemes -scheme-list -] [ --language -locale -] [ --make-and-model -name -] [ --product -name -] -m +lpinfo +[ +-E +] [ +-U +username +] [ +-h server[:port] +] [ +-l +] [ +--device-id +device-id-string +] [ +--exclude-schemes +scheme-list +] [ +--include-schemes +scheme-list +] [ +--language +locale +] [ +--make-and-model +name +] [ +--product +name +] +-m
    -lpinfo -[ -E ] [ -U -username -] [ -h -server[:port] -] [ -l ] [ --exclude-schemes -scheme-list -] [ --include-schemes -scheme-list -] [ --timeout -seconds -] -v +lpinfo +[ +-E +] [ +-U +username +] [ +-h server[:port] +] [ +-l +] [ +--exclude-schemes +scheme-list +] [ +--include-schemes +scheme-list +] [ +--timeout +seconds +] +-v

    Description

    -lpinfo lists the available devices or drivers known to the -CUPS server. The first form (-m) lists the available -drivers, while the second form (-v) lists the available -devices. +lpinfo lists the available devices or drivers known to the CUPS server. +The first form (-m) lists the available drivers, while the second form (-v) lists the available devices.

    Options

    -lpinfo accepts the following options: -
    -
    -E -
    -
    -
    Forces encryption when connecting to the server. -
    -
    -U username -
    -
    -
    Sets the username to use when connecting to the server. -
    -
    -h server[:port] -
    -
    -
    Selects an alternate server. -
    -
    -l -
    -
    -
    Shows a "long" listing of devices or drivers. -
    -
    --device-id device-id-string -
    -
    -
    Specifies the IEEE-1284 device ID to match when listing drivers with the --m option. -
    -
    --exclude-schemes scheme-list -
    -
    -
    Specifies a comma-separated list of device or PPD schemes that should be -excluded from the results. Static PPD files use the "file" scheme. -
    -
    --include-schemes scheme-list -
    -
    -
    Specifies a comma-separated list of device or PPD schemes that should be -included in the results. Static PPD files use the "file" scheme. -
    -
    --language locale -
    -
    -
    Specifies the language to match when listing drivers with the -m option. -
    -
    --make-and-model name -
    -
    -
    Specifies the make and model to match when listing drivers with the -m -option. -
    -
    --product name -
    -
    -
    Specifies the product to match when listing drivers with the -m option. -
    -
    --timeout seconds -
    -
    -
    Specifies the timeout when listing devices with the -v option. -
    +lpinfo accepts the following options: +
    +
    -E +
    Forces encryption when connecting to the server. +
    -U username +
    Sets the username to use when connecting to the server. +
    -h server[:port] +
    Selects an alternate server. +
    -l +
    Shows a "long" listing of devices or drivers. +
    --device-id device-id-string +
    Specifies the IEEE-1284 device ID to match when listing drivers with the -m option. +
    --exclude-schemes scheme-list +
    Specifies a comma-delimited list of device or PPD schemes that should be excluded from the results. +Static PPD files use the "file" scheme. +
    --include-schemes scheme-list +
    Specifies a comma-delimited list of device or PPD schemes that should be included in the results. +Static PPD files use the "file" scheme. +
    --language locale +
    Specifies the language to match when listing drivers with the -m option. +
    --make-and-model name +
    Specifies the make and model to match when listing drivers with the -m option. +
    --product name +
    Specifies the product to match when listing drivers with the -m option. +
    --timeout seconds +
    Specifies the timeout when listing devices with the -v option.
    -

    Compatibility

    +

    Conforming To

    The lpinfo command is unique to CUPS. +

    Examples

    +List all devices: +
    +
    +    lpinfo -v
    +
    +
    +List all drivers: +
    +
    +    lpinfo -m
    +
    +
    +List drivers matching "HP LaserJet": +
    +
    +    lpinfo --make-and-model "HP LaserJet" -m
    +

    See Also

    -lpadmin(8), -
    -http://localhost:631/help +lpadmin(8), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-lpmove.html b/doc/help/man-lpmove.html index 968424b29..526c084e0 100644 --- a/doc/help/man-lpmove.html +++ b/doc/help/man-lpmove.html @@ -1,4 +1,4 @@ - + @@ -10,56 +10,66 @@

    Name

    lpmove - move a job or all jobs to a new destination

    Synopsis

    -lpmove -[ -E ] [ -h -server[:port] -] [ -U -username -] -job destination -
    -lpmove -[ -E ] [ -h -server[:port] -] [ -U -username -] -source destination -

    Description

    -lpmove moves the specified job or all jobs from -source to destination. job can be the job ID -number or the old destination and job ID: +lpmove +[ +-E +] [ +-h server[:port] +] [ +-U +username +] +job +destination
    -
    -
    -     lpmove 123 newprinter
    -     lpmove oldprinter-123 newprinter
    -
    +lpmove +[ +-E +] [ +-h server[:port] +] [ +-U +username +] +source +destination +

    Description

    +lpmove moves the specified job or all jobs from source to destination. job can be the job ID number or the old destination and job ID.

    Options

    -The lpmove command supports the following options: -
    -
    -E -
    -
    -
    Forces encryption when connecting to the server. -
    -
    -U username -
    -
    -
    Specifies an alternate username. -
    -
    -h server[:port] -
    -
    -
    Specifies an alternate server. -
    +The lpmove command supports the following options: +
    +
    -E +
    Forces encryption when connecting to the server. +
    -U username +
    Specifies an alternate username. +
    -h server[:port] +
    Specifies an alternate server.
    +

    Examples

    +Move job 123 from "oldprinter" to "newprinter": +
    +
    +    lpmove 123 newprinter
    +
    +            or
    +
    +    lpmove oldprinter-123 newprinter
    +
    +
    +Move all jobs from "oldprinter" to "newprinter": +
    +
    +    lpmove oldprinter newprinter
    +

    See Also

    -cancel(1), lp(1), +cancel(1), +lp(1), +lpr(1), +lprm(1),
    -http://localhost:631/help +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-lpoptions.html b/doc/help/man-lpoptions.html index c5c2fa7ca..2e171296b 100644 --- a/doc/help/man-lpoptions.html +++ b/doc/help/man-lpoptions.html @@ -1,4 +1,4 @@ - + @@ -10,129 +10,116 @@

    Name

    lpoptions - display or set printer options and defaults

    Synopsis

    -lpoptions -[ -E ] [ -U -username -] [ -h -server[:port] -] -d -destination[/instance] -[ -o -option[=value] -] ... [ -o -option[=value] -] +lpoptions +[ +-E +] [ +-U +username +] [ +-h server[:port] +] +-d destination[/instance] +[ +-l +]
    -lpoptions -[ -E ] [ -U -username -] [ -h -server[:port] -] [ -p -destination[/instance] -] -l +lpoptions +[ +-E +] [ +-U +username +] [ +-h server[:port] +] [ +-p destination[/instance] +] +-o option[=value] ...
    -lpoptions -[ -E ] [ -U -username -] [ -h -server[:port] -] [ -o -option[=value] -] ... [ -o -option[=value] -] [ -p -destination[/instance] -] -r -option -
    -lpoptions -[ -E ] [ -U -username -] [ -h -server[:port] -] -x -destination[/instance] -

    Description

    -lpoptions displays or sets printer options and defaults. -lpoptions shows the default printer options when run with no -arguments. Other options include: -
    -
    -E -
    -
    -
    Enables encryption when communicating with the CUPS server. -
    -
    -U username -
    -
    -
    Uses an alternate username. -
    -
    -d destination[/instance] -
    -
    -
    Sets the user default printer to destination. If instance -is supplied then that particular instance is used. This option -overrides the system default printer for the current user. -
    -
    -h server[:port] -
    -
    -
    Uses an alternate server. -
    -
    -l -
    -
    -
    Lists the printer specific options and their current settings. -
    -
    -o option[=value] -
    -
    -
    Specifies a new option for the named destination. -
    -
    -p destination[/instance] -
    -
    -
    Sets the destination and instance, if specified, for any options -that follow. If the named instance does not exist then it is -created. -
    -
    -r option -
    -
    -
    Removes the specified option for the named destination. -
    -
    -x destination[/instance] -
    -
    -
    Removes the options for the named destination and instance, if -specified. If the named instance does not exist then this does -nothing. -
    +lpoptions +[ +-E +] [ +-U +username +] [ +-h server[:port] +] [ +-p destination[/instance] +] +-r +option +
    +lpoptions +[ +-E +] [ +-U +username +] [ +-h server[:port] +] +-x destination[/instance] +

    Description

    +lpoptions displays or sets printer options and defaults. +If no printer is specified using the -p option, the default printer is used as described in +lp(1). +

    If no -l, -o, or -r options are specified, the current options are reported on the standard output. +

    Options set with the lpoptions command are used by the +lp(1) +and +lpr(1) +commands when submitting jobs. +

    When run by the root user, lpoptions gets and sets default options and instances for all users in the /etc/cups/lpoptions file. +Otherwise, the per-user defaults are managed in the ~/.cups/lpoptions file. +

    Options

    +lpoptions supports the following options: +
    +
    -E +
    Enables encryption when communicating with the CUPS server. +
    -U username +
    Uses an alternate username. +
    -d destination[/instance] +
    Sets the user default printer to destination. +If instance is supplied then that particular instance is used. +This option overrides the system default printer for the current user. +
    -h server[:port] +
    Uses an alternate server. +
    -l +
    Lists the printer specific options and their current settings. +
    -o option[=value] +
    Specifies a new option for the named destination. +
    -p destination[/instance] +
    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 +lpadmin(8) +program. +
    -r option +
    Removes the specified option from the named destination. +
    -x destination[/instance] +
    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 +lpadmin(8) +command.
    -

    If no options are specified using the -o option, then the -current options for the named printer are reported on the -standard output. -

    Options set with the lpoptions command are used by the -lp(1) and lpr(1) commands when submitting jobs. -

    Root Account Options

    -When run by the root user, lpoptions gets and sets default -options and instances for all users in the -/etc/cups/lpoptions file. -

    Compatibility

    -The lpoptions command is unique to CUPS.

    Files

    -~/.cups/lpoptions - user defaults and instances created by non-root -users. +~/.cups/lpoptions - user defaults and instances created by non-root users.
    -/etc/cups/lpoptions - system-wide defaults and instances -created by the root user. +/etc/cups/lpoptions - system-wide defaults and instances created by the root user. +

    Conforming To

    +The lpoptions command is unique to CUPS.

    See Also

    -cancel(1), lp(1), lpadmin(8), lpr(1), -
    -http://localhost:631/help +cancel(1), +lp(1), +lpadmin(8), +lpr(1), +lprm(1), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-lppasswd.html b/doc/help/man-lppasswd.html deleted file mode 100644 index a24bd206b..000000000 --- a/doc/help/man-lppasswd.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - lppasswd(1) - - -

    lppasswd(1)

    -

    Name

    -lppasswd - add, change, or delete digest passwords. -

    Synopsis

    -lppasswd -[ -username -] -
    -lppasswd --a [ -g -groupname -] -username -
    -lppasswd --x -username -

    Description

    -lppasswd adds, changes, or deletes passwords in the CUPS -digest password file, passwd.md5. When run by a normal -user, lppasswd will prompt for the old and new passwords. -When run by the super-user, lppasswd can add new accounts -(-a username), change existing accounts (username), -or delete accounts (-x username) in the digest password -file. Digest usernames do not have to match local UNIX usernames. -

    Options

    -lppasswd supports the following options: -
    -
    -g groupname -
    -
    -
    Specifies a group other than the default system group. -
    -
    -

    Security Issues

    -By default, the lppasswd program is not installed to allow ordinary -users to change their passwords. To enable this, the lppasswd command -must be made setuid to root with the command: -
    -
    -chmod u+s lppasswd
    -
    -

    While every attempt has been made to make lppasswd 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. -

    See Also

    -lp(1), lpr(1), -
    -http://localhost:631/help -

    Copyright

    -Copyright 2007-2013 by Apple Inc. - - - diff --git a/doc/help/man-lpq.html b/doc/help/man-lpq.html index 0d1c5b1cb..8eecc512d 100644 --- a/doc/help/man-lpq.html +++ b/doc/help/man-lpq.html @@ -1,4 +1,4 @@ - + @@ -10,64 +10,52 @@

    Name

    lpq - show printer queue status

    Synopsis

    -lpq -[ -E ] [ -U -username -] [ -h -server[:port] -] [ -P -destination[/instance] -] [ -a ] [ -l ] [ -+interval -] +lpq +[ +-E +] [ +-U +username +] [ +-h server[:port] +] [ +-P destination[/instance] +] [ +-a +] [ +-l +] [ ++interval +]

    Description

    -lpq 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. -

    The +interval option allows you to continuously report the -jobs in the queue until the queue is empty; the list of jobs is -shown once every interval seconds. +lpq 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. +

    The +interval option allows you to continuously report the jobs in the queue until the queue is empty; the list of jobs is shown once every interval seconds.

    Options

    -lpq supports the following options: -
    -
    -E -
    -
    -
    Forces encryption when connecting to the server. -
    -
    -P destination[/instance] -
    -
    -
    Specifies an alternate printer or class name. -
    -
    -U username -
    -
    -
    Specifies an alternate username. -
    -
    -a -
    -
    -
    Reports jobs on all printers. -
    -
    -h server[:port] -
    -
    -
    Specifies an alternate server. -
    -
    -l -
    -
    -
    Requests a more verbose (long) reporting format. -
    +lpq supports the following options: +
    +
    -E +
    Forces encryption when connecting to the server. +
    -P destination[/instance] +
    Specifies an alternate printer or class name. +
    -U username +
    Specifies an alternate username. +
    -a +
    Reports jobs on all printers. +
    -h server[:port] +
    Specifies an alternate server. +
    -l +
    Requests a more verbose (long) reporting format.

    See Also

    -cancel(1), lp(1), lpr(1), lprm(1), -lpstat(1), -
    -http://localhost:631/help +cancel(1), +lp(1), +lpr(1), +lprm(1), +lpstat(1), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-lpr.html b/doc/help/man-lpr.html index f6051df79..b4aaaf57e 100644 --- a/doc/help/man-lpr.html +++ b/doc/help/man-lpr.html @@ -1,4 +1,4 @@ - + @@ -10,124 +10,121 @@

    Name

    lpr - print files

    Synopsis

    -lpr -[ -E ] [ -H -server[:port] -] [ -U -username -] [ -P -destination[/instance] -] [ -# -num-copies -[ -h ] [ -l ] [ -m ] [ -o -option[=value] -] [ -p] [ -q ] [ -r ] [ -C/J/T -title -] [ -file(s) -] +lpr +[ +-E +] [ +-H server[:port] +] [ +-U +username +] [ +-P destination[/instance] +] [ +-# +num-copies +[ +-h +] [ +-l +] [ +-m +] [ +-o option[=value] +] [ +-p +] [ +-q +] [ +-r +] [ +-C +title +] [ +-J +title +] [ +-T +title +] [ +file(s) +]

    Description

    -lpr 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, -lpr reads the print file from the standard input. -

    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 lpoptions(1) command is used, -followed by the default set using the lpadmin(8) command. +lpr 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, lpr reads the print file from the standard input. +

    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 +lpoptions(1) +command is used, followed by the default set using the +lpadmin(8) +command.

    Options

    The following options are recognized by lpr: -
    -
    -E -
    -
    -
    Forces encryption when connecting to the server. -
    -
    -H server[:port] -
    -
    -
    Specifies an alternate server. -
    -
    -C "name" -
    -
    -
    -J "name" -
    -
    -
    -T "name" -
    -
    -
    Sets the job name. -
    -
    -P destination[/instance] -
    -
    -
    Prints files to the named printer. -
    -
    -U username -
    -
    -
    Specifies an alternate username. -
    -
    -# copies -
    -
    -
    Sets the number of copies to print from 1 to 100. -
    -
    -h -
    -
    -
    Disables banner printing. This option is equivalent to "-o -job-sheets=none". -
    -
    -l -
    -
    -
    Specifies that the print file is already formatted for the -destination and should be sent without filtering. This option is -equivalent to "-o raw". -
    -
    -m -
    -
    -
    Send an email on job completion. -
    -
    -o option[=value] -
    -
    -
    Sets a job option. -
    -
    -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 "-o prettyprint" and is only useful when -printing text files. -
    -
    -q -
    -
    -
    Hold job for printing. -
    -
    -r -
    -
    -
    Specifies that the named print files should be deleted after -printing them. -
    +
    +
    -E +
    Forces encryption when connecting to the server. +
    -H server[:port] +
    Specifies an alternate server. +
    -C "name" +
    -J "name" +
    -T "name" +
    Sets the job name/title. +
    -P destination[/instance] +
    Prints files to the named printer. +
    -U username +
    Specifies an alternate username. +
    -# copies +
    Sets the number of copies to print. +
    -h +
    Disables banner printing. This option is equivalent to -o job-sheets=none. +
    -l +
    Specifies that the print file is already formatted for the destination and should be sent without filtering. +This option is equivalent to -o raw. +
    -m +
    Send an email on job completion. +
    -o option[=value] +
    Sets a job option. +
    -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 -o prettyprint and is only useful when printing text files. +
    -q +
    Hold job for printing. +
    -r +
    Specifies that the named print files should be deleted after submitting them.
    -

    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. +

    Notes

    +The -c, -d, -f, -g, -i, -n, -t, -v, and -w options are not supported by CUPS and produce a warning message if used. +

    Examples

    +Print two copies of a document to the default printer: +
    +
    +    lpr -# 2 filename
    +
    +
    +Print a double-sided legal document to a printer called "foo": +
    +
    +    lpr -P foo -o media=legal -o sides=two-sided-long-edge filename
    +
    +
    +Print a presentation document 2-up to a printer called "foo": +
    +
    +    lpr -P foo -o number-up=2 filename
    +

    See Also

    -cancel(1), lp(1), lpadmin(8), lpoptions(1), -lpq(1), lprm(1), lpstat(1), -
    -http://localhost:631/help +cancel(1), +lp(1), +lpadmin(8), +lpoptions(1), +lpq(1), +lprm(1), +lpstat(1), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-lprm.html b/doc/help/man-lprm.html index 23ce4b01d..09b177c75 100644 --- a/doc/help/man-lprm.html +++ b/doc/help/man-lprm.html @@ -1,4 +1,4 @@ - + @@ -10,56 +10,73 @@

    Name

    lprm - cancel print jobs

    Synopsis

    -lprm -[ -E ] [ -U -username -] [ -h -server[:port] -] [ -P -destination[/instance] -] [ - ] [ -job ID(s) -] +lprm +[ +-E +] [ +-U +username +] [ +-h +server[:port] +] [ +-P +destination[/instance] +] [ +- +] [ +job-id(s) +]

    Description

    -lprm 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 - option to cancel -all jobs. +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 - option to cancel all jobs.

    Options

    -The lprm command supports the following options: -
    -
    -E -
    -
    -
    Forces encryption when connecting to the server. -
    -
    -P destination[/instance] -
    -
    -
    Specifies the destination printer or class. -
    -
    -U username -
    -
    -
    Specifies an alternate username. -
    -
    -h server[:port] -
    -
    -
    Specifies an alternate server. -
    +The +lprm +command supports the following options: +
    +
    -E +
    Forces encryption when connecting to the server. +
    -P destination[/instance] +
    Specifies the destination printer or class. +
    -U username +
    Specifies an alternate username. +
    -h server[:port] +
    Specifies an alternate server.
    -

    Compatibility

    -The CUPS version of lprm is compatible with the standard -Berkeley lprm command. +

    Conforming To

    +The CUPS version of +lprm +is compatible with the standard Berkeley command of the same name. +

    Examples

    +Cancel the current job on the default printer: +
    +
    +    lprm
    +
    +
    +Cancel job 1234: +
    +
    +    lprm 1234
    +
    +
    +Cancel all jobs: +
    +
    +    lprm -
    +

    See Also

    -cancel(1), lp(1), lpq(1), lpr(1), -lpstat(1), -
    -http://localhost:631/help +cancel(1), +lp(1), +lpq(1), +lpr(1), +lpstat(1), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-lpstat.html b/doc/help/man-lpstat.html index 9d4ed7a6a..b394b0c1d 100644 --- a/doc/help/man-lpstat.html +++ b/doc/help/man-lpstat.html @@ -1,4 +1,4 @@ - + @@ -10,145 +10,120 @@

    Name

    lpstat - print cups status information

    Synopsis

    -lpstat -[ -E ] [ -H ] [ -U -username -] [ -h -hostname[:port] -] [ -l ] [ -W -which-jobs -] [ -a [ -destination(s) -] ] [ -c [ -class(es) -] ] [ -d ] [ -o [ -destination(s) -] ] [ -p [ -printer(s) -] ] [ -r ] [ -R ] [ -s ] [ -t ] [ -u [ -user(s) -] ] [ -v [ -printer(s) -] ] +lpstat +[ +-E +] [ +-H +] [ +-U +username +] [ +-h hostname[:port] +] [ +-l +] [ +-W +which-jobs +] [ +-a +[ +destination(s) +] ] [ +-c +[ +class(es) +] ] [ +-d +] [ +-o +[ +destination(s) +] ] [ +-p +[ +printer(s) +] ] [ +-r +] [ +-R +] [ +-s +] [ +-t +] [ +-u +[ +user(s) +] ] [ +-v +[ +printer(s) +] ]

    Description

    -lpstat displays status information about the current -classes, jobs, and printers. When run with no arguments, -lpstat will list jobs queued by the current user. +lpstat displays status information about the current classes, jobs, and printers. +When run with no arguments, lpstat will list active jobs queued by the current user.

    Options

    -The lpstat command supports the following options: -
    -
    -E -
    -
    -
    Forces encryption when connecting to the server. -
    -
    -H -
    -
    -
    Shows the server hostname and port. -
    -
    -R -
    -
    -
    Shows the ranking of print jobs. -
    -
    -U username -
    -
    -
    Specifies an alternate username. -
    -
    -W which-jobs -
    -
    -
    Specifies which jobs to show, completed or -not-completed (the default). This option must appear -before the -o option and/or any printer names, otherwise -the default (not-completed) value will be used in the request to -the scheduler. -
    -
    -a [printer(s)] -
    -
    -
    Shows the accepting state of printer queues. If no printers are -specified then all printers are listed. -
    -
    -c [class(es)] -
    -
    -
    Shows the printer classes and the printers that belong to them. +The lpstat command supports the following options: +
    +
    -E +
    Forces encryption when connecting to the server. +
    -H +
    Shows the server hostname and port. +
    -R +
    Shows the ranking of print jobs. +
    -U username +
    Specifies an alternate username. +
    -W which-jobs +
    Specifies which jobs to show, "completed" or "not-completed" (the default). +This option must appear before the -o option and/or any printer names, otherwise the default ("not-completed") value will be used in the request to the scheduler. +
    -a [printer(s)] +
    Shows the accepting state of printer queues. +If no printers are specified then all printers are listed. +
    -c [class(es)] +
    Shows the printer classes and the printers that belong to them. If no classes are specified then all classes are listed. -
    -
    -d -
    -
    -
    Shows the current default destination. -
    -
    -h server[:port] -
    -
    -
    Specifies an alternate server. -
    -
    -l -
    -
    -
    Shows a long listing of printers, classes, or jobs. -
    -
    -o [destination(s)] -
    -
    -
    Shows the jobs queue on the specified destinations. If no destinations are -specified all jobs are shown. -
    -
    -p [printer(s)] -
    -
    -
    Shows the printers and whether or not they are enabled for printing. If -no printers are specified then all printers are listed. -
    -
    -r -
    -
    -
    Shows whether the CUPS server is running. -
    -
    -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 "-d", "-c", -and "-v" options. -
    -
    -t -
    -
    -
    Shows all status information. This is equivalent to using the "-r", -"-d", "-c", "-v", "-a", "-p", and "-o" options. -
    -
    -u [user(s)] -
    -
    -
    Shows a list of print jobs queued by the specified users. If no users -are specified, lists the jobs queued by the current user. -
    -
    -v [printer(s)] -
    -
    -
    Shows the printers and what device they are attached to. If no printers -are specified then all printers are listed. -
    +
    -d +
    Shows the current default destination. +
    -h server[:port] +
    Specifies an alternate server. +
    -l +
    Shows a long listing of printers, classes, or jobs. +
    -o [destination(s)] +
    Shows the jobs queued on the specified destinations. +If no destinations are specified all jobs are shown. +
    -p [printer(s)] +
    Shows the printers and whether they are enabled for printing. +If no printers are specified then all printers are listed. +
    -r +
    Shows whether the CUPS server is running. +
    -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 -d, -c, and -v options. +
    -t +
    Shows all status information. +This is equivalent to using the -r, -d, -c, -v, -a, -p, and -o options. +
    -u [user(s)] +
    Shows a list of print jobs queued by the specified users. +If no users are specified, lists the jobs queued by the current user. +
    -v [printer(s)] +
    Shows the printers and what device they are attached to. +If no printers are specified then all printers are listed.
    -

    Compatibility

    -Unlike the System V printing system, CUPS allows printer names to -contain any printable character except SPACE, TAB, "/", and "#". +

    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 not case-sensitive. -

    The "-h", "-E", "-U", and "-W" options are unique to CUPS. -

    The Solaris "-f", "-P", and "-S" options are silently ignored. +

    The -h, -E, -U, and -W options are unique to CUPS. +

    The Solaris -f, -P, and -S options are silently ignored.

    See Also

    -cancel(1), lp(1), -
    -http://localhost:631/help +cancel(1), +lp(1), +lpq(1), +lpr(1), +lprm(1), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-mailto.conf.html b/doc/help/man-mailto.conf.html index 829048e55..966b3651b 100644 --- a/doc/help/man-mailto.conf.html +++ b/doc/help/man-mailto.conf.html @@ -1,4 +1,4 @@ - + @@ -10,51 +10,33 @@

    Name

    mailto.conf - configuration file for cups email notifier

    Description

    -The mailto.conf file defines the local mail server and -email notification preferences for CUPS. -

    Each line in the file can be a configuration directive, a blank line, -or a comment. Comment lines start with the # character. -

    Directives

    -
    -
    Cc cc-address@domain.com -
    -
    -
    Specifies an additional recipient for all email notifications. -
    -
    From from-address@domain.com -
    -
    -
    Specifies the sender of email notifications. -
    -
    Sendmail sendmail command and options -
    -
    -
    Specifies the sendmail command to use when sending email -notifications. Only one Sendmail or SMTPServer line -may be present in the mailto.conf file. If multiple lines -are present, only the last one is used. -
    -
    SMTPServer servername -
    -
    -
    Specifies a SMTP server to send email notifications to. Only one -Sendmail or SMTPServer line may be present in the -mailto.conf file. If multiple lines are present, only the -last one is used. -
    -
    Subject subject-prefix -
    -
    -
    Specifies a prefix string for the subject line of an email notification. -
    +The mailto.conf file defines the local mail server and email notification preferences for CUPS. +

    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. +

    Directives

    +
    +
    Cc cc-address@domain.com +
    Specifies an additional recipient for all email notifications. +
    From from-address@domain.com +
    Specifies the sender of email notifications. +
    Sendmail sendmail command and options +
    Specifies the sendmail command to use when sending email notifications. +Only one Sendmail or SMTPServer line may be present in the mailto.conf file. +If multiple lines are present, only the last one is used. +
    SMTPServer servername +
    Specifies a SMTP server to send email notifications to. +Only one Sendmail or SMTPServer line may be present in the mailto.conf file. +If multiple lines are present, only the last one is used. +
    Subject subject-prefix +
    Specifies a prefix string for the subject line of an email notification.

    See Also

    -classes.conf(5), cupsd(8), cupsd.conf(5), -mime.convs(5), mime.types(5), printers.conf(5), -
    -http://localhost:631/help +cupsd(8), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-mime.convs.html b/doc/help/man-mime.convs.html index e4e39c0d3..f1e045e5a 100644 --- a/doc/help/man-mime.convs.html +++ b/doc/help/man-mime.convs.html @@ -1,4 +1,4 @@ - + @@ -10,29 +10,46 @@

    Name

    mime.convs - mime type conversion file for cups

    Description

    -The mime.convs 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. -

    Additional filters can be added to the mime.convs file or -(preferably) to other files in the CUPS configuration directory. -

    Each line in the mime.convs 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 mime.convs 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. +

    Additional filters are specified in files with the extension .convs in the CUPS configuration directory. +

    Each line in the mime.convs 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: +

    +
    +    source/type destination/type cost filter
    +
    +
    +The source/type field specifies the source MIME media type that is consumed by the filter. +

    The destination/type field specifies the destiantion MIME media type that is produced by the filter. +

    The cost 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. +

    The filter field specifies the filter program filename. +Filenames are relative to the CUPS filter directory. +

    Files

    +/etc/cups - Typical CUPS configuration directory.
    -
    +/usr/lib/cups/filter - Typical CUPS filter directory.
    +
    +/usr/libexec/cups/filter - CUPS filter directory on OS X. +

    Examples

    +Define a filter that converts PostScript documents to CUPS Raster format: +
    +
    +    application/vnd.cups-postscript application/vnd.cups-raster 50 pstoraster
     
    -super/type super/type cost filter
    -application/postscript application/vnd.cups-raster 50 pstoraster
     

    See Also

    -classes.conf(5), cupsd(8), cupsd.conf(5), -mime.types(5), printers.conf(5), -
    -http://localhost:631/help +cups-files.conf(5), +cupsd.conf(5), +cupsd(8), +cupsfilter(8), +mime.types(5), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-mime.types.html b/doc/help/man-mime.types.html index 55e5ed4f8..89c8a498f 100644 --- a/doc/help/man-mime.types.html +++ b/doc/help/man-mime.types.html @@ -1,4 +1,4 @@ - + @@ -10,109 +10,88 @@

    Name

    mime.types - mime type description file for cups

    Description

    -The mime.types file defines the recognized file types. -

    Additional file types can be added to mime.types or -(preferably) in additional files in the CUPS configuration -directory with the extension ".types". -

    Each line in the mime.types 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: -
    -

    +The mime.types file defines the recognized file types.
    +

    Additional file types are specified in files with the extension .types in the CUPS configuration directory. +

    Each line in the mime.types 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: +

    +
    +    mime/type [ rule ... rule ]
    +
    +
    +Rules can be extended over multiple lines using the backslash character (\): +
    +
    +    mime/type [ really-really-really-long-rule ... \
    +      rule ]
     
    -    super/type rule [ ... ruleN]
     
    -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. -

    The rules may be grouped using parenthesis, joined using "+" for a -logical AND and "," or whitespace for a logical OR, and negated using -"!". -

    Rules

    +MIME media types specified by the mime/type 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. +

    The rules may be grouped using parenthesis, joined using "+" for a logical AND, joined using "," or whitespace for a logical OR, and negated using "!". +

    Rules

    Rules take two forms - a filename extension by itself and functions with test -values inside parenthesis. The following functions are available: -
    -
    match("pattern") -
    -
    -
    Pattern match on filename -
    -
    ascii(offset,length) -
    -
    -
    True if bytes are valid printable ASCII (CR, NL, TAB, BS, 32-126) -
    -
    printable(offset,length) -
    -
    -
    True if bytes are printable 8-bit chars (CR, NL, TAB, BS, 32-126, 128-254) -
    -
    priority(number) -
    -
    -
    Specifies the relative priority of this MIME type. The default priority is 100. +values inside parenthesis. +The following functions are available: +
    +
    match("pattern") +
    True if the filename matches the given shell wildcard pattern. +
    ascii(offset,length) +
    True if the length bytes starting at offset are valid printable ASCII (CR, NL, TAB, BS, 32-126). +
    printable(offset,length) +
    True if the length bytes starting at offset are printable 8-bit chars (CR, NL, TAB, BS, 32-126, 128-254). +
    priority(number) +
    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. -
    -
    string(offset,"string") -
    -
    -
    True if bytes are identical to string -
    -
    istring(offset,"string") -
    -
    -
    True if a case-insensitive comparison of the bytes is identical -
    -
    char(offset,value) -
    -
    -
    True if byte is identical -
    -
    short(offset,value) -
    -
    -
    True if 16-bit integer is identical -
    -
    int(offset,value) -
    -
    -
    True if 32-bit integer is identical -
    -
    locale("string") -
    -
    -
    True if current locale matches string -
    -
    contains(offset,range,"string") -
    -
    -
    True if the range contains the string -
    +
    string(offset,"string") +
    True if the bytes starting at offset are identical to string. +
    istring(offset,"string") +
    True if the bytes starting at offset match string without respect to case. +
    char(offset,value) +
    True if the byte at offset is identical to value. +
    short(offset,value) +
    True if the 16-bit big-endian integer at offset is identical to value. +
    int(offset,value) +
    True if the 32-bit big-endian integer at offset is identical to value. +
    locale("string") +
    True if current locale matches string. +
    contains(offset,range,"string") +
    True if the bytes starting at offset for range bytes contains string.
    -

    String Constants

    -String constants can be specified inside quotes ("") for strings -containing whitespace and angle brackets (<>) for hexadecimal -strings. -

    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. +

    String Constants

    +String constants can be specified inside quotes ("") for strings containing whitespace and angle brackets (<>) for hexadecimal strings. +

    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 .types 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.

    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. +

    Files

    +/etc/cups - Typical CUPS configuration directory. +

    Examples

    +Define two MIME media types for raster data, with one being a subset with higher priority: +
    +
    +    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)
    +

    See Also

    -classes.conf(5), cupsd(8), cupsd.conf(5), -mime.convs(5), printers.conf(5), -
    -http://localhost:631/help +cups-files.conf(5), +cupsd.conf(5), +cupsd(8), +cupsfilter(8), +mime.convs(5), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-notifier.html b/doc/help/man-notifier.html index fc9ae8283..5c65778d1 100644 --- a/doc/help/man-notifier.html +++ b/doc/help/man-notifier.html @@ -1,4 +1,4 @@ - + @@ -10,164 +10,28 @@

    Name

    notifier - cups notification interface

    Synopsis

    -notifier -recipient -[ -user-data -] +notifier +recipient +[ +user-data +]

    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. -

    Notifiers must 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. -

    Log Messages

    -Messages sent to stderr are generally logged to the current ErrorLog. -Each line begins with a standard prefix: - -
    -
    ALERT: message -
    -
    -
    Sets the printer-state-message attribute and adds the specified -message to the current ErrorLog using the "alert" log level. - -
    -
    CRIT: message -
    -
    -
    Sets the printer-state-message attribute and adds the specified -message to the current ErrorLog using the "critical" log level. - -
    -
    DEBUG: message -
    -
    -
    Sets the printer-state-message attribute and adds the specified -message to the current ErrorLog using the "debug" log level. - -
    -
    DEBUG2: message -
    -
    -
    Sets the printer-state-message attribute and adds the specified -message to the current ErrorLog using the "debug2" log level. - -
    -
    EMERG: message -
    -
    -
    Sets the printer-state-message attribute and adds the specified -message to the current ErrorLog using the "emergency" log level. - -
    -
    ERROR: message -
    -
    -
    Sets the printer-state-message attribute and adds the specified -message to the current ErrorLog using the "error" log level. - -
    -
    INFO: message -
    -
    -
    Sets the printer-state-message attribute. If the current LogLevel -is set to "debug2", also adds the specified message to the -current ErrorLog using the "info" log level. - -
    -
    NOTICE: message -
    -
    -
    Sets the printer-state-message attribute and adds the specified -message to the current ErrorLog using the "notice" log level. - -
    -
    WARNING: message -
    -
    -
    Sets the printer-state-message attribute and adds the specified -message to the current ErrorLog using the "warning" log level. - -
    -
    -

    Environment Variables

    -The following environment variables are defined by the CUPS server when -executing the notifier: - -
    -
    CHARSET -
    -
    -
    The default text character set, typically utf-8. - -
    -
    CUPS_CACHEDIR -
    -
    -
    The directory for semi-persistent cache files can be found. - -
    -
    CUPS_DATADIR -
    -
    -
    The directory where data files can be found. - -
    -
    CUPS_FILETYPE -
    -
    -
    The type of file being printed: "job-sheet" for a banner page and "document" -for a regular print file. - -
    -
    CUPS_SERVERROOT -
    -
    -
    The root directory of the server. - -
    -
    LANG -
    -
    -
    The default language locale (typically C or en). - -
    -
    PATH -
    -
    -
    The standard execution path for external programs that may be run by -the filter. - -
    -
    SOFTWARE -
    -
    -
    The name and version number of the server (typically CUPS/1.2). - -
    -
    TZ -
    -
    -
    The timezone of the server. - -
    -
    USER -
    -
    -
    The user executing the filter, typically "lp"; consult the cupsd.conf(5) -file for the current setting. - -
    -
    +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. +

    Notifiers MUST 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. +Notifiers inherit the environment and can use the logging mechanism documented in +filter(7).

    See Also

    -backend(7), cupsd(8), filter(7), -
    -http://localhost:631/help +cupsd(8), +filter(7), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-ppdc.html b/doc/help/man-ppdc.html index 15445954d..5982c2f9a 100644 --- a/doc/help/man-ppdc.html +++ b/doc/help/man-ppdc.html @@ -1,4 +1,4 @@ - + @@ -8,58 +8,84 @@

    ppdc(1)

    Name

    -ppdc - cups ppd compiler +ppdc - cups ppd compiler (deprecated)

    Synopsis

    -ppdc -[ -D -name[=value] -] [ -I -include-directory -] [ -c -message-catalog -] [ -d -output-directory -] [ -l -language(s) -] [-m] [-t] [ -v ] [ -z ] [ --cr ] [ --crlf ] [ --lf ] -source-file -

    Description

    -ppdc compiles PPDC source files into one or more PPD -files. This program is deprecated and will be removed in a future release of -CUPS. -

    The -D option sets the named variable for use in the -source file. It is equivalent to using the #define directive -in the source file. -

    The -I option specifies an alternate include directory; -multiple -I options can be supplied to add additional -directories. -

    The -c option specifies a single message catalog file in GNU -gettext source format (filename.po) to be used for localization. -

    The -d option specifies the output directory for PPD -files. The default output directory is "ppd". -

    The -l 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. -

    The -m option specifies that the output filename should be -based on the ModelName value instead of FileName or PCFilenName. -

    The -t option specifies that PPD files should be tested instead -of generated. -

    The -v option provides more verbose output, basically a -running status of which files are being loaded or written. -

    The -z option generates compressed PPD files (filename.ppd.gz). +ppdc +[ +-D name[=value] +] [ +-I +include-directory +] [ +-c +message-catalog +] [ +-d +output-directory +] [ +-l +language(s) +] [ +-m +] [ +-t +] [ +-v +] [ +-z +] [ +--cr +] [ +--crlf +] [ +--lf +] +source-file +

    Description

    +ppdc compiles PPDC source files into one or more PPD files. +This program is deprecated and will be removed in a future release of CUPS. +

    Options

    +ppdc supports the following options: +
    +
    -D name[=value] +
    Sets the named variable for use in the source file. +It is equivalent to using the #define directive in the source file. +
    -I include-directory +
    Specifies an alternate include directory. +Multiple -I options can be supplied to add additional directories. +
    -c message-catalog +
    Specifies a single message catalog file in GNU gettext (filename.po) or Apple strings (filename.strings) format to be used for localization. +
    -d output-directory +
    Specifies the output directory for PPD files. +The default output directory is "ppd". +
    -l language(s) +
    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. +
    -m +
    Specifies that the output filename should be based on the ModelName value instead of FileName or PCFilenName. +
    -t +
    Specifies that PPD files should be tested instead of generated. +
    -v +
    Specifies verbose output, basically a running status of which files are being loaded or written. +-z +Generates compressed PPD files (filename.ppd.gz). The default is to generate uncompressed PPD files. -

    The --cr, --crlf, and --lf 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. +

    --cr +
    --crlf +
    --lf +
    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. +

    See Also

    -ppdhtml(1), ppdi(1), ppdmerge(1), ppdpo(1), ppdcfile(5) -
    -http://localhost:631/help +ppdhtml(1), +ppdi(1), +ppdmerge(1), +ppdpo(1), +ppdcfile(5), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-ppdcfile.html b/doc/help/man-ppdcfile.html index f412bec05..01876d964 100644 --- a/doc/help/man-ppdcfile.html +++ b/doc/help/man-ppdcfile.html @@ -1,4 +1,4 @@ - + @@ -10,217 +10,86 @@

    Name

    ppdcfile - cups ppd compiler source file format

    Description

    -The CUPS PPD compiler reads meta files that contain descriptions -of one or more PPD files to be generated by ppdc. This man -page provides a quick reference to the supported keywords and -should be used in conjunction with the online help for CUPS. -

    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. -

    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. -

    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: -

    -
    #define name value -
    -
    -
    #elif {name | value} -
    -
    -
    #else -
    -
    -
    #endif -
    -
    -
    #font name encoding "version" charset status -
    -
    -
    #if {name | value} -
    -
    -
    #include <filename> -
    -
    -
    #include "filename" -
    -
    -
    #media name width length -
    -
    -
    #media "name/text" width length -
    -
    -
    #po locale "filename.po" -
    -
    -
    Attribute name "" value -
    -
    -
    Attribute name keyword value -
    -
    -
    Attribute name "keyword/text" value -
    -
    -
    Choice name "code" -
    -
    -
    Choice "name/text" "code" -
    -
    -
    ColorDevice boolean-value -
    -
    -
    ColorModel name colorspace colororder compression -
    -
    -
    ColorModel "name/text" colorspace colororder compression -
    -
    -
    ColorProfile resolution/mediatype gamma density matrix -
    -
    -
    Copyright "text" -
    -
    -
    CustomMedia name width length left bottom right top "size-code" "region-code" -
    -
    -
    CustomMedia "name/text" width length left bottom right top "size-code" "region-code" -
    -
    -
    Cutter boolean-value -
    -
    -
    Darkness temperature name -
    -
    -
    Darkness temperature "name/text" -
    -
    -
    DriverType type -
    -
    -
    Duplex type -
    -
    -
    Filter mime-type cost program -
    -
    -
    Finishing name -
    -
    -
    Finishing "name/text" -
    -
    -
    Font * -
    -
    -
    Font name encoding "version" charset status -
    -
    -
    Group name -
    -
    -
    Group "name/text" -
    -
    -
    HWMargins left bottom right top -
    -
    -
    InputSlot position name -
    -
    -
    InputSlot position "name/text" -
    -
    -
    Installable name -
    -
    -
    Installable "name/text" -
    -
    -
    LocAttribute name "keyword/text" value -
    -
    -
    ManualCopies boolean-value -
    -
    -
    Manufacturer "name" -
    -
    -
    MaxSize width length -
    -
    -
    MediaSize name -
    -
    -
    MediaType type name -
    -
    -
    MediaType type "name/text" -
    -
    -
    MinSize width length -
    -
    -
    ModelName "name" -
    -
    -
    ModelNumber number -
    -
    -
    Option name type section order -
    -
    -
    Option "name/text" type section order -
    -
    -
    PCFileName "filename.ppd" -
    -
    -
    Resolution colorspace bits-per-color row-count row-feed row-step name -
    -
    -
    Resolution colorspace bits-per-color row-count row-feed row-step "name/text" -
    -
    -
    SimpleColorProfile resolution/mediatype density yellow-density red-density gamma red-adjust green-adjust blue-adjust -
    -
    -
    Throughput pages-per-minute -
    -
    -
    UIConstraints "*Option1 *Option2" -
    -
    -
    UIConstraints "*Option1 Choice1 *Option2" -
    -
    -
    UIConstraints "*Option1 *Option2 Choice2" -
    -
    -
    UIConstraints "*Option1 Choice1 *Option2 Choice2" -
    -
    -
    VariablePaperSize boolean-value -
    -
    -
    Version number -
    -
    -
    +The CUPS PPD compiler reads meta files that contain descriptions of one or more PPD files to be generated by +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. +

    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. +

    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. +

    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: +

    +
    #define name value +
    #elif {name | value} +
    #else +
    #endif +
    #font name encoding "version" charset status +
    #if {name | value} +
    #include <filename> +
    #include "filename" +
    #media name width length +
    #media "name/text" width length +
    #po locale "filename" +
    Attribute name "" value +
    Attribute name keyword value +
    Attribute name "keyword/text" value +
    Choice name "code" +
    Choice "name/text" "code" +
    ColorDevice boolean-value +
    ColorModel name colorspace colororder compression +
    ColorModel "name/text" colorspace colororder compression +
    ColorProfile resolution/mediatype gamma density matrix +
    Copyright "text" +
    CustomMedia name width length left bottom right top "size-code" "region-code" +
    CustomMedia "name/text" width length left bottom right top "size-code" "region-code" +
    Cutter boolean-value +
    Darkness temperature name +
    Darkness temperature "name/text" +
    DriverType type +
    Duplex type +
    Filter Imime-type cost program +
    Finishing name +
    Finishing "name/text" +
    Font * +
    Font name encoding "version" charset status +
    Group name +
    Group "name/text" +
    HWMargins left bottom right top +
    InputSlot position name +
    InputSlot position "name/text" +
    Installable name +
    Installable "name/text" +
    LocAttribute name "keyword/text" value +
    ManualCopies boolean-value +
    Manufacturer "name" +
    MaxSize width length +
    MediaSize name +
    MediaType type name +
    MediaType type "name/text" +
    MinSize width length +
    ModelName "name" +
    ModelNumber number +
    Option name type section order +
    Option "name/text" type section order +
    PCFileName "filename.ppd" +
    Resolution colorspace bits-per-color row-count row-feed row-step name +
    Resolution colorspace bits-per-color row-count row-feed row-step "name/text" +
    SimpleColorProfile resolution/mediatype density yellow-density red-density gamma red-adjust green-adjust blue-adjust +
    Throughput pages-per-minute +
    UIConstraints "*Option1 *Option2" +
    UIConstraints "*Option1 Choice1 *Option2" +
    UIConstraints "*Option1 *Option2 Choice2" +
    UIConstraints "*Option1 Choice1 *Option2 Choice2" +
    VariablePaperSize boolean-value +
    Version number +

    See Also

    -ppdc(1), ppdhtml(1), ppdi(1), ppdmerge(1), ppdpo(1) -
    -http://localhost:631/help +ppdc(1), +ppdhtml(1), +ppdi(1), +ppdmerge(1), +ppdpo(1), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-ppdhtml.html b/doc/help/man-ppdhtml.html index 460f6ae6d..51cdcd227 100644 --- a/doc/help/man-ppdhtml.html +++ b/doc/help/man-ppdhtml.html @@ -1,4 +1,4 @@ - + @@ -8,31 +8,38 @@

    ppdhtml(1)

    Name

    -ppdhtml - cups html summary generator +ppdhtml - cups html summary generator (deprecated)

    Synopsis

    -ppdhtml -[ -D -name[=value] -] [ -I -include-directory -] -source-file -

    Description

    -ppdhtml reads a driver information file and produces a -HTML summary page that lists all of the drivers in a file and -the supported options. -

    The -D option sets the named variable for use in the -source file. It is equivalent to using the #define directive -in the source file. -

    The -I option specifies an alternate include directory; -multiple -I options can be supplied to add additional -directories. +ppdhtml +[ +-D name[=value] +] [ +-I +include-directory +] +source-file +

    Description

    +ppdhtml reads a driver information file and produces a HTML summary page that lists all of the drivers in a file and the supported options. +This program is deprecated and will be removed in a future release of CUPS. +

    Options

    +ppdhtml supports the following options: +
    +
    -D name[=value] +
    Sets the named variable for use in the source file. +It is equivalent to using the #define directive in the source file. +
    -I include-directory +
    Specifies an alternate include directory. +Multiple -I options can be supplied to add additional directories. +

    See Also

    -ppdc(1), ppdcfile(5), ppdi(1), ppdmerge(1), ppdpo(1) -
    -http://localhost:631/help +ppdc(1), +ppdcfile(5), +ppdi(1), +ppdmerge(1), +ppdpo(1), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-ppdi.html b/doc/help/man-ppdi.html index 725617754..9fb849990 100644 --- a/doc/help/man-ppdi.html +++ b/doc/help/man-ppdi.html @@ -1,4 +1,4 @@ - + @@ -8,32 +8,45 @@

    ppdi(1)

    Name

    -ppdi - import ppd files +ppdi - import ppd files (deprecated)

    Synopsis

    -ppdi -[ -I -include-directory -] [ -o -source-file -] -ppd-file -[ -ppd-file2 ... ppd-fileN -] +ppdi +[ +-I +include-directory +] [ +-o +source-file +] +ppd-file +[ ... +ppd-file +]

    Description

    -ppdi 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. -

    The -o 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. +ppdi 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. +This program is deprecated and will be removed in a future release of CUPS. +

    Options

    +ppdi supports the following options: +
    +
    -I include-directory +
    Specifies an alternate include directory. +Multiple -I options can be supplied to add additional directories. +
    -o source-file +
    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. +

    See Also

    -ppdc(1), ppdhtml(1), ppdmerge(1), ppdpo(1), ppdcfile(5) -
    -http://localhost:631/help +ppdc(1), +ppdhtml(1), +ppdmerge(1), +ppdpo(1), +ppdcfile(5), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-ppdmerge.html b/doc/help/man-ppdmerge.html index fbf7f049e..1a9d05ae2 100644 --- a/doc/help/man-ppdmerge.html +++ b/doc/help/man-ppdmerge.html @@ -1,4 +1,4 @@ - + @@ -8,33 +8,42 @@

    ppdmerge(1)

    Name

    -ppdmerge - merge ppd files +ppdmerge - merge ppd files (deprecated)

    Synopsis

    -ppdmerge -[ -o -output-ppd-file -] -ppd-file -ppd-file2 -[ -... ppd-fileN -] +ppdmerge +[ +-o +output-ppd-file +] +ppd-file +ppd-file +[ ... +ppd-file +]

    Description

    -ppdmerge merges two or more PPD files into a single, multi-language +ppdmerge merges two or more PPD files into a single, multi-language PPD file. -

    The -o 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 +This program is deprecated and will be removed in a future release of CUPS. +

    Options

    +ppdmerge supports the following options: +
    +
    -o output-ppd-file +
    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. +

    Notes

    -ppdmerge does not check whether the merged PPD files are for the -same device. Merging of different device PPDs will yield unpredictable -results. +ppdmerge does not check whether the merged PPD files are for the same device. +Merging of different device PPDs will yield unpredictable results.

    See Also

    -cupsprofile(1), ppdc(1), ppdhtml(1), ppdi(1), ppdpo(1), ppdcfile(5) -
    -http://localhost:631/help +ppdc(1), +ppdhtml(1), +ppdi(1), +ppdpo(1), +ppdcfile(5), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-ppdpo.html b/doc/help/man-ppdpo.html index 66ee0b6fc..dfbf27840 100644 --- a/doc/help/man-ppdpo.html +++ b/doc/help/man-ppdpo.html @@ -1,4 +1,4 @@ - + @@ -8,36 +8,44 @@

    ppdpo(1)

    Name

    -ppdpo - ppd message catalog generator +ppdpo - ppd message catalog generator (deprecated)

    Synopsis

    -ppdpo -[ -D -name[=value] -] [ -I -include-directory -] [ -o -output-file -] -source-file -

    Description

    -ppdpo extracts UI strings from PPDC source files and updates either -a GNU gettext or OS X strings format message catalog source file for -translation. -

    The -D option sets the named variable for use in the -source file. It is equivalent to using the #define directive -in the source file. -

    The -I option specifies an alternate include directory; -multiple -I options can be supplied to add additional -directories. -

    The -o 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. +ppdpo +[ +-D name[=value] +] [ +-I +include-directory +] [ +-o +output-file +] +source-file +

    Description

    +ppdpo extracts UI strings from PPDC source files and updates either a GNU gettext or OS X strings format message catalog source file for translation. +This program is deprecated and will be removed in a future release of CUPS. +

    Options

    +ppdpo supports the following options: +
    +
    -D name[=value] +
    Sets the named variable for use in the source file. +It is equivalent to using the #define directive in the source file. +
    -I include-directory +
    Specifies an alternate include directory. +Multiple -I options can be supplied to add additional directories. +
    -o output-file +
    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. +

    See Also

    -ppdc(1), ppdhtml(1), ppdi(1), ppdmerge(1), ppdcfile(5) -
    -http://localhost:631/help +ppdc(1), +ppdhtml(1), +ppdi(1), +ppdmerge(1), +ppdcfile(5), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-printers.conf.html b/doc/help/man-printers.conf.html index 958e4026f..625115a8b 100644 --- a/doc/help/man-printers.conf.html +++ b/doc/help/man-printers.conf.html @@ -1,4 +1,4 @@ - + @@ -10,135 +10,21 @@

    Name

    printers.conf - printer configuration file for cups

    Description

    -The printers.conf file defines the local printers that are -available. It is normally located in the /etc/cups directory and -is generated automatically by the cupsd(8) program when printers -are added or deleted. -

    Each line in the file can be a configuration directive, a blank line, -or a comment. Comment lines start with the # character. -

    Directives

    -
    -
    <Printer name> ... </Printer> -
    -
    -
    Defines a specific printer. -
    -
    <DefaultPrinter name> ... </Printer> -
    -
    -
    Defines a default printer. -
    -
    Accepting Yes -
    -
    -
    Accepting No -
    -
    -
    Specifies whether the printer is accepting new jobs. -
    -
    AllowUser [ user @group ... ] -
    -
    -
    Allows specific users and groups to print to the printer. -
    -
    DenyUser [ user @group ... ] -
    -
    -
    Prevents specific users and groups from printing to the printer. -
    -
    DeviceURI uri -
    -
    -
    Specifies the device URI for a printer. -
    -
    ErrorPolicy abort-job -
    -
    -
    ErrorPolicy retry-current-job -
    -
    -
    ErrorPolicy retry-job -
    -
    -
    ErrorPolicy stop-printer -
    -
    -
    Specifies the error policy for the printer. -
    -
    Info text -
    -
    -
    Specifies human-readable text describing the printer. -
    -
    JobSheets banner banner -
    -
    -
    Specifies the banner pages to use for the printer. -
    -
    KLimit number -
    -
    -
    Specifies the job-k-limit value for the printer. -
    -
    Location text -
    -
    -
    Specifies human-readable text describing the location of the printer. -
    -
    OpPolicy name -
    -
    -
    Specifies the operation policy for the printer. -
    -
    PageLimit number -
    -
    -
    Specifies the job-page-limit value for the printer. -
    -
    PortMonitor monitor -
    -
    -
    Specifies the port monitor for a printer. -
    -
    QuotaPeriod seconds -
    -
    -
    Specifies the job-quota-period value for the printer. -
    -
    Shared Yes -
    -
    -
    Shared No -
    -
    -
    Specifies whether the printer is shared. -
    -
    State idle -
    -
    -
    State stopped -
    -
    -
    Specifies the initial state of the printer (Idle or Stopped) -
    -
    StateMessage text -
    -
    -
    Specifies the message associated with the state. -
    -
    StateTime seconds -
    -
    -
    Specifies the date/time associated with the state. -
    -
    +The printers.conf file defines the local printers that are available. It is normally located in the /etc/cups directory and is maintained by the +cupsd(8) +program. This file is not intended to be edited or managed manually. +

    Notes

    +The name, location, and format of this file are an implementation detail that will change in future releases of CUPS.

    See Also

    -classes.conf(5), cupsd(8), cupsd.conf(5), -mime.convs(5), mime.types(5), -
    -http://localhost:631/help +classes.conf(5), +cupsd(8), +cupsd.conf(5), +mime.convs(5), +mime.types(5), +subscriptions.conf(5), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/man-subscriptions.conf.html b/doc/help/man-subscriptions.conf.html index 94afd211d..19868e546 100644 --- a/doc/help/man-subscriptions.conf.html +++ b/doc/help/man-subscriptions.conf.html @@ -1,4 +1,4 @@ - + @@ -8,89 +8,23 @@

    subscriptions.conf(5)

    Name

    -subscriptions.conf - subscriptions file for cups +subscriptions.conf - subscription configuration file for cups

    Description

    -The subscriptions.conf file defines the local subscriptions -that are active. It is normally located in the /etc/cups -directory and is generated automatically by the cupsd(8) -program when subscriptions are created, renewed, or cancelled. -

    Each line in the file can be a configuration directive, a blank line, -or a comment. Comment lines start with the # character. -

    Directives

    -
    -
    <Subscription NNN> ... </Subscription> -
    -
    -
    Defines a subscription. -
    -
    Events name [ ... name ] -
    -
    -
    Specifies the events that are subscribed. -
    -
    ExpirationTime unix-time -
    -
    -
    Specifies the expiration time of a subscription as a UNIX time -value in seconds since January 1st, 1970. -
    -
    Interval seconds -
    -
    -
    Specifies the preferred time interval for event notifications in -seconds. -
    -
    JobId job-id -
    -
    -
    Specifies the job ID associated with the subscription. -
    -
    LeaseDuration seconds -
    -
    -
    Specifies the number of seconds that the subscription is valid -for. If 0, the subscription does not expire. -
    -
    NextEventId number -
    -
    -
    Specifies the next notify-sequence-number to use for the -subscription. -
    -
    NextSubscriptionId number -
    -
    -
    Specifies the next subscription-id to use. -
    -
    Owner username -
    -
    -
    Specifies the user that owns the subscription. -
    -
    PrinterName printername -
    -
    -
    Specifies the printer or class associated with the subscription. -
    -
    Recipient uri -
    -
    -
    Specifies the notify-recipient-uri value for push-type notifications. -
    -
    UserData hex-escaped-data -
    -
    -
    Specifies user data to be included in event notifications. This -is typically the "from" address in mailto: notifications. -
    -
    +The subscriptions.conf file defines the local event notification subscriptions that are active. It is normally located in the /etc/cups directory and is maintained by the +cupsd(8) +program. This file is not intended to be edited or managed manually. +

    Notes

    +The name, location, and format of this file are an implementation detail that will change in future releases of CUPS.

    See Also

    -classes.conf(5), cupsd(8), cupsd.conf(5), -mime.convs(5), mime.types(5), printers.conf(5) -
    -http://localhost:631/help +classes.conf(5), +cupsd(8), +cupsd.conf(5), +mime.convs(5), +mime.types(5), +printers.conf(5), +CUPS Online Help (http://localhost:631/help)

    Copyright

    -Copyright 2007-2013 by Apple Inc. +Copyright © 2007-2014 by Apple Inc. diff --git a/doc/help/overview.html b/doc/help/overview.html index 4a4b173b2..f8466378b 100644 --- a/doc/help/overview.html +++ b/doc/help/overview.html @@ -47,14 +47,9 @@ different ways.

    Where Do I Begin?

    -

    Click on the Administration tab at -the top of this page. Click on the Add Printer button and follow the -prompts.

    +

    Click on the Administration tab at the top of this page. Click on the Add Printer button and follow the prompts.

    -
    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.
    +
    When you are asked for a username and password, enter your login username and password or the "root" username and password. On OS X®, the login username (or "short name") is typically your first and last name in lowercase.

    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 diff --git a/doc/help/postscript-driver.html b/doc/help/postscript-driver.html index fde5890be..1469f45e5 100644 --- a/doc/help/postscript-driver.html +++ b/doc/help/postscript-driver.html @@ -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/ppd-compiler.html b/doc/help/ppd-compiler.html index 27decdbbb..729e26851 100644 --- a/doc/help/ppd-compiler.html +++ b/doc/help/ppd-compiler.html @@ -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/raster-driver.html b/doc/help/raster-driver.html index 0399f057c..8055705f4 100644 --- a/doc/help/raster-driver.html +++ b/doc/help/raster-driver.html @@ -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 index 015ea17bd..000000000 --- a/doc/help/ref-access_log.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - access_log - - - - -

    access_log

    - -

    The access_log 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:

    - -

    - -host group user date-time \"method resource version\" status -bytes ipp-operation ipp-status
    - -
    - -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 - -
    - -

    - -

    The host field will normally only be an IP address -unless you have enabled the HostNameLookups -directive in the cupsd.conf file or if the IP address -corresponds to your local machine.

    - -

    The group field always contains "-".

    - -

    The user field is the authenticated username of the -requesting user. If no username and password is supplied for the -request then this field contains "-".

    - -

    The date-time field is the date and time of the request -in local time and is in the format:

    - -

    -[DD/MON/YYYY:HH:MM:SS +ZZZZ] -

    - -

    The method 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.

    - -

    The resource field is the filename of the requested -resource.

    - -

    The version field is the HTTP specification version used by the -client. For CUPS clients this will always be "HTTP/1.1".

    - -

    The status field contains the HTTP result status of the -request, as follows:

    - -
      - -
    • 200 - Successful operation.
    • - -
    • 201 - File created/modified successfully.
    • - -
    • 304 - The requested file has not changed.
    • - -
    • 400 - Bad HTTP request; typically this - means that you have a malicious program trying to access - your server.
    • - -
    • 401 - Unauthorized, authentication - (username + password) is required.
    • - -
    • 403 - Access is forbidden; typically - this means that a client tried to access a file or - resource they do not have permission to access.
    • - -
    • 404 - The file or resource does not - exist.
    • - -
    • 405 - URL access method is not allowed; - typically this means you have a web browser using your - server as a proxy.
    • - -
    • 413 - Request too large; typically this - means that a client tried to print a file larger than the - MaxRequestSize - allows.
    • - -
    • 426 - Upgrading to TLS-encrypted - connection.
    • - -
    • 500 - Server error; typically this - happens when the server is unable to open/create a file - - consult the error_log file for details.
    • - -
    • 501 - The client requested encryption - but encryption support is not enabled/compiled in.
    • - -
    • 505 - HTTP version number not supported; - typically this means that you have a malicious program - trying to access your server.
    • - -
    - -

    The bytes 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.

    - -

    The ipp-operation field contains either "-" for non-IPP -requests or the IPP operation name for POST requests containing -an IPP request.

    - -

    The ipp-status field contains either "-" for non-IPP -requests or the IPP status code name for POST requests containing -an IPP response.

    - - - diff --git a/doc/help/ref-classes-conf.html b/doc/help/ref-classes-conf.html deleted file mode 100644 index 4171bb26d..000000000 --- a/doc/help/ref-classes-conf.html +++ /dev/null @@ -1,565 +0,0 @@ - - - - classes.conf - - - - -

    classes.conf

    - -

    The CUPS scheduler (cupsd) uses the -/etc/cups/classes.conf 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.

    - -

    While the class configuration file consists of plain text and -can be modified using your favorite text editor, you should -normally use the lpadmin(8) -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.

    - - -

    Accepting

    - -

    Examples

    - -
    -<Class name>
    -  ...
    -  Accepting yes
    -</Class>
    -
    - -

    Description

    - -

    The Accepting directive defines the initial state -of the printer-is-accepting-jobs attribute. This state -is also set by the accept(8) and -reject(8) commands:

    - -
    -/usr/sbin/accept classname
    -/usr/sbin/reject classname
    -
    - -

    This directive must appear inside a Class or DefaultClass -section.

    - - -

    AllowUser

    - -

    Examples

    - -
    -<Class name>
    -  ...
    -  AllowUser foo_user
    -  AllowUser @bar_group
    -</Class>
    -
    - -

    Description

    - -

    The AllowUser directive adds a username or group -name to the requesting-user-name-allowed attribute -which can be set by the lpadmin(8) command:

    - -
    -/usr/sbin/lpadmin -p classname -u allow:foo_user,@bar_group
    -
    - -

    This directive must appear inside a Class or DefaultClass directive. -This directive cannot be used with DenyUser.

    - - -

    Class

    - -

    Examples

    - -
    -<Class name>
    -  ...
    -</Class>
    -
    - -

    Description

    - -

    The Class directive begins a class definition. -Classes are added using the lpadmin(8) command: - -

    -/usr/sbin/lpadmin -p printername -c classname
    -
    - - -

    DefaultClass

    - -

    Examples

    - -
    -<DefaultClass name>
    -  ...
    -</Class>
    -
    - -

    Description

    - -

    The DefaultClass directive begins a class -definition as the default server destination. The default server -destination can be set using the lpadmin(8) -command:

    - -
    -/usr/sbin/lpadmin -d classname
    -
    - -

    Note that the server default destination settings can be -overridden by the user's default destination settings which are -normally set using the lpoptions(1) command.

    - - -

    DenyUser

    - -

    Examples

    - -
    -<Class name>
    -  ...
    -  DenyUser foo_user
    -  DenyUser @bar_group
    -</Class>
    -
    - -

    Description

    - -

    The DenyUser directive adds a username or group -name to the requesting-user-name-denied attribute -which can be set by the lpadmin(8) command:

    - -
    -/usr/sbin/lpadmin -p classname -u deny:foo_user,@bar_group
    -
    - -

    This directive must appear inside a Class or DefaultClass directive. -This directive cannot be used with AllowUser

    - - -

    Info

    - -

    Examples

    - -
    -<Class name>
    -  ...
    -  Info My Class
    -</Class>
    -
    - -

    Description

    - -

    The Info directive defines the string for the -printer-info attribute. It is normally set using the -lpadmin(8) command:

    - -
    -/usr/sbin/lpadmin -p classname -D "My Class"
    -
    - -

    This directive must appear inside a Class or DefaultClass -section.

    - - -

    JobSheets

    - -

    Examples

    - -
    -<Class name>
    -  ...
    -  JobSheets none,standard
    -</Class>
    -
    - -

    Description

    - -

    The JobSheets directive specifies the default -banner pages to print before and after a print job. In the above -example, only a standard banner will print after each -job. The lpadmin(8) command is normally used to set -the default banners: - -

    -/usr/sbin/lpadmin -p classname -o job-sheets-default=none,standard
    -
    - -

    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.

    - -

    The available banner pages depend on the local system -configuration; CUPS includes the following standard banner -files:

    - -
      - -
    • none - Do not produce a banner - page.
    • - -
    • classified - A banner page with a - "classified" label at the top and bottom.
    • - -
    • confidential - A banner page with a - "confidential" label at the top and bottom.
    • - -
    • secret - A banner page with a - "secret" label at the top and bottom.
    • - -
    • standard - A banner page with no label - at the top and bottom.
    • - -
    • topsecret - A banner page with a - "top secret" label at the top and bottom.
    • - -
    • unclassified - A banner page with an - "unclassified" label at the top and bottom.
    • - -
    - -

    This directive must appear inside a Class or DefaultClass -section.

    - - -

    KLimit

    - -

    Examples

    - -
    -<Class name>
    -  ...
    -  KLimit 1234
    -</Class>
    -
    - -

    Description

    - -

    The KLimit directive defines the value of the -job-k-limit attribute. It is normally set using the -lpadmin(8) command:

    - -
    -/usr/sbin/lpadmin -p classname -o job-k-limit=1234
    -
    - -

    This directive must appear inside a Class or DefaultClass -section.

    - - -

    Location

    - -

    Examples

    - -
    -<Class name>
    -  ...
    -  Location Building 3321
    -</Class>
    -
    - -

    Description

    - -

    The Location directive defines the string for the -printer-location attribute. It is normally set using the -lpadmin(8) command:

    - -
    -/usr/sbin/lpadmin -p classname -L "Building 3321"
    -
    - -

    This directive must appear inside a Class or DefaultClass -section.

    - - -

    CUPS 1.2OpPolicy

    - -

    Examples

    - -
    -<Class name>
    -  ...
    -  OpPolicy default
    -</Class>
    -
    - -

    Description

    - -

    The OpPolicy directive sets the operation policy -that is used for the printer. The lpadmin(8) command -sets the current operation policy:

    - -
    -/usr/sbin/lpadmin -p classname -o printer-op-policy=default
    -
    - -

    The default policy is named "default". All policies correspond -to those defined using the cupsd.conf Policy -section.

    - -

    This directive must appear inside a Class or DefaultClass -section.

    - - -

    CUPS 1.2Option

    - -

    Examples

    - -
    -<Class name>
    -  ...
    -  Option name value
    -  Option scaling 100
    -  Option page-left 72
    -</Class>
    -
    - -

    Description

    - -

    The Option directive specifies a default job -template attribute value. It is mapped to -name-default in the printer attributes and applied -to jobs as name.

    - -

    This directive must appear inside a Class or DefaultClass -section.

    - - -

    PageLimit

    - -

    Examples

    - -
    -<Class name>
    -  ...
    -  PageLimit 1234
    -</Class>
    -
    - -

    Description

    - -

    The PageLimit directive defines the value of the -job-page-limit attribute. It can be set using the -lpadmin(8) command:

    - -
    -/usr/sbin/lpadmin -p classname -o job-page-limit=1234
    -
    - -

    This directive must appear inside a Class or DefaultClass -section.

    - - -

    Printer

    - -

    Examples

    - -
    -<Class name>
    -  ...
    -  Printer foo
    -  Printer bar
    -  Printer bleep
    -</Class>
    -
    - -

    Description

    - -

    The Printer directive adds a printer to a class. -Printers are added to a class using the lpadmin(8) -command:

    - -
    -/usr/sbin/lpadmin -p printername -c classname
    -
    - -

    This directive must appear inside a Class or DefaultClass -section.

    - - -

    QuotaPeriod

    - -

    Examples

    - -
    -<Class name>
    -  ...
    -  QuotaPeriod 604800
    -</Class>
    -
    - -

    Description

    - -

    The QuotaPeriod directive defines the value of -the job-quota-period attribute. Typical values are -86400 (1 day), 604800 (1 week), 2592000 (1 month), and 31536000 -(1 year). It is set using the lpadmin(8) -command:

    - -
    -/usr/sbin/lpadmin -p classname -o job-quota-period=604800
    -
    - -

    This directive must appear inside a Class or DefaultClass -section.

    - - -

    CUPS 1.2Shared

    - -

    Examples

    - -
    -<Class name>
    -  ...
    -  Shared yes
    -</Class>
    -
    - -

    Description

    - -

    The Shared directive defines the initial value of -the printer-is-shared attribute. The strings -yes and no correspond to the true and false -values, respectively. The lpadmin(8) command sets -the current state:

    - -
    -/usr/sbin/lpadmin -p classname -o printer-is-shared=true
    -
    - -

    This directive must appear inside a Class or DefaultClass -section.

    - - -

    State

    - -

    Examples

    - -
    -<Class name>
    -  ...
    -  State idle
    -</Class>
    -
    - -

    Description

    - -

    The State directive defines the initial value of -the printer-state attribute. The strings -idle and stopped correspond to the IPP -enumeration values 3 and 5, respectively. The -cupsenable(8) and cupsdisable(8) -commands set the current state:

    - -
    -/usr/sbin/cupsenable classname
    -/usr/sbin/cupsdisable classname
    -
    - -

    This directive must appear inside a Class or DefaultClass -section.

    - - -

    StateMessage

    - -

    Examples

    - -
    -<Class name>
    -  ...
    -  StateMessage Class is lonely.
    -</Class>
    -
    - -

    Description

    - -

    The StateMessage directive defines the initial -string for the printer-state-message attribute. The -following are some example messages:

    - -
    -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
    -
    - -

    This directive must appear inside a Class or DefaultClass -section.

    - - -

    CUPS 1.2StateTime

    - -

    Examples

    - -
    -<Class name>
    -  ...
    -  StateTime 1133542425
    -</Class>
    -
    - -

    Description

    - -

    The StateTime directive defines the UNIX time -(seconds since Jan 1, 1970) for the last state change of the -queue. It is mapped to the printer-state-change-time -attribute.

    - -

    This directive must appear inside a Class or DefaultClass -section.

    - - - - diff --git a/doc/help/ref-client-conf.html b/doc/help/ref-client-conf.html deleted file mode 100644 index 03d1ea04c..000000000 --- a/doc/help/ref-client-conf.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - client.conf - - - - -

    client.conf

    - -

    The /etc/cups/client.conf and -~/.cups/client.conf 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.

    - -

    Encryption

    - -

    Examples

    - -
    -Encryption Never
    -Encryption IfRequested
    -Encryption Required
    -Encryption Always
    -
    - -

    Description

    - -

    The Encryption directive specifies the default -encryption settings for the client.

    - -

    The default setting is IfRequested.

    - - -

    CUPS 1.6/OS X 10.8GSSServiceName

    - -

    Examples

    - -
    -GSSServiceName http
    -GSSServiceName ipp
    -
    - -

    Description

    - -

    The GSSServiceName directive sets the Kerberos service name to use. The default is http for compatibility with Microsoft Windows.

    - - -

    ServerName

    - -

    Examples

    - -
    -ServerName foo.bar.com
    -ServerName 11.22.33.44
    -ServerName foo.bar.com:8631
    -CUPS 1.6ServerName foo.bar.com/version=1.1
    -CUPS 1.6ServerName foo.bar.com:8631/version=1.1
    -
    - -

    Description

    - -

    The ServerName 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.

    - -

    The default port number is 631 but can be overridden by adding a colon followed by the desired port number to the value.

    - -

    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.

    - -

    The default is to use the local server ("localhost") or domain socket, if so configured.

    - -
    Note: -

    Only one ServerName 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.

    -
    - - -

    CUPS 1.6/OS X 10.8User

    - -

    Examples

    - -
    -User joe
    -User bob
    -
    - -

    Description

    - -

    The User directive sets the user name to use. The default is the username associated with the current login.

    - - - - diff --git a/doc/help/ref-cups-files-conf.html.in b/doc/help/ref-cups-files-conf.html.in deleted file mode 100644 index 70c996f4a..000000000 --- a/doc/help/ref-cups-files-conf.html.in +++ /dev/null @@ -1,529 +0,0 @@ - - - - cups-files.conf - - - - -

    cups-files.conf

    - -

    The /etc/cups/cups-files.conf file contains configuration directives that control the files, directories. users. and groups that are used by the CUPS scheduler, cupsd(8). 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.

    - -

    AccessLog

    - -

    Examples

    - -
    -AccessLog /var/log/cups/access_log
    -AccessLog /var/log/cups/access_log-%s
    -AccessLog syslog
    -
    - -

    Description

    - -

    The AccessLog directive sets the name of the -access log file. If the filename is not absolute then it is -assumed to be relative to the ServerRoot 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.

    - -

    The server name can be included in the filename by using -%s in the name.

    - -

    The special name "syslog" can be used to send the access -information to the system log instead of a plain file.

    - -

    The default access log file is -/var/log/access_log.

    - - -

    CUPS 1.1.15ConfigFilePerm

    - -

    Examples

    - -
    -ConfigFilePerm 0644
    -ConfigFilePerm 0640
    -
    - -

    Description

    - -

    The ConfigFilePerm 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.

    - -
    Note: - -

    The permissions for the printers.conf 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.

    - -
    - - -

    DataDir

    - -

    Examples

    - -
    -DataDir /usr/share/cups
    -
    - -

    Description

    - -

    The DataDir directive sets the directory to use -for data files.

    - - -

    DocumentRoot

    - -

    Examples

    - -
    -DocumentRoot /usr/share/doc/cups
    -DocumentRoot /foo/bar/doc/cups
    -
    - -

    Description

    - -

    The DocumentRoot 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 ServerRoot directory. The -default directory is /usr/share/doc/cups.

    - -

    Documents are first looked up in a sub-directory for the -primary language requested by the client (e.g. -/usr/share/doc/cups/fr/...) and then directly under -the DocumentRoot directory (e.g. -/usr/share/doc/cups/...), so it is possible to -localize the web content by providing subdirectories for each -language needed.

    - - -

    ErrorLog

    - -

    Examples

    - -
    -ErrorLog /var/log/cups/error_log
    -ErrorLog /var/log/cups/error_log-%s
    -ErrorLog syslog
    -
    - -

    Description

    - -

    The ErrorLog directive sets the name of the error -log file. If the filename is not absolute then it is assumed to -be relative to the ServerRoot directory. The -default error log file is /var/log/cups/error_log.

    - -

    The server name can be included in the filename by using -%s in the name.

    - -

    The special name "syslog" can be used to send the error -information to the system log instead of a plain file.

    - - -

    CUPS 1.4/OS X 10.6FatalErrors

    - -

    Examples

    - -
    -FatalErrors none
    -FatalErrors all
    -FatalErrors browse
    -FatalErrors config
    -FatalErrors listen
    -FatalErrors log
    -FatalErrors permissions
    -FatalErrors all -permissions
    -FatalErrors config permissions log
    -
    - -

    Description

    - -

    The FatalErrors directive determines whether certain kinds of -errors are fatal. The following kinds of errors are currently recognized:

    - -
      - -
    • none - No errors are fatal
    • - -
    • all - All of the errors below are fatal
    • - -
    • browse - Browsing initialization errors are fatal, - for example failed binding to the CUPS browse port or failed connections - to LDAP servers
    • - -
    • config - Configuration file syntax errors are - fatal
    • - -
    • listen - Listen or Port errors are fatal, except for - IPv6 failures on the loopback or "any" addresses
    • - -
    • log - Log file creation or write errors are fatal
    • - -
    • permissions - Bad startup file permissions are - fatal, for example shared SSL certificate and key files with world- - read permissions
    • - -
    - -

    Multiple errors can be listed, and the form "-kind" can be used with -all to remove specific kinds of errors. The default setting is -config.

    - - -

    CUPS 1.1.18FileDevice

    - -

    Examples

    - -
    -FileDevice Yes
    -FileDevice No
    -
    - -

    Description

    - -

    The FileDevice directive determines whether the -scheduler allows new printers to be added using device URIs of -the form file:/filename. File devices are most often -used to test new printer drivers and do not support raw file -printing.

    - -

    The default setting is No.

    - -
    Note: - -

    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 FileDevice directive to -Yes for only as long as you need to add the -printers to the system, and then reset the directive to -No.

    - -
    - - -

    CUPS 1.1.3FontPath

    - -

    Examples

    - -
    -FontPath /foo/bar/fonts
    -FontPath /usr/share/cups/fonts:/foo/bar/fonts
    -
    - -

    Description

    - -

    The FontPath directive specifies the font path to -use when searching for fonts. The default font path is -/usr/share/cups/fonts.

    - - -

    Group

    - -

    Examples

    - -
    -Group lp
    -Group nobody
    -
    - -

    Description

    - -

    The Group directive specifies the UNIX group that -filter and CGI programs run as. The default group is -system-specific but is usually lp or -nobody.

    - - -

    CUPS 1.1.15LogFilePerm

    - -

    Examples

    - -
    -LogFilePerm 0644
    -LogFilePerm 0600
    -
    - -

    Description

    - -

    The LogFilePerm directive specifies the -permissions to use when writing log files. The default -is 644.

    - - -

    PageLog

    - -

    Examples

    - -
    -PageLog /var/log/cups/page_log
    -PageLog /var/log/cups/page_log-%s
    -PageLog syslog
    -
    - -

    Description

    - -

    The PageLog directive sets the name of the page -log file. If the filename is not absolute then it is assumed to -be relative to the ServerRoot directory. The -default page log file is /var/log/cups/page_log.

    - -

    The server name can be included in the filename by using -%s in the name.

    - -

    The special name "syslog" can be used to send the page -information to the system log instead of a plain file.

    - - -

    Printcap

    - -

    Examples

    - -
    -Printcap
    -Printcap /etc/printcap
    -Printcap /etc/printers.conf
    -Printcap /Library/Preferences/org.cups.printers.plist
    -
    - -

    Description

    - -

    The Printcap 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 /Library/Preferences.org.cups.printers.plist on OS X and /etc/printcap on all other operating systems.

    - -

    When a filename is specified (e.g. /etc/printcap), 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.

    - - -

    PrintcapFormat

    - -

    Examples

    - -
    -PrintcapFormat BSD
    -PrintcapFormat Solaris
    -PrintcapFormat plist
    -
    - -

    Description

    - -

    The PrintcapFormat 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.

    - - -

    CUPS 1.1.3RemoteRoot

    - -

    Examples

    - -
    -RemoteRoot remroot
    -RemoteRoot root
    -
    - -

    Description

    - -

    The RemoteRoot directive sets the username for -unauthenticated root requests from remote hosts. The default -username is remroot. Setting RemoteRoot -to root effectively disables this security -mechanism.

    - - -

    RequestRoot

    - -

    Examples

    - -
    -RequestRoot /var/spool/cups
    -RequestRoot /foo/bar/spool/cups
    -
    - -

    Description

    - -

    The RequestRoot 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 ServerRoot directory. The -default request directory is /var/spool/cups.

    - - -

    ServerBin

    - -

    Examples

    - -
    -ServerBin /usr/lib/cups
    -ServerBin /foo/bar/lib/cups
    -
    - -

    Description

    - -

    The ServerBin directive sets the directory for -server-run executables. If an absolute path is not provided then -it is assumed to be relative to the ServerRoot directory. The -default executable directory is /usr/lib/cups, -/usr/lib32/cups, or /usr/libexec/cups -depending on the operating system.

    - - -

    ServerCertificate

    - -

    Examples

    - -
    -ServerCertificate /etc/cups/ssl/server.crt
    -
    - -

    Description

    - -

    The ServerCertificate 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.

    - -

    The default certificate file is -/etc/cups/ssl/server.crt.

    - - -

    ServerKey

    - -

    Examples

    - -
    -ServerKey /etc/cups/ssl/server.key
    -
    - -

    Description

    - -

    The ServerKey directive specifies the location of -the SSL private key file used by the server when negotiating -encrypted connections.

    - -

    The default key file is -/etc/cups/ssl/server.crt.

    - - -

    ServerRoot

    - -

    Examples

    - -
    -ServerRoot /etc/cups
    -ServerRoot /foo/bar/cups
    -
    - -

    Description

    - -

    The ServerRoot directive specifies the absolute -path to the server configuration and state files. It is also used -to resolve relative paths in the cupsd.conf file. The -default server directory is /etc/cups.

    - - -

    CUPS 1.6.4SyncOnClose

    - -

    Examples

    - -
    -SyncOnClose No
    -SyncOnClose Yes
    -
    - -

    Description

    - -

    The SyncOnClose directive determines whether the scheduler -flushes changes to configuration and state files to disk. The default is -No which relies on the operating system to schedule a suitable -time to write changes to disk.

    - -
    Note: - -

    Setting SyncOnClose to Yes makes the scheduler use the fsync(2) 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.

    - -

    Enabling SyncOnClose may also cause the scheduler to periodically become unresponsive while it waits for changes to be written.

    - -
    - - -

    SystemGroup

    - -

    Examples

    - -
    -SystemGroup lpadmin
    -SystemGroup sys
    -SystemGroup system
    -SystemGroup root
    -SystemGroup root lpadmin
    -
    - -

    Description

    - -

    The SystemGroup directive specifies the system administration group for System authentication. Multiple groups can be listed, separated with spaces. The default group list is admin on OS X and lpadmin, root, sys, and/or system on other operating systems.

    - - -

    TempDir

    - -

    Examples

    - -
    -TempDir /var/tmp
    -TempDir /foo/bar/tmp
    -
    - -

    Description

    - -

    The TempDir directive specifies an absolute path -for the directory to use for temporary files. The default -directory is /var/spool/cups/tmp.

    - -

    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 -/foo/bar/tmp:

    - -
    -mkdir /foo/bar/tmp
    -chmod a+rwxt /foo/bar/tmp
    -
    - -
    Note: - -

    The TempDir cannot be pointed at a standard system temporary directory such as /tmp or /var/tmp for security reasons.

    - - -

    User

    - -

    Examples

    - -
    -User lp
    -User guest
    -
    - -

    Description

    - -

    The User directive specifies the UNIX user that filter and CGI programs run as. The default user is _lp, lp, or nobody (whichever is found first).

    - -
    Note: - -

    You may not use user root, as that would expose -the system to unacceptable security risks. The scheduler will -automatically choose user nobody if you specify a -user whose ID is 0.

    - -
    - - - - diff --git a/doc/help/ref-cupsd-conf.html.in b/doc/help/ref-cupsd-conf.html.in deleted file mode 100644 index dc9ee70cb..000000000 --- a/doc/help/ref-cupsd-conf.html.in +++ /dev/null @@ -1,2155 +0,0 @@ - - - - cupsd.conf - - - - -

    cupsd.conf

    - -

    The /etc/cups/cupsd.conf file contains -configuration directives 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.

    - -

    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 cupsd(8) -process using the startup script for your operating system:

    - -
      - -
    • AIX, Linux, Solaris: -
      -/etc/init.d/cups restart
      -	
    • - -
    • HP-UX: -
      -/sbin/init.d/cups restart
      -	
    • - -
    • MacOS X: -
      -sudo launchctl unload /System/Library/LaunchDaemons/org.cups.cupsd.plist
      -sudo launchctl load /System/Library/LaunchDaemons/org.cups.cupsd.plist
      -	
    • - -
    - -

    You can also edit this file from the CUPS web interface, which -automatically handles restarting the scheduler.

    - -
    Note: - -

    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.

    - -
    - - -

    AccessLogLevel

    - -

    Examples

    - -
    -AccessLogLevel config
    -AccessLogLevel actions
    -AccessLogLevel all
    -
    - -

    Description

    - -

    The AccessLogLevel directive controls which requests are logged -to the access log file. The following levels are defined:

    - -
      - -
    • config; Log when printers and classes are added, - deleted, or modified and when configuration files are accessed or - updated.
    • - -
    • actions; Log when print jobs are submitted, - held, released, modified, or canceled, and any of the conditions - for config.
    • - -
    • all; Log all requests.
    • - -
    - -

    The default access log level is @CUPS_ACCESS_LOG_LEVEL@.

    - - -

    Allow

    - -

    Examples

    - -
    -<Location /path>
    -  ...
    -  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)
    -</Location>
    -
    - -

    Description

    - -

    The Allow directive specifies a hostname, IP -address, or network that is allowed access to the server. -Allow directives are cumulative, so multiple -Allow directives can be used to allow access for -multiple hosts or networks.

    - -

    Host and domain name matching require that you enable the HostNameLookups -directive.

    - -

    The /mm notation specifies a CIDR netmask, as shown in -Table 1.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Table 1: CIDR Netmasks
    mmnetmaskmmnetmask
    00.0.0.08255.0.0.0
    1128.0.0.016255.255.0.0
    2192.0.0.024255.255.255.0
    ......32255.255.255.255
    - -

    The @LOCAL name will allow access from all local -interfaces. The @IF(name) 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 -not be accepted.

    - -

    The Allow directive must appear inside a Location or Limit section.

    - - -

    AuthType

    - -

    Examples

    - -
    -<Location /path>
    -  ...
    -  AuthType None
    -  AuthType Basic
    -  AuthType Digest
    -  AuthType BasicDigest
    -  AuthType Negotiate
    -</Location>
    -
    - -

    Description

    - -

    The AuthType directive defines the type of -authentication to perform:

    - -
      - -
    • None - No authentication should be - performed (default)
    • - -
    • Basic - Basic authentication should be - performed using the UNIX password and group files
    • - -
    • Digest - Digest authentication should be - performed using the /etc/cups/passwd.md5 - file
    • - -
    • BasicDigest - Basic authentication - should be performed using the - /etc/cups/passwd.md5 file
    • - -
    • Negotiate - Kerberos authentication - should be performed
    • - -
    - -

    When using Basic, Digest, -BasicDigest, or Negotiate authentication, -clients connecting through the localhost interface can -also authenticate using certificates.

    - -

    The AuthType directive must appear inside a Location or Limit section.

    - - -

    AutoPurgeJobs

    - -

    Examples

    - -
    -AutoPurgeJobs Yes
    -AutoPurgeJobs No
    -
    - -

    Description

    - -

    The AutoPurgeJobs 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 No.

    - - -

    CUPS 1.2/OS X 10.5BrowseLocalProtocols

    - -

    Examples

    - -
    -BrowseLocalProtocols all
    -BrowseLocalProtocols none
    -BrowseLocalProtocols dnssd
    -
    - -

    Description

    - -

    The BrowseLocalProtocols 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 "dnssd" on systems that support Bonjour and "none" on all others.

    - - -

    BrowseWebIF

    - -

    Examples

    - -
    -BrowseWebIF On
    -BrowseWebIF Off
    -
    - -

    Description

    - -

    The BrowseWebIF directive controls whether the CUPS web -interface is advertised via DNS-SD. The default setting is -Off.

    - - -

    Browsing

    - -

    Examples

    - -
    -Browsing On
    -Browsing Off
    -
    - -

    Description

    - -

    The Browsing directive controls whether or not printer sharing is enabled. The default setting is On.

    - - -

    CUPS 1.1.7Classification

    - -

    Examples

    - -
    -Classification
    -Classification classified
    -Classification confidential
    -Classification secret
    -Classification topsecret
    -Classification unclassified
    -
    - -

    Description

    - -

    The Classification 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.

    - - -

    CUPS 1.1.10ClassifyOverride

    - -

    Examples

    - -
    -ClassifyOverride Yes
    -ClassifyOverride No
    -
    - -

    Description

    - -

    The ClassifyOverride 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 job-sheets option and -can choose to only print one security banner before or after the -job. If the job-sheets option is set to -none then the server default classification is -used.

    - -

    The default is to not allow classification overrides.

    - - -

    CUPS 1.2/OS X 10.5DefaultAuthType

    - -

    Examples

    - -
    -DefaultAuthType Basic
    -DefaultAuthType BasicDigest
    -DefaultAuthType Digest
    -DefaultAuthType Negotiate
    -
    - -

    Description

    - -

    The DefaultAuthType directive specifies the type -of authentication to use for IPP operations that require a -username. The default is Basic.

    - - -

    CUPS 1.2/OS X 10.5DefaultEncryption

    - -

    Examples

    - -
    -DefaultEncryption Never
    -DefaultEncryption IfRequested
    -DefaultEncryption Required
    -
    - -

    Description

    - -

    The DefaultEncryption directive specifies the -type of encryption to use when performing authentication. The -default is Required.

    - - -

    DefaultLanguage

    - -

    Examples

    - -
    -DefaultLanguage de
    -DefaultLanguage en
    -DefaultLanguage es
    -DefaultLanguage fr
    -DefaultLanguage it
    -
    - -

    Description

    - -

    The DefaultLanguage 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.

    - - -

    CUPS 1.4/OS X 10.6DefaultPaperSize

    - -

    Examples

    - -
    -DefaultPaperSize Letter
    -DefaultPaperSize A4
    -DefaultPaperSize Auto
    -DefaultPaperSize None
    -
    - -

    Description

    - -

    The DefaultPaperSize directive specifies the default paper -size to use when creating new printers. The default is Auto -which uses a paper size appropriate for the system default locale. A value -of None tells the scheduler to not set the default paper -size.

    - - -

    CUPS 1.2/OS X 10.5DefaultPolicy

    - -

    Examples

    - -
    -DefaultPolicy default
    -DefaultPolicy authenticated
    -DefaultPolicy foo
    -
    - -

    Description

    - -

    The DefaultPolicy directive specifies the default -policy to use for IPP operation. The default is -default. CUPS also includes a policy called -authenticated that requires a username and password for printing -and other job operations.

    - - -

    CUPS 1.2/OS X 10.5DefaultShared

    - -

    Examples

    - -
    -DefaultShared Yes
    -DefaultShared No
    -
    - -

    Description

    - -

    The DefaultShared directive specifies whether printers are shared (published) by default. The default is Yes.

    - - -

    Deny

    - -

    Examples

    - -
    -<Location /path>
    -  ..
    -  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)
    -</Location>
    -
    - -

    Description

    - -

    The Deny directive specifies a hostname, IP -address, or network that is denied access to the server. -Deny directives are cumulative, so multiple -Deny directives can be used to deny access for -multiple hosts or networks.

    - -

    Host and domain name matching require that you enable the HostNameLookups -directive.

    - -

    The /mm notation specifies a CIDR netmask, a shown in -Table 1.

    - -

    The @LOCAL name will deny access from all local -interfaces. The @IF(name) 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 -not be denied.

    - -

    The Deny directive must appear inside a Location or Limit section.

    - - -

    CUPS 1.4/OS X 10.6DirtyCleanInterval

    - -

    Examples

    - -
    -DirtyCleanInterval 1w
    -DirtyCleanInterval 1d
    -DirtyCleanInterval 1h
    -DirtyCleanInterval 1m
    -DirtyCleanInterval 30
    -DirtyCleanInterval 0
    -
    - -

    Description

    - -

    The DirtyCleanInterval 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 0 causes the update to occur as soon as possible, typically within a few milliseconds.

    - -

    The default value is 30 (30 seconds).

    - - -

    Encryption

    - -

    Examples

    - -
    -<Location /path>
    -  ...
    -  Encryption Never
    -  Encryption IfRequested
    -  Encryption Required
    -</Location>
    -
    - -

    Description

    - -

    The Encryption directive must appear instead a Location or Limit section and specifies the -encryption settings for that location. The default setting is -IfRequested for all locations.

    - - -

    CUPS 1.3/OS X 10.5ErrorPolicy

    - -

    Examples

    - -
    -ErrorPolicy abort-job
    -ErrorPolicy retry-job
    -ErrorPolicy stop-printer
    -
    - -

    Description

    - -

    The ErrorPolicy directive defines the default policy that -is used when a backend is unable to send a print job to the -printer.

    - -

    The following values are supported:

    - -
      - -
    • abort-job - Abort the job and proceed - with the next job in the queue
    • - -
    • retry-job - Retry the job after waiting - for N seconds; the cupsd.conf JobRetryInterval - directive controls the value of N
    • - -
    • retry-this-job - Retry the current job immediately - and indefinitely.
    • - -
    • stop-printer - Stop the printer and keep - the job for future printing; this is the default - value
    • - -
    - - -

    CUPS 1.1.3FilterLimit

    - -

    Examples

    - -
    -FilterLimit 0
    -FilterLimit 200
    -FilterLimit 1000
    -
    - -

    Description

    - -

    The FilterLimit 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.

    - -

    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.

    - - -

    CUPS 1.1.16FilterNice

    - -

    Examples

    - -
    -FilterNice 0
    -FilterNice 10
    -FilterNice 19
    -
    - -

    Description

    - -

    The FilterNice directive sets the nice(1) -value to assign to filter processes. The nice value ranges from -0, the highest priority, to 19, the lowest priority. The default -is 0.

    - - -

    CUPS 1.6/OS X 10.8GSSServiceName

    - -

    Examples

    - -
    -GSSServiceName http
    -GSSServiceName ipp
    -
    - -

    Description

    - -

    The GSSServiceName directive sets the Kerberos service name to use. The default is http for compatibility with Microsoft Windows.

    - - -

    HostNameLookups

    - -

    Examples

    - -
    -HostNameLookups On
    -HostNameLookups Off
    -HostNameLookups Double
    -
    - -

    Description

    - -

    The HostNameLookups directive controls whether or -not CUPS looks up the hostname for connecting clients. The -Double setting causes CUPS 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. Set this option to -On or Double only if absolutely -required.

    - - -

    CUPS 1.1.9Include

    - -

    Examples

    - -
    -Include filename
    -Include /foo/bar/filename
    -
    - -

    Description

    - -

    The Include directive includes the named file in -the cupsd.conf file. If no leading path is provided, -the file is assumed to be relative to the ServerRoot directory.

    - - -

    CUPS 1.5JobPrivateAccess

    - -

    Examples

    - -
    -JobPrivateAccess all
    -JobPrivateAccess default
    -JobPrivateAccess {user|@group|@ACL|@OWNER|@SYSTEM}+
    -
    - -

    Description

    - -

    The JobPrivateAccess 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.

    - -

    The JobPrivateAccess directive must appear inside a Policy section.

    - - -

    CUPS 1.5JobPrivateValues

    - -

    Examples

    - -
    -JobPrivateValues all
    -JobPrivateValues default
    -JobPrivateValues none
    -JobPrivateValues attribute-name-1 [ ... attribute-name-N ]
    -
    - -

    Description

    - -

    The JobPrivateValues 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".

    - -

    The JobPrivateValues directive must appear inside a Policy section.

    - - -

    CUPS 1.2/OS X 10.5JobRetryInterval

    - -

    Examples

    - -
    -JobRetryInterval 1w
    -JobRetryInterval 1d
    -JobRetryInterval 1h
    -JobRetryInterval 1m
    -JobRetryInterval 30
    -
    - -

    Description

    - -

    The JobRetryInterval 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 retry-job or retry-current-job.

    - -

    The default is 30 (30 seconds).

    - - -

    CUPS 1.4/OS X 10.6JobKillDelay

    - -

    Examples

    - -
    -JobKillDelay 1w
    -JobKillDelay 1d
    -JobKillDelay 1h
    -JobKillDelay 1m
    -JobKillDelay 30
    -
    - -

    Description

    - -

    The JobKillDelay 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).

    - -

    The default is 30 (30 seconds).

    - - -

    CUPS 1.2/OS X 10.5JobRetryLimit

    - -

    Examples

    - -
    -JobRetryLimit 5
    -JobRetryLimit 50
    -
    - -

    Description

    - -

    The JobRetryLimit 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 retry-job. The -default is 5 times.

    - - -

    KeepAlive

    - -

    Examples

    - -
    -KeepAlive On
    -KeepAlive Off
    -
    - -

    Description

    - -

    The KeepAlive directive controls whether or not -to support persistent HTTP connections. The default is -On.

    - -

    HTTP/1.1 clients automatically support persistent connections, -while HTTP/1.0 clients must specifically request them using the -Keep-Alive attribute in the Connection: -field of each request.

    - - -

    KeepAliveTimeout

    - -

    Examples

    - -
    -KeepAliveTimeout 1w
    -KeepAliveTimeout 1d
    -KeepAliveTimeout 1h
    -KeepAliveTimeout 1m
    -KeepAliveTimeout 30
    -
    - -

    Description

    - -

    The KeepAliveTimeout 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).

    - -

    The default is 30 (30 seconds).

    - - -

    CUPS 1.1.7Limit (Location)

    - -

    Examples

    - -
    -<Location /path>
    -  <Limit GET POST>
    -  ...
    -  </Limit>
    -
    -  <Limit ALL>
    -  ...
    -  </Limit>
    -</Location>
    -
    - -

    Description

    - -

    The Limit directive groups access control -directives for specific types of HTTP requests and must appear -inside a Location section. -Access can be limited for individual request types -(DELETE, GET, HEAD, -OPTIONS, POST, PUT, and -TRACE) or for all request types (ALL). -The request type names are case-sensitive for compatibility with -Apache.

    - - -

    CUPS 1.2/OS X 10.5Limit (Policy)

    - -

    Examples

    - -
    -<Policy name>
    -  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer>
    -  ...
    -  </Limit>
    -
    -  <Limit All>
    -  ...
    -  </Limit>
    -</Policy>
    -
    - -

    Description

    - -

    When included in Policy -sections, the Limit directive groups access control -directives for specific IPP operations. Multiple operations can -be listed, separated by spaces. Table 2 lists the supported -operations.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Table 2: Supported IPP Operations
    Operation NameDescription
    AllAll operations - used as the default limit for - operations that are not listed
    Cancel-JobCancel a job
    Cancel-SubscriptionCancel a subscription
    Create-JobCreate a new, empty job
    Create-Job-SubscriptionCreates a notification subscription on a job
    Create-Printer-SubscriptionCreates a notification subscription on a printer
    CUPS-Accept-JobsSets the printer-is-accepting-jobs value for a printer to true
    CUPS-Add-Modify-ClassAdds or modifies a class
    CUPS-Add-Modify-PrinterAdds or modifies a printer
    CUPS-Authenticate-JobAuthenticates a job for printing
    CUPS-Delete-ClassDeletes a class
    CUPS-Delete-PrinterDeletes a printer
    CUPS-Get-ClassesGets a list of classes
    CUPS-Get-DefaultGets the (network/server) default printer or class
    CUPS-Get-DevicesGets a list of available devices
    CUPS-Get-PPDsGets a list of available manufacturers or drivers
    CUPS-Get-PrintersGets a list of printers and/or classes
    CUPS-Move-JobMoves a job to a new destination
    CUPS-Reject-JobsSets the printer-is-accepting-jobs value for a printer to false
    CUPS-Set-DefaultSets the network/server default printer or class
    Disable-PrinterSets the printer-state value for a printer to stopped
    Enable-PrinterSets the printer-state value for a printer to idle/processing
    Get-Job-AttributesGets information about a job
    Get-JobsGets a list of jobs
    Get-NotificationsGets a list of events
    Get-Printer-AttributesGets information about a printer or class
    Get-Subscription-AttributesGets information about a notification subscription
    Get-SubscriptionsGets a list of notification subscriptions
    Hold-JobHolds a job for printing
    Pause-PrinterSets the printer-state value for a printer to stopped
    Print-JobCreates a job with a single file for printing
    Purge-JobsRemoves all jobs from a printer
    Release-JobReleases a previously held job for printing
    Renew-SubscriptionRenews a notification subscription
    Restart-JobReprints a job
    Resume-PrinterSets the printer-state value for a printer to idle/processing
    Send-DocumentAdds a file to an job created with Create-Job
    Set-Job-AttributesChanges job options
    Validate-JobValidates job options prior to printing
    - - -

    CUPS 1.1.7LimitExcept

    - -

    Examples

    - -
    -<Location /path>
    -  <LimitExcept GET POST>
    -  ...
    -  </LimitExcept>
    -</Location>
    -
    - -

    Description

    - -

    The LimitExcept directive groups access control -directives for specific types of HTTP requests and must appear -inside a Location section. -Unlike the Limit directive, -LimitExcept restricts access for all requests -except those listed on the LimitExcept -line.

    - - -

    LimitRequestBody

    - -

    Examples

    - -
    -LimitRequestBody 10485760
    -LimitRequestBody 10m
    -LimitRequestBody 0
    -
    - -

    Description

    - -

    The LimitRequestBody 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.

    - - -

    Listen

    - -

    Examples

    - -
    -Listen 127.0.0.1:631
    -Listen 192.0.2.1:631
    -Listen [::1]:631
    -Listen *:631
    -
    - -

    Description

    - -

    The Listen directive specifies a network address -and port to listen 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.

    - - -

    CUPS 1.1.7ListenBackLog

    - -

    Examples

    - -
    -ListenBackLog 5
    -ListenBackLog 10
    -
    - -

    Description

    - -

    The ListenBackLog directive sets the maximum -number of pending connections the scheduler will allow. 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.

    - - -

    Location

    - -

    Examples

    - -
    -<Location />
    -...
    -</Location>
    -
    -<Location /admin>
    -...
    -</Location>
    -
    -<Location /admin/conf>
    -...
    -</Location>
    -
    -<Location /admin/log>
    -...
    -</Location>
    -
    -<Location /classes>
    -...
    -</Location>
    -
    -<Location /classes/name>
    -...
    -</Location>
    -
    -<Location /jobs>
    -...
    -</Location>
    -
    -<Location /printers>
    -...
    -</Location>
    -
    -<Location /printers/name>
    -...
    -</Location>
    -
    -
    - -

    Description

    - -

    The Location directive specifies access control -and authentication options for the specified HTTP resource or -path. The Allow, AuthType, Deny, Encryption, Limit, LimitExcept, Order, Require, and Satisfy directives may all -appear inside a location.

    - -

    Note that more specific resources override the less specific -ones. So the directives inside the /printers/name -location will override ones from /printers. -Directives inside /printers will override ones from -/. None of the directives are inherited.

    - -
    - - - - - - - - - - - - - - - - - -
    Table 3: Common Locations on the Server
    LocationDescription
    /The path for all get operations (get-printers, get-jobs, etc.)
    /adminThe path for all administration operations (add-printer, delete-printer, start-printer, etc.)
    /admin/confThe path for access to the CUPS configuration files (cupsd.conf, client.conf, etc.)
    /admin/logThe path for access to the CUPS log files (access_log, error_log, page_log)
    /classesThe path for all classes
    /classes/nameThe resource for class name
    /jobsThe path for all jobs (hold-job, release-job, etc.)
    /jobs/idThe resource for job id
    /printersThe path for all printers
    /printers/nameThe path for printer name
    /printers/name.ppdThe PPD file path for printer name
    - - -

    LogDebugHistory

    - -

    Examples

    - -
    -LogDebugHistory 0
    -LogDebugHistory 200
    -
    - -

    Description

    - -

    When LogLevel is not set to -debug or debug2, the LogDebugHistory -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.

    - - -

    LogLevel

    - -

    Examples

    - -
    -LogLevel none
    -LogLevel emerg
    -LogLevel alert
    -LogLevel crit
    -LogLevel error
    -LogLevel warn
    -LogLevel notice
    -LogLevel info
    -LogLevel debug
    -LogLevel debug2
    -
    - -

    Description

    - -

    The LogLevel directive specifies the level of -logging for the ErrorLog -file. The following values are recognized (each level logs -everything under the preceding levels):

    - -
      - -
    • none - Log nothing
    • - -
    • emerg - Log emergency conditions that - prevent the server from running
    • - -
    • alert - Log alerts that must be handled - immediately
    • - -
    • crit - Log critical errors that don't - prevent the server from running
    • - -
    • error - Log general errors
    • - -
    • warn - Log errors and warnings
    • - -
    • notice - Log temporary error conditions
    • - -
    • info - Log all requests and state - changes
    • - -
    • debug - Log basic debugging - information
    • - -
    • debug2 - Log all debugging - information
    • - -
    - -

    The default LogLevel is @CUPS_LOG_LEVEL@.

    - - -

    LogTimeFormat

    - -

    Examples

    - -
    -LogTimeFormat standard
    -LogTimeFormat usecs
    -
    - -

    Description

    - -

    The LogTimeFormat directive specifies the format used for the -date and time in the log files. Standard uses the standard Apache -Common Log Format date and time while usecs adds microseconds. -The default is standard.

    - - -

    MaxClients

    - -

    Examples

    - -
    -MaxClients 100
    -MaxClients 1024
    -
    - -

    Description

    - -

    The MaxClients directive controls the maximum -number of simultaneous clients that will be allowed by the -server. The default is 100 clients.

    - -
    Note: - -

    Since each print job requires a file descriptor for the status -pipe, the scheduler internally limits the MaxClients -value to 1/3 of the available file descriptors to avoid possible -problems when printing large numbers of jobs.

    - -
    - - -

    CUPS 1.1.18MaxClientsPerHost

    - -

    Examples

    - -
    -MaxClientsPerHost 10
    -
    - -

    Description

    - -

    The MaxClientsPerHost directive controls the -maximum number of simultaneous clients that will be allowed from -a single host by the server. The default is the -MaxClients value.

    - -

    This directive provides a small measure of protection against -Denial of Service attacks from a single host.

    - - -

    CUPS 1.1.16MaxCopies

    - -

    Examples

    - -
    -MaxCopies 100
    -MaxCopies 65535
    -
    - -

    Description

    - -

    The MaxCopies directive controls the maximum -number of copies that a user can print of a job. The default is -@CUPS_MAX_COPIES@ copies.

    - -
    Note: - -

    Most HP PCL laser printers internally limit the number of -copies to 100.

    - -
    - - -

    CUPS 1.6/OS X 10.8MaxHoldTime

    - -

    Examples

    - -
    -MaxHoldTime 10800
    -MaxHoldTime 3h
    -MaxHoldTime 180m
    -MaxHoldTime 0
    -
    - -

    Description

    - -

    The MaxHoldTime 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).

    - -

    The default setting is 0 which disables this functionality.

    - - -

    MaxJobs

    - -

    Examples

    - -
    -MaxJobs 100
    -MaxJobs 9999
    -MaxJobs 0
    -
    - -

    Description

    - -

    The MaxJobs 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.

    - -

    Setting the maximum size to 0 disables this functionality. The -default setting is 500.

    - - -

    CUPS 1.1.7MaxJobsPerPrinter

    - -

    Examples

    - -
    -MaxJobsPerPrinter 100
    -MaxJobsPerPrinter 9999
    -MaxJobsPerPrinter 0
    -
    - -

    Description

    - -

    The MaxJobsPerPrinter 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.

    - -

    Setting the maximum to 0 disables this functionality. The -default setting is 0.

    - - -

    CUPS 1.1.7MaxJobsPerUser

    - -

    Examples

    - -
    -MaxJobsPerUser 100
    -MaxJobsPerUser 9999
    -MaxJobsPerUser 0
    -
    - -

    Description

    - -

    The MaxJobsPerUser 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.

    - -

    Setting the maximum to 0 disables this functionality. The -default setting is 0.

    - - -

    CUPS 1.6/OS X 10.8MaxJobTime

    - -

    Examples

    - -
    -MaxJobTime 10800
    -MaxJobTime 3h
    -MaxJobTime 180m
    -MaxJobTime 0
    -
    - -

    Description

    - -

    The MaxJobTime 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).

    - -

    Setting the maximum time to 0 disables this functionality. The default setting is 3h (3 hours).

    - - -

    MaxLogSize

    - -

    Examples

    - -
    -MaxLogSize 1048576
    -MaxLogSize 1m
    -MaxLogSize 0
    -
    - -

    Description

    - -

    The MaxLogSize 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 filename.O. -This allows you to rotate the logs automatically. The default -size is 1048576 bytes (1MB).

    - -

    Setting the maximum size to 0 disables log rotation.

    - - -

    DeprecatedMaxRequestSize

    - -

    Examples

    - -
    -MaxRequestSize 10485760
    -MaxRequestSize 10m
    -MaxRequestSize 0
    -
    - -

    Description

    - -

    The MaxRequestSize 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.

    - -

    This directive is deprecated and will be removed in a -future CUPS release. Use the LimitRequestBody -directive instead.

    - - -

    CUPS 1.4/OS X 10.6MultipleOperationTimeout

    - -

    Examples

    - -
    -MultipleOperationTimeout 1w
    -MultipleOperationTimeout 1d
    -MultipleOperationTimeout 1h
    -MultipleOperationTimeout 5m
    -MultipleOperationTimeout 300
    -
    - -

    Description

    - -

    The MultipleOperationTimeout 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).

    - -

    The default is 5m (five minutes).

    - - -

    Order

    - -

    Examples

    - -
    -<Location /path>
    -  ...
    -  Order Allow,Deny
    -  Order Deny,Allow
    -</Location>
    -
    - -

    Description

    - -

    The Order directive defines the default access -control. The following values are supported:

    - -
      - -
    • allow,deny - Deny requests by default, - then check the Allow - lines followed by the Deny lines
    • - -
    • deny,allow - Allow requests by default, - then check the Deny - lines followed by the Allow lines
    • - -
    - -

    The Order directive must appear inside a Location or Limit section.

    - - -

    PageLogFormat

    - -

    Examples

    - -
    -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}
    -
    - -

    Description

    - -

    The PageLogFormat 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:

    - -
      - -
    • %%: 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.
    • - -
    - -

    The default is "%p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}".

    - - -

    CUPS 1.2/OS X 10.5PassEnv

    - -

    Examples

    - -
    -PassEnv MY_ENV_VARIABLE
    -
    - -

    Description

    - -

    The PassEnv directive specifies an environment -variable that should be passed to child processes. Normally, the -scheduler only passes the DYLD_LIBRARY_PATH, -LD_ASSUME_KERNEL, LD_LIBRARY_PATH, -LD_PRELOAD, NLSPATH, -SHLIB_PATH, TZ, and VGARGS -environment variables to child processes.

    - - -

    CUPS 1.2/OS X 10.5Policy

    - -

    Examples

    - -
    -<Policy name>
    -  <Limit operation ... operation>
    -  ...
    -  </Limit>
    -  <Limit operation ... operation>
    -  ...
    -  </Limit>
    -  <Limit All>
    -  ...
    -  </Limit>
    -</Policy>
    -
    - -

    Description

    - -

    The Policy directive specifies IPP operation -access control limits. Each policy contains 1 or more Limit sections to set the -access control limits for specific operations - user limits, -authentication, encryption, and allowed/denied addresses, -domains, or hosts. The <Limit All> section -specifies the default access control limits for operations that -are not listed.

    - -

    Policies are named and associated with printers via the -printer's operation policy setting -(printer-op-policy). The default policy for the -scheduler is specified using the DefaultPolicy -directive.

    - - -

    Port

    - -

    Examples

    - -
    -Port 631
    -Port 80
    -
    - -

    Description

    - -

    The Port directive specifies a port to listen on. -Multiple Port lines can be specified to listen on -multiple ports. The Port directive is equivalent to -"Listen *:nnn". The default port is 631.

    - -
    Note: - -

    On systems that support IPv6, this directive will bind to both -the IPv4 and IPv6 wildcard address.

    - -
    - - -

    PreserveJobHistory

    - -

    Examples

    - -
    -PreserveJobHistory On
    -PreserveJobHistory Off
    -PreserveJobHistory 1w
    -PreserveJobHistory 7d
    -PreserveJobHistory 168h
    -PreserveJobHistory 10080m
    -PreserveJobHistory 604800
    -
    - -

    Description

    - -

    The PreserveJobHistory directive controls whether the history of completed, canceled, or aborted print jobs is retained by the scheduler. A value of On preserves job information until the administrator purges it with the cancel command. A value of Off 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).

    - -

    The default value is On.

    - -
    Note: - -

    The MaxJobs, MaxJobsPerPrinter, and MaxJobsPerUser directives can cause job history to be discarded to make room for new jobs.

    - -
    - - -

    PreserveJobFiles

    - -

    Examples

    - -
    -PreserveJobFiles On
    -PreserveJobFiles Off
    -PreserveJobFiles 1w
    -PreserveJobFiles 7d
    -PreserveJobFiles 168h
    -PreserveJobFiles 10080m
    -PreserveJobFiles 604800
    -
    - -

    Description

    - -

    The PreserveJobFiles 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.

    - -

    A value of On preserves job files until the administrator purges them with the cancel command. A value of Off 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).

    - -

    The default value is 1d (one day).

    - -
    Note: - -

    The MaxJobs, MaxJobsPerPrinter, MaxJobsPerUser, and PreserveJobHistory directives can cause job files to be discarded sooner than specified.

    - -
    - - -

    CUPS 1.1.21ReloadTimeout

    - -

    Examples

    - -
    -ReloadTimeout 0
    -ReloadTimeout 30
    -
    - -

    Description

    - -

    The ReloadTimeout directive specifies the number -of seconds the scheduler will wait for active jobs to complete -before doing a restart. The default is 30 seconds.

    - - -

    CUPS 1.1.7Require

    - -

    Examples

    - -
    -<Location /path>
    -  ...
    -  Require group foo bar
    -  Require user john mary
    -  Require valid-user
    -  Require user @groupname
    -  Require user @SYSTEM
    -  Require user @OWNER
    -</Location>
    -
    - -

    Description

    - -

    The Require directive specifies that -authentication is required for the resource. The -group keyword specifies that the authenticated user -must be a member of one or more of the named groups that -follow.

    - -

    The user keyword specifies that the -authenticated user must be one of the named users or groups that -follow. Group names are specified using the "@" prefix.

    - -

    The valid-user keyword specifies that any -authenticated user may access the resource.

    - -

    The default is to do no authentication. This directive must -appear inside a Location or -Limit section.

    - - -

    RIPCache

    - -

    Examples

    - -
    -RIPCache 128m
    -RIPCache 1g
    -RIPCache 2048k
    -
    - -

    Description

    - -

    The RIPCache directive sets the size of the -memory cache used by Raster Image Processor ("RIP") filters such -as imagetoraster and pstoraster. 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.

    - - -

    CUPS 1.1.16RootCertDuration

    - -

    Examples

    - -
    -RootCertDuration 0
    -RootCertDuration 1w
    -RootCertDuration 1d
    -RootCertDuration 1h
    -RootCertDuration 5m
    -RootCertDuration 300
    -
    - -

    Description

    - -

    The RootCertDuration directive specifies the amount of time the root certificate 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.

    - -

    The default is 5m (five minutes).

    - - -

    CUPS 1.1.7Satisfy

    - -

    Examples

    - -
    -<Location /path>
    -  ...
    -  Satisfy all
    -  Satisfy any
    -</Location>
    -
    - -

    Description

    - -

    The Satisfy directive specifies whether all -conditions must be satisfied to allow access to the resource. If -set to all, then all authentication and access -control conditions must be satisfied to allow access.

    - -

    Setting Satisfy to any 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.

    - -

    The default is all. This directive must appear -inside a Location or Limit section.

    - - -

    ServerAdmin

    - -

    Examples

    - -
    -ServerAdmin user@host
    -ServerAdmin root@foo.bar.com
    -
    - -

    Description

    - -

    The ServerAdmin directive identifies the email -address for the administrator on the system. By default the -administrator email address is root@server, where -server is the ServerName.

    - - -

    CUPS 1.3.10ServerAlias

    - -

    Examples

    - -
    -ServerAlias althost
    -ServerAlias foo.example.com
    -ServerAlias bar.example.com
    -ServerAlias one.example.com two.example.com
    -ServerAlias *
    -
    - -

    Description

    - -

    The ServerAlias directive specifies alternate names that the server is known by. By default it contains a list of all aliases associated with the ServerName. The special name "*" can be used to allow any hostname when accessing CUPS via an external network interfaces.

    - -
    Note - -

    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 "*".

    - -
    - - -

    ServerName

    - -

    Examples

    - -
    -ServerName foo.example.com
    -ServerName myserver.example.com
    -
    - -

    Description

    - -

    The ServerName directive specifies the hostname -that is reported to clients. By default the server name is the -hostname.

    - - -

    CUPS 1.1.21ServerTokens

    - -

    Examples

    - -
    -ServerTokens None
    -ServerTokens ProductOnly
    -ServerTokens Major
    -ServerTokens Minor
    -ServerTokens Minimal
    -ServerTokens OS
    -ServerTokens Full
    -
    - -

    Description

    - -

    The ServerTokens directive specifies the -information that is included in the Server: header -of all HTTP responses. Table 4 lists the token name along with -the text that is returned. The default is -Minimal.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Table 4: ServerToken Names and Values
    NameValue
    NoneNo Server: header is returned
    ProductOnly"CUPS"
    Major"CUPS 1"
    Minor"CUPS 1.2"
    Minimal"CUPS 1.2.N" where N is the patch release
    OS"CUPS 1.2.N (UNAME)" where N is the patch release and - UNAME is the output of the uname(1) command
    Full"CUPS 1.2.N (UNAME) IPP/1.1" where N is the patch - release and UNAME is the output of the uname(1) - command
    - - -

    CUPS 1.2/OS X 10.5SetEnv

    - -

    Examples

    - -
    -SetEnv PATH /usr/lib/cups/filter:/bin:/usr/bin:/usr/local/bin
    -SetEnv MY_ENV_VAR foo
    -
    - -

    Description

    - -

    The SetEnv directive specifies an environment -variable that should be passed to child processes.

    - - -

    SSLListen

    - -

    Examples

    - -
    -SSLListen 127.0.0.1:443
    -SSLListen 192.0.2.1:443
    -
    - -

    Description

    - -

    The SSLListen directive specifies a network -address and port to listen for secure connections. Multiple -SSLListen directives can be provided to listen on -multiple addresses.

    - -

    The SSLListen directive is similar to the SSLPort directive but allows you -to restrict access to specific interfaces or networks.

    - - -

    SSLOptions

    - -

    Examples

    - -
    -SSLOptions None
    -SSLOptions NoEmptyFragments
    -
    - -

    Description

    - -

    The SSLOptions directive specifies additional SSL/TLS -protocol options to use for encrypted connected. Currently only two -options are supported - None (the default) for the most -secure mode and NoEmptyFragments to allow CUPS to work with -Microsoft Windows with the FIPS conformance mode enabled.

    - - -

    SSLPort

    - -

    Examples

    - -
    -SSLPort 443
    -
    - -

    Description

    - -

    The SSLPort directive specifies a port to listen -on for secure connections. Multiple SSLPort lines -can be specified to listen on multiple ports.

    - - -

    CUPS 1.6StrictConformance

    - -

    Examples

    - -
    -StrictConformance No
    -StrictConformance Yes
    -
    - -

    Description

    - -

    The StrictConformance 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 -No.

    - - -

    CUPS 1.5SubscriptionPrivateAccess

    - -

    Examples

    - -
    -SubscriptionPrivateAccess all
    -SubscriptionPrivateAccess default
    -SubscriptionPrivateAccess {user|@group|@ACL|@OWNER|@SYSTEM}+
    -
    - -

    Description

    - -

    The SubscriptionPrivateAccess 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.

    - -

    The SubscriptionPrivateAccess directive must appear inside a Policy section.

    - - -

    CUPS 1.5SubscriptionPrivateValues

    - -

    Examples

    - -
    -SubscriptionPrivateValues all
    -SubscriptionPrivateValues default
    -SubscriptionPrivateValues none
    -SubscriptionPrivateValues attribute-name-1 [ ... attribute-name-N ]
    -
    - -

    Description

    - -

    The SubscriptionPrivateValues 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".

    - -

    The SubscriptionPrivateValues directive must appear inside a Policy section.

    - - -

    Timeout

    - -

    Examples

    - -
    -Timeout 1w
    -Timeout 1d
    -Timeout 1h
    -Timeout 5m
    -Timeout 300
    -
    - -

    Description

    - -

    The Timeout 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).

    - -

    The default timeout is 5m (five minutes).

    - - -

    CUPS 1.5WebInterface

    - -

    Examples

    - -
    -WebInterface Yes
    -WebInterface No
    -
    - -

    Description

    - -

    The WebInterface directive specifies whether the web interface is enabled. The default value is No on OS X and Yes on all other operating systems.

    - - - diff --git a/doc/help/ref-error_log.html b/doc/help/ref-error_log.html deleted file mode 100644 index 010927802..000000000 --- a/doc/help/ref-error_log.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - error_log - - - - -

    error_log

    - -

    The error_log file lists messages from the -scheduler - errors, warnings, etc. The LogLevel -directive controls which messages are logged:

    - -

    - -level date-time message
    - -
    - -I [20/May/1999:19:18:28 +0000] Job 1 queued on 'DeskJet' by 'mike'.
    - -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 was cancelled by 'mike'.
    - -

    - -

    The level field contains the type of message:

    - -
      - -
    • A - Alert message (LogLevel alert) -
    • C - Critical error message (LogLevel crit) -
    • D - Debugging message (LogLevel debug) -
    • d - Detailed debugging message (LogLevel debug2) -
    • E - Normal error message (LogLevel error) -
    • I - Informational message (LogLevel info) -
    • N - Notice message (LogLevel notice) -
    • W - Warning message (LogLevel warn) -
    • X - Emergency error message (LogLevel emerg) - -
    - -

    The date-time 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 access_log file.

    - -

    The message fields contains a free-form textual -message. Messages from job filters are prefixed with "[Job -NNN]".

    - - - diff --git a/doc/help/ref-mailto-conf.html b/doc/help/ref-mailto-conf.html deleted file mode 100644 index 0b9513220..000000000 --- a/doc/help/ref-mailto-conf.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - mailto.conf - - - - -

    mailto.conf

    - -

    The /etc/cups/mailto.conf 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.

    - - -

    Cc

    - -

    Examples

    - -
    -Cc bigbrother@example.com
    -Cc John Doe <jd@example.com>
    -
    - -

    Description

    - -

    The Cc directive specifies an additional -recipient ("carbon copy") for all email notifications. The -default is to not send a copy to anyone but the subscriber.

    - - -

    From

    - -

    Examples

    - -
    -From printserver@example.com
    -From Your Happy Printer <printserver@example.com>
    -
    - -

    Description

    - -

    The From directive specifies the sender of email -notifications. The default is the ServerAdmin -address defined in the cupsd.conf file.

    - - -

    Sendmail

    - -

    Examples

    - -
    -Sendmail /usr/sbin/sendmail
    -Sendmail /usr/lib/sendmail -bm -i
    -
    - -

    Description

    - -

    The Sendmail directive specifies the command to -run to deliver an email locally. This directive cannot be used -with the SMTPServer directive, and if both -Sendmail and SMTPServer lines appear in the -mailto.conf file, only the last line is used. The -default is /usr/sbin/sendmail.

    - - -

    SMTPServer

    - -

    Examples

    - -
    -SMTPServer mail.example.com
    -SMTPServer 192.168.2.1
    -
    - -

    Description

    - -

    The SMTPServer directive specifies a hostname or -IP address of a (possibly remote) SMTP mail server. This -directive cannot be used with the Sendmail directive, -and if both Sendmail and SMTPServer lines -appear in the mailto.conf file, only the last line is -used. The default is to use the Sendmail command -instead.

    - - -

    Subject

    - -

    Examples

    - -
    -Subject [CUPS]
    -Subject URGENT EMAIL NOTIFICATION
    -
    - -

    Description

    - -

    The Subject directive specifies a prefix string to -add to the subject of each email notification. The default is to -not add a prefix string.

    - - - - diff --git a/doc/help/ref-page_log.html b/doc/help/ref-page_log.html deleted file mode 100644 index 46453eb2e..000000000 --- a/doc/help/ref-page_log.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - page_log - - - - -

    page_log

    - -

    The page_log file lists each page that is sent to a -printer. By default, each line contains the following information:

    - -

    - -printer user job-id date-time page-number num-copies job-billing job-originating-host-name job-name media sides
    - -
    - -DeskJet root 2 [20/May/1999:19:21:05 +0000] 1 1 acme-123 localhost myjob letter one-sided
    - -DeskJet root 2 [20/May/1999:19:21:05 +0000] 2 1 acme-123 localhost myjob letter one-sided
    - -

    - -

    The PageLogFormat -directive can be used to change this information.

    - -

    The printer 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.

    - -

    The user field contains the name of the user (the IPP -requesting-user-name attribute) that submitted this -file for printing.

    - -

    The job-id field contains the job number of the page -being printed. Job numbers are reset to 1 whenever the spool -directory (/var/spool/cups) is cleared, so don't -depend on this number being unique!

    - -

    The date-time 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 access_log -file.

    - -

    The page-number and num-copies 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.

    - -

    The job-billing field contains a copy of the -job-billing attribute provided with the IPP -Create-Job or Print-Job requests or "-" -if none was provided. - -

    The job-originating-host-name field contains the hostname or IP -address of the client that printed the job.

    - -

    The job-name field contains a copy of the -job-name attribute provided with the IPP -Create-Job or Print-Job requests or "-" -if none was provided. - -

    The media field contains a copy of the -media attribute provided with the IPP -Create-Job or Print-Job requests or "-" -if none was provided. - -

    The sides field contains a copy of the -sides attribute provided with the IPP -Create-Job or Print-Job requests or "-" -if none was provided. - - - diff --git a/doc/help/ref-printers-conf.html b/doc/help/ref-printers-conf.html deleted file mode 100644 index bb44c4c68..000000000 --- a/doc/help/ref-printers-conf.html +++ /dev/null @@ -1,719 +0,0 @@ - - - - printers.conf - - - - -

    printers.conf

    - -

    The CUPS scheduler (cupsd) uses the -/etc/cups/printers.conf 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.

    - -

    While the printer configuration file consists of plain text -and can be modified using your favorite text editor, you should -normally use the lpadmin(8) -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.

    - - -

    Accepting

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -  Accepting yes
    -</Printer>
    -
    - -

    Description

    - -

    The Accepting directive defines the initial state -of the printer-is-accepting-jobs attribute. This state -is also set by the cupsaccept(8) and -cupsreject(8) commands:

    - -
    -/usr/sbin/cupsaccept printername
    -/usr/sbin/cupsreject printername
    -
    - -

    This directive must appear inside a Printer or DefaultPrinter -section.

    - - -

    AllowUser

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -  AllowUser foo_user
    -  AllowUser @bar_group
    -</Printer>
    -
    - -

    Description

    - -

    The AllowUser directive adds a username or group -name to the requesting-user-name-allowed attribute -which can be set by the lpadmin(8) command:

    - -
    -/usr/sbin/lpadmin -p printername -u allow:foo_user,@bar_group
    -
    - -

    This directive must appear inside a Printer or DefaultPrinter directive. -This directive cannot be used with DenyUser.

    - - -

    DefaultPrinter

    - -

    Examples

    - -
    -<DefaultPrinter name>
    -  ...
    -</Printer>
    -
    - -

    Description

    - -

    The DefaultPrinter directive begins a printer -definition as the default server destination. The default server -destination can be set using the lpadmin(8) -command:

    - -
    -/usr/sbin/lpadmin -d printername
    -
    - -

    Note that the server default destination settings can be -overridden by the user's default destination settings which are -normally set using the lpoptions(1) command.

    - - -

    DenyUser

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -  DenyUser foo_user
    -  DenyUser @bar_group
    -</Printer>
    -
    - -

    Description

    - -

    The DenyUser directive adds a username or group -name to the requesting-user-name-denied attribute -which can be set by the lpadmin(8) command:

    - -
    -/usr/sbin/lpadmin -p printername -u deny:foo_user,@bar_group
    -
    - -

    This directive must appear inside a Printer or DefaultPrinter directive. -This directive cannot be used with AllowUser

    - - -

    DeviceURI

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -  DeviceURI socket://foo.bar.com:9100
    -</Printer>
    -
    - -

    Description

    - -

    The DeviceURI directive defines the value of the -device-uri-attribute attribute. It is normally set -using the lpadmin(8) command:

    - -
    -/usr/sbin/lpadmin -p printername -v device-uri
    -
    - -

    This directive must appear inside a Printer or DefaultPrinter -section.

    - - -

    CUPS 1.2ErrorPolicy

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -  ErrorPolicy abort-job
    -</Printer>
    -
    - -

    Description

    - -

    The ErrorPolicy directive defines the policy that -is used when a backend is unable to send a print job to the -printer. The lpadmin(8) command sets the current -error policy:

    - -
    -/usr/sbin/lpadmin -p printername -o printer-error-policy=stop-printer
    -
    - -

    The following values are supported:

    - -
      - -
    • abort-job - Abort the job and proceed - with the next job in the queue
    • - -
    • retry-current-job - Retry the current job - immediately
    • - -
    • retry-job - Retry the job after waiting - for N seconds; the cupsd.conf JobRetryInterval - directive controls the value of N
    • - -
    • stop-printer - Stop the printer and keep - the job for future printing; this is the default - value
    • - -
    - -

    This directive must appear inside a Printer or DefaultPrinter -section.

    - - -

    CUPS 1.4Filter

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -  Filter mime/type 100 program
    -</Printer>
    -
    - -

    Description

    - -

    The Filter directive lists a single filter program as defined -in the printer's PPD file.

    - -

    This directive must appear inside a -Printer or -DefaultPrinter section.

    - - -

    Info

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -  Info My Printer
    -</Printer>
    -
    - -

    Description

    - -

    The Info directive defines the string for the -printer-info attribute. It is normally set using the -lpadmin(8) command:

    - -
    -/usr/sbin/lpadmin -p printername -D "My Printer"
    -
    - -

    This directive must appear inside a Printer or DefaultPrinter -section.

    - - -

    JobSheets

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -  JobSheets none,standard
    -</Printer>
    -
    - -

    Description

    - -

    The JobSheets directive specifies the default -banner pages to print before and after a print job. In the above -example, only a standard banner will print after each -job. The lpadmin(8) command is normally used to set -the default banners: - -

    -/usr/sbin/lpadmin -p printername -o job-sheets-default=none,standard
    -
    - -

    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.

    - -

    The available banner pages depend on the local system -configuration; CUPS includes the following standard banner -files:

    - -
      - -
    • none - Do not produce a banner - page.
    • - -
    • classified - A banner page with a - "classified" label at the top and bottom.
    • - -
    • confidential - A banner page with a - "confidential" label at the top and bottom.
    • - -
    • secret - A banner page with a - "secret" label at the top and bottom.
    • - -
    • standard - A banner page with no label - at the top and bottom.
    • - -
    • topsecret - A banner page with a - "top secret" label at the top and bottom.
    • - -
    • unclassified - A banner page with an - "unclassified" label at the top and bottom.
    • - -
    - -

    This directive must appear inside a Printer or DefaultPrinter -section.

    - - -

    KLimit

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -  KLimit 1234
    -</Printer>
    -
    - -

    Description

    - -

    The KLimit directive defines the value of the -job-k-limit attribute. It is normally set using the -lpadmin(8) command:

    - -
    -/usr/sbin/lpadmin -p printername -o job-k-limit=1234
    -
    - -

    This directive must appear inside a Printer or DefaultPrinter -section.

    - - -

    Location

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -  Location Building 3321
    -</Printer>
    -
    - -

    Description

    - -

    The Location directive defines the string for the -printer-location attribute. It is normally set using the -lpadmin(8) command:

    - -
    -/usr/sbin/lpadmin -p printername -L "Building 3321"
    -
    - -

    This directive must appear inside a Printer or DefaultPrinter -section.

    - - -

    CUPS 1.2OpPolicy

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -  OpPolicy default
    -</Printer>
    -
    - -

    Description

    - -

    The OpPolicy directive sets the operation policy -that is used for the printer. The lpadmin(8) command -sets the current operation policy:

    - -
    -/usr/sbin/lpadmin -p printername -o printer-op-policy=default
    -
    - -

    The default policy is named "default". All policies correspond -to those defined using the cupsd.conf Policy -section.

    - -

    This directive must appear inside a Printer or DefaultPrinter -section.

    - - -

    CUPS 1.2Option

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -  Option name value
    -  Option scaling 100
    -  Option page-left 72
    -</Printer>
    -
    - -

    Description

    - -

    The Option directive specifies a default job -template attribute value. It is mapped to -name-default in the printer attributes and applied -to jobs as name.

    - -

    This directive must appear inside a Printer or DefaultPrinter -section.

    - - -

    PageLimit

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -  PageLimit 1234
    -</Printer>
    -
    - -

    Description

    - -

    The PageLimit directive defines the value of the -job-page-limit attribute. It can be set using the -lpadmin(8) command:

    - -
    -/usr/sbin/lpadmin -p printername -o job-page-limit=1234
    -
    - -

    This directive must appear inside a Printer or DefaultPrinter -section.

    - - -

    CUPS 1.2PortMonitor

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -  PortMonitor bcp
    -</Printer>
    -
    - -

    Description

    - -

    The PortMonitor 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 lpadmin(8) command:

    - -
    -/usr/sbin/lpadmin -p printername -o port-monitor=tbcp
    -
    - -

    The following standard port monitors are included with CUPS:

    - -
      - -
    • bcp - Encode PostScript print data using - the Adobe Binary Control Protocol (BCP)
    • - -
    • none - Do not use a port monitor
    • - -
    • tbcp - Encode PostScript print data - using the Adobe Tagged Binary Control Protocol - (TBCP)
    • - -
    - -

    This directive must appear inside a Printer or DefaultPrinter -section.

    - - -

    CUPS 1.4PreFilter

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -  PreFilter mime/type 100 program
    -</Printer>
    -
    - -

    Description

    - -

    The PreFilter directive lists a single pre-filter program as -defined in the printer's PPD file.

    - -

    This directive must appear inside a -Printer or -DefaultPrinter section.

    - - -

    Printer

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -</Printer>
    -
    - -

    Description

    - -

    The Printer directive begins a printer -definition. Printers are added using the lpadmin(8) -command: - -

    -/usr/sbin/lpadmin -p printername ...
    -
    - - -

    CUPS 1.4Product

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -  Product Acme PaperWriter
    -</Printer>
    -
    - -

    Description

    - -

    The Product directive defines the main product string from the -printer's PPD file and is used when advertising the queue via DNS-SD.

    - -

    This directive must appear inside a -Printer or -DefaultPrinter section.

    - - -

    QuotaPeriod

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -  QuotaPeriod 604800
    -</Printer>
    -
    - -

    Description

    - -

    The QuotaPeriod directive defines the value of -the job-quota-period attribute. Typical values are -86400 (1 day), 604800 (1 week), 2592000 (1 month), and 31536000 -(1 year). It is set using the lpadmin(8) -command:

    - -
    -/usr/sbin/lpadmin -p printername -o job-quota-period=604800
    -
    - -

    This directive must appear inside a Printer or DefaultPrinter -section.

    - - -

    CUPS 1.2Shared

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -  Shared yes
    -</Printer>
    -
    - -

    Description

    - -

    The Shared directive defines the initial value of -the printer-is-shared attribute. The strings -yes and no correspond to the true and false -values, respectively. The lpadmin(8) command sets -the current state:

    - -
    -/usr/sbin/lpadmin -p printername -o printer-is-shared=true
    -
    - -

    This directive must appear inside a Printer or DefaultPrinter -section.

    - - -

    State

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -  State idle
    -</Printer>
    -
    - -

    Description

    - -

    The State directive defines the initial value of -the printer-state attribute. The strings -idle and stopped correspond to the IPP -enumeration values 3 and 5, respectively. The -cupsenable(8) and cupsdisable(8) -commands set the current state:

    - -
    -/usr/sbin/cupsenable printername
    -/usr/sbin/cupsdisable printername
    -
    - -

    This directive must appear inside a Printer or DefaultPrinter -section.

    - - -

    StateMessage

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -  StateMessage Printer is lonely.
    -</Printer>
    -
    - -

    Description

    - -

    The StateMessage directive defines the initial -string for the printer-state-message attribute. The -following are some example messages:

    - -
    -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
    -
    - -

    This directive must appear inside a Printer or DefaultPrinter -section.

    - - -

    CUPS 1.2StateTime

    - -

    Examples

    - -
    -<Printer name>
    -  ...
    -  StateTime 1133542425
    -</Printer>
    -
    - -

    Description

    - -

    The StateTime directive defines the UNIX time -(seconds since Jan 1, 1970) for the last state change of the -queue. It is mapped to the printer-state-change-time -attribute.

    - -

    This directive must appear inside a Printer or DefaultPrinter -section.

    - - - - diff --git a/doc/help/ref-snmp-conf.html b/doc/help/ref-snmp-conf.html deleted file mode 100644 index 4cab237e8..000000000 --- a/doc/help/ref-snmp-conf.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - snmp.conf - - - - -

    snmp.conf

    - -

    The /etc/cups/snmp.conf 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.

    - -

    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.

    - -

    Address

    - -

    Examples

    - -
    -Address @LOCAL
    -Address @IF(name)
    -Address 255.255.255.255
    -Address 192.168.2.255
    -
    - -

    Description

    - -

    The Address directive specifies a broadcast -address to use when discovering printers. Multiple -Address lines can be provided to scan different -subnets.

    - -

    The default address is @LOCAL, which broadcasts to -all LANs.

    - - -

    Community

    - -

    Examples

    - -
    -Community public
    -Community easysw
    -Community BigCorp
    -
    - -

    Description

    - -

    The Community directive specifies a community -name to use when discovering printers and reporting status and supply -levels for network printers.

    - -

    The default community is "public".

    - - -

    DebugLevel

    - -

    Examples

    - -
    -DebugLevel 0
    -DebugLevel 1
    -DebugLevel 2
    -DebugLevel 3
    -
    - -

    Description

    - -

    The DebugLevel 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.

    - -

    The default setting is 0.

    - -

    DeviceURI

    - -

    Examples

    - -
    -DeviceURI "HP.*JetDirect.*" socket://%s:9100 socket://%s:9101 socket://%s:9102
    -DeviceURI "HP.*" socket://%s
    -DeviceURI "Acme.*Laser.*" lpd://%s/print
    -DeviceURI "Xerox.*"
    -
    - -

    Description

    - -

    The DeviceURI 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 %s -replaced by the device's hostname or IP address. If no URIs are listed, -the device is ignored.

    - -

    The DeviceURI directives are processed serially in -the order specified in the snmp.conf file until a match -is found.

    - - -

    HostNameLookups

    - -

    Examples

    - -
    -HostNameLookups on
    -HostNameLookups off
    -
    - -

    Description

    - -

    The HostNameLookups directive specifies whether printer -addresses are converted to hostnames or left as numeric IP addresses.

    - -

    The default setting is off.

    - -

    MaxRunTime

    - -

    Examples

    - -
    -MaxRunTime 10
    -MaxRunTime 300
    -
    - -

    Description

    - -

    The MaxRunTime directive specifies the maximum -number of seconds that the SNMP backend will spend looking for -printer devices on the network.

    - -

    The default setting is 10.

    - - - diff --git a/doc/help/ref-subscriptions-conf.html b/doc/help/ref-subscriptions-conf.html deleted file mode 100644 index 06cfc72c4..000000000 --- a/doc/help/ref-subscriptions-conf.html +++ /dev/null @@ -1,354 +0,0 @@ - - - - subscriptions.conf - - - - -

    subscriptions.conf

    - -

    The CUPS scheduler (cupsd) uses the -/etc/cups/subscriptions.conf 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. - -

    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 (lp(1) and lpr(1)) or specific applications via IPP -requests to manage your subscriptions.

    - -

    Events

    - -

    Examples

    - -
    -<Subscription NNN>
    -  ...
    -  Events job-completed
    -</Subscription>
    -
    - -

    Description

    - -

    The Events directive lists the events, separated -by spaces, that the subscriber is interested in. Table 1 lists -the supported event names.

    - -

    The Events directive must appear inside a Subscription section.

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Table 1: Event Names
    NameDescription
    allAll events
    job-completedSend notification when the job is completed
    job-config-changedSend notification when the job is changed
    job-createdSend notification when a job is created
    job-progressSend notification for job progress
    job-state-changedSend notification when the job-state changes
    job-stoppedSend notification when the job is stopped
    printer-addedSend notification when a printer is added
    printer-changedSend notification when a printer is changed
    printer-config-changedSend notification when a printer's configuration is changed
    printer-deletedSend notification when a printer is deleted
    printer-modifiedSend notification when a printer is modified
    printer-state-changedSend notification when the printer-state changes
    printer-stoppedSend notification when a printer is stopped
    server-auditSend notification when a bad request, security error, or - authentication error occurs
    server-restartedSend notification when the server is restarted
    server-startedSend notification when the server is initially started
    server-stoppedSend notification when the server is shutdown
    - - -

    ExpirationTime

    - -

    Examples

    - -
    -<Subscription NNN>
    -  ...
    -  ExpirationTime 1012563145
    -</Subscription>
    -
    - -

    Description

    - -

    The ExpirationTime directive specifies the -expiration time of the subscription as a UNIX time value. It is 0 -for subscriptions with no predefined expiration time.

    - -

    The ExpirationTime directive must appear inside a -Subscription -section.

    - - -

    Interval

    - -

    Examples

    - -
    -<Subscription NNN>
    -  ...
    -  Interval 30
    -</Subscription>
    -
    - -

    Description

    - -

    The Interval directive specifies the preferred -time interval for event notifications in seconds.

    - -

    The Interval directive must appear inside a Subscription section.

    - - -

    JobId

    - -

    Examples

    - -
    -<Subscription NNN>
    -  ...
    -  JobId 123
    -</Subscription>
    -
    - -

    Description

    - -

    The JobId directive specifies the -job-id for job subscriptions.

    - -

    The JobId directive must appear inside a Subscription section.

    - - -

    LeaseDuration

    - -

    Examples

    - -
    -<Subscription NNN>
    -  ...
    -  LeaseDuration
    -</Subscription>
    -
    - -

    Description

    - -

    The LeaseDuration 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.

    - -

    The LeaseDuration directive must appear inside a Subscription section.

    - - -

    NextEventId

    - -

    Examples

    - -
    -<Subscription NNN>
    -  ...
    -  NextEventId 999
    -</Subscription>
    -
    - -

    Description

    - -

    The NextEventId directive specifies the -notify-sequence-number value for the next -notification event. It starts at 1 and increases for every event -that is delivered for the subscription.

    - -

    The NextEventId directive must appear inside a Subscription section.

    - - -

    NextSubscriptionId

    - -

    Examples

    - -
    -NextSubscriptionId 999
    -
    - -

    Description

    - -

    The NextSubscriptionId directive specifies the -next subscription ID to use. It defaults to 1 more than the -highest subscription number seen.

    - - -

    Owner

    - -

    Examples

    - -
    -<Subscription NNN>
    -  ...
    -  Owner username
    -</Subscription>
    -
    - -

    Description

    - -

    The Owner directive specifies the user that owns -this subscription.

    - -

    The Owner directive must appear inside a Subscription section.

    - - -

    PrinterName

    - -

    Examples

    - -
    -<Subscription NNN>
    -  ...
    -  PrinterName name
    -</Subscription>
    -
    - -

    Description

    - -

    The PrinterName directive specifies the name of -the printer or class that is associated with this -subscription.

    - -

    The PrinterName directive must appear inside a Subscription section.

    - - -

    Recipient

    - -

    Examples

    - -
    -<Subscription NNN>
    -  ...
    -  Recipient mailto:foo@domain.com
    -</Subscription>
    -
    - -

    Description

    - -

    The Recipient directive specifies the -notify-recipient-uri value for push-type -notifications. The URI scheme name determines which notifier -program is used to send the event(s).

    - -

    The Recipient directive must appear inside a Subscription section.

    - - -

    Subscription

    - -

    Examples

    - -
    -<Subscription NNN>
    -  ...
    -</Subscription>
    -
    - -

    Description

    - -

    The Subscription section defines a single -subscription in the system. Each subscription is assigned a -unique (to the server) number starting at 1.

    - - -

    UserData

    - -

    Examples

    - -
    -<Subscription NNN>
    -  ...
    -  UserData mailto:bar<40>example.com
    -</Subscription>
    -
    - -

    Description

    - -

    The UserData directive specifies the -notify-user-data value, which is normally the "to" -address used in mailto notifications. Binary values -are introduced by encoding the bytes as hexadecimal values inside -angle brackets, e.g. "<1234>".

    - -

    The UserData directive must appear inside a Subscription section.

    - - - diff --git a/doc/help/security.html b/doc/help/security.html index 3bd564253..23455f4b4 100644 --- a/doc/help/security.html +++ b/doc/help/security.html @@ -38,18 +38,6 @@ authentication:

    username and password information - this is the default on MacOS X and systems with GNU TLS or OpenSSL installed.

  • -
  • 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. - -

    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.

    - -

    Recommendation: Enable encryption to hide the - username and password information.

  • -
  • 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:

    Recommendation: None.

  • -
  • Flooding the network with broadcast packets on port - 631. - -

    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.

    - -

    Recommendation: Block browse packets from - foreign or untrusted networks using a router or - firewall.

  • -
  • 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:

    Encryption Issues

    -

    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:

    - -
      - -
    1. 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. - -

      Recommendation: Do not depend on encryption for - security when connecting to servers over the Internet or - untrusted WAN links.

    2. - -
    +

    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.

    diff --git a/doc/help/spec-browsing.html b/doc/help/spec-browsing.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/doc/help/spec-cmp.html b/doc/help/spec-cmp.html index 9b01233ce..4bbe7f0ee 100644 --- a/doc/help/spec-cmp.html +++ b/doc/help/spec-cmp.html @@ -215,7 +215,7 @@ rpmbuild -ta cups-version-source.tar.gz
     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
    diff --git a/doc/help/spec-design.html b/doc/help/spec-design.html
    index 28a14eb31..4b1311a9e 100644
    --- a/doc/help/spec-design.html
    +++ b/doc/help/spec-design.html
    @@ -31,7 +31,7 @@ WIDTH="768" HEIGHT="768" ALT="CUPS Block Diagram">
     
     

    Config Files

    -

    The scheduler uses several configuration files to store the server settings (cupsd.conf), available classes (classes.conf), available printers (printers.conf), current notification subscriptions (subscriptions.conf), and supported file types and filters (mime.types, mime.convs). 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.

    +

    The scheduler uses several configuration files to store the server settings (cupsd.conf), available classes (classes.conf), available printers (printers.conf), current notification subscriptions (subscriptions.conf), and supported file types and filters (mime.types, mime.convs). 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.

    Job Files

    @@ -41,8 +41,8 @@ WIDTH="768" HEIGHT="768" ALT="CUPS Block Diagram">

    Log Files

    -

    The scheduler keeps three kinds of log files which are normally stored in the /var/log/cups directory. The access_log file lists every HTTP and IPP request that is processed by the scheduler. The error_log file contains messages from the scheduler and its helper applications that can be used -to track down problems. The page_log file lists every page that is printed, allowing for simple print accounting.

    +

    The scheduler keeps three kinds of log files which are normally stored in the /var/log/cups directory. The access_log file lists every HTTP and IPP request that is processed by the scheduler. The error_log file contains messages from the scheduler and its helper applications that can be used +to track down problems. The page_log file lists every page that is printed, allowing for simple print accounting.

    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 logrotated(8) program to rotate them instead.

    diff --git a/doc/help/spec-ipp.html b/doc/help/spec-ipp.html index e06270c18..3a9fd6cfa 100644 --- a/doc/help/spec-ipp.html +++ b/doc/help/spec-ipp.html @@ -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:
    The client OPTIONALLY supplies one or more authentication values as specified by the "auth-info-required" attribute. -
    "job-billing" (text(MAX)):CUPS 1.1 +
    "job-billing" (text(MAX))CUPS 1.1 or + "job-account-id (text(MAX))"CUPS 1.7:
    The client OPTIONALLY supplies a billing string that is logged with the page accounting information. @@ -476,7 +477,8 @@ Create-Job request:
    The client OPTIONALLY supplies one or more authentication values as specified by the "auth-info-required" attribute. -
    "job-billing" (text(MAX)):CUPS 1.1 +
    "job-billing" (text(MAX))CUPS 1.1 or + "job-account-id (text(MAX))CUPS 1.7:
    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.

    The job-billing attribute provides a text value to associate with a job for billing purposes. +

    Note: This attribute has been superceded by the "job-account-id" attribute defined in PWG 5100.11: Job and Printer Extensions - Set 2.
    + +

    job-cancel-after (integer(1:MAX))CUPS 2.0

    + +

    The job-cancel-after attribute provides the maximum number of seconds that are allowed for processing a job.

    +

    job-hold-until (keyword | name(MAX))CUPS 1.1

    The job-hold-until attribute specifies a hold time. In addition to the diff --git a/doc/help/spec-pdf.html b/doc/help/spec-pdf.html index 407f47887..7276c908a 100644 --- a/doc/help/spec-pdf.html +++ b/doc/help/spec-pdf.html @@ -9,16 +9,7 @@

    CUPS PDF Format

    -

    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 pdftopdf 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 pdftops filter.

    - -

    More information will be posted here as the PDF workflow -filters are added to CUPS.

    +

    CUPS PDF files (application/vnd.cups-pdf) are device-dependent PDF files that contain a job ticket information.

    diff --git a/doc/help/spec-ppd.html b/doc/help/spec-ppd.html index 5853ede5f..4cdb4721a 100644 --- a/doc/help/spec-ppd.html +++ b/doc/help/spec-ppd.html @@ -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 index 24e630e56..000000000 --- a/doc/help/whatsnew.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - What's New in CUPS 1.7 - - - - -

    What's New in CUPS 1.7

    - -

    This page provides a high-level outline of the changes in CUPS 1.7. If you have never used CUPS before, read the "Overview of CUPS" document instead.

    - -

    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 IPP Everywhere specification. Full support for this functionality depends on additional software from your operating system vendor.

    - -

    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 ipptool utility.

    - -

    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.

    - - - diff --git a/doc/index.html.in b/doc/index.html.in index 763637246..c94db2d9a 100644 --- a/doc/index.html.in +++ b/doc/index.html.in @@ -1,105 +1,55 @@ - - - - - Home - CUPS @CUPS_VERSION@@CUPS_REVISION@ - - - - - - - - -
    - - - - - - - - - - - - -
      Home    Administration    Classes    Online Help    Jobs    Printers  
    - - - - - -
    - -

    CUPS @CUPS_VERSION@

    - -

    CUPS is the standards-based, open source printing system developed by -Apple Inc. for OS® X and -other UNIX®-like operating systems.

    - -
    CUPS
    - - - -
    - -

    CUPS for Users

    - -

    Overview of CUPS

    - -

    Command-Line Printing and Options

    - -

    What's New in CUPS 1.7

    - -

    User Forum

    - -
    - -

    CUPS for Administrators

    - -

    Adding Printers and Classes

    - -

    Managing Operation Policies

    - -

    Printer Accounting Basics

    - -

    Server Security

    - -

    Using Kerberos Authentication

    - -

    Using Network Printers

    - -

    cupsd.conf Reference

    - -
    - -

    CUPS for Developers

    - -

    Introduction to CUPS Programming

    - -

    CUPS API

    - -

    Filter and Backend Programming

    - -

    HTTP and IPP APIs

    - -

    PPD API

    - -

    Raster API

    - -

    PPD Compiler Driver Information File Reference

    - -

    Developer Forum

    - -
    - -
     
    CUPS and the CUPS logo are trademarks of -Apple Inc. Copyright 2007-2014 Apple -Inc. All rights reserved.
    - - + + + + + + + + + + Home - CUPS @CUPS_VERSION@@CUPS_REVISION@ + + + +
    +
    +

    CUPS @CUPS_VERSION@

    +

    CUPS is the standards-based, open source printing system developed by Apple Inc. for OS X® and other UNIX®-like operating systems.

    +
    + +
    + + + diff --git a/doc/it/index.html.in b/doc/it/index.html.in deleted file mode 100644 index d17bc84ae..000000000 --- a/doc/it/index.html.in +++ /dev/null @@ -1,105 +0,0 @@ - - - - - Home - CUPS @CUPS_VERSION@@CUPS_REVISION@ - - - - - - - - -
    - - - - - - - - - - - - -
      Home    Amministrazione    Classi    Guida in linea    Stampe    Stampanti  
    - - - - - -
    - -

    CUPS @CUPS_VERSION@

    - -

    CUPS è il sistema di stampa open source, basato su degli standard, sviluppato da -Apple Inc. per OS® X e -per gli altri sistemi operativi UNIX®-like.

    - -
    CUPS
    - - - -
    - -

    CUPS per gli utenti

    - -

    Presentazione di CUPS

    - -

    Stampare da riga di comando ed opzioni

    - -

    Le novità introdotte da CUPS 1.7

    - -

    Forum dell'utente

    - -
    - -

    CUPS per gli amministratori

    - -

    Aggiungere stampanti e classi

    - -

    Gestire le policy

    - -

    Nozioni di base sulla gestione delle stampanti

    - -

    Sicurezza del server

    - -

    Usare l'autenticazione Kerberos

    - -

    Usare le stampanti di rete

    - -

    Riferimenti a cupsd.conf

    - -
    - -

    CUPS per gli sviluppatori

    - -

    Introduzione alla programmazione di CUPS

    - -

    Le API di CUPS

    - -

    Programmazione dei filtri e dei backend

    - -

    Le API HTTP e IPP

    - -

    Le API PPD

    - -

    Le API Raster

    - -

    File di riferimento del compilatore di driver PPD

    - -

    Forum dello sviluppatore

    - -
    - -
     
    CUPS e il logo di CUPS sono marchi registrati da -Apple Inc. Copyright 2007-2014 Apple -Inc. Tutti i diritti sono riservati.
    - - diff --git a/doc/ja/index.html.in b/doc/ja/index.html.in deleted file mode 100644 index e2ccad31a..000000000 --- a/doc/ja/index.html.in +++ /dev/null @@ -1,105 +0,0 @@ - - - - - ホーム - CUPS 1.6 - - - - - - - - -
    - - - - - - - - - - - - -
      ãƒ›ãƒ¼ãƒ     ç®¡ç†    ã‚¯ãƒ©ã‚¹    ãƒ˜ãƒ«ãƒ—    ã‚¸ãƒ§ãƒ–    ãƒ—リンター  
    - - - - - -
    - -

    CUPS @CUPS_VERSION@

    - -

    CUPS は、OS® X およびその他の UNIX ® ç³» OS のために、 -Apple Inc. -によって開発された標準ベースのオープンソース印刷システムです。

    - -
    CUPS
    - - - -
    - -

    ユーザー向け

    - -

    CUPS の概要

    - -

    コマンドラインからの印刷とオプション

    - -

    CUPS 1.6 の新機能

    - -

    ユーザーフォーラム

    - -
    - -

    管理者向け

    - -

    プリンターとクラスの追加

    - -

    操作ポリシーの管理について

    - -

    プリンターアカウンティングの基本

    - -

    サーバーのセキュリティー

    - -

    Kerberos 認証の使い方

    - -

    ネットワークプリンターの使い方

    - -

    cupsd.conf リファレンス

    - -
    - -

    開発者向け

    - -

    CUPS プログラミングのイントロダクション

    - -

    CUPS API

    - -

    フィルタとバックエンドのプログラミング

    - -

    HTTP と IPP の API

    - -

    PPD API

    - -

    ラスター API

    - -

    PPD コンパイラー用ドライバー情報ファイル リファレンス

    - -

    開発者フォーラム

    - -
    - -
     
    CUPS and the CUPS logo are trademarks of -Apple Inc. CUPS is copyright 2007-2014 Apple -Inc. All rights reserved.
    - - diff --git a/doc/pt_BR/index.html.in b/doc/pt_BR/index.html.in deleted file mode 100644 index 949921ede..000000000 --- a/doc/pt_BR/index.html.in +++ /dev/null @@ -1,107 +0,0 @@ - - - - - Home - CUPS @CUPS_VERSION@@CUPS_REVISION@ - - - - - - - - -
    - - - - - - - - - - - - -
      Início    Administração    Classes    Ajuda online    Trabalhos    Impressoras  
    - - - - - -
    - -

    CUPS @CUPS_VERSION@

    - -

    CUPS é o sistema de impressão de código aberto e baseado em padrões desenvolvido pela -Apple Inc. para o OS® X e -outros sistemas operacionais similares ao UNIX®.

    - -
    CUPS
    - - - -
    - -

    CUPS para usuários

    - -

    Visão geral do CUPS

    - -

    Impressão e opções em linha de comando

    - -

    O que há de novo no CUPS 1.7

    - -

    Fórum de usuários

    - -
    - -

    CUPS para administradores

    - -

    Adicionar impressoras e classes

    - -

    Gerenciar políticas de operação

    - -

    Básico de contabilidade de impressão

    - -

    Segurança do servidor

    - -

    Usar autenticação via kerberos

    - -

    Usar impressoras de rede

    - -

    Referência para o cupsd.conf

    - -

    Encontrar drivers de impressora

    - -
    - -

    CUPS para desenvolvedores

    - -

    Introdução à programação do CUPS

    - -

    API do CUPS

    - -

    Programação de filtros e retaguarda

    - -

    APIs HTTP e IPP

    - -

    API PPD

    - -

    API de rasterização

    - -

    Referência para o compilador de arquivos de informação de driver PPD

    - -

    Fórum de desenvolvedores

    - -
    - -
     
    CUPS e o logo do CUPS são marcas registradas de -Apple Inc. Copyright 2007-2014 Apple -Inc. Todos os direitos reservados.
    - - diff --git a/doc/ru/index.html.in b/doc/ru/index.html.in deleted file mode 100644 index fa07ae85e..000000000 --- a/doc/ru/index.html.in +++ /dev/null @@ -1,101 +0,0 @@ - - - - - Начало - CUPS @CUPS_VERSION@@CUPS_REVISION@ - - - - - - - - -
    - - - - - - - - - - - - -
      ÐÐ°Ñ‡Ð°Ð»Ð¾    ÐÐ´Ð¼Ð¸Ð½Ð¸ÑÑ‚рирование    Ð“руппы    Ð¡Ð¿Ñ€Ð°Ð²ÐºÐ°    Ð—адания    ÐŸÑ€Ð¸Ð½Ñ‚еры  
    - - - - - -
    - -

    CUPS @CUPS_VERSION@

    - -

    CUPS — поддерживающая большинство стандартов, свободная подсистема печати, разрабатываемая компанией Apple Inc. для операционной системы Mac OS® X и других UNIX®-подобных операционных систем.

    - -
    CUPS
    - - - -
    - -

    CUPS для пользователей

    - -

    Введение в CUPS

    - -

    Печать из командной строки

    - -

    Что нового в CUPS 1.6

    - -

    Форум пользователей

    - -
    - -

    CUPS для администраторов

    - -

    Добавление принтеров и групп

    - -

    Управление доступом

    - -

    Использование ресурсов

    - -

    Безопасность системы

    - -

    Использование аутентификации Kerberos

    - -

    Использование сетевых принтеров

    - -

    Справочник по cupsd.conf

    - -
    - -

    CUPS для разработчиков

    - -

    Введение в разработку CUPS

    - -

    CUPS API

    - -

    Разработка фильтров и модулей

    - -

    API доступа по HTTP и IPP

    - -

    PPD API

    - -

    Raster API

    - -

    Справочник по компилятору PPD

    - -

    Форум разработчиков

    - -
    - -
     
    CUPS а также логотип CUPS являются зарегистрированными торговыми марками Apple Inc. Авторские права на CUPS принадлежат (2007-2014) компании Apple Inc. Все права защищены.
    - - diff --git a/filter/Dependencies b/filter/Dependencies index 159135b85..3087485a7 100644 --- a/filter/Dependencies +++ b/filter/Dependencies @@ -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 diff --git a/filter/commandtops.c b/filter/commandtops.c index a75809c24..a5f0609ee 100644 --- a/filter/commandtops.c +++ b/filter/commandtops.c @@ -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 $". */ diff --git a/filter/common.c b/filter/common.c index 2d52e781c..73fb370b5 100644 --- a/filter/common.c +++ b/filter/common.c @@ -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 $". */ diff --git a/filter/error.c b/filter/error.c index 994cfb86d..e062757a1 100644 --- a/filter/error.c +++ b/filter/error.c @@ -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 $". */ diff --git a/filter/gziptoany.c b/filter/gziptoany.c index 81a3f17d8..e8e1340d4 100644 --- a/filter/gziptoany.c +++ b/filter/gziptoany.c @@ -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 $". */ diff --git a/filter/interpret.c b/filter/interpret.c index 03ed6658a..f784fa090 100644 --- a/filter/interpret.c +++ b/filter/interpret.c @@ -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 $". */ diff --git a/filter/pstops.c b/filter/pstops.c index 49a6fa542..750d32259 100644 --- a/filter/pstops.c +++ b/filter/pstops.c @@ -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 $". */ diff --git a/filter/raster.c b/filter/raster.c index 8dd76abe7..8905a83d9 100644 --- a/filter/raster.c +++ b/filter/raster.c @@ -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 $". */ diff --git a/filter/rasterbench.c b/filter/rasterbench.c index eacbd0eec..56d2778be 100644 --- a/filter/rasterbench.c +++ b/filter/rasterbench.c @@ -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 $". */ diff --git a/filter/rastertoepson.c b/filter/rastertoepson.c index e53acabfc..908ec4852 100644 --- a/filter/rastertoepson.c +++ b/filter/rastertoepson.c @@ -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 $". */ diff --git a/filter/rastertohp.c b/filter/rastertohp.c index 5efad593b..c415b4f39 100644 --- a/filter/rastertohp.c +++ b/filter/rastertohp.c @@ -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. */ /* @@ -47,10 +36,10 @@ 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 $". */ diff --git a/filter/rastertolabel.c b/filter/rastertolabel.c index ca0e143da..6c12da25c 100644 --- a/filter/rastertolabel.c +++ b/filter/rastertolabel.c @@ -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. */ /* @@ -78,10 +67,10 @@ 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 $". */ diff --git a/filter/rastertopwg.c b/filter/rastertopwg.c index 97dab1cbc..529b27f38 100644 --- a/filter/rastertopwg.c +++ b/filter/rastertopwg.c @@ -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 $". */ diff --git a/filter/testraster.c b/filter/testraster.c index 8b682a5ab..2e4d324a8 100644 --- a/filter/testraster.c +++ b/filter/testraster.c @@ -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 +#include /* @@ -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 $". */ diff --git a/locale/Dependencies b/locale/Dependencies index 7a08bb2bc..29e13cec6 100644 --- a/locale/Dependencies +++ b/locale/Dependencies @@ -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 diff --git a/locale/Makefile b/locale/Makefile index 29fc38ac0..d4e9c2851 100644 --- a/locale/Makefile +++ b/locale/Makefile @@ -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 $". # diff --git a/locale/cups.header b/locale/cups.header index 275aef490..85dcb39b2 100644 --- a/locale/cups.header +++ b/locale/cups.header @@ -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/". # # diff --git a/locale/cups.pot b/locale/cups.pot index 843c0c2d8..40b972896 100644 --- a/locale/cups.pot +++ b/locale/cups.pot @@ -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 \n" "Language-Team: LANGUAGE \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 https://%s:%d%s." 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 "" diff --git a/locale/cups.strings b/locale/cups.strings index d11eef137..faaa462c2 100644 --- a/locale/cups.strings +++ b/locale/cups.strings @@ -192,6 +192,7 @@ " --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."; @@ -250,7 +251,7 @@ " -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)."; @@ -336,8 +337,14 @@ "\"%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."; @@ -394,6 +401,7 @@ "%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\"."; @@ -403,6 +411,7 @@ "%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\"."; @@ -687,6 +696,7 @@ "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\"."; @@ -694,6 +704,7 @@ "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."; @@ -706,19 +717,25 @@ "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."; @@ -766,12 +783,10 @@ "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"; @@ -953,6 +968,7 @@ "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"; @@ -975,6 +991,8 @@ "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."; @@ -1016,6 +1034,8 @@ "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."; @@ -1047,10 +1067,9 @@ "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"; @@ -1061,6 +1080,10 @@ "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? "; @@ -1102,13 +1125,10 @@ "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)."; @@ -1128,6 +1148,7 @@ "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"; @@ -1173,23 +1194,16 @@ "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."; @@ -1210,7 +1224,6 @@ "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."; @@ -1223,6 +1236,7 @@ "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"; @@ -1260,6 +1274,7 @@ "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"; @@ -1275,6 +1290,7 @@ "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"; @@ -1301,7 +1317,7 @@ "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"; @@ -1327,6 +1343,9 @@ "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\"."; @@ -1350,7 +1369,7 @@ "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:"; @@ -1358,8 +1377,6 @@ "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"; @@ -1377,7 +1394,6 @@ "Web Interface is Disabled" = "Web Interface is Disabled"; "Yes" = "Yes"; "You must access this page using the URL https://%s:%d%s." = "You must access this page using the URL https://%s:%d%s."; -"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"; @@ -1392,12 +1408,12 @@ "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."; @@ -1432,7 +1448,7 @@ "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."; @@ -1494,18 +1510,6 @@ "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"; diff --git a/locale/cups_ca.po b/locale/cups_ca.po index bff2ebdd7..8e524fc35 100644 --- a/locale/cups_ca.po +++ b/locale/cups_ca.po @@ -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ó \n" "Language-Team: Catalan \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 https://%s:%d%s." -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." diff --git a/locale/cups_cs.po b/locale/cups_cs.po index d689543a3..d72c19047 100644 --- a/locale/cups_cs.po +++ b/locale/cups_cs.po @@ -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 \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 https://%s:%d%s." -msgstr Pro přístup k této stránce, použijte adresu URL https://%s:%d%s." - -#: 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 https://" +"%s:%d%s." msgstr "" +"Pro přístup k této stránce, použijte adresu URL https://%s:%d%s." -#: 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 index 8ae1b2ea0..000000000 --- a/locale/cups_de.po +++ /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 https://%" -"s:%d%s." -msgstr "" -"Auf diese Seite greifen Sie zu über die URL https://%s:%d%s." - -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" diff --git a/locale/cups_es.po b/locale/cups_es.po index 6ed3795c0..461553c9a 100644 --- a/locale/cups_es.po +++ b/locale/cups_es.po @@ -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 \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 https://" "%s:%d%s." -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." diff --git a/locale/cups_fr.po b/locale/cups_fr.po index 7735eeac0..402e54a39 100644 --- a/locale/cups_fr.po +++ b/locale/cups_fr.po @@ -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 \n" "Language-Team: LANGUAGE \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 https://%s:%d%s." -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" diff --git a/locale/cups_it.po b/locale/cups_it.po index 7b015fb67..30b102772 100644 --- a/locale/cups_it.po +++ b/locale/cups_it.po @@ -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 \n" "Language-Team: Arch Linux Italian Team \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 https://%s:%d%s." -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." diff --git a/locale/cups_ja.po b/locale/cups_ja.po index c95bbe698..9f3dd4f8e 100644 --- a/locale/cups_ja.po +++ b/locale/cups_ja.po @@ -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 \n" "Language-Team: OPFC TRANSCUPS \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 https://%s:%d%s を使ってア" "クセスする必要があります。" -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 index 7b070c168..000000000 --- a/locale/cups_pt_BR.po +++ /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 \n" -"Language-Team: Brazilian Portuguese \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 https://" -"%s:%d%s." -msgstr "" -"Você tem que acessar esta página usando a URL https://%s:%d%s." - -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" diff --git a/locale/cups_ru.po b/locale/cups_ru.po index 4fd839713..425dbdf49 100644 --- a/locale/cups_ru.po +++ b/locale/cups_ru.po @@ -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 https://%s:%d%s." -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 "Заголовок: " diff --git a/locale/po2strings.c b/locale/po2strings.c index 49fba46b3..bb8da2826 100644 --- a/locale/po2strings.c +++ b/locale/po2strings.c @@ -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: * @@ -18,10 +18,6 @@ * Compile with: * * gcc -o po2strings po2strings.c `cups-config --libs` - * - * Contents: - * - * main() - Convert .po file to .strings. */ #include @@ -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 $". */ diff --git a/locale/strings2po.c b/locale/strings2po.c index 489893238..6c2864c94 100644 --- a/locale/strings2po.c +++ b/locale/strings2po.c @@ -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 @@ -10,12 +18,6 @@ * 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 @@ -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 index 9523da9d7..000000000 --- a/locale/translate.c +++ /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 -#include - - -/* - * 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, "
    ')) == NULL) - { - /* - * textarea doesn't end, abort! - */ - - puts("DIV SHORT DATA!"); - ret = 0; - break; - } - - bufptr ++; - - if ((bufend = strstr(bufptr, "
    ")) == 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, "<", 4)) - { - *bufptr = '<'; - _cups_strcpy(bufptr + 1, bufptr + 4); - } - else if (!strncmp(bufptr, ">", 4)) - { - *bufptr = '>'; - _cups_strcpy(bufptr + 1, bufptr + 4); - } - else if (!strncmp(bufptr, "&", 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 $". - */ diff --git a/man/Makefile b/man/Makefile index 6074d0c34..dc1a8c0a4 100644 --- a/man/Makefile +++ b/man/Makefile @@ -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 $". # diff --git a/man/backend.man b/man/backend.man index a5fca5c00..16070da80 100644 --- a/man/backend.man +++ b/man/backend.man @@ -1,172 +1,205 @@ .\" -.\" "$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 \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 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 $". .\" diff --git a/man/cancel.man b/man/cancel.man index 17380fa0c..5f5501d07 100644 --- a/man/cancel.man +++ b/man/cancel.man @@ -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 $". .\" diff --git a/man/classes.conf.man b/man/classes.conf.man index 2e93fc8fd..1cbac426b 100644 --- a/man/classes.conf.man +++ b/man/classes.conf.man @@ -1,110 +1,36 @@ .\" -.\" "$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 - ... -.br -Defines a specific printer class. -.TP 5 - ... -.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 $". .\" diff --git a/man/client.conf.man.in b/man/client.conf.man.in index fd5236987..a32316e91 100644 --- a/man/client.conf.man.in +++ b/man/client.conf.man.in @@ -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 $". .\" diff --git a/man/cups-config.man b/man/cups-config.man index b75527db5..731ae0cb3 100644 --- a/man/cups-config.man +++ b/man/cups-config.man @@ -1,117 +1,116 @@ .\" -.\" "$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 index 1c75f68b0..000000000 --- a/man/cups-deviced.man.in +++ /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 index a3dd8d0e5..000000000 --- a/man/cups-driverd.man.in +++ /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 $". -.\" diff --git a/man/cups-files.conf.man.in b/man/cups-files.conf.man.in index bfc46e70f..c6c7bf9c7 100644 --- a/man/cups-files.conf.man.in +++ b/man/cups-files.conf.man.in @@ -1,152 +1,201 @@ .\" -.\" "$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 $". .\" diff --git a/man/cups-lpd.man.in b/man/cups-lpd.man.in index d1cb61786..9c3f7ba88 100644 --- a/man/cups-lpd.man.in +++ b/man/cups-lpd.man.in @@ -1,124 +1,126 @@ .\" -.\" "$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 $". .\" diff --git a/man/cups-snmp.conf.man b/man/cups-snmp.conf.man index 261704fde..4de799ee1 100644 --- a/man/cups-snmp.conf.man +++ b/man/cups-snmp.conf.man @@ -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 $". .\" diff --git a/man/cups-snmp.man.in b/man/cups-snmp.man.in index 03ab2e077..89ddf489c 100644 --- a/man/cups-snmp.man.in +++ b/man/cups-snmp.man.in @@ -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 index 000000000..357be2145 --- /dev/null +++ b/man/cups.man @@ -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 $". +.\" diff --git a/man/cupsaccept.man b/man/cupsaccept.man index 35f2cbfde..8d34b866f 100644 --- a/man/cupsaccept.man +++ b/man/cupsaccept.man @@ -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 $". .\" diff --git a/man/cupsaddsmb.man.in b/man/cupsaddsmb.man.in index 6117edd01..4d3a06905 100644 --- a/man/cupsaddsmb.man.in +++ b/man/cupsaddsmb.man.in @@ -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 $". .\" diff --git a/man/cupsctl.man b/man/cupsctl.man index 692d15a8c..38684b87d 100644 --- a/man/cupsctl.man +++ b/man/cupsctl.man @@ -1,97 +1,106 @@ .\" -.\" "$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 index 000000000..213fb797c --- /dev/null +++ b/man/cupsd-helper.man @@ -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 index 000000000..8b8e0c895 --- /dev/null +++ b/man/cupsd-logs.man @@ -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 $". +.\" diff --git a/man/cupsd.conf.man.in b/man/cupsd.conf.man.in index 3e427c33a..3926a5324 100644 --- a/man/cupsd.conf.man.in +++ b/man/cupsd.conf.man.in @@ -1,537 +1,805 @@ .\" -.\" "$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 \fR... \fB\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 \fR... \fB\fR .TP 5 -DefaultShared Yes +\fB \fR... \fB\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 \fR... \fB\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 \fR... \fB\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 - ... -.br -Specifies the IPP operations that are being limited inside a policy. +\fBServerTokens ProductOnly\fR .TP 5 - ... +\fBServerTokens Major\fR .TP 5 - ... -.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 - ... -.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 - ... -.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 + + + Order allow,deny + Allow from 10./8 + AuthType Basic + Require valid-user + Satisfy any + +.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 $". .\" diff --git a/man/cupsd.man.in b/man/cupsd.man.in index 6193de6b8..f410d4bdf 100644 --- a/man/cupsd.man.in +++ b/man/cupsd.man.in @@ -1,72 +1,127 @@ .\" -.\" "$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 $". .\" diff --git a/man/cupsenable.man b/man/cupsenable.man index 00d23eb2c..752ccbe49 100644 --- a/man/cupsenable.man +++ b/man/cupsenable.man @@ -1,93 +1,106 @@ .\" -.\" "$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 $". .\" diff --git a/man/cupsfilter.man b/man/cupsfilter.man index 4370f8f15..6e3f13368 100644 --- a/man/cupsfilter.man +++ b/man/cupsfilter.man @@ -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. .\" @@ -11,100 +11,133 @@ .\" which 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 $". .\" diff --git a/man/cupstestdsc.man b/man/cupstestdsc.man index dfc255ac4..5b07afd0c 100644 --- a/man/cupstestdsc.man +++ b/man/cupstestdsc.man @@ -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 $". .\" diff --git a/man/cupstestppd.man b/man/cupstestppd.man index 6f0eecead..153a48c9c 100644 --- a/man/cupstestppd.man +++ b/man/cupstestppd.man @@ -1,165 +1,151 @@ .\" -.\" "$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 $". .\" diff --git a/man/filter.man b/man/filter.man index 29239eace..46d0b1249 100644 --- a/man/filter.man +++ b/man/filter.man @@ -1,238 +1,228 @@ .\" -.\" "$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 \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 \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 $". .\" diff --git a/man/ippfind.man b/man/ippfind.man index ec2b5ce55..c9f6c1328 100644 --- a/man/ippfind.man +++ b/man/ippfind.man @@ -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 $". .\" diff --git a/man/ipptool.man b/man/ipptool.man index 5949d06f9..f88a0c1ad 100644 --- a/man/ipptool.man +++ b/man/ipptool.man @@ -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. .\" @@ -11,156 +11,225 @@ .\" which 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 $". .\" diff --git a/man/ipptoolfile.man b/man/ipptoolfile.man index 3a1549009..2021184d2 100644 --- a/man/ipptoolfile.man +++ b/man/ipptoolfile.man @@ -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. .\" @@ -11,539 +11,522 @@ .\" which 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 -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 -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 -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[,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[,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 $". .\" diff --git a/man/lp.man b/man/lp.man index e07b3f1e1..6594282a3 100644 --- a/man/lp.man +++ b/man/lp.man @@ -1,252 +1,222 @@ .\" -.\" "$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 $". .\" diff --git a/man/lpadmin.man b/man/lpadmin.man index 7119934b0..a89e6a5d4 100644 --- a/man/lpadmin.man +++ b/man/lpadmin.man @@ -1,227 +1,212 @@ .\" -.\" "$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 $". .\" diff --git a/man/lpc.man b/man/lpc.man index bbee8074c..3b1553d1a 100644 --- a/man/lpc.man +++ b/man/lpc.man @@ -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 $". .\" diff --git a/man/lpinfo.man b/man/lpinfo.man index 0521c3a0c..850a41227 100644 --- a/man/lpinfo.man +++ b/man/lpinfo.man @@ -1,115 +1,138 @@ .\" -.\" "$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 $". .\" diff --git a/man/lpmove.man b/man/lpmove.man index e7819d1cb..9641b5ae2 100644 --- a/man/lpmove.man +++ b/man/lpmove.man @@ -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 $". .\" diff --git a/man/lpoptions.man.in b/man/lpoptions.man.in index 88072f935..3c8f22d5b 100644 --- a/man/lpoptions.man.in +++ b/man/lpoptions.man.in @@ -1,135 +1,141 @@ .\" -.\" "$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 index f21726d4c..000000000 --- a/man/lppasswd.man +++ /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 $". -.\" diff --git a/man/lpq.man b/man/lpq.man index d922b0ae4..6607924ba 100644 --- a/man/lpq.man +++ b/man/lpq.man @@ -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 $". .\" diff --git a/man/lpr.man b/man/lpr.man index 2325f8eae..7cd400afa 100644 --- a/man/lpr.man +++ b/man/lpr.man @@ -1,122 +1,149 @@ .\" -.\" "$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 $". .\" diff --git a/man/lprm.man b/man/lprm.man index 33851fb6b..41071b983 100644 --- a/man/lprm.man +++ b/man/lprm.man @@ -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 $". .\" diff --git a/man/lpstat.man b/man/lpstat.man index 021be700c..7a8cce483 100644 --- a/man/lpstat.man +++ b/man/lpstat.man @@ -1,143 +1,152 @@ .\" -.\" "$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 $". .\" diff --git a/man/mailto.conf.man b/man/mailto.conf.man index a8dba7680..8d182098e 100644 --- a/man/mailto.conf.man +++ b/man/mailto.conf.man @@ -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 $". .\" diff --git a/man/mantohtml.c b/man/mantohtml.c index 512dda134..6811f0b90 100644 --- a/man/mantohtml.c +++ b/man/mantohtml.c @@ -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/". */ /* @@ -24,14 +18,26 @@ */ #include +#include #include +/* + * Local globals... + */ + +static const char /* Start/end tags for fonts */ + * const start_fonts[] = { "", "", "" }, + * const end_fonts[] = { "", "", "" }; + + /* * 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[] = { "", "", "" }, - * const end_fonts[] = { "", "", "" }; + 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("\n" + fputs("\n" "\n" "\n" "\n" "\t\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("
  • \n\n", outfile); - blist = 0; - } + font = 0; if (list) { - if (list == 1) - fputs("\n", outfile); - else if (list) - fputs("\n", outfile); - - fputs("
    \n", outfile); - list = 0; + fprintf(outfile, "\n", list); + list = NULL; } - line[strlen(line) - 1] = '\0'; /* Strip LF */ - if (line[2] == 'H') 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, "

    \n%s", start_fonts[font]); + fputs("\n", outfile); else - fprintf(outfile, "\n%s", start_fonts[font]); + fputs("\n", outfile); } - else if (!strncmp(line, ".LP", 3) || !strncmp(line, ".PP", 3)) + else if (!strncmp(line, ".B ", 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("\n\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("\n", outfile); - else if (list) - fputs("\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("\n", outfile); - list = 0; + if (post) + { + fputs(post, outfile); + post = NULL; } + } + else if (!strncmp(line, ".BR ", 4)) + { + /* + * Alternating bold and roman (plain) text... + */ - fputs("

    ", 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("\n\n", outfile); - blist = 0; + fputs(post, outfile); + post = NULL; } + } + else if (!strncmp(line, ".IR ", 4)) + { + /* + * Alternating italic and roman (plain) text... + */ - if (!list) - fputs("

    \n", outfile); - else if (list == 1) - fputs("\n", outfile); - else if (list) - fputs("\n", outfile); - - fputs("
    ", 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("
    \n
    ", outfile); - list = 2; + fputs(post, outfile); + post = NULL; } - else if (list) - fputs("
    \n
    ", outfile); - else - fputs("
    \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("
    \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("
    \n", outfile); + fputs(end_fonts[font], outfile); + font = 0; + + if (list) + { + fprintf(outfile, "\n", list); + list = NULL; + } + + fputs("

    ", 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, "

    \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("
    \n", outfile);
    +	fputs(end_fonts[font], outfile);
    +	font = 0;
    +
    +        fputs("
    \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("\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, "\n", list); + list = NULL; + } + + fprintf(outfile, "

    ", amount, -amount); + + if (line[1] == 'T') + post = "
    \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("\n", outfile); - else - { - fputs("

      \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, "\n", list); + list = NULL; + } - fputs("
    • ", outfile); + if (!list) + { + fputs("
      \n", outfile); + list = "dl"; + list_indent = amount; + } + + fputs("
      ", outfile); + snprintf(ddpost, sizeof(ddpost), "
      ", 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("
    • \n
    \n", outfile); - blist = 0; - } + /* + * Bullet list... + */ - fputs("

    ", 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, "\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, "

  • ", amount); + else + fprintf(outfile, "

    ", amount); + } + else if (!strncmp(line, ".br", 3)) + { /* - * Process the text as if it was in-line... + * Grab line break... */ - post = "\n
    \n
    "; - goto process_text; + fputs("
    \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, "\n", list); +// list = NULL; +// } + + pre = 1; + fputs("

    \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("
    \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%s%s", end_fonts[font], line + 3, - start_fonts[font]); - } - else if (!strncmp(line, ".I ", 3)) - { - /* - * Grab italic text... - */ - - fprintf(outfile, "%s%s%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, "%s", 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("", outfile); - while (*lineptr) - putc_entity(*lineptr++, outfile); - fputs("", outfile); - } - else - { - /* - * Local man page, do a link... - */ - - fprintf(outfile, "", manurl); - while (*lineptr) - putc_entity(*lineptr++, outfile); - fputs("", 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("\n
    ", outfile); - list = 2; - } } } fprintf(outfile, "%s\n", end_fonts[font]); - - if (blist) - { - fputs("
  • \n\n", outfile); - } + font = 0; if (list) { - if (list == 1) - fputs("\n", outfile); - else if (list) - fputs("
    \n", outfile); - - fputs("
    \n", outfile); + fprintf(outfile, "\n", list); + list = NULL; } fputs("\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, "", 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, "", first); + else if (i && second) + fprintf(fp, "", second); + + if (i && link) + { + fputs("", 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("®", fp); + break; + + case '(' : + if (!strncmp(s, "lq", 2)) + fputs("“", fp); + else if (!strncmp(s, "rq", 2)) + fputs("”", fp); + else if (!strncmp(s, "Tm", 2)) + fputs("TM", 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("—", fp); + s += 3; + } + else if (!strncmp(s, "(en", 3)) + { + fputs("–", fp); + s += 3; + } + else + { + putc(*s, fp); + s ++; + } + } + else if (*s == '[') + { + /* + * Substitute escaped character... + */ + + s ++; + if (!strncmp(s, "co]", 3)) + fputs("©", fp); + else if (!strncmp(s, "de]", 3)) + fputs("°", fp); + else if (!strncmp(s, "rg]", 3)) + fputs("®", fp); + else if (!strncmp(s, "tm]", 3)) + fputs("TM", 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, "%s", 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("&", 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 $". */ diff --git a/man/mime.convs.man b/man/mime.convs.man index 108f1df4b..7a25c8023 100644 --- a/man/mime.convs.man +++ b/man/mime.convs.man @@ -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 $". .\" diff --git a/man/mime.types.man b/man/mime.types.man index 707da56f9..07e397c9f 100644 --- a/man/mime.types.man +++ b/man/mime.types.man @@ -1,115 +1,116 @@ .\" -.\" "$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 $". .\" diff --git a/man/notifier.man b/man/notifier.man index 4ae3b07e8..c7c051809 100644 --- a/man/notifier.man +++ b/man/notifier.man @@ -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 $". .\" diff --git a/man/ppdc.man b/man/ppdc.man index f489cd268..8ef965007 100644 --- a/man/ppdc.man +++ b/man/ppdc.man @@ -1,81 +1,106 @@ .\" -.\" "$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 $". .\" diff --git a/man/ppdcfile.man b/man/ppdcfile.man index a3c9cd849..23d0d307a 100644 --- a/man/ppdcfile.man +++ b/man/ppdcfile.man @@ -1,170 +1,165 @@ .\" -.\" "$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 +\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 $". .\" diff --git a/man/ppdhtml.man b/man/ppdhtml.man index 3e1e4dc57..6454804f6 100644 --- a/man/ppdhtml.man +++ b/man/ppdhtml.man @@ -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 $". .\" diff --git a/man/ppdi.man b/man/ppdi.man index f26f263a7..b6b6bdfb3 100644 --- a/man/ppdi.man +++ b/man/ppdi.man @@ -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 $". .\" diff --git a/man/ppdmerge.man b/man/ppdmerge.man index 0a0c51825..38109b053 100644 --- a/man/ppdmerge.man +++ b/man/ppdmerge.man @@ -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 $". .\" diff --git a/man/ppdpo.man b/man/ppdpo.man index f2b0a2b1b..b2786babb 100644 --- a/man/ppdpo.man +++ b/man/ppdpo.man @@ -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 $". .\" diff --git a/man/printers.conf.man b/man/printers.conf.man index 1ab7876c2..73076b0f2 100644 --- a/man/printers.conf.man +++ b/man/printers.conf.man @@ -1,124 +1,36 @@ .\" -.\" "$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 - ... -.br -Defines a specific printer. -.TP 5 - ... -.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 $". .\" diff --git a/man/subscriptions.conf.man b/man/subscriptions.conf.man index edb52ac15..3e265e8b1 100644 --- a/man/subscriptions.conf.man +++ b/man/subscriptions.conf.man @@ -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 - ... -.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 $". .\" diff --git a/monitor/Dependencies b/monitor/Dependencies index 54d05e76a..10a252aaa 100644 --- a/monitor/Dependencies +++ b/monitor/Dependencies @@ -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 diff --git a/monitor/bcp.c b/monitor/bcp.c index 423ab110e..11c2e68ea 100644 --- a/monitor/bcp.c +++ b/monitor/bcp.c @@ -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 $". */ diff --git a/monitor/tbcp.c b/monitor/tbcp.c index 5f415a5e3..5325faf0d 100644 --- a/monitor/tbcp.c +++ b/monitor/tbcp.c @@ -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 $". */ diff --git a/notifier/Dependencies b/notifier/Dependencies index f5a26a468..d844f9de4 100644 --- a/notifier/Dependencies +++ b/notifier/Dependencies @@ -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 diff --git a/notifier/dbus.c b/notifier/dbus.c index fc63aac4b..2a01f2479 100644 --- a/notifier/dbus.c +++ b/notifier/dbus.c @@ -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 $". */ diff --git a/packaging/cups.list.in b/packaging/cups.list.in index e2535c734..94a648e85 100644 --- a/packaging/cups.list.in +++ b/packaging/cups.list.in @@ -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 $". # diff --git a/packaging/cups.spec b/packaging/cups.spec index 998cf753e..8ea836b32 100644 --- a/packaging/cups.spec +++ b/packaging/cups.spec @@ -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. # @@ -21,11 +21,6 @@ # 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} @@ -43,14 +38,18 @@ %{?_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 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 $". # diff --git a/packaging/cups.spec.in b/packaging/cups.spec.in index da6538a83..dc942e68a 100644 --- a/packaging/cups.spec.in +++ b/packaging/cups.spec.in @@ -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. # @@ -21,11 +21,6 @@ # 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} @@ -43,6 +38,10 @@ %{?_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 $". # diff --git a/ppdc/Dependencies b/ppdc/Dependencies index bcabc3195..9feb96757 100644 --- a/ppdc/Dependencies +++ b/ppdc/Dependencies @@ -1,184 +1,208 @@ 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 diff --git a/ppdc/Makefile b/ppdc/Makefile index 9526ce007..bc8bb646a 100644 --- a/ppdc/Makefile +++ b/ppdc/Makefile @@ -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 $". # diff --git a/ppdc/genstrings.cxx b/ppdc/genstrings.cxx index dee4b5588..72e9a8529 100644 --- a/ppdc/genstrings.cxx +++ b/ppdc/genstrings.cxx @@ -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 $". // diff --git a/ppdc/ppdc-array.cxx b/ppdc/ppdc-array.cxx index fcef51b27..5b5bacc18 100644 --- a/ppdc/ppdc-array.cxx +++ b/ppdc/ppdc-array.cxx @@ -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 $". // diff --git a/ppdc/ppdc-catalog.cxx b/ppdc/ppdc-catalog.cxx index ecf7678c1..35cadd6aa 100644 --- a/ppdc/ppdc-catalog.cxx +++ b/ppdc/ppdc-catalog.cxx @@ -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 $". // diff --git a/ppdc/ppdc-driver.cxx b/ppdc/ppdc-driver.cxx index f04168a22..105eb9c59 100644 --- a/ppdc/ppdc-driver.cxx +++ b/ppdc/ppdc-driver.cxx @@ -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 $". // diff --git a/ppdc/ppdc-source.cxx b/ppdc/ppdc-source.cxx index 8838a298e..85ef17ea7 100644 --- a/ppdc/ppdc-source.cxx +++ b/ppdc/ppdc-source.cxx @@ -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 $". // diff --git a/ppdc/ppdc.cxx b/ppdc/ppdc.cxx index 6cb6bed27..d8a7c6005 100644 --- a/ppdc/ppdc.cxx +++ b/ppdc/ppdc.cxx @@ -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 $". // diff --git a/ppdc/ppdmerge.cxx b/ppdc/ppdmerge.cxx index 63966c0e7..cc388814d 100644 --- a/ppdc/ppdmerge.cxx +++ b/ppdc/ppdmerge.cxx @@ -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 $". // diff --git a/ppdc/sample.drv b/ppdc/sample.drv index f5505e648..1b6bbceb2 100644 --- a/ppdc/sample.drv +++ b/ppdc/sample.drv @@ -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... @@ -22,26 +22,37 @@ // 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 @@ -103,12 +114,12 @@ #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 $". // diff --git a/scheduler/Dependencies b/scheduler/Dependencies index 20356462d..e61c28800 100644 --- a/scheduler/Dependencies +++ b/scheduler/Dependencies @@ -1,264 +1,270 @@ 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 diff --git a/scheduler/Makefile b/scheduler/Makefile index 92fc1750f..cd12aca18 100644 --- a/scheduler/Makefile +++ b/scheduler/Makefile @@ -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 $". # diff --git a/scheduler/auth.c b/scheduler/auth.c index 35b70f394..dbc90cec6 100644 --- a/scheduler/auth.c +++ b/scheduler/auth.c @@ -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 # endif /* HAVE_PAM_PAM_APPL_H */ #endif /* HAVE_LIBPAM */ -#ifdef HAVE_USERSEC_H -# include -#endif /* HAVE_USERSEC_H */ #ifdef HAVE_MEMBERSHIP_H # include #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 $". */ diff --git a/scheduler/auth.h b/scheduler/auth.h index 16f1fd5af..c42c0a2f9 100644 --- a/scheduler/auth.h +++ b/scheduler/auth.h @@ -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/". */ /* @@ -27,10 +27,8 @@ #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 $". */ diff --git a/scheduler/cert.c b/scheduler/cert.c index 1ad4439f0..9bbd2e282 100644 --- a/scheduler/cert.c +++ b/scheduler/cert.c @@ -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 $". */ diff --git a/scheduler/classes.c b/scheduler/classes.c index b920c4f24..17add06ce 100644 --- a/scheduler/classes.c +++ b/scheduler/classes.c @@ -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, "")) + else if (!_cups_strcasecmp(line, "") || !_cups_strcasecmp(line, "")) { if (p != NULL) { @@ -806,7 +795,10 @@ cupsdSaveAllClasses(void) cupsFilePutConf(fp, "Option", value); } - cupsFilePuts(fp, "\n"); + if (pclass == DefaultPrinter) + cupsFilePuts(fp, "\n"); + else + cupsFilePuts(fp, "\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 $". */ diff --git a/scheduler/client.c b/scheduler/client.c index 51a11acb1..7b74131ae 100644 --- a/scheduler/client.c +++ b/scheduler/client.c @@ -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__ @@ -30,39 +32,6 @@ #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 */ "

    %s

    \n" "\n" "\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 $". */ diff --git a/scheduler/client.h b/scheduler/client.h index fe6c473fe..5096c4f43 100644 --- a/scheduler/client.h +++ b/scheduler/client.h @@ -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 $". */ diff --git a/scheduler/colorman.c b/scheduler/colorman.c index 9e6c71033..964932a3f 100644 --- a/scheduler/colorman.c +++ b/scheduler/colorman.c @@ -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. @@ -25,40 +25,18 @@ * 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 $". */ diff --git a/scheduler/conf.c b/scheduler/conf.c index bef190a04..cd468934c 100644 --- a/scheduler/conf.c +++ b/scheduler/conf.c @@ -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 $". */ diff --git a/scheduler/conf.h b/scheduler/conf.h index 485383e4c..1c47b53bc 100644 --- a/scheduler/conf.h +++ b/scheduler/conf.h @@ -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 $". */ diff --git a/scheduler/cups-deviced.c b/scheduler/cups-deviced.c index 80fc7da1b..85264ed87 100644 --- a/scheduler/cups-deviced.c +++ b/scheduler/cups-deviced.c @@ -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 $". */ diff --git a/scheduler/cups-driverd.cxx b/scheduler/cups-driverd.cxx index 1439af787..8b047a9e7 100644 --- a/scheduler/cups-driverd.cxx +++ b/scheduler/cups-driverd.cxx @@ -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 $". */ diff --git a/scheduler/cups-exec.c b/scheduler/cups-exec.c index 3474c6e39..e63b163b3 100644 --- a/scheduler/cups-exec.c +++ b/scheduler/cups-exec.c @@ -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 */ /* @@ -25,7 +21,11 @@ */ #include +#include #include +#include +#include +#include #ifdef HAVE_SANDBOX_H # include # ifndef SANDBOX_NAMED_EXTERNAL @@ -35,6 +35,13 @@ #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 $". */ diff --git a/scheduler/cups-lpd.c b/scheduler/cups-lpd.c index 28a772696..a84c7b795 100644 --- a/scheduler/cups-lpd.c +++ b/scheduler/cups-lpd.c @@ -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 $". */ diff --git a/scheduler/cups.sh.in b/scheduler/cups.sh.in index 77557645a..c50e893eb 100644 --- a/scheduler/cups.sh.in +++ b/scheduler/cups.sh.in @@ -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 $". # diff --git a/scheduler/cupsd.h b/scheduler/cupsd.h index 379def642..f8b2c1195 100644 --- a/scheduler/cupsd.h +++ b/scheduler/cupsd.h @@ -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 $". */ diff --git a/scheduler/cupsfilter.c b/scheduler/cupsfilter.c index 4102277a2..75300fb9a 100644 --- a/scheduler/cupsfilter.c +++ b/scheduler/cupsfilter.c @@ -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 $". */ diff --git a/scheduler/dirsvc.c b/scheduler/dirsvc.c index 20cd61be0..7c1840439 100644 --- a/scheduler/dirsvc.c +++ b/scheduler/dirsvc.c @@ -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 $". */ diff --git a/scheduler/file.c b/scheduler/file.c index 1d2529057..ae91b9e8b 100644 --- a/scheduler/file.c +++ b/scheduler/file.c @@ -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 $". */ diff --git a/scheduler/ipp.c b/scheduler/ipp.c index 0607caa8b..9806f1058 100644 --- a/scheduler/ipp.c +++ b/scheduler/ipp.c @@ -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 $". */ diff --git a/scheduler/job.c b/scheduler/job.c index eaa641b92..0dbf39b6f 100644 --- a/scheduler/job.c +++ b/scheduler/job.c @@ -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, "\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 $". */ diff --git a/scheduler/job.h b/scheduler/job.h index efb0bd293..909e3a30e 100644 --- a/scheduler/job.h +++ b/scheduler/job.h @@ -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 $". */ diff --git a/scheduler/listen.c b/scheduler/listen.c index 997956c8f..842d37877 100644 --- a/scheduler/listen.c +++ b/scheduler/listen.c @@ -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 $". */ diff --git a/scheduler/log.c b/scheduler/log.c index 207cd5f10..7566edbcd 100644 --- a/scheduler/log.c +++ b/scheduler/log.c @@ -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 $". */ diff --git a/scheduler/main.c b/scheduler/main.c index e9ced71c4..92c10b127 100644 --- a/scheduler/main.c +++ b/scheduler/main.c @@ -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. * @@ -28,17 +28,18 @@ # include # 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 +# 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 #endif /* HAVE_MALLOC_H && HAVE_MALLINFO */ @@ -60,16 +61,16 @@ * 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 $". */ diff --git a/scheduler/mime.c b/scheduler/mime.c index 158ccfa4c..29d3ebcf2 100644 --- a/scheduler/mime.c +++ b/scheduler/mime.c @@ -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 $". */ diff --git a/scheduler/mime.h b/scheduler/mime.h index e193a3a73..ddd328384 100644 --- a/scheduler/mime.h +++ b/scheduler/mime.h @@ -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 # include # include +# include /* @@ -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 $". */ diff --git a/scheduler/network.c b/scheduler/network.c index 4773cd64a..18f9b7c37 100644 --- a/scheduler/network.c +++ b/scheduler/network.c @@ -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 $". */ diff --git a/scheduler/org.cups.cups-lpd.plist.in b/scheduler/org.cups.cups-lpd.plist.in index 32067ef1d..43eee68c1 100644 --- a/scheduler/org.cups.cups-lpd.plist.in +++ b/scheduler/org.cups.cups-lpd.plist.in @@ -6,6 +6,10 @@ Label org.cups.cups-lpd + EnableTransactions + + EnablePressuredExit + ProgramArguments /usr/libexec/cups/daemon/cups-lpd diff --git a/scheduler/org.cups.cupsd.path.in b/scheduler/org.cups.cupsd.path.in new file mode 100644 index 000000000..1bccc6f9d --- /dev/null +++ b/scheduler/org.cups.cupsd.path.in @@ -0,0 +1,8 @@ +[Unit] +Description=CUPS Scheduler + +[Path] +PathExists=@CUPS_CACHEDIR@/org.cups.cupsd + +[Install] +WantedBy=multi-user.target diff --git a/scheduler/org.cups.cupsd.plist b/scheduler/org.cups.cupsd.plist index ccc861d8f..51d28e2c2 100644 --- a/scheduler/org.cups.cupsd.plist +++ b/scheduler/org.cups.cupsd.plist @@ -6,6 +6,8 @@ org.cups.cupsd EnableTransactions + EnablePressuredExit + ExitTimeOut 60 KeepAlive @@ -21,8 +23,7 @@ /usr/sbin/cupsd -l - + EnvironmentVariables CUPS_DEBUG_LOG @@ -30,10 +31,8 @@ CUPS_DEBUG_LEVEL 3 CUPS_DEBUG_FILTER - ^(http|_http|ipp|_ipp|mime).* + ^(cupsDo|cupsGet|cupsMake|cupsSet|http|_http|ipp|_ipp|mime).* - ServiceIPC - Sockets Listeners diff --git a/scheduler/org.cups.cupsd.service.in b/scheduler/org.cups.cupsd.service.in new file mode 100644 index 000000000..43900167b --- /dev/null +++ b/scheduler/org.cups.cupsd.service.in @@ -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 index 000000000..cd98aa56e --- /dev/null +++ b/scheduler/org.cups.cupsd.socket.in @@ -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 diff --git a/scheduler/policy.c b/scheduler/policy.c index 8a3357ddc..b9883d42d 100644 --- a/scheduler/policy.c +++ b/scheduler/policy.c @@ -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 $". */ diff --git a/scheduler/printers.c b/scheduler/printers.c index b3d5081e0..a56f6d474 100644 --- a/scheduler/printers.c +++ b/scheduler/printers.c @@ -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, "")) + else if (!_cups_strcasecmp(line, "") || !_cups_strcasecmp(line, "
    ")) { 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, "\n"); + if (printer == DefaultPrinter) + cupsFilePuts(fp, "\n"); + else + cupsFilePuts(fp, "\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, "&"); 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, "<"); 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 $". */ diff --git a/scheduler/printers.h b/scheduler/printers.h index 2b5c8ad54..c4ccf03f2 100644 --- a/scheduler/printers.h +++ b/scheduler/printers.h @@ -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 $". */ diff --git a/scheduler/process.c b/scheduler/process.c index fdadedfd1..1b1aeae8f 100644 --- a/scheduler/process.c +++ b/scheduler/process.c @@ -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/". */ /* @@ -32,6 +22,10 @@ #ifdef __APPLE__ # include #endif /* __APPLE__ */ +#ifdef HAVE_POSIX_SPAWN +# include +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 $". */ diff --git a/scheduler/select.c b/scheduler/select.c index b31fb97c7..357cc40af 100644 --- a/scheduler/select.c +++ b/scheduler/select.c @@ -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 #elif defined(HAVE_POLL) # include -#elif defined(__hpux) -# include #else # include #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 $". */ diff --git a/scheduler/server.c b/scheduler/server.c index dfe03d2a0..8b40c2155 100644 --- a/scheduler/server.c +++ b/scheduler/server.c @@ -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 $". */ diff --git a/scheduler/statbuf.c b/scheduler/statbuf.c index a3f32f09d..b608b15ae 100644 --- a/scheduler/statbuf.c +++ b/scheduler/statbuf.c @@ -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 $". */ diff --git a/scheduler/subscriptions.c b/scheduler/subscriptions.c index 79d755804..95a2d2518 100644 --- a/scheduler/subscriptions.c +++ b/scheduler/subscriptions.c @@ -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 $". */ diff --git a/scheduler/sysman.c b/scheduler/sysman.c index d3fd5f602..4b6421531 100644 --- a/scheduler/sysman.c +++ b/scheduler/sysman.c @@ -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/". */ @@ -42,11 +24,6 @@ #endif /* HAVE_VPROC_TRANSACTION_BEGIN */ #ifdef __APPLE__ # include -# ifdef HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H -# include -# 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. @@ -67,15 +44,6 @@ * 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 $". */ diff --git a/scheduler/testlpd.c b/scheduler/testlpd.c index da86fa7ac..8db5affd7 100644 --- a/scheduler/testlpd.c +++ b/scheduler/testlpd.c @@ -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 $". */ diff --git a/scheduler/testmime.c b/scheduler/testmime.c index f42b7df58..0271309f6 100644 --- a/scheduler/testmime.c +++ b/scheduler/testmime.c @@ -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 $". */ diff --git a/scheduler/testspeed.c b/scheduler/testspeed.c index 3e95f4a66..9b443cbf4 100644 --- a/scheduler/testspeed.c +++ b/scheduler/testspeed.c @@ -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 $". */ diff --git a/scheduler/testsub.c b/scheduler/testsub.c index 472161378..97a3a83ba 100644 --- a/scheduler/testsub.c +++ b/scheduler/testsub.c @@ -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 index 78cc3b711..000000000 --- a/scheduler/tls-darwin.c +++ /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 index 388147dbe..000000000 --- a/scheduler/tls-gnutls.c +++ /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 index 19d3eefbf..000000000 --- a/scheduler/tls-openssl.c +++ /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 index 41a107ab8..000000000 --- a/scheduler/tls.c +++ /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 $". - */ diff --git a/scheduler/type.c b/scheduler/type.c index 2b986e588..046ce3d1b 100644 --- a/scheduler/type.c +++ b/scheduler/type.c @@ -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 $". */ diff --git a/scheduler/util.c b/scheduler/util.c index 42d8ce735..a31be2ec9 100644 --- a/scheduler/util.c +++ b/scheduler/util.c @@ -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 $". */ diff --git a/scheduler/util.h b/scheduler/util.h index a0774b4a1..08b495c8c 100644 --- a/scheduler/util.h +++ b/scheduler/util.h @@ -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 $". */ diff --git a/systemv/Dependencies b/systemv/Dependencies index 84fc07b47..effbf99f0 100644 --- a/systemv/Dependencies +++ b/systemv/Dependencies @@ -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 diff --git a/systemv/Makefile b/systemv/Makefile index 114190a2f..62b9da769 100644 --- a/systemv/Makefile +++ b/systemv/Makefile @@ -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 $". # diff --git a/systemv/cupstestppd.c b/systemv/cupstestppd.c index 6faf67f17..440c64ee2 100644 --- a/systemv/cupstestppd.c +++ b/systemv/cupstestppd.c @@ -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 $". */ diff --git a/systemv/lp.c b/systemv/lp.c index 24ee4137d..e6eb028ba 100644 --- a/systemv/lp.c +++ b/systemv/lp.c @@ -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 $". */ diff --git a/systemv/lpadmin.c b/systemv/lpadmin.c index 92cb5d294..2431edc91 100644 --- a/systemv/lpadmin.c +++ b/systemv/lpadmin.c @@ -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 $". */ diff --git a/systemv/lpoptions.c b/systemv/lpoptions.c index ac8153098..1ddff295d 100644 --- a/systemv/lpoptions.c +++ b/systemv/lpoptions.c @@ -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 index 2da667dd6..000000000 --- a/systemv/lppasswd.c +++ /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 -#include -#include -#include -#include -#include - -#ifndef WIN32 -# include -# include -#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 $". - */ diff --git a/systemv/lpstat.c b/systemv/lpstat.c index 875929545..8190ba11b 100644 --- a/systemv/lpstat.c +++ b/systemv/lpstat.c @@ -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 $". */ diff --git a/templates/Makefile b/templates/Makefile index 736f1b491..77732b718 100644 --- a/templates/Makefile +++ b/templates/Makefile @@ -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 $". # diff --git a/templates/add-class.tmpl b/templates/add-class.tmpl index eaf52d73d..3deaf26c0 100644 --- a/templates/add-class.tmpl +++ b/templates/add-class.tmpl @@ -1,5 +1,3 @@ -
    -

    Add Class

    @@ -37,4 +35,3 @@
    -
    \ No newline at end of file diff --git a/templates/add-printer.tmpl b/templates/add-printer.tmpl index 361958b67..14d4eb6f1 100644 --- a/templates/add-printer.tmpl +++ b/templates/add-printer.tmpl @@ -1,5 +1,3 @@ -
    -

    Add Printer

    @@ -44,4 +42,3 @@ Share This Printer
    -
    \ No newline at end of file diff --git a/templates/admin.tmpl b/templates/admin.tmpl index ee6b5af9d..101f96017 100644 --- a/templates/admin.tmpl +++ b/templates/admin.tmpl @@ -1,102 +1,97 @@ - - -
    - -

    Printers

    - -

    -

    -
    -
    -{have_samba?
    :} -

    - -

    Classes

    - -

    -

    -
    -

    - -

    Jobs

    - -

    -

    -

    - -
              - -

    Server

    - -

    -

    -
    -
    -
    -

    - -{SETTINGS_ERROR?

    {SETTINGS_MESSAGE}

    -
    {SETTINGS_ERROR}
    : - -
    - - -{ADVANCEDSETTINGS?

    Server Settings\:

    - -

    Advanced
    - - - Share printers connected to this system
    -        Max clients\: -
    -         Allow printing from the Internet
    -         Advertise web interface
    - Allow remote administration
    -{have_gssapi? Use Kerberos authentication (FAQ)
    :} - Allow users to cancel any job (not just their own)
    - Preserve job history
    -        Maximum jobs (0 for no limit)\: -
    -        Retain Metadata\: -
    -        Retain Documents\: -
    - Save debugging information for troubleshooting
    -        Max log file size\: -

    - -:

    Server Settings:

    - -

    Advanced
    - - Share printers connected to this system
    -         Allow printing from the Internet
    - Allow remote administration
    -{have_gssapi? Use Kerberos authentication (FAQ)
    :} - Allow users to cancel any job (not just their own)
    - Save debugging information for troubleshooting

    - -} -

    - -
    } - -
    - -
    - -

    RSS Subscriptions

    - -

    -

    -

    - -
    - -{notify_subscription_id? - -{[notify_subscription_id] -} - -
    NameEventsQueue Name
    {notify_recipient_name}
    -
     
    {notify_events} {notify_printer_name?{notify_printer_name}:All Queues}
    :} +
    +
    +

    Printers

    + +

    +

    +
    +
    + {have_samba?
    :} +

    + +

    Classes

    + +

    +

    +
    +

    + +

    Jobs

    + +

    +

    +

    +
    +
    +

    Server

    + +

    +

    +
    +
    +
    +

    + + {SETTINGS_ERROR?

    {SETTINGS_MESSAGE}

    +
    {SETTINGS_ERROR}
    : + +
    + + + {ADVANCEDSETTINGS?

    Server Settings\:

    + +

    Advanced
    + + + Share printers connected to this system
    +         Max clients\: +
    +          Allow printing from the Internet
    +          Advertise web interface
    + Allow remote administration
    + {have_gssapi? Use Kerberos authentication (FAQ)
    :} + Allow users to cancel any job (not just their own)
    + Preserve job history
    +         Maximum jobs (0 for no limit)\: +
    +         Retain Metadata\: +
    +         Retain Documents\: +
    + Save debugging information for troubleshooting
    +         Max log file size\: +

    + + :

    Server Settings:

    + +

    Advanced
    + + Share printers connected to this system
    +          Allow printing from the Internet
    + Allow remote administration
    + {have_gssapi? Use Kerberos authentication (FAQ)
    :} + Allow users to cancel any job (not just their own)
    + Save debugging information for troubleshooting

    + + } +

    + +
    } +
    +
    + +
    +

    RSS Subscriptions

    + +

    +

    +

    + + {notify_subscription_id? + + {[notify_subscription_id] + } + +
    NameEventsQueue Name
    {notify_recipient_name}
    +
     
    {notify_events} {notify_printer_name?{notify_printer_name}:All Queues}
    :} +
    \ No newline at end of file diff --git a/templates/ca/add-class.tmpl b/templates/ca/add-class.tmpl deleted file mode 100644 index 8af7a7d05..000000000 --- a/templates/ca/add-class.tmpl +++ /dev/null @@ -1,40 +0,0 @@ -
    - -

    Afegeix una classe

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Nom:
    -(Pot contenir qualsevol caràcter excepte «/», «#», i espai)
    Descripció:
    -(Una descripció com ara «HP LaserJet de doble cara»)
    Ubicació:
    -(Una ubicació com ara «Laboratori 1»)
    Membres: - -
    - -
    -
    diff --git a/templates/ca/add-printer.tmpl b/templates/ca/add-printer.tmpl deleted file mode 100644 index f266a0be6..000000000 --- a/templates/ca/add-printer.tmpl +++ /dev/null @@ -1,47 +0,0 @@ -
    - -

    Afegir una impressora

    - -
    - - - - - - -{?current_make!?:} -{?current_make_and_model!?:} - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Nom:
    -(Pot contenir qualsevol caràcter excepte «/», «#», i espai)
    Descripció:
    -(Una descripció com ara «HP LaserJet de doble cara»)
    Ubicació:
    -(Una ubicació com ara «Laboratori 1»)
    Connexió:{device_uri}
    Compartir: -Comparteix aquesta impressora
    - -
    -
    diff --git a/templates/ca/add-rss-subscription.tmpl b/templates/ca/add-rss-subscription.tmpl deleted file mode 100644 index b195ac692..000000000 --- a/templates/ca/add-rss-subscription.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    - - - -

    Afegir una subscripció RSS

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Nom:
    -(Pot contenir qualsevol caràcter excepte espai «/», «?» i «#»)
    Cua:
    Esdeveniments:Creació de tasca
    -Tasca completada
    -Tasca aturada
    -Modificació de les opcions de la tasca
        Cua aturada
    -Cua afegida
    -Modificació de la cua
    -Eliminació de la cua
        Inicialització del servidor
    -Aturada del servidor
    -Servidor iniciat de nou
    -Auditoria de seguretat del servidor
    Nombre màxims d'esdeveniments al canal:
    - -
    diff --git a/templates/ca/admin.tmpl b/templates/ca/admin.tmpl deleted file mode 100644 index ea3fc1ec0..000000000 --- a/templates/ca/admin.tmpl +++ /dev/null @@ -1,102 +0,0 @@ - - -
    - -

    Impressores

    - -

    -

    -
    -
    -{have_samba?
    :} -

    - -

    Classes

    - -

    -

    -
    -

    - -

    Tasques

    - -

    -

    -

    - -
              - -

    Servidor

    - -

    -

    -
    -
    -
    -

    - -{SETTINGS_ERROR?

    {SETTINGS_MESSAGE}

    -
    {SETTINGS_ERROR}
    : - -
    - - -{ADVANCEDSETTINGS?

    Configuració del servidor\:

    - -

    Avançat
    - - - Comparteix les impressores connectades a aquest sistema
    -        Nombre màxim de clients\: -
    -         Permet imprimir des d'Internet
    -         Anuncia la interfície web
    - Permet l'administració remota
    -{have_gssapi? Fes servir l'autenticació Kerberos (PMF)
    :} - Permet als usuaris cancel·lar qualsevol tasca (no només les pròpies)
    - Conserva l'historial de tasques
    -        Nombre màxim de tasques (0 per ilimitat)\: -
    -        Conserva les metadades\: -
    -        Conserva els documents\: -
    - Desa la informació de depuració per la resolució de problemes
    -        Mida màxima de fitxer de registre\: -

    - -:

    Configuració del servidor:

    - -

    Avançat
    - - Comparteix les impressores connectades a aquest sistema
    -         Permet imprimir des d'Internet
    - Permet l'administració remota
    -{have_gssapi? Fes servir l'autenticació Kerberos (PMF)
    :} - Permet als usuaris cancel·lar qualsevol tasca (no només les pròpies)
    - Desa la informació de depuració per la resolució de problemes
    - -} -

    - -
    } - -
    - -
    - -

    Subscripcions RSS

    - -

    -

    -

    - -
    - -{notify_subscription_id? - -{[notify_subscription_id] -} - -
    NomEsdevenimentsNom de la cua
    {notify_recipient_name}
    -
     
    {notify_events} {notify_printer_name?{notify_printer_name}:All Queues}
    :} diff --git a/templates/ca/choose-device.tmpl b/templates/ca/choose-device.tmpl deleted file mode 100644 index a28cc92dd..000000000 --- a/templates/ca/choose-device.tmpl +++ /dev/null @@ -1,53 +0,0 @@ -
    - -

    {op=modify-printer?Modifica {printer_name}:Add Printer}

    - -{CUPS_GET_DEVICES_DONE?
    - - -{printer_name?:} - - -{op=add-printer?: - - -} - - - - - - - - - - - - - - - - - -
    Connexió actual\: -{current_device_uri}
    Impressores locals\: -{[device_uri]{device_class!network? -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -:}} -
    Impressores de xarxa descobertes\: -{[device_uri]{device_class=network?{device_uri~[a-z]+://? -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -:}:}} -
    Altres impressores de xarxa\: -{[device_uri]{device_class=network?{device_uri~[a-z]+://?: -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -}:}} -
    - -
    :

    Buscant impressores...

    } - -
    diff --git a/templates/ca/choose-make.tmpl b/templates/ca/choose-make.tmpl deleted file mode 100644 index 01bc6540b..000000000 --- a/templates/ca/choose-make.tmpl +++ /dev/null @@ -1,64 +0,0 @@ -
    - -

    {op=modify-printer?Modifica {printer_name}:Add Printer}

    - -
    - - -{printer_name?:} - - - - - - -{op=modify-printer?: - - -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Nom:{printer_name}
    Descripció:{printer_info}
    Ubicació:{printer_location}
    Connecció:{device_uri}
    Compartida: -{?printer_is_shared=?Do Not:{?printer_is_shared=0?Do Not:}} Comparteix aquesta impressora
    Fabricant: - -
     
    O indica un fitxer PPD:
    - -
    -
    diff --git a/templates/ca/choose-model.tmpl b/templates/ca/choose-model.tmpl deleted file mode 100644 index d2adeb876..000000000 --- a/templates/ca/choose-model.tmpl +++ /dev/null @@ -1,60 +0,0 @@ -
    - -

    {op=modify-printer?Modifica {printer_name}:Add Printer}

    - -
    - - -{printer_name?:} - - - - - -{op=modify-printer?: - - -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Nom:{printer_name}
    Descripció:{printer_info}
    Ubicació:{printer_location}
    Connecció:{device_uri}
    Compartida: -{?printer_is_shared=?Do Not:{?printer_is_shared=0?Do Not:}} Comparteix aquesta impressora
    Fabricant:{PPD_MAKE}
    Model: - -
    O indica un fitxer PPD:
    - -
    -
    diff --git a/templates/ca/choose-serial.tmpl b/templates/ca/choose-serial.tmpl deleted file mode 100644 index e86f5a88a..000000000 --- a/templates/ca/choose-serial.tmpl +++ /dev/null @@ -1,52 +0,0 @@ -
    - -

    {op=modify-printer?Modifica {printer_name}:Add Printer}

    - -
    - - -{printer_name?:} - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Connexió:{device_uri}
    Velocitat:
    Paritat:
    Bits de dades:
    Control de flux:
    - -
    -
    diff --git a/templates/ca/choose-uri.tmpl b/templates/ca/choose-uri.tmpl deleted file mode 100644 index 630b1d3d7..000000000 --- a/templates/ca/choose-uri.tmpl +++ /dev/null @@ -1,43 +0,0 @@ -
    - -

    {op=modify-printer?Modifica {printer_name}:Add Printer}

    - -
    - - -{printer_name?:} - - - - - - - - - - - - - - - -
    Connexió:
    Exemples: -
    -    http://hostname:631/ipp/
    -    http://hostname:631/ipp/port1
    -
    -    ipp://hostname/ipp/
    -    ipp://hostname/ipp/port1
    -
    -    lpd://hostname/queue
    -
    -    socket://hostname
    -    socket://hostname:9100
    -
    - -

    Llegiu "Impressores de xarxa" per saber quin URI heu de fer servir amb la vostre impressora.

    - -
    - -
    -
    diff --git a/templates/ca/class-added.tmpl b/templates/ca/class-added.tmpl deleted file mode 100644 index 8e8347cb7..000000000 --- a/templates/ca/class-added.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Afegeix una classe

    - -

    La classe {printer_name} s'ha afegit correctament. - -

    diff --git a/templates/ca/class-confirm.tmpl b/templates/ca/class-confirm.tmpl deleted file mode 100644 index 905ac6f06..000000000 --- a/templates/ca/class-confirm.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    - -

    Esborra la classe {printer_name}

    - -

    Avís: Esteu segur que voleu esborrar la classe -{printer_name}?

    - -

    - -
    diff --git a/templates/ca/class-deleted.tmpl b/templates/ca/class-deleted.tmpl deleted file mode 100644 index 3f0035f8c..000000000 --- a/templates/ca/class-deleted.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Esborra la classe {printer_name}

    - -

    La classe {printer_name} s'ha esborrat correctament. - -

    diff --git a/templates/ca/class-jobs-header.tmpl b/templates/ca/class-jobs-header.tmpl deleted file mode 100644 index 90e640e44..000000000 --- a/templates/ca/class-jobs-header.tmpl +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    Tasques

    -
    diff --git a/templates/ca/class-modified.tmpl b/templates/ca/class-modified.tmpl deleted file mode 100644 index 6152ffa96..000000000 --- a/templates/ca/class-modified.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Modifica la classe {printer_name}

    - -

    La classe {printer_name} s'ha modificat correctament. - -

    diff --git a/templates/ca/class.tmpl b/templates/ca/class.tmpl deleted file mode 100644 index 6b39168b7..000000000 --- a/templates/ca/class.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    -

    {printer_name} -({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:})

    - -
    - - - -
    - -
    - - - - - -
    - - - - - - -
    Descripció:{printer_info}
    Ubicació:{printer_location}
    Membres:{?member_uris=?None:{member_uris}}
    Per defecte:plantilles={job_sheets_default} -mitjà={media_default?{media_default}:unknown} -{sides_default?laterals={sides_default}:}
    - -
    diff --git a/templates/ca/classes-header.tmpl b/templates/ca/classes-header.tmpl deleted file mode 100644 index 47ad5ce9c..000000000 --- a/templates/ca/classes-header.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    {total=0?No hi ha cap classe:Es mostr{total=1?a:en} {#printer_name} classe{total=1?:s} de {total}}.

    diff --git a/templates/ca/classes.tmpl b/templates/ca/classes.tmpl deleted file mode 100644 index bb5acf500..000000000 --- a/templates/ca/classes.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -{#printer_name=0?: - - - - - -{[printer_name] - -} - -
    {ORDER=dec? Nom de la cua : Nom de la cua }DescripcióUbicacióMembresEstat
    {printer_name}{printer_info}{printer_location}{?member_uris=?None:{member_uris}}{printer_state=3?Idle:{printer_state=4?Processing:Paused}}{printer_state_message? - "{printer_state_message}":}
    } diff --git a/templates/ca/command.tmpl b/templates/ca/command.tmpl deleted file mode 100644 index 5cfd89f12..000000000 --- a/templates/ca/command.tmpl +++ /dev/null @@ -1,12 +0,0 @@ -
    - -

    {title} a {printer_name}

    - -

    {job_state>5?: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?, -"{job_printer_state_message}":}}

    - -
    diff --git a/templates/ca/edit-config.tmpl b/templates/ca/edit-config.tmpl deleted file mode 100644 index e6e08f126..000000000 --- a/templates/ca/edit-config.tmpl +++ /dev/null @@ -1,24 +0,0 @@ - - -
    - -

    Edita el fitxer de configuració

    - -
    - - - - - -

    -

    - -
    - -
    diff --git a/templates/ca/error-op.tmpl b/templates/ca/error-op.tmpl deleted file mode 100644 index 064e8b4c2..000000000 --- a/templates/ca/error-op.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    {?title} {?printer_name} Error

    - -

    Error:

    - -
    Operació desconeguda "{op}"!
    - -
    diff --git a/templates/ca/error.tmpl b/templates/ca/error.tmpl deleted file mode 100644 index f04f03afb..000000000 --- a/templates/ca/error.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    {?title} {?printer_name} Error

    - -

    {?message?{message}:Error}

    - -
    {error}
    - -
    diff --git a/templates/ca/header.tmpl.in b/templates/ca/header.tmpl.in deleted file mode 100644 index 02cf58081..000000000 --- a/templates/ca/header.tmpl.in +++ /dev/null @@ -1,38 +0,0 @@ - - - - - {title} - CUPS @CUPS_VERSION@@CUPS_REVISION@ - - - {refresh_page?:} - - - - - - - - diff --git a/templates/ca/option-conflict.tmpl b/templates/ca/option-conflict.tmpl deleted file mode 100644 index 59b63e9fc..000000000 --- a/templates/ca/option-conflict.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -

    Error: Les següents opcions entren en conflicte:

    - - - -

    Canvieu algunes de les opcions per resoldre els conflictes.

    diff --git a/templates/ca/option-header.tmpl b/templates/ca/option-header.tmpl deleted file mode 100644 index 464726a50..000000000 --- a/templates/ca/option-header.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    {group}

    - -
    - - - - - - - - - - - - - -
      Inici    Administració    Classes    Ajuda en línia    Tasques    Impressores  
     
    -
    diff --git a/templates/ca/help-header.tmpl b/templates/ca/help-header.tmpl deleted file mode 100644 index 54f2d228b..000000000 --- a/templates/ca/help-header.tmpl +++ /dev/null @@ -1,52 +0,0 @@ -
    -
    -{TOPIC?:} - -

    Cerca a -{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:tots els documents}}: - -

    - -
    - - - - -{QUERY?

    Resultats de la cerca a {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:tots els documents}}\:

    -{QTEXT?:} -:

    No s'ha trobat cap coincidència.

    } -
    :} -{HELPTITLE?

    {HELPTITLE}

    -
    : - -

    Ajuda en línia

    - -

    Aquesta és la interfície d'ajuda en línia de CUPS. -Introduïu les paraules que vulgueu cercar aquí dalt o feu clic als -enllaços de la documentació per mostrar la informació de -l'ajuda en línia.

    - -

    Si sou nou a CUPS, llegiu la pàgina «Descripció general de CUPS». Els -usuaris veterans haurien de llegir la pàgina «Que hi ha de nou a CUPS 1.6».

    - -

    La pàgina web de CUPS també -dona conté molts recursos que inclouen fòrums, respostes a les preguntes més -freqüents, i un formulari per enviar informes d'errors i demanar noves -característiques.

    } diff --git a/templates/ca/help-printable.tmpl b/templates/ca/help-printable.tmpl deleted file mode 100644 index 2463c1630..000000000 --- a/templates/ca/help-printable.tmpl +++ /dev/null @@ -1,9 +0,0 @@ - - - - - {HELPTITLE} - - - - diff --git a/templates/ca/help-trailer.tmpl b/templates/ca/help-trailer.tmpl deleted file mode 100644 index 4c1ebed85..000000000 --- a/templates/ca/help-trailer.tmpl +++ /dev/null @@ -1 +0,0 @@ -
    diff --git a/templates/ca/job-cancel.tmpl b/templates/ca/job-cancel.tmpl deleted file mode 100644 index a53ca2f6d..000000000 --- a/templates/ca/job-cancel.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Cancel·la la tasca {job_id}

    - -

    La tasca {job_id} s'ha cancel·lat. - -

    diff --git a/templates/ca/job-hold.tmpl b/templates/ca/job-hold.tmpl deleted file mode 100644 index e89b97f4c..000000000 --- a/templates/ca/job-hold.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Pausa la tasca {job_id}

    - -

    La tasca {job_id} s'ha posat en pausa. - -

    diff --git a/templates/ca/job-move.tmpl b/templates/ca/job-move.tmpl deleted file mode 100644 index 1bca28224..000000000 --- a/templates/ca/job-move.tmpl +++ /dev/null @@ -1,27 +0,0 @@ -
    - -
    - - -{job_id?:} - -

    {job_id?Mou la tasca {job_id}:Mou totes les tasques}

    - - - - - - - - - - -
    Nova destinació: - -
    - -
    - -
    diff --git a/templates/ca/job-moved.tmpl b/templates/ca/job-moved.tmpl deleted file mode 100644 index 1e538f9a1..000000000 --- a/templates/ca/job-moved.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    {job_id?Mou la tasca {job_id}:Mou totes les tasques}

    - -

    {job_id?La tasca s'ha {job_id}:Totes les tasques s'han} mogut a -{job_printer_name}.

    - -
    diff --git a/templates/ca/job-release.tmpl b/templates/ca/job-release.tmpl deleted file mode 100644 index db13e1d59..000000000 --- a/templates/ca/job-release.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Allibera la tasca {job_id}

    - -

    La tasca {job_id} s'ha alliberat. - -

    diff --git a/templates/ca/job-restart.tmpl b/templates/ca/job-restart.tmpl deleted file mode 100644 index d40c1c239..000000000 --- a/templates/ca/job-restart.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Torna a imprimir la tasca {job_id}

    - -

    La tasca {job_id} s'ha tornat a imprimir. - -

    diff --git a/templates/ca/jobs-header.tmpl b/templates/ca/jobs-header.tmpl deleted file mode 100644 index 3f785d5f5..000000000 --- a/templates/ca/jobs-header.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    {?which_jobs=?:
    } -{?which_jobs=completed?:
    } -{?which_jobs=all?:
    }
    - -

    {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}}}.

    diff --git a/templates/ca/jobs.tmpl b/templates/ca/jobs.tmpl deleted file mode 100644 index 2ec88e126..000000000 --- a/templates/ca/jobs.tmpl +++ /dev/null @@ -1,36 +0,0 @@ -{#job_id=0?: - - - - - -{[job_id] - - - - - - - - - -} - -
    {ORDER=dec? ID : ID }NomUsuariMidaPàginesEstatControl
    {job_printer_name}-{job_id}{?phone? ({phone}):} {?job_name=?Desconegut:{job_name}} {?job_originating_user_name=?Withheld:{job_originating_user_name}} {job_k_octets}k {job_media_sheets_completed=0?Desconegudes:{?job_media_sheets_completed}} {job_state=3?pendent des de
    {time_at_creation}:{job_state=4?pausada des de
    {time_at_creation}: -{job_state=5?processant des de
    {time_at_processing}:{job_state=6?aturada: -{job_state=7?cancel·lada el
    {time_at_completed}:{job_state=8?avortada:completada el
    {time_at_completed}}}}}}} {job_printer_state_message?
    -"{job_printer_state_message}":}
    -{job_preserved>0?{job_state>5? -
    :}:} -{job_state=4? -
    -
    :} -{job_state=3? -
    -
    :} -{job_state<7? -
    -
    -
    :} - 
    -} diff --git a/templates/ca/list-available-printers.tmpl b/templates/ca/list-available-printers.tmpl deleted file mode 100644 index b771b5b69..000000000 --- a/templates/ca/list-available-printers.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -
    - -

    Impressores disponibles

    - -{#device_uri=0?

    No s'ha trobat cap impressora.

    -:
      {[device_uri] -
    • -{device_make_and_model} ({device_info})
    • -}
    } - -
    diff --git a/templates/ca/modify-class.tmpl b/templates/ca/modify-class.tmpl deleted file mode 100644 index 26a6284b5..000000000 --- a/templates/ca/modify-class.tmpl +++ /dev/null @@ -1,34 +0,0 @@ -
    - -

    Modifica la classe {printer_name}

    - -
    - - - - - - - - - - - - - - - - - - - - - -
    Descripció:
    Ubicació:
    Membres: - -
    - -
    -
    diff --git a/templates/ca/modify-printer.tmpl b/templates/ca/modify-printer.tmpl deleted file mode 100644 index 3843016fb..000000000 --- a/templates/ca/modify-printer.tmpl +++ /dev/null @@ -1,42 +0,0 @@ -
    - -

    Modifica {printer_name}

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Descripció:
    -(Una descripció com ara «HP LaserJet de doble cara»)
    Ubicació:
    -(Una ubicació com ara «Laboratori 1»)
    Connexió:{device_uri}
    Compartir: -Comparteix aquesta impressora
    - -
    -
    diff --git a/templates/ca/norestart.tmpl b/templates/ca/norestart.tmpl deleted file mode 100644 index 5cdb7c4d5..000000000 --- a/templates/ca/norestart.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Canvis en la configuració

    - -

    El servidor no s'ha tornat a iniciar per que no hi ha canvis -a la configuració...

    - -
    diff --git a/templates/ca/option-boolean.tmpl b/templates/ca/option-boolean.tmpl deleted file mode 100644 index e832ee102..000000000 --- a/templates/ca/option-boolean.tmpl +++ /dev/null @@ -1,6 +0,0 @@ -
    {keytext}: -{[choices]{text}} -
    diff --git a/templates/ca/option-pickmany.tmpl b/templates/ca/option-pickmany.tmpl deleted file mode 100644 index 0da75e5d2..000000000 --- a/templates/ca/option-pickmany.tmpl +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/templates/ca/option-pickone.tmpl b/templates/ca/option-pickone.tmpl deleted file mode 100644 index 1b3c271cb..000000000 --- a/templates/ca/option-pickone.tmpl +++ /dev/null @@ -1,18 +0,0 @@ - - -:} - diff --git a/templates/ca/option-trailer.tmpl b/templates/ca/option-trailer.tmpl deleted file mode 100644 index 11c401131..000000000 --- a/templates/ca/option-trailer.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    {keytext}:
    {keytext}: -{iscustom=1?{[params] - - -}
    {paramtext}:{params=Units?:}
    -
    - -

    - - diff --git a/templates/ca/pager.tmpl b/templates/ca/pager.tmpl deleted file mode 100644 index ab134f1d4..000000000 --- a/templates/ca/pager.tmpl +++ /dev/null @@ -1,6 +0,0 @@ - - - - - -
    {PREV?
    : }
    {NEXT?
    : }
    diff --git a/templates/ca/printer-accept.tmpl b/templates/ca/printer-accept.tmpl deleted file mode 100644 index 0bd2a57fc..000000000 --- a/templates/ca/printer-accept.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Accepta tasques a {is_class?la classe: la impressora} {printer_name}

    - -

    {is_class?La classe:La impressora} {printer_name} -ara accepta tasques.

    - -
    diff --git a/templates/ca/printer-added.tmpl b/templates/ca/printer-added.tmpl deleted file mode 100644 index b5850aa29..000000000 --- a/templates/ca/printer-added.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Afegeix una impressora

    - -

    La impressora {printer_name} s'ha afegit -correctament. - -

    diff --git a/templates/ca/printer-configured.tmpl b/templates/ca/printer-configured.tmpl deleted file mode 100644 index 20880da9a..000000000 --- a/templates/ca/printer-configured.tmpl +++ /dev/null @@ -1,6 +0,0 @@ -
    - -

    S'ha aplicat la configuració per defecte a {printer_name}

    - -

    Les opcions per defecte de la {OP=set-class-options?classe :impressora }{printer_name} s'han establert correctament. -

    diff --git a/templates/ca/printer-confirm.tmpl b/templates/ca/printer-confirm.tmpl deleted file mode 100644 index 916bc309b..000000000 --- a/templates/ca/printer-confirm.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    - -

    Elimina la impressora {printer_name}

    - -

    Avís: Esteu segur que voleu eliminar la impressora -{printer_name}?

    - -

    - -
    diff --git a/templates/ca/printer-default.tmpl b/templates/ca/printer-default.tmpl deleted file mode 100644 index 76f7ddf65..000000000 --- a/templates/ca/printer-default.tmpl +++ /dev/null @@ -1,12 +0,0 @@ -
    - -

    Estableix {is_class?Class:Printer} {printer_name} com a predeterminada

    - -

    {is_class?Class:Printer} {printer_name} -s'ha establert com a impressora predeterminada.

    - -
    Nota: Qualsevol usuari que hagi estat establert mitjançant -la comanda lpoptions sobreescriurà aquesta configuració predeterminada.
    - -
    diff --git a/templates/ca/printer-deleted.tmpl b/templates/ca/printer-deleted.tmpl deleted file mode 100644 index 695ab6731..000000000 --- a/templates/ca/printer-deleted.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Elimina la impressora {printer_name}

    - -

    La impressora {printer_name} s'ha eliminat correctament. - -

    diff --git a/templates/ca/printer-jobs-header.tmpl b/templates/ca/printer-jobs-header.tmpl deleted file mode 100644 index 90e640e44..000000000 --- a/templates/ca/printer-jobs-header.tmpl +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    Tasques

    -
    diff --git a/templates/ca/printer-modified.tmpl b/templates/ca/printer-modified.tmpl deleted file mode 100644 index efbbc3b96..000000000 --- a/templates/ca/printer-modified.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Modifica la impressora {printer_name}

    - -

    La impressora {printer_name} s'ha -modificat correctament. - -

    diff --git a/templates/ca/printer-purge.tmpl b/templates/ca/printer-purge.tmpl deleted file mode 100644 index 980d883eb..000000000 --- a/templates/ca/printer-purge.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Cancel·la les tasques de {is_class?la classe:la impressora} {printer_name}

    - -

    S'han cancel·lat totes les tasques de{is_class?la classe:la impressora} {printer_name}.

    - -
    diff --git a/templates/ca/printer-reject.tmpl b/templates/ca/printer-reject.tmpl deleted file mode 100644 index 6269cf2c4..000000000 --- a/templates/ca/printer-reject.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Refusa les tasques a {is_class?la classe:la impressora} {printer_name}

    - -

    {is_class?La classe:la impressora} {printer_name} -no accepta tasques a partir d'ara.

    - -
    diff --git a/templates/ca/printer-start.tmpl b/templates/ca/printer-start.tmpl deleted file mode 100644 index 6986fd4ba..000000000 --- a/templates/ca/printer-start.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Reprèn {is_class?la classe:la impressora} {printer_name}

    - -

    {is_class?La classe:La impressora} {printer_name} -ha reprès les tasques.

    - -
    diff --git a/templates/ca/printer-stop.tmpl b/templates/ca/printer-stop.tmpl deleted file mode 100644 index af89331bc..000000000 --- a/templates/ca/printer-stop.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Pausa {is_class?la classe:la impressora} {printer_name}

    - -

    {is_class?La classe:La impressora} {printer_name} -s'ha posat en pausa.

    - -
    diff --git a/templates/ca/printer.tmpl b/templates/ca/printer.tmpl deleted file mode 100644 index 7e026cb0d..000000000 --- a/templates/ca/printer.tmpl +++ /dev/null @@ -1,47 +0,0 @@ -
    - -

    {printer_name} -({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:})

    - -
    - - - -
    - -
    - - - - -
    - - - - - - -
    Descripció:{printer_info}
    Ubicació:{printer_location}
    Controlador:{printer_make_and_model} ({color_supported=1?color:escala de grisos}{sides_supported?, impressió a doble cara:})
    -
    Connexió:{device_uri}
    Configuració per defecte:Fulls de tasques={job_sheets_default} -safata={media_default?{media_default}:desconeguda} -{sides_default?cares={sides_default}:}
    - -
    diff --git a/templates/ca/printers-header.tmpl b/templates/ca/printers-header.tmpl deleted file mode 100644 index 52eaa2ff4..000000000 --- a/templates/ca/printers-header.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    {total=0?Cap impressora:Es mostr{#printer_name=1?a:en} {#printer_name} de {total} impressor{total=1?a:es}}.

    diff --git a/templates/ca/printers.tmpl b/templates/ca/printers.tmpl deleted file mode 100644 index d978c17bf..000000000 --- a/templates/ca/printers.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -{#printer_name=0?: - - - - - -{[printer_name] - -} - -
    {ORDER=dec? Nom : Nom }DescripcióUbicacióMarca i modelEstat
    {printer_name}{printer_info}{printer_location}{printer_make_and_model}{printer_state=3?Preparada:{printer_state=4?Processant:En pausa}}{printer_state_message? - "{printer_state_message}":}
    } diff --git a/templates/ca/restart.tmpl b/templates/ca/restart.tmpl deleted file mode 100644 index 4e3983f7a..000000000 --- a/templates/ca/restart.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Canvis en la configuració

    - -

    Espereu mentre es torna a iniciar el servidor...

    - -
    diff --git a/templates/ca/samba-export.tmpl b/templates/ca/samba-export.tmpl deleted file mode 100644 index 2b16e1eef..000000000 --- a/templates/ca/samba-export.tmpl +++ /dev/null @@ -1,55 +0,0 @@ - - -
    - - - -

    Exporta les impressores al Samba

    - -{error?

    No es pot exportar les impressores al Samba\:

    -
    {error}
    -

    Consulteu el fitxer error_log per obtenir més informació.

    : -

    Aquesta pàgina us permet exportar les impressores al Samba per tal que -els clients de Windows puguin accedir-hi a través de les icones Xarxa -veïna o Llocs de la xarxa del seu -escriptori. Abans heu d'instal·lar el controlador d'impressores Windows PostScript -tal i com s'explica a la pàgina del manual cupsaddsmb(8).

    } - - - - - - - - - - - - - - - - - - -
    Impressores: -
    - Exporta totes les impressores -
    Nom de l'usuari del Samba: (necessari)
    Contrasenya del Samba: (necessària)
    - -
    diff --git a/templates/ca/samba-exported.tmpl b/templates/ca/samba-exported.tmpl deleted file mode 100644 index 7ea98570e..000000000 --- a/templates/ca/samba-exported.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    Les impressores s'han exportat correctament al Samba.

    diff --git a/templates/ca/search.tmpl b/templates/ca/search.tmpl deleted file mode 100644 index b76afaa2f..000000000 --- a/templates/ca/search.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    -{WHICH_JOBS?:} -{ORDER?:} - -

    Cerca a les -{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?classes:{SECTION=jobs?tasques:impressores}}}: -

    - -
    diff --git a/templates/ca/set-printer-options-header.tmpl b/templates/ca/set-printer-options-header.tmpl deleted file mode 100644 index b4a4a4e52..000000000 --- a/templates/ca/set-printer-options-header.tmpl +++ /dev/null @@ -1,26 +0,0 @@ -
    - -

    Aplica les opcions per defecte a {printer_name}

    - -
    - - - -{HAVE_AUTOCONFIGURE?:} - - - -

    {[group_id] -{group}     }

    - -
    diff --git a/templates/ca/set-printer-options-trailer.tmpl b/templates/ca/set-printer-options-trailer.tmpl deleted file mode 100644 index 11adc7012..000000000 --- a/templates/ca/set-printer-options-trailer.tmpl +++ /dev/null @@ -1,16 +0,0 @@ -
    - - -
    - -
    diff --git a/templates/ca/subscription-added.tmpl b/templates/ca/subscription-added.tmpl deleted file mode 100644 index 067132fe5..000000000 --- a/templates/ca/subscription-added.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    La subscripció {subscription_name} s'ha afegit correctament.

    - -
    diff --git a/templates/ca/subscription-canceled.tmpl b/templates/ca/subscription-canceled.tmpl deleted file mode 100644 index 8a93b4cd5..000000000 --- a/templates/ca/subscription-canceled.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    La subscripció #{notify_subscription_id} s'ha cancel·lat.

    - -
    diff --git a/templates/ca/test-page.tmpl b/templates/ca/test-page.tmpl deleted file mode 100644 index 2a4b77601..000000000 --- a/templates/ca/test-page.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Imprimeix una pàgina de prova a {printer_name}

    - -

    S'ha enviat la pàgina de prova; l'ID de la tasca és -{printer_name}-{job_id}.

    - -
    diff --git a/templates/ca/trailer.tmpl b/templates/ca/trailer.tmpl deleted file mode 100644 index bbe238ee1..000000000 --- a/templates/ca/trailer.tmpl +++ /dev/null @@ -1,8 +0,0 @@ - -  -CUPS i el logotip de CUPS són marques registrades per -Apple Inc. CUPS té copyright 2007-2014 Apple -Inc. Tots els drets reservats. - - - diff --git a/templates/ca/users.tmpl b/templates/ca/users.tmpl deleted file mode 100644 index cceeb0241..000000000 --- a/templates/ca/users.tmpl +++ /dev/null @@ -1,30 +0,0 @@ -
    - -
    - - - -{IS_CLASS?:} - -

    Usuaris amb permisos per {printer_name}

    - - - - - - - - - - -
    Usuaris: - -
    -Permet imprimir a aquests usuaris -No permetis imprimir a aquests usuaris -
    - -
    - -
    -
    diff --git a/templates/choose-device.tmpl b/templates/choose-device.tmpl index c5ab251b5..5f4693962 100644 --- a/templates/choose-device.tmpl +++ b/templates/choose-device.tmpl @@ -1,5 +1,3 @@ -
    -

    {op=modify-printer?Modify {printer_name}:Add Printer}

    {CUPS_GET_DEVICES_DONE?
    @@ -49,5 +47,3 @@ VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
    :

    Busy Indicator Looking for printers...

    } - -
    diff --git a/templates/choose-make.tmpl b/templates/choose-make.tmpl index 65096ad9a..a5c80aafe 100644 --- a/templates/choose-make.tmpl +++ b/templates/choose-make.tmpl @@ -1,5 +1,3 @@ -
    -

    {op=modify-printer?Modify {printer_name}:Add Printer}

    @@ -61,4 +59,3 @@ TYPE="FILE" NAME="PPD_FILE">
    -
    \ No newline at end of file diff --git a/templates/choose-model.tmpl b/templates/choose-model.tmpl index 992cd01fd..ee9338cc5 100644 --- a/templates/choose-model.tmpl +++ b/templates/choose-model.tmpl @@ -1,5 +1,3 @@ -
    -

    {op=modify-printer?Modify {printer_name}:Add Printer}

    @@ -57,4 +55,3 @@ TYPE="FILE" NAME="PPD_FILE">
    -
    \ No newline at end of file diff --git a/templates/choose-serial.tmpl b/templates/choose-serial.tmpl index 56a14a4cb..89a5eaf09 100644 --- a/templates/choose-serial.tmpl +++ b/templates/choose-serial.tmpl @@ -1,5 +1,3 @@ -
    -

    {op=modify-printer?Modify {printer_name}:Add Printer}

    @@ -49,4 +47,3 @@
    -
    \ No newline at end of file diff --git a/templates/choose-uri.tmpl b/templates/choose-uri.tmpl index 45d84de19..0c7f45482 100644 --- a/templates/choose-uri.tmpl +++ b/templates/choose-uri.tmpl @@ -1,5 +1,3 @@ -
    -

    {op=modify-printer?Modify {printer_name}:Add Printer}

    @@ -41,4 +39,3 @@ Printers" for the correct URI to use with your printer.

    -
    \ No newline at end of file diff --git a/templates/class-added.tmpl b/templates/class-added.tmpl index c062a16d5..6afd30295 100644 --- a/templates/class-added.tmpl +++ b/templates/class-added.tmpl @@ -1,8 +1,4 @@ -
    -

    Add Class

    Class {printer_name} has been added successfully. - -

    diff --git a/templates/class-confirm.tmpl b/templates/class-confirm.tmpl index 5f0277cb5..e5643791b 100644 --- a/templates/class-confirm.tmpl +++ b/templates/class-confirm.tmpl @@ -1,10 +1,6 @@ -
    -

    Delete Class {printer_name}

    Warning: Are you sure you want to delete class {printer_name}?

    - -
    diff --git a/templates/class-deleted.tmpl b/templates/class-deleted.tmpl index a4ad46a0a..6c444680c 100644 --- a/templates/class-deleted.tmpl +++ b/templates/class-deleted.tmpl @@ -1,7 +1,3 @@ -
    -

    Delete Class {printer_name}

    Class {printer_name} has been deleted successfully. - -

    \ No newline at end of file diff --git a/templates/class-jobs-header.tmpl b/templates/class-jobs-header.tmpl index ba46f1026..61e5151d2 100644 --- a/templates/class-jobs-header.tmpl +++ b/templates/class-jobs-header.tmpl @@ -1,3 +1 @@ -

    Jobs

    -
    diff --git a/templates/class-modified.tmpl b/templates/class-modified.tmpl index fe42c907b..02b989546 100644 --- a/templates/class-modified.tmpl +++ b/templates/class-modified.tmpl @@ -1,8 +1,4 @@ -
    -

    Modify Class {printer_name}

    Class {printer_name} has been modified successfully. - -

    \ No newline at end of file diff --git a/templates/class.tmpl b/templates/class.tmpl index 477e0e8ed..0afb0d39f 100644 --- a/templates/class.tmpl +++ b/templates/class.tmpl @@ -1,4 +1,3 @@ -

    {printer_name} ({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}:} - -

    diff --git a/templates/command.tmpl b/templates/command.tmpl index 9a87439ca..a8dc6ffb9 100644 --- a/templates/command.tmpl +++ b/templates/command.tmpl @@ -1,5 +1,3 @@ -
    -

    {title} On {printer_name}

    {job_state>5?: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?, "{job_printer_state_message}":}}

    - -
    diff --git a/templates/cs/add-class.tmpl b/templates/cs/add-class.tmpl deleted file mode 100644 index 06bb9addf..000000000 --- a/templates/cs/add-class.tmpl +++ /dev/null @@ -1,40 +0,0 @@ -
    - -

    Přidat třídu

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Název:
    -(Může obsahovat libovolné tisknutelné znaky kromě "/", "#" a mezery)
    Popis:
    -(Srozumitelný popis)
    Umístění:
    -(Srozumitelný popis umístění)
    členové: - -
    - -
    -
    \ No newline at end of file diff --git a/templates/cs/add-printer.tmpl b/templates/cs/add-printer.tmpl deleted file mode 100644 index 1e557d2e1..000000000 --- a/templates/cs/add-printer.tmpl +++ /dev/null @@ -1,47 +0,0 @@ -
    - -

    Přidat tiskárnu

    - -
    - - - - - - -{?current_make!?:} -{?current_make_and_model!?:} - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Název:
    -(Může obsahovat libovolné tisknutelné znaky kromě "/", "#" a mezery)
    Popis:
    -(Srozumitelný popis)
    Umístění:
    -(Srozumitelný popis umístění)
    Připojení:{device_uri}
    Sdílení: -sdílet tuto tiskárnu
    - -
    -
    \ 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 index d1568f7c1..000000000 --- a/templates/cs/add-rss-subscription.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    - - - -

    Přidat RSS předplatné

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Název:
    -(Může obsahovat libovolné tisknutelné znaky s výjimkou mezery, "/", "?" a "#")
    Fronta:
    Události:Vytvoření úlohy
    -Dokončení úlohy
    -Zastavení úlohy
    -Změna parametrů úlohy
        Zastavení fronty
    -Přidání fronty
    -Změna fronty
    -Vymazání fronty
        Start serveru
    -Zastavení serveru
    -Restart serveru
    -Audit bezpečnosti serveru
    Maximální počet zobrazených událostí:
    - -
    diff --git a/templates/cs/admin.tmpl b/templates/cs/admin.tmpl deleted file mode 100644 index 247a10f48..000000000 --- a/templates/cs/admin.tmpl +++ /dev/null @@ -1,102 +0,0 @@ - - -
    - -

    Tiskárny

    - -

    -

    -
    -
    -{have_samba?
    :} -

    - -

    Třídy

    - -

    -

    -
    -

    - -

    Úlohy

    - -

    -

    -

    - -
              - -

    Server

    - -

    -

    -
    -
    -
    -

    - -{SETTINGS_ERROR?

    {SETTINGS_MESSAGE}

    -
    {SETTINGS_ERROR}
    : - -
    - - -{ADVANCEDSETTINGS?

    Nastavení serveru\:

    - -

    Skrýt rozšířené nastavení
    - - - Sdílet tiskárny připojené k tomuto systému
    -        Maximální počet klientů\: -
    -         Povolit tisk z internetu
    -         Nabízet webové rozhraní
    - Povolit vzdálenou správu
    -{have_gssapi? Používat ověřování Kerberos (časté dotazy)
    :} - Povolit uživatelům zrušit jakoukoliv úlohu (nejen vlastní)
    - Zachovat historii úloh
    -        Maximální počet úloh (0 bez omezení)\: -
    -        Zachovat metadata\: -
    -        Zachovat dokumenty\: -
    - Uložit informace o ladění pro řešení problémů
    -        Maximální velikost log souboru\: -

    - -:

    Nastavení serveru:

    - -

    Zobrazit rozšířené nastavení
    - - Sdílet tiskárny připojené k tomuto systému
    -         Povolit tisk z internetu
    - Povolit vzdálenou správu
    -{have_gssapi? Používat ověřování Kerberos (časté dotazy)
    :} - Povolit uživatelům zrušit jakoukoliv úlohu (nejen vlastní)
    - Uložit informace o ladění pro řešení problémů

    - -} -

    - -
    } - -
    - -
    - -

    RSS předplatné

    - -

    -

    -

    - -
    - -{notify_subscription_id? - -{[notify_subscription_id] -} - -
    NázevUdálostiNázev fronty
    {notify_recipient_name}
    -
     
    {notify_events} {notify_printer_name?{notify_printer_name}:VÅ¡echny fronty}
    :} diff --git a/templates/cs/choose-device.tmpl b/templates/cs/choose-device.tmpl deleted file mode 100644 index aa8a649c7..000000000 --- a/templates/cs/choose-device.tmpl +++ /dev/null @@ -1,53 +0,0 @@ -
    - -

    {op=modify-printer?Úprava tiskárny {printer_name}:Přidat tiskárnu}

    - -{CUPS_GET_DEVICES_DONE?
    - - -{printer_name?:} - - -{op=add-printer?: - - -} - - - - - - - - - - - - - - - - - -
    Aktuální připojení\: -{current_device_uri}
    Místní tiskárny\: -{[device_uri]{device_class!network? -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -:}} -
    Nalezené síťové tiskárny\: -{[device_uri]{device_class=network?{device_uri~[a-z]+://? -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -:}:}} -
    Ostatní síťové tiskárny\: -{[device_uri]{device_class=network?{device_uri~[a-z]+://?: -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -}:}} -
    - -
    :

    Hledání tiskáren ...

    } - -
    diff --git a/templates/cs/choose-make.tmpl b/templates/cs/choose-make.tmpl deleted file mode 100644 index f018f0e3b..000000000 --- a/templates/cs/choose-make.tmpl +++ /dev/null @@ -1,64 +0,0 @@ -
    - -

    {op=modify-printer?Úprava tiskárny {printer_name}:Přidat tiskárnu}

    - -
    - - -{printer_name?:} - - - - - - -{op=modify-printer?: - - -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Název:{printer_name}
    Popis:{printer_info}
    Umístění:{printer_location}
    Připojení:{device_uri}
    Sdílení: -{?printer_is_shared=?ne:{?printer_is_shared=0?ne:}}sdílená
    Výrobce: - -
     
    Nebo vybrat soubor PPD:
    - -
    -
    \ No newline at end of file diff --git a/templates/cs/choose-model.tmpl b/templates/cs/choose-model.tmpl deleted file mode 100644 index 75fc46f25..000000000 --- a/templates/cs/choose-model.tmpl +++ /dev/null @@ -1,60 +0,0 @@ -
    - -

    {op=modify-printer?Úprava tiskárny {printer_name}:Přidat tiskárnu}

    - -
    - - -{printer_name?:} - - - - - -{op=modify-printer?: - - -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Název:{printer_name}
    Popis:{printer_info}
    Umístění:{printer_location}
    Připojení:{device_uri}
    Sdílení: -{?printer_is_shared=?ne:{?printer_is_shared=0?ne:}}sdílená
    Výrobce:{PPD_MAKE}
    Model: - -
    Nebo vybrat soubor PPD:
    - -
    -
    \ No newline at end of file diff --git a/templates/cs/choose-serial.tmpl b/templates/cs/choose-serial.tmpl deleted file mode 100644 index 593bcdde3..000000000 --- a/templates/cs/choose-serial.tmpl +++ /dev/null @@ -1,52 +0,0 @@ -
    - -

    {op=modify-printer?Úprava tiskárny {printer_name}:Přidat tiskárnu}

    - -
    - - -{printer_name?:} - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Připojení:{device_uri}
    Přenosová rychlost:
    Parita:
    Datových bitů:
    Řízení toku dat:
    - -
    -
    \ No newline at end of file diff --git a/templates/cs/choose-uri.tmpl b/templates/cs/choose-uri.tmpl deleted file mode 100644 index ad919b751..000000000 --- a/templates/cs/choose-uri.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    - -

    {op=modify-printer?Úprava tiskárny {printer_name}:Přidat tiskárnu}

    - -
    - - -{printer_name?:} - - - - - - - - - - - - - - - -
    Připojení:
    Příklady: -
    -    http://hostname:631/ipp/
    -    http://hostname:631/ipp/port1
    -
    -    ipp://hostname/ipp/
    -    ipp://hostname/ipp/port1
    -
    -    lpd://hostname/queue
    -
    -    socket://hostname
    -    socket://hostname:9100
    -
    - -

    Viz. "Síťové tiskárny" pro zadání správného URI tiskárny.

    - -
    - -
    -
    - diff --git a/templates/cs/class-added.tmpl b/templates/cs/class-added.tmpl deleted file mode 100644 index d64430337..000000000 --- a/templates/cs/class-added.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Přidat třídu

    - -

    Třída {printer_name} byla úspěšně přidána. - -

    diff --git a/templates/cs/class-confirm.tmpl b/templates/cs/class-confirm.tmpl deleted file mode 100644 index 87c16140f..000000000 --- a/templates/cs/class-confirm.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    - -

    Výmaz třídy {printer_name}

    - -

    Varování: Opravdu chcete vymazat třídu -{printer_name}?

    - -

    - -
    diff --git a/templates/cs/class-deleted.tmpl b/templates/cs/class-deleted.tmpl deleted file mode 100644 index e2fb7f8f7..000000000 --- a/templates/cs/class-deleted.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Výmaz třídy {printer_name}

    - -

    Třída {printer_name} byla úspěšně vymazána. - -

    \ 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 index d8142d1cd..000000000 --- a/templates/cs/class-jobs-header.tmpl +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    Úlohy

    -
    diff --git a/templates/cs/class-modified.tmpl b/templates/cs/class-modified.tmpl deleted file mode 100644 index 131fd08f3..000000000 --- a/templates/cs/class-modified.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Úprava třídy {printer_name}

    - -

    Třída {printer_name} byla úspěšně upravena. - -

    \ No newline at end of file diff --git a/templates/cs/class.tmpl b/templates/cs/class.tmpl deleted file mode 100644 index 39f72bf9f..000000000 --- a/templates/cs/class.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    -

    {printer_name} -({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:})

    - -
    - - - -
    - -
    - - - - - -
    - - - - - - -
    Popis:{printer_info}
    Umístění:{printer_location}
    Členové:{?member_uris=?None:{member_uris}}
    Nastavení:job-sheets={job_sheets_default} -media={media_default?{media_default}:unknown} -{sides_default?sides={sides_default}:}
    - -
    diff --git a/templates/cs/classes-header.tmpl b/templates/cs/classes-header.tmpl deleted file mode 100644 index 5bfeeee7f..000000000 --- a/templates/cs/classes-header.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    {total=0?Žádné třídy:Zobrazení {#printer_name} z {total} tříd{total=1?y:}}.

    diff --git a/templates/cs/classes.tmpl b/templates/cs/classes.tmpl deleted file mode 100644 index 02d32a638..000000000 --- a/templates/cs/classes.tmpl +++ /dev/null @@ -1,12 +0,0 @@ -{#printer_name=0?: - - - - - -{[printer_name] - -} - -
    {ORDER=dec? Název fromty : Název fronty }PopisUmístěníČlenovéStav
    {printer_name}{printer_info}{printer_location}{?member_uris=?Žádný:{member_uris}}{printer_state=3?Čeká:{printer_state=4?Tiskne:Pauza}}{printer_state_message? - "{printer_state_message}":}
    } diff --git a/templates/cs/command.tmpl b/templates/cs/command.tmpl deleted file mode 100644 index b2a4fd47a..000000000 --- a/templates/cs/command.tmpl +++ /dev/null @@ -1,12 +0,0 @@ -
    - -

    {title} u {printer_name}

    - -

    {job_state>5?: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?, -"{job_printer_state_message}":}}.

    - -
    diff --git a/templates/cs/edit-config.tmpl b/templates/cs/edit-config.tmpl deleted file mode 100644 index ab3bf652f..000000000 --- a/templates/cs/edit-config.tmpl +++ /dev/null @@ -1,24 +0,0 @@ - - -
    - -

    Úprava konfiguračního souboru

    - -
    - - - - - -

    -

    - -
    - -
    diff --git a/templates/cs/error-op.tmpl b/templates/cs/error-op.tmpl deleted file mode 100644 index 636edc2d7..000000000 --- a/templates/cs/error-op.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Chyba {?title} u {?printer_name}

    - -

    Chyba:

    - -
    Neznámá operace "{op}"!
    - -
    diff --git a/templates/cs/error.tmpl b/templates/cs/error.tmpl deleted file mode 100644 index 7ee1926a5..000000000 --- a/templates/cs/error.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Chyba {?title} u {?printer_name}

    - -

    {?message?{message}:Chyba}:

    - -
    {error}
    - -
    diff --git a/templates/cs/header.tmpl.in b/templates/cs/header.tmpl.in deleted file mode 100644 index 739e51ddc..000000000 --- a/templates/cs/header.tmpl.in +++ /dev/null @@ -1,29 +0,0 @@ - - - - - {title} - CUPS @CUPS_VERSION@@CUPS_REVISION@ - - - {refresh_page?:} - - - - - - - diff --git a/templates/cs/option-conflict.tmpl b/templates/cs/option-conflict.tmpl deleted file mode 100644 index 8c6832690..000000000 --- a/templates/cs/option-conflict.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -

    Chyba: Následující parametry jsou v rozporu:

    - - - -

    Prosím změňte jeden nebo více parametrů pro vyřešení problému.

    diff --git a/templates/cs/option-header.tmpl b/templates/cs/option-header.tmpl deleted file mode 100644 index 464726a50..000000000 --- a/templates/cs/option-header.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    {group}

    - -
    - - - - - - - - - - - - - -
      Hlavní strana    Administrace    Třídy tiskáren    Nápověda    Ãšlohy    Tiskárny  
     
    diff --git a/templates/cs/help-header.tmpl b/templates/cs/help-header.tmpl deleted file mode 100644 index fe8dca847..000000000 --- a/templates/cs/help-header.tmpl +++ /dev/null @@ -1,48 +0,0 @@ -
    -
    -{TOPIC?:} - -

    Hledat v{HELPTITLE? {HELPTITLE}:{TOPIC? {TOPIC}:e všech dokumentech}}: - -

    - -
    - - - - -{QUERY?

    Výsledky hledání v{HELPFILE? {HELPTITLE}:{TOPIC? {TOPIC}:e všech dokumentech}}\:

    -{QTEXT?:} -:

    Nebyl nalezen záznam.

    } -
    :} -{HELPTITLE?

    {HELPTITLE}

    -
    : - -

    Nápověda

    - -

    Toto je rozhraní nápovědy CUPS. Zadejte hledané slovo nebo klikněte na -některý z odkazů dokumentace k zobrazení nápovědy.

    - -

    Pokud jste nový uživatel programu CUPS, přečtěte si stránku "Popis programu CUPS". Zkušení uživatelé by -si měli přečíst stránku "Co je nového v CUPS 1.6".

    - -

    Hlavní strana programu CUPS 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.

    } diff --git a/templates/cs/help-printable.tmpl b/templates/cs/help-printable.tmpl deleted file mode 100644 index 763a98b7c..000000000 --- a/templates/cs/help-printable.tmpl +++ /dev/null @@ -1,9 +0,0 @@ - - - - - {HELPTITLE} - - - - diff --git a/templates/cs/help-trailer.tmpl b/templates/cs/help-trailer.tmpl deleted file mode 100644 index 4c1ebed85..000000000 --- a/templates/cs/help-trailer.tmpl +++ /dev/null @@ -1 +0,0 @@ -
    diff --git a/templates/cs/job-cancel.tmpl b/templates/cs/job-cancel.tmpl deleted file mode 100644 index 31f50ead8..000000000 --- a/templates/cs/job-cancel.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Zrušit úlohu {job_id}

    - -

    Úloha {job_id} byla zrušena. - -

    diff --git a/templates/cs/job-hold.tmpl b/templates/cs/job-hold.tmpl deleted file mode 100644 index f0e7b6310..000000000 --- a/templates/cs/job-hold.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Pozastavení úlohy {job_id}

    - -

    Úloha {job_id} byla pozastavena. - -

    diff --git a/templates/cs/job-move.tmpl b/templates/cs/job-move.tmpl deleted file mode 100644 index b706ca837..000000000 --- a/templates/cs/job-move.tmpl +++ /dev/null @@ -1,27 +0,0 @@ -
    - -
    - - -{job_id?:} - -

    {job_id?Přesun úlohy {job_id}:Přesun všech úloh}

    - - - - - - - - - - -
    Nová tiskárna: - -
    - -
    - -
    diff --git a/templates/cs/job-moved.tmpl b/templates/cs/job-moved.tmpl deleted file mode 100644 index 40e5eef83..000000000 --- a/templates/cs/job-moved.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    {job_id?Přesun úlohy {job_id}:Přesun všech úloh}

    - -

    {job_id?Úloha přesunuta {job_id}:Všechny úlohy přesunuty} na tiskárnu -{job_printer_name}.

    - -
    diff --git a/templates/cs/job-release.tmpl b/templates/cs/job-release.tmpl deleted file mode 100644 index 199c7989a..000000000 --- a/templates/cs/job-release.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Uvolnit úlohu {job_id}

    - -

    Úloha {job_id} byla uvolněna k tisku. - -

    diff --git a/templates/cs/job-restart.tmpl b/templates/cs/job-restart.tmpl deleted file mode 100644 index 56c113a11..000000000 --- a/templates/cs/job-restart.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Opakovaný tisk úlohy {job_id}

    - -

    Úloha {job_id} byla znovu spuštěna. - -

    diff --git a/templates/cs/jobs-header.tmpl b/templates/cs/jobs-header.tmpl deleted file mode 100644 index 591d4ce1f..000000000 --- a/templates/cs/jobs-header.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    {?which_jobs=?:
    } -{?which_jobs=completed?:
    } -{?which_jobs=all?:
    }
    - -

    {total=0?Žádné úlohy:Zobrazení {#job_id} z {total} {?which_jobs=?aktivních:{which_jobs=all?:dokončených}} {total=1?úloha:úloh}}.

    diff --git a/templates/cs/jobs.tmpl b/templates/cs/jobs.tmpl deleted file mode 100644 index 75b483a6f..000000000 --- a/templates/cs/jobs.tmpl +++ /dev/null @@ -1,37 +0,0 @@ -{#job_id=0?: - - - - - -{[job_id] - - - - - - - - - -} - -
    {ORDER=dec? ID : ID }JménoUživatelVelikostPočet stranStavŘízení
    {job_printer_name}-{job_id}{?phone? ({phone}):} {?job_name=?Neznámý:{job_name}} {?job_originating_user_name=?Neznámý:{job_originating_user_name}} {job_k_octets} k {job_media_sheets_completed=0?Neznámý:{?job_media_sheets_completed}} {job_state=3?Čeká od
    {time_at_creation}:{job_state=4?Pozastaveno od
    {time_at_creation}: -{job_state=5?Zpracováváno od
    {time_at_processing}:{job_state=6?Zastaveno: -{job_state=7?Zrušeno v
    {time_at_completed}:{job_state=8?Zrušeno:Dokončeno v
    {time_at_completed}}}}}}} {job_printer_state_message?
    -"{job_printer_state_message}":}
    -{job_preserved>0?{job_state>5? -
    :}:} -{job_state=4? -
    -
    :} -{job_state=3? -
    -
    :} -{job_state<7? -
    -
    -
    :} - 
    -} diff --git a/templates/cs/list-available-printers.tmpl b/templates/cs/list-available-printers.tmpl deleted file mode 100644 index 8c01b27ef..000000000 --- a/templates/cs/list-available-printers.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -
    - -

    Dostupné tiskárny

    - -{#device_uri=0?

    Žádné tiskárny nenalezeny.

    -:
      {[device_uri] -
    • -{device_make_and_model} ({device_info})
    • -}
    } - -
    diff --git a/templates/cs/modify-class.tmpl b/templates/cs/modify-class.tmpl deleted file mode 100644 index 9e4881a22..000000000 --- a/templates/cs/modify-class.tmpl +++ /dev/null @@ -1,34 +0,0 @@ -
    - -

    Úprava třídy {printer_name}

    - -
    - - - - - - - - - - - - - - - - - - - - - -
    Popis:
    Umístění:
    Členové: - -
    - -
    -
    \ No newline at end of file diff --git a/templates/cs/modify-printer.tmpl b/templates/cs/modify-printer.tmpl deleted file mode 100644 index 8fc48ed6f..000000000 --- a/templates/cs/modify-printer.tmpl +++ /dev/null @@ -1,42 +0,0 @@ -
    - -

    Úprava tiskárny {printer_name}

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Popis:
    -(Srozumitelný popis)
    Location:
    -(Srozumitelný popis umístění)
    Připojení:{device_uri}
    Sdílení: -sdílet tuto tiskárnu
    - -
    -
    diff --git a/templates/cs/norestart.tmpl b/templates/cs/norestart.tmpl deleted file mode 100644 index 4f09e8b23..000000000 --- a/templates/cs/norestart.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Změna nastavení

    - -

    Server nebyl dosud restartován, protože nebyly provedeny žádné změny v -konfiguraci ...

    - -
    diff --git a/templates/cs/option-boolean.tmpl b/templates/cs/option-boolean.tmpl deleted file mode 100644 index e832ee102..000000000 --- a/templates/cs/option-boolean.tmpl +++ /dev/null @@ -1,6 +0,0 @@ -
    {keytext}: -{[choices]{text}} -
    diff --git a/templates/cs/option-pickmany.tmpl b/templates/cs/option-pickmany.tmpl deleted file mode 100644 index 0da75e5d2..000000000 --- a/templates/cs/option-pickmany.tmpl +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/templates/cs/option-pickone.tmpl b/templates/cs/option-pickone.tmpl deleted file mode 100644 index 9c7e2a2b3..000000000 --- a/templates/cs/option-pickone.tmpl +++ /dev/null @@ -1,18 +0,0 @@ - - -:} - diff --git a/templates/cs/option-trailer.tmpl b/templates/cs/option-trailer.tmpl deleted file mode 100644 index 916de2fec..000000000 --- a/templates/cs/option-trailer.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    {keytext}:
    {keytext}: -{iscustom=1?{[params] - - -}
    {paramtext}:{params=Units?:}
    -
    - -

    - - \ No newline at end of file diff --git a/templates/cs/pager.tmpl b/templates/cs/pager.tmpl deleted file mode 100644 index 35a7a9263..000000000 --- a/templates/cs/pager.tmpl +++ /dev/null @@ -1,6 +0,0 @@ - - - - - -
    {PREV?
    : }
    {NEXT?
    : }
    diff --git a/templates/cs/printer-accept.tmpl b/templates/cs/printer-accept.tmpl deleted file mode 100644 index c81faefea..000000000 --- a/templates/cs/printer-accept.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Příjem úloh u {is_class?třídy:tiskárny} {printer_name}

    - -

    {is_class?Třída:Tiskárna} {printer_name} -nyní přijímá úlohy.

    - -
    diff --git a/templates/cs/printer-added.tmpl b/templates/cs/printer-added.tmpl deleted file mode 100644 index ac59405ed..000000000 --- a/templates/cs/printer-added.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Přidat tiskárnu

    - -

    Tiskárna {printer_name} byla úspěšně přidána. - -

    diff --git a/templates/cs/printer-configured.tmpl b/templates/cs/printer-configured.tmpl deleted file mode 100644 index c002232f2..000000000 --- a/templates/cs/printer-configured.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Nastavení parametrů u {printer_name}

    - -

    {OP=set-class-options?Class :Tiskárna }{printer_name} -byla úspěšně nastavena. - -

    diff --git a/templates/cs/printer-confirm.tmpl b/templates/cs/printer-confirm.tmpl deleted file mode 100644 index 5ace8a6c2..000000000 --- a/templates/cs/printer-confirm.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    - -

    Výmaz tiskárny {printer_name}

    - -

    Varování: Opravdu chcete vymazat tiskárnu -{printer_name}?

    - -

    - -
    diff --git a/templates/cs/printer-default.tmpl b/templates/cs/printer-default.tmpl deleted file mode 100644 index d066cc088..000000000 --- a/templates/cs/printer-default.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -
    - -

    Nastavení {is_class?třídy:tiskárny} {printer_name} jako výchozí

    - -

    {is_class?Třída:Tiskárna} {printer_name} -byla nastavena jako výchozí na serveru.

    - -
    Pozn. libovolný uživatel může pomocí příkazu lpoptions přepsat toto nastavení.
    - -
    diff --git a/templates/cs/printer-deleted.tmpl b/templates/cs/printer-deleted.tmpl deleted file mode 100644 index 76c8b22a8..000000000 --- a/templates/cs/printer-deleted.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Výmaz tiskárny {printer_name}

    - -

    Tiskárna {printer_name} byla úspěšně vymazána. - -

    diff --git a/templates/cs/printer-jobs-header.tmpl b/templates/cs/printer-jobs-header.tmpl deleted file mode 100644 index d8142d1cd..000000000 --- a/templates/cs/printer-jobs-header.tmpl +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    Úlohy

    -
    diff --git a/templates/cs/printer-modified.tmpl b/templates/cs/printer-modified.tmpl deleted file mode 100644 index 3dd91d255..000000000 --- a/templates/cs/printer-modified.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Úprava tiskárny {printer_name}

    - -

    Tiskárna {printer_name} byla -úspěšně upravena. - -

    \ No newline at end of file diff --git a/templates/cs/printer-purge.tmpl b/templates/cs/printer-purge.tmpl deleted file mode 100644 index b85195fdd..000000000 --- a/templates/cs/printer-purge.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    - -

    Výmaz úloh u {is_class?třídy:tiskárny} {printer_name}

    - -

    U {is_class?třídy:tiskárny} {printer_name} -byly vymazány všechny úlohy.

    - -
    - diff --git a/templates/cs/printer-reject.tmpl b/templates/cs/printer-reject.tmpl deleted file mode 100644 index 6ce184bc8..000000000 --- a/templates/cs/printer-reject.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Odmítnutí úloh u {is_class?třídy:tiskárny} {printer_name}

    - -

    {is_class?Třída:Tiskárna} {printer_name} -už nepřijímá úlohy.

    - -
    diff --git a/templates/cs/printer-start.tmpl b/templates/cs/printer-start.tmpl deleted file mode 100644 index cc9f3ebd7..000000000 --- a/templates/cs/printer-start.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Obnovení {is_class?třídy:tiskárny} {printer_name}

    - -

    {is_class?Třída:Tiskárna} {printer_name} -byla obnovena.

    - -
    \ No newline at end of file diff --git a/templates/cs/printer-stop.tmpl b/templates/cs/printer-stop.tmpl deleted file mode 100644 index cfecaa0ad..000000000 --- a/templates/cs/printer-stop.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Pozastavení {is_class?třídy:tiskárny} {printer_name}

    - -

    {is_class?Třída:Tiskárna} {printer_name} -byla pozastavena.

    - -
    \ No newline at end of file diff --git a/templates/cs/printer.tmpl b/templates/cs/printer.tmpl deleted file mode 100644 index 7e605c565..000000000 --- a/templates/cs/printer.tmpl +++ /dev/null @@ -1,48 +0,0 @@ -
    - -

    {printer_name} -({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:})

    - -
    - - - -
    - -
    - - - - -
    - - - - - - -
    Popis:{printer_info}
    Umístění:{printer_location}
    Výrobce a model:{printer_make_and_model} -({color_supported=1?barevná:černobílá}{sides_supported?, oboustranný tisk:})
    -
    Připojení:{device_uri}
    Nastavení:job-sheets={job_sheets_default} -media={media_default?{media_default}:unknown} -{sides_default?sides={sides_default}:}
    - -
    \ No newline at end of file diff --git a/templates/cs/printers-header.tmpl b/templates/cs/printers-header.tmpl deleted file mode 100644 index 4755aff38..000000000 --- a/templates/cs/printers-header.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    {total=0?Žádné tiskárny:Zobrazení {#printer_name} z {total} tiskár{total=1?ny:en}}.

    diff --git a/templates/cs/printers.tmpl b/templates/cs/printers.tmpl deleted file mode 100644 index 3861ac339..000000000 --- a/templates/cs/printers.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -{#printer_name=0?: - - - - - -{[printer_name] - -} - -
    {ORDER=dec? Název fronty : Název fronty }PopisUmístěníVýrobce a modelStav
    {printer_name}{printer_info}{printer_location}{printer_make_and_model}{printer_state=3?Čeká:{printer_state=4?Tiskne:Pauza}}{printer_state_message? - "{printer_state_message}":}
    } diff --git a/templates/cs/restart.tmpl b/templates/cs/restart.tmpl deleted file mode 100644 index 1c68b059b..000000000 --- a/templates/cs/restart.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Změna nastavení

    - -

    Prosím čekejte, probíhá restart serveru ...

    - -
    diff --git a/templates/cs/samba-export.tmpl b/templates/cs/samba-export.tmpl deleted file mode 100644 index afc0bea68..000000000 --- a/templates/cs/samba-export.tmpl +++ /dev/null @@ -1,55 +0,0 @@ - - -
    - - - -

    Export tiskáren do Samby

    - -{error?

    Nelze exportovat tiskárny do Samby\:

    -
    {error}
    -

    Nahlédnout do error_log souboru pro více informací.

    : - -

    Tato stránka umožňuje export tiskáren do Samby, aby k nim klienti -systému Windows mohli přistupovat pomocí ikon Okolní počítače -nebo Místa v síti na své pracovní ploše. Musíte předem -nainstalovat ovladače OS Windows pro postScriptové tiskárny, jak je popsáno v - cupsaddsmb(8) -manuálové stránky.

    } - - - - - - - - - - - - - - - - - - -
    Tiskárny: -
    - Export všech tiskáren -
    Uživatel Samby: (povinný údaj)
    Heslo uživatele: (povinný údaj)
    - -
    diff --git a/templates/cs/samba-exported.tmpl b/templates/cs/samba-exported.tmpl deleted file mode 100644 index 121fe4883..000000000 --- a/templates/cs/samba-exported.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    Export tiskáren do Samby byl úspěšně proveden.

    diff --git a/templates/cs/search.tmpl b/templates/cs/search.tmpl deleted file mode 100644 index cad77ca0b..000000000 --- a/templates/cs/search.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    -{WHICH_JOBS?:} -{ORDER?:} - -

    Hledat v -{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?třídách:{SECTION=jobs?úlohách:tiskárnách}}}: -

    - -
    diff --git a/templates/cs/set-printer-options-header.tmpl b/templates/cs/set-printer-options-header.tmpl deleted file mode 100644 index 160ae6bc7..000000000 --- a/templates/cs/set-printer-options-header.tmpl +++ /dev/null @@ -1,26 +0,0 @@ -
    - -

    Nastavení parametrů u {printer_name}

    - -
    - - - -{HAVE_AUTOCONFIGURE?:} - - - -

    {[group_id] -{group}     }

    - -
    diff --git a/templates/cs/set-printer-options-trailer.tmpl b/templates/cs/set-printer-options-trailer.tmpl deleted file mode 100644 index 11adc7012..000000000 --- a/templates/cs/set-printer-options-trailer.tmpl +++ /dev/null @@ -1,16 +0,0 @@ -
    - - -
    - -
    diff --git a/templates/cs/subscription-added.tmpl b/templates/cs/subscription-added.tmpl deleted file mode 100644 index 926d79692..000000000 --- a/templates/cs/subscription-added.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    Předplatné {subscription_name} bylo úspěšně přidáno.

    - -
    diff --git a/templates/cs/subscription-canceled.tmpl b/templates/cs/subscription-canceled.tmpl deleted file mode 100644 index 0e25268b6..000000000 --- a/templates/cs/subscription-canceled.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    Předplatné #{notify_subscription_id} bylo zrušeno.

    - -
    diff --git a/templates/cs/test-page.tmpl b/templates/cs/test-page.tmpl deleted file mode 100644 index d1a1d9d80..000000000 --- a/templates/cs/test-page.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Tisk zkušební stránky na {printer_name}

    - -

    Zkušební stránka odeslána; ID úlohy je -{printer_name}-{job_id}.

    - -
    diff --git a/templates/cs/trailer.tmpl b/templates/cs/trailer.tmpl deleted file mode 100644 index 5817101f9..000000000 --- a/templates/cs/trailer.tmpl +++ /dev/null @@ -1,8 +0,0 @@ - -  -CUPS a logo CUPS jsou ochranné známky společnosti -Apple Inc. CUPS je chráněn autorskými -právy 2007-2014 Apple Inc. VÅ¡echna práva vyhrazena. - - - diff --git a/templates/cs/users.tmpl b/templates/cs/users.tmpl deleted file mode 100644 index ff39cc3ce..000000000 --- a/templates/cs/users.tmpl +++ /dev/null @@ -1,30 +0,0 @@ -
    - -
    - - - -{IS_CLASS?:} - -

    Nastavení přístupu uživatelů u {printer_name}

    - - - - - - - - - - -
    Uživatelé: - -
    -Povolit uživatelům tisknout -Zakázat uživatelům tisknout -
    - -
    - -
    -
    diff --git a/templates/de/add-class.tmpl b/templates/de/add-class.tmpl deleted file mode 100644 index b91be303e..000000000 --- a/templates/de/add-class.tmpl +++ /dev/null @@ -1,40 +0,0 @@ -
    - -

    Klasse hinzufügen

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Name:
    -(Darf alle druckbaren Zeichen außer "/", "#", und Leerzeichen enthalten)
    Beschreibung:
    -(Für Menschen lesbare Beschreibung wie "HP LaserJet with Duplexer")
    Ort:
    -(Für Menschen lesbarer Ort wie "Lab 1")
    Mitglieder: - -
    - -
    -
    diff --git a/templates/de/add-printer.tmpl b/templates/de/add-printer.tmpl deleted file mode 100644 index 05af41f84..000000000 --- a/templates/de/add-printer.tmpl +++ /dev/null @@ -1,52 +0,0 @@ -
    - -

    Drucker hinzufügen (Schritt 3/5)

    - -
    - - - - - - -{?current_make!?:} -{?current_make_and_model!?:} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name:
    -(Darf alle druckbaren Zeichen außer "/", "#", und Leerzeichen enthalten)
    Beschreibung:
    -(Für Menschen lesbare Beschreibung wie "HP LaserJet with Duplexer")
    Ort:
    -(Für Menschen lesbarer Ort wie "Lab 1")
    Verbindung:{device_uri}
    Freigabe: -Diesen Drucker im Netz freigeben
    Farbmanagement: -Einschalten
    - -
    -
    diff --git a/templates/de/add-rss-subscription.tmpl b/templates/de/add-rss-subscription.tmpl deleted file mode 100644 index 16fe5ade7..000000000 --- a/templates/de/add-rss-subscription.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    - - - -

    RSS Subskription hinzufügen

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name:
    -(Darf alle druckbaren Zeichen ausser Leerzeichen, "/", "?", und "#" enthalten)
    Warteschlange:
    Ereignisse:Auftrag Erstellt
    -Auftrag Abgeschlossen
    -Auftrag Gestoppt
    -Auftrags Parameter Geändert
        Warteschlange Gestoppt
    -Warteschlange Hinzugefügt
    -Warteschlange Geändert
    -Warteschlange Gelöscht
        Server Gestartet
    -Server Gestoppt
    -Server Neu Gestartet
    -Server Sicherheits Prüfung
    Maximale Ereignisse in Durchführung:
    - -
    diff --git a/templates/de/admin.tmpl b/templates/de/admin.tmpl deleted file mode 100644 index 6ed058589..000000000 --- a/templates/de/admin.tmpl +++ /dev/null @@ -1,110 +0,0 @@ - - -
    - -

    Drucker

    - -

    -

    -
    -
    -{have_samba?
    :} -

    - -

    Klassen

    - -

    -

    -
    -

    - -

    Druckaufträge

    - -

    -

    -

    - -
              - -

    Server

    - -

    -

    -
    -
    -
    -

    - -{SETTINGS_ERROR?

    {SETTINGS_MESSAGE}

    -
    {SETTINGS_ERROR}
    : - -
    - - -{ADVANCEDSETTINGS?

    Erweiterte Servereinstellungen\:

    - -

    Erweitert
    - - - Zeige freigegebene Drucker von anderen Systemen
    -        Protokolle\: - CUPS -{HAVE_LDAP? LDAP:} -{HAVE_LIBSLP? SLP:}
    - Freigeben von Druckern welche mit diesem System verbunden sind
    -        Klienten maximal\: -
    -        Protokolle\: - CUPS -{HAVE_DNSSD? DNS-SD:} -{HAVE_LDAP? LDAP:} -{HAVE_LIBSLP? SLP:}
    -         Erlaube Drucken vom Internet aus
    -         Veröffentliche Webinterface
    - Erlaube entfernte Verwaltung
    -{have_gssapi? Benutze Kerberos Authentifizierung (FAQ)
    :} - Erlaube Benutzern jeden Auftrag abzubrechen (nicht nur die Eigenen)
    - Auftragsverlauf aufbewahren
    -        Anzahl der Aufträge\: -
    -         Dateien von Druckaufträgen aufbewahren
    - Speichere Fehlerinformationen für Fehlersuche
    -        Maximale Grösse der Protokolldatei\: -

    - -:

    Grundlegende Servereinstellungen:

    - -

    Erweitert
    - - Zeige freigegebene Drucker von anderen Systemen
    - Freigeben von Druckern welche mit diesem System verbunden sind
    -         Erlaube Drucken vom Internet aus
    - Erlaube entfernte Verwaltung
    -{have_gssapi? Benutze Kerberos Authentifizierung (FAQ)
    :} - Erlaube Benutzern jeden Auftrag abzubrechen (nicht nur die Eigenen)
    - Speichere Fehlerinformationen für Fehlersuche

    - -} -

    - -
    } - -
    - -
    - -

    RSS Subskriptionen

    - -

    -

    -

    - -
    - -{notify_subscription_id? - -{[notify_subscription_id] -} - -
    NameEreignisWarteschlange
    {notify_recipient_name}
    -
     
    {notify_events} {notify_printer_name?{notify_printer_name}:Alle Warteschlangen}
    :} diff --git a/templates/de/choose-device.tmpl b/templates/de/choose-device.tmpl deleted file mode 100644 index 7cb9e77c2..000000000 --- a/templates/de/choose-device.tmpl +++ /dev/null @@ -1,53 +0,0 @@ -
    - -

    {op=modify-printer?{printer_name} ändern:Drucker hinzufügen (Schritt 1/5)}

    - -{CUPS_GET_DEVICES_DONE?
    - - -{printer_name?:} - - -{op=add-printer?: - - -} - - - - - - - - - - - - - - - - - -
    Aktuelle Verbindung\: -{current_device_uri}
    Lokale Drucker\: -{[device_uri]{device_class!network? -{device_info} {?device_make_and_model!Unbekannt?({device_make_and_model}):}
    -:}} -
    Entdeckte Netzwerkdrucker\: -{[device_uri]{device_class=network?{device_uri~[a-z]+://? -{device_info} {?device_make_and_model!Unbekannt?({device_make_and_model}):}
    -:}:}} -
    Andere Netzwerkdrucker\: -{[device_uri]{device_class=network?{device_uri~[a-z]+://?: -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -}:}} -
    - -
    :

    Suche nach Druckern...

    } -
    - diff --git a/templates/de/choose-make.tmpl b/templates/de/choose-make.tmpl deleted file mode 100644 index a7eb0c177..000000000 --- a/templates/de/choose-make.tmpl +++ /dev/null @@ -1,68 +0,0 @@ -
    - -

    {op=modify-printer?{printer_name} ändern:Drucker hinzufügen (Schritt4/5)}

    - -
    - - -{printer_name?:} - - - - - - -{op=modify-printer?: - - -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name:{printer_name}
    Beschreibung:{printer_info}
    Ort:{printer_location}
    Verbindung:{device_uri}
    Freigabe: -Diesen Drucker {?printer_is_shared=?nicht:{?printer_is_shared=0?nicht:}} im Netz freigeben
    Farbmanagement:{?printer_is_colormanaged=?Not:{?printer_is_colormanaged=0?Not:}} Enabled
    Marke: - -
     
    Oder stellen Sie eine PPD Datei bereit:
    - -
    -
    diff --git a/templates/de/choose-model.tmpl b/templates/de/choose-model.tmpl deleted file mode 100644 index 74ddcc5d5..000000000 --- a/templates/de/choose-model.tmpl +++ /dev/null @@ -1,65 +0,0 @@ -
    - -

    {op=modify-printer?{printer_name} ändern:Drucker hinzufügen (Schritt 5/5)}

    - -
    - - -{printer_name?:} - - - - - -{op=modify-printer?: - - -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name:{printer_name}
    Beschreibung:{printer_info}
    Ort:{printer_location}
    Verbindung:{device_uri}
    Freigabe: -Dieser Drucker ist {?printer_is_shared=?nicht:{?printer_is_shared=0?nicht:}} im Netz freigeben
    Farmbmanagement: -{?printer_is_colormanaged=?Eingeschaltet:{?printer_is_colormanaged=0?Ausgeschaltet:}} Eingeschaltet
    Marke:{PPD_MAKE}
    Modell: - -
    Oder stellen Sie eine PPD Datei bereit:
    - -
    -
    diff --git a/templates/de/choose-serial.tmpl b/templates/de/choose-serial.tmpl deleted file mode 100644 index f601f5b20..000000000 --- a/templates/de/choose-serial.tmpl +++ /dev/null @@ -1,52 +0,0 @@ -
    - -

    {op=modify-printer?{printer_name} ändern:Drucker hinzufügen}

    - -
    - - -{printer_name?:} - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Verbindung:{device_uri}
    Baud Rate:
    Parität:
    Daten Bits:
    Flußkontrolle:
    - -
    -
    diff --git a/templates/de/choose-uri.tmpl b/templates/de/choose-uri.tmpl deleted file mode 100644 index a8a202ac2..000000000 --- a/templates/de/choose-uri.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    - -

    {op=modify-printer?{printer_name} ändern:Drucker hinzufügen (Schritt2/5)}

    - -
    - - -{printer_name?:} - - - - - - - - - - - - - - - -
    Verbindungs-URI:
    Beispiele: -
    -    http://Hostname:631/ipp/
    -    http://Hostname:631/ipp/Anschluss1
    -
    -    ipp://Hostname/ipp/
    -    ipp://Hostname/ipp/Anschluss1
    -
    -    lpd://Hostname/Warteschlange
    -
    -    socket://Hostname
    -    socket://Hostname:9100
    -
    - -

    Bitte lesen Sie "Netzwerk -Drucker" um die korrekte URI für Ihren Drucker zu benutzen.

    - -
    - -
    -
    diff --git a/templates/de/class-added.tmpl b/templates/de/class-added.tmpl deleted file mode 100644 index 9d619daa9..000000000 --- a/templates/de/class-added.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Klasse hinzufügen

    - -

    Die Klasse {printer_name} wurde erfolgreich -hinzugefügt. - -

    diff --git a/templates/de/class-confirm.tmpl b/templates/de/class-confirm.tmpl deleted file mode 100644 index d4a7777d3..000000000 --- a/templates/de/class-confirm.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    - -

    Klasse {printer_name} löschen

    - -

    Warnung: Sind Sie sicher, dass Sie die Klasse -{printer_name} löschen wollen?

    - -

    - -
    diff --git a/templates/de/class-deleted.tmpl b/templates/de/class-deleted.tmpl deleted file mode 100644 index 7697db27d..000000000 --- a/templates/de/class-deleted.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Klasse {printer_name} löschen

    - -

    Die Klasse {printer_name} wurde erfolgreich gelöscht. - -

    diff --git a/templates/de/class-jobs-header.tmpl b/templates/de/class-jobs-header.tmpl deleted file mode 100644 index b563995f4..000000000 --- a/templates/de/class-jobs-header.tmpl +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    Aufträge

    -
    diff --git a/templates/de/class-modified.tmpl b/templates/de/class-modified.tmpl deleted file mode 100644 index d25ba85ac..000000000 --- a/templates/de/class-modified.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Klasse {printer_name} ändern

    - -

    Die Klasse {printer_name} wurde -erfolgreich geändert. - -

    diff --git a/templates/de/class.tmpl b/templates/de/class.tmpl deleted file mode 100644 index f9cb3eac4..000000000 --- a/templates/de/class.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    -

    {printer_name} -({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:})

    - -
    - - - -
    - -
    - - - - - -
    - - - - - - -
    Beschreibung:{printer_info}
    Ort:{printer_location}
    Mitglieder:{?member_uris=?None:{member_uris}}
    Standardeinstellungen:job-sheets={job_sheets_default} -media={media_default?{media_default}:unbekannt} -{sides_default?sides={sides_default}:}
    - -
    diff --git a/templates/de/classes-header.tmpl b/templates/de/classes-header.tmpl deleted file mode 100644 index 5fa4d4ae3..000000000 --- a/templates/de/classes-header.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    {total=0?Keine Klassen:Zeige {#printer_name} von {total} Klasse{total=1?:n}}.

    diff --git a/templates/de/classes.tmpl b/templates/de/classes.tmpl deleted file mode 100644 index c04d02bda..000000000 --- a/templates/de/classes.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -{#printer_name=0?: - - - - - -{[printer_name] - -} - -
    {ORDER=dec? Wartweschlange : Warteschlange }BeschreibungOrtMitgliederStatus
    {printer_name}{printer_info}{printer_location}{?member_uris=?Keine:{member_uris}}{printer_state=3?Im Leerlauf:{printer_state=4?Beschäftigt:Angehalten}}{printer_state_message? - "{printer_state_message}":}
    } diff --git a/templates/de/command.tmpl b/templates/de/command.tmpl deleted file mode 100644 index 26026992f..000000000 --- a/templates/de/command.tmpl +++ /dev/null @@ -1,12 +0,0 @@ -
    - -

    {title} auf {printer_name}

    - -

    {job_state>5?: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?, -"{job_printer_state_message}":}}

    - -
    diff --git a/templates/de/edit-config.tmpl b/templates/de/edit-config.tmpl deleted file mode 100644 index 966034622..000000000 --- a/templates/de/edit-config.tmpl +++ /dev/null @@ -1,24 +0,0 @@ - - -
    - -

    Konfigurationsdatei ändern

    - -
    - - - - - -

    -

    - -
    - -
    diff --git a/templates/de/error-op.tmpl b/templates/de/error-op.tmpl deleted file mode 100644 index d47e73089..000000000 --- a/templates/de/error-op.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    {?title} {?printer_name} Error

    - -

    Fehler:

    - -
    Unbekannte Operation "{op}"!
    - -
    diff --git a/templates/de/error.tmpl b/templates/de/error.tmpl deleted file mode 100644 index 1a7f6503c..000000000 --- a/templates/de/error.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    {?title} {?printer_name} Error

    - -

    {?message?{message}:Fehler:}

    - -
    {error}
    - -
    diff --git a/templates/de/header.tmpl.in b/templates/de/header.tmpl.in deleted file mode 100644 index 7a0ac7806..000000000 --- a/templates/de/header.tmpl.in +++ /dev/null @@ -1,38 +0,0 @@ - - - - - {title} - @CUPS_VERSION@ - - - {refresh_page?:} - - - - - - - - diff --git a/templates/de/option-conflict.tmpl b/templates/de/option-conflict.tmpl deleted file mode 100644 index 347908d37..000000000 --- a/templates/de/option-conflict.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -

    Error: The following options are conflicting:

    - - - -

    Bitte ändern sie eine oder mehrere Einstellungen um die Konflikte zu lösen.

    diff --git a/templates/de/option-header.tmpl b/templates/de/option-header.tmpl deleted file mode 100644 index 464726a50..000000000 --- a/templates/de/option-header.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    {group}

    - -
    - - - - - - - - - - - - - -
      Startseite    Administration    Klassen    Online Hilfe    Aufträge    Drucker  
     
    -
    diff --git a/templates/de/help-header.tmpl b/templates/de/help-header.tmpl deleted file mode 100644 index c9f25a6d6..000000000 --- a/templates/de/help-header.tmpl +++ /dev/null @@ -1,51 +0,0 @@ -
    -
    -{TOPIC?:} - -

    Suche in -{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:allen Dokumenten}}: - -

    - -
    - - - - -{QUERY?

    Suchergebnisse in {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:allen Dokumenten}}\:

    -{QTEXT?:} -:

    Keine Übereinstimmung gefunden.

    } -
    :} -{HELPTITLE?

    {HELPTITLE}

    -
    : - -

    CUPS Hilfeseiten

    - -

    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.

    - -

    Wenn Sie noch unerfahren im Umgang mit CUPS sind, lesen Sie die "CUPS Übersicht". -Erfahrene Benutzer sollten "Was ist neu in CUPS -1.7" lesen.

    - -

    Die CUPS Webseite bietet -ebenfalls viele Angebote inklusive Diskussionsforen für Benutzer, -Antworten auf häufig gestellte Fragen, und ein Formular für -Fehlerberichte und Wünsche.

    } diff --git a/templates/de/help-printable.tmpl b/templates/de/help-printable.tmpl deleted file mode 100644 index 2463c1630..000000000 --- a/templates/de/help-printable.tmpl +++ /dev/null @@ -1,9 +0,0 @@ - - - - - {HELPTITLE} - - - - diff --git a/templates/de/help-trailer.tmpl b/templates/de/help-trailer.tmpl deleted file mode 100644 index 4c1ebed85..000000000 --- a/templates/de/help-trailer.tmpl +++ /dev/null @@ -1 +0,0 @@ -
    diff --git a/templates/de/job-cancel.tmpl b/templates/de/job-cancel.tmpl deleted file mode 100644 index 4ff2ec96e..000000000 --- a/templates/de/job-cancel.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Auftrag {job_id} löschen

    - -

    Auftrag {job_id} wurde gelöscht. - -

    diff --git a/templates/de/job-hold.tmpl b/templates/de/job-hold.tmpl deleted file mode 100644 index aaddb20b6..000000000 --- a/templates/de/job-hold.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Auftrag {job_id} anhalten

    - -

    Auftrag {job_id} wurde vom Drucken abgehalten. - -

    diff --git a/templates/de/job-move.tmpl b/templates/de/job-move.tmpl deleted file mode 100644 index 916369fdc..000000000 --- a/templates/de/job-move.tmpl +++ /dev/null @@ -1,27 +0,0 @@ -
    - -
    - - -{job_id?:} - -

    {job_id?Auftrag {job_id} verschieben:Alle Aufträge verschieben}

    - - - - - - - - - - -
    Neues Ziel: - -
    - -
    - -
    diff --git a/templates/de/job-moved.tmpl b/templates/de/job-moved.tmpl deleted file mode 100644 index 6d4a6d54b..000000000 --- a/templates/de/job-moved.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    {job_id?Auftrag {job_id} verschieben:Alle Aufträge verschieben}

    - -

    {job_id?Auftrag {job_id}:Alle Aufträge} nach -{job_printer_name} verschoben.

    - -
    diff --git a/templates/de/job-release.tmpl b/templates/de/job-release.tmpl deleted file mode 100644 index e1d4227fe..000000000 --- a/templates/de/job-release.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Auftrag {job_id} freigeben

    - -

    Auftrag {job_id} wurde zum Drucken freigegeben. - -

    diff --git a/templates/de/job-restart.tmpl b/templates/de/job-restart.tmpl deleted file mode 100644 index b4876978f..000000000 --- a/templates/de/job-restart.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Auftrag {job_id} neu starten

    - -

    Auftrag {job_id} wurde neu gestartet. - -

    diff --git a/templates/de/jobs-header.tmpl b/templates/de/jobs-header.tmpl deleted file mode 100644 index b2f9e18db..000000000 --- a/templates/de/jobs-header.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    {?which_jobs=?:
    } -{?which_jobs=completed?:
    } -{?which_jobs=all?:
    }
    - -

    {total=0?Keine Aufträge:Zeige {#job_id} von {total} {?which_jobs=?aktiven:{which_jobs=all?:beendeten}} {total=1?Auftrag:Aufträgen}}.

    diff --git a/templates/de/jobs.tmpl b/templates/de/jobs.tmpl deleted file mode 100644 index 29214e028..000000000 --- a/templates/de/jobs.tmpl +++ /dev/null @@ -1,37 +0,0 @@ -{#job_id=0?: - - - - - -{[job_id] - - - - - - - - - -} - -
    {ORDER=dec? ID : ID }NameBenutzerGrösseSeitenStatusKontrolle
    {job_printer_name}-{job_id} {?job_name=?Unbekannt:{job_name}} {job_originating_user_name} {job_k_octets}k {job_media_sheets_completed=0?Unbekannt:{?job_media_sheets_completed}} {job_state=3?unerledigt seit
    {time_at_creation}:{job_state=4?angehalten seit
    {time_at_creation}: -{job_state=5?verarbeitet seit
    {time_at_processing}:{job_state=6?gestoppt: -{job_state=7?gelöscht am
    {time_at_completed}:{job_state=8?abgebrochen:beendet am
    {time_at_completed}}}}}}} {job_printer_state_message?
    -"{job_printer_state_message}":}
    -{job_preserved>0?{job_state>5? -
    -
    :}:} -{job_state=4? -
    -
    :} -{job_state=3? -
    -
    :} -{job_state<7? -
    -
    -
    :} - 
    -} diff --git a/templates/de/list-available-printers.tmpl b/templates/de/list-available-printers.tmpl deleted file mode 100644 index a70fdeb9a..000000000 --- a/templates/de/list-available-printers.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -
    - -

    Verfügbare Drucker

    - -{#device_uri=0?

    Keine Drucker gefunden.

    -:
      {[device_uri] -
    • -{device_make_and_model} ({device_info})
    • -}
    } - -
    diff --git a/templates/de/modify-class.tmpl b/templates/de/modify-class.tmpl deleted file mode 100644 index 7caee5645..000000000 --- a/templates/de/modify-class.tmpl +++ /dev/null @@ -1,34 +0,0 @@ -
    - -

    Klasse {printer_name} ändern

    - -
    - - - - - - - - - - - - - - - - - - - - - -
    Beschreibung:
    Ort:
    Mitglieder: - -
    - -
    -
    diff --git a/templates/de/modify-printer.tmpl b/templates/de/modify-printer.tmpl deleted file mode 100644 index 3903bf795..000000000 --- a/templates/de/modify-printer.tmpl +++ /dev/null @@ -1,46 +0,0 @@ -
    - -

    {printer_name} ändern

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Beschreibung:
    -(Für Menschen lesbare Beschreibung wie "HP LaserJet with Duplexer")
    Ort:
    -(Für Menschen lesbarer Ort wie "Lab 1")
    Verbindung:{device_uri}
    Freigabe: -Diesen Drucker im Netz freigeben
    Farbmanagement: -Einschalten
    - -
    -
    diff --git a/templates/de/norestart.tmpl b/templates/de/norestart.tmpl deleted file mode 100644 index ec3c60d3a..000000000 --- a/templates/de/norestart.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Change Settings

    - -

    Der Server wurde nicht neu gestartet, da die Konfiguration -nicht geändert wurde...

    - -
    diff --git a/templates/de/option-boolean.tmpl b/templates/de/option-boolean.tmpl deleted file mode 100644 index e832ee102..000000000 --- a/templates/de/option-boolean.tmpl +++ /dev/null @@ -1,6 +0,0 @@ -
    {keytext}: -{[choices]{text}} -
    diff --git a/templates/de/option-pickmany.tmpl b/templates/de/option-pickmany.tmpl deleted file mode 100644 index 0da75e5d2..000000000 --- a/templates/de/option-pickmany.tmpl +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/templates/de/option-pickone.tmpl b/templates/de/option-pickone.tmpl deleted file mode 100644 index 1467b3601..000000000 --- a/templates/de/option-pickone.tmpl +++ /dev/null @@ -1,18 +0,0 @@ - - -:} - diff --git a/templates/de/option-trailer.tmpl b/templates/de/option-trailer.tmpl deleted file mode 100644 index 87adedb44..000000000 --- a/templates/de/option-trailer.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    {keytext}:
    {keytext}: -{iscustom=1?{[params] - - -}
    {paramtext}:{params=Units?:}
    -
    - -

    - - diff --git a/templates/de/pager.tmpl b/templates/de/pager.tmpl deleted file mode 100644 index 1164045a3..000000000 --- a/templates/de/pager.tmpl +++ /dev/null @@ -1,6 +0,0 @@ - - - - - -
    {PREV?
    : }
    {NEXT?
    : }
    diff --git a/templates/de/printer-accept.tmpl b/templates/de/printer-accept.tmpl deleted file mode 100644 index 3a610c032..000000000 --- a/templates/de/printer-accept.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Aufträge von {is_class?Klasse:Drucker} {printer_name} akzeptieren

    - -

    {is_class?Klasse:Drucker} {printer_name} -aktzeptiert jetzt Aufträge.

    - -
    diff --git a/templates/de/printer-added.tmpl b/templates/de/printer-added.tmpl deleted file mode 100644 index e09ce018a..000000000 --- a/templates/de/printer-added.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Drucker hinzufügen

    - -

    Drucker {printer_name} wurde erfolgreich -hinzufügt. - -

    diff --git a/templates/de/printer-configured.tmpl b/templates/de/printer-configured.tmpl deleted file mode 100644 index 8ff9a60fb..000000000 --- a/templates/de/printer-configured.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Standardeinstellungen für {printer_name} festlegen

    - -

    Standardeinstellungen für {OP=set-class-options?Klasse :Drucker }{printer_name} -wurden erfolgreich gesetzt. - -

    diff --git a/templates/de/printer-confirm.tmpl b/templates/de/printer-confirm.tmpl deleted file mode 100644 index 2a5890f9b..000000000 --- a/templates/de/printer-confirm.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    - -

    Drucker {printer_name} löschen

    - -

    Warnung: Sind Sie sicher, dass Sie den Drucker -{printer_name} löschen wollen?

    - -

    - -
    diff --git a/templates/de/printer-default.tmpl b/templates/de/printer-default.tmpl deleted file mode 100644 index 6bfd7fc54..000000000 --- a/templates/de/printer-default.tmpl +++ /dev/null @@ -1,13 +0,0 @@ -
    - -

    {is_class?Klasse:Drucker} {printer_name} als Standard festlegen

    - -

    {is_class?Klasse:Drucker} {printer_name} -wurde zum Standarddrucker für diesen Server gemacht.

    - -
    Notiz: Die Einstellungen des Standarddruckers -welche von Benutzern mittels dem lpoptions Befehl gesetzt wurden, -überschreiben diese Einstellung.
    - -
    diff --git a/templates/de/printer-deleted.tmpl b/templates/de/printer-deleted.tmpl deleted file mode 100644 index 4e03ae631..000000000 --- a/templates/de/printer-deleted.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Drucker {printer_name} löschen

    - -

    Drucker {printer_name} wurde erfolgreich gelöscht. - -

    diff --git a/templates/de/printer-jobs-header.tmpl b/templates/de/printer-jobs-header.tmpl deleted file mode 100644 index b563995f4..000000000 --- a/templates/de/printer-jobs-header.tmpl +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    Aufträge

    -
    diff --git a/templates/de/printer-modified.tmpl b/templates/de/printer-modified.tmpl deleted file mode 100644 index cd9792d41..000000000 --- a/templates/de/printer-modified.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Drucker {printer_name} ändern

    - -

    Drucker {printer_name} wurde -erfolgreich geändert. - -

    diff --git a/templates/de/printer-purge.tmpl b/templates/de/printer-purge.tmpl deleted file mode 100644 index 2cfffce69..000000000 --- a/templates/de/printer-purge.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Aufträge für {is_class?die Klasse:den Drucker} {printer_name} verwerfen

    - -

    Aufträge für {is_class?die Klasse:den Drucker} {printer_name} -wurden verworfen.

    - -
    diff --git a/templates/de/printer-reject.tmpl b/templates/de/printer-reject.tmpl deleted file mode 100644 index 867fe40ee..000000000 --- a/templates/de/printer-reject.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Aufträge für {is_class?die Klasse:den Drucker} {printer_name} ablehnen

    - -

    {is_class?Die Klasse:Der Drucker} {printer_name} -akzeptiert keine weiteren Aufträge.

    - -
    diff --git a/templates/de/printer-start.tmpl b/templates/de/printer-start.tmpl deleted file mode 100644 index 7a78568e6..000000000 --- a/templates/de/printer-start.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    {is_class?Die Klasse:Den Drucker} {printer_name} fortfahren

    - -

    {is_class?Die Klassen:Der Drucker} {printer_name} -wird fortgesetzt.

    - -
    diff --git a/templates/de/printer-stop.tmpl b/templates/de/printer-stop.tmpl deleted file mode 100644 index b304bd929..000000000 --- a/templates/de/printer-stop.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    {is_class?Die Klasse:Den Drucker} {printer_name} anhalten

    - -

    {is_class?Die Klasse:Der Drucker} {printer_name} -wurde angehalten.

    - -
    diff --git a/templates/de/printer.tmpl b/templates/de/printer.tmpl deleted file mode 100644 index 3b702b119..000000000 --- a/templates/de/printer.tmpl +++ /dev/null @@ -1,49 +0,0 @@ -
    - -

    {printer_name} -({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})

    - -
    - - - -
    - -
    - - - - -
    - - - - - - -
    Beschreibung:{printer_info}
    Ort:{printer_location}
    Treiber:{printer_make_and_model} ({color_supported=1?color:grayscale}{sides_supported?, 2-sided printing:})
    -
    Verbindung:{device_uri}
    Einstellungen:job-sheets={job_sheets_default} -media={media_default?{media_default}:unknown} -{sides_default?sides={sides_default}:}
    - -
    - - diff --git a/templates/de/printers-header.tmpl b/templates/de/printers-header.tmpl deleted file mode 100644 index 7ee520e0f..000000000 --- a/templates/de/printers-header.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    {total=0?Keine Drucker:Zeige {#printer_name} von {total} Drucker{total=1?:n}}.

    diff --git a/templates/de/printers.tmpl b/templates/de/printers.tmpl deleted file mode 100644 index 360154fec..000000000 --- a/templates/de/printers.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -{#printer_name=0?: - - - - - -{[printer_name] - -} - -
    {ORDER=dec? Queue Name : Queue Name }BeschreibungOrtMarke und ModellStatus
    {printer_name}{printer_info}{printer_location}{printer_make_and_model}{printer_state=3?Im Leerlauf:{printer_state=4?Beschäftigt:Angehalten}}{printer_state_message? - "{printer_state_message}":}
    } diff --git a/templates/de/replace-ppd.tmpl b/templates/de/replace-ppd.tmpl deleted file mode 100644 index 3cb11f207..000000000 --- a/templates/de/replace-ppd.tmpl +++ /dev/null @@ -1,40 +0,0 @@ - -
    - -

    Ersetze {printer_name} PPD Datei

    - -
    - - - - - - - - - - - - - - - - - - - - - - - -
    Stelle PPD Datei bereit: -
    - -
    - -
    - -
    - - diff --git a/templates/de/restart.tmpl b/templates/de/restart.tmpl deleted file mode 100644 index d7efa7bb0..000000000 --- a/templates/de/restart.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Einstellungen ändern

    - -

    Bitte warten Sie während der Server neu startet...

    - -
    diff --git a/templates/de/samba-export.tmpl b/templates/de/samba-export.tmpl deleted file mode 100644 index e856ff56a..000000000 --- a/templates/de/samba-export.tmpl +++ /dev/null @@ -1,55 +0,0 @@ - - -
    - - - -

    Drucker für Samba freigeben

    - -{error?

    Kann Drucker nicht für Samba freigeben\:

    -
    {error}
    -

    Consult the Fehlerprotokoll Datei um mehr Informationen zu erhalten.

    : -

    Diese Seite erlaubt es Ihnen Drucker für Samba bereitzustellen -damit auf diese mittels Windows Clients über die Desktopsymbole -Netzwerk Nachbarn oder Netzwerkumgebung -zugegriffen werden kann. Sie müssen zuerst einen -Windows PostScript Druckerteiber installieren wie diese in der Hilfe für cupsaddsmb(8) beschrieben ist.

    } - - - - - - - - - - - - - - - - - - -
    Drucker: -
    - Alle Drucker freigeben -
    Samba Benutzername: (benötigt)
    Samba Passwort: (benötigt)
    - -
    diff --git a/templates/de/samba-exported.tmpl b/templates/de/samba-exported.tmpl deleted file mode 100644 index 0e088ed51..000000000 --- a/templates/de/samba-exported.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    Drucker wurden erfolgreich für Samba freigegeben.

    diff --git a/templates/de/search.tmpl b/templates/de/search.tmpl deleted file mode 100644 index c4e89b8e3..000000000 --- a/templates/de/search.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    -{WHICH_JOBS?:} -{ORDER?:} - -

    Suche in -{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?Klassen:{SECTION=jobs?Aufträgen:Drucker}}}: -

    - -
    diff --git a/templates/de/set-printer-options-header.tmpl b/templates/de/set-printer-options-header.tmpl deleted file mode 100644 index 54ddd2555..000000000 --- a/templates/de/set-printer-options-header.tmpl +++ /dev/null @@ -1,26 +0,0 @@ -
    - -

    Standardeinstellungen für {printer_name} festlegen

    - -
    - - - -{HAVE_AUTOCONFIGURE?:} - - - -

    {[group_id] -{group}     }

    - -
    diff --git a/templates/de/set-printer-options-trailer.tmpl b/templates/de/set-printer-options-trailer.tmpl deleted file mode 100644 index 11adc7012..000000000 --- a/templates/de/set-printer-options-trailer.tmpl +++ /dev/null @@ -1,16 +0,0 @@ -
    - - -
    - -
    diff --git a/templates/de/subscription-added.tmpl b/templates/de/subscription-added.tmpl deleted file mode 100644 index f5fd1ab2e..000000000 --- a/templates/de/subscription-added.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    Subskription {subscription_name} wurde erfolgreich hinzugefügt.

    - -
    diff --git a/templates/de/subscription-canceled.tmpl b/templates/de/subscription-canceled.tmpl deleted file mode 100644 index b82a6bd75..000000000 --- a/templates/de/subscription-canceled.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    Subskription #{notify_subscription_id} wurde gekündigt.

    - -
    diff --git a/templates/de/test-page.tmpl b/templates/de/test-page.tmpl deleted file mode 100644 index 2a202fe58..000000000 --- a/templates/de/test-page.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Drucker Testseite auf {printer_name}

    - -

    Testseite gesendet; Auftrags ID ist -{printer_name}-{job_id}.

    - -
    diff --git a/templates/de/trailer.tmpl b/templates/de/trailer.tmpl deleted file mode 100644 index 7dcde724b..000000000 --- a/templates/de/trailer.tmpl +++ /dev/null @@ -1,8 +0,0 @@ - -  -CUPS und das CUPS Logo sind -eingetragene Warenzeichen der Apple Inc. CUPS -ist urheberrechtlich geschützt 2007-2014 von Apple Inc, alle Rechte vorbehalten. - - - diff --git a/templates/de/users.tmpl b/templates/de/users.tmpl deleted file mode 100644 index 6def23790..000000000 --- a/templates/de/users.tmpl +++ /dev/null @@ -1,30 +0,0 @@ -
    - -
    - - - -{IS_CLASS?:} - -

    Erlaubte Benutzer für {printer_name}

    - - - - - - - - - - -
    Benutzer: - -
    -Erlaube diesen Benutzern zu drucken -Verweigere diesen Benutzern zu drucken -
    - -
    - -
    -
    diff --git a/templates/edit-config.tmpl b/templates/edit-config.tmpl index 8947382b1..d8f9bb17d 100644 --- a/templates/edit-config.tmpl +++ b/templates/edit-config.tmpl @@ -5,8 +5,6 @@ function reset_config() } -
    -

    Edit Configuration File

    @@ -20,5 +18,3 @@ function reset_config() onClick="reset_config();">

    - -
    diff --git a/templates/error-op.tmpl b/templates/error-op.tmpl index feaed0f90..652537b98 100644 --- a/templates/error-op.tmpl +++ b/templates/error-op.tmpl @@ -1,9 +1,5 @@ -
    -

    {?title} {?printer_name} Error

    Error:

    Unknown operation "{op}"!
    - -
    diff --git a/templates/error.tmpl b/templates/error.tmpl index 86235732e..2ac1b8ff3 100644 --- a/templates/error.tmpl +++ b/templates/error.tmpl @@ -1,9 +1,5 @@ -
    -

    {?title} {?printer_name} Error

    {?message?{message}:Error}:

    {error}
    - -
    diff --git a/templates/es/add-class.tmpl b/templates/es/add-class.tmpl deleted file mode 100644 index 6d61ebe35..000000000 --- a/templates/es/add-class.tmpl +++ /dev/null @@ -1,40 +0,0 @@ -
    - -

    Añadir clase

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Nombre:
    -(Puede contener cualquier carácter imprimible excepto "/", "#", y espacio)
    Descripción:
    -(Descripción fácilmente leíble tal como "HP LaserJet de doble cara")
    Ubicación:
    -(Ubicación fácilmente leíble tal como "Lab 1")
    Miembros: - -
    - -
    -
    \ No newline at end of file diff --git a/templates/es/add-printer.tmpl b/templates/es/add-printer.tmpl deleted file mode 100644 index eedc3db40..000000000 --- a/templates/es/add-printer.tmpl +++ /dev/null @@ -1,47 +0,0 @@ -
    - -

    Añadir impresora

    - -
    - - - - - - -{?current_make!?:} -{?current_make_and_model!?:} - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Nombre:
    -(Puede contener cualquier carácter imprimible excepto "/", "#", y espacio)
    Descripción:
    -(Descripción fácilmente leíble tal como "HP LaserJet de doble cara")
    Ubicación:
    -(Ubicación fácilmente leíble tal como "Lab 1")
    Conexión:{device_uri}
    Compartición: -Compartir esta impresora
    - -
    -
    diff --git a/templates/es/add-rss-subscription.tmpl b/templates/es/add-rss-subscription.tmpl deleted file mode 100644 index d17c86eef..000000000 --- a/templates/es/add-rss-subscription.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    - - - -

    Añadir subscripción RSS

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Nombre:
    -(Puede contener cualquier carácter imprimible excepto espacio, "/", "?", y "#"))
    Cola:
    Eventos:Trabajo creado
    -Trabajo completado
    -Trabajo parado
    -Opciones de trabajo cambiadas
        Cola parada
    -Cola añadida
    -Cola modificada
    -Cola borrada
        Servidor iniciado
    -Servidor parado
    -Servidor reiniciado
    -Auditoría de seguridad del servidor
    Número máximo de eventos del canal:
    - -
    diff --git a/templates/es/admin.tmpl b/templates/es/admin.tmpl deleted file mode 100644 index cce1f147a..000000000 --- a/templates/es/admin.tmpl +++ /dev/null @@ -1,102 +0,0 @@ - - -
    - -

    Impresoras

    - -

    -

    -
    -
    -{have_samba?
    :} -

    - -

    Clases

    - -

    -

    -
    -

    - -

    Trabajos

    - -

    -

    -

    - -
              - -

    Servidor

    - -

    -

    -
    -
    -
    -

    - -{SETTINGS_ERROR?

    {SETTINGS_MESSAGE}

    -
    {SETTINGS_ERROR}
    : - -
    - - -{ADVANCEDSETTINGS?

    Configuración del servidor\:

    - -

    Avanzada
    - - - Compartir impresoras conectadas a este sistema
    -        Número máximo de clientes\: -
    -         Permitir la impresión desde Internet
    -         Anunciar la interfaz web
    - Permitir administración remota
    -{have_gssapi? Usar autentificación Kerberos (FAQ)
    :} - Permitir a los usuarios cancelar cualquier trabajo (no sólo los suyos propios)
    - Preservar el historial de trabajos
    -        Número máximo de trabajos (0 sin límite)\: -
    -        Retener metadatos\: -
    -        Retener documentos\: -
    - Guardar información de depuración para búsqueda de problemas
    -        Tamaño máximo del archivo de registro\: -

    - -:

    Configuración del servidor:

    - -

    Avanzada
    - - Compartir impresoras conectadas a este sistema
    -         Permitir la impresión desde Internet
    - Permitir administración remota
    -{have_gssapi? Usar autentificación Kerberos (FAQ)
    :} - Permitir a los usuarios cancelar cualquier trabajo (no sólo los suyos propios)
    - Guardar información de depuración para búsqueda de problemas

    - -} -

    - -
    } - -
    - -
    - -

    Subscripciones RSS

    - -

    -

    -

    - -
    - -{notify_subscription_id? - -{[notify_subscription_id] -} - -
    NombreEventosNombre de la cola
    {notify_recipient_name}
    -
     
    {notify_events} {notify_printer_name?{notify_printer_name}:Todas las colas}
    :} diff --git a/templates/es/choose-device.tmpl b/templates/es/choose-device.tmpl deleted file mode 100644 index 9f314fdf6..000000000 --- a/templates/es/choose-device.tmpl +++ /dev/null @@ -1,54 +0,0 @@ -
    - -

    {op=modify-printer?Modificar {printer_name}:Añadir impresora}

    - -{CUPS_GET_DEVICES_DONE?:

    Buscando impresoras...

    } - -
    - - -{printer_name?:} - - -{op=add-printer?: - - -} - - - - - - - - - - - - - - - - - -
    Conexión actual: -{current_device_uri}
    Impresoras locales: -{[device_uri]{device_class!network? -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -:}} -
    Impresoras en red descubiertas: -{[device_uri]{device_class=network?{device_uri~[a-z]+://? -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -:}:}} -
    Otras impresoras en red: -{[device_uri]{device_class=network?{device_uri~[a-z]+://?: -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -}:}} -
    - -
    -
    diff --git a/templates/es/choose-make.tmpl b/templates/es/choose-make.tmpl deleted file mode 100644 index c846de4df..000000000 --- a/templates/es/choose-make.tmpl +++ /dev/null @@ -1,64 +0,0 @@ -
    - -

    {op=modify-printer?Modificar {printer_name}:Añadir impresora}

    - -
    - - -{printer_name?:} - - - - - - -{op=modify-printer?: - - -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Nombre:{printer_name}
    Descripción:{printer_info}
    Ubicación:{printer_location}
    Conexión:{device_uri}
    Compartición: -{?printer_is_shared=?No:{?printer_is_shared=0?No:}} compartir esta impresora
    Marca: - -
     
    O proporcione un archivo PPD:
    - -
    -
    diff --git a/templates/es/choose-model.tmpl b/templates/es/choose-model.tmpl deleted file mode 100644 index 497d4b1d1..000000000 --- a/templates/es/choose-model.tmpl +++ /dev/null @@ -1,60 +0,0 @@ -
    - -

    {op=modify-printer?Modificar {printer_name}:Añadir impresora}

    - -
    - - -{printer_name?:} - - - - - -{op=modify-printer?: - - -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Nombre:{printer_name}
    Descripción:{printer_info}
    Ubicación:{printer_location}
    Conexión:{device_uri}
    Compartición: -{?printer_is_shared=?No:{?printer_is_shared=0?No:}} compartir esta impresora
    Marca:{PPD_MAKE}
    Modelo: - -
    O proporcione un archivo PPD:
    - -
    -
    diff --git a/templates/es/choose-serial.tmpl b/templates/es/choose-serial.tmpl deleted file mode 100644 index 1f734b9cd..000000000 --- a/templates/es/choose-serial.tmpl +++ /dev/null @@ -1,52 +0,0 @@ -
    - -

    {op=modify-printer?Modificar {printer_name}:Añadir impresora}

    - -
    - - -{printer_name?:} - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Conexión:{device_uri}
    Baudios:
    Paridad:
    Bits de datos:
    Control de flujo:
    - -
    -
    diff --git a/templates/es/choose-uri.tmpl b/templates/es/choose-uri.tmpl deleted file mode 100644 index 46ea17b13..000000000 --- a/templates/es/choose-uri.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    - -

    {op=modify-printer?Modificar {printer_name}:Añadir impresora}

    - -
    - - -{printer_name?:} - - - - - - - - - - - - - - - -
    Conexión:
    Ejemplos: -
    -    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
    -
    - -

    Vea "Impresoras -en red" para escoger el URI adecuado a usar con su impresora.

    - -
    - -
    -
    \ No newline at end of file diff --git a/templates/es/class-added.tmpl b/templates/es/class-added.tmpl deleted file mode 100644 index 867c8d928..000000000 --- a/templates/es/class-added.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Añadir clase

    - -

    Se ha añadido con éxito la clase {printer_name}. - -

    diff --git a/templates/es/class-confirm.tmpl b/templates/es/class-confirm.tmpl deleted file mode 100644 index a30ff726f..000000000 --- a/templates/es/class-confirm.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    - -

    Borrar clase {printer_name}

    - -

    Advertencia: ¿Está seguro de querer borrar la clase -{printer_name}?

    - -

    - -
    diff --git a/templates/es/class-deleted.tmpl b/templates/es/class-deleted.tmpl deleted file mode 100644 index ced78ad70..000000000 --- a/templates/es/class-deleted.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Borrar clase {printer_name}

    - -

    Se ha borrado con éxito la clase {printer_name}. - -

    \ 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 index f25951b7a..000000000 --- a/templates/es/class-jobs-header.tmpl +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    Trabajos

    -
    diff --git a/templates/es/class-modified.tmpl b/templates/es/class-modified.tmpl deleted file mode 100644 index d5ae2a72c..000000000 --- a/templates/es/class-modified.tmpl +++ /dev/null @@ -1,6 +0,0 @@ -
    - -

    Modificar clase {printer_name}

    - -

    Se ha modificado con éxito la clase {printer_name}. -

    \ No newline at end of file diff --git a/templates/es/class.tmpl b/templates/es/class.tmpl deleted file mode 100644 index 5eea4f195..000000000 --- a/templates/es/class.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    -

    {printer_name} -({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:})

    - -
    - - - -
    - -
    - - - - - -
    - - - - - - -
    Descripción:{printer_info}
    Ubicación:{printer_location}
    Miembros:{?member_uris=?Ninguno:{member_uris}}
    Opciones predeterminadas:job-sheets={job_sheets_default} -media={media_default?{media_default}:desconocido} -{sides_default?sides={sides_default}:}
    - -
    diff --git a/templates/es/classes-header.tmpl b/templates/es/classes-header.tmpl deleted file mode 100644 index 714ab89c4..000000000 --- a/templates/es/classes-header.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    {total=0?No hay clases:Mostrando {#printer_name} de {total} clase{total=1?:s}}.

    diff --git a/templates/es/classes.tmpl b/templates/es/classes.tmpl deleted file mode 100644 index 6fde7bf62..000000000 --- a/templates/es/classes.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -{#printer_name=0?: - - - - - -{[printer_name] - -} - -
    {ORDER=dec? Nombre de la cola : Nombre de la cola }DescripciónUbicaciónMiembrosEstado
    {printer_name}{printer_info}{printer_location}{?member_uris=?Ninguna:{member_uris}}{printer_state=3?Inactiva:{printer_state=4?Procesando:En pausa}}{printer_state_message? - "{printer_state_message}":}
    } diff --git a/templates/es/command.tmpl b/templates/es/command.tmpl deleted file mode 100644 index ba50560fa..000000000 --- a/templates/es/command.tmpl +++ /dev/null @@ -1,12 +0,0 @@ -
    - -

    {title} en {printer_name}

    - -

    {job_state>5?: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?, -"{job_printer_state_message}":}}

    - -
    diff --git a/templates/es/edit-config.tmpl b/templates/es/edit-config.tmpl deleted file mode 100644 index a0c663436..000000000 --- a/templates/es/edit-config.tmpl +++ /dev/null @@ -1,24 +0,0 @@ - - -
    - -

    Editar archivo de configuración

    - -
    - - - - - -

    -

    - -
    - -
    diff --git a/templates/es/error-op.tmpl b/templates/es/error-op.tmpl deleted file mode 100644 index d584108e8..000000000 --- a/templates/es/error-op.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Error en {?printer_name}: {?title}

    - -

    Error:

    - -
    Operación desconocida "{op}".
    - -
    diff --git a/templates/es/error.tmpl b/templates/es/error.tmpl deleted file mode 100644 index f652ea2cf..000000000 --- a/templates/es/error.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Error en {?printer_name}: {?title}

    - -

    {?message?{message}:Error}:

    - -
    {error}
    - -
    diff --git a/templates/es/header.tmpl.in b/templates/es/header.tmpl.in deleted file mode 100644 index 3e974c802..000000000 --- a/templates/es/header.tmpl.in +++ /dev/null @@ -1,38 +0,0 @@ - - - - - {title} - CUPS @CUPS_VERSION@@CUPS_REVISION@ - - - {refresh_page?:} - - - - - - - - diff --git a/templates/es/option-conflict.tmpl b/templates/es/option-conflict.tmpl deleted file mode 100644 index adeb4363e..000000000 --- a/templates/es/option-conflict.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -

    Error: Las siguientes opciones están en conflicto:

    - - - -

    Cambie una o más de las opciones para resolver el problema.

    diff --git a/templates/es/option-header.tmpl b/templates/es/option-header.tmpl deleted file mode 100644 index 464726a50..000000000 --- a/templates/es/option-header.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    {group}

    - -
    - - - - - - - - - - - - - -
      Inicio    Administración    Clases    Ayuda en línea    Trabajos    Impresoras  
     
    -
    diff --git a/templates/es/help-header.tmpl b/templates/es/help-header.tmpl deleted file mode 100644 index 3e7fef929..000000000 --- a/templates/es/help-header.tmpl +++ /dev/null @@ -1,51 +0,0 @@ -
    -
    -{TOPIC?:} - -

    Buscar en -{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:todos los documentos}}: - -

    - -
    - - - - -{QUERY?

    Buscar resultados en {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:todos los documentos}}\:

    -{QTEXT?:} -:

    No hay coincidencias.

    } -
    :} -{HELPTITLE?

    {HELPTITLE}

    -
    : - -

    Ayuda en línea

    - -

    Esta es la interfaz de ayuda en línea de CUPS. Introduzca las palabras -a buscar aquí encima o haga clic en cualquiera de los enlaces de la -documentación para visualizar la información de ayuda en línea.

    - -

    Si es nuevo en CUPS, lea la página "Información general de CUPS". Los usuarios veteranos -deberían leer la página "Qué hay de nuevo en CUPS -1.6".

    - -

    La página de inicio de CUPS también -proporciona muchos recursos, incluyendo foros de discusión de usuarios, respuestas -a preguntas frecuentes, y un formulario para el envío de informes de errores y -peticiones de mejoras.

    } diff --git a/templates/es/help-printable.tmpl b/templates/es/help-printable.tmpl deleted file mode 100644 index 2463c1630..000000000 --- a/templates/es/help-printable.tmpl +++ /dev/null @@ -1,9 +0,0 @@ - - - - - {HELPTITLE} - - - - diff --git a/templates/es/help-trailer.tmpl b/templates/es/help-trailer.tmpl deleted file mode 100644 index 4c1ebed85..000000000 --- a/templates/es/help-trailer.tmpl +++ /dev/null @@ -1 +0,0 @@ -
    diff --git a/templates/es/job-cancel.tmpl b/templates/es/job-cancel.tmpl deleted file mode 100644 index 6a414274c..000000000 --- a/templates/es/job-cancel.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Cancelar trabajo {job_id}

    - -

    Se ha cancelado el Trabajo {job_id}. - -

    diff --git a/templates/es/job-hold.tmpl b/templates/es/job-hold.tmpl deleted file mode 100644 index 3136f9d8c..000000000 --- a/templates/es/job-hold.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Retener trabajo {job_id}

    - -

    Se ha retenido el Trabajo {job_id}. - -

    diff --git a/templates/es/job-move.tmpl b/templates/es/job-move.tmpl deleted file mode 100644 index e6aac39a5..000000000 --- a/templates/es/job-move.tmpl +++ /dev/null @@ -1,27 +0,0 @@ -
    - -
    - - -{job_id?:} - -

    {job_id?Mover trabajo {job_id}:Mover todos los trabajos}

    - - - - - - - - - - -
    Nuevo destino: - -
    - -
    - -
    diff --git a/templates/es/job-moved.tmpl b/templates/es/job-moved.tmpl deleted file mode 100644 index 8eb7a9816..000000000 --- a/templates/es/job-moved.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    {job_id?Mover trabajo {job_id}:Mover todos los trabajos}

    - -

    Se {job_id?ha movido el Trabajo {job_id}:han movido todos los trabajos} a -{job_printer_name}.

    - -
    diff --git a/templates/es/job-release.tmpl b/templates/es/job-release.tmpl deleted file mode 100644 index d925e5fe5..000000000 --- a/templates/es/job-release.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Liberar trabajo {job_id}

    - -

    Se ha liberado el Trabajo {job_id}. - -

    diff --git a/templates/es/job-restart.tmpl b/templates/es/job-restart.tmpl deleted file mode 100644 index ee6c8e598..000000000 --- a/templates/es/job-restart.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Reimprimir trabajo {job_id}

    - -

    Se ha reiniciado el Trabajo {job_id}. - -

    diff --git a/templates/es/jobs-header.tmpl b/templates/es/jobs-header.tmpl deleted file mode 100644 index fe8b51fa8..000000000 --- a/templates/es/jobs-header.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    {?which_jobs=?:
    } -{?which_jobs=completed?:
    } -{?which_jobs=all?:
    }
    - -

    {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}}}}.

    diff --git a/templates/es/jobs.tmpl b/templates/es/jobs.tmpl deleted file mode 100644 index 1187513c4..000000000 --- a/templates/es/jobs.tmpl +++ /dev/null @@ -1,37 +0,0 @@ -{#job_id=0?: - - - - - -{[job_id] - - - - - - - - - -} - -
    {ORDER=dec? ID : ID }NombreUsuarioTamañoPáginasEstadoControl
    {job_printer_name}-{job_id}{?phone? ({phone}):} {?job_name=?Desconocido:{job_name}} {job_originating_user_name} {job_k_octets}k {job_media_sheets_completed=0?Desconocido:{?job_media_sheets_completed}} {job_state=3?pendiente desde
    {time_at_creation}:{job_state=4?retenido desde
    {time_at_creation}: -{job_state=5?en proceso desde
    {time_at_processing}:{job_state=6?parado: -{job_state=7?cancelado el
    {time_at_completed}:{job_state=8?anulado:completado el
    {time_at_completed}}}}}}} {job_printer_state_message?
    -"{job_printer_state_message}":}
    -{job_preserved>0?{job_state>5? -
    -
    :}:} -{job_state=4? -
    -
    :} -{job_state=3? -
    -
    :} -{job_state<7? -
    -
    -
    :} - 
    -} diff --git a/templates/es/list-available-printers.tmpl b/templates/es/list-available-printers.tmpl deleted file mode 100644 index 51e0eb982..000000000 --- a/templates/es/list-available-printers.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -
    - -

    Impresoras disponibles

    - -{#device_uri=0?

    No se encuentran impresoras.

    -:
      {[device_uri] -
    • -{device_make_and_model} ({device_info})
    • -}
    } - -
    diff --git a/templates/es/modify-class.tmpl b/templates/es/modify-class.tmpl deleted file mode 100644 index a50b2bb72..000000000 --- a/templates/es/modify-class.tmpl +++ /dev/null @@ -1,34 +0,0 @@ -
    - -

    Modificar clase {printer_name}

    - -
    - - - - - - - - - - - - - - - - - - - - - -
    Descripción:
    Ubicación:
    Miembros: - -
    - -
    -
    \ No newline at end of file diff --git a/templates/es/modify-printer.tmpl b/templates/es/modify-printer.tmpl deleted file mode 100644 index 3c09da09e..000000000 --- a/templates/es/modify-printer.tmpl +++ /dev/null @@ -1,42 +0,0 @@ -
    - -

    Modificar {printer_name}

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Descripción:
    -(Descripción fácilmente leíble tal como "HP LaserJet de doble cara")
    Ubicación:
    -(Ubicación fácilmente leíble tal como "Lab 1")
    Conexión:{device_uri}
    Compartida: -Compartir esta impresora
    - -
    -
    diff --git a/templates/es/norestart.tmpl b/templates/es/norestart.tmpl deleted file mode 100644 index ac0f96bab..000000000 --- a/templates/es/norestart.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Cambiar especificaciones

    - -

    No se ha reiniciado el servidor debido a que no se han hecho -cambios en la configuración...

    - -
    diff --git a/templates/es/option-boolean.tmpl b/templates/es/option-boolean.tmpl deleted file mode 100644 index e832ee102..000000000 --- a/templates/es/option-boolean.tmpl +++ /dev/null @@ -1,6 +0,0 @@ -
    {keytext}: -{[choices]{text}} -
    diff --git a/templates/es/option-pickmany.tmpl b/templates/es/option-pickmany.tmpl deleted file mode 100644 index 0da75e5d2..000000000 --- a/templates/es/option-pickmany.tmpl +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/templates/es/option-pickone.tmpl b/templates/es/option-pickone.tmpl deleted file mode 100644 index 40fd124c4..000000000 --- a/templates/es/option-pickone.tmpl +++ /dev/null @@ -1,18 +0,0 @@ - - -:} - diff --git a/templates/es/option-trailer.tmpl b/templates/es/option-trailer.tmpl deleted file mode 100644 index ff8f2b239..000000000 --- a/templates/es/option-trailer.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    {keytext}:
    {keytext}: -{iscustom=1?{[params] - - -}
    {paramtext}:{params=Units?:}
    -
    - -

    - - \ No newline at end of file diff --git a/templates/es/pager.tmpl b/templates/es/pager.tmpl deleted file mode 100644 index 5f27c1060..000000000 --- a/templates/es/pager.tmpl +++ /dev/null @@ -1,6 +0,0 @@ - - - - - -
    {PREV?
    : }
    {NEXT?
    : }
    diff --git a/templates/es/printer-accept.tmpl b/templates/es/printer-accept.tmpl deleted file mode 100644 index 63fab1b4c..000000000 --- a/templates/es/printer-accept.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Aceptar trabajos de la {is_class?clase:impresora} {printer_name}

    - -

    La {is_class?clase:impresora} {printer_name} -ahora acepta trabajos.

    - -
    diff --git a/templates/es/printer-added.tmpl b/templates/es/printer-added.tmpl deleted file mode 100644 index 88c565bcf..000000000 --- a/templates/es/printer-added.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Añadir impresora

    - -

    Se ha añadido con éxito la impresora {printer_name}. - -

    diff --git a/templates/es/printer-configured.tmpl b/templates/es/printer-configured.tmpl deleted file mode 100644 index d382264f9..000000000 --- a/templates/es/printer-configured.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Cambiar opciones predeterminadas de {printer_name}

    - -

    Se han establecido con éxito las opciones predeterminadas de la -{OP=set-class-options?clase :impresora }{printer_name}. - -

    diff --git a/templates/es/printer-confirm.tmpl b/templates/es/printer-confirm.tmpl deleted file mode 100644 index 1de104a63..000000000 --- a/templates/es/printer-confirm.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    - -

    Borrar impresora {printer_name}

    - -

    Advertencia: ¿Está seguro de querer borrar la impresora -{printer_name}?

    - -

    - -
    diff --git a/templates/es/printer-default.tmpl b/templates/es/printer-default.tmpl deleted file mode 100644 index 68b61f267..000000000 --- a/templates/es/printer-default.tmpl +++ /dev/null @@ -1,13 +0,0 @@ -
    - -

    Poner la {is_class?clase:impresora} {printer_name} como predeterminada

    - -

    Se ha puesto como predeterminada en el servidor la {is_class?clase:impresora} {printer_name}.

    - -
    Nota: cualquier opción de usuario -que haya sido activada por mediación del comando -lpoptions tiene mayor preferencia que este ajuste -predeterminado.
    - -
    diff --git a/templates/es/printer-deleted.tmpl b/templates/es/printer-deleted.tmpl deleted file mode 100644 index 8bf7db61e..000000000 --- a/templates/es/printer-deleted.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Borrar impresora {printer_name}

    - -

    Se ha borrado con éxito la impresora {printer_name}. - -

    diff --git a/templates/es/printer-jobs-header.tmpl b/templates/es/printer-jobs-header.tmpl deleted file mode 100644 index f25951b7a..000000000 --- a/templates/es/printer-jobs-header.tmpl +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    Trabajos

    -
    diff --git a/templates/es/printer-modified.tmpl b/templates/es/printer-modified.tmpl deleted file mode 100644 index 9035dce4f..000000000 --- a/templates/es/printer-modified.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Modificar impresora {printer_name}

    - -

    Se ha modificado con éxito la impresora {printer_name}. - -

    \ No newline at end of file diff --git a/templates/es/printer-purge.tmpl b/templates/es/printer-purge.tmpl deleted file mode 100644 index b26bb4610..000000000 --- a/templates/es/printer-purge.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Purgar trabajos de la {is_class?clase:impresora} {printer_name}

    - -

    Se han purgado todos los trabajos de la {is_class?clase:impresora} {printer_name}.

    - -
    \ No newline at end of file diff --git a/templates/es/printer-reject.tmpl b/templates/es/printer-reject.tmpl deleted file mode 100644 index 637e13e00..000000000 --- a/templates/es/printer-reject.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Rechazar trabajos de la {is_class?clase:impresora} {printer_name}

    - -

    La {is_class?clase:impresora} {printer_name} -ya no acepta trabajos.

    - -
    diff --git a/templates/es/printer-start.tmpl b/templates/es/printer-start.tmpl deleted file mode 100644 index 117afcdb0..000000000 --- a/templates/es/printer-start.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Reanudar la {is_class?clase:impresora} {printer_name}

    - -

    La {is_class?clase:impresora} {printer_name} -ha sido reanudada.

    - -
    \ No newline at end of file diff --git a/templates/es/printer-stop.tmpl b/templates/es/printer-stop.tmpl deleted file mode 100644 index af374941e..000000000 --- a/templates/es/printer-stop.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Pausar la {is_class?clase:impresora} {printer_name}

    - -

    La {is_class?clase:impresora} {printer_name} -ha sido puesta en pausa.

    - -
    \ No newline at end of file diff --git a/templates/es/printer.tmpl b/templates/es/printer.tmpl deleted file mode 100644 index 0ea10492f..000000000 --- a/templates/es/printer.tmpl +++ /dev/null @@ -1,47 +0,0 @@ -
    - -

    {printer_name} -({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:})

    - -
    - - - -
    - -
    - - - - -
    - - - - - - -
    Descripción:{printer_info}
    Ubicación:{printer_location}
    Controlador:{printer_make_and_model} ({color_supported=1?color:escala de grises}{sides_supported?, dúplex:})
    -
    Conexión:{device_uri}
    Opciones predeterminadas:job-sheets={job_sheets_default} -media={media_default?{media_default}:desconocido} -{sides_default?sides={sides_default}:}
    - -
    diff --git a/templates/es/printers-header.tmpl b/templates/es/printers-header.tmpl deleted file mode 100644 index 7280687bc..000000000 --- a/templates/es/printers-header.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    {total=0?No hay impresoras:Mostrando {#printer_name} de {total} impresora{total=1?:s}}.

    diff --git a/templates/es/printers.tmpl b/templates/es/printers.tmpl deleted file mode 100644 index 6b97fd9e6..000000000 --- a/templates/es/printers.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -{#printer_name=0?: - - - - - -{[printer_name] - -} - -
    {ORDER=dec? Nombre de la cola : Nombre de la cola }DescripciónUbicaciónMarca y modeloEstado
    {printer_name}{printer_info}{printer_location}{printer_make_and_model}{printer_state=3?Inactiva:{printer_state=4?Procesando:En pausa}}{printer_state_message? - "{printer_state_message}":}
    } diff --git a/templates/es/restart.tmpl b/templates/es/restart.tmpl deleted file mode 100644 index 607351d2b..000000000 --- a/templates/es/restart.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Cambiar especificaciones

    - -

    Por favor espere mientras se reinicia el servidor...

    - -
    diff --git a/templates/es/samba-export.tmpl b/templates/es/samba-export.tmpl deleted file mode 100644 index 0036372ed..000000000 --- a/templates/es/samba-export.tmpl +++ /dev/null @@ -1,55 +0,0 @@ - - -
    - - - -

    Exportar impresoras a Samba

    - -{error?

    No se han podido exportar las impresoras a Samba\:

    -
    {error}
    -

    Consulte el archivo error_log para más información.

    : -

    Esta página le permite exportar las impresoras a Samba para que -los clientes Windows puedan acceder a ellas por los iconos de su -escritorio Entorno de red o Sitios de red. Debe haber instalado -previamente el controlador de impresora PostScript de Windows -como se describe en la página del manual -cupsaddsmb(8).

    } - - - - - - - - - - - - - - - - - - -
    Impresoras: -
    - Exportar todas las impresoras -
    Nombre de usuario Samba: (necesario)
    Contraseña Samba: (necesaria)
    - -
    diff --git a/templates/es/samba-exported.tmpl b/templates/es/samba-exported.tmpl deleted file mode 100644 index a54925d3c..000000000 --- a/templates/es/samba-exported.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    Se han exportado las impresoras a samba con éxito.

    diff --git a/templates/es/search.tmpl b/templates/es/search.tmpl deleted file mode 100644 index 3f430689c..000000000 --- a/templates/es/search.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    -{WHICH_JOBS?:} -{ORDER?:} - -

    Buscar en -{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?clases:{SECTION=jobs?trabajos:impresoras}}}: -

    - -
    diff --git a/templates/es/set-printer-options-header.tmpl b/templates/es/set-printer-options-header.tmpl deleted file mode 100644 index 8a2740b3b..000000000 --- a/templates/es/set-printer-options-header.tmpl +++ /dev/null @@ -1,26 +0,0 @@ -
    - -

    Establecer opciones predeterminadas de {printer_name}

    - -
    - - - -{HAVE_AUTOCONFIGURE?:} - - - -

    {[group_id] -{group}     }

    - -
    diff --git a/templates/es/set-printer-options-trailer.tmpl b/templates/es/set-printer-options-trailer.tmpl deleted file mode 100644 index 11adc7012..000000000 --- a/templates/es/set-printer-options-trailer.tmpl +++ /dev/null @@ -1,16 +0,0 @@ -
    - - -
    - -
    diff --git a/templates/es/subscription-added.tmpl b/templates/es/subscription-added.tmpl deleted file mode 100644 index 87ce96ae0..000000000 --- a/templates/es/subscription-added.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    Se ha añadido con éxito la subscripción {subscription_name}.

    - -
    diff --git a/templates/es/subscription-canceled.tmpl b/templates/es/subscription-canceled.tmpl deleted file mode 100644 index d6ac1711b..000000000 --- a/templates/es/subscription-canceled.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    La subscripción #{notify_subscription_id} ha sido cancelada.

    - -
    diff --git a/templates/es/test-page.tmpl b/templates/es/test-page.tmpl deleted file mode 100644 index 763dab556..000000000 --- a/templates/es/test-page.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Imprimir página de prueba en {printer_name}

    - -

    Página de prueba enviada; el número del trabajo es el -{printer_name}-{job_id}.

    - -
    diff --git a/templates/es/trailer.tmpl b/templates/es/trailer.tmpl deleted file mode 100644 index 0711c2624..000000000 --- a/templates/es/trailer.tmpl +++ /dev/null @@ -1,8 +0,0 @@ - -  -CUPS y el logo de CUPS son marcas registradas de -Apple, Inc. Los derechos de copia de CUPS -2007-2014 son de Apple Inc. Todos los derechos reservados. - - - diff --git a/templates/es/users.tmpl b/templates/es/users.tmpl deleted file mode 100644 index a8a645e6f..000000000 --- a/templates/es/users.tmpl +++ /dev/null @@ -1,30 +0,0 @@ -
    - -
    - - - -{IS_CLASS?:} - -

    Usuarios permitidos para {printer_name}

    - - - - - - - - - - -
    Usuarios: - -
    -Permitir a estos usuarios imprimir -Evitar que estos usuarios impriman -
    - -
    - -
    -
    diff --git a/templates/fr/add-class.tmpl b/templates/fr/add-class.tmpl deleted file mode 100644 index a4402d4ad..000000000 --- a/templates/fr/add-class.tmpl +++ /dev/null @@ -1,40 +0,0 @@ -
    - -

    Ajouter une classe

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Nom:
    -(Peux contenir n'importe quel caractère sauf "/", "#", et espace)
    Description:
    -(Description compréhensible comme "HP LaserJet Recto/Verso")
    Emplacement:
    -(Emplacement compréhensible comme "Lab 1")
    Membres: - -
    - -
    -
    \ No newline at end of file diff --git a/templates/fr/add-printer.tmpl b/templates/fr/add-printer.tmpl deleted file mode 100644 index 22dc07b11..000000000 --- a/templates/fr/add-printer.tmpl +++ /dev/null @@ -1,47 +0,0 @@ -
    - -

    Ajouter une imprimante

    - -
    - - - - - - -{?current_make!?:} -{?current_make_and_model!?:} - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Nom:
    -(Peux contenir n'importe quel caractère sauf "/", "#", et espace)
    Description:
    -(Description compréhensible comme "HP LaserJet Recto/Verso")
    Emplacement:
    -(Emplacement compréhensible comme "Lab 1")
    Connexion:{device_uri}
    Partage: -Partager cette imprimante
    - -
    -
    \ 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 index e98ee1cce..000000000 --- a/templates/fr/add-rss-subscription.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    - - - -

    S'abonner à un flux RSS

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Nom:
    -(Peux contenir n'importe quel caractère sauf "/", "#", et espace)
    File:
    Evénements:Tâches crées
    -Tâches finies
    -Tâches stoppées
    -Options de tâche modifiées
        Files arrêtées
    -File ajoutée
    -File modifiée
    -File supprimée
        Serveur démarré
    -Serveur arrêté
    -Serveur redémarré
    -Audit de sécurité du serveur
    Nombre maximum d'événements:
    - -
    diff --git a/templates/fr/admin.tmpl b/templates/fr/admin.tmpl deleted file mode 100644 index 304e77bb7..000000000 --- a/templates/fr/admin.tmpl +++ /dev/null @@ -1,102 +0,0 @@ - - -
    - -

    Imprimantes

    - -

    -

    -
    -
    -{have_samba?
    :} -

    - -

    Classes

    - -

    -

    -
    -

    - -

    Tâches

    - -

    -

    -

    - -
              - -

    Serveur

    - -

    -

    -
    -
    -
    -

    - -{SETTINGS_ERROR?

    {SETTINGS_MESSAGE}

    -
    {SETTINGS_ERROR}
    : - -
    - - -{ADVANCEDSETTINGS?

    Paramètres du serveur\:

    - -

    Avancé
    - - - Partager les imprimantes connectées à ce système
    -        Nombre maximum de clients\: -
    -         Autoriser l'impression depuis Internet
    -         Annoncer l'interface Web
    - Autoriser l'administration à distance
    -{have_gssapi? Utiliser l'authentification Kerberos (FAQ)
    :} - Autoriser les utilisateurs à annuler n'importe quelle tâche (Pas seulement les leurs)
    - Conserver l'historique des tâches
    -        Nombre de tâches\: -
    -        Conserver les meta-données\: -
    -        Conserver les documents\: -
    - Enregistrer les informations de debug pour la résolution de problèmes
    -        Taille maximum du fichier de log\: -

    - -:

    Paramètres du Serveur:

    - -

    Avancé
    - - Partager les imprimantes connectées à ce système
    -         Autoriser l'impression depuis Internet
    - Autoriser l'administration à distance
    -{have_gssapi? Utiliser l'authentification Kerberos (FAQ)
    :} - Autoriser les utilisateurs à annuler n'importe quelle tâche (Pas seulement les leurs)
    - Enregistrer les informations de debug pour la résolution de problèmes

    - -} -

    - -
    } - -
    - -
    - -

    Abonnements RSS

    - -

    -

    -

    - -
    - -{notify_subscription_id? - -{[notify_subscription_id] -} - -
    NomEvénementsNom de la File
    {notify_recipient_name}
    -
     
    {notify_events} {notify_printer_name?{notify_printer_name}:Toutes les Files}
    :} diff --git a/templates/fr/choose-device.tmpl b/templates/fr/choose-device.tmpl deleted file mode 100644 index 2bcb430c2..000000000 --- a/templates/fr/choose-device.tmpl +++ /dev/null @@ -1,53 +0,0 @@ -
    - -

    {op=modify-printer?Modifier {printer_name}:Ajouter une imprimante}

    - -{CUPS_GET_DEVICES_DONE?
    - - -{printer_name?:} - - -{op=add-printer?: - - -} - - - - - - - - - - - - - - - - - -
    Connexion courante\: -{current_device_uri}
    Imprimantes locales\: -{[device_uri]{device_class!network? -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -:}} -
    Imprimantes Réseaux Découvertes\: -{[device_uri]{device_class=network?{device_uri~[a-z]+://? -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -:}:}} -
    Autres Imprimantes Réseaux\: -{[device_uri]{device_class=network?{device_uri~[a-z]+://?: -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -}:}} -
    - -
    :

    Recherche en cours...

    } - -
    diff --git a/templates/fr/choose-make.tmpl b/templates/fr/choose-make.tmpl deleted file mode 100644 index d48dfc10f..000000000 --- a/templates/fr/choose-make.tmpl +++ /dev/null @@ -1,64 +0,0 @@ -
    - -

    {op=modify-printer?Modifier {printer_name}:Ajouter une imprimante}

    - -
    - - -{printer_name?:} - - - - - - -{op=modify-printer?: - - -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Nom:{printer_name}
    Description:{printer_info}
    Emplacement:{printer_location}
    Connexion:{device_uri}
    Partage: -{?printer_is_shared=?Ne pas:{?printer_is_shared=0?Ne pas:}} Partager cette Imprimante
    Marque: - -
     
    Ou donner un fichier PPD:
    - -
    -
    \ No newline at end of file diff --git a/templates/fr/choose-model.tmpl b/templates/fr/choose-model.tmpl deleted file mode 100644 index 5428153da..000000000 --- a/templates/fr/choose-model.tmpl +++ /dev/null @@ -1,60 +0,0 @@ -
    - -

    {op=modify-printer?Modifier {printer_name}:Ajouter une imprimante}

    - -
    - - -{printer_name?:} - - - - - -{op=modify-printer?: - - -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Nom:{printer_name}
    Description:{printer_info}
    Emplacement:{printer_location}
    Connexion:{device_uri}
    Partage: -{?printer_is_shared=?Ne pas:{?printer_is_shared=0?Ne pas:}} Partager cette imprimante
    Marque:{PPD_MAKE}
    Modèle: - -
    Ou donner un fichier PPD:
    - -
    -
    \ No newline at end of file diff --git a/templates/fr/choose-serial.tmpl b/templates/fr/choose-serial.tmpl deleted file mode 100644 index a1c72045d..000000000 --- a/templates/fr/choose-serial.tmpl +++ /dev/null @@ -1,52 +0,0 @@ -
    - -

    {op=modify-printer?Modifier {printer_name}:Ajouter une imprimante}

    - -
    - - -{printer_name?:} - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Connexion:{device_uri}
    Baud/s:
    Parité:
    Bits de données:
    Contrôle de flux:
    - -
    -
    \ No newline at end of file diff --git a/templates/fr/choose-uri.tmpl b/templates/fr/choose-uri.tmpl deleted file mode 100644 index 72b4a5ee9..000000000 --- a/templates/fr/choose-uri.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    - -

    {op=modify-printer?Modifier {printer_name}:Ajouter une imprimante}

    - -
    - - -{printer_name?:} - - - - - - - - - - - - - - - -
    Connexion:
    Exemples: -
    -    http://hostname:631/ipp/
    -    http://hostname:631/ipp/port1
    -
    -    ipp://hostname/ipp/
    -    ipp://hostname/ipp/port1
    -
    -    lpd://hostname/queue
    -
    -    socket://hostname
    -    socket://hostname:9100
    -
    - -

    Cf. "Imprimantes -Réseaux" pour construire l'URI à employée avec votre imprimante.

    - -
    - -
    -
    \ No newline at end of file diff --git a/templates/fr/class-added.tmpl b/templates/fr/class-added.tmpl deleted file mode 100644 index 7ed164831..000000000 --- a/templates/fr/class-added.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Ajouter une Classe

    - -

    La classe {printer_name} a été ajoutée -avec succès. - -

    diff --git a/templates/fr/class-confirm.tmpl b/templates/fr/class-confirm.tmpl deleted file mode 100644 index 276ec34f5..000000000 --- a/templates/fr/class-confirm.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    - -

    Supprimer la classe {printer_name}

    - -

    Attention: Etes-vous sur(e) de vouloir supprimer la classe -{printer_name}?

    - -

    - -
    diff --git a/templates/fr/class-deleted.tmpl b/templates/fr/class-deleted.tmpl deleted file mode 100644 index 6f8aefaf3..000000000 --- a/templates/fr/class-deleted.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Supprimer la classe {printer_name}

    - -

    La classe {printer_name} a été supprimée avec succès. - -

    \ 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 index 551f47e47..000000000 --- a/templates/fr/class-jobs-header.tmpl +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    Tâches

    -
    diff --git a/templates/fr/class-modified.tmpl b/templates/fr/class-modified.tmpl deleted file mode 100644 index e4b8b5a81..000000000 --- a/templates/fr/class-modified.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Modifier la Classe {printer_name}

    - -

    La classe {printer_name} a été -modifiée avec succès. - -

    \ No newline at end of file diff --git a/templates/fr/class.tmpl b/templates/fr/class.tmpl deleted file mode 100644 index 0d6d891fb..000000000 --- a/templates/fr/class.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    -

    {printer_name} -({printer_state=3?En attente:{printer_state=4?En cours d'impression:Arrêté}}, -{printer_is_accepting_jobs=0?Rejette les tâches:Accepte les tâches}, -{server_is_sharing_printers=0?Non:{printer_is_shared=0?Non:}} Partagée{default_name={printer_name}?, Imprimante par défaut:})

    - -
    - - - -
    - -
    - - - - - -
    - - - - - - -
    Description:{printer_info}
    Emplacement:{printer_location}
    Membres:{?member_uris=?None:{member_uris}}
    Défauts:job-sheets={job_sheets_default} -media={media_default?{media_default}:inconnu} -{sides_default?sides={sides_default}:}
    - -
    diff --git a/templates/fr/classes-header.tmpl b/templates/fr/classes-header.tmpl deleted file mode 100644 index 3c4d1ba58..000000000 --- a/templates/fr/classes-header.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    {total=0?Pas de classes:Affichage de {#printer_name} classe{total=1?:s}} sur {total}.

    diff --git a/templates/fr/classes.tmpl b/templates/fr/classes.tmpl deleted file mode 100644 index 0a04ebe5f..000000000 --- a/templates/fr/classes.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -{#printer_name=0?: - - - - - -{[printer_name] - -} - -
    {ORDER=dec? Nom de la file : Nom de la file }DescriptionEmplacementMembresÉtat
    {printer_name}{printer_info}{printer_location}{?member_uris=?Aucun:{member_uris}}{printer_state=3?Inoccupé:{printer_state=4?En cours d'impression:En pause}}{printer_state_message? - "{printer_state_message}":}
    } diff --git a/templates/fr/command.tmpl b/templates/fr/command.tmpl deleted file mode 100644 index bcd0f9056..000000000 --- a/templates/fr/command.tmpl +++ /dev/null @@ -1,12 +0,0 @@ -
    - -

    {title} sur {printer_name}

    - -

    {job_state>5?:Busy Indicator }Commandes de tâche d'impression -{job_state=3?en attente:{job_state=4?retenu: -{job_state=5?en cours d'impression:{job_state=6?arrêté: -{job_state=7?annulé:{job_state=8?annulé:terminé}}}}}}{job_state=9?:{job_printer_state_message?, -"{job_printer_state_message}":}}

    - -
    diff --git a/templates/fr/edit-config.tmpl b/templates/fr/edit-config.tmpl deleted file mode 100644 index 62d1414a9..000000000 --- a/templates/fr/edit-config.tmpl +++ /dev/null @@ -1,24 +0,0 @@ - - -
    - -

    Edition du Fichier de Configuration

    - -
    - - - - - -

    -

    - -
    - -
    diff --git a/templates/fr/error-op.tmpl b/templates/fr/error-op.tmpl deleted file mode 100644 index ba5c91cd7..000000000 --- a/templates/fr/error-op.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    {?title} {?printer_name} Erreur

    - -

    Erreur:

    - -
    Opération inconnue "{op}"!
    - -
    diff --git a/templates/fr/error.tmpl b/templates/fr/error.tmpl deleted file mode 100644 index 2ce2451bb..000000000 --- a/templates/fr/error.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    {?title} {?printer_name} Erreur

    - -

    {?message?{message}:Erreur}:

    - -
    {error}
    - -
    diff --git a/templates/fr/header.tmpl.in b/templates/fr/header.tmpl.in deleted file mode 100644 index d7f00c1b9..000000000 --- a/templates/fr/header.tmpl.in +++ /dev/null @@ -1,29 +0,0 @@ - - - - - {title} - CUPS @CUPS_VERSION@@CUPS_REVISION@ - - - {refresh_page?:} - - - - - - - diff --git a/templates/fr/option-conflict.tmpl b/templates/fr/option-conflict.tmpl deleted file mode 100644 index 7077aac5d..000000000 --- a/templates/fr/option-conflict.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -

    Erreur: Les options suivantes sont incompatibles entre elles:

    - - - -

    Veuillez modifier une ou plusieurs de ces options pour résoudre les conflits.

    diff --git a/templates/fr/option-header.tmpl b/templates/fr/option-header.tmpl deleted file mode 100644 index 464726a50..000000000 --- a/templates/fr/option-header.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    {group}

    - -
    - - - - - - - - - - - - - -
      Accueil    Administration    Classes    Aide En Ligne    Tâches    Imprimantes  
     
    diff --git a/templates/fr/help-header.tmpl b/templates/fr/help-header.tmpl deleted file mode 100644 index 751136d42..000000000 --- a/templates/fr/help-header.tmpl +++ /dev/null @@ -1,51 +0,0 @@ -
    -
    -{TOPIC?:} - -

    Rechercher dans -{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:tous les documents}}: - -

    - -
    - - - - -{QUERY?

    Résultats de la recherche dans {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:tous les documents}}\:

    -{QTEXT?:} -:

    Aucun résultat trouvé.

    } -
    :} -{HELPTITLE?

    {HELPTITLE}

    -
    : - -

    Aide en ligne

    - -

    Voici l'interface d'aide en ligne de CUPS. Entrez ci-dessus les mots à rechercher -ou cliquez sur un lien ci-contre pour afficher -l'aide en ligne du document.

    - -

    Si vous êtes un nouvel utilisateur de CUPS, lisez la page "Présentation de CUPS". Il est conseillé aux utilisateurs habitués -de lire la page "Quoi de neuf dans CUPS -1.6".

    - -

    La page d'accueil de CUPS donne aussi -accès à de nombreuses ressources, comme des forums de discussion pour les -utilisateurs, des réponses aux questions fréquentes, et un formulaire pour -soumettre des rapports de bug ou des demandes pour de nouvelles fonctionnalités.

    } diff --git a/templates/fr/help-printable.tmpl b/templates/fr/help-printable.tmpl deleted file mode 100644 index 2463c1630..000000000 --- a/templates/fr/help-printable.tmpl +++ /dev/null @@ -1,9 +0,0 @@ - - - - - {HELPTITLE} - - - - diff --git a/templates/fr/help-trailer.tmpl b/templates/fr/help-trailer.tmpl deleted file mode 100644 index 4c1ebed85..000000000 --- a/templates/fr/help-trailer.tmpl +++ /dev/null @@ -1 +0,0 @@ -
    diff --git a/templates/fr/job-cancel.tmpl b/templates/fr/job-cancel.tmpl deleted file mode 100644 index ab54269e5..000000000 --- a/templates/fr/job-cancel.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Annuler la Tâche {job_id}

    - -

    La tâche {job_id} a été annulée. - -

    diff --git a/templates/fr/job-hold.tmpl b/templates/fr/job-hold.tmpl deleted file mode 100644 index 7c85916bb..000000000 --- a/templates/fr/job-hold.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Retenir la tâche {job_id}

    - -

    La tâche {job_id} a été retenue. - -

    diff --git a/templates/fr/job-move.tmpl b/templates/fr/job-move.tmpl deleted file mode 100644 index 4cca760b7..000000000 --- a/templates/fr/job-move.tmpl +++ /dev/null @@ -1,27 +0,0 @@ -
    - -
    - - -{job_id?:} - -

    {job_id?Transférer la tâche {job_id}:Transférer toutes les tâches}

    - - - - - - - - - - -
    Nouvelle destination: - -
    - -
    - -
    diff --git a/templates/fr/job-moved.tmpl b/templates/fr/job-moved.tmpl deleted file mode 100644 index ba28d3345..000000000 --- a/templates/fr/job-moved.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    {job_id?Transférer la tâche {job_id}:Transférer toutes les tâches}

    - -

    {job_id?Job {job_id}:Toutes les tâches} transférée(s) vers -{job_printer_name}.

    - -
    diff --git a/templates/fr/job-release.tmpl b/templates/fr/job-release.tmpl deleted file mode 100644 index 4bfc1b915..000000000 --- a/templates/fr/job-release.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Libérer la Tâche {job_id}

    - -

    La tâche {job_id} a été libérée. - -

    diff --git a/templates/fr/job-restart.tmpl b/templates/fr/job-restart.tmpl deleted file mode 100644 index 085884025..000000000 --- a/templates/fr/job-restart.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Réimprimer la Tâche {job_id}

    - -

    La tâche {job_id} a été relancée. - -

    diff --git a/templates/fr/jobs-header.tmpl b/templates/fr/jobs-header.tmpl deleted file mode 100644 index c86300599..000000000 --- a/templates/fr/jobs-header.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    {?which_jobs=?:
    } -{?which_jobs=completed?:
    } -{?which_jobs=all?:
    }
    - -

    {total=0?Pas de tâche:Affichage de {#job_id} tâche{total>1?s:}} {?which_jobs=?active{total>1?s:}:{which_jobs=all?:terminée{total>1?s:}}} {total=0?:sur {total}} .

    diff --git a/templates/fr/jobs.tmpl b/templates/fr/jobs.tmpl deleted file mode 100644 index c760d76d6..000000000 --- a/templates/fr/jobs.tmpl +++ /dev/null @@ -1,36 +0,0 @@ -{#job_id=0?: - - - - - -{[job_id] - - - - - - - - - -} - -
    {ORDER=dec? ID : ID }NomUtilisateurTaillePagesÉtatContrôle
    {job_printer_name}-{job_id}{?phone? ({phone}):} {?job_name=?Inconnu:{job_name}} {?job_originating_user_name=?Withheld:{job_originating_user_name}} {job_k_octets}k {job_media_sheets_completed=0?Inconnu:{?job_media_sheets_completed}} {job_state=3?en attente depuis
    {time_at_creation}:{job_state=4?retenu depuis
    {time_at_creation}: -{job_state=5?en cours d'impression depuis
    {time_at_processing}:{job_state=6?arrêté: -{job_state=7?annulé â
    {time_at_completed}:{job_state=8?annulé:terminé à
    {time_at_completed}}}}}}} {job_printer_state_message?
    -"{job_printer_state_message}":}
    -{job_preserved>0?{job_state>5? -
    :}:} -{job_state=4? -
    -
    :} -{job_state=3? -
    -
    :} -{job_state<7? -
    -
    -
    :} - 
    -} diff --git a/templates/fr/list-available-printers.tmpl b/templates/fr/list-available-printers.tmpl deleted file mode 100644 index dcc9937b9..000000000 --- a/templates/fr/list-available-printers.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -
    - -

    Imprimantes Disponibles

    - -{#device_uri=0?

    Aucune imprimante trouvée.

    -:
      {[device_uri] -
    • -{device_make_and_model} ({device_info})
    • -}
    } - -
    diff --git a/templates/fr/modify-class.tmpl b/templates/fr/modify-class.tmpl deleted file mode 100644 index 791c56041..000000000 --- a/templates/fr/modify-class.tmpl +++ /dev/null @@ -1,34 +0,0 @@ -
    - -

    Modifier la Classe {printer_name}

    - -
    - - - - - - - - - - - - - - - - - - - - - -
    Description:
    Emplacement:
    Membres: - -
    - -
    -
    \ No newline at end of file diff --git a/templates/fr/modify-printer.tmpl b/templates/fr/modify-printer.tmpl deleted file mode 100644 index 03e1b66d7..000000000 --- a/templates/fr/modify-printer.tmpl +++ /dev/null @@ -1,42 +0,0 @@ -
    - -

    Modifier {printer_name}

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Description:
    -(Description compréhensible comme "HP LaserJet Recto/Verso")
    Emplacement:
    -(Emplacement compréhensible comme "Lab 1")
    Connexion:{device_uri}
    Partage: -Partager cette imprimante
    - -
    -
    diff --git a/templates/fr/norestart.tmpl b/templates/fr/norestart.tmpl deleted file mode 100644 index 95965c6fb..000000000 --- a/templates/fr/norestart.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Modifier les Paramètres

    - -

    Le serveur n'a pas été redémarré car la configuration -n'a pas été modifiée...

    - -
    diff --git a/templates/fr/option-boolean.tmpl b/templates/fr/option-boolean.tmpl deleted file mode 100644 index e832ee102..000000000 --- a/templates/fr/option-boolean.tmpl +++ /dev/null @@ -1,6 +0,0 @@ -
    {keytext}: -{[choices]{text}} -
    diff --git a/templates/fr/option-pickmany.tmpl b/templates/fr/option-pickmany.tmpl deleted file mode 100644 index 0da75e5d2..000000000 --- a/templates/fr/option-pickmany.tmpl +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/templates/fr/option-pickone.tmpl b/templates/fr/option-pickone.tmpl deleted file mode 100644 index 3e3deebe9..000000000 --- a/templates/fr/option-pickone.tmpl +++ /dev/null @@ -1,18 +0,0 @@ - - -:} - diff --git a/templates/fr/option-trailer.tmpl b/templates/fr/option-trailer.tmpl deleted file mode 100644 index ceff313e8..000000000 --- a/templates/fr/option-trailer.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    {keytext}:
    {keytext}: -{iscustom=1?{[params] - - -}
    {paramtext}:{params=Units?:}
    -
    - -

    - - \ No newline at end of file diff --git a/templates/fr/pager.tmpl b/templates/fr/pager.tmpl deleted file mode 100644 index c4e7ba5b8..000000000 --- a/templates/fr/pager.tmpl +++ /dev/null @@ -1,6 +0,0 @@ - - - - - -
    {PREV?
    : }
    {NEXT?
    : }
    diff --git a/templates/fr/printer-accept.tmpl b/templates/fr/printer-accept.tmpl deleted file mode 100644 index cc25a09b3..000000000 --- a/templates/fr/printer-accept.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Accepte les Tâches sur {is_class?la classe:l'imprimante} {printer_name}

    - -

    {is_class?La classe:L'imprimante} {printer_name} -accepte désormais les tâches d'impression.

    - -
    diff --git a/templates/fr/printer-added.tmpl b/templates/fr/printer-added.tmpl deleted file mode 100644 index ce0a3b406..000000000 --- a/templates/fr/printer-added.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Ajouter une imprimante

    - -

    L'imprimante {printer_name} a été ajoutée -avec succès. - -

    diff --git a/templates/fr/printer-configured.tmpl b/templates/fr/printer-configured.tmpl deleted file mode 100644 index 79ccb1572..000000000 --- a/templates/fr/printer-configured.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Définir les options par défaut pour {printer_name}

    - -

    {OP=set-class-options?Class :l'imprimante }{printer_name} - a été configurée avec succès. - -

    diff --git a/templates/fr/printer-confirm.tmpl b/templates/fr/printer-confirm.tmpl deleted file mode 100644 index 715ddd117..000000000 --- a/templates/fr/printer-confirm.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    - -

    Supprimer l'imprimante {printer_name}

    - -

    Warning: Etes-vous sûr(e) de vouloir supprimer l'imprimante -{printer_name}?

    - -

    - -
    diff --git a/templates/fr/printer-default.tmpl b/templates/fr/printer-default.tmpl deleted file mode 100644 index d7f3703fd..000000000 --- a/templates/fr/printer-default.tmpl +++ /dev/null @@ -1,13 +0,0 @@ -
    - -

    Définir {is_class?la classe:l'imprimante} {printer_name} comme imprimante par défaut

    - -

    {is_class?La classe:L'imprimante} {printer_name} -a été définie comme imprimante par défaut du serveur.

    - -
    Note: Tout paramètre utilisateur défini via la commande -lpoptions sera prioritaire sur le paramètre défini içi. -
    - -
    diff --git a/templates/fr/printer-deleted.tmpl b/templates/fr/printer-deleted.tmpl deleted file mode 100644 index 43af955f0..000000000 --- a/templates/fr/printer-deleted.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Supprimer l'imprimante {printer_name}

    - -

    L'imprimante {printer_name} a été supprimée avec succès. - -

    diff --git a/templates/fr/printer-jobs-header.tmpl b/templates/fr/printer-jobs-header.tmpl deleted file mode 100644 index 551f47e47..000000000 --- a/templates/fr/printer-jobs-header.tmpl +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    Tâches

    -
    diff --git a/templates/fr/printer-modified.tmpl b/templates/fr/printer-modified.tmpl deleted file mode 100644 index db962dc07..000000000 --- a/templates/fr/printer-modified.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Modifier l'Imprimante {printer_name}

    - -

    L'imprimante {printer_name} a été -modifiée avec succès. - -

    \ No newline at end of file diff --git a/templates/fr/printer-purge.tmpl b/templates/fr/printer-purge.tmpl deleted file mode 100644 index ce167b9d4..000000000 --- a/templates/fr/printer-purge.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Purger les Tâches sur {is_class?la classe:l'imprimante} {printer_name}

    - -

    Toutes les tâches de {is_class?la classe:l'imprimante} {printer_name} -ont été purgées.

    - -
    \ No newline at end of file diff --git a/templates/fr/printer-reject.tmpl b/templates/fr/printer-reject.tmpl deleted file mode 100644 index 36edcb817..000000000 --- a/templates/fr/printer-reject.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Rejeter les Tâches sur {is_class?Classe:Imprimante} {printer_name}

    - -

    {is_class?La classe:L'imprimante} {printer_name} -n'accepte plus les tâches d'impression.

    - -
    diff --git a/templates/fr/printer-start.tmpl b/templates/fr/printer-start.tmpl deleted file mode 100644 index f476c6238..000000000 --- a/templates/fr/printer-start.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Démarrer {is_class?la classe:l'imprimante} {printer_name}

    - -

    {is_class?La classe:L'imprimante} {printer_name} -a été démarrée.

    - -
    \ No newline at end of file diff --git a/templates/fr/printer-stop.tmpl b/templates/fr/printer-stop.tmpl deleted file mode 100644 index eb36fb588..000000000 --- a/templates/fr/printer-stop.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Arrêter {is_class?la classe:l'imprimante} {printer_name}

    - -

    {is_class?La classe:L'imprimante} {printer_name} -a été arrêtée.

    - -
    \ No newline at end of file diff --git a/templates/fr/printer.tmpl b/templates/fr/printer.tmpl deleted file mode 100644 index ee5088369..000000000 --- a/templates/fr/printer.tmpl +++ /dev/null @@ -1,47 +0,0 @@ -
    - -

    {printer_name} -({printer_state=3?Inoccupée:{printer_state=4?En cours d'impression:En pause}}, -{printer_is_accepting_jobs=0?Rejette les tâches:Accepte les tâches}, -{server_is_sharing_printers=0?Non:{printer_is_shared=0?Non:}} Partagée{default_name={printer_name}?, Imprimante par défaut:})

    - -
    - - - -
    - -
    - - - - -
    - - - - - - -
    Description:{printer_info}
    Emplacement:{printer_location}
    Pilote:{printer_make_and_model} ({color_supported=1?color:grayscale}{sides_supported?, 2-sided printing:})
    -
    Connexion:{device_uri}
    Défauts:job-sheets={job_sheets_default} -media={media_default?{media_default}:inconnu} -{sides_default?sides={sides_default}:}
    - -
    \ No newline at end of file diff --git a/templates/fr/printers-header.tmpl b/templates/fr/printers-header.tmpl deleted file mode 100644 index fe6753fce..000000000 --- a/templates/fr/printers-header.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    {total=0?Pas d'imprimante:Affichage de {#printer_name} sur {total} imprimante{total>1?s:}}.

    diff --git a/templates/fr/printers.tmpl b/templates/fr/printers.tmpl deleted file mode 100644 index 2abc59c4b..000000000 --- a/templates/fr/printers.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -{#printer_name=0?: - - - - - -{[printer_name] - -} - -
    {ORDER=dec? Nom de la file : Nom de la file }DescriptionEmplacementMarque et ModèleÉtat
    {printer_name}{printer_info}{printer_location}{printer_make_and_model}{printer_state=3?Inoccupée:{printer_state=4?En cours d'impression:En pause}}{printer_state_message? - "{printer_state_message}":}
    } diff --git a/templates/fr/restart.tmpl b/templates/fr/restart.tmpl deleted file mode 100644 index da164b7e2..000000000 --- a/templates/fr/restart.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Modifier les Paramètres

    - -

    Veuillez patienter pendant que le serveur redémarre...

    - -
    diff --git a/templates/fr/samba-export.tmpl b/templates/fr/samba-export.tmpl deleted file mode 100644 index 94ff4fdcc..000000000 --- a/templates/fr/samba-export.tmpl +++ /dev/null @@ -1,54 +0,0 @@ - - -
    - - - -

    Exporter les Imprimantes vers Samba

    - -{error?

    Impossible d'exporter les imprimantes vers Samba\:

    -
    {error}
    -

    Consulter le fichier error_log pour plus d'informations.

    : -

    Cette page vous permet d'exporter des imprimantes vers Samba de sorte que des -clients Windows puissent y accéder via l'ic&oacirc;ne Voisinage réseau ou -Favoris réseau du bureau. Vous devez au préalable installer les -pilotes Windows d'imprimante PostScript : cf. la page man cupsaddsmb(8).

    } - - - - - - - - - - - - - - - - - - -
    Imprimantes: -
    - Exporter toutes les imprimantes -
    Utilisateur Samba: (required)
    Mot de passe Samba: (required)
    - -
    diff --git a/templates/fr/samba-exported.tmpl b/templates/fr/samba-exported.tmpl deleted file mode 100644 index d4ad778da..000000000 --- a/templates/fr/samba-exported.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    Les imprimantes ont été exportées vers Samba avec succès.

    diff --git a/templates/fr/search.tmpl b/templates/fr/search.tmpl deleted file mode 100644 index 50b1b4e73..000000000 --- a/templates/fr/search.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    -{WHICH_JOBS?:} -{ORDER?:} - -

    Rechercher dans -{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?les classes:{SECTION=jobs?les tâches:les imprimantes}}}: -

    - -
    diff --git a/templates/fr/set-printer-options-header.tmpl b/templates/fr/set-printer-options-header.tmpl deleted file mode 100644 index 12e0b1d1c..000000000 --- a/templates/fr/set-printer-options-header.tmpl +++ /dev/null @@ -1,26 +0,0 @@ -
    - -

    Définir les Options pour {printer_name}

    - -
    - - - -{HAVE_AUTOCONFIGURE?:} - - - -

    {[group_id] -{group}     }

    - -
    diff --git a/templates/fr/set-printer-options-trailer.tmpl b/templates/fr/set-printer-options-trailer.tmpl deleted file mode 100644 index 11adc7012..000000000 --- a/templates/fr/set-printer-options-trailer.tmpl +++ /dev/null @@ -1,16 +0,0 @@ -
    - - -
    - -
    diff --git a/templates/fr/subscription-added.tmpl b/templates/fr/subscription-added.tmpl deleted file mode 100644 index 54ffe8fb0..000000000 --- a/templates/fr/subscription-added.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    L'abonnement au flux RSS {subscription_name} a été ajouté avec succès.

    - -
    diff --git a/templates/fr/subscription-canceled.tmpl b/templates/fr/subscription-canceled.tmpl deleted file mode 100644 index 54fbcefb2..000000000 --- a/templates/fr/subscription-canceled.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    L'abonnement #{notify_subscription_id} au flux RSS a été annulé.

    - -
    diff --git a/templates/fr/test-page.tmpl b/templates/fr/test-page.tmpl deleted file mode 100644 index 8be7c6f7c..000000000 --- a/templates/fr/test-page.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Imprimer une Page de Test sur {printer_name}

    - -

    La page de test a été envoyée; l'identifiant de la tâche est -{printer_name}-{job_id}.

    - -
    diff --git a/templates/fr/trailer.tmpl b/templates/fr/trailer.tmpl deleted file mode 100644 index 9b8bac207..000000000 --- a/templates/fr/trailer.tmpl +++ /dev/null @@ -1,8 +0,0 @@ - -  -CUPS et le logo CUPS sont des marques déposées de -Apple Inc. CUPS est sous copyright 2007-2014 Apple -Inc. Tous droits réservés. - - - diff --git a/templates/fr/users.tmpl b/templates/fr/users.tmpl deleted file mode 100644 index cb9a0527b..000000000 --- a/templates/fr/users.tmpl +++ /dev/null @@ -1,30 +0,0 @@ -
    - -
    - - - -{IS_CLASS?:} - -

    Utilisateurs autorisés à utiliser {printer_name}

    - - - - - - - - - - -
    Utilisateurs: - -
    -Autoriser ces utilisateurs à imprimer -Empêcher ces utilisateurs d'imprimer -
    - -
    - -
    -
    diff --git a/templates/header.tmpl.in b/templates/header.tmpl.in index 8aaf89c18..e41da576b 100644 --- a/templates/header.tmpl.in +++ b/templates/header.tmpl.in @@ -1,38 +1,35 @@ - - - - - {title} - CUPS @CUPS_VERSION@@CUPS_REVISION@ - - - {refresh_page?:} - - - - - - - -
    - - - - - - - - - - - - - -
      Home    Administration    Classes    Online Help    Jobs    Printers  
     
    -
    + } + --> + {title} - CUPS @CUPS_VERSION@@CUPS_REVISION@ + + + +
    +
    +

    {title}

    diff --git a/templates/help-header.tmpl b/templates/help-header.tmpl index 09741b54f..86343e7ea 100644 --- a/templates/help-header.tmpl +++ b/templates/help-header.tmpl @@ -1,4 +1,3 @@ -
    {TOPIC?:} @@ -31,21 +30,12 @@ AUTOSAVE="org.cups.help" RESULTS="20"> {QTEXT?:} :

    No matches found.

    }
    :} -{HELPTITLE?

    {HELPTITLE}

    -
    : +{HELPTITLE?
    :

    Online Help

    -

    This is the CUPS online help interface. Enter search words -above or click on any of the documentation links to display -online help information.

    +

    This is the CUPS online help interface. Enter search words above or click on any of the documentation links to display online help information.

    -

    If you are new to CUPS, read the "Overview of CUPS" page. Veteran users -should read the "What's New in CUPS -1.6" page.

    +

    If you are new to CUPS, read the "Overview of CUPS" page.

    -

    The CUPS home page also -provides many resources including user discussion forums, answers -to frequently-asked questions, and a form for submitting bug -reports and feature requests.

    } +

    The CUPS home page also provides many resources including user discussion forums, answers to frequently-asked questions, and a form for submitting bug reports and feature requests.

    } diff --git a/templates/help-trailer.tmpl b/templates/help-trailer.tmpl index 4c1ebed85..e69de29bb 100644 --- a/templates/help-trailer.tmpl +++ b/templates/help-trailer.tmpl @@ -1 +0,0 @@ -
    diff --git a/templates/it/add-class.tmpl b/templates/it/add-class.tmpl deleted file mode 100644 index 6d1f862be..000000000 --- a/templates/it/add-class.tmpl +++ /dev/null @@ -1,40 +0,0 @@ -
    - -

    Aggiungi una classe

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Nome:
    -(Può contenere qualsiasi carattere stampabile ad eccezione di "/", "#" e spazio)
    Descrizione:
    -(Una descrizione esplicativa, ad esempio "HP LaserJet con Duplexer")
    Posizione:
    -(Una posizione esplicativa, ad esempio "Lab 1")
    Membri: - -
    - -
    -
    \ No newline at end of file diff --git a/templates/it/add-printer.tmpl b/templates/it/add-printer.tmpl deleted file mode 100644 index 95148c4d0..000000000 --- a/templates/it/add-printer.tmpl +++ /dev/null @@ -1,47 +0,0 @@ -
    - -

    Aggiungi una stampante

    - -
    - - - - - - -{?current_make!?:} -{?current_make_and_model!?:} - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Nome:
    -(Può contenere qualsiasi carattere stampabile ad eccezione di "/", "#" e spazio)
    Descrizione:
    -(Una descrizione esplicativa, ad esempio "HP LaserJet con Duplexer")
    Posizione:
    -(Una posizione esplicativa, ad esempio "Lab 1")
    Connessione:{device_uri}
    Condivisione: -Condividi questa stampante
    - -
    -
    \ 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 index 394881d9e..000000000 --- a/templates/it/add-rss-subscription.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    - - - -

    Abbonati ad un feed RSS

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Nome:
    -(Può contenere qualsiasi carattere stampabile ad eccezione di spazio, "/", "?" e "#")
    Coda:
    Eventi:La stampa è stata creata
    -La stampa è stato completata
    -La stampa è stata fermata
    -Le opzioni di stampa sono state modificate
        La coda è stata fermata
    -La coda è stata aggiunta
    -La coda è stata modificata
    -La coda è stata eliminata
        Il server è stato avviato
    -Il server è stato fermato
    -Il server è stato riavviato
    -Controllo di sicurezza del server
    Numero massimo di eventi nel feed:
    - -
    diff --git a/templates/it/admin.tmpl b/templates/it/admin.tmpl deleted file mode 100644 index e5c576448..000000000 --- a/templates/it/admin.tmpl +++ /dev/null @@ -1,102 +0,0 @@ - - -
    - -

    Stampanti

    - -

    -

    -
    -
    -{have_samba?
    :} -

    - -

    Classi

    - -

    -

    -
    -

    - -

    Stampe

    - -

    -

    -

    - -
              - -

    Server

    - -

    -

    -
    -
    -
    -

    - -{SETTINGS_ERROR?

    {SETTINGS_MESSAGE}

    -
    {SETTINGS_ERROR}
    : - -
    - - -{ADVANCEDSETTINGS?

    Impostazioni del server\:

    - -

    Avanzate
    - - - Condividi le stampanti connesse a questo sistema
    -        Numero massimo di client\: -
    -         Consenti la stampa da internet
    -         Pubblicizza l'interfaccia web
    - Consenti l'amministrazione remota
    -{have_gssapi? Utilizza l'autenticazione Kerberos (FAQ)
    :} - Consenti agli utenti di eliminare qualsiasi stampa (non solo le proprie)
    - Conserva la cronologia delle stampe
    -        Numero massimo di stampe (0 per nessun limite)\: -
    -        Conserva i metadata\: -
    -        Conserva i documenti\: -
    - Salva le informazioni di debug per la risoluzione dei problemi
    -        Dimensione massima del file di log\: -

    - -:

    Impostazioni del server:

    - -

    Avanzate
    - - Condividi le stampanti connesse a questo sistema
    -         Consenti la stampa da internet
    - Consenti l'amministrazione remota
    -{have_gssapi? Utilizza l'autenticazione Kerberos (FAQ)
    :} - Consenti agli utenti di eliminare qualsiasi stampa (non solo le proprie)
    - Salva le informazioni di debug per la risoluzione dei problemi

    - -} -

    - -
    } - -
    - -
    - -

    Abbonamenti RSS

    - -

    -

    -

    - -
    - -{notify_subscription_id? - -{[notify_subscription_id] -} - -
    NameEventsNome della coda
    {notify_recipient_name}
    -
     
    {notify_events} {notify_printer_name?{notify_printer_name}:Tutti i file}
    :} diff --git a/templates/it/choose-device.tmpl b/templates/it/choose-device.tmpl deleted file mode 100644 index e6f3bcb97..000000000 --- a/templates/it/choose-device.tmpl +++ /dev/null @@ -1,53 +0,0 @@ -
    - -

    {op=modify-printer?Modifica {printer_name}:Aggiungi una stampante}

    - -{CUPS_GET_DEVICES_DONE?
    - - -{printer_name?:} - - -{op=add-printer?: - - -} - - - - - - - - - - - - - - - - - -
    Connessione attuale\: -{current_device_uri}
    Stampanti locali\: -{[device_uri]{device_class!network? -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -:}} -
    Stampanti di rete rilevate\: -{[device_uri]{device_class=network?{device_uri~[a-z]+://? -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -:}:}} -
    Altre stampanti di rete\: -{[device_uri]{device_class=network?{device_uri~[a-z]+://?: -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -}:}} -
    - -
    :

    Ricerca delle stampanti in corso...

    } - -
    diff --git a/templates/it/choose-make.tmpl b/templates/it/choose-make.tmpl deleted file mode 100644 index f2a2730cf..000000000 --- a/templates/it/choose-make.tmpl +++ /dev/null @@ -1,64 +0,0 @@ -
    - -

    {op=modify-printer?Modifica {printer_name}:Aggiungi una stampante}

    - -
    - - -{printer_name?:} - - - - - - -{op=modify-printer?: - - -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Nome:{printer_name}
    Descrizione:{printer_info}
    Posizione:{printer_location}
    Connessione:{device_uri}
    Condivisione: -{?printer_is_shared=?No:{?printer_is_shared=0?No:}} Condividi questa stampante
    Make: - -
     
    Or Provide a PPD File:
    - -
    -
    \ No newline at end of file diff --git a/templates/it/choose-model.tmpl b/templates/it/choose-model.tmpl deleted file mode 100644 index 85a5b114c..000000000 --- a/templates/it/choose-model.tmpl +++ /dev/null @@ -1,60 +0,0 @@ -
    - -

    {op=modify-printer?Modifica {printer_name}:Aggiungi una stampante}

    - -
    - - -{printer_name?:} - - - - - -{op=modify-printer?: - - -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Nome:{printer_name}
    Descrizione:{printer_info}
    Posizione:{printer_location}
    Connessione:{device_uri}
    Condivisione: -{?printer_is_shared=?No:{?printer_is_shared=0?No:}} Condividi questa stampante
    Marca:{PPD_MAKE}
    Modello: - -
    Oppure fornisci un file PPD:
    - -
    -
    \ No newline at end of file diff --git a/templates/it/choose-serial.tmpl b/templates/it/choose-serial.tmpl deleted file mode 100644 index e228e61f7..000000000 --- a/templates/it/choose-serial.tmpl +++ /dev/null @@ -1,52 +0,0 @@ -
    - -

    {op=modify-printer?Modifica {printer_name}:Aggiungi una stampante}

    - -
    - - -{printer_name?:} - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Connessione:{device_uri}
    Velocità di trasmissione:
    Parità:
    Bit di dati:
    Controllo di flusso:
    - -
    -
    \ No newline at end of file diff --git a/templates/it/choose-uri.tmpl b/templates/it/choose-uri.tmpl deleted file mode 100644 index f4a7b5e19..000000000 --- a/templates/it/choose-uri.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    - -

    {op=modify-printer?Modifica {printer_name}:Aggiungi una stampante}

    - -
    - - -{printer_name?:} - - - - - - - - - - - - - - - -
    Connessione:
    Esempi: -
    -    http://hostname:631/ipp/
    -    http://hostname:631/ipp/port1
    -
    -    ipp://hostname/ipp/
    -    ipp://hostname/ipp/port1
    -
    -    lpd://hostname/queue
    -
    -    socket://hostname
    -    socket://hostname:9100
    -
    - -

    Vedi "Stampanti -di rete" per l'URI corretto da utilizzare con la tua stampante.

    - -
    - -
    -
    \ No newline at end of file diff --git a/templates/it/class-added.tmpl b/templates/it/class-added.tmpl deleted file mode 100644 index 1f4a37c4e..000000000 --- a/templates/it/class-added.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Aggiungi una classe

    - -

    La classe {printer_name} è stata aggiunta -correttamente. - -

    diff --git a/templates/it/class-confirm.tmpl b/templates/it/class-confirm.tmpl deleted file mode 100644 index da3219d73..000000000 --- a/templates/it/class-confirm.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    - -

    Elimina una classe {printer_name}

    - -

    Attenzione: sei sicuro di voler eliminare la classe -{printer_name}?

    - -

    - -
    diff --git a/templates/it/class-deleted.tmpl b/templates/it/class-deleted.tmpl deleted file mode 100644 index 7283e52d5..000000000 --- a/templates/it/class-deleted.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Elimina una classe {printer_name}

    - -

    La classe {printer_name} è stata eliminata correttamente. - -

    \ 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 index 12a936ea9..000000000 --- a/templates/it/class-jobs-header.tmpl +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    Stampe

    -
    diff --git a/templates/it/class-modified.tmpl b/templates/it/class-modified.tmpl deleted file mode 100644 index 81c934c7c..000000000 --- a/templates/it/class-modified.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Modifica una classe {printer_name}

    - -

    La classe {printer_name} è stata -modificata correttamente. - -

    \ No newline at end of file diff --git a/templates/it/class.tmpl b/templates/it/class.tmpl deleted file mode 100644 index 2f23362c2..000000000 --- a/templates/it/class.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    -

    {printer_name} -({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:})

    - -
    - - - -
    - -
    - - - - - -
    - - - - - - -
    Descrizione:{printer_info}
    Posizione:{printer_location}
    Membri:{?member_uris=?Nessuno:{member_uris}}
    Predefiniti:job-sheets={job_sheets_default} -media={media_default?{media_default}:sconosciuto} -{sides_default?sides={sides_default}:}
    - -
    diff --git a/templates/it/classes-header.tmpl b/templates/it/classes-header.tmpl deleted file mode 100644 index 1fe0f4fa0..000000000 --- a/templates/it/classes-header.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    {total=0?Nessuna classe:Mostrat{total=1?a:e} {#printer_name} di {total} class{total=1?e:i}}.

    diff --git a/templates/it/classes.tmpl b/templates/it/classes.tmpl deleted file mode 100644 index ceff6a907..000000000 --- a/templates/it/classes.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -{#printer_name=0?: - - - - - -{[printer_name] - -} - -
    {ORDER=dec? Nome della coda : Nome della coda }DescrizionePosizioneMembriStato
    {printer_name}{printer_info}{printer_location}{?member_uris=?Nessuno:{member_uris}}{printer_state=3?Inattiva:{printer_state=4?Stampa in corso:In pausa}}{printer_state_message? - "{printer_state_message}":}
    } diff --git a/templates/it/command.tmpl b/templates/it/command.tmpl deleted file mode 100644 index 4be18063e..000000000 --- a/templates/it/command.tmpl +++ /dev/null @@ -1,12 +0,0 @@ -
    - -

    {title} su {printer_name}

    - -

    {job_state>5?: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?, -"{job_printer_state_message}":}}

    - -
    diff --git a/templates/it/edit-config.tmpl b/templates/it/edit-config.tmpl deleted file mode 100644 index 4b0e735f2..000000000 --- a/templates/it/edit-config.tmpl +++ /dev/null @@ -1,24 +0,0 @@ - - -
    - -

    Edita il file di configurazione

    - -
    - - - - - -

    -

    - -
    - -
    diff --git a/templates/it/error-op.tmpl b/templates/it/error-op.tmpl deleted file mode 100644 index c6cdfa80e..000000000 --- a/templates/it/error-op.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    {?title} {?printer_name} Errore

    - -

    Errore:

    - -
    Operazione sconosciuta "{op}"!
    - -
    diff --git a/templates/it/error.tmpl b/templates/it/error.tmpl deleted file mode 100644 index 87f3162bb..000000000 --- a/templates/it/error.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    {?title} {?printer_name} Errore

    - -

    {?message?{message}:Errore}:

    - -
    {error}
    - -
    diff --git a/templates/it/header.tmpl.in b/templates/it/header.tmpl.in deleted file mode 100644 index a5896f6d5..000000000 --- a/templates/it/header.tmpl.in +++ /dev/null @@ -1,38 +0,0 @@ - - - - - {title} - CUPS @CUPS_VERSION@@CUPS_REVISION@ - - - {refresh_page?:} - - - - - - - - diff --git a/templates/it/option-conflict.tmpl b/templates/it/option-conflict.tmpl deleted file mode 100644 index 90b2bc0ec..000000000 --- a/templates/it/option-conflict.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -

    Error: Le seguenti opzioni sono in conflitto:

    - - - -

    Modifica una o più di queste opzioni per risolvere i conflitti.

    diff --git a/templates/it/option-header.tmpl b/templates/it/option-header.tmpl deleted file mode 100644 index 464726a50..000000000 --- a/templates/it/option-header.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    {group}

    - -
    - - - - - - - - - - - - - -
      Home    Amministrazione    Classi    Guida in linea    Stampe    Stampanti  
     
    -
    diff --git a/templates/it/help-header.tmpl b/templates/it/help-header.tmpl deleted file mode 100644 index 754c2751d..000000000 --- a/templates/it/help-header.tmpl +++ /dev/null @@ -1,51 +0,0 @@ -
    -
    -{TOPIC?:} - -

    Cerca in -{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:tutti i documenti}}: - -

    - -
    - - - - -{QUERY?

    Cerca risultati in {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:tutti i documenti}}\:

    -{QTEXT?:} -:

    Nessuna corrispondenza trovata.

    } -
    :} -{HELPTITLE?

    {HELPTITLE}

    -
    : - -

    Guida in linea

    - -

    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.

    - -

    Se sei un nuovo utente di CUPS, leggi la pagina "Overview of CUPS". Gli utenti esperti -dovrebbero leggere la pagina "What's New in CUPS -1.7".

    - -

    Inoltre, la pagina principale di CUPS -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à.

    } diff --git a/templates/it/help-printable.tmpl b/templates/it/help-printable.tmpl deleted file mode 100644 index 2463c1630..000000000 --- a/templates/it/help-printable.tmpl +++ /dev/null @@ -1,9 +0,0 @@ - - - - - {HELPTITLE} - - - - diff --git a/templates/it/help-trailer.tmpl b/templates/it/help-trailer.tmpl deleted file mode 100644 index 4c1ebed85..000000000 --- a/templates/it/help-trailer.tmpl +++ /dev/null @@ -1 +0,0 @@ -
    diff --git a/templates/it/job-cancel.tmpl b/templates/it/job-cancel.tmpl deleted file mode 100644 index 766881ea7..000000000 --- a/templates/it/job-cancel.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Annulla la stampa {job_id}

    - -

    La stampa {job_id} è stata annullata. - -

    diff --git a/templates/it/job-hold.tmpl b/templates/it/job-hold.tmpl deleted file mode 100644 index ac2d8199c..000000000 --- a/templates/it/job-hold.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Blocca la stampa {job_id}

    - -

    La stampa {job_id} è stata bloccata. - -

    diff --git a/templates/it/job-move.tmpl b/templates/it/job-move.tmpl deleted file mode 100644 index ed4934433..000000000 --- a/templates/it/job-move.tmpl +++ /dev/null @@ -1,27 +0,0 @@ -
    - -
    - - -{job_id?:} - -

    {job_id?Sposta la stampa {job_id}:Sposta tutte le stampe}

    - - - - - - - - - - -
    Nuova destinazione: - -
    - -
    - -
    diff --git a/templates/it/job-moved.tmpl b/templates/it/job-moved.tmpl deleted file mode 100644 index 518bceb5f..000000000 --- a/templates/it/job-moved.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    {job_id?Sposta la stampa {job_id}:Sposta tutte le stampe}

    - -

    {job_id?La stampa {job_id}:Tutte le stampe} {job_id?è stata:sono state} spostat{job_id?a:e} su -{job_printer_name}.

    - -
    diff --git a/templates/it/job-release.tmpl b/templates/it/job-release.tmpl deleted file mode 100644 index c6520fdd5..000000000 --- a/templates/it/job-release.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Rilascia la stampa {job_id}

    - -

    La stampa {job_id} è stata rilasciata. - -

    diff --git a/templates/it/job-restart.tmpl b/templates/it/job-restart.tmpl deleted file mode 100644 index 59d9aa6b5..000000000 --- a/templates/it/job-restart.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Ripeti la stampa {job_id}

    - -

    La stampa {job_id} è stata riavviata. - -

    diff --git a/templates/it/jobs-header.tmpl b/templates/it/jobs-header.tmpl deleted file mode 100644 index e8f295bbc..000000000 --- a/templates/it/jobs-header.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    {?which_jobs=?:
    } -{?which_jobs=completed?:
    } -{?which_jobs=all?:
    }
    - -

    {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}}}}.

    diff --git a/templates/it/jobs.tmpl b/templates/it/jobs.tmpl deleted file mode 100644 index b1f80d3e1..000000000 --- a/templates/it/jobs.tmpl +++ /dev/null @@ -1,36 +0,0 @@ -{#job_id=0?: - - - - - -{[job_id] - - - - - - - - - -} - -
    {ORDER=dec? ID : ID }NomeUtenteDimensionePagineStatoControllo
    {job_printer_name}-{job_id}{?phone? ({phone}):} {?job_name=?Sconosciuto:{job_name}} {?job_originating_user_name=?Withheld:{job_originating_user_name}} {job_k_octets}k {job_media_sheets_completed=0?Sconosciuto:{?job_media_sheets_completed}} {job_state=3?in attesa da
    {time_at_creation}:{job_state=4?bloccata da
    {time_at_creation}: -{job_state=5?stampa in corso da
    {time_at_processing}:{job_state=6?fermata: -{job_state=7?eliminata il
    {time_at_completed}:{job_state=8?annullata:completata il
    {time_at_completed}}}}}}} {job_printer_state_message?
    -"{job_printer_state_message}":}
    -{job_preserved>0?{job_state>5? -
    :}:} -{job_state=4? -
    -
    :} -{job_state=3? -
    -
    :} -{job_state<7? -
    -
    -
    :} - 
    -} diff --git a/templates/it/list-available-printers.tmpl b/templates/it/list-available-printers.tmpl deleted file mode 100644 index 15c45c097..000000000 --- a/templates/it/list-available-printers.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -
    - -

    Stampanti disponibili

    - -{#device_uri=0?

    Nessuna stampante trovata.

    -:
      {[device_uri] -
    • -{device_make_and_model} ({device_info})
    • -}
    } - -
    diff --git a/templates/it/modify-class.tmpl b/templates/it/modify-class.tmpl deleted file mode 100644 index 6c71a3719..000000000 --- a/templates/it/modify-class.tmpl +++ /dev/null @@ -1,34 +0,0 @@ -
    - -

    Modifica la classe {printer_name}

    - -
    - - - - - - - - - - - - - - - - - - - - - -
    Descrizione:
    Posizione:
    Membri: - -
    - -
    -
    \ No newline at end of file diff --git a/templates/it/modify-printer.tmpl b/templates/it/modify-printer.tmpl deleted file mode 100644 index f87ff128d..000000000 --- a/templates/it/modify-printer.tmpl +++ /dev/null @@ -1,42 +0,0 @@ -
    - -

    Modifica {printer_name}

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Descrizione:
    -(Una descrizione esplicativa, ad esempio "HP LaserJet con Duplexer")
    Posizione:
    -(Una posizione esplicativa, ad esempio "Lab 1")
    Connessione:{device_uri}
    Condivisione: -Condividi questa stampante
    - -
    -
    diff --git a/templates/it/norestart.tmpl b/templates/it/norestart.tmpl deleted file mode 100644 index 9dc7cd4e1..000000000 --- a/templates/it/norestart.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Modifica le impostazioni

    - -

    Il server non è stato riavviato perché non sono state apportate modifiche -alla configurazione...

    - -
    diff --git a/templates/it/option-boolean.tmpl b/templates/it/option-boolean.tmpl deleted file mode 100644 index e832ee102..000000000 --- a/templates/it/option-boolean.tmpl +++ /dev/null @@ -1,6 +0,0 @@ -
    {keytext}: -{[choices]{text}} -
    diff --git a/templates/it/option-pickmany.tmpl b/templates/it/option-pickmany.tmpl deleted file mode 100644 index 0da75e5d2..000000000 --- a/templates/it/option-pickmany.tmpl +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/templates/it/option-pickone.tmpl b/templates/it/option-pickone.tmpl deleted file mode 100644 index c21fc71ba..000000000 --- a/templates/it/option-pickone.tmpl +++ /dev/null @@ -1,18 +0,0 @@ - - -:} - diff --git a/templates/it/option-trailer.tmpl b/templates/it/option-trailer.tmpl deleted file mode 100644 index 22b06d71e..000000000 --- a/templates/it/option-trailer.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    {keytext}:
    {keytext}: -{iscustom=1?{[params] - - -}
    {paramtext}:{params=Units?:}
    -
    - -

    - -
    \ No newline at end of file diff --git a/templates/it/pager.tmpl b/templates/it/pager.tmpl deleted file mode 100644 index 019646f95..000000000 --- a/templates/it/pager.tmpl +++ /dev/null @@ -1,6 +0,0 @@ - - - - - -
    {PREV?
    : }
    {NEXT?
    : }
    diff --git a/templates/it/printer-accept.tmpl b/templates/it/printer-accept.tmpl deleted file mode 100644 index 6fa701a2c..000000000 --- a/templates/it/printer-accept.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Accetta le stampe sulla {is_class?classe:stampante} {printer_name}

    - -

    {is_class?La classe:La stampante} {printer_name} -adesso accetta le stampe.

    - -
    diff --git a/templates/it/printer-added.tmpl b/templates/it/printer-added.tmpl deleted file mode 100644 index e5258451d..000000000 --- a/templates/it/printer-added.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Aggiungi una stampante

    - -

    La stampante {printer_name} è stata aggiunta -correttamente. - -

    diff --git a/templates/it/printer-configured.tmpl b/templates/it/printer-configured.tmpl deleted file mode 100644 index 054c9abec..000000000 --- a/templates/it/printer-configured.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Imposta le opzioni predefinite per {printer_name}

    - -

    {OP=set-class-options?Class :La stampante }{printer_name} -è stata configurata correttamente con le opzioni predefinite. - -

    diff --git a/templates/it/printer-confirm.tmpl b/templates/it/printer-confirm.tmpl deleted file mode 100644 index b32a3c67e..000000000 --- a/templates/it/printer-confirm.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    - -

    Elimina la stampante {printer_name}

    - -

    Attenzione: sei sicuro di voler eliminare la stampante -{printer_name}?

    - -

    - -
    diff --git a/templates/it/printer-default.tmpl b/templates/it/printer-default.tmpl deleted file mode 100644 index 78282e173..000000000 --- a/templates/it/printer-default.tmpl +++ /dev/null @@ -1,13 +0,0 @@ -
    - -

    Imposta {is_class?la classe:la stampante} {printer_name} come predefinita

    - -

    {is_class?La classe:La stampante} {printer_name} -è stata impostata come predefinita sul server.

    - -
    Nota: qualsiasi utente predefinito, impostato tramite -il comando lpoptions, sovrascriverà questa impostazione -predefinita.
    - -
    diff --git a/templates/it/printer-deleted.tmpl b/templates/it/printer-deleted.tmpl deleted file mode 100644 index 4698805d8..000000000 --- a/templates/it/printer-deleted.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Elimina la stampante {printer_name}

    - -

    La stampante {printer_name} è stata eliminata correttamente. - -

    diff --git a/templates/it/printer-jobs-header.tmpl b/templates/it/printer-jobs-header.tmpl deleted file mode 100644 index 12a936ea9..000000000 --- a/templates/it/printer-jobs-header.tmpl +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    Stampe

    -
    diff --git a/templates/it/printer-modified.tmpl b/templates/it/printer-modified.tmpl deleted file mode 100644 index 2a34e89d8..000000000 --- a/templates/it/printer-modified.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Modifica la stampante {printer_name}

    - -

    La stampante {printer_name} è stata -modificata correttamente. - -

    \ No newline at end of file diff --git a/templates/it/printer-purge.tmpl b/templates/it/printer-purge.tmpl deleted file mode 100644 index 84a8a6f67..000000000 --- a/templates/it/printer-purge.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Elimina le stampe sulla {is_class?classe:stampante} {printer_name}

    - -

    {is_class?La classe:La stampante} {printer_name} -è stata liberata da tutte le stampe.

    - -
    \ No newline at end of file diff --git a/templates/it/printer-reject.tmpl b/templates/it/printer-reject.tmpl deleted file mode 100644 index 51ed140dc..000000000 --- a/templates/it/printer-reject.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Rifiuta le stampe sulla {is_class?classe:stampante} {printer_name}

    - -

    {is_class?La classe:La stampante} {printer_name} -non accetta le stampe.

    - -
    diff --git a/templates/it/printer-start.tmpl b/templates/it/printer-start.tmpl deleted file mode 100644 index 61e992ffb..000000000 --- a/templates/it/printer-start.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Ripristina {is_class?la classe:la stampante} {printer_name}

    - -

    {is_class?La classe:La stampante} {printer_name} -è stata ripristinata.

    - -
    \ No newline at end of file diff --git a/templates/it/printer-stop.tmpl b/templates/it/printer-stop.tmpl deleted file mode 100644 index 1ddc3b9cc..000000000 --- a/templates/it/printer-stop.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Metti in pausa {is_class?la classe:la stampante} {printer_name}

    - -

    {is_class?La classe:La stampante} {printer_name} -è stata messa in pausa.

    - -
    \ No newline at end of file diff --git a/templates/it/printer.tmpl b/templates/it/printer.tmpl deleted file mode 100644 index dea4d9cc4..000000000 --- a/templates/it/printer.tmpl +++ /dev/null @@ -1,47 +0,0 @@ -
    - -

    {printer_name} -({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:})

    - -
    - - - -
    - -
    - - - - -
    - - - - - - -
    Descrizione:{printer_info}
    Posizione:{printer_location}
    Driver:{printer_make_and_model} ({color_supported=1?color:grayscale}{sides_supported?, 2-sided printing:})
    -
    Connessione:{device_uri}
    Valori predefiniti:job-sheets={job_sheets_default} -media={media_default?{media_default}:sconosciuto} -{sides_default?sides={sides_default}:}
    - -
    \ No newline at end of file diff --git a/templates/it/printers-header.tmpl b/templates/it/printers-header.tmpl deleted file mode 100644 index c17bb2f9b..000000000 --- a/templates/it/printers-header.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    {total=0?Nessuna stampante:Sto visualizzando {#printer_name} di {total} stampant{total=1?e:i}}.

    diff --git a/templates/it/printers.tmpl b/templates/it/printers.tmpl deleted file mode 100644 index 037717e7d..000000000 --- a/templates/it/printers.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -{#printer_name=0?: - - - - - -{[printer_name] - -} - -
    {ORDER=dec? Nome della coda : Nome della coda }DescrizionePosizioneMarca e modelloStato
    {printer_name}{printer_info}{printer_location}{printer_make_and_model}{printer_state=3?Inattiva:{printer_state=4?Stampa in corso:In pausa}}{printer_state_message? - "{printer_state_message}":}
    } diff --git a/templates/it/restart.tmpl b/templates/it/restart.tmpl deleted file mode 100644 index 91d904e6f..000000000 --- a/templates/it/restart.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Modifica le impostazioni

    - -

    Attendere che il server si riavvii...

    - -
    diff --git a/templates/it/samba-export.tmpl b/templates/it/samba-export.tmpl deleted file mode 100644 index 00bd4424b..000000000 --- a/templates/it/samba-export.tmpl +++ /dev/null @@ -1,54 +0,0 @@ - - -
    - - - -

    Esporta le stampanti a Samba

    - -{error?

    Non è possibile esportare le stampanti a Samba\:

    -
    {error}
    -

    Per maggiori informazioni, consulta il file error_log.

    : -

    Questa pagina ti consente di esportare le stampanti a Samba, in modo che -i client Windows possano accedervi tramite le icone Risorse -di rete dei loro desktop. Innanzitutto, dovete installare i driver delle -stampanti Windows PostScript, come descritto nella pagina di manuale di cupsaddsmb(8).

    } - - - - - - - - - - - - - - - - - - -
    Stampanti: -
    - Esporta tutte le stampanti -
    Username di Samba: (richiesto)
    Password di Samba: (richiesto)
    - -
    diff --git a/templates/it/samba-exported.tmpl b/templates/it/samba-exported.tmpl deleted file mode 100644 index edb65785b..000000000 --- a/templates/it/samba-exported.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    Le stampanti sono state esportate a Samba correttamente.

    diff --git a/templates/it/search.tmpl b/templates/it/search.tmpl deleted file mode 100644 index 1679a75f8..000000000 --- a/templates/it/search.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    -{WHICH_JOBS?:} -{ORDER?:} - -

    Cerca in -{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?classi:{SECTION=jobs?stampe:stampanti}}}: -

    - -
    diff --git a/templates/it/set-printer-options-header.tmpl b/templates/it/set-printer-options-header.tmpl deleted file mode 100644 index d55134829..000000000 --- a/templates/it/set-printer-options-header.tmpl +++ /dev/null @@ -1,26 +0,0 @@ -
    - -

    Imposta le opzioni predefinite per {printer_name}

    - -
    - - - -{HAVE_AUTOCONFIGURE?:} - - - -

    {[group_id] -{group}     }

    - -
    diff --git a/templates/it/set-printer-options-trailer.tmpl b/templates/it/set-printer-options-trailer.tmpl deleted file mode 100644 index 11adc7012..000000000 --- a/templates/it/set-printer-options-trailer.tmpl +++ /dev/null @@ -1,16 +0,0 @@ -
    - - -
    - -
    diff --git a/templates/it/subscription-added.tmpl b/templates/it/subscription-added.tmpl deleted file mode 100644 index 19269d52f..000000000 --- a/templates/it/subscription-added.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    L'abbonamento al feed RSS {subscription_name} è stato aggiunto correttamente.

    - -
    diff --git a/templates/it/subscription-canceled.tmpl b/templates/it/subscription-canceled.tmpl deleted file mode 100644 index 4f71ffb0e..000000000 --- a/templates/it/subscription-canceled.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    L'abbonamento al feed RSS #{notify_subscription_id} è stato annullato.

    - -
    diff --git a/templates/it/test-page.tmpl b/templates/it/test-page.tmpl deleted file mode 100644 index 3cab6840f..000000000 --- a/templates/it/test-page.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Stampa una pagina di prova su {printer_name}

    - -

    La pagina di prova è stata inviata; l'ID della stampa è -{printer_name}-{job_id}.

    - -
    diff --git a/templates/it/trailer.tmpl b/templates/it/trailer.tmpl deleted file mode 100644 index e9dae0a53..000000000 --- a/templates/it/trailer.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
     
    CUPS e il logo di CUPS sono marchi registrati da -Apple Inc. Copyright 2007-2014 Apple -Inc. Tutti i diritti sono riservati.
    - - diff --git a/templates/it/users.tmpl b/templates/it/users.tmpl deleted file mode 100644 index 69a1a0f9a..000000000 --- a/templates/it/users.tmpl +++ /dev/null @@ -1,30 +0,0 @@ -
    - -
    - - - -{IS_CLASS?:} - -

    Utenti autorizzati ad utilizzare {printer_name}

    - - - - - - - - - - -
    Utenti: - -
    -Consenti a questi utenti di stampare -Vieta a questi utenti di stampare -
    - -
    - -
    -
    diff --git a/templates/ja/add-class.tmpl b/templates/ja/add-class.tmpl deleted file mode 100644 index b4e916687..000000000 --- a/templates/ja/add-class.tmpl +++ /dev/null @@ -1,40 +0,0 @@ -
    - -

    クラスの追加

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    名前:
    -
    説明:
    -("HP LaserJet with Duplexer" のように人が読みやすい説明)
    場所:
    -("Lab 1" のように人が読みやすい場所)
    メンバー: - -
    - -
    -
    \ No newline at end of file diff --git a/templates/ja/add-printer.tmpl b/templates/ja/add-printer.tmpl deleted file mode 100644 index 00fab5ca2..000000000 --- a/templates/ja/add-printer.tmpl +++ /dev/null @@ -1,47 +0,0 @@ -
    - -

    新しいプリンターの追加

    - -
    - - - - - - -{?current_make!?:} -{?current_make_and_model!?:} - - - - - - - - - - - - - - - - - - - - - - - - - - -
    名前:
    -("/"、"#"、スペースを除く表示可能文字を含めることができます)
    説明:
    -("HP LaserJet with Duplexer" のように人が読みやすい説明)
    場所:
    -("Lab 1" のように人が読みやすい場所)
    接続:{device_uri}
    共有: -このプリンターを共有する
    - -
    -
    \ 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 index c5afeb068..000000000 --- a/templates/ja/add-rss-subscription.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    - - - -

    RSS 購読を追加

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    名前:
    -("/"、"?"、"#"、スペースを除く文字を含めることができます)
    キュー:
    イベント:ジョブが作成された
    -ジョブが完了した
    -ジョブが停止した
    -ジョブオプションが変更された
        ã‚­ãƒ¥ãƒ¼ãŒåœæ­¢ã—た
    -キューが追加された
    -キューが変更された
    -キューが削除された
        ã‚µãƒ¼ãƒãƒ¼ãŒé–‹å§‹ã—た
    -サーバーが停止した
    -サーバーが再起動した
    -サーバーのセキュリティを監査中
    フィード内の最大イベント数:
    - -
    diff --git a/templates/ja/admin.tmpl b/templates/ja/admin.tmpl deleted file mode 100644 index 53cb2da52..000000000 --- a/templates/ja/admin.tmpl +++ /dev/null @@ -1,102 +0,0 @@ - - -
    - -

    プリンター

    - -

    -

    -
    -
    -{have_samba?
    :} -

    - -

    クラス

    - -

    -

    -
    -

    - -

    ジョブ

    - -

    -

    -

    - -
              - -

    サーバー

    - -

    -

    -
    -
    -
    -

    - -{SETTINGS_ERROR?

    {SETTINGS_MESSAGE}

    -
    {SETTINGS_ERROR}
    : - -
    - - -{ADVANCEDSETTINGS?

    サーバー設定\:

    - -

    詳細
    - - - このシステムに接続されているプリンターを共有
    -        æœ€å¤§ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆæ•°\: -
    -         インターネットからの印刷を許可
    -         ウェブインターフェイスを公開
    - リモート管理を許可
    -{have_gssapi? Kerberos 認証を使用 (FAQ)
    :} - 所有者以外のユーザーにもジョブのキャンセルを許可
    - ジョブの履歴を保存
    -        æœ€å¤§ã‚¸ãƒ§ãƒ–æ•° (0 は無制限)\: -
    -        ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã‚’保持\: -
    -        ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’保持\: -
    - トラブルシューティングのためにデバッグ情報を保存
    -        æœ€å¤§ãƒ­ã‚°ãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚º\: -

    - -:

    サーバー設定:

    - -

    詳細
    - - このシステムに接続されているプリンターを共有
    -         インターネットからの印刷を許可
    - リモート管理を許可
    -{have_gssapi? Kerberos 認証を使用 (FAQ)
    :} - 所有者以外のユーザーにもジョブのキャンセルを許可
    - トラブルシューティングのためにデバッグ情報を保存

    - -} -

    - -
    } - -
    - -
    - -

    RSS 購読

    - -

    -

    -

    - -
    - -{notify_subscription_id? - -{[notify_subscription_id] -} - -
    名前イベントキュー名
    {notify_recipient_name}
    -
     
    {notify_events} {notify_printer_name?{notify_printer_name}:すべてのキュー}
    :} diff --git a/templates/ja/choose-device.tmpl b/templates/ja/choose-device.tmpl deleted file mode 100644 index 83b1c6a63..000000000 --- a/templates/ja/choose-device.tmpl +++ /dev/null @@ -1,53 +0,0 @@ -
    - -

    {op=modify-printer?{printer_name} の変更:プリンターの追加}

    - -{CUPS_GET_DEVICES_DONE?
    - - -{printer_name?:} - - -{op=add-printer?: - - -} - - - - - - - - - - - - - - - - - -
    現在の接続\: -{current_device_uri}
    ローカルプリンター\: -{[device_uri]{device_class!network? -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -:}} -
    発見されたネットワークプリンター\: -{[device_uri]{device_class=network?{device_uri~[a-z]+://? -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -:}:}} -
    その他のネットワークプリンター\: -{[device_uri]{device_class=network?{device_uri~[a-z]+://?: -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -}:}} -
    - -
    :

    プリンターを探しています...

    } - -
    diff --git a/templates/ja/choose-make.tmpl b/templates/ja/choose-make.tmpl deleted file mode 100644 index 7d2d92344..000000000 --- a/templates/ja/choose-make.tmpl +++ /dev/null @@ -1,64 +0,0 @@ -
    - -

    {op=modify-printer?{printer_name}の変更:プリンターの追加}

    - -
    - - -{printer_name?:} - - - - - - -{op=modify-printer?: - - -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    名前:{printer_name}
    説明:{printer_info}
    場所:{printer_location}
    接続:{device_uri}
    共有: -このプリンターを共有{?printer_is_shared=?しない:{?printer_is_shared=0?しない:する}}
    メーカー: - -
     
    または PPD ファイルを提供:
    - -
    -
    \ No newline at end of file diff --git a/templates/ja/choose-model.tmpl b/templates/ja/choose-model.tmpl deleted file mode 100644 index e82cece9b..000000000 --- a/templates/ja/choose-model.tmpl +++ /dev/null @@ -1,60 +0,0 @@ -
    - -

    {op=modify-printer?{printer_name}の変更:プリンターの追加}

    - -
    - - -{printer_name?:} - - - - - -{op=modify-printer?: - - -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    名前:{printer_name}
    説明:{printer_info}
    場所:{printer_location}
    接続:{device_uri}
    共有: -このプリンターを共有{?printer_is_shared=?しない:{?printer_is_shared=0?しない:する}}
    メーカー:{PPD_MAKE}
    モデル: - -
    または PPD ファイルを提供:
    - -
    -
    \ No newline at end of file diff --git a/templates/ja/choose-serial.tmpl b/templates/ja/choose-serial.tmpl deleted file mode 100644 index 924b84a74..000000000 --- a/templates/ja/choose-serial.tmpl +++ /dev/null @@ -1,52 +0,0 @@ -
    - -

    {op=modify-printer?{printer_name}の変更:プリンターの追加}

    - -
    - - -{printer_name?:} - - - - - - - - - - - - - - - - - - - - - - - - - - -
    接続:{device_uri}
    ボーレート:
    パリティ:
    データビット:
    フロー制御:
    - -
    -
    \ No newline at end of file diff --git a/templates/ja/choose-uri.tmpl b/templates/ja/choose-uri.tmpl deleted file mode 100644 index 2c687beff..000000000 --- a/templates/ja/choose-uri.tmpl +++ /dev/null @@ -1,43 +0,0 @@ -
    - -

    {op=modify-printer?{printer_name}の変更:プリンターの追加}

    - -
    - - -{printer_name?:} - - - - - - - - - - - - - - - -
    接続:
    例: -
    -    http://hostname:631/ipp/
    -    http://hostname:631/ipp/port1
    -
    -    ipp://hostname/ipp/
    -    ipp://hostname/ipp/port1
    -
    -    lpd://hostname/queue
    -
    -    socket://hostname
    -    socket://hostname:9100
    -
    - -

    あなたのプリンターにふさわしい URI については、"ネットワークプリンター"を参照してください。

    - -
    - -
    -
    \ No newline at end of file diff --git a/templates/ja/class-added.tmpl b/templates/ja/class-added.tmpl deleted file mode 100644 index 284aa9fb8..000000000 --- a/templates/ja/class-added.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    クラスの追加

    - -

    クラス {printer_name} は正しく追加されました。 - -

    diff --git a/templates/ja/class-confirm.tmpl b/templates/ja/class-confirm.tmpl deleted file mode 100644 index 6ab315de3..000000000 --- a/templates/ja/class-confirm.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    - -

    クラス {printer_name} の削除

    - -

    警告: 本当にクラス -{printer_name} を削除してもよいですか?

    - -

    - -
    diff --git a/templates/ja/class-deleted.tmpl b/templates/ja/class-deleted.tmpl deleted file mode 100644 index 694132173..000000000 --- a/templates/ja/class-deleted.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    クラス {printer_name} の削除

    - -

    クラス {printer_name} は正しく削除されました。 - -

    \ 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 index 1d5d887cd..000000000 --- a/templates/ja/class-jobs-header.tmpl +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    ジョブ

    -
    diff --git a/templates/ja/class-modified.tmpl b/templates/ja/class-modified.tmpl deleted file mode 100644 index be65f13bf..000000000 --- a/templates/ja/class-modified.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    クラス {printer_name} の変更

    - -

    クラス {printer_name} は正しく変更されました。 - -

    \ No newline at end of file diff --git a/templates/ja/class.tmpl b/templates/ja/class.tmpl deleted file mode 100644 index b71ea7ee5..000000000 --- a/templates/ja/class.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    -

    {printer_name} -({printer_state=3?待機中:{printer_state=4?処理中:停止}}, -{printer_is_accepting_jobs=0?ジョブを拒否中:ジョブを受け付け中}, -{server_is_sharing_printers=0?非:{printer_is_shared=0?非:}} 共有{default_name={printer_name}?, サーバーのデフォルト:})

    - -
    - - - -
    - -
    - - - - - -
    - - - - - - -
    説明:{printer_info}
    場所:{printer_location}
    メンバー:{?member_uris=?なし:{member_uris}}
    デフォルト:job-sheets={job_sheets_default} -media={media_default?{media_default}:unknown} -{sides_default?sides={sides_default}:}
    - -
    diff --git a/templates/ja/classes-header.tmpl b/templates/ja/classes-header.tmpl deleted file mode 100644 index 506603cd5..000000000 --- a/templates/ja/classes-header.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    {total=0?クラスはありません:{total} 個のクラスのうち {#printer_name} 個を表示中}。

    diff --git a/templates/ja/classes.tmpl b/templates/ja/classes.tmpl deleted file mode 100644 index 823a832a9..000000000 --- a/templates/ja/classes.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -{#printer_name=0?: - - - - - -{[printer_name] - -} - -
    {ORDER=dec? キュー名 : キュー名 }説明場所メンバー状態
    {printer_name}{printer_info}{printer_location}{?member_uris=?なし:{member_uris}}{printer_state=3?待機中:{printer_state=4?処理中:停止}}{printer_state_message? - "{printer_state_message}":}
    } diff --git a/templates/ja/command.tmpl b/templates/ja/command.tmpl deleted file mode 100644 index f892335e2..000000000 --- a/templates/ja/command.tmpl +++ /dev/null @@ -1,12 +0,0 @@ -
    - -

    {printer_name} の {title}

    - -

    {job_state>5?: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?, -"{job_printer_state_message}":}}

    - -
    diff --git a/templates/ja/edit-config.tmpl b/templates/ja/edit-config.tmpl deleted file mode 100644 index dfd7dc95b..000000000 --- a/templates/ja/edit-config.tmpl +++ /dev/null @@ -1,24 +0,0 @@ - - -
    - -

    設定ファイルの設定

    - -
    - - - - - -

    -

    - -
    - -
    diff --git a/templates/ja/error-op.tmpl b/templates/ja/error-op.tmpl deleted file mode 100644 index 89ffbaeca..000000000 --- a/templates/ja/error-op.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    {?title} {?printer_name} のエラー

    - -

    エラー:

    - -
    "{op}" は未知の操作です!
    - -
    diff --git a/templates/ja/error.tmpl b/templates/ja/error.tmpl deleted file mode 100644 index d67ce3665..000000000 --- a/templates/ja/error.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    {?title} {?printer_name} のエラー

    - -

    {?message?{message}:エラー}:

    - -
    {error}
    - -
    diff --git a/templates/ja/header.tmpl.in b/templates/ja/header.tmpl.in deleted file mode 100644 index 1bf55fdee..000000000 --- a/templates/ja/header.tmpl.in +++ /dev/null @@ -1,38 +0,0 @@ - - - - - {title} - CUPS @CUPS_VERSION@@CUPS_REVISION@ - - - {refresh_page?:} - - - - - - - - diff --git a/templates/ja/option-conflict.tmpl b/templates/ja/option-conflict.tmpl deleted file mode 100644 index 4f782ac80..000000000 --- a/templates/ja/option-conflict.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -

    エラー: 以下のオプションは競合します:

    - - - -

    競合を解決するために、1 つ以上のオプションを変更してください。

    diff --git a/templates/ja/option-header.tmpl b/templates/ja/option-header.tmpl deleted file mode 100644 index 464726a50..000000000 --- a/templates/ja/option-header.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    {group}

    - -
    - - - - - - - - - - - - - -
      ãƒ›ãƒ¼ãƒ     ç®¡ç†    ã‚¯ãƒ©ã‚¹    ãƒ˜ãƒ«ãƒ—    ã‚¸ãƒ§ãƒ–    ãƒ—リンター  
     
    -
    diff --git a/templates/ja/help-header.tmpl b/templates/ja/help-header.tmpl deleted file mode 100644 index 4a1f0ffb9..000000000 --- a/templates/ja/help-header.tmpl +++ /dev/null @@ -1,51 +0,0 @@ -
    -
    -{TOPIC?:} - -

    -{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:すべてのドキュメント}}内を検索: - -

    - -
    - - - - -{QUERY?

    {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:すべてのドキュメント}}の検索結果\:

    -{QTEXT?:} -:

    マッチするものは見つかりませんでした。

    } -
    :} -{HELPTITLE?

    {HELPTITLE}

    -
    : - -

    オンラインヘルプ

    - -

    これは、CUPS のオンラインヘルプインターフェイスです。 -オンラインヘルプ情報を表示するには、検索語句を上に入力するか、 -ドキュメントリンクのいずれかをクリックしてください。

    - -

    あなたが CUPS について初心者なら、 "CUPS の概要" ページを読んでください。 -上級ユーザーは、 "CUPS 1.6 の新機能" -ページを読むべきです。

    - -

    CUPS ホームページ でも、 -ユーザーディスカッションフォーラム、FAQ、 -バグ報告や機能リクエストを申請するフォームといった、 -多くのリソースを提供しています。

    } diff --git a/templates/ja/help-printable.tmpl b/templates/ja/help-printable.tmpl deleted file mode 100644 index 2463c1630..000000000 --- a/templates/ja/help-printable.tmpl +++ /dev/null @@ -1,9 +0,0 @@ - - - - - {HELPTITLE} - - - - diff --git a/templates/ja/help-trailer.tmpl b/templates/ja/help-trailer.tmpl deleted file mode 100644 index 4c1ebed85..000000000 --- a/templates/ja/help-trailer.tmpl +++ /dev/null @@ -1 +0,0 @@ -
    diff --git a/templates/ja/job-cancel.tmpl b/templates/ja/job-cancel.tmpl deleted file mode 100644 index aa102953d..000000000 --- a/templates/ja/job-cancel.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    ジョブ {job_id} のキャンセル

    - -

    ジョブ {job_id} はキャンセルされました。 - -

    diff --git a/templates/ja/job-hold.tmpl b/templates/ja/job-hold.tmpl deleted file mode 100644 index baae237fa..000000000 --- a/templates/ja/job-hold.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    ジョブ {job_id} の保留

    - -

    ジョブ {job_id} は印刷を保留されました。 - -

    diff --git a/templates/ja/job-move.tmpl b/templates/ja/job-move.tmpl deleted file mode 100644 index 54da7e038..000000000 --- a/templates/ja/job-move.tmpl +++ /dev/null @@ -1,27 +0,0 @@ -
    - -
    - - -{job_id?:} - -

    {job_id?ジョブ {job_id} の移動:すべてのジョブの移動}

    - - - - - - - - - - -
    新しい宛先: - -
    - -
    - -
    diff --git a/templates/ja/job-moved.tmpl b/templates/ja/job-moved.tmpl deleted file mode 100644 index c41535975..000000000 --- a/templates/ja/job-moved.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    {job_id?ジョブ {job_id} の移動:すべてのジョブの移動}

    - -

    {job_id?ジョブ {job_id}:すべてのジョブ} は -{job_printer_name} に移動しました。

    - -
    diff --git a/templates/ja/job-release.tmpl b/templates/ja/job-release.tmpl deleted file mode 100644 index fd9f89dd2..000000000 --- a/templates/ja/job-release.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    ジョブ {job_id} の解放

    - -

    ジョブ {job_id} は印刷から解放されました。 - -

    diff --git a/templates/ja/job-restart.tmpl b/templates/ja/job-restart.tmpl deleted file mode 100644 index 493a4ace7..000000000 --- a/templates/ja/job-restart.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    ジョブ {job_id} の再印刷

    - -

    ジョブ {job_id} は再印刷されました。 - -

    diff --git a/templates/ja/jobs-header.tmpl b/templates/ja/jobs-header.tmpl deleted file mode 100644 index 76095b4e6..000000000 --- a/templates/ja/jobs-header.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    {?which_jobs=?:
    } -{?which_jobs=completed?:
    } -{?which_jobs=all?:
    }
    - -

    {total=0?ジョブはありません:{total} 個の{?which_jobs=?アクティブな:{which_jobs=all?:完了した}}ジョブのうち {#job_id} 個を表示中}。

    diff --git a/templates/ja/jobs.tmpl b/templates/ja/jobs.tmpl deleted file mode 100644 index 220c950aa..000000000 --- a/templates/ja/jobs.tmpl +++ /dev/null @@ -1,36 +0,0 @@ -{#job_id=0?: - - - - - -{[job_id] - - - - - - - - - -} - -
    {ORDER=dec? ID : ID }名前ユーザーサイズページ状態制御
    {job_printer_name}-{job_id}{?phone? ({phone}):} {?job_name=?未知:{job_name}} {?job_originating_user_name=?隠匿:{job_originating_user_name}} {job_k_octets}k {job_media_sheets_completed=0?不明:{?job_media_sheets_completed}} {job_state=3?{time_at_creation}
    から保留中:{job_state=4?{time_at_creation}
    から保留中: -{job_state=5?{time_at_processing}
    から処理中:{job_state=6?に停止: -{job_state=7?{time_at_completed}
    にキャンセル:{job_state=8?に中断:{time_at_completed}
    に完了}}}}}} {job_printer_state_message?
    -"{job_printer_state_message}":}
    -{job_preserved>0?{job_state>5? -
    :}:} -{job_state=4? -
    -
    :} -{job_state=3? -
    -
    :} -{job_state<7? -
    -
    -
    :} - 
    -} diff --git a/templates/ja/list-available-printers.tmpl b/templates/ja/list-available-printers.tmpl deleted file mode 100644 index f70b5aac0..000000000 --- a/templates/ja/list-available-printers.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -
    - -

    利用可能なプリンター

    - -{#device_uri=0?

    プリンターが見つかりません。

    -:
      {[device_uri] -
    • -{device_make_and_model} ({device_info})
    • -}
    } - -
    diff --git a/templates/ja/modify-class.tmpl b/templates/ja/modify-class.tmpl deleted file mode 100644 index a41010f3f..000000000 --- a/templates/ja/modify-class.tmpl +++ /dev/null @@ -1,34 +0,0 @@ -
    - -

    クラス {printer_name} の変更

    - -
    - - - - - - - - - - - - - - - - - - - - - -
    説明:
    場所:
    メンバー: - -
    - -
    -
    \ No newline at end of file diff --git a/templates/ja/modify-printer.tmpl b/templates/ja/modify-printer.tmpl deleted file mode 100644 index 009af6d6a..000000000 --- a/templates/ja/modify-printer.tmpl +++ /dev/null @@ -1,42 +0,0 @@ -
    - -

    {printer_name} の変更

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    説明:
    -("HP LaserJet with Duplexer" のように人が読みやすい説明)
    場所:
    -("Lab 1" のように人が読みやすい場所)
    接続:{device_uri}
    共有: -このプリンターを共有する
    - -
    -
    diff --git a/templates/ja/norestart.tmpl b/templates/ja/norestart.tmpl deleted file mode 100644 index 474043318..000000000 --- a/templates/ja/norestart.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    設定変更

    - -

    設定に何も変更が行われなかったため、サーバーは再起動されませんでした...

    - -
    diff --git a/templates/ja/option-boolean.tmpl b/templates/ja/option-boolean.tmpl deleted file mode 100644 index e832ee102..000000000 --- a/templates/ja/option-boolean.tmpl +++ /dev/null @@ -1,6 +0,0 @@ -
    {keytext}: -{[choices]{text}} -
    diff --git a/templates/ja/option-pickmany.tmpl b/templates/ja/option-pickmany.tmpl deleted file mode 100644 index 0da75e5d2..000000000 --- a/templates/ja/option-pickmany.tmpl +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/templates/ja/option-pickone.tmpl b/templates/ja/option-pickone.tmpl deleted file mode 100644 index 514e2abc2..000000000 --- a/templates/ja/option-pickone.tmpl +++ /dev/null @@ -1,18 +0,0 @@ - - -:} - diff --git a/templates/ja/option-trailer.tmpl b/templates/ja/option-trailer.tmpl deleted file mode 100644 index da2db1e09..000000000 --- a/templates/ja/option-trailer.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    {keytext}:
    {keytext}: -{iscustom=1?{[params] - - -}
    {paramtext}:{params=Units?:}
    -
    - -

    - - \ No newline at end of file diff --git a/templates/ja/pager.tmpl b/templates/ja/pager.tmpl deleted file mode 100644 index ebba3a004..000000000 --- a/templates/ja/pager.tmpl +++ /dev/null @@ -1,6 +0,0 @@ - - - - - -
    {PREV?
    : }
    {NEXT?
    : }
    diff --git a/templates/ja/printer-accept.tmpl b/templates/ja/printer-accept.tmpl deleted file mode 100644 index f13c66267..000000000 --- a/templates/ja/printer-accept.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    {is_class?クラス:プリンター} {printer_name} のジョブの受け付け

    - -

    {is_class?クラス:プリンター} {printer_name} -はジョブを受け付けるようになりました。

    - -
    diff --git a/templates/ja/printer-added.tmpl b/templates/ja/printer-added.tmpl deleted file mode 100644 index c07a832b8..000000000 --- a/templates/ja/printer-added.tmpl +++ /dev/null @@ -1,6 +0,0 @@ -
    - -

    プリンターの追加

    - -

    プリンター {printer_name} は正しく追加されました。 -

    diff --git a/templates/ja/printer-configured.tmpl b/templates/ja/printer-configured.tmpl deleted file mode 100644 index 10459431e..000000000 --- a/templates/ja/printer-configured.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    {printer_name} のデフォルトオプションの設定

    - -

    {OP=set-class-options?クラス :プリンター }{printer_name} -のデフォルトオプションは正しく設定されました。 - -

    diff --git a/templates/ja/printer-confirm.tmpl b/templates/ja/printer-confirm.tmpl deleted file mode 100644 index 6fdb52cab..000000000 --- a/templates/ja/printer-confirm.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    プリンター {printer_name} の削除

    - -

    警告: 本当にプリンター {printer_name} を削除してよいですか?

    - -

    - -
    diff --git a/templates/ja/printer-default.tmpl b/templates/ja/printer-default.tmpl deleted file mode 100644 index fccfc0de4..000000000 --- a/templates/ja/printer-default.tmpl +++ /dev/null @@ -1,12 +0,0 @@ -
    - -

    {is_class?クラス:プリンター} {printer_name} をデフォルトに設定

    - -

    {is_class?クラス:プリンター} {printer_name} -をサーバーのデフォルトプリンターに設定しました。

    - -
    注意: lpoptions コマンドで設定されたユーザーのデフォルトは、 -このサーバーのデフォルト設定を上書きします。
    - -
    diff --git a/templates/ja/printer-deleted.tmpl b/templates/ja/printer-deleted.tmpl deleted file mode 100644 index 2f2759b20..000000000 --- a/templates/ja/printer-deleted.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    プリンター {printer_name} の削除

    - -

    プリンター {printer_name} は正しく削除されました。 - -

    diff --git a/templates/ja/printer-jobs-header.tmpl b/templates/ja/printer-jobs-header.tmpl deleted file mode 100644 index 1d5d887cd..000000000 --- a/templates/ja/printer-jobs-header.tmpl +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    ジョブ

    -
    diff --git a/templates/ja/printer-modified.tmpl b/templates/ja/printer-modified.tmpl deleted file mode 100644 index a22e7da35..000000000 --- a/templates/ja/printer-modified.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    プリンター {printer_name} の変更

    - -

    プリンター {printer_name} -は正しく変更されました。 - -

    \ No newline at end of file diff --git a/templates/ja/printer-purge.tmpl b/templates/ja/printer-purge.tmpl deleted file mode 100644 index 4ba6cbcd6..000000000 --- a/templates/ja/printer-purge.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    {is_class?クラス:プリンター} {printer_name} のジョブの全削除

    - -

    {is_class?クラス:プリンター} {printer_name} -からすべてのジョブを削除しました。

    - -
    \ No newline at end of file diff --git a/templates/ja/printer-reject.tmpl b/templates/ja/printer-reject.tmpl deleted file mode 100644 index ba7cc524c..000000000 --- a/templates/ja/printer-reject.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    {is_class?クラス:プリンター} {printer_name} のジョブの拒否

    - -

    {is_class?クラス:プリンター} {printer_name} -はジョブを受け付けなくなりました。

    - -
    diff --git a/templates/ja/printer-start.tmpl b/templates/ja/printer-start.tmpl deleted file mode 100644 index 138829d0a..000000000 --- a/templates/ja/printer-start.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    {is_class?クラス:プリンター} {printer_name} の再開

    - -

    {is_class?クラス:プリンター} {printer_name} -は再開しました。

    - -
    \ No newline at end of file diff --git a/templates/ja/printer-stop.tmpl b/templates/ja/printer-stop.tmpl deleted file mode 100644 index cc74c1b56..000000000 --- a/templates/ja/printer-stop.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    {is_class?クラス:プリンター} {printer_name} の停止

    - -

    {is_class?クラス:プリンター} {printer_name} -は停止しました。

    - -
    \ No newline at end of file diff --git a/templates/ja/printer.tmpl b/templates/ja/printer.tmpl deleted file mode 100644 index 8d7655052..000000000 --- a/templates/ja/printer.tmpl +++ /dev/null @@ -1,47 +0,0 @@ -
    - -

    {printer_name} -({printer_state=3?待機中:{printer_state=4?処理中:一時停止中}}, -{printer_is_accepting_jobs=0?ジョブを拒否中:ジョブを受け付け中}, -{server_is_sharing_printers=0?非:{printer_is_shared=0?非:}} 共有{default_name={printer_name}?, サーバーのデフォルト:})

    - -
    - - - -
    - -
    - - - - -
    - - - - - - -
    説明:{printer_info}
    場所:{printer_location}
    プリンタードライバー:{printer_make_and_model} ({color_supported=1?カラー:白黒}{sides_supported?, 両面可:})
    -
    接続:{device_uri}
    デフォルト設定:バナー={job_sheets_default} -用紙サイズ={media_default?{media_default}:unknown} -{sides_default?両面指定={sides_default}:}
    - -
    \ No newline at end of file diff --git a/templates/ja/printers-header.tmpl b/templates/ja/printers-header.tmpl deleted file mode 100644 index 1342eff42..000000000 --- a/templates/ja/printers-header.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    {total=0?プリンターはありません:{total} 台のプリンターのうち {#printer_name} 台を表示中}。

    diff --git a/templates/ja/printers.tmpl b/templates/ja/printers.tmpl deleted file mode 100644 index a8caaffd2..000000000 --- a/templates/ja/printers.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -{#printer_name=0?: - - - - - -{[printer_name] - -} - -
    {ORDER=dec? キュー名 : キュー名 }説明場所メーカーとモデル状態
    {printer_name}{printer_info}{printer_location}{printer_make_and_model}{printer_state=3?待機中:{printer_state=4?処理中:停止}}{printer_state_message? - "{printer_state_message}":}
    } diff --git a/templates/ja/restart.tmpl b/templates/ja/restart.tmpl deleted file mode 100644 index d8504efbc..000000000 --- a/templates/ja/restart.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    設定の変更

    - -

    サーバーが再起動する間しばらくお待ちください...

    - -
    diff --git a/templates/ja/samba-export.tmpl b/templates/ja/samba-export.tmpl deleted file mode 100644 index b1d5050a4..000000000 --- a/templates/ja/samba-export.tmpl +++ /dev/null @@ -1,55 +0,0 @@ - - -
    - - - -

    プリンターを Samba にエクスポート

    - -{error?

    プリンターを Samba にエクスポートできません\:

    -
    {error}
    -

    より詳細な情報については error_log ファイルを参照してください。

    : -

    このページは、Windows クライアントがデスクトップ上の -マイネットワーク や ネットワークの場所 -アイコン経由でアクセスできるよう、プリンターの Samba -へのエクスポートを許可します。cupsaddsmb(8) man ページに書かれているように、 -事前に Windows PostScript ドライバーをインストールしておく必要があります。

    } - - - - - - - - - - - - - - - - - - -
    プリンター: -
    - すべてのプリンターをエクスポート -
    Samba のユーザー名: (必須)
    Samba のパスワード: (必須)
    - -
    diff --git a/templates/ja/samba-exported.tmpl b/templates/ja/samba-exported.tmpl deleted file mode 100644 index f67ddd928..000000000 --- a/templates/ja/samba-exported.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    プリンターは Samba に正しくエクスポートされました。

    diff --git a/templates/ja/search.tmpl b/templates/ja/search.tmpl deleted file mode 100644 index 3e819952c..000000000 --- a/templates/ja/search.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    -{WHICH_JOBS?:} -{ORDER?:} - -

    -{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?クラス:{SECTION=jobs?ジョブ:プリンター}}} 内を検索: -

    - -
    diff --git a/templates/ja/set-printer-options-header.tmpl b/templates/ja/set-printer-options-header.tmpl deleted file mode 100644 index cd8df9161..000000000 --- a/templates/ja/set-printer-options-header.tmpl +++ /dev/null @@ -1,26 +0,0 @@ -
    - -

    {printer_name} のデフォルトオプションの変更

    - -
    - - - -{HAVE_AUTOCONFIGURE?:} - - - -

    {[group_id] -{group}     }

    - -
    diff --git a/templates/ja/set-printer-options-trailer.tmpl b/templates/ja/set-printer-options-trailer.tmpl deleted file mode 100644 index 11adc7012..000000000 --- a/templates/ja/set-printer-options-trailer.tmpl +++ /dev/null @@ -1,16 +0,0 @@ -
    - - -
    - -
    diff --git a/templates/ja/subscription-added.tmpl b/templates/ja/subscription-added.tmpl deleted file mode 100644 index e4ab98cf9..000000000 --- a/templates/ja/subscription-added.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    {subscription_name} の購読は正しく追加されました。

    - -
    diff --git a/templates/ja/subscription-canceled.tmpl b/templates/ja/subscription-canceled.tmpl deleted file mode 100644 index 8787dad2b..000000000 --- a/templates/ja/subscription-canceled.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    購読 #{notify_subscription_id} はキャンセルされました。

    - -
    diff --git a/templates/ja/test-page.tmpl b/templates/ja/test-page.tmpl deleted file mode 100644 index 6cdaa8751..000000000 --- a/templates/ja/test-page.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    {printer_name} のテストページ印刷

    - -

    テストページを送信しました; ジョブ ID は -{printer_name}-{job_id} です。

    - -
    diff --git a/templates/ja/trailer.tmpl b/templates/ja/trailer.tmpl deleted file mode 100644 index 2e99eb75b..000000000 --- a/templates/ja/trailer.tmpl +++ /dev/null @@ -1,8 +0,0 @@ - -  -CUPS and the CUPS logo are trademarks of -Apple Inc. CUPS is copyright 2007-2014 Apple -Inc. All rights reserved. - - - diff --git a/templates/ja/users.tmpl b/templates/ja/users.tmpl deleted file mode 100644 index b998c6b2b..000000000 --- a/templates/ja/users.tmpl +++ /dev/null @@ -1,30 +0,0 @@ -
    - -
    - - - -{IS_CLASS?:} - -

    {printer_name} に許可するユーザー

    - - - - - - - - - - -
    ユーザー: - -
    -これらのユーザーの印刷を許可 -これらのユーザーの印刷を禁止 -
    - -
    - -
    -
    diff --git a/templates/job-cancel.tmpl b/templates/job-cancel.tmpl index 3e8fd4dad..0b0106ee9 100644 --- a/templates/job-cancel.tmpl +++ b/templates/job-cancel.tmpl @@ -1,7 +1,3 @@ -
    -

    Cancel Job {job_id}

    Job {job_id} has been canceled. - -

    diff --git a/templates/job-hold.tmpl b/templates/job-hold.tmpl index 58ce97fc9..3b5cd6a65 100644 --- a/templates/job-hold.tmpl +++ b/templates/job-hold.tmpl @@ -1,7 +1,3 @@ -
    -

    Hold Job {job_id}

    Job {job_id} has been held from printing. - -

    diff --git a/templates/job-move.tmpl b/templates/job-move.tmpl index 6ef0ff12e..c2f70469c 100644 --- a/templates/job-move.tmpl +++ b/templates/job-move.tmpl @@ -1,5 +1,3 @@ -
    -
    @@ -23,5 +21,3 @@
    - -
    diff --git a/templates/job-moved.tmpl b/templates/job-moved.tmpl index c4db09696..4893e24ac 100644 --- a/templates/job-moved.tmpl +++ b/templates/job-moved.tmpl @@ -1,8 +1,4 @@ -
    -

    {job_id?Move Job {job_id}:Move All Jobs}

    {job_id?Job {job_id}:All jobs} moved to {job_printer_name}.

    - -
    diff --git a/templates/job-release.tmpl b/templates/job-release.tmpl index 8eb9a9667..fe9379303 100644 --- a/templates/job-release.tmpl +++ b/templates/job-release.tmpl @@ -1,7 +1,3 @@ -
    -

    Release Job {job_id}

    Job {job_id} has been released for printing. - -

    diff --git a/templates/job-restart.tmpl b/templates/job-restart.tmpl index b91ced926..b5dfd958e 100644 --- a/templates/job-restart.tmpl +++ b/templates/job-restart.tmpl @@ -1,7 +1,3 @@ -
    -

    Reprint Job {job_id}

    Job {job_id} has been restarted. - -

    diff --git a/templates/jobs-header.tmpl b/templates/jobs-header.tmpl index e7547ba7b..a8a365b2d 100644 --- a/templates/jobs-header.tmpl +++ b/templates/jobs-header.tmpl @@ -1,5 +1,5 @@ -
    {?which_jobs=?:
    } +{?which_jobs=?:
    } {?which_jobs=completed?:
    } -{?which_jobs=all?:
    }
    +{?which_jobs=all?:
    }

    {total=0?No jobs:Showing {#job_id} of {total} {?which_jobs=?active:{which_jobs=all?:completed}} job{total=1?:s}}.

    diff --git a/templates/list-available-printers.tmpl b/templates/list-available-printers.tmpl index a594439ee..9fe7b12dd 100644 --- a/templates/list-available-printers.tmpl +++ b/templates/list-available-printers.tmpl @@ -1,5 +1,3 @@ -
    -

    Available Printers

    {#device_uri=0?

    No printers found.

    @@ -7,5 +5,3 @@
  • {device_make_and_model} ({device_info})
  • }} - -
    diff --git a/templates/modify-class.tmpl b/templates/modify-class.tmpl index 31f7b9ce3..1aa4fe631 100644 --- a/templates/modify-class.tmpl +++ b/templates/modify-class.tmpl @@ -1,5 +1,3 @@ -
    -

    Modify Class {printer_name}

    @@ -31,4 +29,3 @@
    -
    \ No newline at end of file diff --git a/templates/modify-printer.tmpl b/templates/modify-printer.tmpl index bdf3df604..72b4bc5e2 100644 --- a/templates/modify-printer.tmpl +++ b/templates/modify-printer.tmpl @@ -1,5 +1,3 @@ -
    -

    Modify {printer_name}

    @@ -39,4 +37,3 @@ Share This Printer
    -
    diff --git a/templates/norestart.tmpl b/templates/norestart.tmpl index 6b3120337..70bf3d33e 100644 --- a/templates/norestart.tmpl +++ b/templates/norestart.tmpl @@ -1,8 +1,4 @@ -
    -

    Change Settings

    The server was not restarted because no changes were made to the configuration...

    - -
    diff --git a/templates/printer-accept.tmpl b/templates/printer-accept.tmpl index 3e987ce64..db5d8dad5 100644 --- a/templates/printer-accept.tmpl +++ b/templates/printer-accept.tmpl @@ -1,9 +1,5 @@ -
    -

    Accept Jobs On {is_class?Class:Printer} {printer_name}

    {is_class?Class:Printer} {printer_name} is now accepting jobs.

    - -
    diff --git a/templates/printer-added.tmpl b/templates/printer-added.tmpl index 9a6e798e9..0ccf6d3ee 100644 --- a/templates/printer-added.tmpl +++ b/templates/printer-added.tmpl @@ -1,8 +1,4 @@ -
    -

    Add Printer

    Printer {printer_name} has been added successfully. - -

    diff --git a/templates/printer-cancel-jobs.tmpl b/templates/printer-cancel-jobs.tmpl new file mode 100644 index 000000000..4376646a4 --- /dev/null +++ b/templates/printer-cancel-jobs.tmpl @@ -0,0 +1,5 @@ +

    Cancel Jobs On {is_class?Class:Printer} {printer_name}

    + +

    All jobs on {is_class?class:printer} {printer_name} +have been canceled.

    diff --git a/templates/printer-configured.tmpl b/templates/printer-configured.tmpl index 6f8104e23..7bce3f908 100644 --- a/templates/printer-configured.tmpl +++ b/templates/printer-configured.tmpl @@ -1,8 +1,4 @@ -
    -

    Set Default Options for {printer_name}

    {OP=set-class-options?Class :Printer }{printer_name} default options have been set successfully. - -

    diff --git a/templates/printer-confirm.tmpl b/templates/printer-confirm.tmpl index fce9e3494..c1b2b1706 100644 --- a/templates/printer-confirm.tmpl +++ b/templates/printer-confirm.tmpl @@ -1,10 +1,6 @@ -
    -

    Delete Printer {printer_name}

    Warning: Are you sure you want to delete printer {printer_name}?

    - -
    diff --git a/templates/printer-default.tmpl b/templates/printer-default.tmpl index 72a7b5ea8..af21dcacd 100644 --- a/templates/printer-default.tmpl +++ b/templates/printer-default.tmpl @@ -1,5 +1,3 @@ -
    -

    Set {is_class?Class:Printer} {printer_name} As Default

    {is_class?Class:Printer}

    Note: Any user default that has been set via the lpoptions command will override this default setting.
    - -
    diff --git a/templates/printer-deleted.tmpl b/templates/printer-deleted.tmpl index d8a31ae61..ea462cee4 100644 --- a/templates/printer-deleted.tmpl +++ b/templates/printer-deleted.tmpl @@ -1,7 +1,3 @@ -
    -

    Delete Printer {printer_name}

    Printer {printer_name} has been deleted successfully. - -

    diff --git a/templates/printer-jobs-header.tmpl b/templates/printer-jobs-header.tmpl index ba46f1026..61e5151d2 100644 --- a/templates/printer-jobs-header.tmpl +++ b/templates/printer-jobs-header.tmpl @@ -1,3 +1 @@ -

    Jobs

    -
    diff --git a/templates/printer-modified.tmpl b/templates/printer-modified.tmpl index b61e8e34a..1193a48d8 100644 --- a/templates/printer-modified.tmpl +++ b/templates/printer-modified.tmpl @@ -1,8 +1,4 @@ -
    \ No newline at end of file diff --git a/templates/printer-purge.tmpl b/templates/printer-purge.tmpl deleted file mode 100644 index 8cf7c1461..000000000 --- a/templates/printer-purge.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Purge Jobs On {is_class?Class:Printer} {printer_name}

    - -

    {is_class?Class:Printer} {printer_name} -has been purged of all jobs.

    - -
    \ No newline at end of file diff --git a/templates/printer-reject.tmpl b/templates/printer-reject.tmpl index 5f1c79195..823c7e507 100644 --- a/templates/printer-reject.tmpl +++ b/templates/printer-reject.tmpl @@ -1,9 +1,5 @@ -
    -

    Reject Jobs On {is_class?Class:Printer} {printer_name}

    {is_class?Class:Printer} {printer_name} is no longer accepting jobs.

    - -
    diff --git a/templates/printer-start.tmpl b/templates/printer-start.tmpl index 3eaed13d1..76d44ed81 100644 --- a/templates/printer-start.tmpl +++ b/templates/printer-start.tmpl @@ -1,9 +1,5 @@ -
    -

    Resume {is_class?Class:Printer} {printer_name}

    {is_class?Class:Printer} {printer_name} has been resumed.

    - -
    \ No newline at end of file diff --git a/templates/printer-stop.tmpl b/templates/printer-stop.tmpl index b74e87135..8c264b21e 100644 --- a/templates/printer-stop.tmpl +++ b/templates/printer-stop.tmpl @@ -1,9 +1,5 @@ -
    -

    Pause {is_class?Class:Printer} {printer_name}

    {is_class?Class:Printer} {printer_name} has been paused.

    - -
    \ No newline at end of file diff --git a/templates/printer.tmpl b/templates/printer.tmpl index 6e814b03d..ee8d77460 100644 --- a/templates/printer.tmpl +++ b/templates/printer.tmpl @@ -1,5 +1,3 @@ -
    -

    {printer_name} ({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?:} {printer_is_accepting_jobs=0?:} - + @@ -43,5 +41,3 @@ media={media_default?{media_default}:unknown} {sides_default?sides={sides_default}:} - -

    \ 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 index 4e777b026..000000000 --- a/templates/pt_BR/add-class.tmpl +++ /dev/null @@ -1,40 +0,0 @@ -
    - -

    Adicionar classe

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Nome:
    -(Pode conter qualquer caracter imprimível, exceto "/", "#", e espaço em branco)
    Descrição:
    -(Descrição legível para humanos, tal como "HP LaserJet com Duplexador")
    Localização:
    -(Localização legível para humanos, tal como "Laboratório 1")
    Membros: - -
    - -
    -
    \ 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 index acd10ba0e..000000000 --- a/templates/pt_BR/add-printer.tmpl +++ /dev/null @@ -1,47 +0,0 @@ -
    - -

    Adicionar impressora

    - -
    - - - - - - -{?current_make!?:} -{?current_make_and_model!?:} - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Nome:
    -(Pode conter qualquer caracter imprimível, exceto "/", "#" e espaço em branco)
    Descrição:
    -(Descrição legível para humanos, tal como "HP LaserJet com Duplexador")
    Localização:
    -(Localização legível para humanos, tal como "Laboratório 1")
    Conexão:{device_uri}
    Compartilhamento: -Compartilhar essa Impressora
    - -
    -
    \ 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 index ee86b2480..000000000 --- a/templates/pt_BR/add-rss-subscription.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    - - - -

    Adicionar inscrição RSS

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Nome:
    -(Pode conter qualquer caracter imprimível, exceto espaço em branco, "/", "?", e "#")
    Fila:
    Eventos:Trabalho criado
    -Trabalho concluído
    -Trabalho parado
    -Opções do Trabalho alteradas
        Fila parada
    -Fila adicionada
    -Fila modificada
    -Fila apagada
        Servidor iniciado
    -Servidor parado
    -Servidor reiniciado
    -Auditoria de segurança do servidor
    Máximo de eventos no Feed:
    - -
    diff --git a/templates/pt_BR/admin.tmpl b/templates/pt_BR/admin.tmpl deleted file mode 100644 index 5427f4851..000000000 --- a/templates/pt_BR/admin.tmpl +++ /dev/null @@ -1,102 +0,0 @@ - - -
    - -

    Impressoras

    - -

    -

    -
    -
    -{have_samba?
    :} -

    - -

    Classes

    - -

    -

    -
    -

    - -

    Trabalhos

    - -

    -

    -

    - -
              - -

    Servidor

    - -

    -

    -
    -
    -
    -

    - -{SETTINGS_ERROR?

    {SETTINGS_MESSAGE}

    -
    {SETTINGS_ERROR}
    : - -
    - - -{ADVANCEDSETTINGS?

    Configurações do servidor\:

    - -

    Avançadas
    - - - Compartilhar impressoras conectadas a este sistema
    -        Máximo de clientes\: -
    -         Permitir impressão a partir da Internet
    -         Anunciar interface web
    - Permitir administração remota
    -{have_gssapi? Usar autenticação via Kerberos (FAQ)
    :} - Permitir aos usuários cancelar qualquer trabalho (não apenas os seus próprios)
    - Preservar o histórico de trabalhos
    -        Máximo de trabalhos (0 para sem limite)\: -
    -        Reter metadados\: -
    -        Reter documentos\: -
    - Salvar informação de depuração para solução de problemas
    -        Tamanho máximo do arquivo de log\: -

    - -:

    Configurações do servidor:

    - -

    Avançadas
    - - Compartilhar impressoras conectadas a este sistema
    -         Permitir impressão a partir da Internet
    - Permitir administração remota
    -{have_gssapi? Usar autenticação via Kerberos (FAQ)
    :} - Permitir aos usuários cancelar qualquer trabalho (não apenas seus próprios)
    - Salvar informações de depuração para solução de problemas

    - -} -

    - -
    } - -
    - -
    - -

    Inscrições RSS

    - -

    -

    -

    - -
    - -{notify_subscription_id? - -{[notify_subscription_id] -} - -
    NomeEventosNome da fila
    {notify_recipient_name}
    -
     
    {notify_events} {notify_printer_name?{notify_printer_name}:Todas as filas}
    :} diff --git a/templates/pt_BR/choose-device.tmpl b/templates/pt_BR/choose-device.tmpl deleted file mode 100644 index 78c8727f9..000000000 --- a/templates/pt_BR/choose-device.tmpl +++ /dev/null @@ -1,53 +0,0 @@ -
    - -

    {op=modify-printer?Modificar {printer_name}:Adicionar impressora}

    - -{CUPS_GET_DEVICES_DONE?
    - - -{printer_name?:} - - -{op=add-printer?: - - -} - - - - - - - - - - - - - - - - - -
    Conexão atual\: -{current_device_uri}
    Impressoras locais\: -{[device_uri]{device_class!network? -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -:}} -
    Impressoras de rede descobertas\: -{[device_uri]{device_class=network?{device_uri~[a-z]+://? -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -:}:}} -
    Outras impressoras de rede\: -{[device_uri]{device_class=network?{device_uri~[a-z]+://?: -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -}:}} -
    - -
    :

    Procurando impressoras...

    } - -
    diff --git a/templates/pt_BR/choose-make.tmpl b/templates/pt_BR/choose-make.tmpl deleted file mode 100644 index abef30d8d..000000000 --- a/templates/pt_BR/choose-make.tmpl +++ /dev/null @@ -1,64 +0,0 @@ -
    - -

    {op=modify-printer?Modificar {printer_name}:Adicionar impressora}

    - -
    - - -{printer_name?:} - - - - - - -{op=modify-printer?: - - -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Nome:{printer_name}
    Descrição:{printer_info}
    Localização:{printer_location}
    Conexão:{device_uri}
    Compartilhamento: -{?printer_is_shared=?Não compartilhar:{?printer_is_shared=0?Não compartilhar:Compartilhar}} esta impressora
    Fabricante: - -
     
    Ou forneça um arquivo PPD:
    - -
    -
    \ 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 index 12bd92e3d..000000000 --- a/templates/pt_BR/choose-model.tmpl +++ /dev/null @@ -1,60 +0,0 @@ -
    - -

    {op=modify-printer?Modificar {printer_name}:Adicionar impressora}

    - -
    - - -{printer_name?:} - - - - - -{op=modify-printer?: - - -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Nome:{printer_name}
    Descrição:{printer_info}
    Localização:{printer_location}
    Conexão:{device_uri}
    Compartilhamento: -{?printer_is_shared=?Não compartilhar:{?printer_is_shared=0?Não compartilhar:Compartilhar}} esta impressora
    Fabricante:{PPD_MAKE}
    Modelo: - -
    Ou forneça um arquivo PPD:
    - -
    -
    \ 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 index 517d4e73c..000000000 --- a/templates/pt_BR/choose-serial.tmpl +++ /dev/null @@ -1,52 +0,0 @@ -
    - -

    {op=modify-printer?Modificar {printer_name}:Adicionar impressora}

    - -
    - - -{printer_name?:} - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Conexão:{device_uri}
    Taxa de dados (Baud Rate):
    Paridade:
    Bits de Dados:
    Controle de Fluxo:
    - -
    -
    \ 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 index 1fe6a4e47..000000000 --- a/templates/pt_BR/choose-uri.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    - -

    {op=modify-printer?Modify {printer_name}:Add Printer}

    - -
    - - -{printer_name?:} - - - - - - - - - - - - - - - -
    Conexão:
    Exemplos: -
    -    http://hostname:631/ipp/
    -    http://hostname:631/ipp/port1
    -
    -    ipp://hostname/ipp/
    -    ipp://hostname/ipp/port1
    -
    -    lpd://hostname/queue
    -
    -    socket://hostname
    -    socket://hostname:9100
    -
    - -

    Veja "Network -Printers" para a URI correta a ser usada para sua impressora.

    - -
    - -
    -
    \ 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 index e556d06ea..000000000 --- a/templates/pt_BR/class-added.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Adicionar classe

    - -

    Classe {printer_name} foi adicionada com sucesso. - -

    diff --git a/templates/pt_BR/class-confirm.tmpl b/templates/pt_BR/class-confirm.tmpl deleted file mode 100644 index 454d18df4..000000000 --- a/templates/pt_BR/class-confirm.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Excluir classe {printer_name}

    - -

    Aviso: Você tem certeza que quer excluir a classe {printer_name}?

    - -

    - -
    diff --git a/templates/pt_BR/class-deleted.tmpl b/templates/pt_BR/class-deleted.tmpl deleted file mode 100644 index eea279f98..000000000 --- a/templates/pt_BR/class-deleted.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Excluir classe {printer_name}

    - -

    A classe {printer_name} foi excluída com sucesso. - -

    \ 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 index 05488e2c9..000000000 --- a/templates/pt_BR/class-jobs-header.tmpl +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    Trabalhos

    -
    diff --git a/templates/pt_BR/class-modified.tmpl b/templates/pt_BR/class-modified.tmpl deleted file mode 100644 index 2c64e6ccc..000000000 --- a/templates/pt_BR/class-modified.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Modificar classe {printer_name}

    - -

    A classe {printer_name} foi modificada com sucesso. - -

    \ No newline at end of file diff --git a/templates/pt_BR/class.tmpl b/templates/pt_BR/class.tmpl deleted file mode 100644 index 2b238337c..000000000 --- a/templates/pt_BR/class.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    -

    {printer_name} -({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:})

    - -
    - - - -
    - -
    - - - - - -
    - - - - - - -
    Descrição:{printer_info}
    Localização:{printer_location}
    Membros:{?member_uris=?None:{member_uris}}
    Padrões:job-sheets={job_sheets_default} -media={media_default?{media_default}:desconhecido} -{sides_default?sides={sides_default}:}
    - -
    diff --git a/templates/pt_BR/classes-header.tmpl b/templates/pt_BR/classes-header.tmpl deleted file mode 100644 index acac395fc..000000000 --- a/templates/pt_BR/classes-header.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    {total=0?Nenhuma classe:Mostrando {#printer_name} de {total} classe{total=1?:s}}.

    diff --git a/templates/pt_BR/classes.tmpl b/templates/pt_BR/classes.tmpl deleted file mode 100644 index 18717dc3d..000000000 --- a/templates/pt_BR/classes.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -{#printer_name=0?: - - - - - -{[printer_name] - -} - -
    {ORDER=dec? Nome da fila : Nome da fila }DescriçãoLocalizaçãoMembrosEstado
    {printer_name}{printer_info}{printer_location}{?member_uris=?Nenhum:{member_uris}}{printer_state=3?Inativa:{printer_state=4?Processando:Pausada}}{printer_state_message? - "{printer_state_message}":}
    } diff --git a/templates/pt_BR/command.tmpl b/templates/pt_BR/command.tmpl deleted file mode 100644 index 7800ac7a1..000000000 --- a/templates/pt_BR/command.tmpl +++ /dev/null @@ -1,12 +0,0 @@ -
    - -

    {title} em {printer_name}

    - -

    {job_state>5?: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?, -"{job_printer_state_message}":}}

    - -
    diff --git a/templates/pt_BR/edit-config.tmpl b/templates/pt_BR/edit-config.tmpl deleted file mode 100644 index 026a9e52d..000000000 --- a/templates/pt_BR/edit-config.tmpl +++ /dev/null @@ -1,24 +0,0 @@ - - -
    - -

    Editar arquivo de configuração

    - -
    - - - - - -

    -

    - -
    - -
    diff --git a/templates/pt_BR/error-op.tmpl b/templates/pt_BR/error-op.tmpl deleted file mode 100644 index d694519f7..000000000 --- a/templates/pt_BR/error-op.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Erro {?title} {?printer_name}

    - -

    Erro:

    - -
    Operação desconhecida "{op}"!
    - -
    diff --git a/templates/pt_BR/error.tmpl b/templates/pt_BR/error.tmpl deleted file mode 100644 index 1bfcc8f6a..000000000 --- a/templates/pt_BR/error.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Erro {?title} {?printer_name}

    - -

    {?message?{message}:Erro}:

    - -
    {error}
    - -
    diff --git a/templates/pt_BR/header.tmpl.in b/templates/pt_BR/header.tmpl.in deleted file mode 100644 index f2bafb31c..000000000 --- a/templates/pt_BR/header.tmpl.in +++ /dev/null @@ -1,38 +0,0 @@ - - - - - {title} - CUPS @CUPS_VERSION@@CUPS_REVISION@ - - - {refresh_page?:} - - - - - - - - diff --git a/templates/pt_BR/option-conflict.tmpl b/templates/pt_BR/option-conflict.tmpl deleted file mode 100644 index 2874c2de1..000000000 --- a/templates/pt_BR/option-conflict.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -

    Erro: As seguintes opções estão conflitando:

    - - - -

    Por favor, altere uma ou mais opções para resolver os conflitos.

    diff --git a/templates/pt_BR/option-header.tmpl b/templates/pt_BR/option-header.tmpl deleted file mode 100644 index 464726a50..000000000 --- a/templates/pt_BR/option-header.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    {group}

    - -
    - - - - - - - - - - - - -
      Início    Administração    Classes    Ajuda online    Trabalhos    Impressoras  
    -
    - diff --git a/templates/pt_BR/help-header.tmpl b/templates/pt_BR/help-header.tmpl deleted file mode 100644 index 080b842fe..000000000 --- a/templates/pt_BR/help-header.tmpl +++ /dev/null @@ -1,51 +0,0 @@ -
    -
    -{TOPIC?:} - -

    Pesquisar em -{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:todos os documentos}}: - -

    - -
    - - - - -{QUERY?

    Pesquisar resultados em {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:Todos os documentos}}\:

    -{QTEXT?:} -:

    Nenhum resultado encontrado.

    } -
    :} -{HELPTITLE?

    {HELPTITLE}

    -
    : - -

    Ajuda online

    - -

    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.

    - -

    Se você é novo no CUPS, leia a página "Visão geral do CUPS". Usuários veteranos -devem ler a página "O que Há de Novo no CUPS -1.6".

    - -

    A Página inicial do CUPS 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.

    } diff --git a/templates/pt_BR/job-cancel.tmpl b/templates/pt_BR/job-cancel.tmpl deleted file mode 100644 index c93b43156..000000000 --- a/templates/pt_BR/job-cancel.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Cancelar trabalho {job_id}

    - -

    Trabalho {job_id} foi cancelado. - -

    diff --git a/templates/pt_BR/job-hold.tmpl b/templates/pt_BR/job-hold.tmpl deleted file mode 100644 index 37aa6259c..000000000 --- a/templates/pt_BR/job-hold.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Reter trabalho {job_id}

    - -

    Trabalho {job_id} foi retido para não ser impresso. - -

    diff --git a/templates/pt_BR/job-move.tmpl b/templates/pt_BR/job-move.tmpl deleted file mode 100644 index 74b3a8bf8..000000000 --- a/templates/pt_BR/job-move.tmpl +++ /dev/null @@ -1,27 +0,0 @@ -
    - -
    - - -{job_id?:} - -

    {job_id?Mover trabalho {job_id}:Mover todos trabalhos}

    - - - - - - - - - - -
    Novo destino: - -
    - -
    - -
    diff --git a/templates/pt_BR/job-moved.tmpl b/templates/pt_BR/job-moved.tmpl deleted file mode 100644 index 66f7096ff..000000000 --- a/templates/pt_BR/job-moved.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    {job_id?Mover trabalho {job_id}:Mover trabalhos}

    - -

    {job_id?Trabalho {job_id} for movido:Todos trabalhos foram movidos} para -{job_printer_name}.

    - -
    diff --git a/templates/pt_BR/job-release.tmpl b/templates/pt_BR/job-release.tmpl deleted file mode 100644 index f44ab3644..000000000 --- a/templates/pt_BR/job-release.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Liberar trabalho {job_id}

    - -

    Trabalho {job_id} foi liberado para impressão. - -

    diff --git a/templates/pt_BR/job-restart.tmpl b/templates/pt_BR/job-restart.tmpl deleted file mode 100644 index cf0807543..000000000 --- a/templates/pt_BR/job-restart.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Reimprimir trabalho {job_id}

    - -

    Trabalho {job_id} foi reiniciado. - -

    diff --git a/templates/pt_BR/jobs-header.tmpl b/templates/pt_BR/jobs-header.tmpl deleted file mode 100644 index c37736f9e..000000000 --- a/templates/pt_BR/jobs-header.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    {?which_jobs=?:
    } -{?which_jobs=completed?:
    } -{?which_jobs=all?:
    }
    - -

    {total=0?Nenhum trabalho:Mostrando {#job_id} de {total} trabalho{total=1?:s}} {?which_jobs=?ativos:{which_jobs=all?:completos}} .

    diff --git a/templates/pt_BR/jobs.tmpl b/templates/pt_BR/jobs.tmpl deleted file mode 100644 index 3ad21081b..000000000 --- a/templates/pt_BR/jobs.tmpl +++ /dev/null @@ -1,36 +0,0 @@ -{#job_id=0?: - - - - - -{[job_id] - - - - - - - - - -} - -
    {ORDER=dec? ID : ID }NomeUsuárioTamanhoPáginasEstadoControle
    {job_printer_name}-{job_id}{?phone? ({phone}):} {?job_name=?Desconhecido:{job_name}} {?job_originating_user_name=?Oculto:{job_originating_user_name}} {job_k_octets}k {job_media_sheets_completed=0?Desconhecido:{?job_media_sheets_completed}} {job_state=3?pendente desde
    {time_at_creation}:{job_state=4?retido desde
    {time_at_creation}: -{job_state=5?processando desde
    {time_at_processing}:{job_state=6?parado: -{job_state=7?cancelado em
    {time_at_completed}:{job_state=8?abortado:completou em
    {time_at_completed}}}}}}} {job_printer_state_message?
    -"{job_printer_state_message}":}
    -{job_preserved>0?{job_state>5? -
    :}:} -{job_state=4? -
    -
    :} -{job_state=3? -
    -
    :} -{job_state<7? -
    -
    -
    :} - 
    -} diff --git a/templates/pt_BR/list-available-printers.tmpl b/templates/pt_BR/list-available-printers.tmpl deleted file mode 100644 index bdfe90371..000000000 --- a/templates/pt_BR/list-available-printers.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -
    - -

    Impressoras disponíveis

    - -{#device_uri=0?

    Nenhuma impressora encontrada.

    -:
      {[device_uri] -
    • -{device_make_and_model} ({device_info})
    • -}
    } - -
    diff --git a/templates/pt_BR/modify-class.tmpl b/templates/pt_BR/modify-class.tmpl deleted file mode 100644 index 606dcfe8b..000000000 --- a/templates/pt_BR/modify-class.tmpl +++ /dev/null @@ -1,34 +0,0 @@ -
    - -

    Modificar classe {printer_name}

    - -
    - - - - - - - - - - - - - - - - - - - - - -
    Descrição:
    Localização:
    Membros: - -
    - -
    -
    \ 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 index a43313ab1..000000000 --- a/templates/pt_BR/modify-printer.tmpl +++ /dev/null @@ -1,42 +0,0 @@ -
    - -

    Modificar {printer_name}

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Descrição:
    -(Descrição legível para humanos, tal como "HP LaserJet com Duplexador")
    Localização:
    -(Localização legível para humanos, tal como "Laboratório 1")
    Conexão:{device_uri}
    Compartilhamento: -Compartilhar esta impressora
    - -
    -
    diff --git a/templates/pt_BR/norestart.tmpl b/templates/pt_BR/norestart.tmpl deleted file mode 100644 index e0708cc72..000000000 --- a/templates/pt_BR/norestart.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Alterar configurações

    - -

    O servidor não foi reiniciado porque nenhuma alteração foi feita na configuração...

    - -
    diff --git a/templates/pt_BR/option-boolean.tmpl b/templates/pt_BR/option-boolean.tmpl deleted file mode 100644 index e832ee102..000000000 --- a/templates/pt_BR/option-boolean.tmpl +++ /dev/null @@ -1,6 +0,0 @@ -
    {keytext}: -{[choices]{text}} -
    diff --git a/templates/pt_BR/option-pickmany.tmpl b/templates/pt_BR/option-pickmany.tmpl deleted file mode 100644 index 0da75e5d2..000000000 --- a/templates/pt_BR/option-pickmany.tmpl +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/templates/pt_BR/option-pickone.tmpl b/templates/pt_BR/option-pickone.tmpl deleted file mode 100644 index 758b20ad4..000000000 --- a/templates/pt_BR/option-pickone.tmpl +++ /dev/null @@ -1,18 +0,0 @@ - - -:} - diff --git a/templates/pt_BR/option-trailer.tmpl b/templates/pt_BR/option-trailer.tmpl deleted file mode 100644 index 882c8b917..000000000 --- a/templates/pt_BR/option-trailer.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    {keytext}:
    {keytext}: -{iscustom=1?{[params] - - -}
    {paramtext}:{params=Units?:}
    -
    - -

    - - \ No newline at end of file diff --git a/templates/pt_BR/pager.tmpl b/templates/pt_BR/pager.tmpl deleted file mode 100644 index 6ee823a70..000000000 --- a/templates/pt_BR/pager.tmpl +++ /dev/null @@ -1,6 +0,0 @@ - - - - - -
    {PREV?
    : }
    {NEXT?
    : }
    diff --git a/templates/pt_BR/printer-accept.tmpl b/templates/pt_BR/printer-accept.tmpl deleted file mode 100644 index d19a13f46..000000000 --- a/templates/pt_BR/printer-accept.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Aceitar trabalhos na {is_class?classe:impressora} {printer_name}

    - -

    A {is_class?classe:impressora} {printer_name} -agora está aceitando trabalhos.

    - -
    diff --git a/templates/pt_BR/printer-added.tmpl b/templates/pt_BR/printer-added.tmpl deleted file mode 100644 index e021f2cf5..000000000 --- a/templates/pt_BR/printer-added.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Adicionar impressora

    - -

    A impressora {printer_name} foi adicionada -com sucesso. - -

    diff --git a/templates/pt_BR/printer-configured.tmpl b/templates/pt_BR/printer-configured.tmpl deleted file mode 100644 index 8cd2aa560..000000000 --- a/templates/pt_BR/printer-configured.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Configurar opções padrão para {printer_name}

    - -

    As opções padrão da {OP=set-class-options?classe :impressora }{printer_name} -foram configuradas com sucesso. - -

    diff --git a/templates/pt_BR/printer-confirm.tmpl b/templates/pt_BR/printer-confirm.tmpl deleted file mode 100644 index 08f3a5ac3..000000000 --- a/templates/pt_BR/printer-confirm.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    - -

    Excluir impressora {printer_name}

    - -

    Aviso: Tem certeza que deseja excluir a impressora -{printer_name}?

    - -

    - -
    diff --git a/templates/pt_BR/printer-default.tmpl b/templates/pt_BR/printer-default.tmpl deleted file mode 100644 index 6c5e7deb3..000000000 --- a/templates/pt_BR/printer-default.tmpl +++ /dev/null @@ -1,12 +0,0 @@ -
    - -

    Definir a {is_class?classe:impressora} {printer_name} como padrão

    - -

    A {is_class?classe:impressora} {printer_name} -foi definida como a impressora padrão no servidor.

    - -
    Nota: O padrão de qualquer usuário que tenha sido configurado via -do comando lpoptions vai sobrepor esta configuração padrão.
    - -
    diff --git a/templates/pt_BR/printer-deleted.tmpl b/templates/pt_BR/printer-deleted.tmpl deleted file mode 100644 index 270eb127c..000000000 --- a/templates/pt_BR/printer-deleted.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Excluir Impressora {printer_name}

    - -

    A impressora {printer_name} foi excluída com sucesso. - -

    diff --git a/templates/pt_BR/printer-jobs-header.tmpl b/templates/pt_BR/printer-jobs-header.tmpl deleted file mode 100644 index 05488e2c9..000000000 --- a/templates/pt_BR/printer-jobs-header.tmpl +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    Trabalhos

    -
    diff --git a/templates/pt_BR/printer-modified.tmpl b/templates/pt_BR/printer-modified.tmpl deleted file mode 100644 index d0d919a01..000000000 --- a/templates/pt_BR/printer-modified.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Modificar impressora {printer_name}

    - -

    A impressora {printer_name} foi -modificada com sucesso. - -

    \ 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 index cb480b41e..000000000 --- a/templates/pt_BR/printer-purge.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Eliminar trabalhos na {is_class?classe:impressora} {printer_name}

    - -

    Todos os trabalhos da {is_class?classe:impressora} {printer_name} -foram eliminados.

    - -
    \ 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 index 2bcca7b52..000000000 --- a/templates/pt_BR/printer-reject.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Rejeitar trabalhos na {is_class?classe:impressora} {printer_name}

    - -

    A {is_class?classe:impressora} {printer_name} -não está mais aceitando trabalhos.

    - -
    diff --git a/templates/pt_BR/printer-start.tmpl b/templates/pt_BR/printer-start.tmpl deleted file mode 100644 index 3826f8470..000000000 --- a/templates/pt_BR/printer-start.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Resumir a {is_class?classe:impressora} {printer_name}

    - -

    A {is_class?classe:impressora} {printer_name} -foi resumida com sucesso.

    - -
    \ 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 index dfd8dce36..000000000 --- a/templates/pt_BR/printer-stop.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Pausar a {is_class?classe:impressora} {printer_name}

    - -

    A {is_class?classe:impressora} {printer_name} -foi pausada.

    - -
    \ No newline at end of file diff --git a/templates/pt_BR/printer.tmpl b/templates/pt_BR/printer.tmpl deleted file mode 100644 index b5ceb234d..000000000 --- a/templates/pt_BR/printer.tmpl +++ /dev/null @@ -1,47 +0,0 @@ -
    - -

    {printer_name} -({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:})

    - -
    - - - -
    - -
    - - - - -
    - - - - - - -
    Descrição:{printer_info}
    Localização:{printer_location}
    Driver:{printer_make_and_model} ({color_supported=1?color:grayscale}{sides_supported?, 2-sided printing:})
    -
    Conexão:{device_uri}
    Padrões:job-sheets={job_sheets_default} -media={media_default?{media_default}:desconhecido} -{sides_default?sides={sides_default}:}
    - -
    \ 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 index c5d0a74da..000000000 --- a/templates/pt_BR/printers-header.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    {total=0?Nenhuma impressora:Mostrando {#printer_name} de {total} impressora{total=1?:s}}.

    diff --git a/templates/pt_BR/printers.tmpl b/templates/pt_BR/printers.tmpl deleted file mode 100644 index 97ee46219..000000000 --- a/templates/pt_BR/printers.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -{#printer_name=0?: - - - - - -{[printer_name] - -} - -
    {ORDER=dec? Nome da fila : Nome da fila }DescriçãoLocalizaçãoMarca e modeloEstado
    {printer_name}{printer_info}{printer_location}{printer_make_and_model}{printer_state=3?Ociosa:{printer_state=4?Processando:Pausada}}{printer_state_message? - "{printer_state_message}":}
    } diff --git a/templates/pt_BR/restart.tmpl b/templates/pt_BR/restart.tmpl deleted file mode 100644 index 0a90143c1..000000000 --- a/templates/pt_BR/restart.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Alterar configurações

    - -

    Por favor, aguarde enquanto o servidor é reiniciado...

    - -
    diff --git a/templates/pt_BR/samba-export.tmpl b/templates/pt_BR/samba-export.tmpl deleted file mode 100644 index 15a6b414e..000000000 --- a/templates/pt_BR/samba-export.tmpl +++ /dev/null @@ -1,54 +0,0 @@ - - -
    - - - -

    Exportar impressoras para o Samba

    - -{error?

    Não foi possível exportar impressoras para o Samba\:

    -
    {error}
    -

    Consulte o arquivo error_log para mais informações.

    : -

    Essa página permite que você exporte impressoras para o Samba -para que clientes Windows possam acessá-las através do ícone de -Meus locais de rede nas suas áreas de trabalho. -Você deve primeiro instalar os drivers de impressora PostScript -do Windows como descrito na página de manual do -cupsaddsmb(8).

    } - - - - - - - - - - - - - - - - - - -
    Impressoras: -
    - Exportar todas as impressoras -
    Nome do usuário do Samba: (obrigatório)
    Senha do Samba: (obrigatório)
    - -
    diff --git a/templates/pt_BR/samba-exported.tmpl b/templates/pt_BR/samba-exported.tmpl deleted file mode 100644 index c2ec3a576..000000000 --- a/templates/pt_BR/samba-exported.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    Impressoras exportadas para o samba com sucesso.

    diff --git a/templates/pt_BR/search.tmpl b/templates/pt_BR/search.tmpl deleted file mode 100644 index 1d6cbbaa8..000000000 --- a/templates/pt_BR/search.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    -{WHICH_JOBS?:} -{ORDER?:} - -

    Pesquisar em -{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?classes:{SECTION=jobs?Trabalhos:Impressoras}}}: -

    - -
    diff --git a/templates/pt_BR/set-printer-options-header.tmpl b/templates/pt_BR/set-printer-options-header.tmpl deleted file mode 100644 index 4c15c0c02..000000000 --- a/templates/pt_BR/set-printer-options-header.tmpl +++ /dev/null @@ -1,26 +0,0 @@ -
    - -

    Definir opções padrão para {printer_name}

    - -
    - - - -{HAVE_AUTOCONFIGURE?:} - - - -

    {[group_id] -{group}     }

    - -
    diff --git a/templates/pt_BR/set-printer-options-trailer.tmpl b/templates/pt_BR/set-printer-options-trailer.tmpl deleted file mode 100644 index 11adc7012..000000000 --- a/templates/pt_BR/set-printer-options-trailer.tmpl +++ /dev/null @@ -1,16 +0,0 @@ -
    - - -
    - -
    diff --git a/templates/pt_BR/subscription-added.tmpl b/templates/pt_BR/subscription-added.tmpl deleted file mode 100644 index 32cf79a15..000000000 --- a/templates/pt_BR/subscription-added.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    A inscrição {subscription_name} foi adicionada com sucesso.

    - -
    diff --git a/templates/pt_BR/subscription-canceled.tmpl b/templates/pt_BR/subscription-canceled.tmpl deleted file mode 100644 index 173230ba2..000000000 --- a/templates/pt_BR/subscription-canceled.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    A inscrição #{notify_subscription_id} foi cancelada.

    - -
    diff --git a/templates/pt_BR/test-page.tmpl b/templates/pt_BR/test-page.tmpl deleted file mode 100644 index 6d038affd..000000000 --- a/templates/pt_BR/test-page.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Imprimir página de teste em {printer_name}

    - -

    Página de teste enviada; o ID do trabalho é -{printer_name}-{job_id}.

    - -
    diff --git a/templates/pt_BR/trailer.tmpl b/templates/pt_BR/trailer.tmpl deleted file mode 100644 index 167e43fae..000000000 --- a/templates/pt_BR/trailer.tmpl +++ /dev/null @@ -1,8 +0,0 @@ - -  -CUPS e sua logo são marcas registradas da -Apple Inc. CUPS é copyright 2007-2014 Apple -Inc. Todos os direitos reservados. - - - diff --git a/templates/pt_BR/users.tmpl b/templates/pt_BR/users.tmpl deleted file mode 100644 index 76cf19a1e..000000000 --- a/templates/pt_BR/users.tmpl +++ /dev/null @@ -1,30 +0,0 @@ -
    - -
    - - - -{IS_CLASS?:} - -

    Usuários permitidos para {printer_name}

    - - - - - - - - - - -
    Usuários: - -
    -Permitir que estes usuários imprimam -Impedir que estes usuários imprimam -
    - -
    - -
    -
    diff --git a/templates/restart.tmpl b/templates/restart.tmpl index bdfca876f..6455652f8 100644 --- a/templates/restart.tmpl +++ b/templates/restart.tmpl @@ -1,8 +1,4 @@ -
    -

    Change Settings

    Busy Indicator Please stand by while the server restarts...

    - -
    diff --git a/templates/ru/Makefile b/templates/ru/Makefile deleted file mode 100644 index bc0116523..000000000 --- a/templates/ru/Makefile +++ /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 index a119d8661..000000000 --- a/templates/ru/add-class.tmpl +++ /dev/null @@ -1,40 +0,0 @@ -
    - -

    Новая группа

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Название:
    -(может содержать любые символы, кроме "/", "#" и пробела)
    Описание:
    -(Расширенное описание группы, например, "Дуплексный принтер")
    Расположение:
    -(Месторасположение группы, например, "Кабинет 55")
    Состав группы: - -
    - -
    -
    \ No newline at end of file diff --git a/templates/ru/add-printer.tmpl b/templates/ru/add-printer.tmpl deleted file mode 100644 index 6690d88ca..000000000 --- a/templates/ru/add-printer.tmpl +++ /dev/null @@ -1,47 +0,0 @@ -
    - -

    Добавление принтера

    - -
    - - - - - - -{?current_make!?:} -{?current_make_and_model!?:} - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Название:
    -(может содержать любые символы, кроме "/","#" и пробела)
    Описание:
    -(расширенное описание, например, "HP LaserJet с дуплексной печатью")
    Расположение:
    -(месторасположение принтера, например, "Кабинет 55")
    Подключение:{device_uri}
    Совместный доступ: -Разрешить совместный доступ к этому принтеру
    - -
    -
    \ 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 index 4567b9262..000000000 --- a/templates/ru/add-rss-subscription.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    - - - -

    Добавление подписки по RSS

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Название:
    -(Может содержать любые символы, кроме "/", "#", "?" и пробела)
    Очередь:
    События:Новое задание
    -Задание выполнено
    -Задание остановлено
    -Изменены параметры задания
        ÐžÑ‡ÐµÑ€ÐµÐ´ÑŒ остановлена
    -Очередь добавлена
    -Очередь изменена
    -Очередь удалена
        Ð¡ÐµÑ€Ð²ÐµÑ€ запущен
    -Сервер остановлен
    -Сервер перезапущен
    -Проверка безопасности сервера
    Количество событий в ленте:
    - -
    diff --git a/templates/ru/admin.tmpl b/templates/ru/admin.tmpl deleted file mode 100644 index ae2aab2ba..000000000 --- a/templates/ru/admin.tmpl +++ /dev/null @@ -1,102 +0,0 @@ - - -
    - -

    Принтеры

    - -

    -

    -
    -
    -{have_samba?
    :} -

    - -

    Группы

    - -

    -

    -
    -

    - -

    Задания

    - -

    -

    -

    - -
              - -

    Сервер

    - -

    -

    -
    -
    -
    -

    - -{SETTINGS_ERROR?

    {SETTINGS_MESSAGE}

    -
    {SETTINGS_ERROR}
    : - -
    - - -{ADVANCEDSETTINGS?

    Параметры сервера\:

    - -

    Дополнительные параметры
    - - - Показать принтеры, использующиеся в других системах
    -        ÐŸÑ€Ð¾Ñ‚околы\: -
    -         Разрешить печать из интернета
    -         Анонсировать веб-интерфейс
    - Разрешить удаленное администрирование
    -{have_gssapi? Разрешить аутентификацию Kerberos (FAQ)
    :} - Разрешать пользователям отменять любое задание(не только их собственные)
    - Вести журнал заданий
    -        ÐšÐ¾Ð»Ð¸Ñ‡ÐµÑÑ‚во заданий\: -
    -        Ð—аписывать метаданные(Retain Metadata)\: -
    -        Ð¡ÑƒÑ‰ÐµÑÑ‚вующие документы(Retain Documents)\: -
    - Сохранять отладочную информацию в журнале
    -        ÐœÐ°ÐºÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ñ‹Ð¹ размер журнала ошибок\: -

    - -:

    Параметры сервера:

    - -

    Дополнительные параметры
    - - Разрешить совместный доступ к принтерам, подключенным к этой системе
    -         Разрешить печать из Интернета
    - Разрешить удаленное администрирование
    -{have_gssapi? Разрешить аутентификацию Kerberos (FAQ)
    :} - Разрешить пользователям отменять любое задание(не только их собственные)
    - Сохранять отладочную информацию в журнале

    - -} -

    - -
    } - -
    - -
    - -

    Подписка по RSS

    - -

    -

    -

    - -
    - -{notify_subscription_id? - -{[notify_subscription_id] -} - -
    НазваниеСобытияОчередь
    {notify_recipient_name}
    -
     
    {notify_events} {notify_printer_name?{notify_printer_name}:Все очереди}
    :} diff --git a/templates/ru/choose-device.tmpl b/templates/ru/choose-device.tmpl deleted file mode 100644 index 3472f5fa6..000000000 --- a/templates/ru/choose-device.tmpl +++ /dev/null @@ -1,53 +0,0 @@ -
    - -

    {op=modify-printer?Изменение {printer_name}:Добавление принтера}

    - -{CUPS_GET_DEVICES_DONE?
    - - -{printer_name?:} - - -{op=add-printer?: - - -} - - - - - - - - - - - - - - - - - -
    Текущее подключение\: -{current_device_uri}
    Локальные принтеры\: -{[device_uri]{device_class!network? -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -:}} -
    Обнаруженные сетевые принтеры\: -{[device_uri]{device_class=network?{device_uri~[a-z]+://? -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -:}:}} -
    Другие сетевые принтеры\: -{[device_uri]{device_class=network?{device_uri~[a-z]+://?: -{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}
    -}:}} -
    - -
    :

    Поиск принтеров...

    } - -
    diff --git a/templates/ru/choose-make.tmpl b/templates/ru/choose-make.tmpl deleted file mode 100644 index 55b91db8c..000000000 --- a/templates/ru/choose-make.tmpl +++ /dev/null @@ -1,64 +0,0 @@ -
    - -

    {op=modify-printer?Изменение {printer_name}:Добавление принтера}

    - -
    - - -{printer_name?:} - - - - - - -{op=modify-printer?: - - -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Название:{printer_name}
    Описание:{printer_info}
    Расположение:{printer_location}
    Подключение:{device_uri}
    Совместный доступ: -{?printer_is_shared=?Нет совместного доступа:{?printer_is_shared=0?Нет совместного доступа:Разрешить совместный доступ}} к этому принтеру
    Создать: - -
     
    или использовать файл PPD:
    - -
    -
    \ No newline at end of file diff --git a/templates/ru/choose-model.tmpl b/templates/ru/choose-model.tmpl deleted file mode 100644 index b666329e2..000000000 --- a/templates/ru/choose-model.tmpl +++ /dev/null @@ -1,60 +0,0 @@ -
    - -

    {op=modify-printer?Изменение {printer_name}:Добавление принтера}

    - -
    - - -{printer_name?:} - - - - - -{op=modify-printer?: - - -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Название:{printer_name}
    Описание:{printer_info}
    Расположение:{printer_location}
    Подключение:{device_uri}
    Совместный доступ: -{?printer_is_shared=?Нет совместного доступа:{?printer_is_shared=0?Нет совместного доступа:Разрешить совместный доступ}} к этому принтеру
    Создать:{PPD_MAKE}
    Модель: - -
    или использовать файл PPD:
    - -
    -
    \ No newline at end of file diff --git a/templates/ru/choose-serial.tmpl b/templates/ru/choose-serial.tmpl deleted file mode 100644 index 5a953a2c1..000000000 --- a/templates/ru/choose-serial.tmpl +++ /dev/null @@ -1,52 +0,0 @@ -
    - -

    {op=modify-printer?Изменение {printer_name}:Добавление принтера}

    - -
    - - -{printer_name?:} - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Подключение:{device_uri}
    Скорость передачи:
    Печать страниц:
    Биты данных:
    Управление:
    - -
    -
    \ No newline at end of file diff --git a/templates/ru/choose-uri.tmpl b/templates/ru/choose-uri.tmpl deleted file mode 100644 index 3c843f018..000000000 --- a/templates/ru/choose-uri.tmpl +++ /dev/null @@ -1,43 +0,0 @@ -
    - -

    {op=modify-printer?Изменение {printer_name}:Добавление принтера}

    - -
    - - -{printer_name?:} - - - - - - - - - - - - - - - -
    Подключение:
    Примеры: -
    -    http://hostname:631/ipp/
    -    http://hostname:631/ipp/port1
    -
    -    ipp://hostname/ipp/
    -    ipp://hostname/ipp/port1
    -
    -    lpd://hostname/queue
    -
    -    socket://hostname
    -    socket://hostname:9100
    -
    - -

    Смотрите раздел "Сетевые принтеры" для выяснения правильного адреса вашего принтера.

    - -
    - -
    -
    \ No newline at end of file diff --git a/templates/ru/class-added.tmpl b/templates/ru/class-added.tmpl deleted file mode 100644 index 626cfec08..000000000 --- a/templates/ru/class-added.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Новая группа

    - -

    Группа {printer_name} успешно добавлена. - -

    diff --git a/templates/ru/class-confirm.tmpl b/templates/ru/class-confirm.tmpl deleted file mode 100644 index 0eb87ef5b..000000000 --- a/templates/ru/class-confirm.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    - -

    Удаление группы {printer_name}

    - -

    Предупреждение: Вы действительно хотите удалить группу -{printer_name}?

    - -

    - -
    diff --git a/templates/ru/class-deleted.tmpl b/templates/ru/class-deleted.tmpl deleted file mode 100644 index 08f59995b..000000000 --- a/templates/ru/class-deleted.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Удаление группы {printer_name}

    - -

    Группа {printer_name} успешно удалена. - -

    \ 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 index 8487cbbda..000000000 --- a/templates/ru/class-jobs-header.tmpl +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    Задания

    -
    diff --git a/templates/ru/class-modified.tmpl b/templates/ru/class-modified.tmpl deleted file mode 100644 index 986a02b1c..000000000 --- a/templates/ru/class-modified.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Изменение группы {printer_name}

    - -

    Группа {printer_name} успешно изменена. - -

    \ No newline at end of file diff --git a/templates/ru/class.tmpl b/templates/ru/class.tmpl deleted file mode 100644 index 643cbae75..000000000 --- a/templates/ru/class.tmpl +++ /dev/null @@ -1,44 +0,0 @@ -
    -

    {printer_name} -({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}?, Сервер по умолчанию:})

    - -
    - - - -
    - -
    - - - - - -
    - - - - - - -
    Описание:{printer_info}
    Расположение:{printer_location}
    Состав:{?member_uris=?Нет принтеров:{member_uris}}
    По умолчанию:job-sheets={job_sheets_default} -media={media_default?{media_default}:неизвестный} -{sides_default?sides={sides_default}:}
    - -
    diff --git a/templates/ru/classes-header.tmpl b/templates/ru/classes-header.tmpl deleted file mode 100644 index 51012c500..000000000 --- a/templates/ru/classes-header.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    {total=0?Нет групп:Показать {#printer_name} из {total} группы{total=1?:es}}.

    diff --git a/templates/ru/classes.tmpl b/templates/ru/classes.tmpl deleted file mode 100644 index 5038bea74..000000000 --- a/templates/ru/classes.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -{#printer_name=0?: - - - - - -{[printer_name] - -} - -
    {ORDER=dec? Очередь : Очередь }ОписаниеРасположениеСоставСтатус
    {printer_name}{printer_info}{printer_location}{?member_uris=?Нет принтеров:{member_uris}}{printer_state=3?В ожидании:{printer_state=4?Печатает:Приостановлен}}{printer_state_message? - "{printer_state_message}":}
    } diff --git a/templates/ru/command.tmpl b/templates/ru/command.tmpl deleted file mode 100644 index 4dc7b4e6e..000000000 --- a/templates/ru/command.tmpl +++ /dev/null @@ -1,12 +0,0 @@ -
    - -

    {title} для {printer_name}

    - -

    {job_state>5?:Индикатор занятости }Обработка задания -{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?, -"{job_printer_state_message}":}}

    - -
    diff --git a/templates/ru/edit-config.tmpl b/templates/ru/edit-config.tmpl deleted file mode 100644 index d194059d8..000000000 --- a/templates/ru/edit-config.tmpl +++ /dev/null @@ -1,24 +0,0 @@ - - -
    - -

    Редактирование конфигурационного файла

    - -
    - - - - - -

    -

    - -
    - -
    diff --git a/templates/ru/error-op.tmpl b/templates/ru/error-op.tmpl deleted file mode 100644 index 922976f3d..000000000 --- a/templates/ru/error-op.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    {?title} {?printer_name} - ошибка

    - -

    Ошибка:

    - -
    Неизвестная операция "{op}"!
    - -
    diff --git a/templates/ru/error.tmpl b/templates/ru/error.tmpl deleted file mode 100644 index 4a35c8f13..000000000 --- a/templates/ru/error.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    {?title} {?printer_name} - ошибка

    - -

    {?message?{message}:Ошибка}:

    - -
    {error}
    - -
    diff --git a/templates/ru/header.tmpl.in b/templates/ru/header.tmpl.in deleted file mode 100644 index 6d16855e5..000000000 --- a/templates/ru/header.tmpl.in +++ /dev/null @@ -1,29 +0,0 @@ - - - - - {title} - CUPS @CUPS_VERSION@@CUPS_REVISION@ - - - {refresh_page?:} - - - - - - - diff --git a/templates/ru/option-conflict.tmpl b/templates/ru/option-conflict.tmpl deleted file mode 100644 index 9497fb777..000000000 --- a/templates/ru/option-conflict.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -

    Ошибка: следующие параметры конфликтуют:

    - - - -

    Измените один или несколько параметров для того, чтобы избежать конфликта.

    diff --git a/templates/ru/option-header.tmpl b/templates/ru/option-header.tmpl deleted file mode 100644 index 464726a50..000000000 --- a/templates/ru/option-header.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    {group}

    - -
    - - - - - - - - - - - - - -
      ÐÐ°Ñ‡Ð°Ð»Ð¾    ÐÐ´Ð¼Ð¸Ð½Ð¸ÑÑ‚рирование    Ð“руппы    Ð¡Ð¿Ñ€Ð°Ð²ÐºÐ°    Ð—адания    ÐŸÑ€Ð¸Ð½Ñ‚еры  
     
    diff --git a/templates/ru/help-header.tmpl b/templates/ru/help-header.tmpl deleted file mode 100644 index d618a6663..000000000 --- a/templates/ru/help-header.tmpl +++ /dev/null @@ -1,45 +0,0 @@ -
    -
    -{TOPIC?:} - -

    Поиск -{HELPTITLE?в {HELPTITLE}:{TOPIC?в {TOPIC}:по справке}}: - -

    - -
    - - - - -{QUERY?

    Результаты поиска в {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:всей справке}}\:

    -{QTEXT?:} -:

    Не найдено совпадений.

    } -
    :} -{HELPTITLE?

    {HELPTITLE}

    -
    : - -

    Справка

    - -

    Это справка CUPS. Введите выше слова для поиска в справке и нажмите "Поиск", чтобы показать результаты поиска.

    - -

    Если вы пока мало знакомы с CUPS, прочтите раздел "Введение в CUPS". Опытные пользователи -могут обратиться к разделу "Что нового в CUPS 1.6".

    - -

    Веб-сайт CUPS так же содержит большое количество ресурсов для пользователей, включая форум, ответы на часто задаваемые вопросы и форму для регистрации ошибок и пожеланий.

    } diff --git a/templates/ru/help-printable.tmpl b/templates/ru/help-printable.tmpl deleted file mode 100644 index 2463c1630..000000000 --- a/templates/ru/help-printable.tmpl +++ /dev/null @@ -1,9 +0,0 @@ - - - - - {HELPTITLE} - - - - diff --git a/templates/ru/help-trailer.tmpl b/templates/ru/help-trailer.tmpl deleted file mode 100644 index 4c1ebed85..000000000 --- a/templates/ru/help-trailer.tmpl +++ /dev/null @@ -1 +0,0 @@ -
    diff --git a/templates/ru/job-cancel.tmpl b/templates/ru/job-cancel.tmpl deleted file mode 100644 index cba564469..000000000 --- a/templates/ru/job-cancel.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Отмена задания {job_id}

    - -

    Задание {job_id} отменено. - -

    diff --git a/templates/ru/job-hold.tmpl b/templates/ru/job-hold.tmpl deleted file mode 100644 index 162e4a46e..000000000 --- a/templates/ru/job-hold.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Приостановка задания {job_id}

    - -

    Задание {job_id} приостановлено. - -

    diff --git a/templates/ru/job-move.tmpl b/templates/ru/job-move.tmpl deleted file mode 100644 index 598e4db74..000000000 --- a/templates/ru/job-move.tmpl +++ /dev/null @@ -1,27 +0,0 @@ -
    - -
    - - -{job_id?:} - -

    {job_id?Перемещение задания {job_id}:Перемещение всех заданий}

    - - - - - - - - - - -
    Переместить на принтер: - -
    - -
    - -
    diff --git a/templates/ru/job-moved.tmpl b/templates/ru/job-moved.tmpl deleted file mode 100644 index e5bd65683..000000000 --- a/templates/ru/job-moved.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    {job_id?Перемещение задания {job_id}:Перемещение всех заданий}

    - -

    {job_id?Задание {job_id}:Все задания} перемещены на -{job_printer_name}.

    - -
    diff --git a/templates/ru/job-release.tmpl b/templates/ru/job-release.tmpl deleted file mode 100644 index 1cad15a63..000000000 --- a/templates/ru/job-release.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Разблокирование задания {job_id}

    - -

    Задание {job_id} разблокировано. - -

    diff --git a/templates/ru/job-restart.tmpl b/templates/ru/job-restart.tmpl deleted file mode 100644 index 490fc3a37..000000000 --- a/templates/ru/job-restart.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Перезапуск задания {job_id}

    - -

    Задание {job_id} запущено заново. - -

    diff --git a/templates/ru/jobs-header.tmpl b/templates/ru/jobs-header.tmpl deleted file mode 100644 index 7b645b511..000000000 --- a/templates/ru/jobs-header.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    {?which_jobs=?:
    } -{?which_jobs=completed?:
    } -{?which_jobs=all?:
    }
    - -

    {total=0?Нет заданий:Задание {#job_id} из {total} {?which_jobs=?активных:{which_jobs=all?:завершенных}}}.

    diff --git a/templates/ru/jobs.tmpl b/templates/ru/jobs.tmpl deleted file mode 100644 index ce80fdba2..000000000 --- a/templates/ru/jobs.tmpl +++ /dev/null @@ -1,36 +0,0 @@ -{#job_id=0?: - - - - - -{[job_id] - - - - - - - - - -} - -
    {ORDER=dec? Номер : ID }НазваниеПользовательРазмерСтраницСтатусУправление
    {job_printer_name}-{job_id}{?phone? ({phone}):} {?job_name=?Неизвестное:{job_name}} {?job_originating_user_name=?Приостановлено пользователем:{job_originating_user_name}} {job_k_octets}k {job_media_sheets_completed=0?Неизвестно:{?job_media_sheets_completed}} {job_state=3?В очереди
    {time_at_creation}:{job_state=4?Приостановлено с
    {time_at_creation}: -{job_state=5?Создано
    {time_at_processing}:{job_state=6?Остановлено: -{job_state=7?Отменено
    {time_at_completed}:{job_state=8?Прервано:Завершено
    {time_at_completed}}}}}}} {job_printer_state_message?
    -"{job_printer_state_message}":}
    -{job_preserved>0?{job_state>5? -
    :}:} -{job_state=4? -
    -
    :} -{job_state=3? -
    -
    :} -{job_state<7? -
    -
    -
    :} - 
    -} diff --git a/templates/ru/list-available-printers.tmpl b/templates/ru/list-available-printers.tmpl deleted file mode 100644 index 90d3c949c..000000000 --- a/templates/ru/list-available-printers.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -
    - -

    Доступные принтеры

    - -{#device_uri=0?

    Не обнаружено ни одного принтера.

    -:
      {[device_uri] -
    • -{device_make_and_model} ({device_info})
    • -}
    } - -
    diff --git a/templates/ru/modify-class.tmpl b/templates/ru/modify-class.tmpl deleted file mode 100644 index a85698a52..000000000 --- a/templates/ru/modify-class.tmpl +++ /dev/null @@ -1,34 +0,0 @@ -
    - -

    Изменение группы {printer_name}

    - -
    - - - - - - - - - - - - - - - - - - - - - -
    Описание:
    Расположение:
    Состав группы: - -
    - -
    -
    \ No newline at end of file diff --git a/templates/ru/modify-printer.tmpl b/templates/ru/modify-printer.tmpl deleted file mode 100644 index 8ec523f1f..000000000 --- a/templates/ru/modify-printer.tmpl +++ /dev/null @@ -1,42 +0,0 @@ -
    - -

    Изменение принтера {printer_name}

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Описание:
    -(расширенное описание принтера, например, "HP LaserJet с дуплексной печатью")
    Расположение:
    -(местоположение принтера, например, "Кабинет 55")
    Подключение:{device_uri}
    Совместный доступ: -Разрешить совместный доступ к этому принтеру
    - -
    -
    diff --git a/templates/ru/norestart.tmpl b/templates/ru/norestart.tmpl deleted file mode 100644 index a08a467c6..000000000 --- a/templates/ru/norestart.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Применение изменений

    - -

    Сервер не был перезапущен,поскольку не произошло изменений в конфигурации...

    - -
    diff --git a/templates/ru/option-boolean.tmpl b/templates/ru/option-boolean.tmpl deleted file mode 100644 index e832ee102..000000000 --- a/templates/ru/option-boolean.tmpl +++ /dev/null @@ -1,6 +0,0 @@ -
    {keytext}: -{[choices]{text}} -
    diff --git a/templates/ru/option-pickmany.tmpl b/templates/ru/option-pickmany.tmpl deleted file mode 100644 index 0da75e5d2..000000000 --- a/templates/ru/option-pickmany.tmpl +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/templates/ru/option-pickone.tmpl b/templates/ru/option-pickone.tmpl deleted file mode 100644 index 49a9929ae..000000000 --- a/templates/ru/option-pickone.tmpl +++ /dev/null @@ -1,18 +0,0 @@ - - -:} - diff --git a/templates/ru/option-trailer.tmpl b/templates/ru/option-trailer.tmpl deleted file mode 100644 index f80e946d0..000000000 --- a/templates/ru/option-trailer.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    {keytext}:
    {keytext}: -{iscustom=1?{[params] - - -}
    {paramtext}:{params=Units?:}
    -
    - -

    - - \ No newline at end of file diff --git a/templates/ru/pager.tmpl b/templates/ru/pager.tmpl deleted file mode 100644 index 3c5dc62b5..000000000 --- a/templates/ru/pager.tmpl +++ /dev/null @@ -1,6 +0,0 @@ - - - - - -
    {PREV?
    : }
    {NEXT?
    : }
    diff --git a/templates/ru/printer-accept.tmpl b/templates/ru/printer-accept.tmpl deleted file mode 100644 index 24d100d48..000000000 --- a/templates/ru/printer-accept.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Прием заданий {is_class?в группу:на принтер} {printer_name}

    - -

    {is_class?Группа:Принтер} {printer_name} -теперь принимает задания.

    - -
    diff --git a/templates/ru/printer-added.tmpl b/templates/ru/printer-added.tmpl deleted file mode 100644 index cc7840753..000000000 --- a/templates/ru/printer-added.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Добавить принтер

    - -

    Принтер {printer_name} успешно добавлен. - -

    diff --git a/templates/ru/printer-configured.tmpl b/templates/ru/printer-configured.tmpl deleted file mode 100644 index 33c4c143f..000000000 --- a/templates/ru/printer-configured.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Настройки по умолчанию для {printer_name}

    - -

    {OP=set-class-options?Группа :Принтер }{printer_name} -теперь используют параметры по умолчанию. - -

    diff --git a/templates/ru/printer-confirm.tmpl b/templates/ru/printer-confirm.tmpl deleted file mode 100644 index 86b636091..000000000 --- a/templates/ru/printer-confirm.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    - -

    Удаление принтера {printer_name}

    - -

    Предупреждение: вы действительно хотите удалить принтер -{printer_name}?

    - -

    - -
    diff --git a/templates/ru/printer-default.tmpl b/templates/ru/printer-default.tmpl deleted file mode 100644 index 474f4b834..000000000 --- a/templates/ru/printer-default.tmpl +++ /dev/null @@ -1,12 +0,0 @@ -
    - -

    Установка {is_class?группы:принтера} {printer_name} по умолчанию

    - -

    {is_class?Группа:Принтер} {printer_name} -установлены на сервере по умолчанию для новых заданий.

    - -
    Примечания: вы можете переопределить это поведение с помощью команды -the lpoptions.
    - -
    diff --git a/templates/ru/printer-deleted.tmpl b/templates/ru/printer-deleted.tmpl deleted file mode 100644 index 43593c744..000000000 --- a/templates/ru/printer-deleted.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Удаление принтера {printer_name}

    - -

    Принтер {printer_name} успешно удален. - -

    diff --git a/templates/ru/printer-jobs-header.tmpl b/templates/ru/printer-jobs-header.tmpl deleted file mode 100644 index 8487cbbda..000000000 --- a/templates/ru/printer-jobs-header.tmpl +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    Задания

    -
    diff --git a/templates/ru/printer-modified.tmpl b/templates/ru/printer-modified.tmpl deleted file mode 100644 index 21c502f60..000000000 --- a/templates/ru/printer-modified.tmpl +++ /dev/null @@ -1,7 +0,0 @@ -
    - -

    Изменение принтера {printer_name}

    - -

    Параметры принтера {printer_name} успешно изменены. - -

    \ No newline at end of file diff --git a/templates/ru/printer-purge.tmpl b/templates/ru/printer-purge.tmpl deleted file mode 100644 index c2768c81e..000000000 --- a/templates/ru/printer-purge.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Очистка всех заданий для {is_class?группы:принтера} {printer_name}

    - -

    Все задания для {is_class?группы:принтера} {printer_name} -очищены.

    - -
    \ No newline at end of file diff --git a/templates/ru/printer-reject.tmpl b/templates/ru/printer-reject.tmpl deleted file mode 100644 index 012e161ff..000000000 --- a/templates/ru/printer-reject.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Отмена заданий для {is_class?группы:принтера} {printer_name}

    - -

    {is_class?Группа:Принтер} {printer_name} -больше не принимает задания.

    - -
    diff --git a/templates/ru/printer-start.tmpl b/templates/ru/printer-start.tmpl deleted file mode 100644 index cb02c7980..000000000 --- a/templates/ru/printer-start.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Возобновить работу {is_class?группы:принтера} {printer_name}

    - -

    {is_class?Группа:Принтер} {printer_name} -теперь принимают задания.

    - -
    \ No newline at end of file diff --git a/templates/ru/printer-stop.tmpl b/templates/ru/printer-stop.tmpl deleted file mode 100644 index d9fa7fc51..000000000 --- a/templates/ru/printer-stop.tmpl +++ /dev/null @@ -1,9 +0,0 @@ -
    - -

    Приостановить {is_class?группу:принтер} {printer_name}

    - -

    {is_class?Группа:Принтер} {printer_name} -{is_class?была приостановлена:был приостановлен}.

    - -
    \ No newline at end of file diff --git a/templates/ru/printer.tmpl b/templates/ru/printer.tmpl deleted file mode 100644 index 289a2c68e..000000000 --- a/templates/ru/printer.tmpl +++ /dev/null @@ -1,47 +0,0 @@ -
    - -

    {printer_name} -({printer_state=3?в ожидании:{printer_state=4?печать:приостановлен}}, -{printer_is_accepting_jobs=0?не принимает задания:принимает задания}, -{server_is_sharing_printers=0?нет совместного доступа:{printer_is_shared=0?нет совместного доступа:разрешен совместный доступ}} {default_name={printer_name}?, По умолчанию:})

    - -
    - - - -
    - -
    - - - - -
    - - - - - - -
    Описание:{printer_info}
    Расположение:{printer_location}
    Драйвер:{printer_make_and_model} ({color_supported=1?цветной:черно-белый}{sides_supported?, дуплексная печать:})
    -
    Подключение:{device_uri}
    По умолчанию:job-sheets={job_sheets_default} -media={media_default?{media_default}:неизвестный} -{sides_default?sides={sides_default}:}
    - -
    \ No newline at end of file diff --git a/templates/ru/printers-header.tmpl b/templates/ru/printers-header.tmpl deleted file mode 100644 index 6621e067d..000000000 --- a/templates/ru/printers-header.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    {total=0?Нет принтеров:Принтер {#printer_name} из {total}}.

    diff --git a/templates/ru/printers.tmpl b/templates/ru/printers.tmpl deleted file mode 100644 index 79feae58e..000000000 --- a/templates/ru/printers.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -{#printer_name=0?: - - - - - -{[printer_name] - -} - -
    {ORDER=dec? Очередь : Очередь }ОписаниеРасположениеДрайверСтатус
    {printer_name}{printer_info}{printer_location}{printer_make_and_model}{printer_state=3?Idle:{printer_state=4?Печатает:Приостановлен}}{printer_state_message? - "{printer_state_message}":}
    } diff --git a/templates/ru/restart.tmpl b/templates/ru/restart.tmpl deleted file mode 100644 index c32a5ae11..000000000 --- a/templates/ru/restart.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Применение изменений параметров

    - -

    Дождитесь перезагрузки сервера...

    - -
    diff --git a/templates/ru/samba-export.tmpl b/templates/ru/samba-export.tmpl deleted file mode 100644 index 641ca0b01..000000000 --- a/templates/ru/samba-export.tmpl +++ /dev/null @@ -1,53 +0,0 @@ - - -
    - - - -

    Экспорт принтеров в Samba

    - -{error?

    Невозможно экспортировать принтеры в Samba\:

    -
    {error}
    -

    Посмотрите файл error_log для более подробной информации.

    : -

    Эта страница позволяет добавить принтеры в Samba так, чтобы -клиенты Windows могли получить доступ к ним через значок Сетевое окружение или Сетевые подключения на их рабочем столе. Вы должны установить на Windows драйвер принтера PostScript -как описано на странице руководства cupsaddsmb(8).

    } - - - - - - - - - - - - - - - - - - -
    Принтеры: -
    - Экспортировать все принтеры -
    Имя пользователя Samba: (обязательный параметр)
    Пароль Samba: (обязательный параметр)
    - -
    diff --git a/templates/ru/samba-exported.tmpl b/templates/ru/samba-exported.tmpl deleted file mode 100644 index 179b2ad8a..000000000 --- a/templates/ru/samba-exported.tmpl +++ /dev/null @@ -1 +0,0 @@ -

    Принтеры успешно экспортированы в Samba.

    diff --git a/templates/ru/search.tmpl b/templates/ru/search.tmpl deleted file mode 100644 index f338bc676..000000000 --- a/templates/ru/search.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    -{WHICH_JOBS?:} -{ORDER?:} - -

    Поиск -{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?группы:{SECTION=jobs?задания:принтеры}}}: -

    - -
    diff --git a/templates/ru/set-printer-options-header.tmpl b/templates/ru/set-printer-options-header.tmpl deleted file mode 100644 index e5c79dd44..000000000 --- a/templates/ru/set-printer-options-header.tmpl +++ /dev/null @@ -1,26 +0,0 @@ -
    - -

    Установить параметры по умолчанию для {printer_name}

    - -
    - - - -{HAVE_AUTOCONFIGURE?:} - - - -

    {[group_id] -{group}     }

    - -
    diff --git a/templates/ru/set-printer-options-trailer.tmpl b/templates/ru/set-printer-options-trailer.tmpl deleted file mode 100644 index 11adc7012..000000000 --- a/templates/ru/set-printer-options-trailer.tmpl +++ /dev/null @@ -1,16 +0,0 @@ -
    - - -
    - -
    diff --git a/templates/ru/subscription-added.tmpl b/templates/ru/subscription-added.tmpl deleted file mode 100644 index f2b464233..000000000 --- a/templates/ru/subscription-added.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    Подписка {subscription_name} была успешно добавлена.

    - -
    diff --git a/templates/ru/subscription-canceled.tmpl b/templates/ru/subscription-canceled.tmpl deleted file mode 100644 index 5daed1f49..000000000 --- a/templates/ru/subscription-canceled.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -
    - -

    Подписка #{notify_subscription_id} была отменена.

    - -
    diff --git a/templates/ru/test-page.tmpl b/templates/ru/test-page.tmpl deleted file mode 100644 index 6dc1ba1b5..000000000 --- a/templates/ru/test-page.tmpl +++ /dev/null @@ -1,8 +0,0 @@ -
    - -

    Печать пробной страницы на {printer_name}

    - -

    Пробная страница отправлена на печать;Номер задания -{printer_name}-{job_id}.

    - -
    diff --git a/templates/ru/trailer.tmpl b/templates/ru/trailer.tmpl deleted file mode 100644 index 8c4067e67..000000000 --- a/templates/ru/trailer.tmpl +++ /dev/null @@ -1,7 +0,0 @@ - -  -CUPS, а так же логотип CUPS являются зарегистрированными торговыми марками -Apple Inc. Авторские права на CUPS принадлежат (2007-2014) компании Apple Inc. Все права защищены. - - - diff --git a/templates/ru/users.tmpl b/templates/ru/users.tmpl deleted file mode 100644 index ee718b22f..000000000 --- a/templates/ru/users.tmpl +++ /dev/null @@ -1,30 +0,0 @@ -
    - -
    - - - -{IS_CLASS?:} - -

    Доступ пользователей на {printer_name}

    - - - - - - - - - - -
    Пользователи: - -
    -Разрешить этим пользователям печатать -Запретить этим пользователям печатать -
    - -
    - -
    -
    diff --git a/templates/set-printer-options-header.tmpl b/templates/set-printer-options-header.tmpl index 3e7db4669..91e0981aa 100644 --- a/templates/set-printer-options-header.tmpl +++ b/templates/set-printer-options-header.tmpl @@ -1,5 +1,3 @@ -
    -

    Set Default Options for {printer_name}

    diff --git a/templates/set-printer-options-trailer.tmpl b/templates/set-printer-options-trailer.tmpl index 11adc7012..b92988a7f 100644 --- a/templates/set-printer-options-trailer.tmpl +++ b/templates/set-printer-options-trailer.tmpl @@ -12,5 +12,3 @@ for (var i = 0; i < paramtables.length; i++) } -->
    - -
    diff --git a/templates/subscription-added.tmpl b/templates/subscription-added.tmpl index c288b3649..6153d7950 100644 --- a/templates/subscription-added.tmpl +++ b/templates/subscription-added.tmpl @@ -1,5 +1 @@ -
    -

    Subscription {subscription_name} has been added successfully.

    - -
    diff --git a/templates/subscription-canceled.tmpl b/templates/subscription-canceled.tmpl index 86f2c1069..46662ccdb 100644 --- a/templates/subscription-canceled.tmpl +++ b/templates/subscription-canceled.tmpl @@ -1,5 +1 @@ -
    -

    Subscription #{notify_subscription_id} has been canceled.

    - -
    diff --git a/templates/test-page.tmpl b/templates/test-page.tmpl index 59e314a8d..44a74f288 100644 --- a/templates/test-page.tmpl +++ b/templates/test-page.tmpl @@ -1,8 +1,4 @@ -
    -

    Print Test Page On {printer_name}

    Test page sent; job ID is {printer_name}-{job_id}.

    - -
    diff --git a/templates/trailer.tmpl b/templates/trailer.tmpl index d754d908b..c5614fb39 100644 --- a/templates/trailer.tmpl +++ b/templates/trailer.tmpl @@ -1,8 +1,5 @@ - -  -CUPS and the CUPS logo are trademarks of -Apple Inc. Copyright 2007-2014 Apple -Inc. All rights reserved. - - - + + + + + diff --git a/templates/users.tmpl b/templates/users.tmpl index 0889f3f31..c88e03313 100644 --- a/templates/users.tmpl +++ b/templates/users.tmpl @@ -1,5 +1,3 @@ -
    -
    @@ -27,4 +25,3 @@
    -
    diff --git a/test/4.1-requests.test b/test/4.1-requests.test index a168d6e94..ab75c987a 100644 --- a/test/4.1-requests.test +++ b/test/4.1-requests.test @@ -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: # @@ -155,5 +155,5 @@ 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 $" # diff --git a/test/4.2-cups-printer-ops.test b/test/4.2-cups-printer-ops.test index a95d81f5e..4052ee734 100644 --- a/test/4.2-cups-printer-ops.test +++ b/test/4.2-cups-printer-ops.test @@ -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. # @@ -204,6 +204,7 @@ 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 @@ -323,5 +324,5 @@ } # -# 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 $" # diff --git a/test/4.3-job-ops.test b/test/4.3-job-ops.test index 2f46fda6c..fbfa3b958 100644 --- a/test/4.3-job-ops.test +++ b/test/4.3-job-ops.test @@ -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. # @@ -326,5 +326,5 @@ } # -# 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 $" # diff --git a/test/4.4-subscription-ops.test b/test/4.4-subscription-ops.test index ebdcf283d..e0a18a365 100644 --- a/test/4.4-subscription-ops.test +++ b/test/4.4-subscription-ops.test @@ -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. # @@ -149,5 +149,5 @@ } # -# 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 $" # diff --git a/test/5.1-lpadmin.sh b/test/5.1-lpadmin.sh index bf26531f4..dd9927b7d 100644 --- a/test/5.1-lpadmin.sh +++ b/test/5.1-lpadmin.sh @@ -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 $". # diff --git a/test/5.2-lpc.sh b/test/5.2-lpc.sh index e315329d5..3797ab08e 100644 --- a/test/5.2-lpc.sh +++ b/test/5.2-lpc.sh @@ -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 $". # diff --git a/test/5.3-lpq.sh b/test/5.3-lpq.sh index 842c97e04..8c9491a38 100644 --- a/test/5.3-lpq.sh +++ b/test/5.3-lpq.sh @@ -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 $". # diff --git a/test/5.4-lpstat.sh b/test/5.4-lpstat.sh index 10f3c7503..2209a5de7 100644 --- a/test/5.4-lpstat.sh +++ b/test/5.4-lpstat.sh @@ -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 $". # diff --git a/test/5.5-lp.sh b/test/5.5-lp.sh index dffa4fd7b..8d673309f 100644 --- a/test/5.5-lp.sh +++ b/test/5.5-lp.sh @@ -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 $". # diff --git a/test/5.6-lpr.sh b/test/5.6-lpr.sh index 28cdb7888..c918ab2e5 100644 --- a/test/5.6-lpr.sh +++ b/test/5.6-lpr.sh @@ -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 $". # diff --git a/test/5.7-lprm.sh b/test/5.7-lprm.sh index 9dc6719f5..fd89569e2 100644 --- a/test/5.7-lprm.sh +++ b/test/5.7-lprm.sh @@ -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 $". # diff --git a/test/5.8-cancel.sh b/test/5.8-cancel.sh index b60e50b24..321b75b83 100644 --- a/test/5.8-cancel.sh +++ b/test/5.8-cancel.sh @@ -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 $". # diff --git a/test/5.9-lpinfo.sh b/test/5.9-lpinfo.sh index ab287c5bb..416ac5825 100644 --- a/test/5.9-lpinfo.sh +++ b/test/5.9-lpinfo.sh @@ -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 $". # diff --git a/test/Dependencies b/test/Dependencies index 9686a1f66..e7f0cfc5e 100644 --- a/test/Dependencies +++ b/test/Dependencies @@ -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 diff --git a/test/cancel-current-job.test b/test/cancel-current-job.test index 739bd8ed4..1c7476945 100644 --- a/test/cancel-current-job.test +++ b/test/cancel-current-job.test @@ -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 $". # diff --git a/test/create-printer-subscription.test b/test/create-printer-subscription.test index 0c240cedd..eefb1e6f1 100644 --- a/test/create-printer-subscription.test +++ b/test/create-printer-subscription.test @@ -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 index 000000000..1a2485251 --- /dev/null +++ b/test/everywhere/bonjour-tests.sh @@ -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 index 000000000..1a2485251 --- /dev/null +++ b/test/everywhere/document-format-tests.sh @@ -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 index 000000000..5bcf6c079 --- /dev/null +++ b/test/everywhere/document-format-tests.test @@ -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 index 000000000..1a2485251 --- /dev/null +++ b/test/everywhere/ipp-tests.sh @@ -0,0 +1 @@ +#!/bin/sh diff --git a/test/everywhere/ipp-tests.test b/test/everywhere/ipp-tests.test new file mode 100644 index 000000000..0fb64868a --- /dev/null +++ b/test/everywhere/ipp-tests.test @@ -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 index 000000000..dd35532d0 --- /dev/null +++ b/test/fax-job.test @@ -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 +} diff --git a/test/get-completed-jobs.test b/test/get-completed-jobs.test index 938d900ea..00d3754d2 100644 --- a/test/get-completed-jobs.test +++ b/test/get-completed-jobs.test @@ -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 index 000000000..033016095 --- /dev/null +++ b/test/get-job-template-attributes.test @@ -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 +} diff --git a/test/get-jobs.test b/test/get-jobs.test index 68908cc96..2b2c031e8 100644 --- a/test/get-jobs.test +++ b/test/get-jobs.test @@ -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 $". # diff --git a/test/get-notifications.test b/test/get-notifications.test index 0f01b1f6a..874d21434 100644 --- a/test/get-notifications.test +++ b/test/get-notifications.test @@ -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 index 000000000..b1d813858 --- /dev/null +++ b/test/get-printer-description-attributes.test @@ -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 +} diff --git a/test/ipp-1.1.test b/test/ipp-1.1.test index 83d31766c..7303b70ea 100644 --- a/test/ipp-1.1.test +++ b/test/ipp-1.1.test @@ -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 $". # diff --git a/test/ipp-2.0.test b/test/ipp-2.0.test index e0c2d32e5..370ec4a11 100644 --- a/test/ipp-2.0.test +++ b/test/ipp-2.0.test @@ -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 $". # diff --git a/test/ipp-2.1.test b/test/ipp-2.1.test index 15cd4c4f5..ca4835121 100644 --- a/test/ipp-2.1.test +++ b/test/ipp-2.1.test @@ -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 $". # diff --git a/test/ipp-2.2.test b/test/ipp-2.2.test index 954ad2353..a6eb7a73b 100644 --- a/test/ipp-2.2.test +++ b/test/ipp-2.2.test @@ -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 $". # diff --git a/test/ipp-everywhere.test b/test/ipp-everywhere.test index 99aacb5d7..5bcf6c079 100644 --- a/test/ipp-everywhere.test +++ b/test/ipp-everywhere.test @@ -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 $". # diff --git a/test/ippfind.c b/test/ippfind.c index b57ae889d..517eacb43 100644 --- a/test/ippfind.c +++ b/test/ippfind.c @@ -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 $". */ diff --git a/test/ippserver.c b/test/ippserver.c index 32a7eb1c8..8ee491fbf 100644 --- a/test/ippserver.c +++ b/test/ippserver.c @@ -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, "&", 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 $". */ diff --git a/test/ipptool.c b/test/ipptool.c index 7d0455101..6e91d83d2 100644 --- a/test/ipptool.c +++ b/test/ipptool.c @@ -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. * @@ -24,9 +24,13 @@ #include #include #ifdef WIN32 -# define R_OK 0 +# include +# ifndef R_OK +# define R_OK 0 +# endif /* !R_OK */ #else # include +# include #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(""); - puts("Name"); - print_xml_string("string", name); + fputs("\n", outfile); + fputs("Name\n", outfile); + print_xml_string(outfile, "string", name); if (file_id[0]) { - puts("FileId"); - print_xml_string("string", file_id); + fputs("FileId\n", outfile); + print_xml_string(outfile, "string", file_id); } if (test_id[0]) { - puts("TestId"); - print_xml_string("string", test_id); + fputs("TestId\n", outfile); + print_xml_string(outfile, "string", test_id); } - puts("Version"); - printf("%d.%d\n", version / 10, version % 10); - puts("Operation"); - print_xml_string("string", ippOpString(op)); - puts("RequestId"); - printf("%d\n", request_id); - puts("RequestAttributes"); - puts(""); + fputs("Version\n", outfile); + fprintf(outfile, "%d.%d\n", version / 10, version % 10); + fputs("Operation\n", outfile); + print_xml_string(outfile, "string", ippOpString(op)); + fputs("RequestId\n", outfile); + fprintf(outfile, "%d\n", request_id); + fputs("RequestAttributes\n", outfile); + fputs("\n", outfile); if (request->attrs) { - puts(""); + fputs("\n", outfile); for (attrptr = request->attrs, group = attrptr ? attrptr->group_tag : IPP_TAG_ZERO; attrptr; attrptr = attrptr->next) - print_attr(attrptr, &group); - puts(""); + print_attr(outfile, Output, attrptr, &group); + fputs("\n", outfile); } - puts(""); + fputs("\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("Successful"); - puts(""); - puts("StatusCode"); - print_xml_string("string", "skip"); - puts("ResponseAttributes"); - puts(""); + fputs("Successful\n", outfile); + fputs("\n", outfile); + fputs("StatusCode\n", outfile); + print_xml_string(outfile, "string", "skip"); + fputs("ResponseAttributes\n", outfile); + fputs("\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("Successful"); - puts(prev_pass ? "" : ""); - puts("StatusCode"); - print_xml_string("string", ippErrorString(cupsLastError())); - puts("ResponseAttributes"); - puts(""); - puts(""); + fputs("Successful\n", outfile); + fputs(prev_pass ? "\n" : "\n", outfile); + fputs("StatusCode\n", outfile); + print_xml_string(outfile, "string", ippErrorString(cupsLastError())); + fputs("ResponseAttributes\n", outfile); + fputs("\n", outfile); + fputs("\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(""); - puts(""); + print_attr(outfile, Output, attrptr, &group); + fputs("\n", outfile); + fputs("\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("Errors"); - puts(""); + fputs("Errors\n", outfile); + fputs("\n", outfile); for (error = (char *)cupsArrayFirst(errors); error; error = (char *)cupsArrayNext(errors)) - print_xml_string("string", error); + print_xml_string(outfile, "string", error); - puts(""); + fputs("\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(""); + fputs("\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(""); - puts(""); + fputs("\n", outfile); + fputs("\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(""); + fputs("\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("%d\n", attr->values[i].integer); - else - printf("%d ", attr->values[i].integer); + fprintf(outfile, "%d\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 ? "" : ""); - else if (attr->values[i].boolean) - fputs("true ", stdout); - else - fputs("false ", stdout); + fputs(attr->values[i].boolean ? "\n" : "\n", outfile); break; case IPP_TAG_RANGE : for (i = 0; i < attr->num_values; i ++) - if (Output == _CUPS_OUTPUT_PLIST) - printf("lower%d" - "upper%d\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, "lower%d" + "upper%d\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("xres%d" - "yres%d" - "units%s\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, "xres%d" + "yres%d" + "units%s\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("%s\n", iso_date(attr->values[i].date)); - else - printf("%s ", iso_date(attr->values[i].date)); + fprintf(outfile, "%s\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("%s\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, "%s\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("language", stdout); - print_xml_string(NULL, attr->values[i].string.language); - fputs("string", stdout); - print_xml_string(NULL, attr->values[i].string.text); - puts(""); - } - else - printf("\"%s\"[%s] ", attr->values[i].string.text, - attr->values[i].string.language); + { + fputs("language", outfile); + print_xml_string(outfile, NULL, attr->values[i].string.language); + fputs("string", outfile); + print_xml_string(outfile, NULL, attr->values[i].string.text); + fputs("\n", outfile); + } break; case IPP_TAG_BEGIN_COLLECTION : for (i = 0; i < attr->num_values; i ++) { - if (Output == _CUPS_OUTPUT_PLIST) - { - puts(""); - for (colattr = attr->values[i].collection->attrs; - colattr; - colattr = colattr->next) - print_attr(colattr, NULL); - puts(""); - } - else - { - if (i) - putchar(' '); - - print_col(attr->values[i].collection); - } + fputs("\n", outfile); + for (colattr = attr->values[i].collection->attrs; + colattr; + colattr = colattr->next) + print_attr(outfile, format, colattr, NULL); + fputs("\n", outfile); } break; default : - if (Output == _CUPS_OUTPUT_PLIST) - printf("<<%s>>\n", - ippTagString(attr->value_tag)); - else - fputs(ippTagString(attr->value_tag), stdout); + fprintf(outfile, "<<%s>>\n", ippTagString(attr->value_tag)); break; } if (attr->num_values > 1) - puts(""); + fputs("\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(""); - puts(""); - puts(""); - puts(""); - puts("ipptoolVersion"); - puts("" CUPS_SVERSION ""); - puts("Transfer"); - printf("%s\n", - Transfer == _CUPS_TRANSFER_AUTO ? "auto" : - Transfer == _CUPS_TRANSFER_CHUNKED ? "chunked" : "length"); - puts("Tests"); - puts(""); + fputs("\n", outfile); + fputs("\n", outfile); + fputs("\n", outfile); + fputs("\n", outfile); + fputs("ipptoolVersion\n", outfile); + fputs("" CUPS_SVERSION "\n", outfile); + fputs("Transfer\n", outfile); + fprintf(outfile, "%s\n", + Transfer == _CUPS_TRANSFER_AUTO ? "auto" : + Transfer == _CUPS_TRANSFER_CHUNKED ? "chunked" : "length"); + fputs("Tests\n", outfile); + fputs("\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("&", stdout); + fputs("&", outfile); else if (*s == '<') - fputs("<", stdout); + fputs("<", outfile); else if (*s == '>') - fputs(">", stdout); + fputs(">", 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("\n", element); + fprintf(outfile, "\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(""); - puts("Successful"); - puts(success ? "" : ""); + fputs("\n", outfile); + fputs("Successful\n", outfile); + fputs(success ? "\n" : "\n", outfile); if (message) { - puts("ErrorMessage"); - print_xml_string("string", message); + fputs("ErrorMessage\n", outfile); + print_xml_string(outfile, "string", message); } - puts(""); - puts(""); + fputs("\n", outfile); + fputs("\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 $". */ diff --git a/test/run-stp-tests.sh b/test/run-stp-tests.sh index ce9ead32b..d437e07a4 100755 --- a/test/run-stp-tests.sh +++ b/test/run-stp-tests.sh @@ -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" <"$BASE/bin/filter/$dst" <"/tmp/cups-$user/bin/filter/$dst" <"$BASE/bin/filter/$dst" <"/tmp/cups-$user/bin/filter/$dst" <"$BASE/bin/filter/$dst" </tmp/cups-$user/cupsd.conf <$BASE/cupsd.conf < EOF -cat >/tmp/cups-$user/cups-files.conf <>$BASE/cupsd.conf +fi + +cat >$BASE/cups-files.conf <> /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 <>$BASE/printers.conf < Accepting Yes DeviceURI file:/dev/null @@ -515,13 +527,13 @@ StateMessage Printer $1 is idle. 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 <>$BASE/printers.conf < 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 "" >>$strfile # @@ -778,7 +819,7 @@ echo "" echo "

    Summary

    " >>$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 "

    FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'

    " >>$strfile echo "
    " >>$strfile
    -	$GREP CUPS-Get-Default /tmp/cups-$user/log/access_log | sed -e '1,$s/&/&/g' -e '1,$s/>$strfile
    +	$GREP CUPS-Get-Default $BASE/log/access_log | sed -e '1,$s/&/&/g' -e '1,$s/>$strfile
     	echo "
    " >>$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 "

    FAIL: $count emergency messages, expected 0.

    " >>$strfile echo "
    " >>$strfile
    -	$GREP '^X ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/>$strfile
    +	$GREP '^X ' $BASE/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/>$strfile
     	echo "
    " >>$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 "

    FAIL: $count alert messages, expected 0.

    " >>$strfile echo "
    " >>$strfile
    -	$GREP '^A ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/>$strfile
    +	$GREP '^A ' $BASE/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/>$strfile
     	echo "
    " >>$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 "

    FAIL: $count critical messages, expected 0.

    " >>$strfile echo "
    " >>$strfile
    -	$GREP '^C ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/>$strfile
    +	$GREP '^C ' $BASE/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/>$strfile
     	echo "
    " >>$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 "

    FAIL: $count error messages, expected 33.

    " >>$strfile echo "
    " >>$strfile
    -	$GREP '^E ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/>$strfile
    +	$GREP '^E ' $BASE/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/>$strfile
     	echo "
    " >>$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 "

    FAIL: $count warning messages, expected 9.

    " >>$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 "

    FAIL: $count warning messages, expected 18.

    " >>$strfile echo "
    " >>$strfile
    -	$GREP '^W ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/>$strfile
    +	$GREP '^W ' $BASE/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/>$strfile
     	echo "
    " >>$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 "

    FAIL: $count notice messages, expected 0.

    " >>$strfile echo "
    " >>$strfile
    -	$GREP '^N ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/>$strfile
    +	$GREP '^N ' $BASE/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/>$strfile
     	echo "
    " >>$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 "

    FAIL: $count info messages, expected more than 0.

    " >>$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 "

    FAIL: $count debug messages, expected more than 0.

    " >>$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 "

    FAIL: $count debug2 messages, expected more than 0.

    " >>$strfile @@ -977,17 +1018,17 @@ fi # Log files... echo "

    access_log

    " >>$strfile echo "
    " >>$strfile
    -sed -e '1,$s/&/&/g' -e '1,$s/>$strfile
    +sed -e '1,$s/&/&/g' -e '1,$s/>$strfile
     echo "
    " >>$strfile echo "

    error_log

    " >>$strfile echo "
    " >>$strfile
    -$GREP -v '^d' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/>$strfile
    +$GREP -v '^d' $BASE/log/error_log | sed -e '1,$s/&/&/g' -e '1,$s/>$strfile
     echo "
    " >>$strfile echo "

    page_log

    " >>$strfile echo "
    " >>$strfile
    -sed -e '1,$s/&/&/g' -e '1,$s/>$strfile
    +sed -e '1,$s/&/&/g' -e '1,$s/>$strfile
     echo "
    " >>$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 $" # diff --git a/test/str-header.html b/test/str-header.html index 7d97e91bf..4dafd6806 100644 --- a/test/str-header.html +++ b/test/str-header.html @@ -1,10 +1,10 @@ - - + + - CUPS 1.7 Software Test Report + CUPS 2.0 Software Test Report