summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES-1.7.txt250
-rw-r--r--CHANGES-IPPTOOL.txt9
-rw-r--r--CHANGES.txt340
-rw-r--r--INSTALL.txt13
-rw-r--r--IPPTOOL.txt4
-rw-r--r--LICENSE.txt20
-rw-r--r--Makedefs.in43
-rw-r--r--Makefile40
-rw-r--r--README.txt27
-rw-r--r--backend/Dependencies117
-rw-r--r--backend/Makefile32
-rw-r--r--backend/backend-private.h24
-rw-r--r--backend/dnssd.c58
-rw-r--r--backend/ieee1284.c48
-rw-r--r--backend/ipp.c173
-rw-r--r--backend/lpd.c99
-rw-r--r--backend/network.c72
-rw-r--r--backend/org.cups.usb-quirks6
-rw-r--r--backend/runloop.c41
-rw-r--r--backend/snmp-supplies.c53
-rw-r--r--backend/snmp.c67
-rw-r--r--backend/socket.c39
-rw-r--r--backend/testbackend.c44
-rw-r--r--backend/usb-darwin.c110
-rw-r--r--backend/usb-libusb.c52
-rw-r--r--backend/usb-unix.c35
-rw-r--r--berkeley/Dependencies41
-rw-r--r--berkeley/lpc.c34
-rw-r--r--berkeley/lpq.c60
-rw-r--r--berkeley/lpr.c26
-rw-r--r--cgi-bin/Dependencies39
-rw-r--r--cgi-bin/Makefile59
-rw-r--r--cgi-bin/admin.c78
-rw-r--r--cgi-bin/classes.c38
-rw-r--r--cgi-bin/help-index.c50
-rw-r--r--cgi-bin/ipp-var.c40
-rw-r--r--cgi-bin/jobs.c28
-rw-r--r--cgi-bin/printers.c38
-rw-r--r--cgi-bin/search.c34
-rw-r--r--cgi-bin/template.c49
-rw-r--r--cgi-bin/testcgi.c28
-rw-r--r--cgi-bin/var.c111
-rw-r--r--cgi-bin/websearch.c116
-rw-r--r--conf/cups-files.conf.in8
-rw-r--r--conf/cupsd.conf.in9
-rw-r--r--conf/mime.types5
-rw-r--r--conf/snmp.conf.in10
-rw-r--r--config-scripts/cups-common.m417
-rw-r--r--config-scripts/cups-compiler.m4109
-rw-r--r--config-scripts/cups-defaults.m417
-rw-r--r--config-scripts/cups-directories.m4142
-rw-r--r--config-scripts/cups-dnssd.m44
-rw-r--r--config-scripts/cups-gssapi.m46
-rw-r--r--config-scripts/cups-largefile.m44
-rw-r--r--config-scripts/cups-launchd.m443
-rw-r--r--config-scripts/cups-libtool.m44
-rw-r--r--config-scripts/cups-manpages.m428
-rw-r--r--config-scripts/cups-network.m423
-rw-r--r--config-scripts/cups-opsys.m44
-rw-r--r--config-scripts/cups-pam.m423
-rw-r--r--config-scripts/cups-poll.m44
-rw-r--r--config-scripts/cups-scripting.m44
-rw-r--r--config-scripts/cups-sharedlibs.m4106
-rw-r--r--config-scripts/cups-ssl.m489
-rw-r--r--config-scripts/cups-startup.m4176
-rw-r--r--config-scripts/cups-threads.m44
-rw-r--r--config.h.in81
-rwxr-xr-xconfigure1096
-rw-r--r--configure.ac (renamed from configure.in)29
-rw-r--r--cups/Dependencies452
-rw-r--r--cups/Makefile92
-rw-r--r--cups/adminutil.c41
-rw-r--r--cups/api-filter.shtml26
-rw-r--r--cups/array.c92
-rw-r--r--cups/auth.c50
-rw-r--r--cups/backchannel.c30
-rw-r--r--cups/conflicts.c42
-rw-r--r--cups/cups-private.h8
-rw-r--r--cups/cups.h17
-rw-r--r--cups/debug.c57
-rw-r--r--cups/dest-job.c36
-rw-r--r--cups/dest-localization.c198
-rw-r--r--cups/dest-options.c68
-rw-r--r--cups/dest.c236
-rw-r--r--cups/emit.c79
-rw-r--r--cups/encode.c16
-rw-r--r--cups/file-private.h30
-rw-r--r--cups/file.c123
-rw-r--r--cups/file.h30
-rw-r--r--cups/getputfile.c39
-rw-r--r--cups/globals.c8
-rw-r--r--cups/http-addr.c264
-rw-r--r--cups/http-addrlist.c23
-rw-r--r--cups/http-private.h121
-rw-r--r--cups/http-support.c388
-rw-r--r--cups/http.c2084
-rw-r--r--cups/http.h61
-rw-r--r--cups/ipp-private.h22
-rw-r--r--cups/ipp-support.c217
-rw-r--r--cups/ipp.c504
-rw-r--r--cups/ipp.h45
-rw-r--r--cups/langprintf.c61
-rw-r--r--cups/language.c74
-rw-r--r--cups/libcups2.def950
-rw-r--r--cups/libcups_s.exp85
-rw-r--r--cups/localize.c89
-rw-r--r--cups/mark.c49
-rw-r--r--cups/md5.c14
-rw-r--r--cups/options.c43
-rw-r--r--cups/ppd-cache.c112
-rw-r--r--cups/ppd-private.h36
-rw-r--r--cups/ppd.c116
-rw-r--r--cups/pwg-media.c67
-rw-r--r--cups/pwg-private.h5
-rw-r--r--cups/request.c52
-rw-r--r--cups/sidechannel.c73
-rw-r--r--cups/snmp-private.h28
-rw-r--r--cups/snmp.c208
-rw-r--r--cups/sspi-private.h82
-rw-r--r--cups/sspi.c1468
-rw-r--r--cups/string-private.h4
-rw-r--r--cups/string.c49
-rw-r--r--cups/tempfile.c72
-rw-r--r--cups/testarray.c33
-rw-r--r--cups/testcache.c98
-rw-r--r--cups/testcups.c34
-rw-r--r--cups/testdest.c460
-rw-r--r--cups/testfile.c64
-rw-r--r--cups/testhttp.c79
-rw-r--r--cups/testi18n.c53
-rw-r--r--cups/testipp.c109
-rw-r--r--cups/testppd.c52
-rw-r--r--cups/testpwg.c4
-rw-r--r--cups/testsnmp.c31
-rw-r--r--cups/thread-private.h22
-rw-r--r--cups/thread.c31
-rw-r--r--cups/tls-darwin.c1664
-rw-r--r--cups/tls-gnutls.c1296
-rw-r--r--cups/tls-sspi.c2365
-rw-r--r--cups/tls.c112
-rw-r--r--cups/transcode.c60
-rw-r--r--cups/usersys.c50
-rw-r--r--cups/util.c327
-rw-r--r--cups/versioning.h12
-rw-r--r--desktop/cups.desktop.in2
-rw-r--r--doc/Makefile45
-rw-r--r--doc/apple-touch-icon.opacitybin0 -> 13914 bytes
-rw-r--r--doc/apple-touch-icon.pngbin0 -> 6139 bytes
-rw-r--r--doc/ca/index.html.in105
-rw-r--r--doc/cs/index.html.in105
-rw-r--r--doc/cups-printable.css16
-rw-r--r--doc/cups.css182
-rw-r--r--doc/de/index.html.in105
-rw-r--r--doc/es/index.html.in160
-rw-r--r--doc/fr/index.html.in105
-rw-r--r--doc/help/accounting.html13
-rw-r--r--doc/help/api-array.html16
-rw-r--r--doc/help/api-cgi.html16
-rw-r--r--doc/help/api-cups.html83
-rw-r--r--doc/help/api-filedir.html16
-rw-r--r--doc/help/api-filter.html43
-rw-r--r--doc/help/api-httpipp.html531
-rw-r--r--doc/help/api-mime.html16
-rw-r--r--doc/help/api-overview.html16
-rw-r--r--doc/help/api-ppd.html16
-rw-r--r--doc/help/api-ppdc.html16
-rw-r--r--doc/help/api-raster.html16
-rw-r--r--doc/help/cgi.html8
-rw-r--r--doc/help/glossary.html9
-rw-r--r--doc/help/kerberos.html4
-rw-r--r--doc/help/license.html22
-rw-r--r--doc/help/man-backend.html292
-rw-r--r--doc/help/man-cancel.html128
-rw-r--r--doc/help/man-classes.conf.html123
-rw-r--r--doc/help/man-client.conf.html94
-rw-r--r--doc/help/man-cups-config.html167
-rw-r--r--doc/help/man-cups-deviced.html38
-rw-r--r--doc/help/man-cups-driverd.html122
-rw-r--r--doc/help/man-cups-files.conf.html303
-rw-r--r--doc/help/man-cups-lpd.html185
-rw-r--r--doc/help/man-cups-snmp.conf.html101
-rw-r--r--doc/help/man-cups-snmp.html75
-rw-r--r--doc/help/man-cups.html119
-rw-r--r--doc/help/man-cupsaccept.html115
-rw-r--r--doc/help/man-cupsaddsmb.html191
-rw-r--r--doc/help/man-cupsctl.html122
-rw-r--r--doc/help/man-cupsd-helper.html84
-rw-r--r--doc/help/man-cupsd-logs.html194
-rw-r--r--doc/help/man-cupsd.conf.html1242
-rw-r--r--doc/help/man-cupsd.html153
-rw-r--r--doc/help/man-cupsenable.html144
-rw-r--r--doc/help/man-cupsfilter.html210
-rw-r--r--doc/help/man-cupstestdsc.html50
-rw-r--r--doc/help/man-cupstestppd.html234
-rw-r--r--doc/help/man-filter.html392
-rw-r--r--doc/help/man-ippfind.html462
-rw-r--r--doc/help/man-ipptool.html352
-rw-r--r--doc/help/man-ipptoolfile.html822
-rw-r--r--doc/help/man-lp.html421
-rw-r--r--doc/help/man-lpadmin.html382
-rw-r--r--doc/help/man-lpc.html89
-rw-r--r--doc/help/man-lpinfo.html203
-rw-r--r--doc/help/man-lpmove.html100
-rw-r--r--doc/help/man-lpoptions.html221
-rw-r--r--doc/help/man-lppasswd.html64
-rw-r--r--doc/help/man-lpq.html96
-rw-r--r--doc/help/man-lpr.html223
-rw-r--r--doc/help/man-lprm.html109
-rw-r--r--doc/help/man-lpstat.html241
-rw-r--r--doc/help/man-mailto.conf.html68
-rw-r--r--doc/help/man-mime.convs.html55
-rw-r--r--doc/help/man-mime.types.html169
-rw-r--r--doc/help/man-notifier.html176
-rw-r--r--doc/help/man-ppdc.html124
-rw-r--r--doc/help/man-ppdcfile.html289
-rw-r--r--doc/help/man-ppdhtml.html53
-rw-r--r--doc/help/man-ppdi.html59
-rw-r--r--doc/help/man-ppdmerge.html53
-rw-r--r--doc/help/man-ppdpo.html64
-rw-r--r--doc/help/man-printers.conf.html142
-rw-r--r--doc/help/man-subscriptions.conf.html96
-rw-r--r--doc/help/network.html8
-rw-r--r--doc/help/overview.html9
-rw-r--r--doc/help/policies.html267
-rw-r--r--doc/help/postscript-driver.html16
-rw-r--r--doc/help/ppd-compiler.html16
-rw-r--r--doc/help/raster-driver.html16
-rw-r--r--doc/help/ref-access_log.html140
-rw-r--r--doc/help/ref-classes-conf.html565
-rw-r--r--doc/help/ref-client-conf.html94
-rw-r--r--doc/help/ref-cups-files-conf.html.in529
-rw-r--r--doc/help/ref-cupsd-conf.html.in2155
-rw-r--r--doc/help/ref-error_log.html55
-rw-r--r--doc/help/ref-mailto-conf.html108
-rw-r--r--doc/help/ref-page_log.html77
-rw-r--r--doc/help/ref-printers-conf.html719
-rw-r--r--doc/help/ref-snmp-conf.html145
-rw-r--r--doc/help/ref-subscriptions-conf.html354
-rw-r--r--doc/help/security.html53
-rw-r--r--doc/help/spec-browsing.html0
-rw-r--r--doc/help/spec-cmp.html2
-rw-r--r--doc/help/spec-design.html6
-rw-r--r--doc/help/spec-ipp.html14
-rw-r--r--doc/help/spec-pdf.html11
-rw-r--r--doc/help/spec-ppd.html16
-rw-r--r--doc/help/whatsnew.html20
-rw-r--r--doc/index.html.in160
-rw-r--r--doc/it/index.html.in105
-rw-r--r--doc/ja/index.html.in105
-rw-r--r--doc/pt_BR/index.html.in107
-rw-r--r--doc/ru/index.html.in101
-rw-r--r--filter/Dependencies73
-rw-r--r--filter/commandtops.c33
-rw-r--r--filter/common.c35
-rw-r--r--filter/error.c44
-rw-r--r--filter/gziptoany.c30
-rw-r--r--filter/interpret.c136
-rw-r--r--filter/pstops.c208
-rw-r--r--filter/raster.c185
-rw-r--r--filter/rasterbench.c37
-rw-r--r--filter/rastertoepson.c153
-rw-r--r--filter/rastertohp.c117
-rw-r--r--filter/rastertolabel.c124
-rw-r--r--filter/rastertopwg.c54
-rw-r--r--filter/testraster.c64
-rw-r--r--locale/Dependencies26
-rw-r--r--locale/Makefile38
-rw-r--r--locale/cups.header16
-rw-r--r--locale/cups.pot2742
-rw-r--r--locale/cups.strings101
-rw-r--r--locale/cups_ca.po494
-rw-r--r--locale/cups_cs.po2701
-rw-r--r--locale/cups_de.po8739
-rw-r--r--locale/cups_es.po2618
-rw-r--r--locale/cups_fr.po322
-rw-r--r--locale/cups_it.po485
-rw-r--r--locale/cups_ja.po481
-rw-r--r--locale/cups_pt_BR.po6019
-rw-r--r--locale/cups_ru.po351
-rw-r--r--locale/po2strings.c26
-rw-r--r--locale/strings2po.c20
-rw-r--r--locale/translate.c439
-rw-r--r--man/Makefile36
-rw-r--r--man/backend.man269
-rw-r--r--man/cancel.man116
-rw-r--r--man/classes.conf.man122
-rw-r--r--man/client.conf.man.in101
-rw-r--r--man/cups-config.man157
-rw-r--r--man/cups-deviced.man.in44
-rw-r--r--man/cups-driverd.man.in122
-rw-r--r--man/cups-files.conf.man.in263
-rw-r--r--man/cups-lpd.man.in200
-rw-r--r--man/cups-snmp.conf.man99
-rw-r--r--man/cups-snmp.man.in79
-rw-r--r--man/cups.man147
-rw-r--r--man/cupsaccept.man107
-rw-r--r--man/cupsaddsmb.man.in193
-rw-r--r--man/cupsctl.man101
-rw-r--r--man/cupsd-helper.man94
-rw-r--r--man/cupsd-logs.man241
-rw-r--r--man/cupsd.conf.man.in992
-rw-r--r--man/cupsd.man.in149
-rw-r--r--man/cupsenable.man131
-rw-r--r--man/cupsfilter.man141
-rw-r--r--man/cupstestdsc.man63
-rw-r--r--man/cupstestppd.man166
-rw-r--r--man/filter.man318
-rw-r--r--man/ippfind.man268
-rw-r--r--man/ipptool.man284
-rw-r--r--man/ipptoolfile.man822
-rw-r--r--man/lp.man320
-rw-r--r--man/lpadmin.man305
-rw-r--r--man/lpc.man77
-rw-r--r--man/lpinfo.man165
-rw-r--r--man/lpmove.man92
-rw-r--r--man/lpoptions.man.in192
-rw-r--r--man/lppasswd.man68
-rw-r--r--man/lpq.man84
-rw-r--r--man/lpr.man183
-rw-r--r--man/lprm.man105
-rw-r--r--man/lpstat.man197
-rw-r--r--man/mailto.conf.man70
-rw-r--r--man/mantohtml.c1042
-rw-r--r--man/mime.convs.man76
-rw-r--r--man/mime.types.man163
-rw-r--r--man/notifier.man163
-rw-r--r--man/ppdc.man149
-rw-r--r--man/ppdcfile.man175
-rw-r--r--man/ppdhtml.man65
-rw-r--r--man/ppdi.man68
-rw-r--r--man/ppdmerge.man63
-rw-r--r--man/ppdpo.man76
-rw-r--r--man/printers.conf.man136
-rw-r--r--man/subscriptions.conf.man103
-rw-r--r--monitor/Dependencies19
-rw-r--r--monitor/bcp.c49
-rw-r--r--monitor/tbcp.c49
-rw-r--r--notifier/Dependencies24
-rw-r--r--notifier/dbus.c20
-rw-r--r--notifier/rss.c34
-rw-r--r--packaging/cups.list.in24
-rw-r--r--packaging/cups.spec93
-rw-r--r--packaging/cups.spec.in89
-rw-r--r--ppdc/Dependencies284
-rw-r--r--ppdc/Makefile46
-rw-r--r--ppdc/genstrings.cxx31
-rw-r--r--ppdc/ppdc-array.cxx35
-rw-r--r--ppdc/ppdc-catalog.cxx161
-rw-r--r--ppdc/ppdc-driver.cxx40
-rw-r--r--ppdc/ppdc-source.cxx118
-rw-r--r--ppdc/ppdc.cxx29
-rw-r--r--ppdc/ppdmerge.cxx30
-rw-r--r--ppdc/sample.drv161
-rw-r--r--scheduler/Dependencies459
-rw-r--r--scheduler/Makefile120
-rw-r--r--scheduler/auth.c518
-rw-r--r--scheduler/auth.h36
-rw-r--r--scheduler/cert.c40
-rw-r--r--scheduler/classes.c42
-rw-r--r--scheduler/client.c1704
-rw-r--r--scheduler/client.h36
-rw-r--r--scheduler/colorman.c78
-rw-r--r--scheduler/conf.c196
-rw-r--r--scheduler/conf.h81
-rw-r--r--scheduler/cups-deviced.c43
-rw-r--r--scheduler/cups-driverd.cxx112
-rw-r--r--scheduler/cups-exec.c160
-rw-r--r--scheduler/cups-lpd.c20
-rw-r--r--scheduler/cups.sh.in43
-rw-r--r--scheduler/cupsd.h37
-rw-r--r--scheduler/cupsfilter.c366
-rw-r--r--scheduler/dirsvc.c4
-rw-r--r--scheduler/file.c36
-rw-r--r--scheduler/ipp.c518
-rw-r--r--scheduler/job.c286
-rw-r--r--scheduler/job.h30
-rw-r--r--scheduler/listen.c197
-rw-r--r--scheduler/log.c220
-rw-r--r--scheduler/main.c702
-rw-r--r--scheduler/mime.c61
-rw-r--r--scheduler/mime.h11
-rw-r--r--scheduler/network.c27
-rw-r--r--scheduler/org.cups.cups-lpd.plist.in4
-rw-r--r--scheduler/org.cups.cupsd.path.in8
-rw-r--r--scheduler/org.cups.cupsd.plist9
-rw-r--r--scheduler/org.cups.cupsd.service.in10
-rw-r--r--scheduler/org.cups.cupsd.socket.in12
-rw-r--r--scheduler/policy.c6
-rw-r--r--scheduler/printers.c183
-rw-r--r--scheduler/printers.h4
-rw-r--r--scheduler/process.c417
-rw-r--r--scheduler/select.c50
-rw-r--r--scheduler/server.c6
-rw-r--r--scheduler/statbuf.c31
-rw-r--r--scheduler/subscriptions.c49
-rw-r--r--scheduler/sysman.c352
-rw-r--r--scheduler/sysman.h24
-rw-r--r--scheduler/testlpd.c69
-rw-r--r--scheduler/testmime.c32
-rw-r--r--scheduler/testspeed.c29
-rw-r--r--scheduler/testsub.c29
-rw-r--r--scheduler/tls-darwin.c432
-rw-r--r--scheduler/tls-gnutls.c292
-rw-r--r--scheduler/tls-openssl.c353
-rw-r--r--scheduler/tls.c30
-rw-r--r--scheduler/type.c142
-rw-r--r--scheduler/util.c46
-rw-r--r--scheduler/util.h22
-rw-r--r--systemv/Dependencies120
-rw-r--r--systemv/Makefile35
-rw-r--r--systemv/cupstestppd.c10
-rw-r--r--systemv/lp.c28
-rw-r--r--systemv/lpadmin.c40
-rw-r--r--systemv/lpoptions.c58
-rw-r--r--systemv/lppasswd.c489
-rw-r--r--systemv/lpstat.c94
-rw-r--r--templates/Makefile22
-rw-r--r--templates/add-class.tmpl3
-rw-r--r--templates/add-printer.tmpl3
-rw-r--r--templates/admin.tmpl199
-rw-r--r--templates/ca/add-class.tmpl40
-rw-r--r--templates/ca/add-printer.tmpl47
-rw-r--r--templates/ca/add-rss-subscription.tmpl44
-rw-r--r--templates/ca/admin.tmpl102
-rw-r--r--templates/ca/choose-device.tmpl53
-rw-r--r--templates/ca/choose-make.tmpl64
-rw-r--r--templates/ca/choose-model.tmpl60
-rw-r--r--templates/ca/choose-serial.tmpl52
-rw-r--r--templates/ca/choose-uri.tmpl43
-rw-r--r--templates/ca/class-added.tmpl7
-rw-r--r--templates/ca/class-confirm.tmpl10
-rw-r--r--templates/ca/class-deleted.tmpl7
-rw-r--r--templates/ca/class-jobs-header.tmpl3
-rw-r--r--templates/ca/class-modified.tmpl7
-rw-r--r--templates/ca/class.tmpl44
-rw-r--r--templates/ca/classes-header.tmpl1
-rw-r--r--templates/ca/classes.tmpl11
-rw-r--r--templates/ca/command.tmpl12
-rw-r--r--templates/ca/edit-config.tmpl24
-rw-r--r--templates/ca/error-op.tmpl9
-rw-r--r--templates/ca/error.tmpl9
-rw-r--r--templates/ca/header.tmpl.in38
-rw-r--r--templates/ca/help-header.tmpl52
-rw-r--r--templates/ca/help-printable.tmpl9
-rw-r--r--templates/ca/help-trailer.tmpl1
-rw-r--r--templates/ca/job-cancel.tmpl7
-rw-r--r--templates/ca/job-hold.tmpl7
-rw-r--r--templates/ca/job-move.tmpl27
-rw-r--r--templates/ca/job-moved.tmpl8
-rw-r--r--templates/ca/job-release.tmpl7
-rw-r--r--templates/ca/job-restart.tmpl7
-rw-r--r--templates/ca/jobs-header.tmpl5
-rw-r--r--templates/ca/jobs.tmpl36
-rw-r--r--templates/ca/list-available-printers.tmpl11
-rw-r--r--templates/ca/modify-class.tmpl34
-rw-r--r--templates/ca/modify-printer.tmpl42
-rw-r--r--templates/ca/norestart.tmpl8
-rw-r--r--templates/ca/option-boolean.tmpl6
-rw-r--r--templates/ca/option-conflict.tmpl7
-rw-r--r--templates/ca/option-header.tmpl5
-rw-r--r--templates/ca/option-pickmany.tmpl6
-rw-r--r--templates/ca/option-pickone.tmpl18
-rw-r--r--templates/ca/option-trailer.tmpl5
-rw-r--r--templates/ca/pager.tmpl6
-rw-r--r--templates/ca/printer-accept.tmpl9
-rw-r--r--templates/ca/printer-added.tmpl8
-rw-r--r--templates/ca/printer-configured.tmpl6
-rw-r--r--templates/ca/printer-confirm.tmpl10
-rw-r--r--templates/ca/printer-default.tmpl12
-rw-r--r--templates/ca/printer-deleted.tmpl7
-rw-r--r--templates/ca/printer-jobs-header.tmpl3
-rw-r--r--templates/ca/printer-modified.tmpl8
-rw-r--r--templates/ca/printer-purge.tmpl8
-rw-r--r--templates/ca/printer-reject.tmpl9
-rw-r--r--templates/ca/printer-start.tmpl9
-rw-r--r--templates/ca/printer-stop.tmpl9
-rw-r--r--templates/ca/printer.tmpl47
-rw-r--r--templates/ca/printers-header.tmpl1
-rw-r--r--templates/ca/printers.tmpl11
-rw-r--r--templates/ca/restart.tmpl8
-rw-r--r--templates/ca/samba-export.tmpl55
-rw-r--r--templates/ca/samba-exported.tmpl1
-rw-r--r--templates/ca/search.tmpl10
-rw-r--r--templates/ca/set-printer-options-header.tmpl26
-rw-r--r--templates/ca/set-printer-options-trailer.tmpl16
-rw-r--r--templates/ca/subscription-added.tmpl5
-rw-r--r--templates/ca/subscription-canceled.tmpl5
-rw-r--r--templates/ca/test-page.tmpl8
-rw-r--r--templates/ca/trailer.tmpl8
-rw-r--r--templates/ca/users.tmpl30
-rw-r--r--templates/choose-device.tmpl4
-rw-r--r--templates/choose-make.tmpl3
-rw-r--r--templates/choose-model.tmpl3
-rw-r--r--templates/choose-serial.tmpl3
-rw-r--r--templates/choose-uri.tmpl3
-rw-r--r--templates/class-added.tmpl4
-rw-r--r--templates/class-confirm.tmpl4
-rw-r--r--templates/class-deleted.tmpl4
-rw-r--r--templates/class-jobs-header.tmpl2
-rw-r--r--templates/class-modified.tmpl4
-rw-r--r--templates/class.tmpl3
-rw-r--r--templates/command.tmpl4
-rw-r--r--templates/cs/add-class.tmpl40
-rw-r--r--templates/cs/add-printer.tmpl47
-rw-r--r--templates/cs/add-rss-subscription.tmpl44
-rw-r--r--templates/cs/admin.tmpl102
-rw-r--r--templates/cs/choose-device.tmpl53
-rw-r--r--templates/cs/choose-make.tmpl64
-rw-r--r--templates/cs/choose-model.tmpl60
-rw-r--r--templates/cs/choose-serial.tmpl52
-rw-r--r--templates/cs/choose-uri.tmpl44
-rw-r--r--templates/cs/class-added.tmpl7
-rw-r--r--templates/cs/class-confirm.tmpl10
-rw-r--r--templates/cs/class-deleted.tmpl7
-rw-r--r--templates/cs/class-jobs-header.tmpl3
-rw-r--r--templates/cs/class-modified.tmpl7
-rw-r--r--templates/cs/class.tmpl44
-rw-r--r--templates/cs/classes-header.tmpl1
-rw-r--r--templates/cs/classes.tmpl12
-rw-r--r--templates/cs/command.tmpl12
-rw-r--r--templates/cs/edit-config.tmpl24
-rw-r--r--templates/cs/error-op.tmpl9
-rw-r--r--templates/cs/error.tmpl9
-rw-r--r--templates/cs/header.tmpl.in29
-rw-r--r--templates/cs/help-header.tmpl48
-rw-r--r--templates/cs/help-printable.tmpl9
-rw-r--r--templates/cs/help-trailer.tmpl1
-rw-r--r--templates/cs/job-cancel.tmpl7
-rw-r--r--templates/cs/job-hold.tmpl7
-rw-r--r--templates/cs/job-move.tmpl27
-rw-r--r--templates/cs/job-moved.tmpl8
-rw-r--r--templates/cs/job-release.tmpl7
-rw-r--r--templates/cs/job-restart.tmpl7
-rw-r--r--templates/cs/jobs-header.tmpl5
-rw-r--r--templates/cs/jobs.tmpl37
-rw-r--r--templates/cs/list-available-printers.tmpl11
-rw-r--r--templates/cs/modify-class.tmpl34
-rw-r--r--templates/cs/modify-printer.tmpl42
-rw-r--r--templates/cs/norestart.tmpl8
-rw-r--r--templates/cs/option-boolean.tmpl6
-rw-r--r--templates/cs/option-conflict.tmpl7
-rw-r--r--templates/cs/option-header.tmpl5
-rw-r--r--templates/cs/option-pickmany.tmpl6
-rw-r--r--templates/cs/option-pickone.tmpl18
-rw-r--r--templates/cs/option-trailer.tmpl5
-rw-r--r--templates/cs/pager.tmpl6
-rw-r--r--templates/cs/printer-accept.tmpl9
-rw-r--r--templates/cs/printer-added.tmpl7
-rw-r--r--templates/cs/printer-configured.tmpl8
-rw-r--r--templates/cs/printer-confirm.tmpl10
-rw-r--r--templates/cs/printer-default.tmpl11
-rw-r--r--templates/cs/printer-deleted.tmpl7
-rw-r--r--templates/cs/printer-jobs-header.tmpl3
-rw-r--r--templates/cs/printer-modified.tmpl8
-rw-r--r--templates/cs/printer-purge.tmpl10
-rw-r--r--templates/cs/printer-reject.tmpl9
-rw-r--r--templates/cs/printer-start.tmpl9
-rw-r--r--templates/cs/printer-stop.tmpl9
-rw-r--r--templates/cs/printer.tmpl48
-rw-r--r--templates/cs/printers-header.tmpl1
-rw-r--r--templates/cs/printers.tmpl11
-rw-r--r--templates/cs/restart.tmpl8
-rw-r--r--templates/cs/samba-export.tmpl55
-rw-r--r--templates/cs/samba-exported.tmpl1
-rw-r--r--templates/cs/search.tmpl10
-rw-r--r--templates/cs/set-printer-options-header.tmpl26
-rw-r--r--templates/cs/set-printer-options-trailer.tmpl16
-rw-r--r--templates/cs/subscription-added.tmpl5
-rw-r--r--templates/cs/subscription-canceled.tmpl5
-rw-r--r--templates/cs/test-page.tmpl8
-rw-r--r--templates/cs/trailer.tmpl8
-rw-r--r--templates/cs/users.tmpl30
-rw-r--r--templates/de/add-class.tmpl40
-rw-r--r--templates/de/add-printer.tmpl52
-rw-r--r--templates/de/add-rss-subscription.tmpl44
-rw-r--r--templates/de/admin.tmpl110
-rw-r--r--templates/de/choose-device.tmpl53
-rw-r--r--templates/de/choose-make.tmpl68
-rw-r--r--templates/de/choose-model.tmpl65
-rw-r--r--templates/de/choose-serial.tmpl52
-rw-r--r--templates/de/choose-uri.tmpl44
-rw-r--r--templates/de/class-added.tmpl8
-rw-r--r--templates/de/class-confirm.tmpl10
-rw-r--r--templates/de/class-deleted.tmpl7
-rw-r--r--templates/de/class-jobs-header.tmpl3
-rw-r--r--templates/de/class-modified.tmpl8
-rw-r--r--templates/de/class.tmpl44
-rw-r--r--templates/de/classes-header.tmpl1
-rw-r--r--templates/de/classes.tmpl11
-rw-r--r--templates/de/command.tmpl12
-rw-r--r--templates/de/edit-config.tmpl24
-rw-r--r--templates/de/error-op.tmpl9
-rw-r--r--templates/de/error.tmpl9
-rw-r--r--templates/de/header.tmpl.in38
-rw-r--r--templates/de/help-header.tmpl51
-rw-r--r--templates/de/help-printable.tmpl9
-rw-r--r--templates/de/help-trailer.tmpl1
-rw-r--r--templates/de/job-cancel.tmpl7
-rw-r--r--templates/de/job-hold.tmpl7
-rw-r--r--templates/de/job-move.tmpl27
-rw-r--r--templates/de/job-moved.tmpl8
-rw-r--r--templates/de/job-release.tmpl7
-rw-r--r--templates/de/job-restart.tmpl7
-rw-r--r--templates/de/jobs-header.tmpl5
-rw-r--r--templates/de/jobs.tmpl37
-rw-r--r--templates/de/list-available-printers.tmpl11
-rw-r--r--templates/de/modify-class.tmpl34
-rw-r--r--templates/de/modify-printer.tmpl46
-rw-r--r--templates/de/norestart.tmpl8
-rw-r--r--templates/de/option-boolean.tmpl6
-rw-r--r--templates/de/option-conflict.tmpl7
-rw-r--r--templates/de/option-header.tmpl5
-rw-r--r--templates/de/option-pickmany.tmpl6
-rw-r--r--templates/de/option-pickone.tmpl18
-rw-r--r--templates/de/option-trailer.tmpl5
-rw-r--r--templates/de/pager.tmpl6
-rw-r--r--templates/de/printer-accept.tmpl9
-rw-r--r--templates/de/printer-added.tmpl8
-rw-r--r--templates/de/printer-configured.tmpl8
-rw-r--r--templates/de/printer-confirm.tmpl10
-rw-r--r--templates/de/printer-default.tmpl13
-rw-r--r--templates/de/printer-deleted.tmpl7
-rw-r--r--templates/de/printer-jobs-header.tmpl3
-rw-r--r--templates/de/printer-modified.tmpl8
-rw-r--r--templates/de/printer-purge.tmpl9
-rw-r--r--templates/de/printer-reject.tmpl9
-rw-r--r--templates/de/printer-start.tmpl9
-rw-r--r--templates/de/printer-stop.tmpl9
-rw-r--r--templates/de/printer.tmpl49
-rw-r--r--templates/de/printers-header.tmpl1
-rw-r--r--templates/de/printers.tmpl11
-rw-r--r--templates/de/replace-ppd.tmpl40
-rw-r--r--templates/de/restart.tmpl8
-rw-r--r--templates/de/samba-export.tmpl55
-rw-r--r--templates/de/samba-exported.tmpl1
-rw-r--r--templates/de/search.tmpl10
-rw-r--r--templates/de/set-printer-options-header.tmpl26
-rw-r--r--templates/de/set-printer-options-trailer.tmpl16
-rw-r--r--templates/de/subscription-added.tmpl5
-rw-r--r--templates/de/subscription-canceled.tmpl5
-rw-r--r--templates/de/test-page.tmpl8
-rw-r--r--templates/de/trailer.tmpl8
-rw-r--r--templates/de/users.tmpl30
-rw-r--r--templates/edit-config.tmpl4
-rw-r--r--templates/error-op.tmpl4
-rw-r--r--templates/error.tmpl4
-rw-r--r--templates/es/add-class.tmpl3
-rw-r--r--templates/es/add-printer.tmpl3
-rw-r--r--templates/es/admin.tmpl199
-rw-r--r--templates/es/choose-device.tmpl6
-rw-r--r--templates/es/choose-make.tmpl3
-rw-r--r--templates/es/choose-model.tmpl3
-rw-r--r--templates/es/choose-serial.tmpl3
-rw-r--r--templates/es/choose-uri.tmpl3
-rw-r--r--templates/es/class-added.tmpl3
-rw-r--r--templates/es/class-confirm.tmpl4
-rw-r--r--templates/es/class-deleted.tmpl4
-rw-r--r--templates/es/class-jobs-header.tmpl2
-rw-r--r--templates/es/class-modified.tmpl3
-rw-r--r--templates/es/class.tmpl3
-rw-r--r--templates/es/command.tmpl6
-rw-r--r--templates/es/edit-config.tmpl4
-rw-r--r--templates/es/error-op.tmpl4
-rw-r--r--templates/es/error.tmpl4
-rw-r--r--templates/es/header.tmpl.in71
-rw-r--r--templates/es/help-header.tmpl18
-rw-r--r--templates/es/help-trailer.tmpl1
-rw-r--r--templates/es/job-cancel.tmpl3
-rw-r--r--templates/es/job-hold.tmpl4
-rw-r--r--templates/es/job-move.tmpl4
-rw-r--r--templates/es/job-moved.tmpl4
-rw-r--r--templates/es/job-release.tmpl4
-rw-r--r--templates/es/job-restart.tmpl4
-rw-r--r--templates/es/jobs-header.tmpl4
-rw-r--r--templates/es/jobs.tmpl2
-rw-r--r--templates/es/list-available-printers.tmpl4
-rw-r--r--templates/es/modify-class.tmpl3
-rw-r--r--templates/es/modify-printer.tmpl3
-rw-r--r--templates/es/norestart.tmpl4
-rw-r--r--templates/es/printer-accept.tmpl4
-rw-r--r--templates/es/printer-added.tmpl4
-rw-r--r--templates/es/printer-cancel-jobs.tmpl4
-rw-r--r--templates/es/printer-configured.tmpl4
-rw-r--r--templates/es/printer-confirm.tmpl4
-rw-r--r--templates/es/printer-default.tmpl4
-rw-r--r--templates/es/printer-deleted.tmpl4
-rw-r--r--templates/es/printer-jobs-header.tmpl2
-rw-r--r--templates/es/printer-modified.tmpl4
-rw-r--r--templates/es/printer-reject.tmpl4
-rw-r--r--templates/es/printer-start.tmpl4
-rw-r--r--templates/es/printer-stop.tmpl4
-rw-r--r--templates/es/printer.tmpl6
-rw-r--r--templates/es/restart.tmpl6
-rw-r--r--templates/es/set-printer-options-header.tmpl2
-rw-r--r--templates/es/set-printer-options-trailer.tmpl2
-rw-r--r--templates/es/subscription-added.tmpl4
-rw-r--r--templates/es/subscription-canceled.tmpl4
-rw-r--r--templates/es/test-page.tmpl4
-rw-r--r--templates/es/trailer.tmpl13
-rw-r--r--templates/es/users.tmpl3
-rw-r--r--templates/fr/add-class.tmpl40
-rw-r--r--templates/fr/add-printer.tmpl47
-rw-r--r--templates/fr/add-rss-subscription.tmpl44
-rw-r--r--templates/fr/admin.tmpl102
-rw-r--r--templates/fr/choose-device.tmpl53
-rw-r--r--templates/fr/choose-make.tmpl64
-rw-r--r--templates/fr/choose-model.tmpl60
-rw-r--r--templates/fr/choose-serial.tmpl52
-rw-r--r--templates/fr/choose-uri.tmpl44
-rw-r--r--templates/fr/class-added.tmpl8
-rw-r--r--templates/fr/class-confirm.tmpl10
-rw-r--r--templates/fr/class-deleted.tmpl7
-rw-r--r--templates/fr/class-jobs-header.tmpl3
-rw-r--r--templates/fr/class-modified.tmpl8
-rw-r--r--templates/fr/class.tmpl44
-rw-r--r--templates/fr/classes-header.tmpl1
-rw-r--r--templates/fr/classes.tmpl11
-rw-r--r--templates/fr/command.tmpl12
-rw-r--r--templates/fr/edit-config.tmpl24
-rw-r--r--templates/fr/error-op.tmpl9
-rw-r--r--templates/fr/error.tmpl9
-rw-r--r--templates/fr/header.tmpl.in29
-rw-r--r--templates/fr/help-header.tmpl51
-rw-r--r--templates/fr/help-printable.tmpl9
-rw-r--r--templates/fr/help-trailer.tmpl1
-rw-r--r--templates/fr/job-cancel.tmpl7
-rw-r--r--templates/fr/job-hold.tmpl7
-rw-r--r--templates/fr/job-move.tmpl27
-rw-r--r--templates/fr/job-moved.tmpl8
-rw-r--r--templates/fr/job-release.tmpl7
-rw-r--r--templates/fr/job-restart.tmpl7
-rw-r--r--templates/fr/jobs-header.tmpl5
-rw-r--r--templates/fr/jobs.tmpl36
-rw-r--r--templates/fr/list-available-printers.tmpl11
-rw-r--r--templates/fr/modify-class.tmpl34
-rw-r--r--templates/fr/modify-printer.tmpl42
-rw-r--r--templates/fr/norestart.tmpl8
-rw-r--r--templates/fr/option-boolean.tmpl6
-rw-r--r--templates/fr/option-conflict.tmpl7
-rw-r--r--templates/fr/option-header.tmpl5
-rw-r--r--templates/fr/option-pickmany.tmpl6
-rw-r--r--templates/fr/option-pickone.tmpl18
-rw-r--r--templates/fr/option-trailer.tmpl5
-rw-r--r--templates/fr/pager.tmpl6
-rw-r--r--templates/fr/printer-accept.tmpl9
-rw-r--r--templates/fr/printer-added.tmpl8
-rw-r--r--templates/fr/printer-configured.tmpl8
-rw-r--r--templates/fr/printer-confirm.tmpl10
-rw-r--r--templates/fr/printer-default.tmpl13
-rw-r--r--templates/fr/printer-deleted.tmpl7
-rw-r--r--templates/fr/printer-jobs-header.tmpl3
-rw-r--r--templates/fr/printer-modified.tmpl8
-rw-r--r--templates/fr/printer-purge.tmpl9
-rw-r--r--templates/fr/printer-reject.tmpl9
-rw-r--r--templates/fr/printer-start.tmpl9
-rw-r--r--templates/fr/printer-stop.tmpl9
-rw-r--r--templates/fr/printer.tmpl47
-rw-r--r--templates/fr/printers-header.tmpl1
-rw-r--r--templates/fr/printers.tmpl11
-rw-r--r--templates/fr/restart.tmpl8
-rw-r--r--templates/fr/samba-export.tmpl54
-rw-r--r--templates/fr/samba-exported.tmpl1
-rw-r--r--templates/fr/search.tmpl10
-rw-r--r--templates/fr/set-printer-options-header.tmpl26
-rw-r--r--templates/fr/set-printer-options-trailer.tmpl16
-rw-r--r--templates/fr/subscription-added.tmpl5
-rw-r--r--templates/fr/subscription-canceled.tmpl5
-rw-r--r--templates/fr/test-page.tmpl8
-rw-r--r--templates/fr/trailer.tmpl8
-rw-r--r--templates/fr/users.tmpl30
-rw-r--r--templates/header.tmpl.in71
-rw-r--r--templates/help-header.tmpl18
-rw-r--r--templates/help-trailer.tmpl1
-rw-r--r--templates/it/add-class.tmpl40
-rw-r--r--templates/it/add-printer.tmpl47
-rw-r--r--templates/it/add-rss-subscription.tmpl44
-rw-r--r--templates/it/admin.tmpl102
-rw-r--r--templates/it/choose-device.tmpl53
-rw-r--r--templates/it/choose-make.tmpl64
-rw-r--r--templates/it/choose-model.tmpl60
-rw-r--r--templates/it/choose-serial.tmpl52
-rw-r--r--templates/it/choose-uri.tmpl44
-rw-r--r--templates/it/class-added.tmpl8
-rw-r--r--templates/it/class-confirm.tmpl10
-rw-r--r--templates/it/class-deleted.tmpl7
-rw-r--r--templates/it/class-jobs-header.tmpl3
-rw-r--r--templates/it/class-modified.tmpl8
-rw-r--r--templates/it/class.tmpl44
-rw-r--r--templates/it/classes-header.tmpl1
-rw-r--r--templates/it/classes.tmpl11
-rw-r--r--templates/it/command.tmpl12
-rw-r--r--templates/it/edit-config.tmpl24
-rw-r--r--templates/it/error-op.tmpl9
-rw-r--r--templates/it/error.tmpl9
-rw-r--r--templates/it/header.tmpl.in38
-rw-r--r--templates/it/help-header.tmpl51
-rw-r--r--templates/it/help-printable.tmpl9
-rw-r--r--templates/it/help-trailer.tmpl1
-rw-r--r--templates/it/job-cancel.tmpl7
-rw-r--r--templates/it/job-hold.tmpl7
-rw-r--r--templates/it/job-move.tmpl27
-rw-r--r--templates/it/job-moved.tmpl8
-rw-r--r--templates/it/job-release.tmpl7
-rw-r--r--templates/it/job-restart.tmpl7
-rw-r--r--templates/it/jobs-header.tmpl5
-rw-r--r--templates/it/jobs.tmpl36
-rw-r--r--templates/it/list-available-printers.tmpl11
-rw-r--r--templates/it/modify-class.tmpl34
-rw-r--r--templates/it/modify-printer.tmpl42
-rw-r--r--templates/it/norestart.tmpl8
-rw-r--r--templates/it/option-boolean.tmpl6
-rw-r--r--templates/it/option-conflict.tmpl7
-rw-r--r--templates/it/option-header.tmpl5
-rw-r--r--templates/it/option-pickmany.tmpl6
-rw-r--r--templates/it/option-pickone.tmpl18
-rw-r--r--templates/it/option-trailer.tmpl5
-rw-r--r--templates/it/pager.tmpl6
-rw-r--r--templates/it/printer-accept.tmpl9
-rw-r--r--templates/it/printer-added.tmpl8
-rw-r--r--templates/it/printer-configured.tmpl8
-rw-r--r--templates/it/printer-confirm.tmpl10
-rw-r--r--templates/it/printer-default.tmpl13
-rw-r--r--templates/it/printer-deleted.tmpl7
-rw-r--r--templates/it/printer-jobs-header.tmpl3
-rw-r--r--templates/it/printer-modified.tmpl8
-rw-r--r--templates/it/printer-purge.tmpl9
-rw-r--r--templates/it/printer-reject.tmpl9
-rw-r--r--templates/it/printer-start.tmpl9
-rw-r--r--templates/it/printer-stop.tmpl9
-rw-r--r--templates/it/printer.tmpl47
-rw-r--r--templates/it/printers-header.tmpl1
-rw-r--r--templates/it/printers.tmpl11
-rw-r--r--templates/it/restart.tmpl8
-rw-r--r--templates/it/samba-export.tmpl54
-rw-r--r--templates/it/samba-exported.tmpl1
-rw-r--r--templates/it/search.tmpl10
-rw-r--r--templates/it/set-printer-options-header.tmpl26
-rw-r--r--templates/it/set-printer-options-trailer.tmpl16
-rw-r--r--templates/it/subscription-added.tmpl5
-rw-r--r--templates/it/subscription-canceled.tmpl5
-rw-r--r--templates/it/test-page.tmpl8
-rw-r--r--templates/it/trailer.tmpl8
-rw-r--r--templates/it/users.tmpl30
-rw-r--r--templates/ja/add-class.tmpl40
-rw-r--r--templates/ja/add-printer.tmpl47
-rw-r--r--templates/ja/add-rss-subscription.tmpl44
-rw-r--r--templates/ja/admin.tmpl102
-rw-r--r--templates/ja/choose-device.tmpl53
-rw-r--r--templates/ja/choose-make.tmpl64
-rw-r--r--templates/ja/choose-model.tmpl60
-rw-r--r--templates/ja/choose-serial.tmpl52
-rw-r--r--templates/ja/choose-uri.tmpl43
-rw-r--r--templates/ja/class-added.tmpl7
-rw-r--r--templates/ja/class-confirm.tmpl10
-rw-r--r--templates/ja/class-deleted.tmpl7
-rw-r--r--templates/ja/class-jobs-header.tmpl3
-rw-r--r--templates/ja/class-modified.tmpl7
-rw-r--r--templates/ja/class.tmpl44
-rw-r--r--templates/ja/classes-header.tmpl1
-rw-r--r--templates/ja/classes.tmpl11
-rw-r--r--templates/ja/command.tmpl12
-rw-r--r--templates/ja/edit-config.tmpl24
-rw-r--r--templates/ja/error-op.tmpl9
-rw-r--r--templates/ja/error.tmpl9
-rw-r--r--templates/ja/header.tmpl.in38
-rw-r--r--templates/ja/help-header.tmpl51
-rw-r--r--templates/ja/help-printable.tmpl9
-rw-r--r--templates/ja/help-trailer.tmpl1
-rw-r--r--templates/ja/job-cancel.tmpl7
-rw-r--r--templates/ja/job-hold.tmpl7
-rw-r--r--templates/ja/job-move.tmpl27
-rw-r--r--templates/ja/job-moved.tmpl8
-rw-r--r--templates/ja/job-release.tmpl7
-rw-r--r--templates/ja/job-restart.tmpl7
-rw-r--r--templates/ja/jobs-header.tmpl5
-rw-r--r--templates/ja/jobs.tmpl36
-rw-r--r--templates/ja/list-available-printers.tmpl11
-rw-r--r--templates/ja/modify-class.tmpl34
-rw-r--r--templates/ja/modify-printer.tmpl42
-rw-r--r--templates/ja/norestart.tmpl7
-rw-r--r--templates/ja/option-boolean.tmpl6
-rw-r--r--templates/ja/option-conflict.tmpl7
-rw-r--r--templates/ja/option-header.tmpl5
-rw-r--r--templates/ja/option-pickmany.tmpl6
-rw-r--r--templates/ja/option-pickone.tmpl18
-rw-r--r--templates/ja/option-trailer.tmpl5
-rw-r--r--templates/ja/pager.tmpl6
-rw-r--r--templates/ja/printer-accept.tmpl9
-rw-r--r--templates/ja/printer-added.tmpl6
-rw-r--r--templates/ja/printer-configured.tmpl8
-rw-r--r--templates/ja/printer-confirm.tmpl9
-rw-r--r--templates/ja/printer-default.tmpl12
-rw-r--r--templates/ja/printer-deleted.tmpl7
-rw-r--r--templates/ja/printer-jobs-header.tmpl3
-rw-r--r--templates/ja/printer-modified.tmpl8
-rw-r--r--templates/ja/printer-purge.tmpl9
-rw-r--r--templates/ja/printer-reject.tmpl9
-rw-r--r--templates/ja/printer-start.tmpl9
-rw-r--r--templates/ja/printer-stop.tmpl9
-rw-r--r--templates/ja/printer.tmpl47
-rw-r--r--templates/ja/printers-header.tmpl1
-rw-r--r--templates/ja/printers.tmpl11
-rw-r--r--templates/ja/restart.tmpl8
-rw-r--r--templates/ja/samba-export.tmpl55
-rw-r--r--templates/ja/samba-exported.tmpl1
-rw-r--r--templates/ja/search.tmpl10
-rw-r--r--templates/ja/set-printer-options-header.tmpl26
-rw-r--r--templates/ja/set-printer-options-trailer.tmpl16
-rw-r--r--templates/ja/subscription-added.tmpl5
-rw-r--r--templates/ja/subscription-canceled.tmpl5
-rw-r--r--templates/ja/test-page.tmpl8
-rw-r--r--templates/ja/trailer.tmpl8
-rw-r--r--templates/ja/users.tmpl30
-rw-r--r--templates/job-cancel.tmpl4
-rw-r--r--templates/job-hold.tmpl4
-rw-r--r--templates/job-move.tmpl4
-rw-r--r--templates/job-moved.tmpl4
-rw-r--r--templates/job-release.tmpl4
-rw-r--r--templates/job-restart.tmpl4
-rw-r--r--templates/jobs-header.tmpl4
-rw-r--r--templates/list-available-printers.tmpl4
-rw-r--r--templates/modify-class.tmpl3
-rw-r--r--templates/modify-printer.tmpl3
-rw-r--r--templates/norestart.tmpl4
-rw-r--r--templates/printer-accept.tmpl4
-rw-r--r--templates/printer-added.tmpl4
-rw-r--r--templates/printer-cancel-jobs.tmpl5
-rw-r--r--templates/printer-configured.tmpl4
-rw-r--r--templates/printer-confirm.tmpl4
-rw-r--r--templates/printer-default.tmpl4
-rw-r--r--templates/printer-deleted.tmpl4
-rw-r--r--templates/printer-jobs-header.tmpl2
-rw-r--r--templates/printer-modified.tmpl4
-rw-r--r--templates/printer-purge.tmpl9
-rw-r--r--templates/printer-reject.tmpl4
-rw-r--r--templates/printer-start.tmpl4
-rw-r--r--templates/printer-stop.tmpl4
-rw-r--r--templates/printer.tmpl6
-rw-r--r--templates/pt_BR/add-class.tmpl40
-rw-r--r--templates/pt_BR/add-printer.tmpl47
-rw-r--r--templates/pt_BR/add-rss-subscription.tmpl44
-rw-r--r--templates/pt_BR/admin.tmpl102
-rw-r--r--templates/pt_BR/choose-device.tmpl53
-rw-r--r--templates/pt_BR/choose-make.tmpl64
-rw-r--r--templates/pt_BR/choose-model.tmpl60
-rw-r--r--templates/pt_BR/choose-serial.tmpl52
-rw-r--r--templates/pt_BR/choose-uri.tmpl44
-rw-r--r--templates/pt_BR/class-added.tmpl7
-rw-r--r--templates/pt_BR/class-confirm.tmpl9
-rw-r--r--templates/pt_BR/class-deleted.tmpl7
-rw-r--r--templates/pt_BR/class-jobs-header.tmpl3
-rw-r--r--templates/pt_BR/class-modified.tmpl7
-rw-r--r--templates/pt_BR/class.tmpl44
-rw-r--r--templates/pt_BR/classes-header.tmpl1
-rw-r--r--templates/pt_BR/classes.tmpl11
-rw-r--r--templates/pt_BR/command.tmpl12
-rw-r--r--templates/pt_BR/edit-config.tmpl24
-rw-r--r--templates/pt_BR/error-op.tmpl9
-rw-r--r--templates/pt_BR/error.tmpl9
-rw-r--r--templates/pt_BR/header.tmpl.in38
-rw-r--r--templates/pt_BR/help-header.tmpl51
-rw-r--r--templates/pt_BR/job-cancel.tmpl7
-rw-r--r--templates/pt_BR/job-hold.tmpl7
-rw-r--r--templates/pt_BR/job-move.tmpl27
-rw-r--r--templates/pt_BR/job-moved.tmpl8
-rw-r--r--templates/pt_BR/job-release.tmpl7
-rw-r--r--templates/pt_BR/job-restart.tmpl7
-rw-r--r--templates/pt_BR/jobs-header.tmpl5
-rw-r--r--templates/pt_BR/jobs.tmpl36
-rw-r--r--templates/pt_BR/list-available-printers.tmpl11
-rw-r--r--templates/pt_BR/modify-class.tmpl34
-rw-r--r--templates/pt_BR/modify-printer.tmpl42
-rw-r--r--templates/pt_BR/norestart.tmpl7
-rw-r--r--templates/pt_BR/option-boolean.tmpl6
-rw-r--r--templates/pt_BR/option-conflict.tmpl7
-rw-r--r--templates/pt_BR/option-header.tmpl5
-rw-r--r--templates/pt_BR/option-pickmany.tmpl6
-rw-r--r--templates/pt_BR/option-pickone.tmpl18
-rw-r--r--templates/pt_BR/option-trailer.tmpl5
-rw-r--r--templates/pt_BR/pager.tmpl6
-rw-r--r--templates/pt_BR/printer-accept.tmpl9
-rw-r--r--templates/pt_BR/printer-added.tmpl8
-rw-r--r--templates/pt_BR/printer-configured.tmpl8
-rw-r--r--templates/pt_BR/printer-confirm.tmpl10
-rw-r--r--templates/pt_BR/printer-default.tmpl12
-rw-r--r--templates/pt_BR/printer-deleted.tmpl7
-rw-r--r--templates/pt_BR/printer-jobs-header.tmpl3
-rw-r--r--templates/pt_BR/printer-modified.tmpl8
-rw-r--r--templates/pt_BR/printer-purge.tmpl9
-rw-r--r--templates/pt_BR/printer-reject.tmpl9
-rw-r--r--templates/pt_BR/printer-start.tmpl9
-rw-r--r--templates/pt_BR/printer-stop.tmpl9
-rw-r--r--templates/pt_BR/printer.tmpl47
-rw-r--r--templates/pt_BR/printers-header.tmpl1
-rw-r--r--templates/pt_BR/printers.tmpl11
-rw-r--r--templates/pt_BR/restart.tmpl8
-rw-r--r--templates/pt_BR/samba-export.tmpl54
-rw-r--r--templates/pt_BR/samba-exported.tmpl1
-rw-r--r--templates/pt_BR/search.tmpl10
-rw-r--r--templates/pt_BR/set-printer-options-header.tmpl26
-rw-r--r--templates/pt_BR/set-printer-options-trailer.tmpl16
-rw-r--r--templates/pt_BR/subscription-added.tmpl5
-rw-r--r--templates/pt_BR/subscription-canceled.tmpl5
-rw-r--r--templates/pt_BR/test-page.tmpl8
-rw-r--r--templates/pt_BR/trailer.tmpl8
-rw-r--r--templates/pt_BR/users.tmpl30
-rw-r--r--templates/restart.tmpl6
-rw-r--r--templates/ru/Makefile204
-rw-r--r--templates/ru/add-class.tmpl40
-rw-r--r--templates/ru/add-printer.tmpl47
-rw-r--r--templates/ru/add-rss-subscription.tmpl44
-rw-r--r--templates/ru/admin.tmpl102
-rw-r--r--templates/ru/choose-device.tmpl53
-rw-r--r--templates/ru/choose-make.tmpl64
-rw-r--r--templates/ru/choose-model.tmpl60
-rw-r--r--templates/ru/choose-serial.tmpl52
-rw-r--r--templates/ru/choose-uri.tmpl43
-rw-r--r--templates/ru/class-added.tmpl7
-rw-r--r--templates/ru/class-confirm.tmpl10
-rw-r--r--templates/ru/class-deleted.tmpl7
-rw-r--r--templates/ru/class-jobs-header.tmpl3
-rw-r--r--templates/ru/class-modified.tmpl7
-rw-r--r--templates/ru/class.tmpl44
-rw-r--r--templates/ru/classes-header.tmpl1
-rw-r--r--templates/ru/classes.tmpl11
-rw-r--r--templates/ru/command.tmpl12
-rw-r--r--templates/ru/edit-config.tmpl24
-rw-r--r--templates/ru/error-op.tmpl9
-rw-r--r--templates/ru/error.tmpl9
-rw-r--r--templates/ru/header.tmpl.in29
-rw-r--r--templates/ru/help-header.tmpl45
-rw-r--r--templates/ru/help-printable.tmpl9
-rw-r--r--templates/ru/help-trailer.tmpl1
-rw-r--r--templates/ru/job-cancel.tmpl7
-rw-r--r--templates/ru/job-hold.tmpl7
-rw-r--r--templates/ru/job-move.tmpl27
-rw-r--r--templates/ru/job-moved.tmpl8
-rw-r--r--templates/ru/job-release.tmpl7
-rw-r--r--templates/ru/job-restart.tmpl7
-rw-r--r--templates/ru/jobs-header.tmpl5
-rw-r--r--templates/ru/jobs.tmpl36
-rw-r--r--templates/ru/list-available-printers.tmpl11
-rw-r--r--templates/ru/modify-class.tmpl34
-rw-r--r--templates/ru/modify-printer.tmpl42
-rw-r--r--templates/ru/norestart.tmpl7
-rw-r--r--templates/ru/option-boolean.tmpl6
-rw-r--r--templates/ru/option-conflict.tmpl7
-rw-r--r--templates/ru/option-header.tmpl5
-rw-r--r--templates/ru/option-pickmany.tmpl6
-rw-r--r--templates/ru/option-pickone.tmpl18
-rw-r--r--templates/ru/option-trailer.tmpl5
-rw-r--r--templates/ru/pager.tmpl6
-rw-r--r--templates/ru/printer-accept.tmpl9
-rw-r--r--templates/ru/printer-added.tmpl7
-rw-r--r--templates/ru/printer-configured.tmpl8
-rw-r--r--templates/ru/printer-confirm.tmpl10
-rw-r--r--templates/ru/printer-default.tmpl12
-rw-r--r--templates/ru/printer-deleted.tmpl7
-rw-r--r--templates/ru/printer-jobs-header.tmpl3
-rw-r--r--templates/ru/printer-modified.tmpl7
-rw-r--r--templates/ru/printer-purge.tmpl9
-rw-r--r--templates/ru/printer-reject.tmpl9
-rw-r--r--templates/ru/printer-start.tmpl9
-rw-r--r--templates/ru/printer-stop.tmpl9
-rw-r--r--templates/ru/printer.tmpl47
-rw-r--r--templates/ru/printers-header.tmpl1
-rw-r--r--templates/ru/printers.tmpl11
-rw-r--r--templates/ru/restart.tmpl8
-rw-r--r--templates/ru/samba-export.tmpl53
-rw-r--r--templates/ru/samba-exported.tmpl1
-rw-r--r--templates/ru/search.tmpl10
-rw-r--r--templates/ru/set-printer-options-header.tmpl26
-rw-r--r--templates/ru/set-printer-options-trailer.tmpl16
-rw-r--r--templates/ru/subscription-added.tmpl5
-rw-r--r--templates/ru/subscription-canceled.tmpl5
-rw-r--r--templates/ru/test-page.tmpl8
-rw-r--r--templates/ru/trailer.tmpl7
-rw-r--r--templates/ru/users.tmpl30
-rw-r--r--templates/set-printer-options-header.tmpl2
-rw-r--r--templates/set-printer-options-trailer.tmpl2
-rw-r--r--templates/subscription-added.tmpl4
-rw-r--r--templates/subscription-canceled.tmpl4
-rw-r--r--templates/test-page.tmpl4
-rw-r--r--templates/trailer.tmpl13
-rw-r--r--templates/users.tmpl3
-rw-r--r--test/4.1-requests.test4
-rw-r--r--test/4.2-cups-printer-ops.test5
-rw-r--r--test/4.3-job-ops.test4
-rw-r--r--test/4.4-subscription-ops.test4
-rw-r--r--test/5.1-lpadmin.sh27
-rw-r--r--test/5.2-lpc.sh4
-rw-r--r--test/5.3-lpq.sh4
-rw-r--r--test/5.4-lpstat.sh4
-rw-r--r--test/5.5-lp.sh25
-rw-r--r--test/5.6-lpr.sh12
-rw-r--r--test/5.7-lprm.sh4
-rw-r--r--test/5.8-cancel.sh4
-rw-r--r--test/5.9-lpinfo.sh4
-rw-r--r--test/Dependencies18
-rw-r--r--test/cancel-current-job.test4
-rw-r--r--test/create-printer-subscription.test4
-rwxr-xr-xtest/everywhere/bonjour-tests.sh1
-rwxr-xr-xtest/everywhere/document-format-tests.sh1
-rw-r--r--test/everywhere/document-format-tests.test9689
-rwxr-xr-xtest/everywhere/ipp-tests.sh1
-rw-r--r--test/everywhere/ipp-tests.test12086
-rw-r--r--test/fax-job.test59
-rw-r--r--test/get-completed-jobs.test8
-rw-r--r--test/get-job-template-attributes.test24
-rw-r--r--test/get-jobs.test8
-rw-r--r--test/get-notifications.test4
-rw-r--r--test/get-printer-description-attributes.test43
-rw-r--r--test/identify-printer.test20
-rw-r--r--test/ipp-1.1.test4
-rw-r--r--test/ipp-2.0.test4
-rw-r--r--test/ipp-2.1.test4
-rw-r--r--test/ipp-2.2.test4
-rw-r--r--test/ipp-everywhere.test4
-rw-r--r--test/ippfind.c142
-rw-r--r--test/ippserver.c2143
-rw-r--r--test/ippserver.man172
-rw-r--r--test/ipptool.c1300
-rw-r--r--test/printer.opacitybin18493 -> 42698 bytes
-rw-r--r--test/printer.pngbin5133 -> 6744 bytes
-rwxr-xr-xtest/run-stp-tests.sh355
-rw-r--r--test/str-header.html10
-rw-r--r--test/testhp.ppd4
-rw-r--r--test/testps.ppd4
-rw-r--r--vcnet/config.h89
-rw-r--r--vcnet/cups.sln23
-rw-r--r--vcnet/ippserver.vcproj357
-rw-r--r--vcnet/ipptool-installer.vdproj52
-rw-r--r--vcnet/libcups2.vcproj20
-rw-r--r--vcnet/regex/regcomp.c2
-rw-r--r--vcnet/setdebug.bat2
-rw-r--r--vcnet/sw-ippeveselfcert10.vdproj1581
-rw-r--r--xcode/CUPS.xcodeproj/project.pbxproj674
-rw-r--r--xcode/config.h77
1138 files changed, 62028 insertions, 65430 deletions
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"
+ (<rdar://problem/16685606>)
+ - Several ippGet* functions incorrectly returned -1 instead of 0 on
+ error.
+ - The cupsGetResponse function did not work properly with
+ CUPS_HTTP_DEFAULT (<rdar://problem/16762593>)
+ - The IPP backend did not abort a job when the printer did not validate
+ the supplied options (<rdar://problem/16836752>)
+ - Fixed an authentication race condition in cupsSendRequest (STR #4403)
+ - The scheduler did not add the "job-hold-until-specified" reason when
+ holding a job using the lp command (STR #4405)
+ - The configure script incorrectly added libgcrypt as a GNU TLS
+ dependency (STR #4399)
+ - cupsGetDestMediaCount did not work for CUPS_MEDIA_FLAGS DEFAULT
+ (STR #4414)
+ - Auto-typing of PWG Raster files did not work (STR #4417)
+ - IPP queues using hardcoded credentials would ask for credentials
+ (STR #4371)
+ - Dates in non-UTF-8 locales did not display correctly (STR #4388)
+ - The RPM spec file now looks for libusb-devel 1.0 or later.
+ - Fixed the "create-printer-subscription.test" file for IPPTOOL
+ (STR #4420)
+
+
+CHANGES IN CUPS V1.7.2
+
+ - Security: The scheduler now blocks URLs containing embedded HTML
+ (STR #4356)
+ - Documentation fixes (STR #3259, STR #4346, STR #4355)
+ - Fixed the Japanese localization (STR #4385)
+ - Added a German localization (STR #4363)
+ - The cupsfilter command incorrectly read the cupsd.conf file; it now
+ reads the cups-files.conf file instead.
+ - Fixed OS X builds with Xcode 5.x (<rdar://problem/15914959>)
+ - Fixed SSL support on Windows (STR #4358)
+ - Fixed documentation and naming of Create-Job/Printer-Subscriptions
+ operations (STR #4389)
+ - Phone numbers in fax jobs were not properly filtered for IPP FaxOut
+ (<rdar://problem/16351701>)
+ - Updated Linux "relro" support (STR #4349)
+ - Fixed a memory leak in the label printer driver (STR #4393)
+ - cupsEnumDests did not set the "is_default" field (STR #4332)
+ - cupsDoIORequest could miss the server status, causing failed lpadmin
+ and other administrative commands (STR #4386)
+ - cupsEnumDests didn't always call the callback function (STR #4380)
+ - "lp -i job-id -H hold" did not work (STR #nnn)
+ - CUPS didn't compile on older platforms (STR #4338)
+ - Several libcups files did not have the Apple license exception
+ notice (STR #4361)
+ - Fixed a D-BUS threading issue that caused the scheduler to crash
+ (STR #4347)
+ - The scheduler now automatically reconnects to Avahi as needed
+ (STR #4370, STR #4373)
+ - The scheduler did not handle GET requests for the log files properly
+ (STR #3265)
+ - The dnssd backend did not always report all discovered printers using
+ Avahi (STR #4365)
+ - The Zebra printer driver did not properly handle negative "label top"
+ values (STR #4354)
+ - The scheduler did not always update the MakeModel value in
+ printers.conf after updating the driver (STR #4264)
+ - The LPD mini daemon did not support print jobs larger than 2GB
+ (STR #4351)
+ - Fixed a bug in the status reading code when sending a compressed data
+ stream to an IPP printer/server (<rdar://problem/16019623>)
+ - The IPP backend might not include all job attributes in Validate-Job
+ operations (<rdar://problem/16025435>)
+ - Fixed some clang-reported issues (<rdar://problem/15936066>)
+
+
+CHANGES IN CUPS V1.7.1
+
+ - Security: the lppasswd program incorrectly used settings from
+ ~/.cups/client.conf (STR #4319)
+ - Auto debug logging was broken in 1.7.0 (<rdar://problem/15331639>)
+ - Some gzip'd PPD files could not be used (<rdar://problem/15386424>)
+ - Cleaned up some job logging in the scheduler
+ (<rdar://problem/15332672>)
+ - ATTR messages could cause string pool memory corruption in the
+ scheduler (<rdar://problem/15382819>)
+ - The RPM spec file did not list the build requirements; this was on
+ purpose, but now we are listing the Red Hat package names
+ (<rdar://problem/15375760>, STR #4322)
+ - Printing to a raw queue could result in corrupt output due to
+ opportunistic compression (<rdar://problem/15008524>)
+ - The GNU TLS support code triggered many compiler warnings due to the
+ use of old GNU TLS compatibility type names
+ (<rdar://problem/15392966>)
+ - The "make check" test suite did not work on Linux without the
+ cups-filters package installed (<rdar://problem/14292998>)
+ - Japanese PPDs using with the Shift-JIS encoding did not work
+ (<rdar://problem/15427759>)
+ - "tel:" URIs incorrectly had slashes (<rdar://problem/15418463>)
+ - The libusb-based USB backend incorrectly used write timeouts
+ (<rdar://problem/15564888>)
+ - Shared printers could become inaccessible after a few days on OS X
+ (<rdar://problem/15426838>)
+ - The IPP backend did not wait for a busy printer to become available
+ before attempting to print (<rdar://problem/15465667>)
+ - CUPS did not support "auto-monochrome" or "process-monochrome" for the
+ "print-color-mode" option (<rdar://problem/15482520>)
+ - Using "@IF(name)" in an Allow or Deny rule did not work (STR #4328)
+ - lpq and lpstat did not list jobs in the correct order when priorities
+ were specified (STR #4326)
+ - The D-BUS notifier did not remove its lockfile (STR #4314)
+ - CUPS incorrectly used the USER environment variable when the name did
+ not match the user ID (STR #4327)
+
+
+CHANGES IN CUPS V1.7.0
+
+ - Updated the Japanese localization.
+ - The lpadmin command did not send the PPD name from the "-m" option
+ (<rdar://problem/15264697>)
+ - Network backends now use the prtMarkerSuppliesClass property to
+ determine the direction of supply level values
+ (<rdar://problem/14302628>)
+ - The scheduler did not remove backup PPD files when a printer was
+ deleted (<rdar://problem/15065555>)
+ - The scheduler incorrectly responded to HEAD requests when the web
+ interface was disabled (<rdar://problem/15090332>)
+ - The scheduler did not respond using the hostname specified by the
+ client (<rdar://problem/14583574>)
+ - Fax queues did not work when shared via Bonjour
+ (<rdar://problem/14498310>)
+ - Error messages from the scheduler were not localized using the
+ language specified in the client's IPP request
+ (<rdar://problem/14128011>)
+ - Added an Italian localization (<rdar://problem/14481578>)
+ - Fixed a couple memory leaks in ippfind that were reported by Clang.
+ - Fixed a compile issue on 64-bit Linux with Clang - need to use the
+ -pie option instead of -Wl,-pie now (<rdar://problem/14480938>)
+ - The ippfind utility reported the wrong port numbers when compiled
+ against Avahi (<rdar://problem/14508324>)
+ - httpGetFd, httpGetFile, httpPutFd, and httpPutFile did not
+ automatically reconnect if the server closed the connecion after the
+ previous response.
+ - Fixed a compile error in libcups (<rdar://problem/14467141>)
+ - The scheduler incorrectly did not pass a FINAL_CONTENT_TYPE
+ environment variable to the filters or backend
+ (<rdar://problem/14355011>)
+ - The cups-exec helper program could fail randomly on OS X due to
+ sandbox violations when closing excess file descriptors
+ (<rdar://problem/14421943>)
+ - The scheduler incorrectly did not use the kqueue interface on OS X.
+
+
+CHANGES IN CUPS V1.7rc1
+
+ - Printer xxx-default values were not reported by Get-Printer-Attributes
+ or lpoptions (<rdar://problem/14401795>)
+ - Fixed deprecation warnings for many functions on OS X so they are tied
+ to the deployment version when building (<rdar://problem/14210079>)
+ - Fixed a build issue on ARM-based Linux systems - unable to validate
+ va_list arguments.
+ - Added a new ippfind tool for finding IPP printers and other Bonjour
+ services (<rdar://problem/13876199>)
+ - Fixed some issues with conversion of PWG media size names to
+ hundredths of millimeters (<rdar://problem/14065748>)
+ - The IPP backend could crash on OS X when printing to a Kerberized
+ printer (<rdar://problem/14040186>)
+ - The ipptool program now automatically extends timeouts when the
+ output buffer is filled (<rdar://problem/14016099>)
+ - The ipptool program now supports the --help and --version options.
+ - The ipptool program did not continue past include file errors by
+ default (<rdar://problem/13875803>)
+ - The ipptool program now supports FILE-ID and TEST-ID directives and
+ includes their values in its XML output (<rdar://problem/13876038>)
+ - The ipptool program now supports WITH-HOSTNAME, WITH-RESOURCE, and
+ WITH-SCHEME expect predicates to compare the corresponding URI
+ components (<rdar://problem/13876091>)
+
+
+CHANGES IN CUPS V1.7b1
+
+ - The configure script now supports a --with-rundir option to change
+ the transient run-time state directory from the default to other
+ locations like /run/cups (STR #4306)
+ - The scheduler now supports PPD lookups for classes (STR #4296)
+ - The cupsfilter program did not set the FINAL_CONTENT_TYPE
+ environment variable for filters.
+ - Added a new "-x" option to the cancel command (STR #4103)
+ - Made the PWG media handling APIs public (STR #4267)
+ - Implemented ready media support for the cupsGetDestMediaXxx APIs
+ (STR #4289)
+ - Added new cupsFindDestDefault, cupsFindDestReady, and
+ cupsFindDestSupported APIs (STR #4289)
+ - Added new cupsGetDestMediaByIndex, cupsGetDestMediaCount, and
+ cupsGetDestMediaDefault APIs (STR #4289)
+ - Added new ippGet/SetOctetString APIs for getting and setting an
+ octetString value (STR #4289)
+ - Added new ippCreateRequestedArray API for generating a array of
+ attributes from the requested-attributes attribute.
+ - The ipptool utility now supports compression, conditional tests based
+ on the presence of files, and new DEFINE predicates for STATUS.
+ - Added new IPP APIs for checking values (STR #4167)
+ - Added new IPP APis for adding and setting formatted strings.
+ - Added new HTTP APIs to support basic server functionality via libcups.
+ - The dnssd backend now generates a 1284 device ID as needed (STR #3702)
+ - CUPS now supports compressing and decompressing streamed data
+ (STR #4168)
+ - CUPS now supports higher-level PIN printing, external accounting
+ systems, and "print here" printing environments (STR #4169)
+ - IRIX is no longer a supported operating system (STR #4092)
+ - The PPD compiler now supports JCL options properly (STR #4115)
+ - The web interface now checks whether the web browser has cookies
+ enabled and displays a suitable error message (STR #4141)
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..84405df66 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,250 +1,94 @@
-CHANGES.txt - 1.7.5 - 2014-07-30
+CHANGES.txt - 2.0.0 - 2014-10-01
--------------------------------
-CHANGES IN CUPS V1.7.5
-
- - Security: Addressed some more situations where symlinked files would
- be served by the web interface (STR #4455)
- - The LPD backend did not work with some versions of glibc (STR #4452)
- - CGI scripts did not work (STR #4454)
- - The cupsd.conf man page did not list the ErrorPolicy directive
- (STR #4457)
- - Updated the Brazilian Portuguese translation (STR #4456)
-
-
-CHANGES IN CUPS V1.7.4
-
- - Security: The web interface incorrectly served symlinked files and
- files that were not world-readable, potentially leading to a
- disclosure of information (STR #4450)
- - The CUPS headers incorrectly needed libdispatch for blocks support
- (STR #4397)
- - CUPS did not compile when Avahi or mDNSResponder was not present
- (STR #4402, STR #4424)
- - The "snmp" option did not work with the network backends (STR #4422)
- - The User directive in client.conf did not override the USER
- environment variable (STR #4426)
- - The web interface now properly shows a "Go" button for all text-based
- browsers (STR #4425)
- - The MaxJobTime directive now properly supports time values (STR #4434)
- - The RPM spec file did not work due to the new Brazilian Portuguese
- localization (STR #4436)
- - Fixed an "IPP read error" issue (STR #4440)
- - Fixed the --disable-libusb configure option (STR #4439)
- - Fixed the debug output from the DNS-SD backend when using Avahi
- (STR #4444)
- - Fixed a bug in the CUPS_SC_GET_DEVICE_ID handling by the network
- backends (STR #4447)
- - Added USB quirk rule for Lexmark E230 (STR #4448)
-
-
-CHANGES IN CUPS V1.7.3
-
- - Added Brazilian Portuguese translation (STR #4409)
- - Fixed mapping of OutputBin values such as "Tray1"
- (<rdar://problem/16685606>)
- - Several ippGet* functions incorrectly returned -1 instead of 0 on
- error.
- - The cupsGetResponse function did not work properly with
- CUPS_HTTP_DEFAULT (<rdar://problem/16762593>)
- - The IPP backend did not abort a job when the printer did not validate
- the supplied options (<rdar://problem/16836752>)
- - Fixed an authentication race condition in cupsSendRequest (STR #4403)
- - The scheduler did not add the "job-hold-until-specified" reason when
- holding a job using the lp command (STR #4405)
- - The configure script incorrectly added libgcrypt as a GNU TLS
- dependency (STR #4399)
- - cupsGetDestMediaCount did not work for CUPS_MEDIA_FLAGS DEFAULT
- (STR #4414)
- - Auto-typing of PWG Raster files did not work (STR #4417)
- - IPP queues using hardcoded credentials would ask for credentials
- (STR #4371)
- - Dates in non-UTF-8 locales did not display correctly (STR #4388)
- - The RPM spec file now looks for libusb-devel 1.0 or later.
- - Fixed the "create-printer-subscription.test" file for IPPTOOL
- (STR #4420)
-
-
-CHANGES IN CUPS V1.7.2
-
- - Security: The scheduler now blocks URLs containing embedded HTML
- (STR #4356)
- - Documentation fixes (STR #3259, STR #4346, STR #4355)
- - Fixed the Japanese localization (STR #4385)
- - Added a German localization (STR #4363)
- - The cupsfilter command incorrectly read the cupsd.conf file; it now
- reads the cups-files.conf file instead.
- - Fixed OS X builds with Xcode 5.x (<rdar://problem/15914959>)
- - Fixed SSL support on Windows (STR #4358)
- - Fixed documentation and naming of Create-Job/Printer-Subscriptions
- operations (STR #4389)
- - Phone numbers in fax jobs were not properly filtered for IPP FaxOut
- (<rdar://problem/16351701>)
- - Fixed a memory leak in the label printer driver (STR #4393)
- - Updated Linux "relro" support (STR #4349)
- - cupsEnumDests did not set the "is_default" field (STR #4332)
- - cupsDoIORequest could miss the server status, causing failed lpadmin
- and other administrative commands (STR #4386)
- - cupsEnumDests didn't always call the callback function (STR #4380)
- - "lp -i job-id -H hold" did not work (STR #4401)
- - CUPS didn't compile on older platforms (STR #4338)
- - Several libcups files did not have the Apple license exception
- notice (STR #4361)
- - Fixed a D-BUS threading issue that caused the scheduler to crash
- (STR #4347)
- - The scheduler now automatically reconnects to Avahi as needed
- (STR #4370, STR #4373)
- - The scheduler did not handle GET requests for the log files properly
- (STR #3265)
- - The dnssd backend did not always report all discovered printers using
- Avahi (STR #4365)
- - The Zebra printer driver did not properly handle negative "label top"
- values (STR #4354)
- - The scheduler did not always update the MakeModel value in
- printers.conf after updating the driver (STR #4264)
- - The LPD mini daemon did not support print jobs larger than 2GB
- (STR #4351)
- - Fixed a bug in the status reading code when sending a compressed data
- stream to an IPP printer/server (<rdar://problem/16019623>)
- - The IPP backend might not include all job attributes in Validate-Job
- operations (<rdar://problem/16025435>)
- - Fixed some clang-reported issues (<rdar://problem/15936066>)
-
-
-CHANGES IN CUPS V1.7.1
-
- - Security: the lppasswd program incorrectly used settings from
- ~/.cups/client.conf (STR #4319)
- - Auto debug logging was broken in 1.7.0 (<rdar://problem/15331639>)
- - Some gzip'd PPD files could not be used (<rdar://problem/15386424>)
- - Cleaned up some job logging in the scheduler
- (<rdar://problem/15332672>)
- - ATTR messages could cause string pool memory corruption in the
- scheduler (<rdar://problem/15382819>)
- - The RPM spec file did not list the build requirements; this was on
- purpose, but now we are listing the Red Hat package names
- (<rdar://problem/15375760>, STR #4322)
- - Printing to a raw queue could result in corrupt output due to
- opportunistic compression (<rdar://problem/15008524>)
- - The GNU TLS support code triggered many compiler warnings due to the
- use of old GNU TLS compatibility type names
- (<rdar://problem/15392966>)
- - The "make check" test suite did not work on Linux without the
- cups-filters package installed (<rdar://problem/14292998>)
- - Japanese PPDs using with the Shift-JIS encoding did not work
- (<rdar://problem/15427759>)
- - "tel:" URIs incorrectly had slashes (<rdar://problem/15418463>)
- - The libusb-based USB backend incorrectly used write timeouts
- (<rdar://problem/15564888>)
- - Shared printers could become inaccessible after a few days on OS X
- (<rdar://problem/15426838>)
- - The IPP backend did not wait for a busy printer to become available
- before attempting to print (<rdar://problem/15465667>)
- - CUPS did not support "auto-monochrome" or "process-monochrome" for the
- "print-color-mode" option (<rdar://problem/15482520>)
- - Using "@IF(name)" in an Allow or Deny rule did not work (STR #4328)
- - lpq and lpstat did not list jobs in the correct order when priorities
- were specified (STR #4326)
- - The D-BUS notifier did not remove its lockfile (STR #4314)
- - CUPS incorrectly used the USER environment variable when the name did
- not match the user ID (STR #4327)
-
-
-CHANGES IN CUPS V1.7.0
-
- - Updated Japanese localization.
- - The lpadmin command did not send the PPD name from the "-m" option
- (<rdar://problem/15264697>)
- - Network backends now use the prtMarkerSuppliesClass property to
- determine the direction of supply level values
- (<rdar://problem/14302628>)
- - The scheduler did not remove backup PPD files when a printer was
- deleted (<rdar://problem/15065555>)
- - The scheduler incorrectly responded to HEAD requests when the web
- interface was disabled (<rdar://problem/15090332>)
- - The scheduler did not respond using the hostname specified by the
- client (<rdar://problem/14583574>)
- - Fax queues did not work when shared via Bonjour
- (<rdar://problem/14498310>)
- - Error messages from the scheduler were not localized using the
- language specified in the client's IPP request
- (<rdar://problem/14128011>)
- - Added an Italian localization (<rdar://problem/14481578>)
- - Fixed a couple memory leaks in ippfind that were reported by Clang.
- - Fixed a compile issue on 64-bit Linux with Clang - need to use the
- -pie option instead of -Wl,-pie now (<rdar://problem/14480938>)
- - The ippfind utility reported the wrong port numbers when compiled
- against Avahi (<rdar://problem/14508324>)
- - httpGetFd, httpGetFile, httpPutFd, and httpPutFile did not
- automatically reconnect if the server closed the connecion after the
- previous response.
- - Fixed a compile error in libcups (<rdar://problem/14467141>)
- - The scheduler incorrectly did not pass a FINAL_CONTENT_TYPE
- environment variable to the filters or backend
- (<rdar://problem/14355011>)
- - The cups-exec helper program could fail randomly on OS X due to
- sandbox violations when closing excess file descriptors
- (<rdar://problem/14421943>)
- - The scheduler incorrectly did not use the kqueue interface on OS X.
-
-
-CHANGES IN CUPS V1.7rc1
-
- - Printer xxx-default values were not reported by Get-Printer-Attributes
- or lpoptions (<rdar://problem/14401795>)
- - Fixed deprecation warnings for many functions on OS X so they are tied
- to the deployment version when building (<rdar://problem/14210079>)
- - Fixed a build issue on ARM-based Linux systems - unable to validate
- va_list arguments.
- - Added a new ippfind tool for finding IPP printers and other Bonjour
- services (<rdar://problem/13876199>)
- - Fixed some issues with conversion of PWG media size names to
- hundredths of millimeters (<rdar://problem/14065748>)
- - The IPP backend could crash on OS X when printing to a Kerberized
- printer (<rdar://problem/14040186>)
- - The ipptool program now automatically extends timeouts when the
- output buffer is filled (<rdar://problem/14016099>)
- - The ipptool program now supports the --help and --version options.
- - The ipptool program did not continue past include file errors by
- default (<rdar://problem/13875803>)
- - The ipptool program now supports FILE-ID and TEST-ID directives and
- includes their values in its XML output (<rdar://problem/13876038>)
- - The ipptool program now supports WITH-HOSTNAME, WITH-RESOURCE, and
- WITH-SCHEME expect predicates to compare the corresponding URI
- components (<rdar://problem/13876091>)
-
-
-CHANGES IN CUPS V1.7b1
-
- - The configure script now supports a --with-rundir option to change
- the transient run-time state directory from the default to other
- locations like /run/cups (STR #4306)
- - The scheduler now supports PPD lookups for classes (STR #4296)
- - The cupsfilter program did not set the FINAL_CONTENT_TYPE
- environment variable for filters.
- - Added a new "-x" option to the cancel command (STR #4103)
- - Made the PWG media handling APIs public (STR #4267)
- - Implemented ready media support for the cupsGetDestMediaXxx APIs
- (STR #4289)
- - Added new cupsFindDestDefault, cupsFindDestReady, and
- cupsFindDestSupported APIs (STR #4289)
- - Added new cupsGetDestMediaByIndex, cupsGetDestMediaCount, and
- cupsGetDestMediaDefault APIs (STR #4289)
- - Added new ippGet/SetOctetString APIs for getting and setting an
- octetString value (STR #4289)
- - Added new ippCreateRequestedArray API for generating a array of
- attributes from the requested-attributes attribute.
- - The ipptool utility now supports compression, conditional tests based
- on the presence of files, and new DEFINE predicates for STATUS.
- - Added new IPP APIs for checking values (STR #4167)
- - Added new IPP APis for adding and setting formatted strings.
- - Added new HTTP APIs to support basic server functionality via libcups.
- - The dnssd backend now generates a 1284 device ID as needed (STR #3702)
- - CUPS now supports compressing and decompressing streamed data
- (STR #4168)
- - CUPS now supports higher-level PIN printing, external accounting
- systems, and "print here" printing environments (STR #4169)
- - IRIX is no longer a supported operating system (STR #4092)
- - The PPD compiler now supports JCL options properly (STR #4115)
- - The web interface now checks whether the web browser has cookies
- enabled and displays a suitable error message (STR #4141)
+CHANGES IN CUPS V2.0.0
+
+ - The scheduler did not preserve listener sockets from launchd or
+ systemd after a restart (<rdar://problem/18112848>)
+ - Added some USB quirk rules for the libusb-based USB backend
+ (STR #4482)
+ - Spanish localization update (STR #4487)
+ - Updated documentation for 2.0.0 release.
+
+
+CHANGES IN CUPS V2.0rc1
+
+ - Documentation updates (STR #4464)
+ - The scheduler now monitors the AC power status on OS X, allowing for
+ "sleep printing" when sharing printers (<rdar://problem/17325852>)
+ - The scheduler incorrectly called launch_activate_socket multiple times
+ on OS X (<rdar://problem/17523218>)
+ - The ippserver test program now passes the IPP Everywhere self-
+ certification tests (STR #4101)
+ - Relaxed the new OS X filter sandbox slightly (STR #4471,
+ <rdar://problem/17483959>)
+ - Dropped the old Epson Stylus Color/Photo sample drivers since they
+ don't work with any current printers and there are free alternatives
+ that produce much better output (<rdar://problem/18036889>)
+ - Log and configuration files that are not world-readable are again
+ accessible via the web interface (STR #4461)
+ - PPD files are now created using the permissions specified by the
+ ConfigFilePerm directive.
+ - Fixed RPM build issues (STR #4459)
+ - Fixed the spinner image and restart page when reconfiguring the
+ scheduler through the web interface (STR #4475)
+
+
+CHANGES IN CUPS V2.0b1
+
+ - Added a "--list-filters" option to the cupsfilter command (STR #4325)
+ - Added systemd support (STR #3917)
+ - Added support for re-sending a job as a raster file if a higher-level
+ format such as PDF fails (<rdar://problem/15583721>)
+ - Added support for regular expression matching in the MIME type rules
+ (<rdar://problem/11131245>)
+ - Added support for TLS certificate validation and policy enforcement
+ (STR #1616)
+ - Added support for simultaneous XML and test output from ipptool.
+ - Added support for PAUSE directive in ipptool test files.
+ - Added support for auto-typing of TIFF files by ipptool (STR #4418)
+ - The scheduler now returns completed jobs in the correct newest-to-
+ oldest order (STR #4396)
+ - The configure script now supports target-specific tools for pkg-config
+ and others (STR #4423)
+ - The ipptool program now supports EXPECT statements for collection
+ member attributes (<rdar://problem/15355218>)
+ - The ipptool program now supports collection attributes with multiple
+ values (<rdar://problem/15355124>)
+ - The sample drivers now include all of the installed localizations by
+ default (<rdar://problem/14756625>)
+ - Adopted Linux man page conventions and updated all man pages
+ (STR #4372, STR #4329)
+ - The scheduler now supports the "first-index" operation attribute for
+ the Get-Jobs operation (STR #2913)
+ - Changed the default AccessLogLevel and PageLogFormat to disable the
+ access_log and page_log files by default (<rdar://problem/16495000>)
+ - cupsRasterInterpretPPD now supports the Orientation header in order to
+ support long-edge feed raster printers (<rdar://problem/15837926>)
+ - The scheduler now allows run-as-root backends to have group read and
+ execute permissions (STR #2935)
+ - The ippFindAttribute and ippFindNextAttribute functions now support
+ hierarchical searches (STR #4395)
+ - Dropped OpenSSL support in favor of GNU TLS.
+ - Dropped "dark wake" support on OS X, which was preventing portables
+ from going to sleep when there was a stuck job. We now use a variation
+ of the CUPS 1.4 sleep support to do a cleaner sleep
+ (<rdar://problem/14323704>)
+ - Dropped support for AIX, HP-UX, and OSF/1 (aka Digital UNIX)
+ - Dropped lppasswd and support for Digest authentication in in the
+ scheduler (STR #4321)
+ - The cupsGetClasses, cupsGetPrinters, and cupsTempFile functions are no
+ longer supported.
+ - The scheduler now caches more job history data and limits the number
+ of completed jobs returned by Get-Jobs as needed in order to prevent a
+ denial-of-service on busy servers (STR #2913)
+ - The filter/backend sandbox on OS X now defaults to a more strict
+ whitelist (<rdar://problem/15939788>)
+ - Increased the default idle exit timeout to 60 seconds on OS X
+ (<rdar://problem/16041820>)
+ - Printer classes were not accessible on OS X
+ (<rdar://problem/16385643>)
+ - The scheduler now uses </DefaultPrinter> to close the default printer
+ definition in printers.conf (STR #4153)
+ - Canceling all jobs in the web interface now just cancels the jobs
+ (STR #1914)
diff --git a/INSTALL.txt b/INSTALL.txt
index 26cb7c03c..d05de97ec 100644
--- a/INSTALL.txt
+++ b/INSTALL.txt
@@ -1,4 +1,4 @@
-INSTALL - CUPS v1.7.5 - 2014-07-30
+INSTALL - CUPS v2.0.0 - 2014-10-01
----------------------------------
This file describes how to compile and install CUPS from source code. For more
@@ -98,6 +98,11 @@ CONFIGURATION
and diagnose a variety of common problems - use the "--enable-unit-tests"
configure option to run them at build time.
+ On OS X, use the "--with-archflags" option to build with the correct set of
+ architectures:
+
+ ./configure --with-archflags="-arch i386 -arch x86_64" ...
+
Once you have configured things, just type:
make ENTER
@@ -165,17 +170,11 @@ CREATING BINARY DISTRIBUTIONS WITH EPM
following:
epm - Builds a script + tarfile package
- aix - Builds an AIX package
bsd - Builds a *BSD package
deb - Builds a Debian package
- depot - Builds a HP-UX package (also swinstall)
- inst - Builds an IRIX package (also tardist)
pkg - Builds a Solaris package
rpm - Builds a RPM package
- setld - Build a Tru64 UNIX package
slackware - Build a Slackware package
- swinstall - Build a HP-UX package (also depot)
- tardist - Builds an IRIX package (also inst)
GETTING DEBUG LOGGING FROM CUPS
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..84d3cce02 100644
--- a/Makefile
+++ b/Makefile
@@ -1,16 +1,16 @@
#
-# "$Id: Makefile 11370 2013-10-30 15:08:29Z msweet $"
+# "$Id: Makefile 12145 2014-09-02 15:00:50Z 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:
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 12145 2014-09-02 15:00:50Z msweet $".
#
diff --git a/README.txt b/README.txt
index de91fe8a8..a2f12f2dc 100644
--- a/README.txt
+++ b/README.txt
@@ -1,4 +1,4 @@
-README - CUPS v1.7.5 - 2014-07-30
+README - CUPS v2.0.0 - 2014-10-01
---------------------------------
Looking for compile instructions? Read the file "INSTALL.txt" instead...
@@ -41,10 +41,10 @@ READING THE DOCUMENTATION
GETTING SUPPORT AND OTHER RESOURCES
- If you have problems, READ THE DOCUMENTATION FIRST! We also provide many
- discussion forums which are available at:
+ If you have problems, READ THE DOCUMENTATION FIRST! We also provide two
+ mailing lists which are available at:
- http://www.cups.org/newsgroups.php
+ http://www.cups.org/lists.php
See the CUPS web site at "http://www.cups.org/" for other resources.
@@ -78,10 +78,6 @@ SETTING UP PRINTER QUEUES FROM THE COMMAND-LINE
----------------------------- ------------------------------
Dymo Label Printers drv:///sample.drv/dymo.ppd
Intellitech Intellibar drv:///sample.drv/intelbar.ppd
- EPSON Stylus Color Series drv:///sample.drv/stcolor.ppd
- EPSON Stylus Photo Series drv:///sample.drv/stphoto.ppd
- EPSON Stylus New Color Series drv:///sample.drv/stcolor2.ppd
- EPSON Stylus New Photo Series drv:///sample.drv/stphoto2.ppd
EPSON 9-pin Series drv:///sample.drv/epson9.ppd
EPSON 24-pin Series drv:///sample.drv/epson24.ppd
Generic PCL Laser Printer drv:///sample.drv/generpcl.ppd
@@ -113,11 +109,7 @@ SETTING UP PRINTER QUEUES FROM THE COMMAND-LINE
lpadmin -p printername -E -v lpd://11.22.33.44/ -m ppd-name
The sample drivers provide basic printing capabilities, but generally do not
- exercise the full potential of the printers or CUPS. The CUPS web site
- provides links and drivers:
-
- http://www.cups.org/ppd.php PPD files
- http://www.cups.org/links.php Links to other drivers
+ exercise the full potential of the printers or CUPS.
PRINTING FILES
@@ -134,8 +126,8 @@ PRINTING FILES
lpr -o media=A4 -o resolution=600dpi filename
CUPS recognizes many types of images files as well as PDF, PostScript,
- HP-GL/2, and text files, so you can print those files directly rather than
- through an application.
+ and text files, so you can print those files directly rather than through
+ an application.
If you have an application that generates output specifically for your
printer then you need to use the "-oraw" or "-l" options:
@@ -143,8 +135,7 @@ PRINTING FILES
lp -o raw filename
lpr -l filename
- This will prevent the filters from misinterpreting your print
- file.
+ This will prevent the filters from misinterpreting your print file.
LEGAL STUFF
@@ -154,8 +145,6 @@ LEGAL STUFF
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
- This software is based in part on the work of the Independent JPEG Group.
-
CUPS is provided under the terms of version 2 of the GNU General Public
License and GNU Library General Public License. This program is distributed
in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
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 <cups/cups-private.h>
/*
@@ -148,8 +141,7 @@ backendGetDeviceID(
* Read the 1284 device ID...
*/
- if ((length = read(devparportfd, device_id,
- device_id_size - 1)) >= 2)
+ if ((length = read(devparportfd, device_id, (size_t)device_id_size - 1)) >= 2)
{
device_id[length] = '\0';
got_id = 1;
@@ -178,8 +170,7 @@ backendGetDeviceID(
* bytes. The 1284 spec says the length is stored MSB first...
*/
- length = (((unsigned)device_id[0] & 255) << 8) +
- ((unsigned)device_id[1] & 255);
+ length = (int)((((unsigned)device_id[0] & 255) << 8) + ((unsigned)device_id[1] & 255));
/*
* Check to see if the length is larger than our buffer; first
@@ -188,8 +179,7 @@ backendGetDeviceID(
*/
if (length > device_id_size || length < 14)
- length = (((unsigned)device_id[1] & 255) << 8) +
- ((unsigned)device_id[0] & 255);
+ length = (int)((((unsigned)device_id[1] & 255) << 8) + ((unsigned)device_id[0] & 255));
if (length > device_id_size)
length = device_id_size;
@@ -221,7 +211,7 @@ backendGetDeviceID(
length -= 2;
- memmove(device_id, device_id + 2, length);
+ memmove(device_id, device_id + 2, (size_t)length);
device_id[length] = '\0';
}
}
@@ -287,7 +277,7 @@ backendGetDeviceID(
*/
if (make_model)
- backendGetMakeModel(device_id, make_model, make_model_size);
+ backendGetMakeModel(device_id, make_model, (size_t)make_model_size);
/*
* Then generate a device URI...
@@ -372,7 +362,7 @@ int /* O - 0 on success, -1 on failure */
backendGetMakeModel(
const char *device_id, /* O - 1284 device ID */
char *make_model, /* O - Make/model */
- int make_model_size) /* I - Size of buffer */
+ size_t make_model_size) /* I - Size of buffer */
{
int num_values; /* Number of keys and values */
cups_option_t *values; /* Keys and values */
@@ -381,9 +371,7 @@ backendGetMakeModel(
*des; /* Description string */
- DEBUG_printf(("backendGetMakeModel(device_id=\"%s\", "
- "make_model=%p, make_model_size=%d)\n", device_id,
- make_model, make_model_size));
+ DEBUG_printf(("backendGetMakeModel(device_id=\"%s\", make_model=%p, make_model_size=" CUPS_LLFMT ")\n", device_id, make_model, CUPS_LLCAST make_model_size));
/*
* Range check input...
@@ -487,5 +475,5 @@ backendGetMakeModel(
/*
- * End of "$Id: ieee1284.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: ieee1284.c 11594 2014-02-14 20:09:01Z msweet $".
*/
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..2cf5f72b9 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 12124 2014-08-28 15:37:22Z 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 <limits.h>
-#ifdef __hpux
-# include <sys/time.h>
-#else
-# include <sys/select.h>
-#endif /* __hpux */
+#include <sys/select.h>
/*
@@ -100,7 +91,7 @@ backendNetworkSideCB(
case CUPS_SC_CMD_GET_BIDI :
status = CUPS_SC_STATUS_OK;
- data[0] = use_bc;
+ data[0] = (char)use_bc;
datalen = 1;
break;
@@ -139,13 +130,13 @@ backendNetworkSideCB(
for (dataptr = data + strlen(data) + 1;
count > 0 && dataptr < (data + sizeof(data) - 1);
count --, dataptr += strlen(dataptr))
- strlcpy(dataptr, snmp_value, sizeof(data) - (dataptr - data));
+ strlcpy(dataptr, snmp_value, sizeof(data) - (size_t)(dataptr - data));
fprintf(stderr, "DEBUG: Returning %s %s\n", data,
data + strlen(data) + 1);
status = CUPS_SC_STATUS_OK;
- datalen = dataptr - data;
+ datalen = (int)(dataptr - data);
break;
}
@@ -168,7 +159,7 @@ backendNetworkSideCB(
{
if (_cupsSNMPRead(snmp_fd, &packet, 1.0))
{
- int i; /* Looping var */
+ size_t i; /* Looping var */
if (!_cupsSNMPOIDToString(packet.object_name, data, sizeof(data)))
@@ -183,35 +174,31 @@ backendNetworkSideCB(
switch (packet.object_type)
{
case CUPS_ASN1_BOOLEAN :
- snprintf(dataptr, sizeof(data) - (dataptr - data), "%d",
- packet.object_value.boolean);
+ snprintf(dataptr, sizeof(data) - (size_t)(dataptr - data), "%d", packet.object_value.boolean);
datalen += (int)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);
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);
- datalen += i;
+ datalen += (int)i;
break;
case CUPS_ASN1_OID :
_cupsSNMPOIDToString(packet.object_value.oid, dataptr,
- sizeof(data) - (dataptr - data));
+ sizeof(data) - (size_t)(dataptr - data));
datalen += (int)strlen(dataptr);
break;
@@ -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]);
+ sprintf(dataptr, "%02X", packet.object_value.string.bytes[i]);
datalen += (int)strlen(dataptr);
break;
case CUPS_ASN1_COUNTER :
- snprintf(dataptr, sizeof(data) - (dataptr - data), "%d",
- packet.object_value.counter);
+ snprintf(dataptr, sizeof(data) - (size_t)(dataptr - data), "%u", packet.object_value.counter);
datalen += (int)strlen(dataptr);
break;
case CUPS_ASN1_GAUGE :
- snprintf(dataptr, sizeof(data) - (dataptr - data), "%u",
- packet.object_value.gauge);
+ snprintf(dataptr, sizeof(data) - (size_t)(dataptr - data), "%u", packet.object_value.gauge);
datalen += (int)strlen(dataptr);
break;
case CUPS_ASN1_TIMETICKS :
- snprintf(dataptr, sizeof(data) - (dataptr - data), "%u",
- packet.object_value.timeticks);
+ snprintf(dataptr, sizeof(data) - (size_t)(dataptr - data), "%u", packet.object_value.timeticks);
datalen += (int)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 12124 2014-08-28 15:37:22Z msweet $".
*/
diff --git a/backend/org.cups.usb-quirks b/backend/org.cups.usb-quirks
index 5a7b2e09a..aecb9ea69 100644
--- a/backend/org.cups.usb-quirks
+++ b/backend/org.cups.usb-quirks
@@ -215,3 +215,9 @@
# Lexmark E238 (STR #4448)
0x043d 0x009a no-reattach
+
+# Canon MX310 (STR #4482)
+0x04a9 0x1728 unidir
+
+# Canon MX320 (STR #4482)
+0x04A9 0x1736 unidir
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 <limits.h>
-#ifdef __hpux
-# include <sys/time.h>
-#else
-# include <sys/select.h>
-#endif /* __hpux */
+#include <sys/select.h>
/*
@@ -113,7 +102,7 @@ backendDrainOutput(int print_fd, /* I - Print file descriptor */
for (print_ptr = print_buffer; print_bytes > 0;)
{
- if ((bytes = write(device_fd, print_ptr, print_bytes)) < 0)
+ if ((bytes = write(device_fd, print_ptr, (size_t)print_bytes)) < 0)
{
/*
* Write error - bail if we don't see an error we can retry...
@@ -293,7 +282,7 @@ backendRunLoop(
fprintf(stderr,
"DEBUG: Received " CUPS_LLFMT " bytes of back-channel data\n",
CUPS_LLCAST bc_bytes);
- cupsBackChannelWrite(bc_buffer, bc_bytes, 1.0);
+ cupsBackChannelWrite(bc_buffer, (size_t)bc_bytes, 1.0);
}
else if (bc_bytes < 0 && errno != EAGAIN && errno != EINTR)
{
@@ -350,7 +339,7 @@ backendRunLoop(
if (print_bytes && FD_ISSET(device_fd, &output))
{
- if ((bytes = write(device_fd, print_ptr, print_bytes)) < 0)
+ if ((bytes = write(device_fd, print_ptr, (size_t)print_bytes)) < 0)
{
/*
* Write error - bail if we don't see an error we can retry...
@@ -539,5 +528,5 @@ backendWaitLoop(
/*
- * End of "$Id: runloop.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: runloop.c 11558 2014-02-06 18:33:34Z msweet $".
*/
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..813039d1e 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 12124 2014-08-28 15:37:22Z 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.
*/
/*
@@ -153,7 +146,7 @@ print_device(const char *uri, /* I - Device URI */
tcgetattr(device_fd, &opts);
- opts.c_lflag &= ~(ICANON | ECHO | ISIG); /* Raw mode */
+ opts.c_lflag &= ~(unsigned)(ICANON | ECHO | ISIG); /* Raw mode */
/**** No options supported yet ****/
@@ -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 12124 2014-08-28 15:37:22Z 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`
@@ -238,17 +233,6 @@ libcupscgi.1.dylib: $(LIBOBJS) libcupscgi.exp
#
-# 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
#
@@ -362,17 +346,6 @@ testtemplate: testtemplate.o ../Makedefs libcupscgi.a ../cups/$(LIBCUPSSTATIC)
#
-# 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..9de2424c3 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 12123 2014-08-28 14:24:45Z 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')
@@ -1917,7 +1897,7 @@ do_config_server(http_t *http) /* I - HTTP connection */
}
else
{
- cgiSetVariable("refresh_page", "5;URL=/admin/?OP=redirect");
+ cgiSetVariable("refresh_page", "5;URL=/admin/");
cgiStartHTML(cgiText(_("Edit Configuration File")));
cgiCopyTemplateLang("restart.tmpl");
@@ -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 12123 2014-08-28 14:24:45Z 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),
"<A HREF=\"%s\">%s</A>", url,
strrchr(attr->values[i].string.text, '/') + 1);
}
else
cgiRewriteURL(attr->values[i].string.text, valptr,
- sizeof(value) - (valptr - value), NULL);
+ (int)(sizeof(value) - (size_t)(valptr - value)), NULL);
break;
}
@@ -1232,7 +1228,7 @@ cgiSetIPPObjectVars(
case IPP_TAG_LANGUAGE :
case IPP_TAG_MIMETYPE :
strlcat(valptr, attr->values[i].string.text,
- sizeof(value) - (valptr - value));
+ sizeof(value) - (size_t)(valptr - value));
break;
case IPP_TAG_BEGIN_COLLECTION :
@@ -1565,5 +1561,5 @@ cgiText(const char *message) /* I - Message */
/*
- * End of "$Id: ipp-var.c 11890 2014-05-22 13:59:21Z msweet $".
+ * End of "$Id: ipp-var.c 11889 2014-05-22 13:54:15Z msweet $".
*/
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
</Limit>
</Policy>
-
-#
-# 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,<D0CF11E0A1B11AE1>)
-application/pdf pdf string(0,%PDF)
+application/pdf pdf regex(0,^[\\n\\r]*%PDF)
application/postscript ai eps ps string(0,%!) string(0,<04>%!) \
contains(0,128,<1B>%-12345X) + \
(contains(0,4096,"LANGUAGE=POSTSCRIPT") \
@@ -123,7 +124,7 @@ application/x-shell sh printable(0,1024) + string(0,#!) +\
(contains(2,80,/bash) contains(2,80,/ksh)\
contains(2,80,/sh) contains(2,80,/zsh))
application/x-csource c cxx cpp cc C h hpp \
- printable(0,1024) + \
+ printable(0,1024) + ! css + \
(string(0,/*) string(0,//)
string(0,#include) contains(0,1024,<0a>#include) \
string(0,#define) contains(0,1024,<0a>#define))
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..88aaabbc1 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 12180 2014-10-01 12:08:02Z 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.0.0
CUPS_REVISION=
#if test -z "$CUPS_REVISION" -a -d .svn; then
# CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
@@ -89,7 +89,7 @@ fi
AC_SUBST(INSTALLSTATIC)
dnl Check for pkg-config, which is used for some other tests later on...
-AC_PATH_PROG(PKGCONFIG, pkg-config)
+AC_PATH_TOOL(PKGCONFIG, pkg-config)
dnl Check for libraries...
AC_SEARCH_LIBS(abs, m, AC_DEFINE(HAVE_ABS))
@@ -134,11 +134,9 @@ AC_CHECK_HEADER(stdint.h,AC_DEFINE(HAVE_STDINT_H))
AC_CHECK_HEADER(string.h,AC_DEFINE(HAVE_STRING_H))
AC_CHECK_HEADER(strings.h,AC_DEFINE(HAVE_STRINGS_H))
AC_CHECK_HEADER(bstring.h,AC_DEFINE(HAVE_BSTRING_H))
-AC_CHECK_HEADER(usersec.h,AC_DEFINE(HAVE_USERSEC_H))
AC_CHECK_HEADER(sys/ioctl.h,AC_DEFINE(HAVE_SYS_IOCTL_H))
AC_CHECK_HEADER(sys/param.h,AC_DEFINE(HAVE_SYS_PARAM_H))
AC_CHECK_HEADER(sys/ucred.h,AC_DEFINE(HAVE_SYS_UCRED_H))
-AC_CHECK_HEADER(scsi/sg.h,AC_DEFINE(HAVE_SCSI_SG_H))
dnl Checks for iconv.h and iconv_open
AC_CHECK_HEADER(iconv.h,
@@ -202,6 +200,9 @@ AC_CHECK_FUNCS(sigaction)
dnl Checks for wait functions.
AC_CHECK_FUNCS(waitpid wait3)
+dnl Check for posix_spawn
+AC_CHECK_FUNCS(posix_spawn)
+
dnl See if the tm structure has the tm_gmtoff member...
AC_MSG_CHECKING(for tm_gmtoff member in tm structure)
AC_TRY_COMPILE([#include <time.h>],[struct tm t;
@@ -359,7 +360,6 @@ case $uname in
AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h,AC_DEFINE(HAVE_COREFOUNDATION_H))
AC_CHECK_HEADER(CoreFoundation/CFPriv.h,AC_DEFINE(HAVE_CFPRIV_H))
AC_CHECK_HEADER(CoreFoundation/CFBundlePriv.h,AC_DEFINE(HAVE_CFBUNDLEPRIV_H))
- AC_CHECK_HEADER(IOKit/pwr_mgt/IOPMLibPrivate.h,AC_DEFINE(HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H))
dnl Check for dynamic store function...
AC_CHECK_FUNCS(SCDynamicStoreCopyComputerName)
@@ -369,9 +369,6 @@ case $uname in
AC_CHECK_HEADER(membershipPriv.h,AC_DEFINE(HAVE_MEMBERSHIPPRIV_H))
AC_CHECK_FUNCS(mbr_uid_to_uuid)
- dnl Check for the vproc_transaction_begin/end stuff...
- AC_CHECK_FUNCS(vproc_transaction_begin)
-
dnl Need <dlfcn.h> header...
AC_CHECK_HEADER(dlfcn.h,AC_DEFINE(HAVE_DLFCN_H))
@@ -465,5 +462,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 12180 2014-10-01 12:08:02Z msweet $".
dnl
diff --git a/config-scripts/cups-compiler.m4 b/config-scripts/cups-compiler.m4
index 19a08f8db..ca3bae8e0 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 12122 2014-08-28 12:55:52Z msweet $"
dnl
dnl Compiler stuff for CUPS.
dnl
@@ -103,14 +103,14 @@ 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
# The -fstack-protector option is available with some versions of
# GCC and adds "stack canaries" which detect when the return address
# has been overwritten, preventing many types of exploit attacks.
- AC_MSG_CHECKING(if GCC supports -fstack-protector)
+ AC_MSG_CHECKING(whether compiler supports -fstack-protector)
OLDCFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fstack-protector"
AC_TRY_LINK(,,
@@ -130,7 +130,7 @@ if test -n "$GCC"; then
# exploits that depend on a fixed address for common functions.
#
# Not available to LSB binaries...
- AC_MSG_CHECKING(if GCC supports -fPIE)
+ AC_MSG_CHECKING(whether compiler supports -fPIE)
OLDCFLAGS="$CFLAGS"
case "$uname" in
Darwin*)
@@ -156,18 +156,27 @@ if test -n "$GCC"; then
# Add useful warning options for tracking down problems...
OPTIM="-Wall -Wno-format-y2k -Wunused $OPTIM"
+ AC_MSG_CHECKING(whether compiler supports -Wsign-conversion)
+ OLDCFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Werror -Wsign-conversion"
+ AC_TRY_COMPILE(,,
+ [OPTIM="$OPTIM -Wsign-conversion"
+ AC_MSG_RESULT(yes)],
+ AC_MSG_RESULT(no))
+ CFLAGS="$OLDCFLAGS"
+
+ AC_MSG_CHECKING(whether compiler 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 +201,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
@@ -240,26 +215,12 @@ else
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
- ;;
*)
# Running some other operating system; inform the user they
# should contribute the necessary options to
# cups-support@cups.org...
echo "Building CUPS with default compiler optimizations; contact"
- echo "cups-bugs@cups.org with uname and compiler options needed"
+ echo "cups-devel@cups.org with uname and compiler options needed"
echo "for your platform, or set the CFLAGS and LDFLAGS environment"
echo "variables before running configure."
;;
@@ -268,33 +229,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 12122 2014-08-28 12:55:52Z 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 <netat/appletalk.h>])
-
dnl
-dnl End of "$Id: cups-network.m4 7918 2008-09-08 22:03:01Z mike $".
+dnl End of "$Id: cups-network.m4 11719 2014-03-21 18:07:23Z msweet $".
dnl
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..97760ca24 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 12122 2014-08-28 12:55:52Z 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`
@@ -85,56 +79,11 @@ if test x$enable_ssl != xno; 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"])
+ LIBS="$LIBS $SSLLIBS"
+ AC_CHECK_FUNC(gnutls_transport_set_pull_timeout_function, AC_DEFINE(HAVE_GNUTLS_TRANSPORT_SET_PULL_TIMEOUT_FUNCTION))
+ LIBS="$SAVELIBS"
+ fi
fi
fi
@@ -143,7 +92,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 +106,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 12122 2014-08-28 12:55:52Z 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..0d11eff69 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 12140 2014-08-30 01:51:22Z 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_
@@ -93,7 +93,7 @@
* Default MaxCopies value...
*/
-#define CUPS_DEFAULT_MAX_COPIES 100
+#define CUPS_DEFAULT_MAX_COPIES 9999
/*
@@ -132,6 +132,13 @@
/*
+ * Do we have posix_spawn?
+ */
+
+#undef HAVE_POSIX_SPAWN
+
+
+/*
* Do we have ZLIB?
*/
@@ -143,10 +150,7 @@
* Do we have PAM stuff?
*/
-#ifndef HAVE_LIBPAM
#define HAVE_LIBPAM 0
-#endif /* !HAVE_LIBPAM */
-
#undef HAVE_PAM_PAM_APPL_H
#undef HAVE_PAM_SET_ITEM
#undef HAVE_PAM_SETCRED
@@ -290,15 +294,15 @@
#undef HAVE_CDSASSL
#undef HAVE_GNUTLS
-#undef HAVE_LIBSSL
+#undef HAVE_SSPISSL
#undef HAVE_SSL
/*
- * Do we have the SSL_set_tlsext_host_name function?
+ * Do we have the gnutls_transport_set_pull_timeout_function function?
*/
-#undef HAVE_SSL_SET_TLSEXT_HOST_NAME
+#undef HAVE_GNUTLS_TRANSPORT_SET_PULL_TIMEOUT_FUNCTION
/*
@@ -324,6 +328,20 @@
/*
+ * Do we have the SecGenerateSelfSignedCertificate function?
+ */
+
+#undef HAVE_SECGENERATESELFSIGNEDCERTIFICATE
+
+
+/*
+ * Do we have the SecKeychainOpen function?
+ */
+
+#undef HAVE_SECKEYCHAINOPEN
+
+
+/*
* Do we have libpaper?
*/
@@ -429,13 +447,6 @@
/*
- * Do we have the AIX usersec.h header file?
- */
-
-#undef HAVE_USERSEC_H
-
-
-/*
* Do we have pthread support?
*/
@@ -448,6 +459,14 @@
#undef HAVE_LAUNCH_H
#undef HAVE_LAUNCHD
+#undef HAVE_LAUNCH_ACTIVATE_SOCKET
+
+
+/*
+ * Do we have systemd support?
+ */
+
+#undef HAVE_SYSTEMD
/*
@@ -523,13 +542,6 @@
/*
- * Do we have Darwin's IOKit private headers?
- */
-
-#undef HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H
-
-
-/*
* Do we have DBUS?
*/
@@ -626,13 +638,6 @@
/*
- * Do we have vproc_transaction_begin/end?
- */
-
-#undef HAVE_VPROC_TRANSACTION_BEGIN
-
-
-/*
* Do we have libusb?
*/
@@ -707,5 +712,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 12140 2014-08-30 01:51:22Z msweet $".
*/
diff --git a/configure b/configure
index 04a23df9a..5a7a5dfe3 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.0.0
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 :
@@ -5644,18 +5696,6 @@ fi
done
- for ac_func in vproc_transaction_begin
-do :
- ac_fn_c_check_func "$LINENO" "vproc_transaction_begin" "ac_cv_func_vproc_transaction_begin"
-if test "x$ac_cv_func_vproc_transaction_begin" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_VPROC_TRANSACTION_BEGIN 1
-_ACEOF
-
-fi
-done
-
-
ac_fn_c_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default"
if test "x$ac_cv_header_dlfcn_h" = xyes; then :
$as_echo "#define HAVE_DLFCN_H 1" >>confdefs.h
@@ -5904,11 +5944,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 +5965,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 +6148,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 +6260,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 +6282,8 @@ fi
case "$uname" in
- SunOS* | HP-UX*)
- # Solaris and HP-UX
+ SunOS*)
+ # Solaris
MAN1EXT=1
MAN5EXT=5
MAN7EXT=7
@@ -6464,51 +6342,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 +6362,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 +6404,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 +6430,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,15 +6606,15 @@ 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
# The -fstack-protector option is available with some versions of
# GCC and adds "stack canaries" which detect when the return address
# has been overwritten, preventing many types of exploit attacks.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if GCC supports -fstack-protector" >&5
-$as_echo_n "checking if GCC supports -fstack-protector... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports -fstack-protector" >&5
+$as_echo_n "checking whether compiler supports -fstack-protector... " >&6; }
OLDCFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fstack-protector"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6849,8 +6651,8 @@ rm -f core conftest.err conftest.$ac_objext \
# exploits that depend on a fixed address for common functions.
#
# Not available to LSB binaries...
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if GCC supports -fPIE" >&5
-$as_echo_n "checking if GCC supports -fPIE... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports -fPIE" >&5
+$as_echo_n "checking whether compiler supports -fPIE... " >&6; }
OLDCFLAGS="$CFLAGS"
case "$uname" in
Darwin*)
@@ -6910,15 +6712,37 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
# Add useful warning options for tracking down problems...
OPTIM="-Wall -Wno-format-y2k -Wunused $OPTIM"
- # 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_n "checking if GCC supports -Wno-tautological-compare... " >&6; }
- OLDCFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -Werror -Wno-tautological-compare"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports -Wsign-conversion" >&5
+$as_echo_n "checking whether compiler supports -Wsign-conversion... " >&6; }
+ OLDCFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Werror -Wsign-conversion"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ OPTIM="$OPTIM -Wsign-conversion"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$OLDCFLAGS"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports -Wno-tautological-compare" >&5
+$as_echo_n "checking whether compiler supports -Wno-tautological-compare... " >&6; }
+ OLDCFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Werror -Wno-tautological-compare"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
@@ -6931,14 +6755,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,40 +6791,6 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
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
@@ -7011,26 +6805,12 @@ else
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
- ;;
*)
# Running some other operating system; inform the user they
# should contribute the necessary options to
# cups-support@cups.org...
echo "Building CUPS with default compiler optimizations; contact"
- echo "cups-bugs@cups.org with uname and compiler options needed"
+ echo "cups-devel@cups.org with uname and compiler options needed"
echo "for your platform, or set the CFLAGS and LDFLAGS environment"
echo "variables before running configure."
;;
@@ -7039,31 +6819,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 +7466,6 @@ fi
-for ac_header in AppleTalk/at_proto.h
-do :
- ac_fn_c_check_header_compile "$LINENO" "AppleTalk/at_proto.h" "ac_cv_header_AppleTalk_at_proto_h" "#include <netat/appletalk.h>
-"
-if test "x$ac_cv_header_AppleTalk_at_proto_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_APPLETALK_AT_PROTO_H 1
-_ACEOF
- $as_echo "#define HAVE_APPLETALK_AT_PROTO_H 1" >>confdefs.h
-
-fi
-
-done
-
-
ac_fn_c_check_func "$LINENO" "poll" "ac_cv_func_poll"
@@ -7754,8 +7499,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 +7540,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 +8003,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 +8083,8 @@ fi
$as_echo "#define HAVE_CSSMERRORSTRING 1" >>confdefs.h
+ $as_echo "#define HAVE_SECKEYCHAINOPEN 1" >>confdefs.h
+
fi
@@ -8306,8 +8092,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 +8133,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 +8231,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`
@@ -8408,102 +8310,16 @@ fi
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
+ SAVELIBS="$LIBS"
+ LIBS="$LIBS $SSLLIBS"
+ ac_fn_c_check_func "$LINENO" "gnutls_transport_set_pull_timeout_function" "ac_cv_func_gnutls_transport_set_pull_timeout_function"
+if test "x$ac_cv_func_gnutls_transport_set_pull_timeout_function" = xyes; then :
+ $as_echo "#define HAVE_GNUTLS_TRANSPORT_SET_PULL_TIMEOUT_FUNCTION 1" >>confdefs.h
fi
-done
-
- fi
LIBS="$SAVELIBS"
-fi
-
-
+ fi
fi
fi
@@ -8514,7 +8330,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 +8357,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 +8984,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 +9004,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 +9026,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,10 +9035,184 @@ 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
+
+
+
LANGUAGES="`ls -1 locale/cups_*.po 2>/dev/null | sed -e '1,$s/locale\/cups_//' -e '1,$s/\.po//' | tr '\n' ' '`"
@@ -9326,7 +9326,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 +9335,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 +10101,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 +10815,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 +10828,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
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..64a0d19d1 100644
--- a/cups/Dependencies
+++ b/cups/Dependencies
@@ -1,260 +1,318 @@
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
-array.o: array.c string-private.h ../config.h debug-private.h \
- ../cups/versioning.h array-private.h ../cups/array.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 ../cups/cups.h file.h versioning.h ipp.h http.h array.h \
+ language.h pwg.h string-private.h ../config.h debug-private.h \
+ array-private.h
attr.o: attr.c cups-private.h string-private.h ../config.h \
- debug-private.h ../cups/versioning.h 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
+string.o: string.c cups-private.h string-private.h ../config.h \
+ debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+ ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+ md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+ ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
+ thread-private.h
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) \
@@ -332,26 +333,13 @@ libcups.2.dylib: $(LIBOBJS) $(LIBCUPSORDER)
#
-# 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
#
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)
@@ -367,6 +355,23 @@ libcups.a: $(LIBOBJS)
#
+# 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)
#
@@ -389,6 +394,16 @@ testarray: testarray.o $(LIBCUPSSTATIC)
#
+# 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)
#
@@ -409,6 +424,16 @@ testcups: testcups.o $(LIBCUPSSTATIC)
#
+# 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/api-filter.shtml b/cups/api-filter.shtml
index 4b8372edd..7c33179c8 100644
--- a/cups/api-filter.shtml
+++ b/cups/api-filter.shtml
@@ -3,7 +3,7 @@
Filter and backend programming introduction 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
@@ -81,7 +81,7 @@ directory to write to.</p>
<p>In addition, some operating systems provide additional security mechanisms
that further limit file system access, even for backends running as root. On
-OS X, for example, no backend may write to a user's home directory.</p>
+OS X, for example, no backend may write to a user's home directory. See the <a href="#SANDBOXING">Sandboxing on OS X</a> section for more information.</p>
</blockquote>
<h3><a name="SIGNALS">Canceled Jobs and Signal Handling</a></h3>
@@ -852,3 +852,25 @@ void *my_data;
<a href="#cupsSideChannelSNMPWalk">cupsSNMPSideChannelWalk</a>(".1.3.6.1.2.1.43", 5.0, my_callback, my_data);
</pre>
+
+<h2><a name="SANDBOXING">Sandboxing on OS X</a></h2>
+
+<p>Starting with OS X 10.6, filters and backends are run inside a security "sandbox" which further limits (beyond the normal UNIX user/group permissions) what a filter or backend can do. This helps to both secure the printing system from malicious software and enforce the functional separation of components in the CUPS filter chain. What follows is a list of actions that are explicitly allowed for all filters and backends:</p>
+
+<ol>
+
+ <li>Reading of files: pursuant to normal UNIX file permissions, filters and backends can read files for the current job from the <var>/private/var/spool/cups</var> directory and other files on mounted filesystems <em>except</em> for user home directories under <var>/Users</var>.</li>
+
+ <li>Writing of files: pursuant to normal UNIX file permissions, filters and backends can read/write files to the cache directory specified by the <code>CUPS_CACHEDIR</code> environment variable, to the state directory specified by the <code>CUPS_STATEDIR</code> environment variable, to the temporary directory specified by the <code>TMPDIR</code> environment variable, and under the <var>/private/var/db</var>, <var>/private/var/folders</var>, <var>/private/var/lib</var>, <var>/private/var/mysql</var>, <var>/private/var/run</var>, <var>/private/var/spool</var> (except <var>/private/var/spool/cups</var>), <var>/Library/Application&nbsp;Support</var>, <var>/Library/Caches</var>, <var>/Library/Logs</var>, <var>/Library/Preferences</var>, <var>/Library/WebServer</var>, and <var>/Users/Shared</var> directories.</li>
+
+ <li>Execution of programs: pursuant to normal UNIX file permissions, filters and backends can execute any program not located under the <var>/Users</var> directory. Child processes inherit the sandbox and are subject to the same restrictions as the parent.</li>
+
+ <li>Bluetooth and USB: backends can access Bluetooth and USB printers through IOKit. <em>Filters cannot access Bluetooth and USB printers directly.</em></li>
+
+ <li>Network: filters and backends can access UNIX domain sockets under the <var>/private/tmp</var>, <var>/private/var/run</var>, and <var>/private/var/tmp</var> directories. Backends can also create IPv4 and IPv6 TCP (outgoing) and UDP (incoming and outgoing) socket, and bind to local source ports. <em>Filters cannot directly create IPv4 and IPv6 TCP or UDP sockets.</em></li>
+
+ <li>Notifications: filters and backends can send notifications via the Darwin <code>notify_post()</code> API.</li>
+
+</ol>
+
+<blockquote><b>Note:</b> The sandbox profile used in CUPS 2.0 still allows some actions that are not listed above - these privileges will be removed over time until the profile matches the list above.</blockquote>
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 <cups/cups.h>
#include "string-private.h"
#include "debug-private.h"
#include "array-private.h"
@@ -423,7 +392,7 @@ cupsArrayDup(cups_array_t *a) /* I - Array */
* Allocate memory for the elements...
*/
- da->elements = malloc(a->num_elements * sizeof(void *));
+ da->elements = malloc((size_t)a->num_elements * sizeof(void *));
if (!da->elements)
{
free(da);
@@ -451,7 +420,7 @@ cupsArrayDup(cups_array_t *a) /* I - Array */
* Just copy raw pointers...
*/
- memcpy(da->elements, a->elements, a->num_elements * sizeof(void *));
+ memcpy(da->elements, a->elements, (size_t)a->num_elements * sizeof(void *));
}
da->num_elements = a->num_elements;
@@ -794,7 +763,7 @@ cupsArrayNew3(cups_array_func_t f, /* I - Comparison function or @code NULL@ fo
{
a->hashfunc = h;
a->hashsize = hsize;
- a->hash = malloc(hsize * sizeof(int));
+ a->hash = malloc((size_t)hsize * sizeof(int));
if (!a->hash)
{
@@ -802,7 +771,7 @@ cupsArrayNew3(cups_array_func_t f, /* I - Comparison function or @code NULL@ fo
return (NULL);
}
- memset(a->hash, -1, hsize * sizeof(int));
+ memset(a->hash, -1, (size_t)hsize * sizeof(int));
}
a->copyfunc = cf;
@@ -918,9 +887,9 @@ int /* O - 1 on success, 0 on failure */
cupsArrayRemove(cups_array_t *a, /* I - Array */
void *e) /* I - Element */
{
- int i, /* Looping var */
- current, /* Current element */
- diff; /* Difference */
+ ssize_t i, /* Looping var */
+ current; /* Current element */
+ int diff; /* Difference */
/*
@@ -952,7 +921,7 @@ cupsArrayRemove(cups_array_t *a, /* I - Array */
if (current < a->num_elements)
memmove(a->elements + current, a->elements + current + 1,
- (a->num_elements - current) * sizeof(void *));
+ (size_t)(a->num_elements - current) * sizeof(void *));
if (current <= a->current)
a->current --;
@@ -1053,9 +1022,9 @@ cups_array_add(cups_array_t *a, /* I - Array */
void *e, /* I - Element to add */
int insert) /* I - 1 = insert, 0 = append */
{
- int i, /* Looping var */
- current, /* Current element */
- diff; /* Comparison with current element */
+ int i, /* Looping var */
+ current; /* Current element */
+ int diff; /* Comparison with current element */
DEBUG_printf(("7cups_array_add(a=%p, e=%p, insert=%d)", a, e, insert));
@@ -1079,7 +1048,7 @@ cups_array_add(cups_array_t *a, /* I - Array */
if (a->alloc_elements == 0)
{
count = 16;
- temp = malloc(count * sizeof(void *));
+ temp = malloc((size_t)count * sizeof(void *));
}
else
{
@@ -1088,10 +1057,10 @@ cups_array_add(cups_array_t *a, /* I - Array */
else
count = a->alloc_elements + 1024;
- temp = realloc(a->elements, count * sizeof(void *));
+ temp = realloc(a->elements, (size_t)count * sizeof(void *));
}
- DEBUG_printf(("9cups_array_add: count=%d", count));
+ DEBUG_printf(("9cups_array_add: count=" CUPS_LLFMT, CUPS_LLCAST count));
if (!temp)
{
@@ -1181,7 +1150,7 @@ cups_array_add(cups_array_t *a, /* I - Array */
*/
memmove(a->elements + current + 1, a->elements + current,
- (a->num_elements - current) * sizeof(void *));
+ (size_t)(a->num_elements - current) * sizeof(void *));
if (a->current >= current)
a->current ++;
@@ -1190,11 +1159,11 @@ cups_array_add(cups_array_t *a, /* I - Array */
if (a->saved[i] >= current)
a->saved[i] ++;
- DEBUG_printf(("9cups_array_add: insert element at index %d...", current));
+ DEBUG_printf(("9cups_array_add: insert element at index " CUPS_LLFMT, CUPS_LLCAST current));
}
#ifdef DEBUG
else
- DEBUG_printf(("9cups_array_add: append element at %d...", current));
+ DEBUG_printf(("9cups_array_add: append element at " CUPS_LLFMT, CUPS_LLCAST current));
#endif /* DEBUG */
if (a->copyfunc)
@@ -1213,8 +1182,7 @@ cups_array_add(cups_array_t *a, /* I - Array */
#ifdef DEBUG
for (current = 0; current < a->num_elements; current ++)
- DEBUG_printf(("9cups_array_add: a->elements[%d]=%p", current,
- a->elements[current]));
+ DEBUG_printf(("9cups_array_add: a->elements[" CUPS_LLFMT "]=%p", CUPS_LLCAST current, a->elements[current]));
#endif /* DEBUG */
DEBUG_puts("9cups_array_add: returning 1");
@@ -1362,5 +1330,5 @@ cups_array_find(cups_array_t *a, /* I - Array */
/*
- * End of "$Id: array.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: array.c 12031 2014-07-15 19:57:59Z msweet $".
*/
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..b7047dae5 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 12094 2014-08-19 12:15:11Z 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/OS X 10.10 */
+extern cups_dest_t *cupsGetDestWithURI(const char *name, const char *uri) _CUPS_API_2_0;
+extern const char *cupsLocalizeDestMedia(http_t *http, cups_dest_t *dest, cups_dinfo_t *info, unsigned flags, cups_size_t *size) _CUPS_API_2_0;
+extern int cupsMakeServerCredentials(const char *path, const char *common_name, int num_alt_names, const char **alt_names, time_t expiration_date) _CUPS_API_2_0;
+extern int cupsSetServerCredentials(const char *path, const char *common_name, int auto_create) _CUPS_API_2_0;
# 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 12094 2014-08-19 12:15:11Z 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..d76ae2b24 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 12094 2014-08-19 12:15:11Z 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.
*/
/*
@@ -43,6 +32,170 @@ 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/OS X 10.10@
+ */
+
+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 12094 2014-08-19 12:15:11Z 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..9e88aede6 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 12094 2014-08-19 12:15:11Z 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);
}
@@ -1371,6 +1303,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/OS X 10.10@
+ */
+
+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.
*
* "op" is IPP_OP_CUPS_GET_PRINTERS to get a full list, IPP_OP_CUPS_GET_DEFAULT
@@ -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 12094 2014-08-19 12:15:11Z 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..374f85005 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 12124 2014-08-28 15:37:22Z 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
/*
@@ -361,7 +361,9 @@ cups_globals_free(_cups_globals_t *cg) /* I - Pointer to global data */
httpClose(cg->http);
+#ifdef HAVE_SSL
_httpFreeCredentials(cg->tls_credentials);
+#endif /* HAVE_SSL */
cupsFileClose(cg->stdio_files[0]);
cupsFileClose(cg->stdio_files[1]);
@@ -392,5 +394,5 @@ cups_globals_init(void)
/*
- * End of "$Id: globals.c 11113 2013-07-10 14:08:39Z msweet $".
+ * End of "$Id: globals.c 12124 2014-08-28 15:37:22Z msweet $".
*/
diff --git a/cups/http-addr.c b/cups/http-addr.c
index e8daaf3e7..3f68d0d49 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 12129 2014-08-28 19:26:31Z msweet $"
*
* HTTP address routines for CUPS.
*
- * Copyright 2007-2013 by Apple Inc.
+ * Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -20,6 +20,7 @@
*/
#include "cups-private.h"
+#include <sys/stat.h>
#ifdef HAVE_RESOLV_H
# include <resolv.h>
#endif /* HAVE_RESOLV_H */
@@ -56,6 +57,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/OS 10.10@
+ */
+
+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.
*
* @since CUPS 1.2/OS X 10.5@
@@ -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 */
@@ -348,6 +436,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.
*
* @since CUPS 1.7/OS X 10.9@
@@ -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));
@@ -555,6 +649,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/OS 10.10@
+ */
+
+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,10 +861,17 @@ 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 */
}
+
+ /*
+ * Make sure .local hostnames end with a period...
+ */
+
+ if (strlen(s) > 6 && !strcmp(s + strlen(s) - 6, ".local"))
+ strlcat(s, ".", (size_t)slen);
}
/*
@@ -756,5 +883,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/OS 10.10@
+ */
+
+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 12129 2014-08-28 19:26:31Z 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..2c18052c5 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 12126 2014-08-28 16:02:00Z msweet $"
*
* Private HTTP definitions for CUPS.
*
- * Copyright 2007-2013 by Apple Inc.
+ * Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -23,6 +23,7 @@
*/
# include "config.h"
+# include <cups/language.h>
# include <stddef.h>
# include <stdlib.h>
@@ -39,7 +40,6 @@
# include <unistd.h>
# include <fcntl.h>
# include <sys/socket.h>
-# define closesocket(f) close(f)
# define CUPS_SOCAST
# endif /* WIN32 */
@@ -73,14 +73,9 @@ typedef int socklen_t;
# include "md5-private.h"
# include "ipp-private.h"
-# if defined HAVE_LIBSSL
-# include <openssl/err.h>
-# include <openssl/rand.h>
-# include <openssl/ssl.h>
-# elif defined HAVE_GNUTLS
+# ifdef HAVE_GNUTLS
# include <gnutls/gnutls.h>
# include <gnutls/x509.h>
-# include <gcrypt.h>
# elif defined(HAVE_CDSASSL)
# include <CoreFoundation/CoreFoundation.h>
# include <Security/Security.h>
@@ -98,6 +93,19 @@ typedef int socklen_t;
# include <Security/SecCertificate.h>
# include <Security/SecIdentity.h>
# endif /* HAVE_SECCERTIFICATE_H */
+# ifdef HAVE_SECCERTIFICATEPRIV_H
+# include <Security/SecCertificatePriv.h>
+# else
+# ifdef __cplusplus
+extern "C" {
+# endif /* __cplusplus */
+extern SecCertificateRef SecCertificateCreateWithBytes(CFAllocatorRef allocator, const UInt8 *bytes, CFIndex length);
+extern bool SecCertificateIsValid(SecCertificateRef certificate, CFAbsoluteTime verifyTime);
+extern CFAbsoluteTime SecCertificateNotValidAfter(SecCertificateRef certificate);
+# ifdef __cplusplus
+}
+# endif /* __cplusplus */
+# endif /* HAVE_SECCERTIFICATEPRIV_H */
# ifdef HAVE_SECITEMPRIV_H
# include <Security/SecItemPriv.h>
# endif /* HAVE_SECITEMPRIV_H */
@@ -108,8 +116,13 @@ typedef int socklen_t;
# include <Security/SecPolicyPriv.h>
# endif /* HAVE_SECPOLICYPRIV_H */
# elif defined(HAVE_SSPISSL)
-# include "sspi-private.h"
-# endif /* HAVE_LIBSSL */
+# include <wincrypt.h>
+# include <wintrust.h>
+# include <schannel.h>
+# define SECURITY_WIN32
+# include <security.h>
+# include <sspi.h>
+# endif /* HAVE_GNUTLS */
# ifndef WIN32
# include <net/if.h>
@@ -142,6 +155,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 +166,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 +202,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 +235,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 +252,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 +274,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 +340,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 +353,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 +402,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 +411,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 +438,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 12126 2014-08-28 16:02:00Z msweet $".
*/
diff --git a/cups/http-support.c b/cups/http-support.c
index a4250beec..7e30608ce 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 12124 2014-08-28 15:37:22Z 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,26 +630,26 @@ 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 :
if (outptr < outend)
- *outptr++ |= base64;
+ *outptr++ |= (char)base64;
pos = 0;
break;
}
@@ -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/OS 10.10@
+ */
+
+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/OS 10.10@
+ */
+
+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
{
@@ -2033,6 +2152,31 @@ http_resolve_cb(
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));
}
@@ -2237,6 +2376,31 @@ http_resolve_cb(
}
/*
+ * 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 12124 2014-08-28 15:37:22Z msweet $".
*/
diff --git a/cups/http.c b/cups/http.c
index d840769f9..b5cf4e167 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 12125 2014-08-28 15:49:29Z 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 */
@@ -439,6 +391,30 @@ httpClose(http_t *http) /* I - Connection to server */
/*
+ * 'httpCompareCredentials()' - Compare two sets of X.509 credentials.
+ *
+ * @since CUPS 2.0/OS 10.10@
+ */
+
+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.
*
* This function is deprecated - use @link httpConnect2@ instead.
@@ -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));
}
@@ -528,139 +504,11 @@ 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);
@@ -736,11 +594,30 @@ 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;
-
-#elif defined(HAVE_CDSASSL)
- CFRelease(credentials);
+ DEBUG_printf(("1httpFlushWrite: Returning %d, errno=%d.", (int)bytes, errno));
-#elif defined(HAVE_SSPISSL)
- (void)credentials;
-
-#endif /* HAVE_LIBSSL */
+ return ((int)bytes);
}
@@ -901,7 +747,7 @@ 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));
@@ -909,6 +755,21 @@ httpGet(http_t *http, /* I - Connection to server */
/*
+ * '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/OS 10.10@
+ */
+
+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.
*
* The authorization string is set by cupsDoAuthentication() and
@@ -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)
@@ -1044,6 +905,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/OS 10.10@
+ */
+
+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.
*
* Returns @code HTTP_STATUS_NONE@ if there is no Expect header, otherwise
@@ -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)
@@ -1115,6 +993,19 @@ httpGetField(http_t *http, /* I - Connection to server */
/*
+ * 'httpGetKeepAlive()' - Get the current Keep-Alive state of the connection.
+ *
+ * @since CUPS 2.0/OS 10.10@
+ */
+
+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);
@@ -1211,20 +1102,72 @@ httpGetLength2(http_t *http) /* I - Connection to server */
/*
+ * 'httpGetPending()' - Get the number of bytes that are buffered for writing.
+ *
+ * @since CUPS 2.0/OS 10.10@
+ */
+
+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/OS 10.10@
+ */
+
+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/OS 10.10@
+ */
+
+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.
*/
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/OS 10.10@
+ */
- 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/OS 10.10@
+ */
- 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;
+ http->used -= (int)buflen;
+ http->data_remaining -= (off_t)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,121 +2167,13 @@ 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.
- */
-
-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 */
-{
- 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 (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.
*
@@ -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,15 +2551,17 @@ 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)
return (-1);
+#ifdef HAVE_SSL
_httpFreeCredentials(http->tls_credentials);
http->tls_credentials = _httpCreateCredentials(credentials);
+#endif /* HAVE_SSL */
return (http->tls_credentials ? 0 : -1);
}
@@ -2775,7 +2600,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 +2650,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 +2666,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 */
{
@@ -2944,13 +2769,29 @@ httpSetField(http_t *http, /* I - Connection to server */
/*
+ * 'httpSetKeepAlive()' - Set the current Keep-Alive state of a connection.
+ *
+ * @since CUPS 2.0/OS 10.10@
+ */
+
+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.
*
* @since CUPS 1.2/OS X 10.5@
*/
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 +2826,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 */
@@ -3006,11 +2847,36 @@ httpSetTimeout(
/*
+ * 'httpShutdown()' - Shutdown one side of an HTTP connection.
+ *
+ * @since CUPS 2.0/OS 10.10@
+ */
+
+void
+httpShutdown(http_t *http) /* I - HTTP connection */
+{
+ if (!http || http->fd < 0)
+ return;
+
+#ifdef HAVE_SSL
+ if (http->tls)
+ _httpTLSStop(http);
+#endif /* HAVE_SSL */
+
+#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 +2891,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 +2901,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 +2938,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 +2968,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 +3041,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 +3065,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 +3129,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 +3155,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 +3218,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 +3274,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 +3289,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 +3331,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;
+
+ 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;
- http->stream.next_out = (Bytef *)http->wbuffer;
- http->stream.avail_out = sizeof(http->wbuffer);
+ 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 +3380,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 +3403,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 +3458,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 +3474,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 +3509,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 +3528,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 +3597,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 +3625,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 +3648,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 +3660,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,159 +3677,11 @@ 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)
-/*
- * 'http_bio_ctrl()' - Control the HTTP connection.
- */
-
-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 */
-{
- switch (cmd)
- {
- default :
- return (0);
-
- 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);
- if (h->shutdown)
- {
- h->init = 0;
- h->flags = 0;
}
- return (1);
-}
-
-
-/*
- * 'http_bio_new()' - Initialize an OpenSSL BIO structure.
- */
-
-static int /* O - 1 on success, 0 on failure */
-http_bio_new(BIO *h) /* I - BIO data */
-{
- if (!h)
- return (0);
-
- h->init = 0;
- h->num = 0;
- h->ptr = NULL;
- h->flags = 0;
-
- return (1);
-}
-
-
-/*
- * 'http_bio_puts()' - Send a string for OpenSSL.
- */
-
-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 */
-}
-
-
-/*
- * 'http_bio_read()' - Read data for OpenSSL.
- */
-
-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 */
-{
- http_t *http; /* HTTP connection */
-
-
- 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));
+ return (0);
}
-#endif /* HAVE_SSL && HAVE_LIBSSL */
#ifdef HAVE_LIBZ
@@ -4046,10 +3693,14 @@ static void
http_content_coding_finish(
http_t *http) /* I - HTTP connection */
{
- int zerr; /* Compression status */
- Byte dummy[1]; /* Dummy read buffer */
+ int zerr; /* Compression status */
+ Byte dummy[1]; /* Dummy read buffer */
+ size_t bytes; /* Number of bytes to write */
+ DEBUG_printf(("http_content_coding_finish(http=%p)", http));
+ DEBUG_printf(("1http_content_coding_finishing: http->coding=%d", http->coding));
+
switch (http->coding)
{
case _HTTP_CODING_DEFLATE :
@@ -4059,19 +3710,29 @@ http_content_coding_finish(
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);
+ bytes = _HTTP_MAX_SBUFFER - http->stream.avail_out;
- zerr = deflate(&(http->stream), Z_FINISH);
+ if (bytes > 0)
+ {
+ DEBUG_printf(("1http_content_coding_finish: Writing trailing chunk, len=%d", (int)bytes));
- http->wused = sizeof(http->wbuffer) - http->stream.avail_out;
- if (http->wused == sizeof(http->wbuffer))
- httpFlushWrite(http);
- }
+ if (http->data_encoding == HTTP_ENCODING_CHUNKED)
+ http_write_chunk(http, (char *)http->sbuffer, bytes);
+ else
+ http_write(http, (char *)http->sbuffer, bytes);
+ }
+
+ http->stream.next_out = (Bytef *)http->sbuffer;
+ http->stream.avail_out = (uInt)_HTTP_MAX_SBUFFER;
+ }
while (zerr == Z_OK);
deflateEnd(&(http->stream));
+ free(http->sbuffer);
+ http->sbuffer = NULL;
+
if (http->wused)
httpFlushWrite(http);
break;
@@ -4079,8 +3740,8 @@ http_content_coding_finish(
case _HTTP_CODING_INFLATE :
case _HTTP_CODING_GUNZIP :
inflateEnd(&(http->stream));
- free(http->dbuffer);
- http->dbuffer = NULL;
+ free(http->sbuffer);
+ http->sbuffer = NULL;
break;
default :
@@ -4160,6 +3821,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 +3843,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 +3866,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 +3979,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 +4027,7 @@ http_debug_hex(const char *prefix, /* I - Prefix for line */
if (ch < ' ' || ch >= 127)
ch = '.';
- *ptr++ = ch;
+ *ptr++ = (char)ch;
}
*ptr = '\0';
@@ -4373,24 +4038,6 @@ http_debug_hex(const char *prefix, /* I - Prefix for line */
/*
- * '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.
*
* This function does the low-level read from the socket, retrying and timing
@@ -4398,7 +4045,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 +4073,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 +4159,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 +4173,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 +4201,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 +4262,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 +4449,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 +4460,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 +4493,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 +4533,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 +4549,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 +4619,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 +4639,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 +4715,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 +4769,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 +4787,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 +4825,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 12125 2014-08-28 15:49:29Z msweet $".
*/
diff --git a/cups/http.h b/cups/http.h
index f9c83a88e..867517b71 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 12094 2014-08-19 12:15:11Z 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/OS 10.10@ */
+{
+ 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/OS X 10.10 */
+extern int httpAddrClose(http_addr_t *addr, int fd) _CUPS_API_2_0;
+extern int httpAddrFamily(http_addr_t *addr) _CUPS_API_2_0;
+extern int httpCompareCredentials(cups_array_t *cred1, cups_array_t *cred2) _CUPS_API_2_0;
+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 12094 2014-08-19 12:15:11Z 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..926be7a5e 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 12095 2014-08-19 16:16:06Z 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,51 @@ 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");
+ if (val->resolution.xres == val->resolution.yres)
+ {
+ if (buffer && bufptr < bufend)
+ bufptr += snprintf(bufptr, (size_t)(bufend - bufptr + 1), "%d%s", val->resolution.xres, val->resolution.units == IPP_RES_PER_INCH ? "dpi" : "dpcm");
+ else
+ bufptr += snprintf(temp, sizeof(temp), "%d%s", val->resolution.xres, val->resolution.units == IPP_RES_PER_INCH ? "dpi" : "dpcm");
+ }
+ else if (buffer && bufptr < bufend)
+ 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 +700,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 +744,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 +755,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 +777,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 +793,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 +804,7 @@ ippAttributeString(
else if (bufend)
*bufend = '\0';
- return (bufptr - buffer);
+ return ((size_t)(bufptr - buffer));
}
@@ -1550,11 +1537,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 +1562,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 +1851,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 +1946,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 +1978,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 +2055,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))
@@ -2134,6 +2127,22 @@ ippSetPort(int p) /* I - Port number to use */
/*
+ * 'ippStateString()' - Return the name corresponding to a state value.
+ *
+ * @since CUPS 2.0/OS 10.10@
+ */
+
+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.
*
* The returned names are defined in RFC 2911 and 3382.
@@ -2164,7 +2173,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 +2237,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 +2258,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 12095 2014-08-19 16:16:06Z msweet $".
*/
diff --git a/cups/ipp.c b/cups/ipp.c
index 0946a0d6d..cc5eebcf8 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 12093 2014-08-19 12:10:17Z 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 */
@@ -1834,7 +1728,7 @@ ippCopyAttribute(
/*
* 'ippCopyAttributes()' - Copy attributes from one IPP message to another.
*
- * Zero or more attributes are copied from the source IPP message, @code@ src, to the
+ * Zero or more attributes are copied from the source IPP message, @code src@, to the
* destination IPP message, @code dst@. When @code quickcopy@ is non-zero, a "shallow"
* reference copy of the attribute is created - this should only be done as long as the
* original source IPP message will not be freed for the life of the destination.
@@ -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 12093 2014-08-19 12:10:17Z 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..8c87ac7ea 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 12124 2014-08-28 15:37:22Z 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
@@ -333,7 +333,7 @@ _cupsMD5Finish(_cups_md5_state_t *pms, unsigned char digest[16])
for (i = 0; i < 8; ++i)
data[i] = (unsigned char)(pms->count[i >> 2] >> ((i & 3) << 3));
/* Pad to 56 bytes mod 64. */
- _cupsMD5Append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1);
+ _cupsMD5Append(pms, pad, (int)((55 - (pms->count[0] >> 3)) & 63) + 1);
/* Append the length. */
_cupsMD5Append(pms, data, 8);
for (i = 0; i < 16; ++i)
@@ -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 12124 2014-08-28 15:37:22Z 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..f72fc9bf0 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 12124 2014-08-28 15:37:22Z 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';
}
@@ -2646,7 +2630,7 @@ pwg_compare_finishings(
_pwg_finishings_t *a, /* I - First finishings value */
_pwg_finishings_t *b) /* I - Second finishings value */
{
- return (b->value - a->value);
+ return ((int)b->value - (int)a->value);
}
@@ -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 12124 2014-08-28 15:37:22Z 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);
/*
@@ -931,6 +912,24 @@ 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 */
*best_media = NULL; /* Best match */
@@ -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..d9517e9db 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 12124 2014-08-28 15:37:22Z 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 <unistd.h>
#endif /* WIN32 */
-#ifdef __hpux
-# include <sys/time.h>
-#elif !defined(WIN32)
-# include <sys/select.h>
-#endif /* __hpux */
#ifndef WIN32
+# include <sys/select.h>
# include <sys/time.h>
#endif /* !WIN32 */
#ifdef HAVE_POLL
@@ -120,7 +107,7 @@ cupsSideChannelRead(
double timeout) /* I - Timeout in seconds */
{
char *buffer; /* Message buffer */
- int bytes; /* Bytes read */
+ ssize_t bytes; /* Bytes read */
int templen; /* Data length from message */
int nfds; /* Number of file descriptors */
#ifdef HAVE_POLL
@@ -151,7 +138,7 @@ cupsSideChannelRead(
pfd.events = POLLIN;
while ((nfds = poll(&pfd, 1,
- timeout < 0.0 ? -1 : (long)(timeout * 1000))) < 0 &&
+ timeout < 0.0 ? -1 : (int)(timeout * 1000))) < 0 &&
(errno == EINTR || errno == EAGAIN))
;
@@ -214,7 +201,7 @@ cupsSideChannelRead(
if (bytes < 4)
{
- DEBUG_printf(("1cupsSideChannelRead: Short read of %d bytes", bytes));
+ DEBUG_printf(("1cupsSideChannelRead: Short read of " CUPS_LLFMT " bytes", CUPS_LLCAST bytes));
_cupsBufferRelease(buffer);
@@ -277,7 +264,7 @@ cupsSideChannelRead(
*status = (cups_sc_status_t)buffer[1];
*datalen = templen;
- memcpy(data, buffer + 4, templen);
+ memcpy(data, buffer + 4, (size_t)templen);
}
_cupsBufferRelease(buffer);
@@ -368,7 +355,7 @@ cupsSideChannelSNMPGet(
* Parse the response of the form "oid\0value"...
*/
- real_oidlen = strlen(real_data) + 1;
+ real_oidlen = (int)strlen(real_data) + 1;
real_datalen -= real_oidlen;
if ((real_datalen + 1) > *datalen)
@@ -377,7 +364,7 @@ cupsSideChannelSNMPGet(
return (CUPS_SC_STATUS_TOO_BIG);
}
- memcpy(data, real_data + real_oidlen, real_datalen);
+ memcpy(data, real_data + real_oidlen, (size_t)real_datalen);
data[real_datalen] = '\0';
*datalen = real_datalen;
@@ -427,8 +414,8 @@ cupsSideChannelSNMPWalk(
cups_sc_status_t status; /* Status of command */
cups_sc_command_t rcommand; /* Response command */
char *real_data; /* Real data buffer for response */
- int real_datalen, /* Real length of data buffer */
- real_oidlen, /* Length of returned OID string */
+ int real_datalen; /* Real length of data buffer */
+ size_t real_oidlen, /* Length of returned OID string */
oidlen; /* Length of first OID */
const char *current_oid; /* Current OID */
char last_oid[2048]; /* Last OID */
@@ -452,7 +439,7 @@ cupsSideChannelSNMPWalk(
*/
current_oid = oid;
- oidlen = (int)strlen(oid);
+ oidlen = strlen(oid);
last_oid[0] = '\0';
do
@@ -499,11 +486,11 @@ 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;
- real_datalen -= real_oidlen;
+ real_datalen -= (int)real_oidlen;
/*
* Call the callback with the OID and data...
@@ -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 12124 2014-08-28 15:37:22Z 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 <config.h>
-# include <winsock2.h>
-# include <ws2tcpip.h>
-# include <wincrypt.h>
-# include <wintrust.h>
-# include <schannel.h>
-# define SECURITY_WIN32
-# include <security.h>
-# include <sspi.h>
-
-/*
- * C++ magic...
- */
-
-# ifdef __cplusplus
-extern "C" {
-# endif /* __cplusplus */
-
-
-typedef struct /**** SSPI/SSL data structure ****/
-{
- SOCKET sock; /* TCP/IP socket */
- CredHandle creds; /* Credentials */
- CtxtHandle context; /* SSL context */
- BOOL contextInitialized; /* Is context init'd? */
- SecPkgContext_StreamSizes streamSizes; /* SSL data stream sizes */
- BYTE *decryptBuffer; /* Data pre-decryption*/
- size_t decryptBufferLength; /* Length of decrypt buffer */
- size_t decryptBufferUsed; /* Bytes used in buffer */
- BYTE *readBuffer; /* Data post-decryption */
- size_t readBufferLength; /* Length of read buffer */
- size_t readBufferUsed; /* Bytes used in buffer */
- DWORD certFlags; /* Cert verification flags */
-} _sspi_struct_t;
-
-
-/*
- * Prototypes...
- */
-_sspi_struct_t *_sspiAlloc(void);
-BOOL _sspiAccept(_sspi_struct_t *conn);
-BOOL _sspiConnect(_sspi_struct_t *conn,
- const CHAR *hostname);
-void _sspiFree(_sspi_struct_t *conn);
-BOOL _sspiGetCredentials(_sspi_struct_t *conn,
- const LPWSTR containerName,
- const TCHAR *commonName,
- BOOL server);
-int _sspiPending(_sspi_struct_t *conn);
-int _sspiRead(_sspi_struct_t *conn,
- void *buf, size_t len);
-void _sspiSetAllowsAnyRoot(_sspi_struct_t *conn,
- BOOL allow);
-void _sspiSetAllowsExpiredCerts(_sspi_struct_t *conn,
- BOOL allow);
-int _sspiWrite(_sspi_struct_t *conn,
- void *buf, size_t len);
-
-
-# ifdef __cplusplus
-}
-# endif /* __cplusplus */
-#endif /* !_CUPS_SSPI_PRIVATE_H_ */
diff --git a/cups/sspi.c b/cups/sspi.c
deleted file mode 100644
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 <stdio.h>
+#include "cups.h"
+
+
+/*
+ * Local functions...
+ */
+
+static void localize(http_t *http, cups_dest_t *dest, cups_dinfo_t *dinfo, const char *option, const char *value);
+static void print_file(http_t *http, cups_dest_t *dest, cups_dinfo_t *dinfo, const char *filename, int num_options, cups_option_t *options);
+static void show_conflicts(http_t *http, cups_dest_t *dest, cups_dinfo_t *dinfo, int num_options, cups_option_t *options);
+static void show_default(http_t *http, cups_dest_t *dest, cups_dinfo_t *dinfo, const char *option);
+static void show_media(http_t *http, cups_dest_t *dest, cups_dinfo_t *dinfo, unsigned flags, const char *name);
+static void show_supported(http_t *http, cups_dest_t *dest, cups_dinfo_t *dinfo, const char *option, const char *value);
+static void usage(const char *arg) __attribute__((noreturn));
+
+
+/*
+ * 'main()' - Main entry.
+ */
+
+int /* O - Exit status */
+main(int argc, /* I - Number of command-line arguments */
+ char *argv[]) /* I - Command-line arguments */
+{
+ http_t *http; /* Connection to destination */
+ cups_dest_t *dest = NULL; /* Destination */
+ cups_dinfo_t *dinfo; /* Destination info */
+
+
+ if (argc < 2)
+ usage(NULL);
+
+ if (!strcmp(argv[1], "--enum"))
+ {
+ return (0);
+ }
+ else if (!strncmp(argv[1], "ipp://", 6) || !strncmp(argv[1], "ipps://", 7))
+ dest = cupsGetDestWithURI(NULL, argv[1]);
+ else
+ dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, argv[1], NULL);
+
+ if (!dest)
+ {
+ printf("testdest: Unable to get destination \"%s\": %s\n", argv[1], cupsLastErrorString());
+ return (1);
+ }
+
+ if ((http = cupsConnectDest(dest, CUPS_DEST_FLAGS_NONE, 30000, NULL, NULL, 0, NULL, NULL)) == NULL)
+ {
+ printf("testdest: Unable to connect to destination \"%s\": %s\n", argv[1], cupsLastErrorString());
+ return (1);
+ }
+
+ if ((dinfo = cupsCopyDestInfo(http, dest)) == NULL)
+ {
+ printf("testdest: Unable to get information for destination \"%s\": %s\n", argv[1], cupsLastErrorString());
+ return (1);
+ }
+
+ if (argc == 2 || (!strcmp(argv[2], "supported") && argc < 6))
+ {
+ if (argc > 3)
+ show_supported(http, dest, dinfo, argv[3], argv[4]);
+ else if (argc > 2)
+ show_supported(http, dest, dinfo, argv[3], NULL);
+ else
+ show_supported(http, dest, dinfo, NULL, NULL);
+ }
+ else if (!strcmp(argv[2], "conflicts") && argc > 3)
+ {
+ int i, /* Looping var */
+ num_options = 0;/* Number of options */
+ cups_option_t *options = NULL;/* Options */
+
+ for (i = 3; i < argc; i ++)
+ num_options = cupsParseOptions(argv[i], num_options, &options);
+
+ show_conflicts(http, dest, dinfo, num_options, options);
+ }
+ else if (!strcmp(argv[2], "default") && argc == 4)
+ {
+ show_default(http, dest, dinfo, argv[3]);
+ }
+ else if (!strcmp(argv[2], "localize") && argc > 3 && argc < 6)
+ {
+ localize(http, dest, dinfo, argv[3], argv[4]);
+ }
+ else if (!strcmp(argv[2], "media"))
+ {
+ int i; /* Looping var */
+ const char *name = NULL; /* Media name, if any */
+ unsigned flags = CUPS_MEDIA_FLAGS_DEFAULT;
+ /* Media selection flags */
+
+ for (i = 3; i < argc; i ++)
+ {
+ if (!strcmp(argv[i], "borderless"))
+ flags = CUPS_MEDIA_FLAGS_BORDERLESS;
+ else if (!strcmp(argv[i], "duplex"))
+ flags = CUPS_MEDIA_FLAGS_DUPLEX;
+ else if (!strcmp(argv[i], "exact"))
+ flags = CUPS_MEDIA_FLAGS_EXACT;
+ else if (!strcmp(argv[i], "ready"))
+ flags = CUPS_MEDIA_FLAGS_READY;
+ else if (name)
+ usage(argv[i]);
+ else
+ name = argv[i];
+ }
+
+ show_media(http, dest, dinfo, flags, name);
+ }
+ else if (!strcmp(argv[2], "print") && argc > 3)
+ {
+ int i, /* Looping var */
+ num_options = 0;/* Number of options */
+ cups_option_t *options = NULL;/* Options */
+
+ for (i = 4; i < argc; i ++)
+ num_options = cupsParseOptions(argv[i], num_options, &options);
+
+ print_file(http, dest, dinfo, argv[3], num_options, options);
+ }
+ else
+ usage(argv[2]);
+
+ return (0);
+}
+
+
+/*
+ * 'localize()' - Localize an option and value.
+ */
+
+static void
+localize(http_t *http, /* I - Connection to destination */
+ cups_dest_t *dest, /* I - Destination */
+ cups_dinfo_t *dinfo, /* I - Destination information */
+ const char *option, /* I - Option */
+ const char *value) /* I - Value, if any */
+{
+ (void)http;
+ (void)dest;
+ (void)dinfo;
+ (void)option;
+ (void)value;
+}
+
+
+/*
+ * 'print_file()' - Print a file.
+ */
+
+static void
+print_file(http_t *http, /* I - Connection to destination */
+ cups_dest_t *dest, /* I - Destination */
+ cups_dinfo_t *dinfo, /* I - Destination information */
+ const char *filename, /* I - File to print */
+ int num_options, /* I - Number of options */
+ cups_option_t *options) /* I - Options */
+{
+ (void)http;
+ (void)dest;
+ (void)dinfo;
+ (void)filename;
+ (void)num_options;
+ (void)options;
+}
+
+
+/*
+ * 'show_conflicts()' - Show conflicts for selected options.
+ */
+
+static void
+show_conflicts(
+ http_t *http, /* I - Connection to destination */
+ cups_dest_t *dest, /* I - Destination */
+ cups_dinfo_t *dinfo, /* I - Destination information */
+ int num_options, /* I - Number of options */
+ cups_option_t *options) /* I - Options */
+{
+ (void)http;
+ (void)dest;
+ (void)dinfo;
+ (void)num_options;
+ (void)options;
+}
+
+
+/*
+ * 'show_default()' - Show default value for option.
+ */
+
+static void
+show_default(http_t *http, /* I - Connection to destination */
+ cups_dest_t *dest, /* I - Destination */
+ cups_dinfo_t *dinfo, /* I - Destination information */
+ const char *option) /* I - Option */
+{
+ (void)http;
+ (void)dest;
+ (void)dinfo;
+ (void)option;
+}
+
+
+/*
+ * 'show_media()' - Show available media.
+ */
+
+static void
+show_media(http_t *http, /* I - Connection to destination */
+ cups_dest_t *dest, /* I - Destination */
+ cups_dinfo_t *dinfo, /* I - Destination information */
+ unsigned flags, /* I - Media flags */
+ const char *name) /* I - Size name */
+{
+ int i, /* Looping var */
+ count; /* Number of sizes */
+ cups_size_t size; /* Media size info */
+
+
+ if (name)
+ {
+ double dw, dl; /* Width and length from name */
+ char units[32]; /* Units */
+ int width, /* Width in 100ths of millimeters */
+ length; /* Length in 100ths of millimeters */
+
+
+ if (sscanf(name, "%lfx%lf%31s", &dw, &dl, units) == 3)
+ {
+ if (!strcmp(units, "in"))
+ {
+ width = (int)(dw * 2540.0);
+ length = (int)(dl * 2540.0);
+ }
+ else if (!strcmp(units, "mm"))
+ {
+ width = (int)(dw * 100.0);
+ length = (int)(dl * 100.0);
+ }
+ else
+ {
+ puts(" bad units in size");
+ return;
+ }
+
+ if (cupsGetDestMediaBySize(http, dest, dinfo, width, length, flags, &size))
+ {
+ printf(" %s (%s) %dx%d B%d L%d R%d T%d\n", size.media, cupsLocalizeDestMedia(http, dest, dinfo, flags, &size), size.width, size.length, size.bottom, size.left, size.right, size.top);
+ }
+ else
+ {
+ puts(" not supported");
+ }
+ }
+ else if (cupsGetDestMediaByName(http, dest, dinfo, name, flags, &size))
+ {
+ printf(" %s (%s) %dx%d B%d L%d R%d T%d\n", size.media, cupsLocalizeDestMedia(http, dest, dinfo, flags, &size), size.width, size.length, size.bottom, size.left, size.right, size.top);
+ }
+ else
+ {
+ puts(" not supported");
+ }
+ }
+ else
+ {
+ count = cupsGetDestMediaCount(http, dest, dinfo, flags);
+ printf("%d size%s:\n", count, count == 1 ? "" : "s");
+
+ for (i = 0; i < count; i ++)
+ {
+ if (cupsGetDestMediaByIndex(http, dest, dinfo, i, flags, &size))
+ printf(" %s (%s) %dx%d B%d L%d R%d T%d\n", size.media, cupsLocalizeDestMedia(http, dest, dinfo, flags, &size), size.width, size.length, size.bottom, size.left, size.right, size.top);
+ else
+ puts(" error");
+ }
+ }
+}
+
+
+/*
+ * 'show_supported()' - Show supported options, values, etc.
+ */
+
+static void
+show_supported(http_t *http, /* I - Connection to destination */
+ cups_dest_t *dest, /* I - Destination */
+ cups_dinfo_t *dinfo, /* I - Destination information */
+ const char *option, /* I - Option, if any */
+ const char *value) /* I - Value, if any */
+{
+ ipp_attribute_t *attr; /* Attribute */
+ int i, /* Looping var */
+ count; /* Number of values */
+
+
+ if (!option)
+ {
+ attr = cupsFindDestSupported(http, dest, dinfo, "job-creation-attributes");
+ if (attr)
+ {
+ count = ippGetCount(attr);
+ for (i = 0; i < count; i ++)
+ show_supported(http, dest, dinfo, ippGetString(attr, i, NULL), NULL);
+ }
+ else
+ {
+ static const char * const options[] =
+ { /* List of standard options */
+ CUPS_COPIES,
+ CUPS_FINISHINGS,
+ CUPS_MEDIA,
+ CUPS_NUMBER_UP,
+ CUPS_ORIENTATION,
+ CUPS_PRINT_COLOR_MODE,
+ CUPS_PRINT_QUALITY,
+ CUPS_SIDES
+ };
+
+ puts("No job-creation-attributes-supported attribute, probing instead.");
+
+ for (i = 0; i < (int)(sizeof(options) / sizeof(options[0])); i ++)
+ if (cupsCheckDestSupported(http, dest, dinfo, options[i], NULL))
+ show_supported(http, dest, dinfo, options[i], NULL);
+ }
+ }
+ else if (!value)
+ {
+ puts(option);
+ if ((attr = cupsFindDestSupported(http, dest, dinfo, option)) != NULL)
+ {
+ count = ippGetCount(attr);
+
+ switch (ippGetValueTag(attr))
+ {
+ case IPP_TAG_INTEGER :
+ for (i = 0; i < count; i ++)
+ printf(" %d\n", ippGetInteger(attr, i));
+ break;
+
+ case IPP_TAG_ENUM :
+ for (i = 0; i < count; i ++)
+ printf(" %s\n", ippEnumString(option, ippGetInteger(attr, i)));
+ break;
+
+ case IPP_TAG_RANGE :
+ for (i = 0; i < count; i ++)
+ {
+ int upper, lower = ippGetRange(attr, i, &upper);
+
+ printf(" %d-%d\n", lower, upper);
+ }
+ break;
+
+ case IPP_TAG_TEXTLANG :
+ case IPP_TAG_NAMELANG :
+ case IPP_TAG_TEXT :
+ case IPP_TAG_NAME :
+ case IPP_TAG_KEYWORD :
+ case IPP_TAG_URI :
+ case IPP_TAG_URISCHEME :
+ case IPP_TAG_CHARSET :
+ case IPP_TAG_LANGUAGE :
+ case IPP_TAG_MIMETYPE :
+ for (i = 0; i < count; i ++)
+ printf(" %s\n", ippGetString(attr, i, NULL));
+ break;
+
+ case IPP_TAG_STRING :
+ for (i = 0; i < count; i ++)
+ {
+ int j, len;
+ unsigned char *data = ippGetOctetString(attr, i, &len);
+
+ fputs(" ", stdout);
+ for (j = 0; j < len; j ++)
+ {
+ if (data[j] < ' ' || data[j] >= 0x7f)
+ printf("<%02X>", data[j]);
+ else
+ putchar(data[j]);
+ }
+ putchar('\n');
+ }
+ break;
+
+ case IPP_TAG_BOOLEAN :
+ break;
+
+ default :
+ printf(" %s\n", ippTagString(ippGetValueTag(attr)));
+ break;
+ }
+ }
+
+ }
+ else if (cupsCheckDestSupported(http, dest, dinfo, option, value))
+ puts("YES");
+ else
+ puts("NO");
+
+}
+
+
+/*
+ * 'usage()' - Show program usage.
+ */
+
+static void
+usage(const char *arg) /* I - Argument for usage message */
+{
+ if (arg)
+ printf("testdest: Unknown option \"%s\".\n", arg);
+
+ puts("Usage:");
+ puts(" ./testdest name [operation ...]");
+ puts(" ./testdest ipp://... [operation ...]");
+ puts(" ./testdest ipps://... [operation ...]");
+ puts(" ./testdest --enum [grayscale] [color] [duplex] [staple] [small]\n"
+ " [medium] [large]");
+ puts("");
+ puts("Operations:");
+ puts(" conflicts options");
+ puts(" default option");
+ puts(" localize option [value]");
+ puts(" media [borderless] [duplex] [exact] [ready] [name or size]");
+ puts(" print filename [options]");
+ puts(" supported [option [value]]");
+
+ exit(arg != NULL);
+}
+
+
+/*
+ * End of "$Id: testdest.c 11884 2014-05-16 21:54:22Z msweet $".
+ */
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 <unistd.h>
# include <fcntl.h>
#endif /* WIN32 */
+#include <math.h>
/*
@@ -394,10 +391,10 @@ main(int argc, /* I - Number of command-line arguments */
fputs("ppdPageSizeLimits: ", stdout);
if (ppdPageSizeLimits(ppd, &minsize, &maxsize))
{
- if (minsize.width != 36 || minsize.length != 36 ||
- maxsize.width != 1080 || maxsize.length != 86400)
+ if (fabs(minsize.width - 36.0) > 0.001 || fabs(minsize.length - 36.0) > 0.001 ||
+ fabs(maxsize.width - 1080.0) > 0.001 || fabs(maxsize.length - 86400.0) > 0.001)
{
- printf("FAIL (got min=%.0fx%.0f, max=%.0fx%.0f, "
+ printf("FAIL (got min=%.3fx%.3f, max=%.3fx%.3f, "
"expected min=36x36, max=1080x86400)\n", minsize.width,
minsize.length, maxsize.width, maxsize.length);
status ++;
@@ -483,7 +480,8 @@ main(int argc, /* I - Number of command-line arguments */
size = ppdPageSize(ppd, NULL);
if (!size || strcmp(size->name, "Custom") ||
- size->width != 576 || size->length != 720)
+ fabs(size->width - 576.0) > 0.001 ||
+ fabs(size->length - 720.0) > 0.001)
{
printf("FAIL (%s - %gx%g)\n", size ? size->name : "unknown",
size ? size->width : 0.0, size ? size->length : 0.0);
@@ -772,8 +770,8 @@ main(int argc, /* I - Number of command-line arguments */
fputs("ppdPageSizeLimits(default): ", stdout);
if (ppdPageSizeLimits(ppd, &minsize, &maxsize))
{
- if (minsize.width != 36 || minsize.length != 36 ||
- maxsize.width != 1080 || maxsize.length != 86400)
+ if (fabs(minsize.width - 36.0) > 0.001 || fabs(minsize.length - 36.0) > 0.001 ||
+ fabs(maxsize.width - 1080.0) > 0.001 || fabs(maxsize.length - 86400.0) > 0.001)
{
printf("FAIL (got min=%.0fx%.0f, max=%.0fx%.0f, "
"expected min=36x36, max=1080x86400)\n", minsize.width,
@@ -794,8 +792,8 @@ main(int argc, /* I - Number of command-line arguments */
fputs("ppdPageSizeLimits(InputSlot=Manual): ", stdout);
if (ppdPageSizeLimits(ppd, &minsize, &maxsize))
{
- if (minsize.width != 100 || minsize.length != 100 ||
- maxsize.width != 1000 || maxsize.length != 1000)
+ if (fabs(minsize.width - 100.0) > 0.001 || fabs(minsize.length - 100.0) > 0.001 ||
+ fabs(maxsize.width - 1000.0) > 0.001 || fabs(maxsize.length - 1000.0) > 0.001)
{
printf("FAIL (got min=%.0fx%.0f, max=%.0fx%.0f, "
"expected min=100x100, max=1000x1000)\n", minsize.width,
@@ -816,8 +814,8 @@ main(int argc, /* I - Number of command-line arguments */
fputs("ppdPageSizeLimits(Quality=Photo): ", stdout);
if (ppdPageSizeLimits(ppd, &minsize, &maxsize))
{
- if (minsize.width != 200 || minsize.length != 200 ||
- maxsize.width != 1000 || maxsize.length != 1000)
+ if (fabs(minsize.width - 200.0) > 0.001 || fabs(minsize.length - 200.0) > 0.001 ||
+ fabs(maxsize.width - 1000.0) > 0.001 || fabs(maxsize.length - 1000.0) > 0.001)
{
printf("FAIL (got min=%.0fx%.0f, max=%.0fx%.0f, "
"expected min=200x200, max=1000x1000)\n", minsize.width,
@@ -838,8 +836,8 @@ main(int argc, /* I - Number of command-line arguments */
fputs("ppdPageSizeLimits(Quality=Photo): ", stdout);
if (ppdPageSizeLimits(ppd, &minsize, &maxsize))
{
- if (minsize.width != 300 || minsize.length != 300 ||
- maxsize.width != 1080 || maxsize.length != 86400)
+ if (fabs(minsize.width - 300.0) > 0.001 || fabs(minsize.length - 300.0) > 0.001 ||
+ fabs(maxsize.width - 1080.0) > 0.001 || fabs(maxsize.length - 86400.0) > 0.001)
{
printf("FAIL (got min=%.0fx%.0f, max=%.0fx%.0f, "
"expected min=300x300, max=1080x86400)\n", minsize.width,
@@ -1109,5 +1107,5 @@ main(int argc, /* I - Number of command-line arguments */
/*
- * End of "$Id: testppd.c 11060 2013-06-25 15:02:18Z msweet $".
+ * End of "$Id: testppd.c 11594 2014-02-14 20:09:01Z msweet $".
*/
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..be788a608
--- /dev/null
+++ b/cups/tls-darwin.c
@@ -0,0 +1,1664 @@
+/*
+ * "$Id: tls-darwin.c 12159 2014-09-23 14:56:14Z 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 tls.c ****/
+
+/*
+ * Include necessary headers...
+ */
+
+#include <spawn.h>
+
+extern char **environ;
+
+
+/*
+ * Local globals...
+ */
+
+#ifdef HAVE_SECKEYCHAINOPEN
+static int tls_auto_create = 0;
+ /* Auto-create self-signed certs? */
+static char *tls_common_name = NULL;
+ /* Default common name */
+static SecKeychainRef tls_keychain = NULL;
+ /* Server cert keychain */
+static char *tls_keypath = NULL;
+ /* Server cert keychain path */
+static _cups_mutex_t tls_mutex = _CUPS_MUTEX_INITIALIZER;
+ /* Mutex for keychain/certs */
+#endif /* HAVE_SECKEYCHAINOPEN */
+
+
+/*
+ * Local functions...
+ */
+
+#ifdef HAVE_SECKEYCHAINOPEN
+static CFArrayRef http_cdsa_copy_server(const char *common_name);
+#endif /* HAVE_SECKEYCHAINOPEN */
+static SecCertificateRef http_cdsa_create_credential(http_credential_t *credential);
+static const char *http_cdsa_default_path(char *buffer, size_t bufsize);
+static OSStatus http_cdsa_read(SSLConnectionRef connection, void *data, size_t *dataLength);
+static int http_cdsa_set_credentials(http_t *http);
+static OSStatus http_cdsa_write(SSLConnectionRef connection, const void *data, size_t *dataLength);
+
+
+/*
+ * 'cupsMakeServerCredentials()' - Make a self-signed certificate and private key pair.
+ *
+ * @since CUPS 2.0/OS 10.10@
+ */
+
+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/OS X 10.10@
+ */
+
+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/OS X 10.10@
+ */
+
+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/OS X 10.10@
+ */
+
+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/OS X 10.10@
+ */
+
+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/OS X 10.10@
+ */
+
+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/OS 10.10@
+ */
+
+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/OS 10.10@
+ */
+
+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 12159 2014-09-23 14:56:14Z msweet $".
+ */
diff --git a/cups/tls-gnutls.c b/cups/tls-gnutls.c
new file mode 100644
index 000000000..36331d437
--- /dev/null
+++ b/cups/tls-gnutls.c
@@ -0,0 +1,1296 @@
+/*
+ * "$Id: tls-gnutls.c 12159 2014-09-23 14:56:14Z 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.
+ */
+
+/**** This file is included from tls.c ****/
+
+/*
+ * Include necessary headers...
+ */
+
+#include <sys/stat.h>
+
+
+/*
+ * Local globals...
+ */
+
+static int tls_auto_create = 0;
+ /* Auto-create self-signed certs? */
+static char *tls_common_name = NULL;
+ /* Default common name */
+static char *tls_keypath = NULL;
+ /* Server cert keychain path */
+static _cups_mutex_t tls_mutex = _CUPS_MUTEX_INITIALIZER;
+ /* Mutex for keychain/certs */
+
+
+/*
+ * Local functions...
+ */
+
+static gnutls_x509_crt_t http_gnutls_create_credential(http_credential_t *credential);
+static const char *http_gnutls_default_path(char *buffer, size_t bufsize);
+static const char *http_gnutls_make_path(char *buffer, size_t bufsize, const char *dirname, const char *filename, const char *ext);
+static ssize_t http_gnutls_read(gnutls_transport_ptr_t ptr, void *data, size_t length);
+static ssize_t http_gnutls_write(gnutls_transport_ptr_t ptr, const void *data, size_t length);
+
+
+/*
+ * 'cupsMakeServerCredentials()' - Make a self-signed certificate and private key pair.
+ *
+ * @since CUPS 2.0/OS 10.10@
+ */
+
+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/OS 10.10@
+ */
+
+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/OS 10.10@
+ */
+
+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/OS 10.10@
+ */
+
+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/OS 10.10@
+ */
+
+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/OS 10.10@
+ */
+
+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/OS 10.10@
+ */
+
+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/OS 10.10@
+ */
+
+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);
+#ifdef HAVE_GNUTLS_TRANSPORT_SET_PULL_TIMEOUT_FUNCTION
+ gnutls_transport_set_pull_timeout_function(http->tls, (gnutls_pull_timeout_func)httpWait);
+#endif /* HAVE_GNUTLS_TRANSPORT_SET_PULL_TIMEOUT_FUNCTION */
+ 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 12159 2014-09-23 14:56:14Z msweet $".
+ */
diff --git a/cups/tls-sspi.c b/cups/tls-sspi.c
new file mode 100644
index 000000000..171fa45bf
--- /dev/null
+++ b/cups/tls-sspi.c
@@ -0,0 +1,2365 @@
+/*
+ * "$Id: tls-sspi.c 12159 2014-09-23 14:56:14Z 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.
+ */
+
+/**** This file is included from tls.c ****/
+
+/*
+ * 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/OS 10.10@
+ */
+
+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/OS 10.10@
+ */
+
+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/OS 10.10@
+ */
+
+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/OS 10.10@
+ */
+
+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/OS 10.10@
+ */
+
+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/OS 10.10@
+ */
+
+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/OS 10.10@
+ */
+
+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/OS 10.10@
+ */
+
+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 12159 2014-09-23 14:56:14Z msweet $".
+ */
diff --git a/cups/tls.c b/cups/tls.c
new file mode 100644
index 000000000..14b0260ed
--- /dev/null
+++ b/cups/tls.c
@@ -0,0 +1,112 @@
+/*
+ * "$Id: tls.c 12136 2014-08-29 15:19:40Z msweet $"
+ *
+ * TLS routines for CUPS.
+ *
+ * Copyright 2007-2014 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products, all rights reserved.
+ *
+ * This file contains Kerberos support code, copyright 2006 by
+ * Jelmer Vernooij.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law. Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file. If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
+ *
+ * This file is subject to the Apple OS-Developed Software exception.
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include "cups-private.h"
+#include <fcntl.h>
+#include <math.h>
+#ifdef WIN32
+# include <tchar.h>
+#else
+# include <signal.h>
+# include <sys/time.h>
+# include <sys/resource.h>
+#endif /* WIN32 */
+#ifdef HAVE_POLL
+# include <poll.h>
+#endif /* HAVE_POLL */
+
+
+/*
+ * Local functions...
+ */
+
+#ifdef HAVE_SSL
+# ifdef HAVE_GNUTLS
+# include "tls-gnutls.c"
+# elif defined(HAVE_CDSASSL)
+# include "tls-darwin.c"
+# elif defined(HAVE_SSPISSL)
+# include "tls-sspi.c"
+# endif /* HAVE_GNUTLS */
+#else
+/* Stubs for when TLS is not supported/available */
+int
+httpCopyCredentials(http_t *http, cups_array_t **credentials)
+{
+ (void)http;
+ if (credentials)
+ *credentials = NULL;
+ return (-1);
+}
+int
+httpCredentialsAreValidForName(cups_array_t *credentials, const char *common_name)
+{
+ (void)credentials;
+ (void)common_name;
+ return (1);
+}
+time_t
+httpCredentialsGetExpiration(cups_array_t *credentials)
+{
+ (void)credentials;
+ return (INT_MAX);
+}
+http_trust_t
+httpCredentialsGetTrust(cups_array_t *credentials, const char *common_name)
+{
+ (void)credentials;
+ (void)common_name;
+ return (HTTP_TRUST_OK);
+}
+size_t
+httpCredentialsString(cups_array_t *credentials, char *buffer, size_t bufsize)
+{
+ (void)credentials;
+ (void)bufsize;
+ if (buffer)
+ *buffer = '\0';
+ return (0);
+}
+int
+httpLoadCredentials(const char *path, cups_array_t **credentials, const char *common_name)
+{
+ (void)path;
+ (void)credentials;
+ (void)common_name;
+ return (-1);
+}
+int
+httpSaveCredentials(const char *path, cups_array_t *credentials, const char *common_name)
+{
+ (void)path;
+ (void)credentials;
+ (void)common_name;
+ return (-1);
+}
+#endif /* HAVE_SSL */
+
+
+/*
+ * End of "$Id: tls.c 12136 2014-08-29 15:19:40Z 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..8b00cb8cd 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 12124 2014-08-28 15:37:22Z 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);
/*
@@ -211,8 +211,10 @@ cupsSetCredentials(
if (cupsArrayCount(credentials) < 1)
return (-1);
+#ifdef HAVE_SSL
_httpFreeCredentials(cg->tls_credentials);
cg->tls_credentials = _httpCreateCredentials(credentials);
+#endif /* HAVE_SSL */
return (cg->tls_credentials ? 0 : -1);
}
@@ -678,7 +680,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 +833,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 +851,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 +901,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 +923,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 +935,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 +977,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 +1116,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 12124 2014-08-28 15:37:22Z 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 000000000..a1d742df9
--- /dev/null
+++ b/doc/apple-touch-icon.opacity
Binary files differ
diff --git a/doc/apple-touch-icon.png b/doc/apple-touch-icon.png
new file mode 100644
index 000000000..e4d8f81ce
--- /dev/null
+++ b/doc/apple-touch-icon.png
Binary files differ
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>Inici - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
-</HEAD>
-<BODY>
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="sel"><A HREF="/">&nbsp;&nbsp;Inici&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;Administració&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/classes/">&nbsp;&nbsp;Classes&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/help/">&nbsp;&nbsp;Ajuda&nbsp;en&nbsp;línia&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;Tasques&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;Impressores&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD STYLE="padding-right: 20px;">
-
-<H1>CUPS @CUPS_VERSION@</H1>
-
-<P>CUPS és el sistema d'impressió de codi obert i basat en estandards desenvolupat per
-<A HREF="http://www.apple.com/">Apple Inc.</A> per OS<SUP>&reg;</SUP> X and
-altres sistemes operatius basats en UNIX<SUP>&reg;</SUP></P>
-
-</TD>
-<TD><A HREF="http://www.cups.org/"><IMG SRC="images/cups-icon.png" WIDTH="128"
-HEIGHT="128" ALT="CUPS"></A></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-right: 20px;">
-
-<H2>CUPS per usuaris</H2>
-
-<P><A HREF="help/overview.html">Descripció general del CUPS</A></P>
-
-<P><A HREF="help/options.html">Impresió i opcions en linia de comandes</A></P>
-
-<P><A HREF="help/whatsnew.html">Novetats del CUPS 1.4</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Fòrum d'usuaris</A></P>
-
-</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
-
-<H2>CUPS per Administradors</H2>
-
-<P><A HREF="admin">Afegir impressores i classes</A></P>
-
-<P><A HREF="help/policies.html">Gestió de les polítiques de treball</A></P>
-
-<P><A HREF="help/accounting.html">Bàsic de comptes d'impressió</A></P>
-
-<P><A HREF="help/security.html">Seguritat del servidor</A></P>
-
-<P><A HREF="help/kerberos.html">Ús d'autenticació amb el Kerberos</A></P>
-
-<P><A HREF="help/network.html">Ús d'impressores en xarxa</A></P>
-
-<P><A HREF="help/ref-cupsd-conf.html">Referència del cupsd.conf</A></P>
-
-</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
-
-<H2>CUPS per desenvolupadors</H2>
-
-<P><A HREF="help/api-overview.html">Introducció a la programació amb CUPS</A></P>
-
-<P><A HREF="help/api-cups.html">La API de CUPS</A></P>
-
-<P><A HREF="help/api-filter.html">Programació de filtres i rerefons</A></P>
-
-<P><A HREF="help/api-httpipp.html">APIs per HTTP i IPP</A></P>
-
-<P><A HREF="help/api-ppd.html">API per PPD</A></P>
-
-<P><A HREF="help/api-raster.html">API per Raster</A></P>
-
-<P><A HREF="help/ref-ppdcfile.html">Referència del fitxer d'inf. del compilador del controlador per PPD</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Fòrum de desenvolupadors</A></P>
-
-</TD></TR>
-</TABLE>
-
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS i el seu logotip són marques registrades de
-<A HREF="http://www.apple.com">Apple Inc.</A> CUPS té copyright 2007-2014 d'Apple
-Inc. Tots els drets reservats.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/doc/cs/index.html.in b/doc/cs/index.html.in
deleted file mode 100644
index 5d2a8d021..000000000
--- a/doc/cs/index.html.in
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>Hlavní strana - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
-</HEAD>
-<BODY>
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="sel"><A HREF="/">&nbsp;&nbsp;Hlavní strana&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;Administrace&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/classes/">&nbsp;&nbsp;Třídy tiskáren&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/help/">&nbsp;&nbsp;Nápověda&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;Úlohy&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;Tiskárny&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Hledat"
-AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD STYLE="padding-right: 20px;">
-
-<H1>CUPS @CUPS_VERSION@</H1>
-
-<P>CUPS je na bázi standardů otevřený zdrojový kód tiskového systému vyvinutý
-spoleÄností <A HREF="http://www.apple.com/">Apple Inc.</A> pro Mac OS<SUP>&reg;</SUP>
-X a jiné UNIX<SUP>&reg;</SUP>ové operaÄní systémy.</P>
-
-</TD>
-<TD><A HREF="http://www.cups.org/"><IMG SRC="images/cups-icon.png" WIDTH="128"
-HEIGHT="128" ALT="CUPS"></A></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-right: 20px;">
-
-<H2>CUPS pro uživatele</H2>
-
-<P><A HREF="help/overview.html">Popis CUPS</A></P>
-
-<P><A HREF="help/options.html">Příkazová řádka tisku a Možnosti</A></P>
-
-<P><A HREF="help/whatsnew.html">Co je nového v CUPS 1.6</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Uživatelské fórum</A></P>
-
-</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
-
-<H2>CUPS pro administrátory</H2>
-
-<P><A HREF="admin">Přidání tiskáren a tříd</A></P>
-
-<P><A HREF="help/policies.html">Správa politik</A></P>
-
-<P><A HREF="help/accounting.html">Základní úÄtování tiskáren</A></P>
-
-<P><A HREF="help/security.html">ZabezpeÄení serveru</A></P>
-
-<P><A HREF="help/kerberos.html">Použití ověřování pomocí protokolu Kerberos</A></P>
-
-<P><A HREF="help/network.html">Použití síťových tiskáren</A></P>
-
-<P><A HREF="help/ref-cupsd-conf.html">KonfiguraÄní soubor cupsd.conf</A></P>
-
-</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
-
-<H2>CUPS pro vývojáře</H2>
-
-<P><A HREF="help/api-overview.html">Úvod do CUPS programování</A></P>
-
-<P><A HREF="help/api-cups.html">CUPS API knihovny</A></P>
-
-<P><A HREF="help/api-filter.html">Programování filtrů a backendů</A></P>
-
-<P><A HREF="help/api-httpipp.html">HTTP a IPP API knihovny</A></P>
-
-<P><A HREF="help/api-ppd.html">PPD API knihovny</A></P>
-
-<P><A HREF="help/api-raster.html">Raster API knihovny</A></P>
-
-<P><A HREF="help/ref-ppdcfile.html">PPD kompilátor Driver Information File Reference</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Vývojářské fórum</A></P>
-
-</TD></TR>
-</TABLE>
-
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS a logo CUPS jsou ochranné známky spoleÄnosti
-<A HREF="http://www.apple.com">Apple Inc.</A> CUPS je chráněn autorskými
-právy 2007-2014 Apple Inc. Všechna práva vyhrazena.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>Home - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
-</HEAD>
-<BODY>
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="sel"><A HREF="/">&nbsp;&nbsp;Startseite&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;Verwaltung&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/classes/">&nbsp;&nbsp;Klassen&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/help/">&nbsp;&nbsp;Online-&nbsp;Hilfe&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;Aufträge&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;Drucker&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD STYLE="padding-right: 20px;">
-
-<H1>CUPS @CUPS_VERSION@</H1>
-
-<P>CUPS ist das auf Standards basierte, Opensource-Drucksystem, welches von
-<A HREF="http://www.apple.com/">Apple Inc.</A> für Mac OS<SUP>&reg;</SUP> X und
-andere UNIX<SUP>&reg;</SUP>-ähnliche Betriebssysteme entwickelt wird.</P>
-
-</TD>
-<TD><A HREF="http://www.cups.org/"><IMG SRC="images/cups-icon.png" WIDTH="128"
-HEIGHT="128" ALT="CUPS"></A></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-right: 20px;">
-
-<H2>CUPS für Benutzer</H2>
-
-<P><A HREF="help/overview.html">CUPS Ãœbersicht</A></P>
-
-<P><A HREF="help/options.html">Kommandozeilendruck und Einstellungen</A></P>
-
-<P><A HREF="help/whatsnew.html">Neues in CUPS 1.7</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Benutzerforum</A></P>
-
-</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
-
-<H2>CUPS für Administratoren</H2>
-
-<P><A HREF="admin">Drucker und Klassen hinzufügen</A></P>
-
-<P><A HREF="help/policies.html">Betriebsrichtlinien verwalten</A></P>
-
-<P><A HREF="help/accounting.html">Basiswissen Druckabrechnung</A></P>
-
-<P><A HREF="help/security.html">Sicherheit des Servers</A></P>
-
-<P><A HREF="help/kerberos.html">Verwenden der Kerberos Authentifizierung</A></P>
-
-<P><A HREF="help/network.html">Benutzen von Netzwerkdruckern</A></P>
-
-<P><A HREF="help/ref-cupsd-conf.html">cupsd.conf Referenz</A></P>
-
-</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
-
-<H2>CUPS für Entwickler</H2>
-
-<P><A HREF="help/api-overview.html">Einführung in die CUPS-Programmierung</A></P>
-
-<P><A HREF="help/api-cups.html">CUPS-API</A></P>
-
-<P><A HREF="help/api-filter.html">Filter- und Backend-Programmierung</A></P>
-
-<P><A HREF="help/api-httpipp.html">HTTP- und IPP-APIs</A></P>
-
-<P><A HREF="help/api-ppd.html">PPD-API</A></P>
-
-<P><A HREF="help/api-raster.html">Raster-API</A></P>
-
-<P><A HREF="help/ref-ppdcfile.html">PPD Compiler Treiber Dateireferenz</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Entwicklerforum</A></P>
-
-</TD></TR>
-</TABLE>
-
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS und das CUPS Logo sind
-eingetragene Warenzeichen der <A HREF="http://www.apple.com">Apple Inc.</A>
-CUPS ist urheberrechtlich geschützt 2007-2014 von Apple Inc, alle Rechte vorbehalten.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/doc/es/index.html.in b/doc/es/index.html.in
index e7dc3a502..11680f755 100644
--- a/doc/es/index.html.in
+++ b/doc/es/index.html.in
@@ -1,105 +1,55 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>Inicio - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
-</HEAD>
-<BODY>
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="sel"><A HREF="/">&nbsp;&nbsp;Inicio&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;Administraci&oacute;n&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/classes/">&nbsp;&nbsp;Clases&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/help/">&nbsp;&nbsp;Ayuda&nbsp;en&nbsp;l&iacute;nea&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;Trabajos&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;Impresoras&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD STYLE="padding-right: 20px;">
-
-<H1>CUPS @CUPS_VERSION@</H1>
-
-<P>CUPS es el sistema de impresi&oacute;n de c&oacute;digo abierto basado en
-est&aacute;ndares desarrollado por <A HREF="http://www.apple.com/">Apple Inc.</A> para
-OS<SUP>&reg;</SUP> X y otros sistemas operativos tipo UNIX<SUP>&reg;</SUP>.</P>
-
-</TD>
-<TD><A HREF="http://www.cups.org/"><IMG SRC="images/cups-icon.png" WIDTH="128"
-HEIGHT="128" ALT="CUPS"></A></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-right: 20px;">
-
-<H2>CUPS para usuarios</H2>
-
-<P><A HREF="help/overview.html">Descripci&oacute;n de CUPS</A></P>
-
-<P><A HREF="help/options.html">Impresi&oacute;n desde la l&iacute;nea de comandos y opciones</A></P>
-
-<P><A HREF="help/whatsnew.html">Qu&eacute; hay de nuevo en CUPS 1.6</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Foro de usuarios</A></P>
-
-</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
-
-<H2>CUPS para administradores</H2>
-
-<P><A HREF="admin">A&ntilde;adiendo impresoras y clases</A></P>
-
-<P><A HREF="help/policies.html">Gestionando pol&iacute;ticas de funcionamiento</A></P>
-
-<P><A HREF="help/accounting.html">Contabilidad b&aacute;sica de impresora</A></P>
-
-<P><A HREF="help/security.html">Seguridad del servidor</A></P>
-
-<P><A HREF="help/kerberos.html">Usando autentificaci&oacute;n Kerberos</A></P>
-
-<P><A HREF="help/network.html">Usando impresoras de red</A></P>
-
-<P><A HREF="help/ref-cupsd-conf.html">Referencia de cupsd.conf</A></P>
-
-</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
-
-<H2>CUPS para desarrolladores</H2>
-
-<P><A HREF="help/api-overview.html">Introducci&oacute;n a la programaci&oacute;n de CUPS</A></P>
-
-<P><A HREF="help/api-cups.html">La API de CUPS</A></P>
-
-<P><A HREF="help/api-filter.html">Programaci&oacute;n de filtros y programas de conexi&oacute;n</A></P>
-
-<P><A HREF="help/api-httpipp.html">Las APIs HTTP e IPP</A></P>
-
-<P><A HREF="help/api-ppd.html">La API PPD</A></P>
-
-<P><A HREF="help/api-raster.html">La API Raster</A></P>
-
-<P><A HREF="help/ref-ppdcfile.html">Referencia del archivo de informaci&oacute;n del compilador de controladores PPD</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Foro de desarrollo</A></P>
-
-</TD></TR>
-</TABLE>
-
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS y el logo de CUPS son
-marcas registradas de <A HREF="http://www.apple.com">Apple Inc.</A> Los derechos
-de copia de CUPS 2007-2014 son de Apple Inc. Todos los derechos reservados.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
+<!DOCTYPE HTML>
+<html>
+ <head>
+ <link rel="stylesheet" href="/cups.css" type="text/css">
+ <link rel="shortcut icon" href="/apple-touch-icon.png" type="image/png">
+ <meta charset="utf-8">
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=9">
+ <meta name="viewport" content="width=device-width">
+ <title>Inicio - CUPS @CUPS_VERSION@@CUPS_REVISION@</title>
+ </head>
+ <body>
+ <div class="header">
+ <ul>
+ <li><a href="http://www.cups.org/" target="_blank">CUPS.org</a></li>
+ <li><a class="active" href="/">Inicio</a></li>
+ <li><a href="/admin">Administraci&oacute;n</a></li>
+ <li><a href="/classes/">Clases</a></li>
+ <li><a href="/help/">Ayuda</a></li>
+ <li><a href="/jobs/">Trabajos</a></li>
+ <li><a href="/printers/">Impresoras</a></li>
+ </ul>
+ </div>
+ <div class="body">
+ <div class="row">
+ <h1>CUPS @CUPS_VERSION@</h1>
+ <p>CUPS es el sistema de impresi&oacute;n de c&oacute;digo abierto basado en est&aacute;ndares desarrollado por <a href="http://www.apple.com/">Apple Inc.</a> para OS X<sup>&reg;</sup> y otros sistemas operativos tipo UNIX<sup>&reg;</sup>.</p>
+ </div>
+ <div class="row">
+ <div class="thirds">
+ <h2>CUPS para usuarios</h2>
+ <p><a href="help/overview.html">Descripci&oacute;n de CUPS</a></p>
+ <p><a href="help/options.html">Impresi&oacute;n desde la l&iacute;nea de comandos y opciones</a></p>
+ <p><a href="http://www.cups.org/lists.php?LIST=cups">Foro de usuarios</a></p>
+ </div>
+ <div class="thirds">
+ <h2>CUPS para administradores</h2>
+ <p><a href="admin">A&ntilde;adiendo impresoras y clases</a></p>
+ <p><a href="help/policies.html">Gestionando pol&iacute;ticas de funcionamiento</a></p>
+ <p><a href="help/network.html">Usando impresoras de red</a></p>
+ <p><a href="help/man-cupsd.conf.html">Referencia de cupsd.conf</a></p>
+ </div>
+ <div class="thirds">
+ <h2>CUPS para desarrolladores</h2>
+ <p><a href="help/api-overview.html">Introducci&oacute;n a la programaci&oacute;n de CUPS</a></p>
+ <p><a href="help/api-cups.html">La API de CUPS</a></p>
+ <p><a href="help/api-filter.html">Programaci&oacute;n de filtros y programas de conexi&oacute;n</a></p>
+ <p><a href="help/api-httpipp.html">Las APIs HTTP e IPP</a></p>
+ <p><a href="http://www.cups.org/lists.php?LIST=cups-devel">Foro de desarrollo</a></p>
+ </div>
+ </div>
+ </div>
+ <div class="footer">CUPS y el logo de CUPS son marcas registradas de <a href="http://www.apple.com">Apple Inc.</a> Derechos de autor &copy; 2007-2014 Apple Inc. Todos los derechos reservados.</div>
+ </body>
+</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>Accueil - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
-</HEAD>
-<BODY>
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="sel"><A HREF="/">&nbsp;&nbsp;Accueil&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;Administration&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/classes/">&nbsp;&nbsp;Classes&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/help/">&nbsp;&nbsp;Aide&nbsp;En&nbsp;Ligne&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;T&acirc;ches&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;Imprimantes&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD STYLE="padding-right: 20px;">
-
-<H1>CUPS @CUPS_VERSION@</H1>
-
-<P>CUPS est le syst&egrave;me d'impression Open Source, bas&eacute; sur des standards, d&eacute;velopp&eacute; par
-<A HREF="http://www.apple.com/">Apple Inc.</A> pour Mac OS<SUP>&reg;</SUP> X et
-les autres OS UNIX<SUP>&reg;</SUP>-like.</P>
-
-</TD>
-<TD><A HREF="http://www.cups.org/"><IMG SRC="images/cups-icon.png" WIDTH="128"
-HEIGHT="128" ALT="CUPS"></A></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-right: 20px;">
-
-<H2>CUPS pour les utilisateurs</H2>
-
-<P><A HREF="help/overview.html">Pr&eacute;sentation de CUPS</A></P>
-
-<P><A HREF="help/options.html">Impression en ligne de commande et options</A></P>
-
-<P><A HREF="help/whatsnew.html">Quoi de neuf dans CUPS 1.6</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Forum utilisateur</A></P>
-
-</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
-
-<H2>CUPS pour les administrateurs</H2>
-
-<P><A HREF="admin">Ajout d'imprimantes et de classes</A></P>
-
-<P><A HREF="help/policies.html">G&eacute;rer les politiques</A></P>
-
-<P><A HREF="help/accounting.html">Printer Accounting Basics</A></P>
-
-<P><A HREF="help/security.html">S&eacute;curit&eacute; du serveur</A></P>
-
-<P><A HREF="help/kerberos.html">Utiliser l'authentification Kerberos</A></P>
-
-<P><A HREF="help/network.html">Utiliser des imprimantes r&eacute;seaux</A></P>
-
-<P><A HREF="help/ref-cupsd-conf.html">R&eacute;f&eacute;rences sur cupsd.conf</A></P>
-
-</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
-
-<H2>CUPS pour les d&eacute;veloppeurs</H2>
-
-<P><A HREF="help/api-overview.html">Introduction &agrave; la programmation CUPS</A></P>
-
-<P><A HREF="help/api-cups.html">L'API CUPS</A></P>
-
-<P><A HREF="help/api-filter.html">Programmation de filtres et de backends</A></P>
-
-<P><A HREF="help/api-httpipp.html">Les API HTTP et IPP</A></P>
-
-<P><A HREF="help/api-ppd.html">L'API PPD</A></P>
-
-<P><A HREF="help/api-raster.html">L'API Raster</A></P>
-
-<P><A HREF="help/ref-ppdcfile.html">PPD Compiler Driver Information File Reference</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Forum d&eacute;veloppeurs</A></P>
-
-</TD></TR>
-</TABLE>
-
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS et le logo CUPS sont des marques d&eacute;pos&eacute;es de
-<A HREF="http://www.apple.com">Apple Inc.</A> CUPS est sous copyright 2007-2014 Apple
-Inc. Tous droits r&eacute;serv&eacute;s.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/doc/help/accounting.html b/doc/help/accounting.html
index 66c34ec1f..d25d5019a 100644
--- a/doc/help/accounting.html
+++ b/doc/help/accounting.html
@@ -10,8 +10,7 @@
<P>CUPS supports a variety of printer accounting schemes. Aside from the
built-in <A HREF="#QUOTAS">quota</A> and <A HREF="#PAGELOG">page logging</A>
-support, there are several third-party solutions that can be found on
-<A HREF="http://www.cups.org/">www.cups.org</A>.</P>
+support, there are several third-party solutions that can be found online.</P>
<H2 CLASS="title"><A NAME="QUOTAS">Quota Support</A></H2>
@@ -27,7 +26,7 @@ options determine whether and how quotas are enforced for a printer.
The <CODE>job-quota-period</CODE> option determines the time interval for
quota tracking. The interval is expressed in seconds, so a day is
86,400, a week is 604,800, and a month is 2,592,000 seconds. The
-<CODE>job-k-limit</CODE> option specifies the job size limit in killobytes. The
+<CODE>job-k-limit</CODE> option specifies the job size limit in killobytes. The
<CODE>job-page-limit</CODE> option specifies the number of pages limit.</P>
<P>For quotas to be enforced, the period and at least one of the limits
@@ -50,13 +49,7 @@ can be used to easily determine that information.</P>
<H2 CLASS="title"><A NAME="PAGELOG">Page Logging</A></H2>
-<P>CUPS logs every page that is printed on a system to the
-<VAR><A HREF="ref-page_log.html">page_log</A></VAR> file. Page logging
-is only available for drivers that provide page accounting information,
-typically all PostScript and CUPS raster devices. Raw queues and queues
-using third-party solutions such as Foomatic generally do not have
-useful page accounting information available.</P>
-
+<P>CUPS can log every page that is printed on a system to the <VAR><A HREF="man-cupsd-logs.html">page_log</A></VAR> file. Page logging must be enabled by setting the <CODE>PageLogFormat</CODE> directive in the <VAR><A HREF="man-cupsd.conf.html">cupsd.conf</A></VAR> file and is only available for drivers that provide page accounting information, typically all PostScript and CUPS raster devices. Raw queues and queues using third-party solutions such as Foomatic generally do not have useful page accounting information available.</P>
</BODY>
</HTML>
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..19f7ccb90 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</a></li>
<li><a href="#cupsGetDestMediaCount" title="Get the number of sizes supported by a
destination.">cupsGetDestMediaCount</a></li>
<li><a href="#cupsGetDestMediaDefault" title="Get the default size for a destination.">cupsGetDestMediaDefault</a></li>
+ <li><a href="#cupsGetDestWithURI" title="Get a destination associated with a URI.">cupsGetDestWithURI</a></li>
<li><a href="#cupsGetDests" title="Get the list of destinations from the default server.">cupsGetDests</a></li>
<li><a href="#cupsGetDests2" title="Get the list of destinations from the specified server.">cupsGetDests2</a></li>
<li><a href="#cupsGetJobs" title="Get the jobs from the default server.">cupsGetJobs</a></li>
@@ -457,6 +470,8 @@ for the given language.">cupsLangEncoding</a></li>
<li><a href="#cupsLangFlush" title="Flush all language data out of the cache.">cupsLangFlush</a></li>
<li><a href="#cupsLangFree" title="Free language data.">cupsLangFree</a></li>
<li><a href="#cupsLangGet" title="Get a language.">cupsLangGet</a></li>
+ <li><a href="#cupsLocalizeDestMedia" title="Get the localized string for a destination media
+size.">cupsLocalizeDestMedia</a></li>
<li><a href="#cupsLocalizeDestOption" title="Get the localized string for a destination
option.">cupsLocalizeDestOption</a></li>
<li><a href="#cupsLocalizeDestValue" title="Get the localized string for a destination
@@ -1830,7 +1845,8 @@ int cupsGetClasses (<br>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Number of classes</p>
<h4 class="discussion">Discussion</h4>
-<p class="discussion">This function is deprecated - use <a href="#cupsGetDests"><code>cupsGetDests</code></a> instead.
+<p class="discussion">This function is deprecated and no longer returns a list of printer
+classes - use <a href="#cupsGetDests"><code>cupsGetDests</code></a> instead.
</p>
<h3 class="function"><a name="cupsGetDefault">cupsGetDefault</a></h3>
@@ -2081,6 +2097,29 @@ example, passing <code>CUPS_MEDIA_FLAGS_BORDERLESS</code> will return the defaul
borderless size, typically US Letter or A4, but sometimes 4x6 photo media.
</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0/OS X 10.10&nbsp;</span><a name="cupsGetDestWithURI">cupsGetDestWithURI</a></h3>
+<p class="description">Get a destination associated with a URI.</p>
+<p class="code">
+<a href="#cups_dest_t">cups_dest_t</a> *cupsGetDestWithURI (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *uri<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>name</dt>
+<dd class="description">Desired printer name or <code>NULL</code></dd>
+<dt>uri</dt>
+<dd class="description">URI for the printer</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Destination or <code>NULL</code></p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">&quot;name&quot; is the desired name for the printer. If <code>NULL</code>, a name will be
+created using the URI.<br>
+<br>
+&quot;uri&quot; is the &quot;ipp&quot; or &quot;ipps&quot; URI for the printer.
+
+</p>
<h3 class="function"><a name="cupsGetDests">cupsGetDests</a></h3>
<p class="description">Get the list of destinations from the default server.</p>
<p class="code">
@@ -2405,7 +2444,8 @@ int cupsGetPrinters (<br>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Number of printers</p>
<h4 class="discussion">Discussion</h4>
-<p class="discussion">This function is deprecated - use <a href="#cupsGetDests"><code>cupsGetDests</code></a> instead.
+<p class="discussion">This function is deprecated and no longer returns a list of printers - use
+<a href="#cupsGetDests"><code>cupsGetDests</code></a> instead.
</p>
<h3 class="function"><span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span><a name="cupsGetServerPPD">cupsGetServerPPD</a></h3>
@@ -2485,6 +2525,37 @@ cups_lang_t *cupsLangGet (<br>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Language data</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0/OS X 10.10&nbsp;</span><a name="cupsLocalizeDestMedia">cupsLocalizeDestMedia</a></h3>
+<p class="description">Get the localized string for a destination media
+size.</p>
+<p class="code">
+const char *cupsLocalizeDestMedia (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;http_t *http,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_dest_t">cups_dest_t</a> *dest,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;unsigned flags,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_size_t">cups_size_t</a> *size<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">Connection to destination</dd>
+<dt>dest</dt>
+<dd class="description">Destination</dd>
+<dt>dinfo</dt>
+<dd class="description">Destination information</dd>
+<dt>flags</dt>
+<dd class="description">Media flags</dd>
+<dt>size</dt>
+<dd class="description">Media size</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Localized string</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The returned string is stored in the destination information and will become
+invalid if the destination information is deleted.
+
+</p>
<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="cupsLocalizeDestOption">cupsLocalizeDestOption</a></h3>
<p class="description">Get the localized string for a destination
option.</p>
@@ -3156,8 +3227,8 @@ char *cupsTempFile (<br>
<p class="description">Filename or <code>NULL</code> on error</p>
<h4 class="discussion">Discussion</h4>
<p class="discussion">The temporary filename is returned in the filename buffer.
-This function is deprecated - use <a href="#cupsTempFd"><code>cupsTempFd</code></a> or
-<a href="#cupsTempFile2"><code>cupsTempFile2</code></a> instead.
+This function is deprecated and will no longer generate a temporary
+filename - use <a href="#cupsTempFd"><code>cupsTempFd</code></a> or <a href="#cupsTempFile2"><code>cupsTempFile2</code></a> instead.
</p>
<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsTempFile2">cupsTempFile2</a></h3>
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..1ab935b51 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;
}
@@ -396,6 +408,7 @@ div.contents ul.subcontents li {
<li><a href="#COMMUNICATING_FILTER">Communicating with Filters</a></li>
<li><a href="#SNMP">Doing SNMP Queries with Network Printers</a></li>
</ul></li>
+<li><a href="#SANDBOXING">Sandboxing on OS X</a></li>
<li><a href="#FUNCTIONS">Functions</a><ul class="code">
<li><a href="#cupsBackChannelRead" title="Read data from the backchannel.">cupsBackChannelRead</a></li>
<li><a href="#cupsBackChannelWrite" title="Write data to the backchannel.">cupsBackChannelWrite</a></li>
@@ -430,7 +443,7 @@ div.contents ul.subcontents li {
Filter and backend programming introduction 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
@@ -508,7 +521,7 @@ directory to write to.</p>
<p>In addition, some operating systems provide additional security mechanisms
that further limit file system access, even for backends running as root. On
-OS X, for example, no backend may write to a user's home directory.</p>
+OS X, for example, no backend may write to a user's home directory. See the <a href="#SANDBOXING">Sandboxing on OS X</a> section for more information.</p>
</blockquote>
<h3><a name="SIGNALS">Canceled Jobs and Signal Handling</a></h3>
@@ -1279,6 +1292,28 @@ void *my_data;
<a href="#cupsSideChannelSNMPWalk">cupsSNMPSideChannelWalk</a>(".1.3.6.1.2.1.43", 5.0, my_callback, my_data);
</pre>
+
+<h2><a name="SANDBOXING">Sandboxing on OS X</a></h2>
+
+<p>Starting with OS X 10.6, filters and backends are run inside a security "sandbox" which further limits (beyond the normal UNIX user/group permissions) what a filter or backend can do. This helps to both secure the printing system from malicious software and enforce the functional separation of components in the CUPS filter chain. What follows is a list of actions that are explicitly allowed for all filters and backends:</p>
+
+<ol>
+
+ <li>Reading of files: pursuant to normal UNIX file permissions, filters and backends can read files for the current job from the <var>/private/var/spool/cups</var> directory and other files on mounted filesystems <em>except</em> for user home directories under <var>/Users</var>.</li>
+
+ <li>Writing of files: pursuant to normal UNIX file permissions, filters and backends can read/write files to the cache directory specified by the <code>CUPS_CACHEDIR</code> environment variable, to the state directory specified by the <code>CUPS_STATEDIR</code> environment variable, to the temporary directory specified by the <code>TMPDIR</code> environment variable, and under the <var>/private/var/db</var>, <var>/private/var/folders</var>, <var>/private/var/lib</var>, <var>/private/var/mysql</var>, <var>/private/var/run</var>, <var>/private/var/spool</var> (except <var>/private/var/spool/cups</var>), <var>/Library/Application&nbsp;Support</var>, <var>/Library/Caches</var>, <var>/Library/Logs</var>, <var>/Library/Preferences</var>, <var>/Library/WebServer</var>, and <var>/Users/Shared</var> directories.</li>
+
+ <li>Execution of programs: pursuant to normal UNIX file permissions, filters and backends can execute any program not located under the <var>/Users</var> directory. Child processes inherit the sandbox and are subject to the same restrictions as the parent.</li>
+
+ <li>Bluetooth and USB: backends can access Bluetooth and USB printers through IOKit. <em>Filters cannot access Bluetooth and USB printers directly.</em></li>
+
+ <li>Network: filters and backends can access UNIX domain sockets under the <var>/private/tmp</var>, <var>/private/var/run</var>, and <var>/private/var/tmp</var> directories. Backends can also create IPv4 and IPv6 TCP (outgoing) and UDP (incoming and outgoing) socket, and bind to local source ports. <em>Filters cannot directly create IPv4 and IPv6 TCP or UDP sockets.</em></li>
+
+ <li>Notifications: filters and backends can send notifications via the Darwin <code>notify_post()</code> API.</li>
+
+</ol>
+
+<blockquote><b>Note:</b> The sandbox profile used in CUPS 2.0 still allows some actions that are not listed above - these privileges will be removed over time until the profile matches the list above.</blockquote>
<h2 class="title"><a name="FUNCTIONS">Functions</a></h2>
<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsBackChannelRead">cupsBackChannelRead</a></h3>
<p class="description">Read data from the backchannel.</p>
diff --git a/doc/help/api-httpipp.html b/doc/help/api-httpipp.html
index 9023f0e98..ef21b674c 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</a></li>
specified listening socket.">httpAcceptConnection</a></li>
<li><a href="#httpAddCredential" title="Allocates and adds a single credential to an array.">httpAddCredential</a></li>
<li><a href="#httpAddrAny" title="Check for the &quot;any&quot; address.">httpAddrAny</a></li>
+ <li><a href="#httpAddrClose" title="Close a socket created by httpAddrConnect or
+httpAddrListen.">httpAddrClose</a></li>
<li><a href="#httpAddrEqual" title="Compare two addresses.">httpAddrEqual</a></li>
+ <li><a href="#httpAddrFamily" title="Get the address family of an address.">httpAddrFamily</a></li>
<li><a href="#httpAddrLength" title="Return the length of the address in bytes.">httpAddrLength</a></li>
<li><a href="#httpAddrListen" title="Create a listening socket bound to the specified
address and port.">httpAddrListen</a></li>
@@ -426,11 +441,10 @@ components with a formatted resource.">httpAssembleURIf</a></li>
<li><a href="#httpClearCookie" title="Clear the cookie value(s).">httpClearCookie</a></li>
<li><a href="#httpClearFields" title="Clear HTTP request fields.">httpClearFields</a></li>
<li><a href="#httpClose" title="Close an HTTP connection.">httpClose</a></li>
+ <li><a href="#httpCompareCredentials" title="Compare two sets of X.509 credentials.">httpCompareCredentials</a></li>
<li><a href="#httpConnect" title="Connect to a HTTP server.">httpConnect</a></li>
<li><a href="#httpConnect2" title="Connect to a HTTP server.">httpConnect2</a></li>
<li><a href="#httpConnectEncrypt" title="Connect to a HTTP server using encryption.">httpConnectEncrypt</a></li>
- <li><a href="#httpCopyCredentials" title="Copy the credentials associated with an encrypted
-connection.">httpCopyCredentials</a></li>
<li><a href="#httpDecode64" title="Base64-decode a string.">httpDecode64</a></li>
<li><a href="#httpDecode64_2" title="Base64-decode a string.">httpDecode64_2</a></li>
<li><a href="#httpDelete" title="Send a DELETE request to the server.">httpDelete</a></li>
@@ -438,10 +452,14 @@ connection.">httpCopyCredentials</a></li>
<li><a href="#httpEncode64_2" title="Base64-encode a string.">httpEncode64_2</a></li>
<li><a href="#httpEncryption" title="Set the required encryption on the link.">httpEncryption</a></li>
<li><a href="#httpError" title="Get the last error on a connection.">httpError</a></li>
+ <li><a href="#httpFieldValue" title="Return the HTTP field enumeration value for a field
+name.">httpFieldValue</a></li>
<li><a href="#httpFlush" title="Flush data from a HTTP connection.">httpFlush</a></li>
<li><a href="#httpFlushWrite" title="Flush data in write buffer.">httpFlushWrite</a></li>
<li><a href="#httpFreeCredentials" title="Free an array of credentials.">httpFreeCredentials</a></li>
<li><a href="#httpGet" title="Send a GET request to the server.">httpGet</a></li>
+ <li><a href="#httpGetActivity" title="Get the most recent activity for a connection.">httpGetActivity</a></li>
+ <li><a href="#httpGetAddress" title="Get the address of the connected peer of a connection.">httpGetAddress</a></li>
<li><a href="#httpGetAuthString" title="Get the current authorization string.">httpGetAuthString</a></li>
<li><a href="#httpGetBlocking" title="Get the blocking/non-block state of a connection.">httpGetBlocking</a></li>
<li><a href="#httpGetContentEncoding" title="Get a common content encoding, if any, between
@@ -450,16 +468,22 @@ the client and server.">httpGetContentEncoding</a></li>
<li><a href="#httpGetDateString" title="Get a formatted date/time string from a time value.">httpGetDateString</a></li>
<li><a href="#httpGetDateString2" title="Get a formatted date/time string from a time value.">httpGetDateString2</a></li>
<li><a href="#httpGetDateTime" title="Get a time value from a formatted date/time string.">httpGetDateTime</a></li>
+ <li><a href="#httpGetEncryption" title="Get the current encryption mode of a connection.">httpGetEncryption</a></li>
<li><a href="#httpGetExpect" title="Get the value of the Expect header, if any.">httpGetExpect</a></li>
<li><a href="#httpGetFd" title="Get the file descriptor associated with a connection.">httpGetFd</a></li>
<li><a href="#httpGetField" title="Get a field value from a request/response.">httpGetField</a></li>
<li><a href="#httpGetHostByName" title="Lookup a hostname or IPv4 address, and return
address records for the specified name.">httpGetHostByName</a></li>
<li><a href="#httpGetHostname" title="Get the FQDN for the connection or local system.">httpGetHostname</a></li>
+ <li><a href="#httpGetKeepAlive" title="Get the current Keep-Alive state of the connection.">httpGetKeepAlive</a></li>
<li><a href="#httpGetLength" title="Get the amount of data remaining from the
content-length or transfer-encoding fields.">httpGetLength</a></li>
<li><a href="#httpGetLength2" title="Get the amount of data remaining from the
content-length or transfer-encoding fields.">httpGetLength2</a></li>
+ <li><a href="#httpGetPending" title="Get the number of bytes that are buffered for writing.">httpGetPending</a></li>
+ <li><a href="#httpGetReady" title="Get the number of bytes that can be read without blocking.">httpGetReady</a></li>
+ <li><a href="#httpGetRemaining" title="Get the number of remaining bytes in the message
+body or current chunk.">httpGetRemaining</a></li>
<li><a href="#httpGetState" title="Get the current state of the HTTP request.">httpGetState</a></li>
<li><a href="#httpGetStatus" title="Get the status of the last HTTP request.">httpGetStatus</a></li>
<li><a href="#httpGetSubField" title="Get a sub-field value.">httpGetSubField</a></li>
@@ -469,6 +493,8 @@ content-length or transfer-encoding fields.">httpGetLength2</a></li>
<li><a href="#httpHead" title="Send a HEAD request to the server.">httpHead</a></li>
<li><a href="#httpInitialize" title="Initialize the HTTP interface library and set the
default HTTP proxy (if any).">httpInitialize</a></li>
+ <li><a href="#httpIsChunked" title="Report whether a message body is chunked.">httpIsChunked</a></li>
+ <li><a href="#httpIsEncrypted" title="Report whether a connection is encrypted.">httpIsEncrypted</a></li>
<li><a href="#httpMD5" title="Compute the MD5 sum of the username:group:password.">httpMD5</a></li>
<li><a href="#httpMD5Final" title="Combine the MD5 sum of the username, group, and password
with the server-supplied nonce value, method, and
@@ -484,6 +510,8 @@ request-uri.">httpMD5Final</a></li>
<li><a href="#httpReconnect" title="Reconnect to a HTTP server.">httpReconnect</a></li>
<li><a href="#httpReconnect2" title="Reconnect to a HTTP server with timeout and optional
cancel.">httpReconnect2</a></li>
+ <li><a href="#httpResolveHostname" title="Resolve the hostname of the HTTP connection
+address.">httpResolveHostname</a></li>
<li><a href="#httpSeparate" title="Separate a Universal Resource Identifier into its
components.">httpSeparate</a></li>
<li><a href="#httpSeparate2" title="Separate a Universal Resource Identifier into its
@@ -497,10 +525,14 @@ connection.">httpSetCredentials</a></li>
<li><a href="#httpSetDefaultField" title="Set the default value of an HTTP header.">httpSetDefaultField</a></li>
<li><a href="#httpSetExpect" title="Set the Expect: header in a request.">httpSetExpect</a></li>
<li><a href="#httpSetField" title="Set the value of an HTTP header.">httpSetField</a></li>
+ <li><a href="#httpSetKeepAlive" title="Set the current Keep-Alive state of a connection.">httpSetKeepAlive</a></li>
<li><a href="#httpSetLength" title="Set the content-length and content-encoding.">httpSetLength</a></li>
<li><a href="#httpSetTimeout" title="Set read/write timeouts and an optional callback.">httpSetTimeout</a></li>
+ <li><a href="#httpShutdown" title="Shutdown one side of an HTTP connection.">httpShutdown</a></li>
+ <li><a href="#httpStateString" title="Return the string describing a HTTP state value.">httpStateString</a></li>
<li><a href="#httpStatus" title="Return a short string describing a HTTP status code.">httpStatus</a></li>
<li><a href="#httpTrace" title="Send an TRACE request to the server.">httpTrace</a></li>
+ <li><a href="#httpURIStatusString" title="Return a string describing a URI status code.">httpURIStatusString</a></li>
<li><a href="#httpUpdate" title="Update the current HTTP state for incoming data.">httpUpdate</a></li>
<li><a href="#httpWait" title="Wait for data available on a connection.">httpWait</a></li>
<li><a href="#httpWrite" title="Write data to a HTTP connection.">httpWrite</a></li>
@@ -592,6 +624,7 @@ in seconds.">ippDateToTime</a></li>
<li><a href="#ippSetStringfv" title="Set a formatted string value of an attribute.">ippSetStringfv</a></li>
<li><a href="#ippSetValueTag" title="Set the value tag of an attribute.">ippSetValueTag</a></li>
<li><a href="#ippSetVersion" title="Set the version number in an IPP message.">ippSetVersion</a></li>
+ <li><a href="#ippStateString" title="Return the name corresponding to a state value.">ippStateString</a></li>
<li><a href="#ippTagString" title="Return the tag name corresponding to a tag value.">ippTagString</a></li>
<li><a href="#ippTagValue" title="Return the tag value corresponding to a tag name.">ippTagValue</a></li>
<li><a href="#ippTimeToDate" title="Convert from UNIX time to RFC 1903 format.">ippTimeToDate</a></li>
@@ -621,6 +654,7 @@ with a hostname. ">http_addrlist_t</a></li>
are server-oriented...">http_state_t</a></li>
<li><a href="#http_t" title="HTTP connection type">http_t</a></li>
<li><a href="#http_timeout_cb_t" title="HTTP timeout callback ">http_timeout_cb_t</a></li>
+ <li><a href="#http_trust_t" title="Level of trust for credentials ">http_trust_t</a></li>
<li><a href="#http_uri_coding_t" title="URI en/decode flags">http_uri_coding_t</a></li>
<li><a href="#http_uri_status_t" title="URI separation status ">http_uri_status_t</a></li>
<li><a href="#http_version_t" title="HTTP version numbers">http_version_t</a></li>
@@ -658,6 +692,7 @@ with a hostname. ">http_addrlist_s</a></li>
<li><a href="#http_state_e" title="HTTP state values; states
are server-oriented...">http_state_e</a></li>
<li><a href="#http_status_e" title="HTTP status codes">http_status_e</a></li>
+ <li><a href="#http_trust_e" title="Level of trust for credentials ">http_trust_e</a></li>
<li><a href="#http_uri_coding_e" title="URI en/decode flags">http_uri_coding_e</a></li>
<li><a href="#http_uri_status_e" title="URI separation status ">http_uri_status_e</a></li>
<li><a href="#http_version_e" title="HTTP version numbers">http_version_e</a></li>
@@ -1455,6 +1490,29 @@ int httpAddrAny (<br>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">1 if &quot;any&quot;, 0 otherwise</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0/OS 10.10&nbsp;</span><a name="httpAddrClose">httpAddrClose</a></h3>
+<p class="description">Close a socket created by <a href="#httpAddrConnect"><code>httpAddrConnect</code></a> or
+<a href="#httpAddrListen"><code>httpAddrListen</code></a>.</p>
+<p class="code">
+int httpAddrClose (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_addr_t">http_addr_t</a> *addr,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int fd<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>addr</dt>
+<dd class="description">Listen address or <code>NULL</code></dd>
+<dt>fd</dt>
+<dd class="description">Socket file descriptor</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">0 on success, -1 on failure</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">Pass <code>NULL</code> for sockets created with <a href="#httpAddrConnect"><code>httpAddrConnect</code></a> and the
+listen address for sockets created with <a href="#httpAddrListen"><code>httpAddrListen</code></a>. This will
+ensure that domain sockets are removed when closed.
+
+</p>
<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpAddrEqual">httpAddrEqual</a></h3>
<p class="description">Compare two addresses.</p>
<p class="code">
@@ -1471,6 +1529,19 @@ int httpAddrEqual (<br>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">1 if equal, 0 if not</p>
+<h3 class="function"><a name="httpAddrFamily">httpAddrFamily</a></h3>
+<p class="description">Get the address family of an address.</p>
+<p class="code">
+int httpAddrFamily (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_addr_t">http_addr_t</a> *addr<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>addr</dt>
+<dd class="description">Address</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Address family</p>
<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpAddrLength">httpAddrLength</a></h3>
<p class="description">Return the length of the address in bytes.</p>
<p class="code">
@@ -1699,7 +1770,7 @@ void httpBlocking (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>b</dt>
<dd class="description">1 = blocking, 0 = non-blocking</dd>
</dl>
@@ -1712,7 +1783,7 @@ int httpCheck (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">0 = no data, 1 = data available</p>
@@ -1725,7 +1796,7 @@ void httpClearCookie (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
</dl>
<h3 class="function"><a name="httpClearFields">httpClearFields</a></h3>
<p class="description">Clear HTTP request fields.</p>
@@ -1736,7 +1807,7 @@ void httpClearFields (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
</dl>
<h3 class="function"><a name="httpClose">httpClose</a></h3>
<p class="description">Close an HTTP connection.</p>
@@ -1747,8 +1818,24 @@ void httpClose (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0/OS 10.10&nbsp;</span><a name="httpCompareCredentials">httpCompareCredentials</a></h3>
+<p class="description">Compare two sets of X.509 credentials.</p>
+<p class="code">
+int httpCompareCredentials (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cups_array_t *cred1,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cups_array_t *cred2<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>cred1</dt>
+<dd class="description">First set of X.509 credentials</dd>
+<dt>cred2</dt>
+<dd class="description">Second set of X.509 credentials</dd>
</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">1 if they match, 0 if they do not</p>
<h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="httpConnect">httpConnect</a></h3>
<p class="description">Connect to a HTTP server.</p>
<p class="code">
@@ -1827,23 +1914,6 @@ void httpClose (<br>
instead.
</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span><a name="httpCopyCredentials">httpCopyCredentials</a></h3>
-<p class="description">Copy the credentials associated with an encrypted
-connection.</p>
-<p class="code">
-int httpCopyCredentials (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;cups_array_t **credentials<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>http</dt>
-<dd class="description">Connection to server</dd>
-<dt>credentials</dt>
-<dd class="description">Array of credentials</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Status of call (0 = success)</p>
<h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="httpDecode64">httpDecode64</a></h3>
<p class="description">Base64-decode a string.</p>
<p class="code">
@@ -1894,7 +1964,7 @@ int httpDelete (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>uri</dt>
<dd class="description">URI to delete</dd>
</dl>
@@ -1953,7 +2023,7 @@ int httpEncryption (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>e</dt>
<dd class="description">New encryption preference</dd>
</dl>
@@ -1968,10 +2038,24 @@ int httpError (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Error code (errno) value</p>
+<h3 class="function"><a name="httpFieldValue">httpFieldValue</a></h3>
+<p class="description">Return the HTTP field enumeration value for a field
+name.</p>
+<p class="code">
+<a href="#http_field_t">http_field_t</a> httpFieldValue (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *name<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>name</dt>
+<dd class="description">String name</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Field index</p>
<h3 class="function"><a name="httpFlush">httpFlush</a></h3>
<p class="description">Flush data from a HTTP connection.</p>
<p class="code">
@@ -1981,7 +2065,7 @@ void httpFlush (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
</dl>
<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpFlushWrite">httpFlushWrite</a></h3>
<p class="description">Flush data in write buffer.</p>
@@ -1992,7 +2076,7 @@ int httpFlushWrite (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Bytes written or -1 on error</p>
@@ -2017,12 +2101,46 @@ int httpGet (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>uri</dt>
<dd class="description">URI to get</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Status of call (0 = success)</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0/OS 10.10&nbsp;</span><a name="httpGetActivity">httpGetActivity</a></h3>
+<p class="description">Get the most recent activity for a connection.</p>
+<p class="code">
+time_t httpGetActivity (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Time of last read or write</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The return value is the UNIX time of the last read or write.
+
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0/OS 10.10&nbsp;</span><a name="httpGetAddress">httpGetAddress</a></h3>
+<p class="description">Get the address of the connected peer of a connection.</p>
+<p class="code">
+<a href="#http_addr_t">http_addr_t</a> *httpGetAddress (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Connected address or <code>NULL</code></p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">Returns <code>NULL</code> if the socket is currently unconnected.
+
+</p>
<h3 class="function"><span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span><a name="httpGetAuthString">httpGetAuthString</a></h3>
<p class="description">Get the current authorization string.</p>
<p class="code">
@@ -2032,7 +2150,7 @@ char *httpGetAuthString (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Authorization string</p>
@@ -2052,7 +2170,7 @@ int httpGetBlocking (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">1 if blocking, 0 if non-blocking</p>
@@ -2066,7 +2184,7 @@ const char *httpGetContentEncoding (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to client/server</dd>
+<dd class="description">HTTP connection</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Content-Coding value or
@@ -2137,6 +2255,25 @@ time_t httpGetDateTime (<br>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">UNIX time</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0/OS 10.10&nbsp;</span><a name="httpGetEncryption">httpGetEncryption</a></h3>
+<p class="description">Get the current encryption mode of a connection.</p>
+<p class="code">
+<a href="#http_encryption_t">http_encryption_t</a> httpGetEncryption (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Current encryption mode</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function returns the encryption mode for the connection. Use the
+<a href="#httpIsEncrypted"><code>httpIsEncrypted</code></a> function to determine whether a TLS session has
+been established.
+
+</p>
<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="httpGetExpect">httpGetExpect</a></h3>
<p class="description">Get the value of the Expect header, if any.</p>
<p class="code">
@@ -2146,7 +2283,7 @@ http_status_t httpGetExpect (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to client</dd>
+<dd class="description">HTTP connection</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Expect: status, if any</p>
@@ -2164,7 +2301,7 @@ int httpGetFd (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">File descriptor or -1 if none</p>
@@ -2178,7 +2315,7 @@ const char *httpGetField (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>field</dt>
<dd class="description">Field to get</dd>
</dl>
@@ -2219,11 +2356,25 @@ const char *httpGetHostname (<br>
<p class="description">FQDN for connection or system</p>
<h4 class="discussion">Discussion</h4>
<p class="discussion">When &quot;http&quot; points to a connected socket, return the hostname or
-address that was used in the call to httpConnect() or httpConnectEncrypt().
+address that was used in the call to httpConnect() or httpConnectEncrypt(),
+or the address of the client for the connection from httpAcceptConnection().
Otherwise, return the FQDN for the local system using both gethostname()
and gethostbyname() to get the local hostname with domain.
</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0/OS 10.10&nbsp;</span><a name="httpGetKeepAlive">httpGetKeepAlive</a></h3>
+<p class="description">Get the current Keep-Alive state of the connection.</p>
+<p class="code">
+<a href="#http_keepalive_t">http_keepalive_t</a> httpGetKeepAlive (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Keep-Alive state</p>
<h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="httpGetLength">httpGetLength</a></h3>
<p class="description">Get the amount of data remaining from the
content-length or transfer-encoding fields.</p>
@@ -2234,7 +2385,7 @@ int httpGetLength (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Content length</p>
@@ -2253,7 +2404,7 @@ off_t httpGetLength2 (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Content length</p>
@@ -2262,6 +2413,51 @@ off_t httpGetLength2 (<br>
content larger than 2^31 - 1.
</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0/OS 10.10&nbsp;</span><a name="httpGetPending">httpGetPending</a></h3>
+<p class="description">Get the number of bytes that are buffered for writing.</p>
+<p class="code">
+size_t httpGetPending (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Number of bytes buffered</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0/OS 10.10&nbsp;</span><a name="httpGetReady">httpGetReady</a></h3>
+<p class="description">Get the number of bytes that can be read without blocking.</p>
+<p class="code">
+size_t httpGetReady (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Number of bytes available</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0/OS 10.10&nbsp;</span><a name="httpGetRemaining">httpGetRemaining</a></h3>
+<p class="description">Get the number of remaining bytes in the message
+body or current chunk.</p>
+<p class="code">
+size_t httpGetRemaining (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Remaining bytes</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The <a href="#httpIsChunked"><code>httpIsChunked</code></a> function can be used to determine whether the
+message body is chunked or fixed-length.
+
+</p>
<h3 class="function"><a name="httpGetState">httpGetState</a></h3>
<p class="description">Get the current state of the HTTP request.</p>
<p class="code">
@@ -2271,7 +2467,7 @@ content larger than 2^31 - 1.
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">HTTP state</p>
@@ -2284,7 +2480,7 @@ http_status_t httpGetStatus (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">HTTP status</p>
@@ -2300,7 +2496,7 @@ char *httpGetSubField (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>field</dt>
<dd class="description">Field index</dd>
<dt>name</dt>
@@ -2323,7 +2519,7 @@ char *httpGetSubField2 (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>field</dt>
<dd class="description">Field index</dd>
<dt>name</dt>
@@ -2344,7 +2540,7 @@ char *httpGetSubField2 (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Version number</p>
@@ -2363,7 +2559,7 @@ char *httpGets (<br>
<dt>length</dt>
<dd class="description">Max length of buffer</dd>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Line or NULL</p>
@@ -2377,7 +2573,7 @@ int httpHead (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>uri</dt>
<dd class="description">URI for head</dd>
</dl>
@@ -2388,6 +2584,41 @@ int httpHead (<br>
default HTTP proxy (if any).</p>
<p class="code">
void httpInitialize (void);</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0/OS 10.10&nbsp;</span><a name="httpIsChunked">httpIsChunked</a></h3>
+<p class="description">Report whether a message body is chunked.</p>
+<p class="code">
+int httpIsChunked (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">1 if chunked, 0 if not</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function returns non-zero if the message body is composed of
+variable-length chunks.
+
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0/OS 10.10&nbsp;</span><a name="httpIsEncrypted">httpIsEncrypted</a></h3>
+<p class="description">Report whether a connection is encrypted.</p>
+<p class="code">
+int httpIsEncrypted (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">1 if encrypted, 0 if not</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function returns non-zero if the connection is currently encrypted.
+
+</p>
<h3 class="function"><a name="httpMD5">httpMD5</a></h3>
<p class="description">Compute the MD5 sum of the username:group:password.</p>
<p class="code">
@@ -2460,7 +2691,7 @@ int httpOptions (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>uri</dt>
<dd class="description">URI for options</dd>
</dl>
@@ -2477,7 +2708,7 @@ ssize_t httpPeek (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>buffer</dt>
<dd class="description">Buffer for data</dd>
<dt>length</dt>
@@ -2503,7 +2734,7 @@ int httpPost (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>uri</dt>
<dd class="description">URI for post</dd>
</dl>
@@ -2519,7 +2750,7 @@ int httpPut (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>uri</dt>
<dd class="description">URI to put</dd>
</dl>
@@ -2536,7 +2767,7 @@ int httpRead (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>buffer</dt>
<dd class="description">Buffer for data</dd>
<dt>length</dt>
@@ -2560,7 +2791,7 @@ ssize_t httpRead2 (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>buffer</dt>
<dd class="description">Buffer for data</dd>
<dt>length</dt>
@@ -2596,7 +2827,7 @@ int httpReconnect (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">0 on success, non-zero on failure</p>
@@ -2617,7 +2848,7 @@ int httpReconnect2 (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>msec</dt>
<dd class="description">Timeout in milliseconds</dd>
<dt>cancel</dt>
@@ -2625,6 +2856,26 @@ int httpReconnect2 (<br>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">0 on success, non-zero on failure</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0/OS 10.10&nbsp;</span><a name="httpResolveHostname">httpResolveHostname</a></h3>
+<p class="description">Resolve the hostname of the HTTP connection
+address.</p>
+<p class="code">
+const char *httpResolveHostname (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;char *buffer,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;size_t bufsize<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+<dt>buffer</dt>
+<dd class="description">Hostname buffer</dd>
+<dt>bufsize</dt>
+<dd class="description">Size of buffer</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Resolved hostname or <code>NULL</code></p>
<h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="httpSeparate">httpSeparate</a></h3>
<p class="description">Separate a Universal Resource Identifier into its
components.</p>
@@ -2755,7 +3006,7 @@ void httpSetAuthString (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>scheme</dt>
<dd class="description">Auth scheme (NULL to clear it)</dd>
<dt>data</dt>
@@ -2793,7 +3044,7 @@ int httpSetCredentials (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>credentials</dt>
<dd class="description">Array of credentials</dd>
</dl>
@@ -2810,7 +3061,7 @@ void httpSetDefaultField (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>field</dt>
<dd class="description">Field index</dd>
<dt>value</dt>
@@ -2831,7 +3082,7 @@ void httpSetExpect (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>expect</dt>
<dd class="description">HTTP status to expect
(<code>HTTP_STATUS_CONTINUE</code>)</dd>
@@ -2852,12 +3103,26 @@ void httpSetField (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>field</dt>
<dd class="description">Field index</dd>
<dt>value</dt>
<dd class="description">Value</dd>
</dl>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0/OS 10.10&nbsp;</span><a name="httpSetKeepAlive">httpSetKeepAlive</a></h3>
+<p class="description">Set the current Keep-Alive state of a connection.</p>
+<p class="code">
+void httpSetKeepAlive (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_keepalive_t">http_keepalive_t</a> keep_alive<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+<dt>keep_alive</dt>
+<dd class="description">New Keep-Alive value</dd>
+</dl>
<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpSetLength">httpSetLength</a></h3>
<p class="description">Set the content-length and content-encoding.</p>
<p class="code">
@@ -2868,7 +3133,7 @@ void httpSetLength (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>length</dt>
<dd class="description">Length (0 for chunked)</dd>
</dl>
@@ -2884,7 +3149,7 @@ void httpSetTimeout (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>timeout</dt>
<dd class="description">Number of seconds for timeout,
must be greater than 0</dd>
@@ -2898,6 +3163,30 @@ must be greater than 0</dd>
data pointer and must return 1 to continue or 0 to error (time) out.
</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0/OS 10.10&nbsp;</span><a name="httpShutdown">httpShutdown</a></h3>
+<p class="description">Shutdown one side of an HTTP connection.</p>
+<p class="code">
+void httpShutdown (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection</dd>
+</dl>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0/OS 10.10&nbsp;</span><a name="httpStateString">httpStateString</a></h3>
+<p class="description">Return the string describing a HTTP state value.</p>
+<p class="code">
+const char *httpStateString (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_state_t">http_state_t</a> state<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>state</dt>
+<dd class="description">HTTP state value</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">State string</p>
<h3 class="function"><a name="httpStatus">httpStatus</a></h3>
<p class="description">Return a short string describing a HTTP status code.</p>
<p class="code">
@@ -2924,12 +3213,25 @@ int httpTrace (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>uri</dt>
<dd class="description">URI for trace</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Status of call (0 = success)</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0/OS 10.10&nbsp;</span><a name="httpURIStatusString">httpURIStatusString</a></h3>
+<p class="description">Return a string describing a URI status code.</p>
+<p class="code">
+const char *httpURIStatusString (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_uri_status_t">http_uri_status_t</a> status<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>status</dt>
+<dd class="description">URI status code</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Localized status string</p>
<h3 class="function"><a name="httpUpdate">httpUpdate</a></h3>
<p class="description">Update the current HTTP state for incoming data.</p>
<p class="code">
@@ -2939,7 +3241,7 @@ http_status_t httpUpdate (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">HTTP status</p>
@@ -2953,7 +3255,7 @@ int httpWait (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>msec</dt>
<dd class="description">Milliseconds to wait</dd>
</dl>
@@ -2970,7 +3272,7 @@ int httpWrite (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>buffer</dt>
<dd class="description">Buffer for data</dd>
<dt>length</dt>
@@ -2994,7 +3296,7 @@ ssize_t httpWrite2 (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">Connection to server</dd>
+<dd class="description">HTTP connection</dd>
<dt>buffer</dt>
<dd class="description">Buffer for data</dd>
<dt>length</dt>
@@ -3838,7 +4140,7 @@ int ippCopyAttributes (<br>
<h4 class="returnvalue">Return Value</h4>
<p class="description">1 on success, 0 on error</p>
<h4 class="discussion">Discussion</h4>
-<p class="discussion">Zero or more attributes are copied from the source IPP message, @code@ src, to the
+<p class="discussion">Zero or more attributes are copied from the source IPP message, <code>src</code>, to the
destination IPP message, <code>dst</code>. When <code>quickcopy</code> is non-zero, a &quot;shallow&quot;
reference copy of the attribute is created - this should only be done as long as the
original source IPP message will not be freed for the life of the destination.<br>
@@ -4025,6 +4327,10 @@ ipp_status_t ippErrorValue (<br>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Matching attribute</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">Starting with CUPS 2.0, the attribute name can contain a hierarchical list
+of attribute and member names separated by slashes, for example
+&quot;media-col/media-size&quot;.</p>
<h3 class="function"><a name="ippFindNextAttribute">ippFindNextAttribute</a></h3>
<p class="description">Find the next named attribute in a request.</p>
<p class="code">
@@ -4044,6 +4350,10 @@ ipp_status_t ippErrorValue (<br>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Matching attribute</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">Starting with CUPS 2.0, the attribute name can contain a hierarchical list
+of attribute and member names separated by slashes, for example
+&quot;media-col/media-size&quot;.</p>
<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippFirstAttribute">ippFirstAttribute</a></h3>
<p class="description">Return the first attribute in the message.</p>
<p class="code">
@@ -4072,7 +4382,7 @@ int ippGetBoolean (<br>
<dd class="description">Value number (0-based)</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
-<p class="description">Boolean value or -1 on error</p>
+<p class="description">Boolean value or 0 on error</p>
<h4 class="discussion">Discussion</h4>
<p class="discussion">The <code>element</code> parameter specifies which value to get from 0 to
<a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a> - 1.
@@ -4111,7 +4421,7 @@ int ippGetCount (<br>
<dd class="description">IPP attribute</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
-<p class="description">Number of values or -1 on error</p>
+<p class="description">Number of values or 0 on error</p>
<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippGetDate">ippGetDate</a></h3>
<p class="description">Get a date value for an attribute.</p>
<p class="code">
@@ -4161,7 +4471,7 @@ int ippGetInteger (<br>
<dd class="description">Value number (0-based)</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
-<p class="description">Value or -1 on error</p>
+<p class="description">Value or 0 on error</p>
<h4 class="discussion">Discussion</h4>
<p class="discussion">The <code>element</code> parameter specifies which value to get from 0 to
<a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a> - 1.
@@ -4216,7 +4526,7 @@ ipp_op_t ippGetOperation (<br>
<dd class="description">IPP request message</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
-<p class="description">Operation ID or -1 on error</p>
+<p class="description">Operation ID or 0 on error</p>
<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippGetRange">ippGetRange</a></h3>
<p class="description">Get a rangeOfInteger value from an attribute.</p>
<p class="code">
@@ -4235,7 +4545,7 @@ int ippGetRange (<br>
<dd class="description">Upper value of range</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
-<p class="description">Lower value of range or -1</p>
+<p class="description">Lower value of range or 0</p>
<h4 class="discussion">Discussion</h4>
<p class="discussion">The <code>element</code> parameter specifies which value to get from 0 to
<a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a> - 1.
@@ -4253,7 +4563,7 @@ int ippGetRequestId (<br>
<dd class="description">IPP message</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
-<p class="description">Request ID or -1 on error</p>
+<p class="description">Request ID or 0 on error</p>
<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippGetResolution">ippGetResolution</a></h3>
<p class="description">Get a resolution value for an attribute.</p>
<p class="code">
@@ -4275,7 +4585,7 @@ int ippGetResolution (<br>
<dd class="description">Units for resolution</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
-<p class="description">Horizontal/cross feed resolution or -1</p>
+<p class="description">Horizontal/cross feed resolution or 0</p>
<h4 class="discussion">Discussion</h4>
<p class="discussion">The <code>element</code> parameter specifies which value to get from 0 to
<a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a> - 1.
@@ -4358,7 +4668,7 @@ int ippGetVersion (<br>
<dd class="description">Minor version number or <code>NULL</code></dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
-<p class="description">Major version number or -1 on error</p>
+<p class="description">Major version number or 0 on error</p>
<h3 class="function"><a name="ippLength">ippLength</a></h3>
<p class="description">Compute the length of an IPP message.</p>
<p class="code">
@@ -5083,6 +5393,19 @@ the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ip
The valid version numbers are currently 1.0, 1.1, 2.0, 2.1, and 2.2.
</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0/OS 10.10&nbsp;</span><a name="ippStateString">ippStateString</a></h3>
+<p class="description">Return the name corresponding to a state value.</p>
+<p class="code">
+const char *ippStateString (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_state_t">ipp_state_t</a> state<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>state</dt>
+<dd class="description">State value</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">State name</p>
<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="ippTagString">ippTagString</a></h3>
<p class="description">Return the tag name corresponding to a tag value.</p>
<p class="code">
@@ -5293,6 +5616,11 @@ typedef struct _http_s http_t;
<p class="code">
typedef int (*http_timeout_cb_t)(<a href="#http_t">http_t</a> *http, void *user_data);
</p>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 2.0/OS 10.10&nbsp;</span><a name="http_trust_t">http_trust_t</a></h3>
+<p class="description">Level of trust for credentials </p>
+<p class="code">
+typedef enum <a href="#http_trust_e">http_trust_e</a> http_trust_t;
+</p>
<h3 class="typedef"><a name="http_uri_coding_t">http_uri_coding_t</a></h3>
<p class="description">URI en/decode flags</p>
<p class="code">
@@ -5690,6 +6018,23 @@ are server-oriented...</p>
<dt>HTTP_STATUS_USE_PROXY </dt>
<dd class="description">Must use a proxy to access this URI</dd>
</dl>
+<h3 class="enumeration"><span class="info">&nbsp;CUPS 2.0/OS 10.10&nbsp;</span><a name="http_trust_e">http_trust_e</a></h3>
+<p class="description">Level of trust for credentials </p>
+<h4 class="constants">Constants</h4>
+<dl>
+<dt>HTTP_TRUST_CHANGED </dt>
+<dd class="description">Credentials have changed</dd>
+<dt>HTTP_TRUST_EXPIRED </dt>
+<dd class="description">Credentials are expired</dd>
+<dt>HTTP_TRUST_INVALID </dt>
+<dd class="description">Credentials are invalid</dd>
+<dt>HTTP_TRUST_OK </dt>
+<dd class="description">Credentials are OK/trusted</dd>
+<dt>HTTP_TRUST_RENEWED </dt>
+<dd class="description">Credentials have been renewed</dd>
+<dt>HTTP_TRUST_UNKNOWN </dt>
+<dd class="description">Credentials are unknown/new</dd>
+</dl>
<h3 class="enumeration"><a name="http_uri_coding_e">http_uri_coding_e</a></h3>
<p class="description">URI en/decode flags</p>
<h4 class="constants">Constants</h4>
@@ -5784,6 +6129,8 @@ are server-oriented...</p>
<dd class="description">Bind on top</dd>
<dt>IPP_FINISHINGS_BOOKLET_MAKER </dt>
<dd class="description">Fold to make booklet</dd>
+<dt>IPP_FINISHINGS_COAT </dt>
+<dd class="description">Apply protective liquid or powder coating</dd>
<dt>IPP_FINISHINGS_COVER </dt>
<dd class="description">Add cover</dd>
<dt>IPP_FINISHINGS_CUPS_FOLD_ACCORDIAN </dt>
@@ -5876,6 +6223,8 @@ are server-oriented...</p>
<dd class="description">Fold the paper vertically into three sections, forming a Z</dd>
<dt>IPP_FINISHINGS_JOG_OFFSET </dt>
<dd class="description">Offset for binding (any type)</dd>
+<dt>IPP_FINISHINGS_LAMINATE </dt>
+<dd class="description">Apply protective (solid) material</dd>
<dt>IPP_FINISHINGS_NONE </dt>
<dd class="description">No finishing</dd>
<dt>IPP_FINISHINGS_PUNCH </dt>
@@ -5932,6 +6281,14 @@ are server-oriented...</p>
<dd class="description">Staple top left corner</dd>
<dt>IPP_FINISHINGS_STAPLE_TOP_RIGHT </dt>
<dd class="description">Staple top right corner</dd>
+<dt>IPP_FINISHINGS_STAPLE_TRIPLE_BOTTOM </dt>
+<dd class="description">Three staples on bottom</dd>
+<dt>IPP_FINISHINGS_STAPLE_TRIPLE_LEFT </dt>
+<dd class="description">Three staples on left</dd>
+<dt>IPP_FINISHINGS_STAPLE_TRIPLE_RIGHT </dt>
+<dd class="description">Three staples on right</dd>
+<dt>IPP_FINISHINGS_STAPLE_TRIPLE_TOP </dt>
+<dd class="description">Three staples on top</dd>
<dt>IPP_FINISHINGS_TRIM </dt>
<dd class="description">Trim (any type)</dd>
<dt>IPP_FINISHINGS_TRIM_AFTER_COPIES </dt>
@@ -6073,6 +6430,8 @@ are server-oriented...</p>
<dl>
<dt>IPP_ORIENT_LANDSCAPE </dt>
<dd class="description">90 degrees counter-clockwise</dd>
+<dt>IPP_ORIENT_NONE </dt>
+<dd class="description">No rotation</dd>
<dt>IPP_ORIENT_PORTRAIT </dt>
<dd class="description">No rotation</dd>
<dt>IPP_ORIENT_REVERSE_LANDSCAPE </dt>
@@ -6134,6 +6493,14 @@ are server-oriented...</p>
<dd class="description">Invalid status name for <a href="#ippErrorValue"><code>ippErrorValue</code></a></dd>
<dt>IPP_STATUS_CUPS_SEE_OTHER </dt>
<dd class="description">cups-see-other</dd>
+<dt>IPP_STATUS_ERROR_ACCOUNT_AUTHORIZATION_FAILED </dt>
+<dd class="description">client-error-account-authorization-failed</dd>
+<dt>IPP_STATUS_ERROR_ACCOUNT_CLOSED </dt>
+<dd class="description">client-error-account-closed</dd>
+<dt>IPP_STATUS_ERROR_ACCOUNT_INFO_NEEDED </dt>
+<dd class="description">client-error-account-info-needed</dd>
+<dt>IPP_STATUS_ERROR_ACCOUNT_LIMIT_REACHED </dt>
+<dd class="description">client-error-account-limit-reached</dd>
<dt>IPP_STATUS_ERROR_ATTRIBUTES_NOT_SETTABLE </dt>
<dd class="description">client-error-attributes-not-settable</dd>
<dt>IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES </dt>
@@ -6150,13 +6517,13 @@ are server-oriented...</p>
<dd class="description">client-error-compression-not-supported</dd>
<dt>IPP_STATUS_ERROR_CONFLICTING </dt>
<dd class="description">client-error-conflicting-attributes</dd>
-<dt>IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED <span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span></dt>
+<dt>IPP_STATUS_ERROR_CUPS_ACCOUNT_AUTHORIZATION_FAILED <span class="info">&nbsp;DEPRECATED&nbsp;</span></dt>
<dd class="description">cups-error-account-authorization-failed </dd>
-<dt>IPP_STATUS_ERROR_CUPS_ACCOUNT_CLOSED <span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span></dt>
-<dd class="description">cups-error-account-closed </dd>
-<dt>IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED <span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span></dt>
+<dt>IPP_STATUS_ERROR_CUPS_ACCOUNT_CLOSED </dt>
+<dd class="description">cups-error-account-closed @deprecate@</dd>
+<dt>IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED <span class="info">&nbsp;DEPRECATED&nbsp;</span></dt>
<dd class="description">cups-error-account-info-needed </dd>
-<dt>IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED <span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span></dt>
+<dt>IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED <span class="info">&nbsp;DEPRECATED&nbsp;</span></dt>
<dd class="description">cups-error-account-limit-reached </dd>
<dt>IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED <span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span></dt>
<dd class="description">cups-authentication-canceled - Authentication canceled by user </dd>
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/cgi.html b/doc/help/cgi.html
index c50a2a501..34c6debb3 100644
--- a/doc/help/cgi.html
+++ b/doc/help/cgi.html
@@ -63,8 +63,7 @@ application/x-httpd-php php
application/x-httpd-python py
</PRE>
-<P>CGI scripts/programs (application/x-httpd-cgi) also must have execution
-permissions to be treated as a CGI script or program.</P>
+<P>CGI scripts/programs (application/x-httpd-cgi) also must be owned by root, have execution permissions, and not have world or group write permissions to be treated as a CGI script or program.</P>
<H2><A NAME="LIMITS">Limitations</A></H2>
@@ -75,10 +74,7 @@ following exceptions:</P>
<LI>No PATH_INFO or PATH_TRANSLATED support</LI>
- <LI>Limited HTTP field support; only the Content-Length
- (CONTENT_LENGTH), Cookie (HTTP_COOKIE), and User-Agent
- (HTTP_USER_AGENT) fields are placed in environment
- variables at this time</LI>
+ <LI>Limited HTTP field support; only the Content-Length (CONTENT_LENGTH), Content-Type (CONTENT_TYPE), Cookie (HTTP_COOKIE), Referrer (HTTP_REFERRER), and User-Agent (HTTP_USER_AGENT) fields are placed in environment variables at this time</LI>
</UL>
diff --git a/doc/help/glossary.html b/doc/help/glossary.html
index c6898dc7d..6bd6137c9 100644
--- a/doc/help/glossary.html
+++ b/doc/help/glossary.html
@@ -66,9 +66,6 @@
<DL>
- <DT>HP-GL
- <DD>Hewlett-Packard Graphics Language
-
<DT>HP-PCL
<DD>Hewlett-Packard Page Control Language
@@ -161,6 +158,9 @@
<DT>PPD
<DD>PostScript Printer Description
+ <DT>PWG
+ <DD>Printer Working Group
+
</DL>
@@ -168,9 +168,6 @@
<DL>
- <DT>SCSI
- <DD>Small Computer Systems Interface
-
<DT>serial
<DD>Sending or receiving data 1 bit at a time
diff --git a/doc/help/kerberos.html b/doc/help/kerberos.html
index 30fb53364..e17f900aa 100644
--- a/doc/help/kerberos.html
+++ b/doc/help/kerberos.html
@@ -32,8 +32,6 @@ DNS server(s).</li>
server(s).</li>
</ol></li>
- <li>A "host" Service Granting Ticket (SGT) for every CUPS server</li>
-
</ol>
@@ -83,7 +81,7 @@ http://server.example.com:631/admin
<P>When doing printing tasks that require authentication, CUPS requests single-use "tickets" from your login session to authenticate who you are. These tickets give CUPS a username of the form "user@REALM", which is then converted to just "user" for purposes of user and group checks.</P>
-<P>In order to support printing to a shared printer, CUPS runs the IPP backend as the owner of the print job so it can obtain the necessary credentials.</P>
+<P>In order to support printing to a shared printer, CUPS runs the IPP backend as the owner of the print job so it can obtain the necessary credentials when the job is de-spooled to the server.</P>
</BODY>
</HTML>
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 @@
<H1 CLASS="title">Software License Agreement</H1>
-<P ALIGN="CENTER">Copyright 2007-2012 by Apple Inc.<BR>
+<P ALIGN="CENTER">Copyright 2007-2013 by Apple Inc.<BR>
1 Infinite Loop<BR>
Cupertino, CA 95014 USA<BR>
<BR>
@@ -16,10 +16,7 @@ WWW: <A HREF="http://www.cups.org/">http://www.cups.org/</A>
<H2 CLASS="title"><A NAME="INTRO">Introduction</A></H2>
-<P>CUPS<SUP>TM</SUP> is provided under the GNU General Public License ("GPL")
-and GNU Library General Public License ("LGPL"), Version 2, with exceptions for
-Apple operating systems and the OpenSSL toolkit. A copy of the exceptions and
-licenses follow this introduction.</P>
+<P>CUPS<SUP>TM</SUP> is provided under the GNU General Public License ("GPL") and GNU Library General Public License ("LGPL"), Version 2, with an exception for Apple operating systems. A copy of the exception and licenses follow this introduction.</P>
<P>The GNU LGPL applies to the CUPS and CUPS Imaging libraries located in the
"cups" and "filter" subdirectories of the CUPS source distribution and the files
@@ -59,7 +56,7 @@ for your application, driver, or filter.</P>
<H2 CLASS="title"><A NAME="EXCEPTIONS">License Exceptions</A></H2>
<P>In addition, as the copyright holder of CUPS, Apple Inc. grants
-the following special exceptions:</P>
+the following special exception:</P>
<OL>
@@ -111,20 +108,9 @@ the following special exceptions:</P>
</OL>
- <LI><B>OpenSSL Toolkit License Exception</B>;
-
- <OL TYPE="a">
-
- <LI>Apple Inc. explicitly allows the
- compilation and distribution of the CUPS
- software with the OpenSSL Toolkit.</LI>
-
- </OL>
-
</OL>
-<P>No developer is required to provide these exceptions in a
-derived work.</P>
+<P>No developer is required to provide this exception in a derived work.</P>
<H2 CLASS="title"><A NAME="KERBEROS">Kerberos Support Code</A></H2>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -7,165 +7,173 @@
</head>
<body>
<h1 class="title">backend(7)</h1>
-
<h2 class="title"><a name="NAME">Name</a></h2>
backend - cups backend transmission interfaces
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>backend
-</b><br>
-<b>backend
-</b>job user title num-copies options [
-<i>filename
-</i>]
+<b>backend</b>
+<br>
+<b>backend</b>
+<i>job</i>
+<i>user</i>
+<i>title</i>
+<i>num-copies</i>
+<i>options</i>
+[
+<i>filename</i>
+]
+<pre class="man">
+
+<b>#include &lt;cups/cups.h></b>
+
+<b>const char *cupsBackendDeviceURI</b>(<b>char **</b><i>argv</i>);
+
+<b>void cupsBackendReport</b>(<b>const char *</b><i>device_scheme</i>,
+ <b>const char *</b><i>device_uri</i>,
+ <b>const char *</b><i>device_make_and_model</i>,
+ <b>const char *</b><i>device_info</i>,
+ <b>const char *</b><i>device_id</i>,
+ <b>const char *</b><i>device_location</i>);
+
+<b>ssize_t cupsBackChannelWrite</b>(<b>const char *</b><i>buffer</i>,
+ <b>size_t </b><i>bytes</i>, <b>double </b><i>timeout</i>);
+
+<b>int cupsSideChannelRead</b>(<b>cups_sc_command_t *</b><i>command</i>,
+ <b>cups_sc_status_t *</b><i>status</i>, <b>char *</b><i>data</i>,
+ <b>int *</b><i>datalen</i>, <b>double </b><i>timeout</i>);
+
+<b>int cupsSideChannelWrite</b>(<b>cups_sc_command_t </b><i>command</i>,
+ <b>cups_sc_status_t </b><i>status</i>, <b>const char *</b><i>data</i>,
+ <b>int </b><i>datalen</i>, <b>double </b><i>timeout</i>);
+</pre>
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-Backends are a special type of <a href='man-filter.html?TOPIC=Man+Pages'>filter(7)</a> which is used to send print data
-to and discover different devices on the system.
-<p>Like filters, backends must be capable of reading from a filename on the
-command-line or from the standard input, copying the standard input to a
-temporary file as required by the physical interface.
-<p>The command name (argv[0]) is set to the device URI of the destination printer.
-Starting with CUPS 1.1.22, any authentication information in argv[0] is removed,
-so backend developers are urged to use the DEVICE_URI environment variable
-whenever authentication information is required. The CUPS API includes a
-<i>cupsBackendDeviceURI</i> function for retrieving the correct device URI.
-<p>Back-channel data from the device should be relayed to the job
-filters by writing to file descriptor 3. The CUPS API includes
-the <i>cupsBackChannelWrite</i> function for this purpose.
-<h2 class="title"><a name="WARNING">Warning</a></h2>
-CUPS backends are not generally design to be run directly by the user. Aside
-from the device URI issue (argv[0] and DEVICE_URI environment variable contain
-the device URI), CUPS backends also expect specific environment variables and
-file descriptors, and typically run in a user session that (on OS X) has
-additional restrictions that affect how it runs. Backends can also be installed
-with restricted permissions (0500 or 0700) that tell the scheduler to run them
-as the "root" user instead of an unprivileged user (typically "lp") on the
-system.
-<p>Unless you are a developer and know what you are doing, please do not run
-backends directly. Instead, use the <a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a> or <a href='man-lpr.html?TOPIC=Man+Pages'>lpr(1)</a> programs to send
-a print job or <a href='man-lpinfo.html?TOPIC=Man+Pages'>lpinfo(8)</a> program to query for available printers using the
-backend. The one exception is the SNMP backend - see <i>snmpbackend(8)</i> for
-more information.
-<h2 class="title"><a name="DEVICE_DISCOVERY">Device Discovery</a></h2>
-When run with no arguments, the backend should list the devices and schemes it
-supports or is advertising to stdout. The output consists of zero or more lines
-consisting of any of the following forms:
+Backends are a special type of
+<a href="man-filter.html?TOPIC=Man+Pages"><b>filter</b>(7)</a>
+which is used to send print data to and discover different devices on the system.
+<p>Like filters, backends must be capable of reading from a filename on the command-line or from the standard input, copying the standard input to a temporary file as required by the physical interface.
+<p>The command name (<i>argv[0]</i>) is set to the device URI of the destination printer. Authentication information in
+<i>argv[0]</i>
+is removed, so backend developers are urged to use the
+<b>DEVICE_URI</b>
+environment variable whenever authentication information is required. The
+<b>cupsBackendDeviceURI</b>()
+function may be used to retrieve the correct device URI.
+<p>Back-channel data from the device should be relayed to the job filters using the <i>cupsBackChannelWrite</i> function.
+<p>Backends are responsible for reading side-channel requests using the
+<b>cupsSideChannelRead</b>()
+function and responding with the
+<b>cupsSideChannelWrite()</b>
+function. The
+<b>CUPS_SC_FD</b>
+constant defines the file descriptor that should be monitored for incoming requests.
+<h3><a name="DEVICE_DISCOVERY">Device Discovery</a></h3>
+When run with no arguments, the backend should list the devices and schemes it supports or is advertising to the standard output. The output consists of zero or more lines consisting of any of the following forms:
+<pre class="man">
-<pre>
device-class scheme "Unknown" "device-info"
device-class device-uri "device-make-and-model" "device-info"
device-class device-uri "device-make-and-model" "device-info" "device-id"
device-class device-uri "device-make-and-model" "device-info" "device-id" "device-location"
</pre>
-<p>The <i>device-class</i> field is one of the following values:
-<dl>
-<dt>direct
-</dt>
-<dd></dd>
-<dd>The device-uri refers to a specific direct-access device with no options, such
-as a parallel, USB, or SCSI device.
-</dd>
-<dt>file
-</dt>
-<dd></dd>
-<dd>The device-uri refers to a file on disk.
-</dd>
-<dt>network
-</dt>
-<dd></dd>
-<dd>The device-uri refers to a networked device and conforms to the general form for
+<p>The
+<b>cupsBackendReport</b>()
+function can be used to generate these lines and handle any necessary escaping of characters in the various strings.
+<p>The
+<i>device-class</i>
+field is one of the following values:
+<dl class="man">
+<dt><b>direct</b>
+<dd style="margin-left: 5.0em">The device-uri refers to a specific direct-access device with no options, such as a parallel, USB, or SCSI device.
+<dt><b>file</b>
+<dd style="margin-left: 5.0em">The device-uri refers to a file on disk.
+<dt><b>network</b>
+<dd style="margin-left: 5.0em">The device-uri refers to a networked device and conforms to the general form for
network URIs.
-</dd>
-<dt>serial
-</dt>
-<dd></dd>
-<dd>The device-uri refers to a serial device with configurable baud rate and other
-options. If the device-uri contains a baud value, it represents the maximum baud
-rate supported by the device.
-</dd>
+<dt><b>serial</b>
+<dd style="margin-left: 5.0em">The device-uri refers to a serial device with configurable baud rate and other options. If the device-uri contains a baud value, it represents the maximum baud rate supported by the device.
</dl>
-<p>The <i>scheme</i> field provides the URI scheme that is supported by the backend.
-Backends should use this form only when the backend supports any URI using that
-scheme. The <i>device-uri</i> field specifies the full URI to use when
-communicating with the device.
-<p>The <i>device-make-and-model</i> field specifies the make and model of the
-device, e.g. "Example Foojet 2000". If the make and model is not known, you must
-report "Unknown".
-<p>The <i>device-info</i> field specifies additional information about the device.
-Typically this includes the make and model along with the port number or network
-address, e.g. "Example Foojet 2000 USB #1".
-<p>The optional <i>device-id</i> field specifies the IEEE-1284 device ID string for
-the device, which is used to select a matching driver.
-<p>The optional <i>device-location</i> field specifies the physical location of
-the device, which is often used to pre-populate the printer-location attribute
-when adding a printer.
-<h2 class="title"><a name="PERMISSIONS">Permissions</a></h2>
-Backends without world execute permissions are run as the root user. Otherwise,
-the backend is run using an unprivileged user account, typically "lp".
-<h2 class="title"><a name="EXIT_CODES">Exit Codes</a></h2>
-The following exit codes are defined for backends; C API constants defined in
-the &lt;cups/backend.h> header file are defined in parenthesis:
-<dl>
-<dt>0 (CUPS_BACKEND_OK)
-</dt>
-<dd></dd>
-<dd>The print file was successfully transmitted to the device or remote server.
-</dd>
-<dt>1 (CUPS_BACKEND_FAILED)
-</dt>
-<dd></dd>
-<dd>The print file was not successfully transmitted to the device or remote server.
-The scheduler will respond to this by canceling the job, retrying the job, or
-stopping the queue depending on the state of the error-policy attribute.
-</dd>
-<dt>2 (CUPS_BACKEND_AUTH_REQUIRED)
-</dt>
-<dd></dd>
-<dd>The print file was not successfully transmitted because valid authentication
-information is required. The scheduler will respond to this by holding the job
-and adding the "cups-held-for-authentication" keyword to the "job-reasons"
+<p>The
+<i>scheme</i>
+field provides the URI scheme that is supported by the backend. Backends should use this form only when the backend supports any URI using that scheme. The
+<i>device-uri</i>
+field specifies the full URI to use when communicating with the device.
+<p>The
+<i>device-make-and-model</i>
+field specifies the make and model of the device, e.g. "Example Foojet 2000". If the make and model is not known, you must report "Unknown".
+<p>The
+<i>device-info</i>
+field specifies additional information about the device. Typically this includes the make and model along with the port number or network address, e.g. "Example Foojet 2000 USB #1".
+<p>The optional
+<i>device-id</i>
+field specifies the IEEE-1284 device ID string for the device, which is used to select a matching driver.
+<p>The optional
+<i>device-location</i>
+field specifies the physical location of the device, which is often used to pre-populate the printer-location attribute when adding a printer.
+<h3><a name="PERMISSIONS">Permissions</a></h3>
+Backends without world read and execute permissions are run as the root user. Otherwise, the backend is run using an unprivileged user account, typically "lp".
+<h2 class="title"><a name="EXIT_STATUS">Exit Status</a></h2>
+The following exit codes are defined for backends:
+<dl class="man">
+<dt><b>CUPS_BACKEND_OK</b>
+<dd style="margin-left: 5.0em">The print file was successfully transmitted to the device or remote server.
+<dt><b>CUPS_BACKEND_FAILED</b>
+<dd style="margin-left: 5.0em"><br>
+The print file was not successfully transmitted to the device or remote server. The scheduler will respond to this by canceling the job, retrying the job, or stopping the queue depending on the state of the
+<i>printer-error-policy</i>
attribute.
-</dd>
-<dt>3 (CUPS_BACKEND_HOLD)
-</dt>
-<dd></dd>
-<dd>The print file was not successfully transmitted because it cannot be printed at
-this time. The scheduler will respond to this by holding the job.
-</dd>
-<dt>4 (CUPS_BACKEND_STOP)
-</dt>
-<dd></dd>
-<dd>The print file was not successfully transmitted because it cannot be printed at
-this time. The scheduler will respond to this by stopping the queue.
-</dd>
-<dt>5 (CUPS_BACKEND_CANCEL)
-</dt>
-<dd></dd>
-<dd>The print file was not successfully transmitted because one or more attributes
-are not supported or the job was canceled at the printer. The scheduler will
-respond to this by canceling the job.
-</dd>
-<dt>6 (CUPS_BACKEND_RETRY)
-</dt>
-<dd></dd>
-<dd>The print file was not successfully transmitted because of a temporary issue.
-The scheduler will retry the job at a future time - other jobs may print before
-this one.
-</dd>
-<dt>7 (CUPS_BACKEND_RETRY_CURRENT)
-</dt>
-<dd></dd>
-<dd>The print file was not successfully transmitted because of a temporary issue.
-The scheduler will retry the job immediately without allowing intervening jobs.
-</dd>
+<dt><b>CUPS_BACKEND_AUTH_REQUIRED</b>
+<dd style="margin-left: 5.0em">The print file was not successfully transmitted because valid authentication information is required. The scheduler will respond to this by holding the job and adding the 'cups-held-for-authentication' keyword to the "job-reasons" Job Description attribute.
+<dt><b>CUPS_BACKEND_HOLD</b>
+<dd style="margin-left: 5.0em">The print file was not successfully transmitted because it cannot be printed at this time. The scheduler will respond to this by holding the job.
+<dt><b>CUPS_BACKEND_STOP</b>
+<dd style="margin-left: 5.0em">The print file was not successfully transmitted because it cannot be printed at this time. The scheduler will respond to this by stopping the queue.
+<dt><b>CUPS_BACKEND_CANCEL</b>
+<dd style="margin-left: 5.0em">The print file was not successfully transmitted because one or more attributes are not supported or the job was canceled at the printer. The scheduler will respond to this by canceling the job.
+<dt><b>CUPS_BACKEND_RETRY</b>
+<dd style="margin-left: 5.0em">The print file was not successfully transmitted because of a temporary issue. The scheduler will retry the job at a future time - other jobs may print before this one.
+<dt><b>CUPS_BACKEND_RETRY_CURRENT</b>
+<dd style="margin-left: 5.0em">The print file was not successfully transmitted because of a temporary issue. The scheduler will retry the job immediately without allowing intervening jobs.
</dl>
<p>All other exit code values are reserved.
+<h2 class="title"><a name="ENVIRONMENT">Environment</a></h2>
+In addition to the environment variables listed in
+<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1)</a>
+and
+<a href="man-filter.html?TOPIC=Man+Pages"><b>filter</b>(7),</a>
+CUPS backends can expect the following environment variable:
+<dl class="man">
+<dt><b>DEVICE_URI</b>
+<dd style="margin-left: 5.0em">The device URI associated with the printer.
+</dl>
+<h2 class="title"><a name="FILES">Files</a></h2>
+<i>/etc/cups/cups-files.conf</i>
+<h2 class="title"><a name="NOTES">Notes</a></h2>
+CUPS backends are not generally design to be run directly by the user. Aside from the device URI issue (
+<i>argv[0]</i>
+and
+<b>DEVICE_URI</b>
+environment variable contain the device URI), CUPS backends also expect specific environment variables and file descriptors, and typically run in a user session that (on OS X) has additional restrictions that affect how it runs. Backends can also be installed with restricted permissions (0500 or 0700) that tell the scheduler to run them as the "root" user instead of an unprivileged user (typically "lp") on the system.
+<p>Unless you are a developer and know what you are doing, please do not run backends directly. Instead, use the
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1)</a>
+or
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1)</a>
+programs to send print jobs or
+<a href="man-lpinfo.html?TOPIC=Man+Pages"><b>lpinfo</b>(8)</a>
+to query for available printers using the backend. The one exception is the SNMP backend - see
+<a href="man-cups-snmp.html?TOPIC=Man+Pages"><b>cups-snmp</b>(8)</a>
+for more information.
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cups-snmp.html?TOPIC=Man+Pages'>cups-snmp(8)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>, <a href='man-filter.html?TOPIC=Man+Pages'>filter(7)</a>,
-<a href='man-lpinfo.html?TOPIC=Man+Pages'>lpinfo(8)</a>,
+<i>cups</i>(1),
+<i>cups-files.conf</i>(5),
+<i>cups-snmp</i>(8),
+<i>cupsd</i>(8),
+<i>filter</i>(7),
+<i>lp</i>(1),
+<i>lpinfo</i>(8),
+<i>lpr</i>(1),
<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,72 +10,80 @@
<h2 class="title"><a name="NAME">Name</a></h2>
cancel - cancel jobs
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cancel
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -a ] [ -h
-<i>hostname[:port]
-</i>] [ -u
-<i>username
-</i>] [ -x ] [
-<i>id
-</i>] [
-<i>destination
-</i>] [
-<i>destination-id
-</i>]
+<b>cancel</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-a</b>
+] [
+<b>-h</b>
+<i>hostname[:port]</i>
+] [
+<b>-u</b>
+<i>username</i>
+] [
+<b>-x</b>
+] [
+<i>id</i>
+] [
+<i>destination</i>
+] [
+<i>destination-id</i>
+]
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cancel</i> cancels existing print jobs. The <i>-a</i> option will remove
-all jobs from the specified destination.
+The <b>cancel</b> command cancels print jobs.
+If no <i>destination</i> or <i>id</i> is specified, the currently printing job on the default destination is canceled.
<h2 class="title"><a name="OPTIONS">Options</a></h2>
-The following options are recognized by <i>cancel</i>:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Forces encryption when connecting to the server.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Specifies the username to use when connecting to the server.
-</dd>
-<dt>-a
-</dt>
-<dd></dd>
-<dd>Cancel all jobs on the named destination, or all jobs on all
+The following options are recognized by <b>cancel</b>:
+<dl class="man">
+<dt><b>-a</b>
+<dd style="margin-left: 5.0em">Cancel all jobs on the named destination, or all jobs on all
destinations if none is provided.
-</dd>
-<dt>-h hostname[:port]
-</dt>
-<dd></dd>
-<dd>Chooses an alternate server.
-</dd>
-<dt>-u username
-</dt>
-<dd></dd>
-<dd>Cancels jobs owned by <i>username</i>.
-</dd>
-<dt>-x
-</dt>
-<dd></dd>
-<dd>Deletes job data files in addition to canceling.
-</dd>
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Forces encryption when connecting to the server.
+<dt><b>-h </b><i>hostname</i>[<i>:port</i>]
+<dd style="margin-left: 5.0em">Specifies an alternate server.
+<dt><b>-U </b><i>username</i>
+<dd style="margin-left: 5.0em">Specifies the username to use when connecting to the server.
+<dt><b>-u </b><i>username</i>
+<dd style="margin-left: 5.0em">Cancels jobs owned by <i>username</i>.
+<dt><b>-x</b>
+<dd style="margin-left: 5.0em">Deletes job data files in addition to canceling.
</dl>
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-Unlike the System V printing system, CUPS allows printer names to
-contain any printable character except SPACE, TAB, "/", or "#".
-Also, printer and class names are <i>not</i> case-sensitive.
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+Unlike the System V printing system, CUPS allows printer names to contain any printable character except SPACE, TAB, "/", or "#". Also, printer and class names are <i>not</i> case-sensitive.
+<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+Cancel the current print job:
+<pre class="man">
+
+ cancel
+
+</pre>
+Cancel job "myprinter-42":
+<pre class="man">
+
+ cancel myprinter-42
+
+</pre>
+Cancel all jobs:
+<pre class="man">
+
+ cancel -a
+</pre>
<h2 class="title"><a name="NOTES">Notes</a></h2>
-Administrators wishing to prevent unauthorized cancellation of
-jobs via the <i>-u</i> option should require authentication for
-Cancel-Jobs operations in <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>.
+Administrators wishing to prevent unauthorized cancellation of jobs via the <i>-u</i> option should require authentication for Cancel-Jobs operations in
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5).</a>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>, <a href='man-lpmove.html?TOPIC=Man+Pages'>lpmove(8)</a>, <a href='man-lpstat.html?TOPIC=Man+Pages'>lpstat(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpmove.html?TOPIC=Man+Pages"><b>lpmove</b>(8),</a>
+<a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,116 +10,21 @@
<h2 class="title"><a name="NAME">Name</a></h2>
classes.conf - class configuration file for cups
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <i>classes.conf</i> file defines the local printer classes that are
-available. It is normally located in the <i>/etc/cups</i> directory and
-is generated automatically by the <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a> program when printer
-classes are added or deleted.
-<p>Each line in the file can be a configuration directive, a blank line,
-or a comment. Comment lines start with the # character.
-<h2 class="title"><a name="DIRECTIVES">Directives</a></h2>
-<dl>
-<dt>&lt;Class name> ... &lt;/Class>
-</dt>
-<dd></dd>
-<dd>Defines a specific printer class.
-</dd>
-<dt>&lt;DefaultClass name> ... &lt;/Class>
-</dt>
-<dd></dd>
-<dd>Defines a default printer class.
-</dd>
-<dt>Accepting Yes
-</dt>
-<dd></dd>
-<dt>Accepting No
-</dt>
-<dd></dd>
-<dd>Specifies whether the printer is accepting new jobs.
-</dd>
-<dt>AllowUser [ user @group ... ]
-</dt>
-<dd></dd>
-<dd>Allows specific users and groups to print to the printer.
-</dd>
-<dt>DenyUser [ user @group ... ]
-</dt>
-<dd></dd>
-<dd>Prevents specific users and groups from printing to the printer.
-</dd>
-<dt>Info text
-</dt>
-<dd></dd>
-<dd>Specifies human-readable text describing the printer.
-</dd>
-<dt>JobSheets banner banner
-</dt>
-<dd></dd>
-<dd>Specifies the banner pages to use for the printer.
-</dd>
-<dt>KLimit number
-</dt>
-<dd></dd>
-<dd>Specifies the job-k-limit value for the printer.
-</dd>
-<dt>Location text
-</dt>
-<dd></dd>
-<dd>Specifies human-readable text describing the location of the printer.
-</dd>
-<dt>OpPolicy name
-</dt>
-<dd></dd>
-<dd>Specifies the operation policy for the printer.
-</dd>
-<dt>PageLimit number
-</dt>
-<dd></dd>
-<dd>Specifies the job-page-limit value for the printer.
-</dd>
-<dt>Printer
-</dt>
-<dd></dd>
-<dd>Specifies a printer that is a member of the printer class.
-</dd>
-<dt>QuotaPeriod seconds
-</dt>
-<dd></dd>
-<dd>Specifies the job-quota-period value for the printer.
-</dd>
-<dt>Shared Yes
-</dt>
-<dd></dd>
-<dt>Shared No
-</dt>
-<dd></dd>
-<dd>Specifies whether the printer is shared.
-</dd>
-<dt>State idle
-</dt>
-<dd></dd>
-<dt>State stopped
-</dt>
-<dd></dd>
-<dd>Specifies the initial state of the printer (Idle or Stopped)
-</dd>
-<dt>StateMessage text
-</dt>
-<dd></dd>
-<dd>Specifies the message associated with the state.
-</dd>
-<dt>StateTime seconds
-</dt>
-<dd></dd>
-<dd>Specifies the date/time associated with the state.
-</dd>
-</dl>
+The <b>classes.conf</b> file defines the local printer classes that are available. It is normally located in the <i>/etc/cups</i> directory and is maintained by the
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8)</a>
+program. This file is not intended to be edited or managed manually.
+<h2 class="title"><a name="NOTES">Notes</a></h2>
+The name, location, and format of this file are an implementation detail that will change in future releases of CUPS.
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>, <a href='man-mime.convs.html?TOPIC=Man+Pages'>mime.convs(5)</a>,
-<a href='man-mime.types.html?TOPIC=Man+Pages'>mime.types(5)</a>, <a href='man-printers.conf.html?TOPIC=Man+Pages'>printers.conf(5)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-mime.convs.html?TOPIC=Man+Pages"><b>mime.convs</b>(5),</a>
+<a href="man-mime.types.html?TOPIC=Man+Pages"><b>mime.types</b>(5),</a>
+<a href="man-printers.conf.html?TOPIC=Man+Pages"><b>printers.conf</b>(5),</a>
+<a href="man-subscriptions.conf.html?TOPIC=Man+Pages"><b>subscriptions.conf</b>(5),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -8,62 +8,50 @@
<body>
<h1 class="title">client.conf(5)</h1>
<h2 class="title"><a name="NAME">Name</a></h2>
-client.conf - client configuration file for cups
+client.conf - client configuration file for cups (deprecated)
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <i>client.conf</i> file configures the CUPS client and is
-normally located in the <i>/etc/cups</i> or <i>~/.cups</i>
-directory. Each line in the file can be a configuration
-directive, a blank line, or a comment. Comment lines start with
-the # character.
-<h2 class="title"><a name="DIRECTIVES">Directives</a></h2>
-The following directives are understood by the client. Consult the
-on-line help for detailed descriptions:
-<dl>
-<dt>Encryption IfRequested
-</dt>
-<dd></dd>
-<dt>Encryption Never
-</dt>
-<dd></dd>
-<dt>Encryption Required
-</dt>
-<dd></dd>
-<dd>Specifies the level of encryption that is required for a particular
-location.
-</dd>
-<dt>GSSServiceName name
-</dt>
-<dd>Specifies the Kerberos service name that is used for authentication, typically
-"host", "http", or "ipp". CUPS adds the remote hostname
-("name@server.example.com") for you. The default name is
-"http".
-</dd>
-<dt>ServerName hostname-or-ip-address[:port]
-</dt>
-<dd></dd>
-<dt>ServerName /domain/socket
-</dt>
-<dd></dd>
-<dd>Specifies the address and optionally the port to use when connecting to the
-server. <b>Note: Not supported on OS X 10.7 or later.</b>
-</dd>
-<dt>ServerName hostname-or-ip-address[:port]/version=1.1
-</dt>
-<dd></dd>
-<dd>Specifies the address and optionally the port to use when connecting to a
-server running CUPS 1.3.12 and earlier. <b>Note: Not supported on OS X 10.7 or
-later.</b>
-</dd>
-<dt>User name
-</dt>
-<dd></dd>
-<dd>Specifies the default user name to use for requests.
-</dd>
+The <b>client.conf</b> file configures the CUPS client and is normally located in the <i>/etc/cups</i> and/or <i>~/.cups</i> directories.
+Each line in the file can be a configuration directive, a blank line, or a comment. Comment lines start with the # character.
+<p><b>Note:</b> Starting with OS X 10.7, this file is only used by command-line and X11 applications.
+The <b>ServerName</b> directive is not supported on OS X at all.
+<h3><a name="DIRECTIVES">Directives</a></h3>
+The following directives are understood by the client. Consult the online help for detailed descriptions:
+<dl class="man">
+<dt><b>AllowAnyRoot Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>AllowAnyRoot No</b>
+<dd style="margin-left: 5.0em">Specifies whether to allow TLS with certificates that have not been signed by a trusted Certificate Authority.
+The default is "Yes".
+<dt><b>AllowExpiredCerts Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>AllowExpiredCerts No</b>
+<dd style="margin-left: 5.0em">Specifies whether to allow TLS with expired certificates.
+The default is "Yes".
+<dt><b>Encryption IfRequested</b>
+<dd style="margin-left: 5.0em"><dt><b>Encryption Never</b>
+<dd style="margin-left: 5.0em"><dt><b>Encryption Required</b>
+<dd style="margin-left: 5.0em">Specifies the level of encryption that should be used.
+<dt><b>GSSServiceName </b><i>name</i>
+<dd style="margin-left: 5.0em">Specifies the Kerberos service name that is used for authentication, typically "host", "http", or "ipp".
+CUPS adds the remote hostname ("name@server.example.com") for you. The default name is "http".
+<dt><b>ServerName </b><i>hostname-or-ip-address</i>[<i>:port</i>]
+<dd style="margin-left: 5.0em"><dt><b>ServerName </b><i>/domain/socket</i>
+<dd style="margin-left: 5.0em">Specifies the address and optionally the port to use when connecting to the server.
+<b>Note: This directive it not supported on OS X 10.7 or later.</b>
+<dt><b>ServerName </b><i>hostname-or-ip-address</i>[<i>:port</i>]<b>/version=1.1</b>
+<dd style="margin-left: 5.0em">Specifies the address and optionally the port to use when connecting to a server running CUPS 1.3.12 and earlier.
+<dt><b>User </b><i>name</i>
+<dd style="margin-left: 5.0em">Specifies the default user name to use for requests.
+<dt><b>ValidateCerts Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>ValidateCerts No</b>
+<dd style="margin-left: 5.0em">Specifies whether to only allow TLS with certificates whose common name matches the hostname.
+The default is "No".
</dl>
+<h2 class="title"><a name="NOTES">Notes</a></h2>
+The <b>client.conf</b> file is deprecated and will no longer be supported in a future version of CUPS.
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,116 +10,91 @@
<h2 class="title"><a name="NAME">Name</a></h2>
cups-config - get cups api, compiler, directory, and link information.
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cups-config
-</b>--api-version
+<b>cups-config</b>
+<i>--api-version</i>
<br>
-<b>cups-config
-</b>--build
+<b>cups-config</b>
+<i>--build</i>
<br>
-<b>cups-config
-</b>--cflags
+<b>cups-config</b>
+<i>--cflags</i>
<br>
-<b>cups-config
-</b>--datadir
+<b>cups-config</b>
+<i>--datadir</i>
<br>
-<b>cups-config
-</b>--help
+<b>cups-config</b>
+<i>--help</i>
<br>
-<b>cups-config
-</b>--ldflags
+<b>cups-config</b>
+<i>--ldflags</i>
<br>
-<b>cups-config
-</b>[
-<i>--image
-</i>] [
-<i>--static
-</i>] --libs
+<b>cups-config</b>
+[
+<i>--image</i>
+] [
+<i>--static</i>
+]
+<i>--libs</i>
<br>
-<b>cups-config
-</b>--serverbin
+<b>cups-config</b>
+<i>--serverbin</i>
<br>
-<b>cups-config
-</b>--serverroot
+<b>cups-config</b>
+<i>--serverroot</i>
<br>
-<b>cups-config
-</b>--version
+<b>cups-config</b>
+<i>--version</i>
<br>
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<b>cups-config</b> is the CUPS program configuration utility. It should be
-used by application developers to determine the necessary command-line
-options for the compiler and linker, as well as determining installation
-directories for filters, configuration files, and drivers.
+The <b>cups-config</b> command allows application developers to determine the necessary command-line options for the compiler and linker, as well as the installation directories for filters, configuration files, and drivers.
+All values are reported to the standard output.
<h2 class="title"><a name="OPTIONS">Options</a></h2>
-<dl>
-<dt>--api-version
-</dt>
-<dd></dd>
-<dd>Displays the current API version (major.minor).
-</dd>
-<dt>--build
-</dt>
-<dd></dd>
-<dd>Displays a system-specific build number.
-</dd>
-<dt>--cflags
-</dt>
-<dd></dd>
-<dd>Displays the necessary compiler options.
-</dd>
-<dt>--datadir
-</dt>
-<dd></dd>
-<dd>Displays the default CUPS data directory.
-</dd>
-<dt>--help
-</dt>
-<dd></dd>
-<dd>Displays the program usage message.
-</dd>
-<dt>--image
-</dt>
-<dd></dd>
-<dd>When used with <i>--libs</i>, adds the CUPS imaging library to the
-list of displayed libraries.
-</dd>
-<dt>--ldflags
-</dt>
-<dd></dd>
-<dd>Displays the necessary linker options.
-</dd>
-<dt>--libs
-</dt>
-<dd></dd>
-<dd>Displays the necessary librarys to link to.
-</dd>
-<dt>--serverbin
-</dt>
-<dd></dd>
-<dd>Displays the default CUPS binary directory,
-where filters and backends are stored.
-</dd>
-<dt>--serverroot
-</dt>
-<dd></dd>
-<dd>Displays the default CUPS configuration file directory.
-</dd>
-<dt>--static
-</dt>
-<dd></dd>
-<dd>When used with <i>--libs</i>, shows the static libraries instead
-of the default (shared) libraries.
-</dd>
-<dt>--version
-</dt>
-<dd></dd>
-<dd>Displays the full version number of the CUPS installation
-(major.minor.patch).
-</dd>
+The <b>cups-config</b> command accepts the following command-line options:
+<dl class="man">
+<dt><b>--api-version</b>
+<dd style="margin-left: 5.0em">Reports the current API version (major.minor).
+<dt><b>--build</b>
+<dd style="margin-left: 5.0em">Reports a system-specific build number.
+<dt><b>--cflags</b>
+<dd style="margin-left: 5.0em">Reports the necessary compiler options.
+<dt><b>--datadir</b>
+<dd style="margin-left: 5.0em">Reports the default CUPS data directory.
+<dt><b>--help</b>
+<dd style="margin-left: 5.0em">Reports the program usage message.
+<dt><b>--image</b>
+<dd style="margin-left: 5.0em">When used with <i>--libs</i>, adds the CUPS imaging library to the
+list of libraries.
+<dt><b>--ldflags</b>
+<dd style="margin-left: 5.0em">Reports the necessary linker options.
+<dt><b>--libs</b>
+<dd style="margin-left: 5.0em">Reports the necessary libraries to link to.
+<dt><b>--serverbin</b>
+<dd style="margin-left: 5.0em">Reports the default CUPS binary directory, where filters and backends are stored.
+<dt><b>--serverroot</b>
+<dd style="margin-left: 5.0em">Reports the default CUPS configuration file directory.
+<dt><b>--static</b>
+<dd style="margin-left: 5.0em">When used with <i>--libs</i>, reports the static libraries instead of the default (shared) libraries.
+<dt><b>--version</b>
+<dd style="margin-left: 5.0em">Reports the full version number of the CUPS installation (major.minor.patch).
</dl>
+<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+Show the currently installed version of CUPS:
+<pre class="man">
+
+ cups-config --version
+
+</pre>
+Compile a simple one-file CUPS filter:
+<pre class="man">
+
+ cc `cups-config --cflags --ldflags` -o filter filter.c \
+ `cups-config --libs`
+</pre>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-cups-deviced.html b/doc/help/man-cups-deviced.html
deleted file mode 100644
index df2525085..000000000
--- a/doc/help/man-cups-deviced.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<!-- SECTION: Man Pages -->
-<head>
- <link rel="stylesheet" type="text/css" href="../cups-printable.css">
- <title>cups-deviced(8)</title>
-</head>
-<body>
-<h1 class="title">cups-deviced(8)</h1>
-<h2 class="title"><a name="NAME">Name</a></h2>
-cups-deviced - cups device daemon
-<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cups-deviced
-</b><i>request-id limit user-id options
-</i><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cups-deviced</i> polls the backends in
-<i>/usr/lib/cups/backend</i> or <i>/usr/libexec/cups/backend</i> (OS X) for a
-list of available devices. It is run by <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a> in response to a
-<i>CUPS-Get-Devices</i> request. The output format is an IPP
-response message. The <i>request-id</i> argument is the request ID
-from the original IPP request, typically 1. The <i>limit</i>
-argument is the limit value from the original IPP request - 0
-means no limit. The <i>user-id</i> argument is the
-requesting-user-name value from the original IPP request.
-Finally, the <i>options</i> argument is a space-delimited list of
-attributes ("name=value name=value ...") that were passed in
-with the request. Currently <i>cups-deviced</i> looks for the
-<i>requested-attributes</i> attribute and tailors the output
-accordingly.
-<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-backend(7), cupsd(8), cupsd.conf(5),
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
-<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
-
-</body>
-</html>
diff --git a/doc/help/man-cups-driverd.html b/doc/help/man-cups-driverd.html
deleted file mode 100644
index 0fc9183a6..000000000
--- a/doc/help/man-cups-driverd.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<!-- SECTION: Man Pages -->
-<head>
- <link rel="stylesheet" type="text/css" href="../cups-printable.css">
- <title>cups-driverd(8)</title>
-</head>
-<body>
-<h1 class="title">cups-driverd(8)</h1>
-<h2 class="title"><a name="NAME">Name</a></h2>
-cups-driverd - cups driver daemon
-<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cups-driverd
-</b>cat
-<i>ppd-name
-</i><br>
-<b>cups-driverd
-</b>list
-<i>request_id limit options
-</i><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cups-driverd</i> shows or lists PPD files. It is run in
-response to CUPS-Add-Modify-Printer or CUPS-Get-Devices requests.
-The first form ("cups-driverd cat ppd-name") writes the named PPD
-file to stdout. The output format is an uncompressed PPD file.
-<p>The second form lists the available manufacturers or PPD files to
-stdout as indicated by the <i>options</i> argument. The output
-format is an IPP response message. The <i>request_id</i> argument
-is the request ID from the original IPP request, typically 1. The
-<i>limit</i> argument is the limit value from the original IPP
-request - 0 means no limit. Finally, the <i>options</i> argument
-is a space-delimited list of attributes ("name=value name=value
-...") that were passed in with the request. Currently
-<i>cups-driverd</i> looks for the <i>ppd-make</i> and
-<i>requested-attributes</i> attributes and tailors the output
-accordingly.
-<h2 class="title"><a name="DRIVERS">Drivers</a></h2>
-Drivers can be static PPD files under the
-<i>/usr/share/cups/model</i> directory or programs under the
-<i>/usr/lib/cups/driver</i> or <i>/usr/libexec/cups/driver</i> (OS X) directories.
-Static PPD files must conform to the Adobe PPD File Format Specification version
-4.3 and may be compressed using the <i>gzip(1)</i> program. Driver
-programs must implement the command-line interface shown in the
-next section.
-<h3><a name="DRIVER_PROGRAMS">Driver Programs</a></h3>
-Driver programs provide a interface to dynamically-generated PPD
-files. The following arguments are currently defined:
-<dl>
-<dt>drivername list
-</dt>
-<dd></dd>
-<dd>Lists the supported PPD files to stdout.
-</dd>
-<dt>drivername cat ppdname
-</dt>
-<dd></dd>
-<dd>Writes the named PPD file to stdout.
-</dd>
-</dl>
-<p>Driver programs MUST NOT query hardware or make other long-term operations that
-would delay the return of a driver list. See the NOTES section below for
-specific recommendations.
-<h3><a name="LISTING_FILES_(drivername_list)">Listing Files (drivername list)</a></h3>
-When run with the single argument "list", the program must list
-the available PPD files it can generate to stdout using the
-following format:
-<pre>
- "drivername:ppdname" language "make" "make and model"
- "drivername:ppdname" language "make" "make and model" "1284 device id"
- "drivername:ppdname" language "make" "make and model" "1284 device id" "(PPD product)"
- "drivername:ppdname" language "make" "make and model" "1284 device id" "(PPD product)" "PostScript version"
- "drivername:ppdname" language "make" "make and model" "1284 device id" "(PPD product)" "PostScript version" "type"
-</pre>
-<p><i>Drivername</i> is the name of the driver program. <i>Ppdname</i>
-is the name used to select the given driver. <i>Language</i> is
-the locale associated with the default language of the PPD file,
-typically "en". <i>Make</i> is the Manufacturer name from the PPD
-file. <i>Make and model</i> is the NickName name from the PPD
-file. <i>1284 device id</i> is the 1284DeviceId from the PPD file,
-if any. <i>(PPD product)</i> is the Product string as it would appear in the PPD
-file or from a PostScript query. <i>PostScript version</i> is the PSVersion
-string as it would appear in the PPD file or from a PostScript query. <i>Type</i>
-is "postscript" for PostScript printers, "pdf" for PDF printers, "raster" for
-raster printers, or "fax" for facsimile devices.
-<h3><a name="WRITING_FILES_(drivername_cat_ppdname)">Writing Files (drivername cat ppdname)</a></h3>
-When the driver program is run with the "cat ppdname" arguments,
-it must write the named PPD file to stdout, uncompressed. If the
-named PPD file does not exist, the driver program must not write
-any output to stdout and report the error to stderr instead.
-<h3><a name="DRIVER_ERROR_MESSAGES">Driver Error Messages</a></h3>
-Error messages can be relayed back to <i>cupsd</i> by writing them
-to stderr. The following prefixes are recognized:
-<dl>
-<dt>DEBUG: [drivername]
-</dt>
-<dd></dd>
-<dd>Debugging messages
-</dd>
-<dt>ERROR: [drivername]
-</dt>
-<dd></dd>
-<dd>Error messages
-</dd>
-<dt>INFO: [drivername]
-</dt>
-<dd></dd>
-<dd>Informational messages
-</dd>
-</dl>
-<h2 class="title"><a name="NOTES">Notes</a></h2>
-Due to performance considerations, driver programs have been officially
-deprecated and should not be used for new development. Currently only the
-CUPS web interface and <a href='man-lpinfo.html?TOPIC=Man+Pages'>lpinfo(8)</a> command will request lists from all
-driver programs.
-<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-cupsd(8), cupsd.conf(5), cupstestppd(1), lpinfo(8),
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
-<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
-
-</body>
-</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,168 +10,151 @@
<h2 class="title"><a name="NAME">Name</a></h2>
cups-files.conf - file and directory configuration file for cups
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <i>cups-files.conf</i> file configures the files and directories used by the
-CUPS scheduler, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>. It is normally located in the
-<i>/etc/cups</i> directory.
-<p>Each line in the file can be a configuration directive, a blank line,
-or a comment. Comment lines start with the # character.
-<h2 class="title"><a name="DIRECTIVES">Directives</a></h2>
-The following directives are understood by <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>. Consult the
-on-line help for detailed descriptions:
-<dl>
-<dt>AccessLog filename
-</dt>
-<dd></dd>
-<dt>AccessLog syslog
-</dt>
-<dd></dd>
-<dd>Defines the access log filename.
-</dd>
-<dt>ConfigFilePerm mode
-</dt>
-<dd></dd>
-<dd>Specifies the permissions for all configuration files that the scheduler
-writes.
-</dd>
-<dt>DataDir path
-</dt>
-<dd></dd>
-<dd>Specified the directory where data files can be found.
-</dd>
-<dt>DocumentRoot directory
-</dt>
-<dd></dd>
-<dd>Specifies the root directory for the internal web server documents.
-</dd>
-<dt>ErrorLog filename
-</dt>
-<dd></dd>
-<dt>ErrorLog syslog
-</dt>
-<dd></dd>
-<dd>Specifies the error log filename.
-</dd>
-<dt>FatalErrors none
-</dt>
-<dd></dd>
-<dt>FatalErrors all -kind [... -kind]
-</dt>
-<dd></dd>
-<dt>FatalErrors kind [... kind]
-</dt>
-<dd></dd>
-<dd>Specifies which errors are fatal, causing the scheduler to exit. "Kind" is
-"browse", "config", "listen", "log", or "permissions".
-</dd>
-<dt>FileDevice Yes
-</dt>
-<dd></dd>
-<dt>FileDevice No
-</dt>
-<dd></dd>
-<dd>Specifies whether the file pseudo-device can be used for new
-printer queues.
-</dd>
-<dt>FontPath directory[:directory:...]
-</dt>
-<dd></dd>
-<dd>Specifies the search path for fonts.
-</dd>
-<dt>Group group-name-or-number
-</dt>
-<dd></dd>
-<dd>Specifies the group name or ID that will be used when executing
-external programs.
-</dd>
-<dt>LogFilePerm mode
-</dt>
-<dd></dd>
-<dd>Specifies the permissions for all log files that the scheduler writes.
-</dd>
-<dt>PageLog filename
-</dt>
-<dd></dd>
-<dt>PageLog syslog
-</dt>
-<dd></dd>
-<dd>Specifies the page log filename.
-</dd>
-<dt>Printcap
-</dt>
-<dd></dd>
-<dt>Printcap filename
-</dt>
-<dd></dd>
-<dd>Specifies the filename for a printcap file that is updated
-automatically with a list of available printers (needed for
-legacy applications); specifying Printcap with no filename
-disables printcap generation.
-</dd>
-<dt>RemoteRoot user-name
-</dt>
-<dd></dd>
-<dd>Specifies the username that is associated with unauthenticated root
-accesses.
-</dd>
-<dt>RequestRoot directory
-</dt>
-<dd></dd>
-<dd>Specifies the directory to store print jobs and other HTTP request
-data.
-</dd>
-<dt>ServerBin directory
-</dt>
-<dd></dd>
-<dd>Specifies the directory where backends, CGIs, daemons, and filters may
-be found.
-</dd>
-<dt>ServerCertificate filename
-</dt>
-<dd></dd>
-<dd>Specifies the encryption certificate to use.
-</dd>
-<dt>ServerKey filename
-</dt>
-<dd></dd>
-<dd>Specifies the encryption key to use.
-</dd>
-<dt>ServerRoot directory
-</dt>
-<dd></dd>
-<dd>Specifies the directory where the server configuration files can be found.
-</dd>
-<dt>SyncOnClose Yes
-</dt>
-<dd></dd>
-<dt>SyncOnClose No
-</dt>
-<dd>Specifies whether the scheduler calls <i>fsync(2)</i> after writing configuration
-or state files. The default is No.
-</dd>
-<dt>SystemGroup group-name [group-name ...]
-</dt>
-<dd></dd>
-<dd>Specifies the group(s) to use for System class authentication.
-</dd>
-<dt>TempDir directory
-</dt>
-<dd></dd>
-<dd>Specifies the directory where temporary files are stored.
-</dd>
-<dt>User user-name
-</dt>
-<dd></dd>
-<dd>Specifies the user name or ID that is used when running external programs.
-</dd>
+The <b>cups-files.conf</b> file configures the files and directories used by the CUPS scheduler,
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8).</a>
+It is normally located in the <i>/etc/cups</i> directory.
+<p>Each line in the file can be a configuration directive, a blank line, or a comment.
+Configuration directives typically consist of a name and zero or more values separated by whitespace.
+The configuration directive name and values are case-insensitive.
+Comment lines start with the # character.
+<h3><a name="DIRECTIVES">Directives</a></h3>
+The following directives are understood by
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8):</a>
+<dl class="man">
+<dt><b>AccessLog</b>
+<dd style="margin-left: 5.0em"><dt><b>AccessLog </b><i>filename</i>
+<dd style="margin-left: 5.0em"><dt><b>AccessLog syslog</b>
+<dd style="margin-left: 5.0em">Defines the access log filename.
+Specifying a blank filename disables access log generation.
+The value "syslog" causes log entries to be sent to the system log daemon.
+The server name may be included in filenames using the string "%s", for example:
+<pre class="man">
+
+ AccessLog /var/log/cups/%s-access_log
+
+</pre>
+The default is "/var/log/cups/access_log".
+<dt><b>ConfigFilePerm </b><i>mode</i>
+<dd style="margin-left: 5.0em">Specifies the permissions for all configuration files that the scheduler writes.
+The default is "0644" on OS X and "0640" on all other operating systems.
+</dl>
+<p><b>Note:</b> The permissions for the <i>printers.conf</i> file are currently masked to only allow access from the scheduler user (typically root).
+This is done because printer device URIs sometimes contain sensitive authentication information that should not be generally known on the system.
+There is no way to disable this security feature.
+<dl class="man">
+<dt><b>DataDir </b><i>path</i>
+<dd style="margin-left: 5.0em">Specifies the directory where data files can be found.
+The default is usually "/usr/share/cups".
+<dt><b>DocumentRoot </b><i>directory</i>
+<dd style="margin-left: 5.0em">Specifies the root directory for the CUPS web interface content.
+The default is usually "/usr/share/doc/cups".
+<dt><b>ErrorLog</b>
+<dd style="margin-left: 5.0em"><dt><b>ErrorLog </b><i>filename</i>
+<dd style="margin-left: 5.0em"><dt><b>ErrorLog syslog</b>
+<dd style="margin-left: 5.0em">Defines the error log filename.
+Specifying a blank filename disables error log generation.
+The value "syslog" causes log entries to be sent to the system log daemon.
+The server name may be included in filenames using the string "%s", for example:
+<pre class="man">
+
+ ErrorLog /var/log/cups/%s-error_log
+
+</pre>
+The default is "/var/log/cups/error_log".
+<dt><b>FatalErrors none</b>
+<dd style="margin-left: 5.0em"><dt><b>FatalErrors all </b><i>-kind </i>[ ... <i>-kind </i>]
+<dd style="margin-left: 5.0em"><dt><b>FatalErrors </b><i>kind </i>[ ... <i>kind </i>]
+<dd style="margin-left: 5.0em">Specifies which errors are fatal, causing the scheduler to exit.
+The default is "config".
+The <i>kind</i> strings are:
+<div style="margin-left: 0.0em;">
+<dl class="man">
+<dt><b>none</b>
+<dd style="margin-left: 5.0em">No errors are fatal.
+<dt><b>all</b>
+<dd style="margin-left: 5.0em">All of the errors below are fatal.
+<dt><b>browse</b>
+<dd style="margin-left: 5.0em">Browsing initialization errors are fatal, for example failed connections to the DNS-SD daemon.
+<dt><b>config</b>
+<dd style="margin-left: 5.0em">Configuration file syntax errors are fatal.
+<dt><b>listen</b>
+<dd style="margin-left: 5.0em">Listen or Port errors are fatal, except for IPv6 failures on the loopback or "any" addresses.
+<dt><b>log</b>
+<dd style="margin-left: 5.0em">Log file creation or write errors are fatal.
+<dt><b>permissions</b>
+<dd style="margin-left: 5.0em">Bad startup file permissions are fatal, for example shared TLS certificate and key files with world-read permissions.
+</div>
+<dt><b>FileDevice Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>FileDevice No</b>
+<dd style="margin-left: 5.0em">Specifies whether the file pseudo-device can be used for new printer queues.
+The URI "file:///dev/null" is always allowed.
+<dt><b>Group </b><i>group-name-or-number</i>
+<dd style="margin-left: 5.0em">Specifies the group name or ID that will be used when executing external programs.
+The default group is operating system specific but is usually "lp" or "nobody".
+<dt><b>LogFilePerm </b><i>mode</i>
+<dd style="margin-left: 5.0em">Specifies the permissions of all log files that the scheduler writes.
+The default is "0644".
+<dt><b>PageLog </b>[ <i>filename</i> ]
+<dd style="margin-left: 5.0em"><dt><b>PageLog syslog</b>
+<dd style="margin-left: 5.0em">Defines the page log filename.
+The value "syslog" causes log entries to be sent to the system log daemon.
+Specifying a blank filename disables page log generation.
+The server name may be included in filenames using the string "%s", for example:
+<pre class="man">
+
+ PageLog /var/log/cups/%s-page_log
+
+</pre>
+The default is "/var/log/cups/page_log".
+<dt><b>RemoteRoot </b><i>username</i>
+<dd style="margin-left: 5.0em">Specifies the username that is associated with unauthenticated accesses by clients claiming to be the root user.
+The default is "remroot".
+<dt><b>RequestRoot </b><i>directory</i>
+<dd style="margin-left: 5.0em">Specifies the directory that contains print jobs and other HTTP request data.
+The default is "/var/spool/cups".
+<dt><b>Sandboxing off</b>
+<dd style="margin-left: 5.0em"><dt><b>Sandboxing relaxed</b>
+<dd style="margin-left: 5.0em"><dt><b>Sandboxing strict</b>
+<dd style="margin-left: 5.0em">Specifies the level of security sandboxing that is applied to print filters, backends, and other child processes of the scheduler.
+The default is "strict".
+This directive is currently only used/supported on OS X.
+<dt><b>ServerBin </b><i>directory</i>
+<dd style="margin-left: 5.0em">Specifies the directory containing the backends, CGI programs, filters, helper programs, notifiers, and port monitors.
+The default is "/usr/lib/cups" or "/usr/libexec/cups" depending on the platform.
+<dt><b>ServerKeychain </b><i>path</i>
+<dd style="margin-left: 5.0em">Specifies the location of TLS certificates and private keys.
+The default is "/Library/Keychains/System.keychain" on OS X and "/etc/cups/ssl" on all other operating systems.
+<dt><b>ServerRoot </b><i>directory</i>
+<dd style="margin-left: 5.0em">Specifies the directory containing the server configuration files.
+The default is "/etc/cups".
+<dt><b>SyncOnClose Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>SyncOnClose No</b>
+<dd style="margin-left: 5.0em">Specifies whether the scheduler calls
+<b>fsync</b>(2)
+after writing configuration or state files.
+The default is "No".
+<dt><b>SystemGroup </b><i>group-name </i>[ ... <i>group-name</i> ]
+<dd style="margin-left: 5.0em">Specifies the group(s) to use for <i>@SYSTEM</i> group authentication.
+The default contains "admin", "lpadmin", "root", "sys", and/or "system".
+<dt><b>TempDir </b><i>directory</i>
+<dd style="margin-left: 5.0em">Specifies the directory where temporary files are stored.
+The default is "/var/spool/cups/tmp".
+<dt><b>User </b><i>username</i>
+<dd style="margin-left: 5.0em">Specifies the user name or ID that is used when running external programs.
+The default is "lp".
</dl>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-classes.conf.html?TOPIC=Man+Pages'>classes.conf(5)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>, <a href='man-mime.convs.html?TOPIC=Man+Pages'>mime.convs(5)</a>,
-<a href='man-mime.types.html?TOPIC=Man+Pages'>mime.types(5)</a>, <a href='man-printers.conf.html?TOPIC=Man+Pages'>printers.conf(5)</a>,
-<a href='man-subscriptions.conf.html?TOPIC=Man+Pages'>subscriptions.conf(5)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-classes.conf.html?TOPIC=Man+Pages"><b>classes.conf</b>(5),</a>
+<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-mime.convs.html?TOPIC=Man+Pages"><b>mime.convs</b>(5),</a>
+<a href="man-mime.types.html?TOPIC=Man+Pages"><b>mime.types</b>(5),</a>
+<a href="man-printers.conf.html?TOPIC=Man+Pages"><b>printers.conf</b>(5),</a>
+<a href="man-subscriptions.conf.html?TOPIC=Man+Pages"><b>subscriptions.conf</b>(5),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,108 +10,105 @@
<h2 class="title"><a name="NAME">Name</a></h2>
cups-lpd - receive print jobs and report printer status to lpd clients
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cups-lpd
-</b>[ -h
-<i>hostname[:port]
-</i>] [ -n ] [ -o
-<i>option=value
-</i>]
+<b>cups-lpd</b>
+[
+<b>-h </b><i>hostname</i>[<b>:</b><i>port</i>]
+] [
+<b>-n</b>
+] [
+<b>-o</b>
+<i>option=value</i>
+]
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cups-lpd</i> is the CUPS Line Printer Daemon ("LPD")
-mini-server that supports legacy client systems that use the LPD
-protocol. <i>cups-lpd</i> does not act as a standalone network
-daemon but instead operates using the Internet "super-server"
-<i>inetd(8)</i> or <i>xinetd(8)</i>. If you are using <i>inetd</i>,
+<b>cups-lpd</b>
+is the CUPS Line Printer Daemon ("LPD") mini-server that supports legacy client systems that use the LPD protocol.
+<b>cups-lpd</b>
+does not act as a standalone network daemon but instead operates using any of the Internet "super-servers" such as
+<b>inetd</b>(8),
+<b>launchd</b>(8),
+and
+<b>systemd</b>(8).
+<h2 class="title"><a name="OPTIONS">Options</a></h2>
+<dl class="man">
+<dt><b>-h </b><i>hostname</i>[<b>:</b><i>port</i>]
+<dd style="margin-left: 5.0em">Sets the CUPS server (and port) to use.
+<dt><b>-n</b>
+<dd style="margin-left: 5.0em">Disables reverse address lookups; normally
+<b>cups-lpd</b>
+will try to discover the hostname of the client via a reverse DNS lookup.
+<dt><b>-o </b><i>name=value</i>
+<dd style="margin-left: 5.0em">Inserts options for all print queues. Most often this is used to disable the "l" filter so that remote print jobs are filtered as needed for printing; the
+<b>inetd</b>(8)
+example below sets the "document-format" option to "application/octet-stream" which forces autodetection of the print file format.
+</dl>
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+<b>cups-lpd</b>
+does not enforce the restricted source port number specified in RFC 1179, as using restricted ports does not prevent users from submitting print jobs.
+While this behavior is different than standard Berkeley LPD implementations, it should not affect normal client operations.
+<p>The output of the status requests follows RFC 2569, Mapping between LPD and IPP Protocols. Since many LPD implementations stray from this definition, remote status reporting to LPD clients may be unreliable.
+<h2 class="title"><a name="ERRORS">Errors</a></h2>
+Errors are sent to the system log.
+<h2 class="title"><a name="FILES">Files</a></h2>
+<pre class="man">
+<i>/etc/inetd.conf</i>
+<i>/etc/xinetd.d/cups-lpd</i>
+<i>/System/Library/LaunchDaemons/org.cups.cups-lpd.plist</i>
+</pre>
+<h2 class="title"><a name="NOTES">Notes</a></h2>
+<h3><a name="PERFORMANCE">Performance</a></h3>
+<b>cups-lpd</b>
+performs well with small numbers of clients and printers.
+However, since a new process is created for each connection and since each process must query the printing system before each job submission, it does not scale to larger configurations.
+We highly recommend that large configurations use the native IPP support provided by CUPS instead.
+<h3><a name="SECURITY">Security</a></h3>
+<b>cups-lpd</b>
+currently does not perform any access control based on the settings in <i>cupsd.conf(5)</i> or in the <i>hosts.allow(5)</i> or <i>hosts.deny(5)</i> files used by TCP wrappers.
+Therefore, running
+<b>cups-lpd</b>
+on your server will allow any computer on your network (and perhaps the entire
+Internet) to print to your server.
+<p>While
+<b>xinetd</b>(8)
+has built-in access control support, you should use the TCP wrappers package with
+<b>inetd</b>(8)
+to limit access to only those computers that should be able to print through your server.
+<p><b>cups-lpd</b>
+is not enabled by the standard CUPS distribution.
+Please consult with your operating system vendor to determine whether it is enabled by default on your system.
+<h2 class="title"><a name="EXAMPLE">Example</a></h2>
+If you are using
+<b>inetd</b>(8),
add the following line to the <i>inetd.conf</i> file to enable the
-<i>cups-lpd</i> mini-server:
-<br>
-<pre>
+<b>cups-lpd</b>
+mini-server:
+<pre class="man">
printer stream tcp nowait lp /usr/lib/cups/daemon/cups-lpd cups-lpd \
-o document-format=application/octet-stream
-</pre>
-<p><p><b>Note:</b> If you are using Solaris 10 or higher, you must run
-the <i>inetdconv(1m)</i> program to register the changes to the
-inetd.conf file.
-<p>If you are using the newer <i>xinetd(8)</i> daemon, create a file
-named <i>/etc/xinetd.d/cups</i> containing the following lines:
-<br>
-<pre>
- service printer
- {
- socket_type = stream
- protocol = tcp
- wait = no
- user = lp
- group = sys
- passenv =
- server = /usr/lib/cups/daemon/cups-lpd
- server_args = -o document-format=application/octet-stream
- }
</pre>
-<h2 class="title"><a name="OPTIONS">Options</a></h2>
-<dl>
-<dt>-h hostname[:port]
-</dt>
-<dd></dd>
-<dd>Sets the CUPS server (and port) to use.
-</dd>
-<dt>-n
-</dt>
-<dd></dd>
-<dd>Disables reverse address lookups; normally <i>cups-lpd</i> will
-try to discover the hostname of the client via a reverse DNS
-lookup.
-</dd>
-<dt>-o name=value
-</dt>
-<dd></dd>
-<dd>Inserts options for all print queues. Most often this is used to
-disable the "l" filter so that remote print jobs are filtered as
-needed for printing; the examples in the previous section set the
-"document-format" option to "application/octet-stream" which
-forces autodetection of the print file format.
-</dd>
-</dl>
-<h2 class="title"><a name="PERFORMANCE">Performance</a></h2>
-<i>cups-lpd</i> performs well with small numbers of clients and
-printers. However, since a new process is created for each
-connection and since each process must query the printing system
-before each job submission, it does not scale to larger
-configurations. We highly recommend that large configurations
-use the native IPP support provided by CUPS instead.
-<h2 class="title"><a name="SECURITY">Security</a></h2>
-<i>cups-lpd</i> currently does not perform any access control
-based on the settings in <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a> or in the
-<i>hosts.allow(5)</i> or <i>hosts.deny(5)</i> files used by TCP
-wrappers. Therefore, running <i>cups-lpd</i> on your server will
-allow any computer on your network (and perhaps the entire
-Internet) to print to your server.
-<p>While <i>xinetd</i> has built-in access control support, you
-should use the TCP wrappers package with <i>inetd</i> to limit
-access to only those computers that should be able to print
-through your server.
-<p><i>cups-lpd</i> is not enabled by the standard CUPS distribution.
-Please consult with your operating system vendor to determine
-whether it is enabled on your system.
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-<i>cups-lpd</i> does not enforce the restricted source port
-number specified in RFC 1179, as using restricted ports does not
-prevent users from submitting print jobs. While this behavior is
-different than standard Berkeley LPD implementations, it should
-not affect normal client operations.
-<p>The output of the status requests follows RFC 2569, Mapping
-between LPD and IPP Protocols. Since many LPD implementations
-stray from this definition, remote status reporting to LPD
-clients may be unreliable.
+<p><i>Note:</i> If you are using Solaris 10 or higher, you must run the
+<b>inetdconv</b>(1m)
+program to register the changes to the <i>inetd.conf</i> file.
+<p>CUPS includes configuration files for
+<b>launchd</b>(8),
+<b>systemd</b>(8),
+and
+<b>xinetd(8).</b>
+Simply enable the
+<b>cups-lpd</b>
+service using the corresponding control program.
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<i>cups(1)</i>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <i>inetconv(1m)</i>,
-<i>inetd(8)</i>, <i>xinetd(8)</i>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<b>inetconv</b>(1m),
+<b>inetd</b>(8),
+<b>launchd</b>(8),
+<b>xinetd</b>(8),
+CUPS Online Help (<a href="http://localhost:631/help)">http://localhost:631/help)</a>,
+RFC 2569
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -7,76 +7,49 @@
</head>
<body>
<h1 class="title">snmp.conf(5)</h1>
-
<h2 class="title"><a name="NAME">Name</a></h2>
snmp.conf - snmp configuration file for cups
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <i>snmp.conf</i> file configures how the standard CUPS network backends
-(http, https, ipp, ipps, lpd, snmp, and socket) access printer information using
-SNMPv1 and is normally located in the <i>/etc/cups</i> directory. Each line in
-the file can be a configuration directive, a blank line, or a comment. Comment
-lines start with the # character.
-<p>The Community and DebugLevel directives are used by all backends. The remainder
-apply only to the SNMP backend (<a href='man-cups-snmp.html?TOPIC=Man+Pages'>cups-snmp(8)</a>).
+The
+<b>snmp.conf</b>
+file configures how the standard CUPS network backends (http, https, ipp, ipps, lpd, snmp, and socket) access printer information using SNMPv1 and is normally located in the <i>/etc/cups</i> directory.
+Each line in the file can be a configuration directive, a blank line, or a comment. Comment lines start with the # character.
+<p>The Community and DebugLevel directives are used by all backends. The remainder apply only to the SNMP backend -
+<a href="man-cups-snmp.html?TOPIC=Man+Pages"><b>cups-snmp</b>(8).</a>
<h2 class="title"><a name="DIRECTIVES">Directives</a></h2>
-The following directives are understood by the CUPS network backends. Consult
-the on-line help for detailed descriptions:
-<dl>
-<dt>Address @IF(<i>name</i>)
-</dt>
-<dd></dd>
-<dt>Address @LOCAL
-</dt>
-<dd></dd>
-<dt>Address <i>address</i>
-</dt>
-<dd></dd>
-<dd>Sends SNMP broadcast queries to the specified address(es). There is no default
-for the broadcast address.
-</dd>
-<dt>Community <i>name</i>
-</dt>
-<dd></dd>
-<dd>Specifies the community name to use. Only a single community name may be
-specified. The default community name is "public".
-</dd>
-<dt>DebugLevel number
-</dt>
-<dd></dd>
-<dd>Specifies the logging level from 0 (none) to 3 (everything). Typically only used
-for debugging (thus the name). The default debug level is 0.
-</dd>
-<dt>DeviceURI "regular expression" device-uri [... device-uri]
-</dt>
-<dd></dd>
-<dd>Specifies one or more device URIs that should be used for a given make and model
-string. The regular expression is used to match the detected make and model, and
-the device URI strings must be of the form "scheme://%s[:port]/[path]", where
-"%s" represents the detected address or hostname. There are no default device
-URI matching rules.
-</dd>
-<dt>HostNameLookups on
-</dt>
-<dd></dd>
-<dt>HostNameLookups off
-</dt>
-<dd></dd>
-<dd>Specifies whether the addresses of printers should be converted to hostnames or
-left as numeric IP addresses. The default is "off".
-</dd>
-<dt>MaxRunTime <i>seconds</i>
-</dt>
-<dd></dd>
-<dd>Specifies the maximum number of seconds that the SNMP backend will scan the
-network for printers. The default is 120 seconds (2 minutes).
-</dd>
+The following directives are understood by the CUPS network backends:
+<dl class="man">
+<dt><b>Address @IF(</b><i>name</i><b>)</b>
+<dd style="margin-left: 5.0em"><dt><b>Address @LOCAL</b>
+<dd style="margin-left: 5.0em"><dt><b>Address </b><i>address</i>
+<dd style="margin-left: 5.0em">Sends SNMP broadcast queries (for discovery) to the specified address(es).
+There is no default for the broadcast address.
+<dt><b>Community </b><i>name</i>
+<dd style="margin-left: 5.0em">Specifies the community name to use.
+Only a single community name may be specified.
+The default community name is "public".
+<dt><b>DebugLevel </b><i>number</i>
+<dd style="margin-left: 5.0em">Specifies the logging level from 0 (none) to 3 (everything).
+Typically only used for debugging (thus the name).
+The default debug level is 0.
+<dt><b>DeviceURI "</b><i>regular expression</i><b>" </b><i>device-uri </i>[... <i>device-uri</i>]
+<dd style="margin-left: 5.0em">Specifies one or more device URIs that should be used for a given make and model string.
+The regular expression is used to match the detected make and model, and the device URI strings must be of the form "scheme://%s[:port]/[path]", where "%s" represents the detected address or hostname.
+There are no default device URI matching rules.
+<dt><b>HostNameLookups on</b>
+<dd style="margin-left: 5.0em"><dt><b>HostNameLookups off</b>
+<dd style="margin-left: 5.0em">Specifies whether the addresses of printers should be converted to hostnames or left as numeric IP addresses.
+The default is "off".
+<dt><b>MaxRunTime </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies the maximum number of seconds that the SNMP backend will scan the
+network for printers.
+The default is 120 seconds (2 minutes).
</dl>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-cups-snmp(8),
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cups-snmp.html?TOPIC=Man+Pages"><b>cups-snmp</b>(8),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,46 +10,45 @@
<h2 class="title"><a name="NAME">Name</a></h2>
snmp - cups snmp backend
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>/usr/lib/cups/backend/snmp
-</b><i>ip-address-or-hostname
-</i><br>
-<b>/usr/libexec/cups/backend/snmp
-</b><i>ip-address-or-hostname
-</i><br>
-<b>lpinfo -v --include-schemes snmp
-</b><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The CUPS SNMP backend provides legacy discovery and identification of network
-printers using SNMPv1. When used for discovery through the scheduler, the
-backend will list all printers that respond to a broadcast SNMPv1 query with the
-"public" community name. Additional queries are then sent to printers that
-respond in order to determine the correct device URI, make and model, and other
-information needed for printing.
-<p>In the first form, the SNMP backend is run directly by the user to look up the
-device URI and other information when you have an IP address or hostname. This
-can be used for programs that need to configure print queues where the user has
-supplied an address but nothing else.
-<p>In the second form, the SNMP backend is run indirectly using the <a href='man-lpinfo.html?TOPIC=Man+Pages'>lpinfo(8)</a>
-command. The output provides all printers detected via SNMP on the configured
-broadcast addresses. <b>Note</b>: no broadcast addresses are configured by
-default.
-<h2 class="title"><a name="MIBS">Mibs</a></h2>
-The CUPS SNMP backend uses the information from the Host, Printer, and Port
-Monitor MIBs along with some vendor private MIBs and intelligent port probes to
-determine the correct device URI and make and model for each printer.
-<h2 class="title"><a name="CONFIGURATION">Configuration</a></h2>
-The SNMP backend reads the /etc/cups/snmp.conf configuration file, if
+<b>/usr/lib/cups/backend/snmp</b>
+<i>ip-address-or-hostname</i>
+<br>
+<b>/usr/libexec/cups/backend/snmp</b>
+<i>ip-address-or-hostname</i>
+<br>
+<b>lpinfo</b>
+<b>-v</b>
+<b>--include-schemes</b>
+snmp
+<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
+The CUPS SNMP backend provides legacy discovery and identification of network printers using SNMPv1.
+When used for discovery through the scheduler, the backend will list all printers that respond to a broadcast SNMPv1 query with the "public" community name.
+Additional queries are then sent to printers that respond in order to determine the correct device URI, make and model, and other information needed for printing.
+<p>In the first form, the SNMP backend is run directly by the user to look up the device URI and other information when you have an IP address or hostname.
+This can be used for programs that need to configure print queues where the user has supplied an address but nothing else.
+<p>In the second form, the SNMP backend is run indirectly using the
+<a href="man-lpinfo.html?TOPIC=Man+Pages"><b>lpinfo</b>(8)</a>
+command.
+The output provides all printers detected via SNMP on the configured
+broadcast addresses.
+<i>Note: no broadcast addresses are configured by default.</i>
+<h2 class="title"><a name="ENVIRONMENT">Environment</a></h2>
+The DebugLevel value can be overridden using the CUPS_DEBUG_LEVEL environment variable.
+The MaxRunTime value can be overridden using the CUPS_MAX_RUN_TIME environment variable.
+<h2 class="title"><a name="FILES">Files</a></h2>
+The SNMP backend reads the <i>/etc/cups/snmp.conf</i> configuration file, if
present, to set the default broadcast address, community name, and logging
-level. The configuration file is documented in <a href='man-cups-snmp.conf.html?TOPIC=Man+Pages'>cups-snmp.conf(5)</a>. The
-DebugLevel value can be overridden using the CUPS_DEBUG_LEVEL environment
-variable and the MaxRunTime value can be overridden using the CUPS_MAX_RUN_TIME
-environment variable.
+level.
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+The CUPS SNMP backend uses the information from the Host, Printer, and Port Monitor MIBs along with some vendor private MIBs and intelligent port probes to determine the correct device URI and make and model for each printer.
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-backend.html?TOPIC=Man+Pages'>backend(7)</a>, <a href='man-cups-snmp.conf.html?TOPIC=Man+Pages'>cups-snmp.conf(5)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>,
-<a href='man-filter.html?TOPIC=Man+Pages'>filter(7)</a>, <a href='man-lpinfo.html?TOPIC=Man+Pages'>lpinfo(8)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-backend.html?TOPIC=Man+Pages"><b>backend</b>(7),</a>
+<a href="man-cups-snmp.conf.html?TOPIC=Man+Pages"><b>cups-snmp.conf</b>(5),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-lpinfo.html?TOPIC=Man+Pages"><b>lpinfo</b>(8),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-cups.html b/doc/help/man-cups.html
new file mode 100644
index 000000000..016056e2a
--- /dev/null
+++ b/doc/help/man-cups.html
@@ -0,0 +1,119 @@
+<!DOCTYPE HTML>
+<html>
+<!-- SECTION: Man Pages -->
+<head>
+ <link rel="stylesheet" type="text/css" href="../cups-printable.css">
+ <title>cups(1)</title>
+</head>
+<body>
+<h1 class="title">cups(1)</h1>
+<h2 class="title"><a name="NAME">Name</a></h2>
+cups - a standards-based, open source printing system
+<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
+<b>CUPS</b>
+is the software you use to print from applications like word processors, email readers, photo editors, and web browsers. It converts the page descriptions produced by your application (put a paragraph here, draw a line there, and so forth) into something your printer can understand and then sends the information to the printer for printing.
+<p>Now, since every printer manufacturer does things differently, printing can be very complicated.
+<b>CUPS</b>
+does its best to hide this from you and your application so that you can concentrate on printing and less on how to print. Generally, the only time you need to know anything about your printer is when you use it for the first time, and even then
+<b>CUPS</b>
+can often figure things out on its own.
+<h3><a name="HOW_DOES_IT_WORK_">How Does It Work?</a></h3>
+The first time you print to a printer,
+<b>CUPS</b>
+creates a queue to keep track of the current status of the printer (everything OK, out of paper, etc.) and any pages you have printed. Most of the time the queue points to a printer connected directly to your computer via a USB port, however it can also point to a printer on your network, a printer on the Internet, or multiple printers depending on the configuration. Regardless of where the queue points, it will look like any other printer to you and your applications.
+<p>Every time you print something,
+<b>CUPS</b>
+creates a job which contains the queue you are sending the print to, the name of the document you are printing, and the page descriptions. Job are numbered (queue-1, queue-2, and so forth) so you can monitor the job as it is printed or cancel it if you see a mistake. When
+<b>CUPS</b>
+gets a job for printing, it determines the best programs (filters, printer drivers, port monitors, and backends) to convert the pages into a printable format and then runs them to actually print the job.
+<p>When the print job is completely printed,
+<b>CUPS</b>
+removes the job from the queue and moves on to any other jobs you have submitted. You can also be notified when the job is finished, or if there are any errors during printing, in several different ways.
+<h3><a name="WHERE_DO_I_BEGIN_">Where Do I Begin?</a></h3>
+The easiest way to start is by using the web interface to configure your printer. Go to "<a href="http://localhost:631"">http://localhost:631"</a> and choose the Administration tab at the top of the page. Click/press on the Add Printer button and follow the prompts.
+<p>When you are asked for a username and password, enter your login username and password or the "root" username and password.
+<p>After the printer is added you will be asked to set the default printer options (paper size, output mode, etc.) for the printer. Make any changes as needed and then click/press on the Set Default Options button to save them. Some printers also support auto-configuration - click/press on the Query Printer for Default Options button to update the options automatically.
+<p>Once you have added the printer, you can print to it from any application. You can also choose Print Test Page from the maintenance menu to print a simple test page and verify that everything is working properly.
+<p>You can also use the
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8)</a>
+and
+<a href="man-lpinfo.html?TOPIC=Man+Pages"><b>lpinfo</b>(8)</a>
+commands to add printers to
+<b>CUPS</b>.
+Additionally, your operating system may include graphical user interfaces or automatically create printer queues when you connect a printer to your computer.
+<h3><a name="HOW_DO_I_GET_HELP_">How Do I Get Help?</a></h3>
+The
+<b>CUPS</b>
+web site (<a href="http://www.CUPS.org">http://www.CUPS.org</a>) provides access to the
+<i>cups</i>
+and
+<i>cups-devel</i>
+mailing lists, additional documentation and resources, and a bug report database. Most vendors also provide online discussion forums to ask printing questions for your operating system of choice.
+<h2 class="title"><a name="ENVIRONMENT">Environment</a></h2>
+<b>CUPS</b>
+commands use the following environment variables to override the default locations of files and so forth. For security reasons, these environment variables are ignored for setuid programs:
+<dl class="man">
+<dt><b>CUPS_ANYROOT</b>
+<dd style="margin-left: 5.0em">Whether to allow any X.509 certificate root (Y or N).
+<dt><b>CUPS_CACHEDIR</b>
+<dd style="margin-left: 5.0em">The directory where semi-persistent cache files can be found.
+<dt><b>CUPS_DATADIR</b>
+<dd style="margin-left: 5.0em">The directory where data files can be found.
+<dt><b>CUPS_ENCRYPTION</b>
+<dd style="margin-left: 5.0em">The default level of encryption (Always, IfRequested, Never, Required).
+<dt><b>CUPS_EXPIREDCERTS</b>
+<dd style="margin-left: 5.0em">Whether to allow expired X.509 certificates (Y or N).
+<dt><b>CUPS_GSSSERVICENAME</b>
+<dd style="margin-left: 5.0em">The Kerberos service name used for authentication.
+<dt><b>CUPS_SERVER</b>
+<dd style="margin-left: 5.0em">The hostname/IP address and port number of the CUPS scheduler (hostname:port or ipaddress:port).
+<dt><b>CUPS_SERVERBIN</b>
+<dd style="margin-left: 5.0em">The directory where server helper programs, filters, backend, etc. can be found.
+<dt><b>CUPS_SERVERROOT</b>
+<dd style="margin-left: 5.0em">The root directory of the server.
+<dt><b>CUPS_STATEDIR</b>
+<dd style="margin-left: 5.0em">The directory where state files can be found.
+<dt><b>CUPS_USER</b>
+<dd style="margin-left: 5.0em">Specifies the name of the user for print requests.
+<dt><b>HOME</b>
+<dd style="margin-left: 5.0em">Specifies the home directory of the current user.
+<dt><b>IPP_PORT</b>
+<dd style="margin-left: 5.0em">Specifies the default port number for IPP requests.
+<dt><b>LOCALEDIR</b>
+<dd style="margin-left: 5.0em">Specifies the location of localization files.
+<dt><b>LPDEST</b>
+<dd style="margin-left: 5.0em">Specifies the default print queue (System V standard).
+<dt><b>PRINTER</b>
+<dd style="margin-left: 5.0em">Specifies the default print queue (Berkeley standard).
+<dt><b>TMPDIR</b>
+<dd style="margin-left: 5.0em">Specifies the location of temporary files.
+</dl>
+<h2 class="title"><a name="FILES">Files</a></h2>
+<pre class="man">
+<i>~/.cups/client.conf</i>
+<i>~/.cups/lpoptions</i>
+</pre>
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+<b>CUPS</b>
+conforms to the Internet Printing Protocol version 2.1 and implements the Berkeley and System V UNIX print commands.
+<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-client.conf.html?TOPIC=Man+Pages"><b>client.conf</b>(7),</a>
+<a href="man-cupsctl.html?TOPIC=Man+Pages"><b>cupsctl</b>(8),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8),</a>
+<a href="man-lpinfo.html?TOPIC=Man+Pages"><b>lpinfo</b>(8),</a>
+<a href="man-lpoptions.html?TOPIC=Man+Pages"><b>lpoptions</b>(1),</a>
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1),</a>
+<a href="man-lprm.html?TOPIC=Man+Pages"><b>lprm</b>(1),</a>
+<a href="man-lpq.html?TOPIC=Man+Pages"><b>lpq</b>(1),</a>
+<a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
+CUPS Online Help (<a href="http://localhost:631/help)">http://localhost:631/help)</a>,
+CUPS Web Site (<a href="http://www.CUPS.org)">http://www.CUPS.org)</a>,
+PWG Internet Printing Protocol Workgroup (<a href="http://www.pwg.org/ipp">http://www.pwg.org/ipp</a>)
+<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
+Copyright &copy; 2007-2014 by Apple Inc.
+
+</body>
+</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,68 +10,75 @@
<h2 class="title"><a name="NAME">Name</a></h2>
cupsaccept/cupsreject - accept/reject jobs sent to a destination
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cupsaccept
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -h
-<i>hostname[:port]
-</i>] destination(s)
+<b>cupsaccept</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h</b>
+<i>hostname[:port]</i>
+]
+<i>destination(s)</i>
<br>
-<b>cupsreject
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -h
-<i>hostname[:port]
-</i>] [ -r
-<i>reason
-</i>] destination(s)
+<b>cupsreject</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h</b>
+<i>hostname[:port]</i>
+] [
+<b>-r</b>
+<i>reason</i>
+]
+<i>destination(s)</i>
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cupsaccept</i> instructs the printing system to accept print jobs to the
+The
+<b>cupsaccept</b>
+command instructs the printing system to accept print jobs to the specified destinations.
+<p>The
+<b>cupsreject</b>
+command instructs the printing system to reject print jobs to the
specified destinations.
-<p><i>cupsreject</i> instructs the printing system to reject print jobs to the
-specified destinations. The <i>-r</i> option sets the reason for rejecting
-print jobs. If not specified the reason defaults to "Reason Unknown".
+The <i>-r</i> option sets the reason for rejecting print jobs. If not specified, the reason defaults to "Reason Unknown".
<h2 class="title"><a name="OPTIONS">Options</a></h2>
-The following options are supported by both <i>cupsaccept</i> and
-<i>cupsreject</i>:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Forces encryption when connecting to the server.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Sets the username that is sent when connecting to the server.
-</dd>
-<dt>-h hostname[:port]
-</dt>
-<dd></dd>
-<dd>Chooses an alternate server.
-</dd>
-<dt>-r "reason"
-</dt>
-<dd></dd>
-<dd>Sets the reason string that is shown for a printer that is
-rejecting jobs.
-</dd>
+The following options are supported by both
+<b>cupsaccept</b>
+and
+<b>cupsreject</b>:
+<dl class="man">
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Forces encryption when connecting to the server.
+<dt><b>-U </b><i>username</i>
+<dd style="margin-left: 5.0em">Sets the username that is sent when connecting to the server.
+<dt><b>-h </b><i>hostname[:port]</i>
+<dd style="margin-left: 5.0em">Chooses an alternate server.
+<dt><b>-r </b>"<i>reason</i>"
+<dd style="margin-left: 5.0em">Sets the reason string that is shown for a printer that is rejecting jobs.
</dl>
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-Unlike the System V printing system, CUPS allows printer names to
-contain any printable character except SPACE, TAB, "/", or "#".
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+The
+<b>cupsaccept</b>
+and
+<b>cupsreject</b>
+commands correspond to the System V printing system commands "accept" and "reject", respectively.
+Unlike the System V printing system, CUPS allows printer names to contain any printable character except SPACE, TAB, "/", or "#".
Also, printer and class names are <i>not</i> case-sensitive.
-<p>The CUPS versions of <i>accept</i> and <i>reject</i> may ask the
-user for an access password depending on the printing system
-configuration. This differs from the System V versions which
-require the root user to execute these commands.
+<p>Finally, the CUPS versions may ask the user for an access password depending on the printing system configuration.
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cancel.html?TOPIC=Man+Pages'>cancel(1)</a>, <a href='man-cupsenable.html?TOPIC=Man+Pages'>cupsenable(8)</a>, <a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>,
-<a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a>, <a href='man-lpstat.html?TOPIC=Man+Pages'>lpstat(1)</a>,
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-cupsenable.html?TOPIC=Man+Pages"><b>cupsenable</b>(8),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8),</a>
+<a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -11,74 +11,49 @@
cupsaddsmb - export printers to samba for windows clients
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cupsaddsmb
-</b>[ -H
-<i>samba-server
-</i>] [ -U
-<i>samba-user[%samba-password]
-</i>] [ -h
-<i>cups-server[:port]
-</i>] [ -v ] -a
+<b>cupsaddsmb</b>
+[
+<b>-H</b>
+<i>samba-server</i>
+] [
+<b>-U</b>
+<i>samba-user[%samba-password]</i>
+] [
+<b>-h</b>
+<i>cups-server[:port]</i>
+] [
+<b>-v</b>
+]
+<b>-a</b>
<br>
-<b>cupsaddsmb
-</b>[ -H
-<i>samba-server
-</i>] [ -U
-<i>samba-user[%samba-password]
-</i>] [ -h
-<i>cups-server[:port]
-</i>] [ -v ] printer [ ... printer ]
-
+<b>cupsaddsmb</b>
+[
+<b>-H</b>
+<i>samba-server</i>
+] [
+<b>-U</b>
+<i>samba-user[%samba-password]</i>
+] [
+<b>-h</b>
+<i>cups-server[:port]</i>
+] [
+<b>-v</b>
+]
+<i>printer</i>
+[ ...
+<i>printer</i>
+]
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cupsaddsmb</i> exports printers to the SAMBA software (version
-2.2.0 or higher) for use with Windows clients. Depending on the
-SAMBA configuration, you may need to provide a password to
-export the printers. This program requires the Windows printer
-driver files described below.
-
-<h2 class="title"><a name="OPTIONS">Options</a></h2>
-<i>cupsaddsmb</i> supports the following options:
-<dl>
-<dt>-H samba-server
-</dt>
-<dd></dd>
-<dd>Specifies the SAMBA server which defaults to the CUPS server.
-</dd>
-<dt>-U samba-user[%samba-password]
-</dt>
-<dd></dd>
-<dd>Specifies the SAMBA print admin username which defaults to your
-current username. If the username contains a percent (%)
-character, then the text following the percent is treated as the
-SAMBA password to use.
-</dd>
-<dt>-a
-</dt>
-<dd></dd>
-<dd>Exports all known printers. Otherwise only the named printers are
-exported.
-</dd>
-<dt>-h cups-server[:port]
-</dt>
-<dd></dd>
-<dd>Specifies a different CUPS server to use.
-</dd>
-<dt>-v
-</dt>
-<dd></dd>
-<dd>Specifies that verbose information should be shown. This is
-useful for debugging SAMBA configuration problems.
-
-</dd>
-</dl>
-<h2 class="title"><a name="SAMBA_CONFIGURATION">Samba Configuration</a></h2>
-<i>cupsaddsmb</i> uses the new RPC-based printing support in
-SAMBA 2.2.x to provide printer drivers and PPD files to Windows
-client machines. In order to use this functionality, you must
-first configure the SAMBA <i>smb.conf(5)</i> file to support
-printing through CUPS and provide a printer driver download
+The <b>cupsaddsmb</b> program exports printers to the SAMBA software (version 2.2.0 or higher) for use with Windows clients.
+Depending on the SAMBA configuration, you may need to provide a password to export the printers.
+This program requires the Windows printer driver files described below.
+<h3><a name="SAMBA_CONFIGURATION">Samba Configuration</a></h3>
+<b>cupsaddsmb</b> uses the RPC-based printing support in SAMBA to provide printer drivers and PPD files to Windows client machines.
+In order to use this functionality, you must first configure the SAMBA
+<b>smb.conf</b>(5)
+file to support printing through CUPS and provide a printer driver download
share, as follows:
-<pre>
+<pre class="man">
[global]
load printers = yes
@@ -101,70 +76,46 @@ share, as follows:
guest ok = no
read only = yes
write list = root
-</pre>
-<p>This configuration assumes a FHS-compliant installation of
-SAMBA; adjust the [printers] and [print$] share paths
-accordingly on your system as needed.
-<h2 class="title"><a name="MICROSOFT_POSTSCRIPT_DRIVERS_FOR_WINDOWS">Microsoft Postscript Drivers For Windows</a></h2>
-The base driver for Windows 2000 and higher is the Microsoft
-PostScript driver, which is available on any system running
-Windows 2000 or higher in the
-%WINDIR%\SYSTEM32\SPOOL\DRIVERS\W32X86\3 folder for 32-bit
-drivers and
-%WINDIR%\SYSTEM32\SPOOL\DRIVERS\X64\3 folder for 64-bit
-drivers.
-<p>However, currently only Windows 2000 and higher is supported by the Microsoft
-driver, so you will also need to get the Adobe driver to support
-Windows 95, 98, and Me clients. The Adobe and Microsoft drivers
-for Windows 2000 are identical.
-<p>Once you have extracted the driver files, copy the 32-bit drivers
-to the <i>/usr/share/cups/drivers</i> directory and the 64-bit
-drivers to the <i>/usr/share/cups/drivers/x64</i> directory exactly
-as named below:
-<pre>
+</pre>
+This configuration assumes a FHS-compliant installation of SAMBA; adjust the [printers] and [print$] share paths accordingly on your system as needed.
+<h3><a name="MICROSOFT_POSTSCRIPT_DRIVERS_FOR_WINDOWS">Microsoft Postscript Drivers For Windows</a></h3>
+The base driver for Windows 2000 and higher is the Microsoft PostScript driver, which is available on any system running Windows 2000 or higher in the %WINDIR%\SYSTEM32\SPOOL\DRIVERS\W32X86\3 folder for 32-bit drivers and %WINDIR%\SYSTEM32\SPOOL\DRIVERS\X64\3 folder for 64-bit drivers.
+<p>Copy the 32-bit drivers to the <i>/usr/share/cups/drivers</i> directory and the 64-bit drivers to the <i>/usr/share/cups/drivers/x64</i> directory exactly as named below:
+<pre class="man">
- [Windows 2000 and higher]
ps5ui.dll
pscript.hlp
pscript.ntf
pscript5.dll
-</pre>
-<p><b>Note:</b> Unlike Windows, case is significant - make sure that
-you use the lowercase filenames shown above, otherwise
-<i>cupsaddsmb</i> will fail to export the drivers.
-
-<h2 class="title"><a name="ADOBE_POSTSCRIPT_DRIVERS_FOR_WINDOWS_95,_98,_AND_ME">Adobe Postscript Drivers For Windows 95, 98, And Me</a></h2>
-<i>cupsaddsmb</i> can use the Adobe PostScript printer driver for
-Windows 95, 98, and ME, which are available for download from the
-Adobe web site (<a href='http://www.adobe.com).'>http://www.adobe.com).</a>
-<p>The Adobe driver does not support the page-label, job-billing, or
-job-hold-until options.
-<p>Once you have installed the driver on a Windows system, copy the
-following files to the <i>/usr/share/cups/drivers</i> directory
-exactly as named below:
-<pre>
- [Windows 95, 98, and Me]
- ADFONTS.MFM
- ADOBEPS4.DRV
- ADOBEPS4.HLP
- ICONLIB.DLL
- PSMON.DLL
</pre>
-<p><b>Note:</b> Unlike Windows, case is significant - make sure that
-you use the UPPERCASE filenames shown above, otherwise
-<i>cupsaddsmb</i> will fail to export the drivers.
-
-<h2 class="title"><a name="KNOWN_ISSUES">Known Issues</a></h2>
-Getting the full set of Windows driver files should be easier.
-
+<b>Note:</b> Unlike Windows, case is significant - make sure that you use the lowercase filenames shown above, otherwise <b>cupsaddsmb</b> will fail to export the drivers.
+<h2 class="title"><a name="OPTIONS">Options</a></h2>
+<b>cupsaddsmb</b> supports the following options:
+<dl class="man">
+<dt><b>-H </b><i>samba-server</i>
+<dd style="margin-left: 5.0em">Specifies the SAMBA server which defaults to the CUPS server.
+<dt><b>-U </b><i>samba-user</i>[<b>%</b><i>samba-password</i>]
+<dd style="margin-left: 5.0em">Specifies the SAMBA print admin username which defaults to your current username.
+If the username contains a percent (%) character, then the text following the percent is treated as the SAMBA password to use.
+<dt><b>-a</b>
+<dd style="margin-left: 5.0em">Exports all known printers.
+Otherwise only the named printers are exported.
+<dt><b>-h </b><i>cups-server</i>[<b>:</b><i>port</i>]
+<dd style="margin-left: 5.0em">Specifies a different CUPS server to use.
+<dt><b>-v</b>
+<dd style="margin-left: 5.0em">Specifies that verbose information should be shown.
+This is useful for debugging SAMBA configuration problems.
+</dl>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<i>smbd(8)</i>, <i>smb.conf(5)</i>,
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
-
+<b>rpcclient</b>(1),
+<b>smbclient</b>(1),
+<b>smbd</b>(8),
+<b>smb.conf</b>(5),
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,89 +10,85 @@
<h2 class="title"><a name="NAME">Name</a></h2>
cupsctl - configure cupsd.conf options
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cupsctl
-</b>[ -E ] [-U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] [ --[no-]debug-logging ] [ --[no-]remote-admin ] [ --[no-]remote-any ]
-[ --[no-]share-printers ] [ --[no-]user-cancel-any ]
+<b>cupsctl</b>
[
-<i>name=value
-</i>]
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h</b>
+<i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>--</b>[<b>no-</b>]<b>debug-logging</b>
+] [
+<b>--</b>[<b>no-</b>]<b>remote-admin</b>
+] [
+<b>--</b>[<b>no-</b>]<b>remote-any</b>
+] [
+<b>--</b>[<b>no-</b>]<b>share-printers</b>
+] [
+<b>--</b>[<b>no-</b>]<b>user-cancel-any</b>
+] [
+<i>name=value</i>
+]
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cupsctl</i> updates or queries the <b>cupsd.conf</b> file for a server. When
+<b>cupsctl</b> updates or queries the <i>cupsd.conf</i> file for a server. When
no changes are requested, the current configuration values are written to the
standard output in the format "name=value", one per line.
<h2 class="title"><a name="OPTIONS">Options</a></h2>
The following options are recognized:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Enables encryption on the connection to the scheduler.
-</dd>
-<dt>-U <i>username</i>
-</dt>
-<dd></dd>
-<dd>Specifies an alternate username to use when authenticating with the scheduler.
-</dd>
-<dt>-h <i>server[:port]</i>
-</dt>
-<dd></dd>
-<dd>Specifies the server address.
-</dd>
-<dt>--[no-]debug-logging
-</dt>
-<dd></dd>
-<dd>Enables or disables debug logging in the <b>error_log</b> file.
-</dd>
-<dt>--[no-]remote-admin
-</dt>
-<dd></dd>
-<dd>Enables or disables remote administration.
-</dd>
-<dt>--[no-]remote-any
-</dt>
-<dd></dd>
-<dd>Enables or disables printing from any address, e.g. the Internet.
-</dd>
-<dt>--[no-]share-printers
-</dt>
-<dd></dd>
-<dd>Enables or disables sharing of local printers with other computers.
-</dd>
-<dt>--[no-]user-cancel-any
-</dt>
-<dd></dd>
-<dd>Allows or prevents users from canceling jobs owned by others.
-</dd>
+<dl class="man">
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Enables encryption on the connection to the scheduler.
+<dt><b>-U </b><i>username</i>
+<dd style="margin-left: 5.0em">Specifies an alternate username to use when authenticating with the scheduler.
+<dt><b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+<dd style="margin-left: 5.0em">Specifies the server address.
+<dt><b>--fR[fBno-fR]fBdebug-logging</b>
+<dd style="margin-left: 5.0em">Enables (disables) debug logging to the <i>error_log</i> file.
+<dt><b>--fR[fBno-fR]fBremote-admin</b>
+<dd style="margin-left: 5.0em">Enables (disables) remote administration.
+<dt><b>--fR[fBno-fR]fBremote-any</b>
+<dd style="margin-left: 5.0em">Enables (disables) printing from any address, e.g., the Internet.
+<dt><b>--fR[fBno-fR]fBshare-printers</b>
+<dd style="margin-left: 5.0em">Enables (disables) sharing of local printers with other computers.
+<dt><b>--fR[fBno-fR]fBuser-cancel-any</b>
+<dd style="margin-left: 5.0em">Allows (prevents) users to cancel jobs owned by others.
</dl>
<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
Display the current settings:
-<pre>
+<pre class="man">
+
cupsctl
+
</pre>
-<p>Enable debug logging:
-<pre>
+Enable debug logging:
+<pre class="man">
+
cupsctl --debug-logging
+
</pre>
-<p>Get the current debug logging state:
-<pre>
+Get the current debug logging state:
+<pre class="man">
+
cupsctl | grep '^_debug_logging' | awk -F= '{print $2}'
+
</pre>
-<p>Disable printer sharing:
-<pre>
+Disable printer sharing:
+<pre class="man">
+
cupsctl --no-share-printers
</pre>
<h2 class="title"><a name="KNOWN_ISSUES">Known Issues</a></h2>
-You cannot set the Listen or Port directives using <i>cupsctl</i>.
+You cannot set the Listen or Port directives using <b>cupsctl</b>.
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>,
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-cupsd-helper.html b/doc/help/man-cupsd-helper.html
new file mode 100644
index 000000000..ecdb2ac8f
--- /dev/null
+++ b/doc/help/man-cupsd-helper.html
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML>
+<html>
+<!-- SECTION: Man Pages -->
+<head>
+ <link rel="stylesheet" type="text/css" href="../cups-printable.css">
+ <title>cupsd-helper(8)</title>
+</head>
+<body>
+<h1 class="title">cupsd-helper(8)</h1>
+<h2 class="title"><a name="NAME">Name</a></h2>
+cupsd-helper - cupsd helper programs
+<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
+<b>cups-deviced</b>
+<i>request-id</i>
+<i>limit</i>
+<i>user-id</i>
+<i>options</i>
+<br>
+<b>cups-driverd</b>
+<b>cat</b>
+<i>ppd-name</i>
+<br>
+<b>cups-driverd</b>
+<b>list</b>
+<i>request_id</i>
+<i>limit</i>
+<i>options</i>
+<br>
+<b>cups-exec</b>
+<i>sandbox-profile</i>
+[
+<i>-g</i>
+<i>group-id</i>
+] [
+<i>-n</i>
+<i>nice-value</i>
+] [
+<i>-u</i>
+<i>user-id</i>
+]
+<i>/path/to/program</i>
+<i>argv0</i>
+<i>...</i>
+<i>argvN</i>
+<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
+The <b>cupsd-helper</b> programs perform long-running operations on behalf of the scheduler,
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8).</a>
+The <b>cups-deviced</b> helper program runs each CUPS
+<a href="man-backend.html?TOPIC=Man+Pages"><b>backend</b>(7)</a>
+with no arguments in order to discover the available printers.
+<p>The <b>cups-driverd</b> helper program lists all available printer drivers, a subset of "matching" printer drivers, or a copy of a specific driver PPD file.
+<p>The <b>cups-exec</b> helper program runs backends, filters, and other programs. On OS X these programs are run in a secure sandbox.
+<h2 class="title"><a name="FILES">Files</a></h2>
+The <b>cups-driverd</b> program looks for PPD and driver information files in the following directories:
+<pre class="man">
+
+ <i>/Library/Printers</i>
+ <i>/opt/share/ppd</i>
+ <i>/System/Library/Printers</i>
+ <i>/usr/local/share/ppd</i>
+ <i>/usr/share/cups/drv</i>
+ <i>/usr/share/cups/model</i>
+ <i>/usr/share/ppd</i>
+</pre>
+<p>PPD files can be compressed using the
+<b>gzip</b>(1)
+program or placed in compressed
+<b>tar</b>(1)
+archives to further reduce their size.
+<p>Driver information files must conform to the format defined in
+<a href="man-ppdcfile.html?TOPIC=Man+Pages"><b>ppdcfile</b>(5).</a>
+<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
+<a href="man-backend.html?TOPIC=Man+Pages"><b>backend</b>(7),</a>
+<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-filter.html?TOPIC=Man+Pages"><b>filter</b>(7),</a>
+<a href="man-ppdcfile.html?TOPIC=Man+Pages"><b>ppdcfile</b>(5),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
+<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
+Copyright &copy; 2007-2014 by Apple Inc.
+
+</body>
+</html>
diff --git a/doc/help/man-cupsd-logs.html b/doc/help/man-cupsd-logs.html
new file mode 100644
index 000000000..aa1a77b7f
--- /dev/null
+++ b/doc/help/man-cupsd-logs.html
@@ -0,0 +1,194 @@
+<!DOCTYPE HTML>
+<html>
+<!-- SECTION: Man Pages -->
+<head>
+ <link rel="stylesheet" type="text/css" href="../cups-printable.css">
+ <title>cupsd-logs(5)</title>
+</head>
+<body>
+<h1 class="title">cupsd-logs(5)</h1>
+<h2 class="title"><a name="NAME">Name</a></h2>
+cupsd-logs - cupsd log files (access_log, error_log, and page_log)
+<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8)</a>
+normally maintains three log files: <i>access_log</i> to track requests that are submitted to the scheduler, <i>error_log</i> to track progress and errors, and <i>page_log</i> to track pages that are printed.
+Configuration directives in
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5)</a>
+and
+<a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5)</a>
+control what information is logged and where it is stored.
+<h3><a name="ACCESS_LOG_FILE_FORMAT">Access Log File Format</a></h3>
+The <i>access_log</i> file lists each HTTP resource that is accessed by a web browser or client.
+Each line is in an extended version of the so-called "Common Log Format" used by many web servers and web reporting tools:
+<pre class="man">
+
+ <i>host group user date-time </i>"<i>method resource version</i>" <i>status bytes
+ ipp-operation ipp-status</i>
+
+</pre>
+For example:
+<pre class="man">
+
+ 10.0.1.2 - - [01/Dec/2005:21:50:28 +0000] "POST / HTTP/1.1" 200 317
+ CUPS-Get-Printers successful-ok-ignored-or-substituted-attributes
+ localhost - - [01/Dec/2005:21:50:32 +0000] "GET /admin HTTP/1.1"
+ 200 0 - -
+ localhost - - [01/Dec/2005:21:50:32 +0000] "POST / HTTP/1.1"
+ 200 157 CUPS-Get-Printers
+ successful-ok-ignored-or-substituted-attributes
+ localhost - - [01/Dec/2005:21:50:32 +0000] "POST / HTTP/1.1"
+ 200 1411 CUPS-Get-Devices -
+ localhost - - [01/Dec/2005:21:50:32 +0000] "GET /admin HTTP/1.1"
+ 200 6667 - -
+
+</pre>
+The <i>host</i> field will normally only be an IP address unless you have enabled the HostNameLookups directive in the <i>cupsd.conf</i> file or if the IP address corresponds to your local machine.
+<p>The <i>group</i> field always contains "-".
+<p>The <i>user</i> field is the authenticated username of the requesting user.
+If no username and password is supplied for the request then this field contains "-".
+<p>The <i>date-time</i> field is the date and time of the request in local time and is in the format "[DD/MON/YYYY:HH:MM:SS +ZZZZ]".
+<p>The <i>method</i> field is the HTTP method used: "GET", "HEAD", "OPTIONS", "POST", or "PUT".
+"GET" requests are used to get files from the server, both for the web interface and to get configuration and log files.
+"HEAD" requests are used to get information about a resource prior to a "GET".
+"OPTIONS" requests are used to upgrade connections to TLS encryption.
+"POST" requests are used for web interface forms and IPP requests.
+"PUT" requests are used to upload configuration files.
+<p>The <i>resource</i> field is the filename of the requested resource.
+<p>The <i>version</i> field is the HTTP specification version used by the client.
+For CUPS clients this will always be "HTTP/1.1".
+<p>The <i>status</i> field contains the HTTP result status of the request, as follows:
+<div style="margin-left: 5.0em;">
+<dl class="man">
+<dt>200
+<dd style="margin-left: 5.0em">Successful operation.
+<dt>201
+<dd style="margin-left: 5.0em">File created/modified successfully.
+<dt>304
+<dd style="margin-left: 5.0em">The requested file has not changed.
+<dt>400
+<dd style="margin-left: 5.0em">Bad HTTP request; typically this means that you have a malicious program trying to access your server.
+<dt>401
+<dd style="margin-left: 5.0em">Unauthorized, authentication (username + password) is required.
+<dt>403
+<dd style="margin-left: 5.0em">Access is forbidden; typically this means that a client tried to access a file or resource they do not have permission to access.
+<dt>404
+<dd style="margin-left: 5.0em">The file or resource does not exist.
+<dt>405
+<dd style="margin-left: 5.0em">URL access method is not allowed; typically this means you have a web browser using your server as a proxy.
+<dt>413
+<dd style="margin-left: 5.0em">Request too large; typically this means that a client tried to print a file larger than the MaxRequestSize allows.
+<dt>426
+<dd style="margin-left: 5.0em">Upgrading to TLS-encrypted connection.
+<dt>500
+<dd style="margin-left: 5.0em">Server error; typically this happens when the server is unable to open/create a file - consult the error_log file for details.
+<dt>501
+<dd style="margin-left: 5.0em">The client requested encryption but encryption support is not enabled/compiled in.
+<dt>505
+<dd style="margin-left: 5.0em">HTTP version number not supported; typically this means that you have a malicious program trying to access your server.
+</div>
+</dl>
+<p>The <i>bytes</i> field contains the number of bytes in the request.
+For POST requests the bytes field contains the number of bytes of non-IPP data that is received from the client.
+<p>The <i>ipp-operation</i> field contains either "-" for non-IPP requests or the IPP operation name for POST requests containing an IPP request.
+<p>The <i>ipp-status</i> field contains either "-" for non-IPP requests or the IPP status code name for POST requests containing an IPP response.
+<h3><a name="ERROR_LOG_FILE_FORMAT">Error Log File Format</a></h3>
+The <i>error_log</i> file lists messages from the scheduler - errors, warnings, etc. The LogLevel directive in the
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5)</a>
+file controls which messages are logged:
+<pre class="man">
+
+ level date-time message
+
+</pre>
+For example:
+<pre class="man">
+
+ I [20/May/1999:19:18:28 +0000] [Job 1] Queued on 'DeskJet' by 'mike'.
+ D [20/May/1999:19:18:28 +0000] [Job 1] argv[0]="DeskJet"
+ D [20/May/1999:19:18:28 +0000] [Job 1] argv[1]="1"
+ D [20/May/1999:19:18:28 +0000] [Job 1] argv[2]="mike"
+ D [20/May/1999:19:18:28 +0000] [Job 1] argv[3]="myjob"
+ D [20/May/1999:19:18:28 +0000] [Job 1] argv[4]="1"
+ D [20/May/1999:19:18:28 +0000] [Job 1] argv[5]="media=
+ na_letter_8.5x11in sides=one-sided"
+ D [20/May/1999:19:18:28 +0000] [Job 1] argv[6]="/var/spool/cups/
+ d000001-001"
+ I [20/May/1999:19:21:02 +0000] [Job 2] Queued on 'DeskJet' by 'mike'.
+ I [20/May/1999:19:22:24 +0000] [Job 2] Canceled by 'mike'.
+
+</pre>
+The <i>level</i> field contains the type of message:
+<dl class="man">
+<dt>A
+<dd style="margin-left: 5.0em">Alert message (LogLevel alert)
+<dt>C
+<dd style="margin-left: 5.0em">Critical error message (LogLevel crit)
+<dt>D
+<dd style="margin-left: 5.0em">Debugging message (LogLevel debug)
+<dt>d
+<dd style="margin-left: 5.0em">Detailed debugging message (LogLevel debug2)
+<dt>E
+<dd style="margin-left: 5.0em">Normal error message (LogLevel error)
+<dt>I
+<dd style="margin-left: 5.0em">Informational message (LogLevel info)
+<dt>N
+<dd style="margin-left: 5.0em">Notice message (LogLevel notice)
+<dt>W
+<dd style="margin-left: 5.0em">Warning message (LogLevel warn)
+<dt>X
+<dd style="margin-left: 5.0em">Emergency error message (LogLevel emerg)
+</dl>
+<p>The <i>date-time</i> field contains the date and time of when the page started printing. The format of this field is identical to the data-time field in the <i>access_log</i> file.
+<p>The <i>message</i> field contains a free-form textual message.
+Messages from job filters are prefixed with "[Job NNN]" where "NNN" is the job ID.
+<h3><a name="PAGE_LOG_FILE_FORMAT">Page Log File Format</a></h3>
+The <i>page_log</i> file lists each page or group of pages that are sent to a printer.
+By default, each line contains the following information:
+<pre class="man">
+
+ <i>printer user job-id date-time page-number num-copies job-billing
+ job-originating-host-name job-name media sides</i>
+
+ <i>printer user job-id date-time </i><b>total </b><i>num-impressions job-billing
+ job-originating-host-name job-name media sides</i>
+
+</pre>
+For example the entries for a two page job called "myjob" might look like:
+<pre class="man">
+
+ DeskJet root 1 [20/May/1999:19:21:05 +0000] 1 1 acme-123
+ localhost myjob na_letter_8.5x11in one-sided
+ DeskJet root 1 [20/May/1999:19:21:05 +0000] 2 1 acme-123
+ localhost myjob na_letter_8.5x11in one-sided
+
+ DeskJet root 1 [20/May/1999:19:21:06 +0000] total 2 acme-123
+ localhost myjob na_letter_8.5x11in one-sided
+
+</pre>
+The PageLogFormat directive in the
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5)</a>
+file can be used to change this information.
+<p>The <i>printer</i> field contains the name of the printer that printed the page.
+If you send a job to a printer class, this field will contain the name of the printer that was assigned the job.
+<p>The <i>user</i> field contains the name of the user (the IPP requesting-user-name attribute) that submitted this file for printing.
+<p>The <i>job-id</i> field contains the job number of the page being printed.
+<p>The <i>date-time</i> field contains the date and time of when the page started printing.
+The format of this field is identical to the data-time field in the <i>access_log</i> file.
+<p>The <i>page-number</i> and <i>num-copies</i> fields contain the page number and number of copies being printed of that page.
+For printers that cannot produce copies on their own, the num-copies field will always be 1.
+<p>Lines containing the keyword "total" have a <i>num-impressions</i> field instead which provides the total number of impressions (sides) that have been printed on for the job.
+<p>The <i>job-billing</i> field contains a copy of the job-billing or job-account-id attributes provided with the IPP Create-Job or Print-Job requests or "-" if neither was provided.
+<p>The <i>job-originating-host-name</i> field contains the hostname or IP address of the client that printed the job.
+<p>The <i>job-name</i> field contains a copy of the job-name attribute provided with the IPP Create-Job or Print-Job requests or "-" if none was provided.
+<p>The <i>media</i> field contains a copy of the media or media-col/media-size attribute provided with the IPP Create-Job or Print-Job requests or "-" if none was provided.
+<p>The <i>sides</i> field contains a copy of the sides attribute provided with the IPP Create-Job or Print-Job requests or "-" if none was provided.
+<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
+<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
+Copyright &copy; 2007-2014 by Apple Inc.
+
+</body>
+</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,681 +10,579 @@
<h2 class="title"><a name="NAME">Name</a></h2>
cupsd.conf - server configuration file for cups
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <i>cupsd.conf</i> file configures the CUPS scheduler, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>. It
-is normally located in the <i>/etc/cups</i> directory. <b>Note:</b>
-File, directory, and user configuration directives that used to be allowed in
-the <i>cupsd.conf</i> file are now stored in the <a href='man-cups-files.conf.html?TOPIC=Man+Pages'>cups-files.conf(5)</a> instead
-in order to prevent certain types of privilege escalation attacks.
-<p>Each line in the file can be a configuration directive, a blank line,
-or a comment. Comment lines start with the # character. The
-configuration directives are intentionally similar to those used by the
-popular Apache web server software and are described below.
-<h2 class="title"><a name="DIRECTIVES">Directives</a></h2>
-The following directives are understood by <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>. Consult the
-on-line help for detailed descriptions:
-<dl>
-<dt>AccessLogLevel config
-</dt>
-<dd></dd>
-<dt>AccessLogLevel actions
-</dt>
-<dd></dd>
-<dt>AccessLogLevel all
-</dt>
-<dd></dd>
-<dd>Specifies the logging level for the AccessLog file.
-</dd>
-<dt>Allow all
-</dt>
-<dd></dd>
-<dt>Allow none
-</dt>
-<dd></dd>
-<dt>Allow host.domain.com
-</dt>
-<dd></dd>
-<dt>Allow *.domain.com
-</dt>
-<dd></dd>
-<dt>Allow ip-address
-</dt>
-<dd></dd>
-<dt>Allow ip-address/netmask
-</dt>
-<dd></dd>
-<dt>Allow ip-address/mm
-</dt>
-<dd></dd>
-<dt>Allow @IF(name)
-</dt>
-<dd></dd>
-<dt>Allow @LOCAL
-</dt>
-<dd></dd>
-<dd>Allows access from the named hosts or addresses.
-</dd>
-<dt>AuthType None
-</dt>
-<dd></dd>
-<dt>AuthType Basic
-</dt>
-<dd></dd>
-<dt>AuthType BasicDigest
-</dt>
-<dd></dd>
-<dt>AuthType Digest
-</dt>
-<dd></dd>
-<dt>AuthType Negotiate
-</dt>
-<dd></dd>
-<dd>Specifies the authentication type (None, Basic, BasicDigest, Digest, Negotiate)
-</dd>
-<dt>AutoPurgeJobs Yes
-</dt>
-<dd></dd>
-<dt>AutoPurgeJobs No
-</dt>
-<dd></dd>
-<dd>Specifies whether to purge job history data automatically when
-it is no longer required for quotas.
-</dd>
-<dt>BrowseLocalProtocols [All] [DNSSD]
-</dt>
-<dd></dd>
-<dd>Specifies the protocols to use for local printer sharing.
-</dd>
-<dt>BrowseWebIF Yes
-</dt>
-<dd></dd>
-<dt>BrowseWebIF No
-</dt>
-<dd></dd>
-<dd>Specifies whether the CUPS web interface is advertised via DNS-SD.
-</dd>
-<dt>Browsing Yes
-</dt>
-<dd></dd>
-<dt>Browsing No
-</dt>
-<dd></dd>
-<dd>Specifies whether or not shared printers should be advertised.
-</dd>
-<dt>Classification banner
-</dt>
-<dd></dd>
-<dd>Specifies the security classification of the server.
-</dd>
-<dt>ClassifyOverride Yes
-</dt>
-<dd></dd>
-<dt>ClassifyOverride No
-</dt>
-<dd></dd>
-<dd>Specifies whether to allow users to override the classification
-of individual print jobs.
-</dd>
-<dt>DefaultAuthType Basic
-</dt>
-<dd></dd>
-<dt>DefaultAuthType BasicDigest
-</dt>
-<dd></dd>
-<dt>DefaultAuthType Digest
-</dt>
-<dd></dd>
-<dt>DefaultAuthType Negotiate
-</dt>
-<dd></dd>
-<dd>Specifies the default type of authentication to use.
-</dd>
-<dt>DefaultEncryption Never
-</dt>
-<dd></dd>
-<dt>DefaultEncryption IfRequested
-</dt>
-<dd></dd>
-<dt>DefaultEncryption Required
-</dt>
-<dd></dd>
-<dd>Specifies the type of encryption to use for authenticated requests.
-</dd>
-<dt>DefaultLanguage locale
-</dt>
-<dd></dd>
-<dd>Specifies the default language to use for text and web content.
-</dd>
-<dt>DefaultPaperSize Auto
-</dt>
-<dd></dd>
-<dt>DefaultPaperSize None
-</dt>
-<dd></dd>
-<dt>DefaultPaperSize sizename
-</dt>
-<dd></dd>
-<dd>Specifies the default paper size for new print queues. "Auto" uses a locale-
-specific default, while "None" specifies there is no default paper size.
-</dd>
-<dt>DefaultPolicy policy-name
-</dt>
-<dd></dd>
-<dd>Specifies the default access policy to use.
-</dd>
-<dt>DefaultShared Yes
-</dt>
-<dd></dd>
-<dt>DefaultShared No
-</dt>
-<dd></dd>
-<dd>Specifies whether local printers are shared by default.
-</dd>
-<dt>Deny all
-</dt>
-<dd></dd>
-<dt>Deny none
-</dt>
-<dd></dd>
-<dt>Deny host.domain.com
-</dt>
-<dd></dd>
-<dt>Deny *.domain.com
-</dt>
-<dd></dd>
-<dt>Deny ip-address
-</dt>
-<dd></dd>
-<dt>Deny ip-address/netmask
-</dt>
-<dd></dd>
-<dt>Deny ip-address/mm
-</dt>
-<dd></dd>
-<dt>Deny @IF(name)
-</dt>
-<dd></dd>
-<dt>Deny @LOCAL
-</dt>
-<dd></dd>
-<dd>Denies access to the named host or address.
-</dd>
-<dt>DirtyCleanInterval seconds
-</dt>
-<dd></dd>
-<dd>Specifies the delay for updating of configuration and state files. A value of 0
-causes the update to happen as soon as possible, typically within a few
-milliseconds.
-</dd>
-<dt>Encryption IfRequested
-</dt>
-<dd></dd>
-<dt>Encryption Never
-</dt>
-<dd></dd>
-<dt>Encryption Required
-</dt>
-<dd></dd>
-<dd>Specifies the level of encryption that is required for a particular
-location.
-</dd>
-<dt>ErrorPolicy abort-job
-</dt>
-<dd>Specifies that a failed print job should be aborted (discarded) unless otherwise specified for the printer.
-</dd>
-<dt>ErrorPolicy retry-job
-</dt>
-<dd>Specifies that a failed print job should be retried at a later time unless otherwise specified for the printer.
-</dd>
-<dt>ErrorPolicy retry-this-job
-</dt>
-<dd>Specifies that a failed print job should be retried immediately unless otherwise specified for the printer.
-</dd>
-<dt>ErrorPolicy stop-printer
-</dt>
-<dd>Specifies that a failed print job should stop the printer unless otherwise specified for the printer. The 'stop-printer' error policy is the default.
-</dd>
-<dt>FilterLimit limit
-</dt>
-<dd></dd>
-<dd>Specifies the maximum cost of filters that are run concurrently.
-</dd>
-<dt>FilterNice nice-value
-</dt>
-<dd></dd>
-<dd>Specifies the scheduling priority ("nice" value) of filters that
-are run to print a job.
-</dd>
-<dt>GSSServiceName name
-</dt>
-<dd></dd>
-<dd>Specifies the service name when using Kerberos authentication. The default
-service name is "http".
-</dd>
-<dt>HostNameLookups On
-</dt>
-<dd></dd>
-<dt>HostNameLookups Off
-</dt>
-<dd></dd>
-<dt>HostNameLookups Double
-</dt>
-<dd></dd>
-<dd>Specifies whether or not to do reverse lookups on client addresses.
-</dd>
-<dt>Include filename
-</dt>
-<dd></dd>
-<dd>Includes the named file.
-</dd>
-<dt>JobKillDelay seconds
-</dt>
-<dd></dd>
-<dd>Specifies the number of seconds to wait before killing the filters and backend
-associated with a canceled or held job.
-</dd>
-<dt>JobPrivateAccess all
-</dt>
-<dd></dd>
-<dt>JobPrivateAccess default
-</dt>
-<dd></dd>
-<dt>JobPrivateAccess {user|@group|@ACL|@OWNER|@SYSTEM}+
-</dt>
-<dd></dd>
-<dd>Specifies an access list for a job's private values. The "default" access list
-is "@OWNER @SYSTEM". "@ACL" maps to the printer's requesting-user-name-allowed
-or requesting-user-name-denied values.
-</dd>
-<dt>JobPrivateValues all
-</dt>
-<dd></dd>
-<dt>JobPrivateValues default
-</dt>
-<dd></dd>
-<dt>JobPrivateValues none
-</dt>
-<dd></dd>
-<dt>JobPrivateValues attribute-name-1 [ ... attribute-name-N ]
-</dt>
-<dd>Specifies the list of job values to make private. The "default" values are
-"job-name", "job-originating-host-name", and "job-originating-user-name".
-</dd>
-<dt>JobRetryInterval seconds
-</dt>
-<dd></dd>
-<dd>Specifies the interval between retries of jobs in seconds.
-</dd>
-<dt>JobRetryLimit count
-</dt>
-<dd></dd>
-<dd>Specifies the number of retries that are done for jobs.
-</dd>
-<dt>KeepAlive Yes
-</dt>
-<dd></dd>
-<dt>KeepAlive No
-</dt>
-<dd></dd>
-<dd>Specifies whether to support HTTP keep-alive connections.
-</dd>
-<dt>KeepAliveTimeout seconds
-</dt>
-<dd></dd>
-<dd>Specifies the amount of time that connections are kept alive.
-</dd>
-<dt>&lt;Limit operations> ... &lt;/Limit>
-</dt>
-<dd></dd>
-<dd>Specifies the IPP operations that are being limited inside a policy.
-</dd>
-<dt>&lt;Limit methods> ... &lt;/Limit>
-</dt>
-<dd></dd>
-<dt>&lt;LimitExcept methods> ... &lt;/LimitExcept>
-</dt>
-<dd></dd>
-<dd>Specifies the HTTP methods that are being limited inside a location.
-</dd>
-<dt>LimitRequestBody
-</dt>
-<dd></dd>
-<dd>Specifies the maximum size of any print job request.
-</dd>
-<dt>Listen ip-address:port
-</dt>
-<dd></dd>
-<dt>Listen *:port
-</dt>
-<dd></dd>
-<dt>Listen /path/to/domain/socket
-</dt>
-<dd></dd>
-<dd>Listens to the specified address and port or domain socket path.
-</dd>
-<dt>&lt;Location /path> ... &lt;/Location>
-</dt>
-<dd></dd>
-<dd>Specifies access control for the named location.
-</dd>
-<dt>LogDebugHistory #-messages
-</dt>
-<dd></dd>
-<dd>Specifies the number of debugging messages that are logged when an error
-occurs in a print job.
-</dd>
-<dt>LogLevel alert
-</dt>
-<dd></dd>
-<dt>LogLevel crit
-</dt>
-<dd></dd>
-<dt>LogLevel debug2
-</dt>
-<dd></dd>
-<dt>LogLevel debug
-</dt>
-<dd></dd>
-<dt>LogLevel emerg
-</dt>
-<dd></dd>
-<dt>LogLevel error
-</dt>
-<dd></dd>
-<dt>LogLevel info
-</dt>
-<dd></dd>
-<dt>LogLevel none
-</dt>
-<dd></dd>
-<dt>LogLevel notice
-</dt>
-<dd></dd>
-<dt>LogLevel warn
-</dt>
-<dd></dd>
-<dd>Specifies the logging level for the ErrorLog file.
-</dd>
-<dt>LogTimeFormat standard
-</dt>
-<dd></dd>
-<dt>LogTimeFormat usecs
-</dt>
-<dd></dd>
-<dd>Specifies the format of the date and time in the log files.
-</dd>
-<dt>MaxClients number
-</dt>
-<dd></dd>
-<dd>Specifies the maximum number of simultaneous clients to support.
-</dd>
-<dt>MaxClientsPerHost number
-</dt>
-<dd></dd>
-<dd>Specifies the maximum number of simultaneous clients to support from a
+The
+<i>cupsd.conf</i>
+file configures the CUPS scheduler,
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8).</a>
+It is normally located in the
+<i>/etc/cups</i>
+directory.
+<b>Note:</b> File, directory, and user configuration directives that used to be allowed in the <b>cupsd.conf</b> file are now stored in the
+<a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5)</a>
+file instead in order to prevent certain types of privilege escalation attacks.
+<p>Each line in the file can be a configuration directive, a blank line, or a comment.
+Configuration directives typically consist of a name and zero or more values separated by whitespace.
+The configuration directive name and values are case-insensitive.
+Comment lines start with the # character.
+<h3><a name="TOP_LEVEL_DIRECTIVES">Top-level Directives</a></h3>
+The following top-level directives are understood by
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8):</a>
+<dl class="man">
+<dt><b>AccessLogLevel config</b>
+<dd style="margin-left: 5.0em"><dt><b>AccessLogLevel actions</b>
+<dd style="margin-left: 5.0em"><dt><b>AccessLogLevel all</b>
+<dd style="margin-left: 5.0em">Specifies the logging level for the AccessLog file.
+The "config" level logs when printers and classes are added, deleted, or modified and when configuration files are accessed or updated.
+The "actions" level logs when print jobs are submitted, held, released, modified, or canceled, and any of the conditions for "config".
+The "all" level logs all requests.
+The default access log level is "actions".
+<dt><b>AutoPurgeJobs Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>AutoPurgeJobs No</b>
+<dd style="margin-left: 5.0em"><br>
+Specifies whether to purge job history data automatically when it is no longer required for quotas.
+The default is "No".
+<dt><b>BrowseLocalProtocols all</b>
+<dd style="margin-left: 5.0em"><dt><b>BrowseLocalProtocols dnssd</b>
+<dd style="margin-left: 5.0em"><dt><b>BrowseLocalProtocols none</b>
+<dd style="margin-left: 5.0em">Specifies which protocols to use for local printer sharing.
+The default is "dnssd" on systems that support Bonjour and "none" otherwise.
+<dt><b>BrowseWebIF Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>BrowseWebIF No</b>
+<dd style="margin-left: 5.0em"><br>
+Specifies whether the CUPS web interface is advertised.
+The default is "No".
+<dt><b>Browsing Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>Browsing No</b>
+<dd style="margin-left: 5.0em"><br>
+Specifies whether shared printers are advertised.
+The default is "No".
+<dt><b>Classification </b><i>banner</i>
+<dd style="margin-left: 5.0em"><br>
+Specifies the security classification of the server.
+Any valid banner name can be used, including "classified", "confidential", "secret", "topsecret", and "unclassified", or the banner can be omitted to disable secure printing functions.
+The default is no classification banner.
+<dt><b>ClassifyOverride Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>ClassifyOverride No</b>
+<dd style="margin-left: 5.0em"><br>
+Specifies whether users may override the classification (cover page) of individual print jobs using the "job-sheets" option.
+The default is "No".
+<dt><b>DefaultAuthType Basic</b>
+<dd style="margin-left: 5.0em"><dt><b>DefaultAuthType Negotiate</b>
+<dd style="margin-left: 5.0em"><br>
+Specifies the default type of authentication to use.
+The default is "Basic".
+<dt><b>DefaultEncryption Never</b>
+<dd style="margin-left: 5.0em"><dt><b>DefaultEncryption IfRequested</b>
+<dd style="margin-left: 5.0em"><dt><b>DefaultEncryption Required</b>
+<dd style="margin-left: 5.0em">Specifies whether encryption will be used for authenticated requests.
+The default is "Required".
+<dt><b>DefaultLanguage </b><i>locale</i>
+<dd style="margin-left: 5.0em">Specifies the default language to use for text and web content.
+The default is "en".
+<dt><b>DefaultPaperSize Auto</b>
+<dd style="margin-left: 5.0em"><dt><b>DefaultPaperSize None</b>
+<dd style="margin-left: 5.0em"><dt><b>DefaultPaperSize </b><i>sizename</i>
+<dd style="margin-left: 5.0em">Specifies the default paper size for new print queues. "Auto" uses a locale-specific default, while "None" specifies there is no default paper size.
+Specific size names are typically "Letter" or "A4".
+The default is "Auto".
+<dt><b>DefaultPolicy </b><i>policy-name</i>
+<dd style="margin-left: 5.0em">Specifies the default access policy to use.
+The default access policy is "default".
+<dt><b>DefaultShared Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>DefaultShared No</b>
+<dd style="margin-left: 5.0em">Specifies whether local printers are shared by default.
+The default is "Yes".
+<dt><b>DirtyCleanInterval </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies the delay for updating of configuration and state files.
+A value of 0 causes the update to happen as soon as possible, typically within a few milliseconds.
+The default value is "30".
+<dt><b>ErrorPolicy abort-job</b>
+<dd style="margin-left: 5.0em">Specifies that a failed print job should be aborted (discarded) unless otherwise specified for the printer.
+<dt><b>ErrorPolicy retry-job</b>
+<dd style="margin-left: 5.0em">Specifies that a failed print job should be retried at a later time unless otherwise specified for the printer.
+<dt><b>ErrorPolicy retry-this-job</b>
+<dd style="margin-left: 5.0em">Specifies that a failed print job should be retried immediately unless otherwise specified for the printer.
+<dt><b>ErrorPolicy stop-printer</b>
+<dd style="margin-left: 5.0em">Specifies that a failed print job should stop the printer unless otherwise specified for the printer. The 'stop-printer' error policy is the default.
+<dt><b>FilterLimit </b><i>limit</i>
+<dd style="margin-left: 5.0em">Specifies the maximum cost of filters that are run concurrently, which can be used to minimize disk, memory, and CPU resource problems.
+A limit of 0 disables filter limiting.
+An average print to a non-PostScript printer needs a filter limit of about 200.
+A PostScript printer needs about half that (100).
+Setting the limit below these thresholds will effectively limit the scheduler to printing a single job at any time.
+The default limit is "0".
+<dt><b>FilterNice </b><i>nice-value</i>
+<dd style="margin-left: 5.0em">Specifies the scheduling priority (
+<b>nice</b>(8)
+value) of filters that are run to print a job.
+The nice value ranges from 0, the highest priority, to 19, the lowest priority.
+The default is 0.
+<dt><b>GSSServiceName </b><i>name</i>
+<dd style="margin-left: 5.0em">Specifies the service name when using Kerberos authentication.
+The default service name is "http."
+<dt><b>HostNameLookups On</b>
+<dd style="margin-left: 5.0em"><dt><b>HostNameLookups Off</b>
+<dd style="margin-left: 5.0em"><dt><b>HostNameLookups Double</b>
+<dd style="margin-left: 5.0em">Specifies whether to do reverse lookups on connecting clients.
+The "Double" setting causes
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8)</a>
+to verify that the hostname resolved from the address matches one of the addresses returned for that hostname.
+Double lookups also prevent clients with unregistered addresses from connecting to your server.
+The default is "Off" to avoid the potential server performance problems with hostname lookups.
+Only set this option to "On" or "Double" if absolutely required.
+<dt><b>JobKillDelay </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies the number of seconds to wait before killing the filters and backend associated with a canceled or held job.
+The default is "30".
+<dt><b>JobRetryInterval </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies the interval between retries of jobs in seconds.
+This is typically used for fax queues but can also be used with normal print queues whose error policy is "retry-job" or "retry-current-job".
+The default is "30".
+<dt><b>JobRetryLimit </b><i>count</i>
+<dd style="margin-left: 5.0em">Specifies the number of retries that are done for jobs.
+This is typically used for fax queues but can also be used with normal print queues whose error policy is "retry-job" or "retry-current-job".
+The default is "5".
+<dt><b>KeepAlive Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>KeepAlive No</b>
+<dd style="margin-left: 5.0em">Specifies whether to support HTTP keep-alive connections.
+The default is "Yes".
+<dt><b>KeepAliveTimeout </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies how long an idle client connection remains open.
+The default is "30".
+<dt><b>&lt;Limit </b><i>operation </i>...<b>> </b>... <b>&lt;/Limit></b>
+<dd style="margin-left: 5.0em">Specifies the IPP operations that are being limited inside a Policy section. IPP operation names are listed below in the section "IPP OPERATIONS".
+<dt><b>&lt;Limit </b><i>method </i>...<b>> </b>... <b>&lt;/Limit></b>
+<dd style="margin-left: 5.0em"><dt><b>&lt;LimitExcept </b><i>method </i>...<b>> </b>... <b>&lt;/LimitExcept></b>
+<dd style="margin-left: 5.0em">Specifies the HTTP methods that are being limited inside a Location section. HTTP method names are listed below in the section "HTTP METHODS".
+<dt><b>LimitRequestBody </b><i>size</i>
+<dd style="margin-left: 5.0em">Specifies the maximum size of print files, IPP requests, and HTML form data.
+The default is "0" which disables the limit check.
+<dt><b>Listen </b><i>ipv4-address</i><b>:</b><i>port</i>
+<dd style="margin-left: 5.0em"><dt><b>Listen [</b><i>ipv6-address</i><b>]:</b><i>port</i>
+<dd style="margin-left: 5.0em"><dt><b>Listen *:</b><i>port</i>
+<dd style="margin-left: 5.0em"><dt><b>Listen </b><i>/path/to/domain/socket</i>
+<dd style="margin-left: 5.0em">Listens to the specified address and port or domain socket path for connections.
+Multiple Listen directives can be provided to listen on multiple addresses.
+The Listen directive is similar to the Port directive but allows you to restrict access to specific interfaces or networks.
+<dt><b>ListenBackLog </b><i>number</i>
+<dd style="margin-left: 5.0em">Specifies the number of pending connections that will be allowed.
+This normally only affects very busy servers that have reached the MaxClients limit, but can also be triggered by large numbers of simultaneous connections.
+When the limit is reached, the operating system will refuse additional connections until the scheduler can accept the pending ones.
+The default is the OS-defined default limit, typically either "5" for older operating systems or "128" for newer operating systems.
+<dt><b>&lt;Location </b><i>/path</i><b>> </b>... <b>&lt;/Location></b>
+<dd style="margin-left: 5.0em">Specifies access control for the named location.
+Paths are documented below in the section "LOCATION PATHS".
+<dt><b>LogDebugHistory </b><i>number</i>
+<dd style="margin-left: 5.0em">Specifies the number of debugging messages that are retained for logging if an error occurs in a print job. Debug messages are logged regardless of the LogLevel setting.
+<dt><b>LogLevel </b>none
+<dd style="margin-left: 5.0em"><dt><b>LogLevel </b>emerg
+<dd style="margin-left: 5.0em"><dt><b>LogLevel </b>alert
+<dd style="margin-left: 5.0em"><dt><b>LogLevel </b>crit
+<dd style="margin-left: 5.0em"><dt><b>LogLevel </b>error
+<dd style="margin-left: 5.0em"><dt><b>LogLevel </b>warn
+<dd style="margin-left: 5.0em"><dt><b>LogLevel </b>notice
+<dd style="margin-left: 5.0em"><dt><b>LogLevel </b>info
+<dd style="margin-left: 5.0em"><dt><b>LogLevel </b>debug
+<dd style="margin-left: 5.0em"><dt><b>LogLevel </b>debug2
+<dd style="margin-left: 5.0em">Specifies the level of logging for the ErrorLog file.
+The value "none" stops all logging while "debug2" logs everything.
+The default is "warn".
+<dt><b>LogTimeFormat </b>standard
+<dd style="margin-left: 5.0em"><dt><b>LogTimeFormat </b>usecs
+<dd style="margin-left: 5.0em">Specifies the format of the date and time in the log files.
+The value "standard" is the default and logs whole seconds while "usecs" logs microseconds.
+<dt><b>MaxClients </b><i>number</i>
+<dd style="margin-left: 5.0em">Specifies the maximum number of simultaneous clients that are allowed by the scheduler.
+The default is "100".
+<dt><b>MaxClientsPerHost </b><i>number</i>
+<dd style="margin-left: 5.0em">Specifies the maximum number of simultaneous clients that are allowed from a
single address.
-</dd>
-<dt>MaxCopies number
-</dt>
-<dd></dd>
-<dd>Specifies the maximum number of copies that a user can print of each job.
-</dd>
-<dt>MaxHoldTime seconds
-</dt>
-<dd></dd>
-<dd>Specifies the maximum time a job may remain in the "indefinite" hold state
-before it is canceled. Set to 0 to disable cancellation of held jobs.
-</dd>
-<dt>MaxJobs number
-</dt>
-<dd></dd>
-<dd>Specifies the maximum number of simultaneous jobs to support.
-</dd>
-<dt>MaxJobsPerPrinter number
-</dt>
-<dd></dd>
-<dd>Specifies the maximum number of simultaneous jobs per printer to support.
-</dd>
-<dt>MaxJobsPerUser number
-</dt>
-<dd></dd>
-<dd>Specifies the maximum number of simultaneous jobs per user to support.
-</dd>
-<dt>MaxJobTime seconds
-</dt>
-<dd></dd>
-<dd>Specifies the maximum time a job may take to print before it is canceled. The
-default is 10800 seconds (3 hours). Set to 0 to disable cancellation of "stuck"
-jobs.
-</dd>
-<dt>MaxLogSize number-bytes
-</dt>
-<dd></dd>
-<dd>Specifies the maximum size of the log files before they are
-rotated (0 to disable rotation)
-</dd>
-<dt>MaxRequestSize number-bytes
-</dt>
-<dd></dd>
-<dd>Specifies the maximum request/file size in bytes (0 for no limit)
-</dd>
-<dt>MultipleOperationTimeout seconds
-</dt>
-<dd></dd>
-<dd>Specifies the maximum amount of time to allow between files in a multiple file
-print job.
-</dd>
-<dt>Order allow,deny
-</dt>
-<dd></dd>
-<dt>Order deny,allow
-</dt>
-<dd></dd>
-<dd>Specifies the order of HTTP access control (allow,deny or deny,allow)
-</dd>
-<dt>PageLogFormat format string
-</dt>
-<dd></dd>
-<dd>Specifies the format of page log lines.
-</dd>
-<dt>PassEnv variable [... variable]
-</dt>
-<dd></dd>
-<dd>Passes the specified environment variable(s) to child processes.
-</dd>
-<dt>&lt;Policy name> ... &lt;/Policy>
-</dt>
-<dd></dd>
-<dd>Specifies access control for the named policy.
-</dd>
-<dt>Port number
-</dt>
-<dd></dd>
-<dd>Specifies a port number to listen to for HTTP requests.
-</dd>
-<dt>PreserveJobFiles Yes
-</dt>
-<dd></dd>
-<dt>PreserveJobFiles No
-</dt>
-<dd></dd>
-<dd>Specifies whether or not to preserve job files after they are printed.
-</dd>
-<dt>PreserveJobHistory Yes
-</dt>
-<dd></dd>
-<dt>PreserveJobHistory No
-</dt>
-<dd></dd>
-<dd>Specifies whether or not to preserve the job history after they are
-printed.
-</dd>
-<dt>PrintcapFormat bsd
-</dt>
-<dd></dd>
-<dt>PrintcapFormat plist
-</dt>
-<dd></dd>
-<dt>PrintcapFormat solaris
-</dt>
-<dd></dd>
-<dd>Specifies the format of the printcap file.
-</dd>
-<dt>ReloadTimeout seconds
-</dt>
-<dd></dd>
-<dd>Specifies the amount of time to wait for job completion before
-restarting the scheduler.
-</dd>
-<dt>Require group group-name-list
-</dt>
-<dd></dd>
-<dt>Require user user-name-list
-</dt>
-<dd></dd>
-<dt>Require valid-user
-</dt>
-<dd></dd>
-<dd>Specifies that user or group authentication is required.
-</dd>
-<dt>RIPCache bytes
-</dt>
-<dd></dd>
-<dd>Specifies the maximum amount of memory to use when converting images
-and PostScript files to bitmaps for a printer.
-</dd>
-<dt>Satisfy all
-</dt>
-<dd></dd>
-<dt>Satisfy any
-</dt>
-<dd></dd>
-<dd>Specifies whether all or any limits set for a Location must be
-satisfied to allow access.
-</dd>
-<dt>ServerAdmin user@domain.com
-</dt>
-<dd></dd>
-<dd>Specifies the email address of the server administrator.
-</dd>
-<dt>ServerAlias hostname [... hostname]
-</dt>
-<dd></dd>
-<dt>ServerAlias *
-</dt>
-<dd></dd>
-<dd>Specifies an alternate name that the server is known by. The special name "*"
-allows any name to be used.
-</dd>
-<dt>ServerName hostname-or-ip-address
-</dt>
-<dd></dd>
-<dd>Specifies the fully-qualified hostname of the server.
-</dd>
-<dt>ServerTokens Full
-</dt>
-<dd></dd>
-<dt>ServerTokens Major
-</dt>
-<dd></dd>
-<dt>ServerTokens Minimal
-</dt>
-<dd></dd>
-<dt>ServerTokens Minor
-</dt>
-<dd></dd>
-<dt>ServerTokens None
-</dt>
-<dd></dd>
-<dt>ServerTokens OS
-</dt>
-<dd></dd>
-<dt>ServerTokens ProductOnly
-</dt>
-<dd></dd>
-<dd>Specifies what information is included in the Server header of HTTP
-responses.
-</dd>
-<dt>SetEnv variable value
-</dt>
-<dd></dd>
-<dd>Set the specified environment variable to be passed to child processes.
-</dd>
-<dt>SSLListen
-</dt>
-<dd></dd>
-<dd>Listens on the specified address and port for encrypted connections.
-</dd>
-<dt>SSLOptions None
-</dt>
-<dd></dd>
-<dt>SSLOptions NoEmptyFragments
-</dt>
-<dd></dd>
-<dd>Sets SSL/TLS protocol options for encrypted connections.
-</dd>
-<dt>SSLPort
-</dt>
-<dd></dd>
-<dd>Listens on the specified port for encrypted connections.
-</dd>
-<dt>StrictConformance Yes
-</dt>
-<dd></dd>
-<dt>StrictConformance No
-</dt>
-<dd></dd>
-<dd>Specifies whether the scheduler requires clients to strictly adhere to the IPP
-specifications. The default is No.
-</dd>
-<dt>SubscriptionPrivateAccess all
-</dt>
-<dd></dd>
-<dt>SubscriptionPrivateAccess default
-</dt>
-<dd></dd>
-<dt>SubscriptionPrivateAccess {user|@group|@ACL|@OWNER|@SYSTEM}+
-</dt>
-<dd></dd>
-<dd>Specifies an access list for a subscription's private values. The "default"
-access list is "@OWNER @SYSTEM". "@ACL" maps to the printer's
-requesting-user-name-allowed or requesting-user-name-denied values.
-</dd>
-<dt>SubscriptionPrivateValues all
-</dt>
-<dd></dd>
-<dt>SubscriptionPrivateValues default
-</dt>
-<dd></dd>
-<dt>SubscriptionPrivateValues none
-</dt>
-<dd></dd>
-<dt>SubscriptionPrivateValues attribute-name-1 [ ... attribute-name-N ]
-</dt>
-<dd>Specifies the list of job values to make private. The "default" values are
-"notify-events", "notify-pull-method", "notify-recipient-uri",
-"notify-subscriber-user-name", and "notify-user-data".
-</dd>
-<dt>Timeout seconds
-</dt>
-<dd></dd>
-<dd>Specifies the HTTP request timeout in seconds.
-</dd>
-<dt>WebInterface yes
-</dt>
-<dd></dd>
-<dt>WebInterface no
-</dt>
-<dd>Specifies whether the web interface is enabled.
-</dd>
+The default is the MaxClients value.
+<dt><b>MaxCopies </b><i>number</i>
+<dd style="margin-left: 5.0em">Specifies the maximum number of copies that a user can print of each job.
+The default is "9999".
+<dt><b>MaxHoldTime </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies the maximum time a job may remain in the "indefinite" hold state before it is canceled.
+The default is "0" which disables cancellation of held jobs.
+<dt><b>MaxJobs </b><i>number</i>
+<dd style="margin-left: 5.0em">Specifies the maximum number of simultaneous jobs that are allowed.
+Set to "0" to allow an unlimited number of jobs.
+The default is "500".
+<dt><b>MaxJobsPerPrinter </b><i>number</i>
+<dd style="margin-left: 5.0em">Specifies the maximum number of simultaneous jobs that are allowed per printer.
+The default is "0" which allows up to MaxJobs jobs per printer.
+<dt><b>MaxJobsPerUser </b><i>number</i>
+<dd style="margin-left: 5.0em">Specifies the maximum number of simultaneous jobs that are allowed per user.
+The default is "0" which allows up to MaxJobs jobs per user.
+<dt><b>MaxJobTime </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies the maximum time a job may take to print before it is canceled.
+Set to "0" to disable cancellation of "stuck" jobs.
+The default is "10800" (3 hours).
+<dt><b>MaxLogSize </b><i>size</i>
+<dd style="margin-left: 5.0em">Specifies the maximum size of the log files before they are rotated.
+The value "0" disables log rotation.
+The default is "1048576" (1MB).
+<dt><b>MultipleOperationTimeout </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies the maximum amount of time to allow between files in a multiple file print job.
+The default is "300" (5 minutes).
+<dt><b>PageLogFormat </b><i>format-string</i>
+<dd style="margin-left: 5.0em">Specifies the format of PageLog lines.
+Sequences beginning with percent (%) characters are replaced with the corresponding information, while all other characters are copied literally.
+The following percent sequences are recognized:
+<pre class="man">
+
+ "%%" inserts a single percent character.
+ "%{name}" inserts the value of the specified IPP attribute.
+ "%C" inserts the number of copies for the current page.
+ "%P" inserts the current page number.
+ "%T" inserts the current date and time in common log format.
+ "%j" inserts the job ID.
+ "%p" inserts the printer name.
+ "%u" inserts the username.
+
+</pre>
+The default is "%p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}".
+<dt><b>PassEnv </b><i>variable </i>[ ... <i>variable </i>]
+<dd style="margin-left: 5.0em">Passes the specified environment variable(s) to child processes.
+<dt><b>&lt;Policy </b><i>name</i><b>> </b>... <b>&lt;/Policy></b>
+<dd style="margin-left: 5.0em">Specifies access control for the named policy.
+<dt><b>Port </b><i>number</i>
+<dd style="margin-left: 5.0em">Listens to the specified port number for connections.
+<dt><b>PreserveJobFiles Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>PreserveJobFiles No</b>
+<dd style="margin-left: 5.0em"><dt><b>PreserveJobFiles </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies whether job files (documents) are preserved after a job is printed.
+If a numeric value is specified, job files are preserved for the indicated number of seconds after printing.
+The default is "86400" (preserve 1 day).
+<dt><b>PreserveJobHistory Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>PreserveJobHistory No</b>
+<dd style="margin-left: 5.0em"><dt><b>PreserveJobHistory </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies whether the job history is preserved after a job is printed.
+If a numeric value is specified, the job history is preserved for the indicated number of seconds after printing.
+If "Yes", the job history is preserved until the MaxJobs limit is reached.
+The default is "Yes".
+<dt><b>ReloadTimeout </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies the amount of time to wait for job completion before restarting the scheduler.
+The default is "30".
+<dt><b>RIPCache </b><i>size</i>
+<dd style="margin-left: 5.0em">Specifies the maximum amount of memory to use when converting documents into bitmaps for a printer.
+The default is "128m".
+<dt><b>ServerAdmin </b><i>email-address</i>
+<dd style="margin-left: 5.0em">Specifies the email address of the server administrator.
+The default value is "root@ServerName".
+<dt><b>ServerAlias </b><i>hostname </i>[ ... <i>hostname </i>]
+<dd style="margin-left: 5.0em"><dt><b>ServerAlias *</b>
+<dd style="margin-left: 5.0em">The ServerAlias directive is used for HTTP Host header validation when clients connect to the scheduler from external interfaces.
+Using the special name "*" can expose your system to known browser-based DNS rebinding attacks, even when accessing sites through a firewall.
+If the auto-discovery of alternate names does not work, we recommend listing each alternate name with a ServerAlias directive instead of using "*".
+<dt><b>ServerName </b><i>hostname</i>
+<dd style="margin-left: 5.0em">Specifies the fully-qualified hostname of the server.
+The default is the value reported by the
+<b>hostname</b>(1)
+command.
+<dt><b>ServerTokens None</b>
+<dd style="margin-left: 5.0em"><dt><b>ServerTokens ProductOnly</b>
+<dd style="margin-left: 5.0em"><dt><b>ServerTokens Major</b>
+<dd style="margin-left: 5.0em"><dt><b>ServerTokens Minor</b>
+<dd style="margin-left: 5.0em"><dt><b>ServerTokens Minimal</b>
+<dd style="margin-left: 5.0em"><dt><b>ServerTokens OS</b>
+<dd style="margin-left: 5.0em"><dt><b>ServerTokens Full</b>
+<dd style="margin-left: 5.0em">Specifies what information is included in the Server header of HTTP responses.
+"None" disables the Server header.
+"ProductOnly" reports "CUPS".
+"Major" reports "CUPS 2".
+"Minor" reports "CUPS 2.0".
+"Minimal" reports "CUPS 2.0.0".
+"OS" reports "CUPS 2.0.0 (UNAME)" where UNAME is the output of the
+<b>uname</b>(1)
+command.
+"Full" reports "CUPS 2.0.0 (UNAME) IPP/2.0".
+The default is "Minimal".
+<dt><b>SetEnv </b><i>variable value</i>
+<dd style="margin-left: 5.0em">Set the specified environment variable to be passed to child processes.
+<dt><dt><b>SSLListen </b><i>ipv4-address</i><b>:</b><i>port</i>
+<dd style="margin-left: 5.0em"><dt><b>SSLListen [</b><i>ipv6-address</i><b>]:</b><i>port</i>
+<dd style="margin-left: 5.0em"><dt><b>SSLListen *:</b><i>port</i>
+<dd style="margin-left: 5.0em">Listens on the specified address and port for encrypted connections.
+<dt><b>SSLPort </b><i>port</i>
+<dd style="margin-left: 5.0em">Listens on the specified port for encrypted connections.
+<dt><b>StrictConformance Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>StrictConformance No</b>
+<dd style="margin-left: 5.0em">Specifies whether the scheduler requires clients to strictly adhere to the IPP specifications.
+The default is "No".
+<dt><b>Timeout </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies the HTTP request timeout.
+The default is "300" (5 minutes).
+<dt><b>WebInterface yes</b>
+<dd style="margin-left: 5.0em"><dt><b>WebInterface no</b>
+<dd style="margin-left: 5.0em">Specifies whether the web interface is enabled.
+The default is "No".
+</dl>
+<h3><a name="HTTP_METHOD_NAMES">Http Method Names</a></h3>
+The following HTTP methods are supported by
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8):</a>
+<dl class="man">
+<dt>GET
+<dd style="margin-left: 5.0em">Used by a client to download icons and other printer resources and to access the CUPS web interface.
+<dt>HEAD
+<dd style="margin-left: 5.0em">Used by a client to get the type, size, and modification date of resources.
+<dt>OPTIONS
+<dd style="margin-left: 5.0em">Used by a client to establish a secure (SSL/TLS) connection.
+<dt>POST
+<dd style="margin-left: 5.0em">Used by a client to submit IPP requests and HTML forms from the CUPS web interface.
+<dt>PUT
+<dd style="margin-left: 5.0em">Used by a client to upload configuration files.
+</dl>
+<h3><a name="IPP_OPERATION_NAMES">Ipp Operation Names</a></h3>
+The following IPP operations are supported by
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8):</a>
+<dl class="man">
+<dt>CUPS-Accept-Jobs
+<dd style="margin-left: 5.0em">Allows a printer to accept new jobs.
+<dt>CUPS-Add-Modify-Class
+<dd style="margin-left: 5.0em">Adds or modifies a printer class.
+<dt>CUPS-Add-Modify-Printer
+<dd style="margin-left: 5.0em">Adds or modifies a printer.
+<dt>CUPS-Authenticate-Job
+<dd style="margin-left: 5.0em">Releases a job that is held for authentication.
+<dt>CUPS-Delete-Class
+<dd style="margin-left: 5.0em">Deletes a printer class.
+<dt>CUPS-Delete-Printer
+<dd style="margin-left: 5.0em">Deletes a printer.
+<dt>CUPS-Get-Classes
+<dd style="margin-left: 5.0em">Gets a list of printer classes.
+<dt>CUPS-Get-Default
+<dd style="margin-left: 5.0em">Gets the server default printer or printer class.
+<dt>CUPS-Get-Devices
+<dd style="margin-left: 5.0em">Gets a list of devices that are currently available.
+<dt>CUPS-Get-Document
+<dd style="margin-left: 5.0em">Gets a document file for a job.
+<dt>CUPS-Get-PPD
+<dd style="margin-left: 5.0em">Gets a PPD file.
+<dt>CUPS-Get-PPDs
+<dd style="margin-left: 5.0em">Gets a list of installed PPD files.
+<dt>CUPS-Get-Printers
+<dd style="margin-left: 5.0em">Gets a list of printers.
+<dt>CUPS-Move-Job
+<dd style="margin-left: 5.0em">Moves a job.
+<dt>CUPS-Reject-Jobs
+<dd style="margin-left: 5.0em">Prevents a printer from accepting new jobs.
+<dt>CUPS-Set-Default
+<dd style="margin-left: 5.0em">Sets the server default printer or printer class.
+<dt>Cancel-Job
+<dd style="margin-left: 5.0em">Cancels a job.
+<dt>Cancel-Jobs
+<dd style="margin-left: 5.0em">Cancels one or more jobs.
+<dt>Cancel-My-Jobs
+<dd style="margin-left: 5.0em">Cancels one or more jobs creates by a user.
+<dt>Cancel-Subscription
+<dd style="margin-left: 5.0em">Cancels a subscription.
+<dt>Close-Job
+<dd style="margin-left: 5.0em">Closes a job that is waiting for more documents.
+<dt>Create-Job
+<dd style="margin-left: 5.0em">Creates a new job with no documents.
+<dt>Create-Job-Subscriptions
+<dd style="margin-left: 5.0em">Creates a subscription for job events.
+<dt>Create-Printer-Subscriptions
+<dd style="margin-left: 5.0em">Creates a subscription for printer events.
+<dt>Get-Job-Attributes
+<dd style="margin-left: 5.0em">Gets information about a job.
+<dt>Get-Jobs
+<dd style="margin-left: 5.0em">Gets a list of jobs.
+<dt>Get-Notifications
+<dd style="margin-left: 5.0em">Gets a list of event notifications for a subscription.
+<dt>Get-Printer-Attributes
+<dd style="margin-left: 5.0em">Gets information about a printer or printer class.
+<dt>Get-Subscription-Attributes
+<dd style="margin-left: 5.0em">Gets information about a subscription.
+<dt>Get-Subscriptions
+<dd style="margin-left: 5.0em">Gets a list of subscriptions.
+<dt>Hold-Job
+<dd style="margin-left: 5.0em">Holds a job from printing.
+<dt>Hold-New-Jobs
+<dd style="margin-left: 5.0em">Holds all new jobs from printing.
+<dt>Pause-Printer
+<dd style="margin-left: 5.0em">Stops processing of jobs by a printer or printer class.
+<dt>Pause-Printer-After-Current-Job
+<dd style="margin-left: 5.0em">Stops processing of jobs by a printer or printer class after the current job is finished.
+<dt>Print-Job
+<dd style="margin-left: 5.0em">Creates a new job with a single document.
+<dt>Purge-Jobs
+<dd style="margin-left: 5.0em">Cancels one or more jobs and deletes the job history.
+<dt>Release-Held-New-Jobs
+<dd style="margin-left: 5.0em">Allows previously held jobs to print.
+<dt>Release-Job
+<dd style="margin-left: 5.0em">Allows a job to print.
+<dt>Renew-Subscription
+<dd style="margin-left: 5.0em">Renews a subscription.
+<dt>Restart-Job
+<dd style="margin-left: 5.0em">Reprints a job, if possible.
+<dt>Send-Document
+<dd style="margin-left: 5.0em">Adds a document to a job.
+<dt>Set-Job-Attributes
+<dd style="margin-left: 5.0em">Changes job information.
+<dt>Set-Printer-Attributes
+<dd style="margin-left: 5.0em">Changes printer or printer class information.
+<dt>Validate-Job
+<dd style="margin-left: 5.0em">Validates options for a new job.
+</dl>
+<h3><a name="LOCATION_PATHS">Location Paths</a></h3>
+The following paths are commonly used when configuring
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8):</a>
+<dl class="man">
+<dt>/
+<dd style="margin-left: 5.0em">The path for all get operations (get-printers, get-jobs, etc.)
+<dt>/admin
+<dd style="margin-left: 5.0em">The path for all administration operations (add-printer, delete-printer, start-printer, etc.)
+<dt>/admin/conf
+<dd style="margin-left: 5.0em">The path for access to the CUPS configuration files (cupsd.conf, client.conf, etc.)
+<dt>/admin/log
+<dd style="margin-left: 5.0em">The path for access to the CUPS log files (access_log, error_log, page_log)
+<dt>/classes
+<dd style="margin-left: 5.0em">The path for all printer classes
+<dt>/classes/name
+<dd style="margin-left: 5.0em">The resource for the named printer class
+<dt>/jobs
+<dd style="margin-left: 5.0em">The path for all jobs (hold-job, release-job, etc.)
+<dt>/jobs/id
+<dd style="margin-left: 5.0em">The path for the specified job.
+<dt>/printers
+<dd style="margin-left: 5.0em">The path for all printers
+<dt>/printers/name
+<dd style="margin-left: 5.0em">The path for the named printer
+<dt>/printers/name.png
+<dd style="margin-left: 5.0em">The icon file path for the named printer
+<dt>/printers/name.ppd
+<dd style="margin-left: 5.0em">The PPD file path for the named printer
</dl>
+<h3><a name="DIRECTIVES_VALID_WITHIN_LOCATION_AND_LIMIT_SECTIONS">Directives Valid Within Location And Limit Sections</a></h3>
+The following directives may be placed inside Location and Limit sections in the <b>cupsd.conf</b> file:
+<dl class="man">
+<dt><b>Allow all</b>
+<dd style="margin-left: 5.0em"><dt><b>Allow none</b>
+<dd style="margin-left: 5.0em"><dt><b>Allow </b><i>host.domain.com</i>
+<dd style="margin-left: 5.0em"><dt><b>Allow *.</b><i>domain.com</i>
+<dd style="margin-left: 5.0em"><dt><b>Allow </b><i>ipv4-address</i>
+<dd style="margin-left: 5.0em"><dt><b>Allow </b><i>ipv4-address</i><b>/</b><i>netmask</i>
+<dd style="margin-left: 5.0em"><dt><b>Allow </b><i>ipv4-address</i><b>/</b><i>mm</i>
+<dd style="margin-left: 5.0em"><dt><b>Allow [</b><i>ipv6-address</i><b>]</b>
+<dd style="margin-left: 5.0em"><dt><b>Allow [</b><i>ipv6-address</i><b>]/</b><i>mm</i>
+<dd style="margin-left: 5.0em"><dt><b>Allow @IF(</b><i>name</i><b>)</b>
+<dd style="margin-left: 5.0em"><dt><b>Allow @LOCAL</b>
+<dd style="margin-left: 5.0em">Allows access from the named hosts, domains, addresses, or interfaces.
+The Order directive controls whether Allow lines are evaluated before or after Deny lines.
+<dt><b>AuthType None</b>
+<dd style="margin-left: 5.0em"><dt><b>AuthType Basic</b>
+<dd style="margin-left: 5.0em"><dt><b>AuthType Default</b>
+<dd style="margin-left: 5.0em"><dt><b>AuthType Negotiate</b>
+<dd style="margin-left: 5.0em">Specifies the type of authentication required.
+The value "Default" corresponds to the DefaultAuthType value.
+<dt><b>Deny all</b>
+<dd style="margin-left: 5.0em"><dt><b>Deny none</b>
+<dd style="margin-left: 5.0em"><dt><b>Deny </b><i>host.domain.com</i>
+<dd style="margin-left: 5.0em"><dt><b>Deny *.</b><i>domain.com</i>
+<dd style="margin-left: 5.0em"><dt><b>Deny </b><i>ipv4-address</i>
+<dd style="margin-left: 5.0em"><dt><b>Deny </b><i>ipv4-address</i><b>/</b><i>netmask</i>
+<dd style="margin-left: 5.0em"><dt><b>Deny </b><i>ipv4-address</i><b>/</b><i>mm</i>
+<dd style="margin-left: 5.0em"><dt><b>Deny [</b><i>ipv6-address</i><b>]</b>
+<dd style="margin-left: 5.0em"><dt><b>Deny [</b><i>ipv6-address</i><b>]/</b><i>mm</i>
+<dd style="margin-left: 5.0em"><dt><b>Deny @IF(</b><i>name</i><b>)</b>
+<dd style="margin-left: 5.0em"><dt><b>Deny @LOCAL</b>
+<dd style="margin-left: 5.0em">Denies access from the named hosts, domains, addresses, or interfaces.
+The Order directive controls whether Deny lines are evaluated before or after Allow lines.
+<dt><b>Encryption IfRequested</b>
+<dd style="margin-left: 5.0em"><dt><b>Encryption Never</b>
+<dd style="margin-left: 5.0em"><dt><b>Encryption Required</b>
+<dd style="margin-left: 5.0em">Specifies the level of encryption that is required for a particular location.
+The default value is "IfRequested".
+<dt><b>Order allow,deny</b>
+<dd style="margin-left: 5.0em">Specifies that access is denied by default. Allow lines are then processed followed by Deny lines to determine whether a client may access a particular resource.
+<dt><b>Order deny,allow</b>
+<dd style="margin-left: 5.0em">Specifies that access is allowed by default. Deny lines are then processed followed by Allow lines to determine whether a client may access a particular resource.
+<dt><b>Require group </b><i>group-name </i>[ <i>group-name </i>... ]
+<dd style="margin-left: 5.0em">Specifies that an authenticated user must be a member of one of the named groups.
+<dt><b>Require user {</b><i>user-name</i>|<b>@</b><i>group-name</i>} ...
+<dd style="margin-left: 5.0em">Specifies that an authenticated user must match one of the named users or be a member of one of the named groups.
+The group name "@SYSTEM" corresponds to the list of groups defined by the SystemGroup directive in the
+<a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5)</a>
+file.
+The group name "@OWNER" corresponds to the owner of the resource, for example the person that submitted a print job.
+<dt><b>Require valid-user</b>
+<dd style="margin-left: 5.0em">Specifies that any authenticated user is acceptable.
+<dt><b>Satisfy all</b>
+<dd style="margin-left: 5.0em">Specifies that all Allow, AuthType, Deny, Order, and Require conditions must be satisfied to allow access.
+<dt><b>Satisfy any</b>
+<dd style="margin-left: 5.0em">Specifies that any a client may access a resource if either the authentication (AuthType/Require) or address (Allow/Deny/Order) conditions are satisfied.
+For example, this can be used to require authentication only for remote accesses.
+</dl>
+<h3><a name="DIRECTIVES_VALID_WITHIN_POLICY_SECTIONS">Directives Valid Within Policy Sections</a></h3>
+The following directives may be placed inside Policy sections in the <b>cupsd.conf</b> file:
+<dl class="man">
+<dt><b>JobPrivateAccess all</b>
+<dd style="margin-left: 5.0em"><dt><b>JobPrivateAccess default</b>
+<dd style="margin-left: 5.0em"><dt><b>JobPrivateAccess </b>{<i>user</i>|<b>@</b><i>group</i>|<b>@ACL</b>|<b>@OWNER</b>|<b>@SYSTEM</b>} ...
+<dd style="margin-left: 5.0em">Specifies an access list for a job's private values.
+The "default" access list is "@OWNER @SYSTEM".
+"@ACL" maps to the printer's requesting-user-name-allowed or requesting-user-name-denied values.
+"@OWNER" maps to the job's owner.
+"@SYSTEM" maps to the groups listed for the SystemGroup directive in the
+<a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5)</a>
+file.
+<dt><b>JobPrivateValues all</b>
+<dd style="margin-left: 5.0em"><dt><b>JobPrivateValues default</b>
+<dd style="margin-left: 5.0em"><dt><b>JobPrivateValues none</b>
+<dd style="margin-left: 5.0em"><dt><b>JobPrivateValues </b><i>attribute-name </i>[ ... <i>attribute-name </i>]
+<dd style="margin-left: 5.0em">Specifies the list of job values to make private.
+The "default" values are "job-name", "job-originating-host-name", "job-originating-user-name", and "phone".
+<dt><b>SubscriptionPrivateAccess all</b>
+<dd style="margin-left: 5.0em"><dt><b>SubscriptionPrivateAccess default</b>
+<dd style="margin-left: 5.0em"><dt><b>SubscriptionPrivateAccess </b>{<i>user</i>|<b>@</b><i>group</i>|<b>@ACL</b>|<b>@OWNER</b>|<b>@SYSTEM</b>} ...
+<dd style="margin-left: 5.0em">Specifies an access list for a subscription's private values.
+The "default" access list is "@OWNER @SYSTEM".
+"@ACL" maps to the printer's requesting-user-name-allowed or requesting-user-name-denied values.
+"@OWNER" maps to the job's owner.
+"@SYSTEM" maps to the groups listed for the SystemGroup directive in the
+<a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5)</a>
+file.
+<dt><b>SubscriptionPrivateValues all</b>
+<dd style="margin-left: 5.0em"><dt><b>SubscriptionPrivateValues default</b>
+<dd style="margin-left: 5.0em"><dt><b>SubscriptionPrivateValues none</b>
+<dd style="margin-left: 5.0em"><dt><b>SubscriptionPrivateValues </b><i>attribute-name </i>[ ... <i>attribute-name </i>]
+<dd style="margin-left: 5.0em">Specifies the list of subscription values to make private.
+The "default" values are "notify-events", "notify-pull-method", "notify-recipient-uri", "notify-subscriber-user-name", and "notify-user-data".
+</dl>
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+The <b>cupsd.conf</b> file format is based on the Apache HTTP Server configuration file format.
+<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+Log everything with a maximum log file size of 32 megabytes:
+<pre class="man">
+
+ AccessLogLevel all
+ LogLevel debug2
+ MaxLogSize 32m
+
+</pre>
+Require authentication for accesses from outside the 10. network:
+<pre class="man">
+
+ &lt;Location />
+ Order allow,deny
+ Allow from 10./8
+ AuthType Basic
+ Require valid-user
+ Satisfy any
+ &lt;/Location>
+</pre>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-classes.conf.html?TOPIC=Man+Pages'>classes.conf(5)</a>, <a href='man-cups-files.conf.html?TOPIC=Man+Pages'>cups-files.conf(5)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>,
-<a href='man-mime.convs.html?TOPIC=Man+Pages'>mime.convs(5)</a>, <a href='man-mime.types.html?TOPIC=Man+Pages'>mime.types(5)</a>, <a href='man-printers.conf.html?TOPIC=Man+Pages'>printers.conf(5)</a>,
-<a href='man-subscriptions.conf.html?TOPIC=Man+Pages'>subscriptions.conf(5)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-classes.conf.html?TOPIC=Man+Pages"><b>classes.conf</b>(5),</a>
+<a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-mime.convs.html?TOPIC=Man+Pages"><b>mime.convs</b>(5),</a>
+<a href="man-mime.types.html?TOPIC=Man+Pages"><b>mime.types</b>(5),</a>
+<a href="man-printers.conf.html?TOPIC=Man+Pages"><b>printers.conf</b>(5),</a>
+<a href="man-subscriptions.conf.html?TOPIC=Man+Pages"><b>subscriptions.conf</b>(5),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,65 +10,108 @@
<h2 class="title"><a name="NAME">Name</a></h2>
cupsd - cups scheduler
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cupsd
-</b>[ -c
-<i>config-file
-</i>] [ -f ] [ -F ] [ -h ] [ -l ] [ -t ]
+<b>cupsd</b>
+[
+<b>-c</b>
+<i>config-file</i>
+] [
+<b>-f</b>
+] [
+<b>-F</b>
+] [
+<b>-h</b>
+] [
+<b>-l</b>
+] [
+<b>-t</b>
+]
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cupsd</i> is the scheduler for CUPS. It implements a printing system based
-upon the Internet Printing Protocol, version 2.1. If no options are specified
-on the command-line then the default configuration file
-<i>/etc/cups/cupsd.conf</i> will be used.
+<b>cupsd</b>
+is the scheduler for CUPS. It implements a printing system based upon the Internet Printing Protocol, version 2.1. If no options are specified on the command-line then the default configuration file
+<i>/etc/cups/cupsd.conf</i>
+will be used.
<h2 class="title"><a name="OPTIONS">Options</a></h2>
-<dl>
-<dt>-c config-file
-</dt>
-<dd></dd>
-<dd>Uses the named configuration file.
-</dd>
-<dt>-f
-</dt>
-<dd></dd>
-<dd>Run <i>cupsd</i> in the foreground; the default is to run in the
-background as a "daemon".
-</dd>
-<dt>-F
-</dt>
-<dd></dd>
-<dd>Run <i>cupsd</i> in the foreground but detach the process from the
-controlling terminal and current directory. This is useful for
-running <i>cupsd</i> from <i>init(8)</i>.
-</dd>
-<dt>-h
-</dt>
-<dd></dd>
-<dd>Shows the program usage.
-</dd>
-<dt>-l
-</dt>
-<dd></dd>
-<dd>This option is passed to <i>cupsd</i> when it is run from
-<i>launchd(8)</i>.
-</dd>
-<dt>-t
-</dt>
-<dd></dd>
-<dd>Test the configuration file for syntax errors.
-</dd>
+<dl class="man">
+<dt><b>-c</b><i> config-file</i>
+<dd style="margin-left: 5.0em">Uses the named configuration file.
+<dt><b>-f</b>
+<dd style="margin-left: 5.0em">Run
+<b>cupsd</b>
+in the foreground; the default is to run in the background as a "daemon".
+<dt><b>-F</b>
+<dd style="margin-left: 5.0em">Run
+<b>cupsd</b>
+in the foreground but detach the process from the controlling terminal and current directory. This is useful for running
+<b>cupsd</b>
+from
+<b>init</b>(8).
+<dt><b>-h</b>
+<dd style="margin-left: 5.0em">Shows the program usage.
+<dt><b>-l</b>
+<dd style="margin-left: 5.0em">This option is passed to
+<b>cupsd</b>
+when it is run from
+<b>launchd</b>(8)
+or
+<b>systemd</b>(8).
+<dt><b>-t</b>
+<dd style="margin-left: 5.0em">Test the configuration file for syntax errors.
</dl>
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-<i>cupsd</i> implements all of the required IPP/2.1 attributes and
-operations. It also implements several CUPS-specific administration
-operations.
+<h2 class="title"><a name="FILES">Files</a></h2>
+<pre class="man">
+<i>/etc/cups/classes.conf</i>
+<i>/etc/cups/cups-files.conf</i>
+<i>/etc/cups/cupsd.conf</i>
+<i>/usr/share/cups/mime/mime.convs</i>
+<i>/usr/share/cups/mime/mime.types</i>
+<i>/etc/cups/printers.conf</i>
+<i>/etc/cups/subscriptions.conf</i>
+</pre>
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+<b>cupsd</b>
+implements all of the required IPP/2.1 attributes and operations. It also implements several CUPS-specific administrative operations.
+<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+Run
+<b>cupsd</b>
+in the background with the default configuration file:
+<pre class="man">
+
+ cupsd
+
+</pre>
+Test a configuration file called
+<i>test.conf</i>:
+<pre class="man">
+
+ cupsd -t -c test.conf
+
+</pre>
+Run
+<b>cupsd</b>
+in the foreground with a test configuration file called
+<i>test.conf</i>:
+<pre class="man">
+
+ cupsd -f -c test.conf
+
+</pre>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-backend.html?TOPIC=Man+Pages'>backend(7)</a>, <a href='man-classes.conf.html?TOPIC=Man+Pages'>classes.conf(5)</a>, <a href='man-cups-deviced.html?TOPIC=Man+Pages'>cups-deviced(8)</a>,
-<a href='man-cups-driverd.html?TOPIC=Man+Pages'>cups-driverd(8)</a>, <a href='man-cups-lpd.html?TOPIC=Man+Pages'>cups-lpd(8)</a>, <i>cups-polld(8)</i>,
-<a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>, <a href='man-filter.html?TOPIC=Man+Pages'>filter(7)</a>, <i>launchd(8)</i>,
-<a href='man-mime.convs.html?TOPIC=Man+Pages'>mime.convs(5)</a>, <a href='man-mime.types.html?TOPIC=Man+Pages'>mime.types(5)</a>, <a href='man-printers.conf.html?TOPIC=Man+Pages'>printers.conf(5)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-backend.html?TOPIC=Man+Pages"><b>backend</b>(7),</a>
+<a href="man-classes.conf.html?TOPIC=Man+Pages"><b>classes.conf</b>(5),</a>
+<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1),</a>
+<a href="man-cups-lpd.html?TOPIC=Man+Pages"><b>cups-lpd</b>(8),</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-cupsd-helper.html?TOPIC=Man+Pages"><b>cupsd-helper</b>(8),</a>
+<a href="man-cupsd-logs.html?TOPIC=Man+Pages"><b>cupsd-logs</b>(8),</a>
+<a href="man-filter.html?TOPIC=Man+Pages"><b>filter</b>(7),</a>
+<b>launchd</b>(8),
+<a href="man-mime.convs.html?TOPIC=Man+Pages"><b>mime.convs</b>(5),</a>
+<a href="man-mime.types.html?TOPIC=Man+Pages"><b>mime.types</b>(5),</a>
+<a href="man-printers.conf.html?TOPIC=Man+Pages"><b>printers.conf</b>(5),</a>
+<b>systemd</b>(8),
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,83 +10,83 @@
<h2 class="title"><a name="NAME">Name</a></h2>
cupsdisable, cupsenable - stop/start printers and classes
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cupsdisable
-</b>[ -E ] [-U
-<i>username
-</i>] [ -c ] [ -h
-<i>server[:port]
-</i>] [ -r
-<i>reason
-</i>] [ --hold ] destination(s)
+<b>cupsdisable</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-c</b>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>-r</b>
+<i>reason</i>
+] [
+<b>--hold</b>
+]
+<i>destination(s)</i>
<br>
-<b>cupsenable
-</b>[ -E ] [-U
-<i>username
-</i>] [ -c ] [ -h
-<i>server[:port]
-</i>] [ --release ] destination(s)
+<b>cupsenable</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-c</b>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>--release</b>
+]
+<i>destination(s)</i>
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cupsenable</i> starts the named printers or classes.
-<p><i>cupsdisable</i> stops the named printers or classes. The
-following options may be used:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Forces encryption of the connection to the server.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Uses the specified username when connecting to the server.
-</dd>
-<dt>-c
-</dt>
-<dd></dd>
-<dd>Cancels all jobs on the named destination.
-</dd>
-<dt>-h server[:port]
-</dt>
-<dd></dd>
-<dd>Uses the specified server and port.
-</dd>
-<dt>--hold
-</dt>
-<dd></dd>
-<dd>Holds remaining jobs on the named printer. Useful for allowing the current
-job to complete before performing maintenance.
-</dd>
-<dt>-r "reason"
-</dt>
-<dd></dd>
-<dd>Sets the message associated with the stopped state. If no reason is specified
-then the message is set to "Reason Unknown".
-</dd>
-<dt>--release
-</dt>
-<dd></dd>
-<dd>Releases pending jobs for printing. Use after running <i>cupsdisable</i> with
-the <i>--hold</i> option to resume printing.
-</dd>
+<b>cupsenable</b>
+starts the named printers or classes while
+<b>cupsdisable</b>
+stops the named printers or classes.
+<h2 class="title"><a name="OPTIONS">Options</a></h2>
+The following options may be used:
+<dl class="man">
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Forces encryption of the connection to the server.
+<dt><b>-U </b><i>username</i>
+<dd style="margin-left: 5.0em">Uses the specified username when connecting to the server.
+<dt><b>-c</b>
+<dd style="margin-left: 5.0em">Cancels all jobs on the named destination.
+<dt><b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+<dd style="margin-left: 5.0em">Uses the specified server and port.
+<dt><b>--hold</b>
+<dd style="margin-left: 5.0em">Holds remaining jobs on the named printer.
+Useful for allowing the current job to complete before performing maintenance.
+<dt><b>-r "</b><i>reason</i><b>"</b>
+<dd style="margin-left: 5.0em">Sets the message associated with the stopped state.
+If no reason is specified then the message is set to "Reason Unknown".
+<dt><b>--release</b>
+<dd style="margin-left: 5.0em">Releases pending jobs for printing.
+Use after running <b>cupsdisable</b> with the <i>--hold</i> option to resume printing.
</dl>
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-Unlike the System V printing system, CUPS allows printer names to
-contain any printable character except SPACE, TAB, "/", or "#".
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+Unlike the System V printing system, CUPS allows printer names to contain any printable character except SPACE, TAB, "/", or "#".
Also, printer and class names are <i>not</i> case-sensitive.
-<p>The System V versions of these commands are <i>disable</i> and
-<i>enable</i>. They have been renamed to avoid conflicts with the
-<i>bash(1)</i> build-in commands of the same name.
-<p>The CUPS versions of <i>disable</i> and <i>enable</i> may ask the
-user for an access password depending on the printing system
-configuration. This differs from the System V versions which
-require the root user to execute these commands.
+<p>The System V versions of these commands are <b>disable</b> and <b>enable</b>, respectively.
+They have been renamed to avoid conflicts with the
+<b>bash</b>(1)
+build-in commands of the same names.
+<p>The CUPS versions of <b>disable</b> and <b>enable</b> may ask the user for an access password depending on the printing system configuration.
+This differs from the System V versions which require the root user to execute these commands.
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cupsaccept.html?TOPIC=Man+Pages'>cupsaccept(8)</a>, <i>cupsreject(8)</i>, <a href='man-cancel.html?TOPIC=Man+Pages'>cancel(1)</a>, <a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>,
-<a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a>, <a href='man-lpstat.html?TOPIC=Man+Pages'>lpstat(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cupsaccept.html?TOPIC=Man+Pages"><b>cupsaccept</b>(8),</a>
+<b>cupsreject</b>(8),
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8),</a>
+<a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,111 +10,117 @@
<h2 class="title"><a name="NAME">Name</a></h2>
cupsfilter - convert a file to another format using cups filters
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cupsfilter
-</b>[ -D ] [ -U
-<i>user
-</i>] [ -c
-<i>config-file
-</i>] [ -d
-<i>printer
-</i>] [ -e ] [ -i
-<i>mime/type
-</i>] [ -j
-<i>job-id[,N]
-</i>] [ -m
-<i>mime/type
-</i>] [ -n
-<i>copies
-</i>] [ -o
-<i>name=value
-</i>] [ -p
-<i>filename.ppd
-</i>] [ -t
-<i>title
-</i>] [ -u ]
-<i>filename
-</i><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cupsfilter</i> is a front-end to the CUPS filter subsystem which allows you
-to convert a file to a specific format, just as if you had printed the file
-through CUPS. By default, <i>cupsfilter</i> generates a PDF file. The converted
-file is sent to the standard output.
+<b>cupsfilter</b>
+[
+<b>--list-filters</b>
+] [
+<b>-D</b>
+] [
+<b>-U</b>
+<i>user</i>
+] [
+<b>-c</b>
+<i>config-file</i>
+] [
+<b>-d</b>
+<i>printer</i>
+] [
+<b>-e</b>
+] [
+<b>-i</b>
+<i>mime/type</i>
+] [
+<b>-j</b>
+<i>job-id[,N]</i>
+] [
+<b>-m</b>
+<i>mime/type</i>
+] [
+<b>-n</b>
+<i>copies</i>
+] [
+<b>-o</b>
+<i>name=value</i>
+] [
+<b>-p</b>
+<i>filename.ppd</i>
+] [
+<b>-t</b>
+<i>title</i>
+] [
+<b>-u</b>
+]
+<i>filename</i>
+<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
+<b>cupsfilter</b>
+is a front-end to the CUPS filter subsystem which allows you to convert a file to a specific format, just as if you had printed the file through CUPS. By default,
+<b>cupsfilter</b>
+generates a PDF file. The converted file is sent to the standard output.
<h2 class="title"><a name="OPTIONS">Options</a></h2>
-<dl>
-<dt>-D
-</dt>
-<dd></dd>
-<dd>Delete the input file after conversion.
-</dd>
-<dt>-U user
-</dt>
-<dd></dd>
-<dd>Specifies the username passed to the filters. The default is the name of the current user.
-</dd>
-<dt>-c config-file
-</dt>
-<dd></dd>
-<dd>Uses the named cups-files.conf configuration file.
-</dd>
-<dt>-d printer
-</dt>
-<dd>Uses information from the named printer.
-</dd>
-<dt>-e
-</dt>
-<dd></dd>
-<dd>Use every filter from the PPD file.
-</dd>
-<dt>-i mime/type
-</dt>
-<dd></dd>
-<dd>Specifies the source file type. The default file type is guessed using the
-filename and contents of the file.
-</dd>
-<dt>-j job-id[,N]
-</dt>
-<dd></dd>
-<dd>Converts document N from the specified job. If N is omitted, document 1 is
-converted.
-</dd>
-<dt>-m mime/type
-</dt>
-<dd></dd>
-<dd>Specifies the destination file type. The default file type is application/pdf.
-Use printer/foo to convert to the printer format defined by the filters in the
-PPD file.
-</dd>
-<dt>-n copies
-</dt>
-<dd></dd>
-<dd>Specifies the number of copies to generate.
-</dd>
-<dt>-o name=value
-</dt>
-<dd></dd>
-<dd>Specifies options to pass to the CUPS filters.
-</dd>
-<dt>-p filename.ppd
-</dt>
-<dd></dd>
-<dd>Specifies the PPD file to use.
-</dd>
-<dt>-t title
-</dt>
-<dd></dd>
-<dd>Specifies the document title.
-</dd>
-<dt>-u
-</dt>
-<dd></dd>
-<dd>Delete the PPD file after conversion.
-</dd>
+<dl class="man">
+<dt><b>--list-filters</b>
+<dd style="margin-left: 5.0em">Do not actually run the filters, just print the filters used to stdout.
+<dt><b>-D</b>
+<dd style="margin-left: 5.0em">Delete the input file after conversion.
+<dt><b>-U </b><i>user</i>
+<dd style="margin-left: 5.0em">Specifies the username passed to the filters. The default is the name of the current user.
+<dt><b>-c </b><i>config-file</i>
+<dd style="margin-left: 5.0em">Uses the named cups-files.conf configuration file.
+<dt><b>-d </b><i>printer</i>
+<dd style="margin-left: 5.0em">Uses information from the named printer.
+<dt><b>-e</b>
+<dd style="margin-left: 5.0em">Use every filter from the PPD file.
+<dt><b>-i </b><i>mime/type</i>
+<dd style="margin-left: 5.0em">Specifies the source file type. The default file type is guessed using the filename and contents of the file.
+<dt><b>-j </b><i>job-id[,N]</i>
+<dd style="margin-left: 5.0em">Converts document N from the specified job. If N is omitted, document 1 is converted.
+<dt><b>-m </b><i>mime/type</i>
+<dd style="margin-left: 5.0em">Specifies the destination file type. The default file type is application/pdf. Use printer/foo to convert to the printer format defined by the filters in the PPD file.
+<dt><b>-n </b><i>copies</i>
+<dd style="margin-left: 5.0em">Specifies the number of copies to generate.
+<dt><b>-o </b><i>name=value</i>
+<dd style="margin-left: 5.0em">Specifies options to pass to the CUPS filters.
+<dt><b>-p </b><i>filename.ppd</i>
+<dd style="margin-left: 5.0em">Specifies the PPD file to use.
+<dt><b>-t </b><i>title</i>
+<dd style="margin-left: 5.0em">Specifies the document title.
+<dt><b>-u</b>
+<dd style="margin-left: 5.0em">Delete the PPD file after conversion.
</dl>
+<h2 class="title"><a name="EXIT_STATUS">Exit Status</a></h2>
+<b>cupsfilter</b>
+returns a non-zero exit status on any error.
+<h2 class="title"><a name="ENVIRONMENT">Environment</a></h2>
+All of the standard
+<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1)</a>
+environment variables affect the operation of
+<b>cupsfilter</b>.
+<h2 class="title"><a name="FILES">Files</a></h2>
+<pre class="man">
+/etc/cups/cups-files.conf
+/etc/cups/*.convs
+/etc/cups/*.types
+/usr/share/cups/mime/*.convs
+/usr/share/cups/mime/*.types
+<h2 class="title"><a name="NOTES">Notes</a></h2>
+Unlike when printing, filters run using the
+<b>cupsfilter</b>
+command use the current user and security session. This may result in different output or unexpected behavior.
+<h2 class="title"><a name="EXAMPLE">Example</a></h2>
+The following command will generate a PDF preview of job 42 for a printer named "myprinter" and save it to a file named "preview.pdf":
+<pre class="man">
+
+ cupsfilter -m application/pdf -d myprinter -j 42 >preview.pdf
+</pre>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cups-files.conf.html?TOPIC=Man+Pages'>cups-files.conf(5)</a>
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1),</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<b>filter(7),</b>
+<a href="man-mime.convs.html?TOPIC=Man+Pages"><b>mime.convs</b>(7),</a>
+<a href="man-mime.types.html?TOPIC=Man+Pages"><b>mime.types</b>(7),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -8,37 +8,37 @@
<body>
<h1 class="title">cupstestdsc(1)</h1>
<h2 class="title"><a name="NAME">Name</a></h2>
-cupstestdsc - test conformance of postscript files
+cupstestdsc - test conformance of postscript files (deprecated)
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cupstestdsc
-</b>[ -h ] filename.ps [ ...
-<i>filenameN.ps
-</i>]
+<b>cupstestdsc</b>
+[
+<b>-h</b>
+]
+<i>filename.ps</i>
+[ ...
+<i>filenameN.ps</i>
+]
<br>
-<b>cupstestdsc
-</b>[ -h ] -
+<b>cupstestdsc</b>
+[
+<b>-h</b>
+]
+<b>-</b>
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cupstestdsc</i> tests the conformance of PostScript files to
-the Adobe PostScript Language Document Structuring Conventions
-Specification version 3.0. The results of testing and any other
-output are sent to the standard output. The second form of the
-command reads PostScript from the standard input.
-<h2 class="title"><a name="LIMITATIONS">Limitations</a></h2>
-<i>cupstestdsc</i> only validates the DSC comments in a PostScript
-file and does not attempt to validate the PostScript code itself.
-Developers must ensure that the PostScript they generate follows
-the rules defined by Adobe. Specifically, all pages must be
-independent of each other, code outside page descriptions may not
-affect the graphics state (current font, color, transform matrix,
-etc.), and device-specific commands such as setpagedevice should
-not be used.
+<b>cupstestdsc</b> tests the conformance of PostScript files to the Adobe PostScript Language Document Structuring Conventions Specification version 3.0.
+The results of testing and any other output are sent to the standard output.
+The second form of the command reads PostScript from the standard input.
+<h2 class="title"><a name="NOTES">Notes</a></h2>
+<i>This program is deprecated and will be removed in a future release of CUPS.</i>
+<p><b>cupstestdsc</b> only validates the DSC comments in a PostScript file and does not attempt to validate the PostScript code itself.
+Developers must ensure that the PostScript they generate follows the rules defined by Adobe.
+Specifically, all pages must be independent of each other, code outside page descriptions may not affect the graphics state (current font, color, transform matrix, etc.), and device-specific commands such as setpagedevice should not be used.
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
-<br>
+CUPS Online Help (<a href="http://localhost:631/help)">http://localhost:631/help)</a>,
Adobe PostScript Language Document Structuring Conventions
Specification, Version 3.0.
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,172 +10,118 @@
<h2 class="title"><a name="NAME">Name</a></h2>
cupstestppd - test conformance of ppd files
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>cupstestppd
-</b>[ -I
-<i>category
-</i>] [ -R
-<i>rootdir
-</i>] [ -W
-<i>category
-</i>] [ -q ] [-r] [ -v[v] ] filename.ppd[.gz] [ ... filenameN.ppd[.gz] ]
+<b>cupstestppd</b>
+[
+<b>-I</b>
+<i>category</i>
+] [
+<b>-R</b>
+<i>rootdir</i>
+] [
+<b>-W</b>
+<i>category</i>
+] [
+<b>-q</b>
+] [
+<b>-r</b>
+] [
+<b>-v</b>[<b>v</b>]
+]
+<i>filename.ppd[.gz]</i>
+[ ...
+<i>filename.ppd[.gz]</i>
+]
<br>
-<b>cupstestppd
-</b>[ -R
-<i>rootdir
-</i>] [ -W
-<i>category
-</i>] [ -q ] [-r] [ -v[v] ] -
+<b>cupstestppd</b>
+[
+<b>-R</b>
+<i>rootdir</i>
+] [
+<b>-W</b>
+<i>category</i>
+] [
+<b>-q</b>
+] [
+<b>-r</b>
+] [
+<b>-v</b>[<b>v</b>]
+]
+<b>-</b>
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>cupstestppd</i> tests the conformance of PPD files to the
-Adobe PostScript Printer Description file format specification
-version 4.3. It can also be used to list the supported options
-and available fonts in a PPD file. The results of testing and
-any other output are sent to the standard output.
-<p>The first form of <i>cupstestppd</i> tests one or more PPD files
-on the command-line. The second form tests the PPD file provided
-on the standard input.
+<b>cupstestppd</b> tests the conformance of PPD files to the Adobe PostScript Printer Description file format specification version 4.3.
+It can also be used to list the supported options and available fonts in a PPD file.
+The results of testing and any other output are sent to the standard output.
+<p>The first form of <b>cupstestppd</b> tests one or more PPD files on the command-line.
+The second form tests the PPD file provided on the standard input.
<h2 class="title"><a name="OPTIONS">Options</a></h2>
-<i>cupstestppd</i> supports the following options:
-<dl>
-<dt>-I filename
-</dt>
-<dd></dd>
-<dd>Ignores all PCFileName warnings.
-</dd>
-<dt>-I filters
-</dt>
-<dd></dd>
-<dd>Ignores all filter errors.
-</dd>
-<dt>-I profiles
-</dt>
-<dd></dd>
-<dd>Ignores all profile errors.
-</dd>
-<dt>-R rootdir
-</dt>
-<dd></dd>
-<dd>Specifies an alternate root directory for the filter, pre-filter,
-and other support file checks.
-</dd>
-<dt>-W constraints
-</dt>
-<dd></dd>
-<dd>Report all UIConstraint errors as warnings.
-</dd>
-<dt>-W defaults
-</dt>
-<dd></dd>
-<dd>Except for size-related options, report all default option errors as warnings.
-</dd>
-<dt>-W filters
-</dt>
-<dd></dd>
-<dd>Report all filter errors as warnings.
-</dd>
-<dt>-W profiles
-</dt>
-<dd></dd>
-<dd>Report all profile errors as warnings.
-</dd>
-<dt>-W sizes
-</dt>
-<dd></dd>
-<dd>Report all media size errors as warnings.
-</dd>
-<dt>-W translations
-</dt>
-<dd></dd>
-<dd>Report all translation errors as warnings.
-</dd>
-<dt>-W all
-</dt>
-<dd></dd>
-<dd>Report all of the previous errors as warnings.
-</dd>
-<dt>-W none
-</dt>
-<dd></dd>
-<dd>Report all of the previous errors as errors.
-</dd>
-<dt>-q
-</dt>
-<dd></dd>
-<dd>Specifies that no information should be displayed.
-</dd>
-<dt>-r
-</dt>
-<dd></dd>
-<dd>Relaxes the PPD conformance requirements so that common
-whitespace, control character, and formatting problems are not
-treated as hard errors.
-</dd>
-<dt>-v
-</dt>
-<dd></dd>
-<dd>Specifies that detailed conformance testing results should be
-displayed rather than the concise PASS/FAIL/ERROR status.
-</dd>
-<dt>-vv
-</dt>
-<dd></dd>
-<dd>Specifies that all information in the PPD file should be
-displayed in addition to the detailed conformance testing
-results.
-</dd>
+<b>cupstestppd</b> supports the following options:
+<dl class="man">
+<dt><b>-I filename</b>
+<dd style="margin-left: 5.0em">Ignores all PCFileName warnings.
+<dt><b>-I filters</b>
+<dd style="margin-left: 5.0em">Ignores all filter errors.
+<dt><b>-I profiles</b>
+<dd style="margin-left: 5.0em">Ignores all profile errors.
+<dt><b>-R </b><i>rootdir</i>
+<dd style="margin-left: 5.0em">Specifies an alternate root directory for the filter, pre-filter, and other support file checks.
+<dt><b>-W constraints</b>
+<dd style="margin-left: 5.0em">Report all UIConstraint errors as warnings.
+<dt><b>-W defaults</b>
+<dd style="margin-left: 5.0em">Except for size-related options, report all default option errors as warnings.
+<dt><b>-W filters</b>
+<dd style="margin-left: 5.0em">Report all filter errors as warnings.
+<dt><b>-W profiles</b>
+<dd style="margin-left: 5.0em">Report all profile errors as warnings.
+<dt><b>-W sizes</b>
+<dd style="margin-left: 5.0em">Report all media size errors as warnings.
+<dt><b>-W translations</b>
+<dd style="margin-left: 5.0em">Report all translation errors as warnings.
+<dt><b>-W all</b>
+<dd style="margin-left: 5.0em">Report all of the previous errors as warnings.
+<dt><b>-W none</b>
+<dd style="margin-left: 5.0em">Report all of the previous errors as errors.
+<dt><b>-q</b>
+<dd style="margin-left: 5.0em">Specifies that no information should be displayed.
+<dt><b>-r</b>
+<dd style="margin-left: 5.0em">Relaxes the PPD conformance requirements so that common whitespace, control character, and formatting problems are not treated as hard errors.
+<dt><b>-v</b>
+<dd style="margin-left: 5.0em">Specifies that detailed conformance testing results should be displayed rather than the concise PASS/FAIL/ERROR status.
+<dt><b>-vv</b>
+<dd style="margin-left: 5.0em">Specifies that all information in the PPD file should be displayed in addition to the detailed conformance testing results.
</dl>
<p>The <i>-q</i>, <i>-v</i>, and <i>-vv</i> options are mutually exclusive.
<h2 class="title"><a name="EXIT_STATUS">Exit Status</a></h2>
-<i>cupstestppd</i> returns zero on success and non-zero on error. The
-error codes are as follows:
-<dl>
+<b>cupstestppd</b> returns zero on success and non-zero on error.
+The error codes are as follows:
+<dl class="man">
<dt>1
-</dt>
-<dd></dd>
-<dd>Bad command-line arguments or missing PPD filename.
-</dd>
+<dd style="margin-left: 5.0em">Bad command-line arguments or missing PPD filename.
<dt>2
-</dt>
-<dd></dd>
-<dd>Unable to open or read PPD file.
-</dd>
+<dd style="margin-left: 5.0em">Unable to open or read PPD file.
<dt>3
-</dt>
-<dd></dd>
-<dd>The PPD file contains format errors that cannot be skipped.
-</dd>
+<dd style="margin-left: 5.0em">The PPD file contains format errors that cannot be skipped.
<dt>4
-</dt>
-<dd></dd>
-<dd>The PPD file does not conform to the Adobe PPD specification.
-</dd>
+<dd style="margin-left: 5.0em">The PPD file does not conform to the Adobe PPD specification.
</dl>
<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
-The following command will test all PPD files under the current
-directory and print the names of each file that does not
-conform:
-<pre>
+The following command will test all PPD files under the current directory and print the names of each file that does not conform:
+<pre class="man">
find . -name \*.ppd \! -exec cupstestppd -q '{}' \; -print
</pre>
-The next command tests all PPD files under the current directory
-and print detailed conformance testing results for the files
-that do not conform:
-<pre>
+The next command tests all PPD files under the current directory and print detailed conformance testing results for the files that do not conform:
+<pre class="man">
find . -name \*.ppd \! -exec cupstestppd -q '{}' \; \
-exec cupstestppd -v '{}' \;
-
</pre>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
-<br>
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8),</a>
+CUPS Online Help (<a href="http://localhost:631/help)">http://localhost:631/help)</a>,
Adobe PostScript Printer Description File Format Specification, Version 4.3.
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,258 +10,180 @@
<h2 class="title"><a name="NAME">Name</a></h2>
filter - cups file conversion filter interface
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>filter
-</b>job user title num-copies options [
-<i>filename
-</i>]
+<b>filter</b>
+<i>job</i>
+<i>user</i>
+<i>title</i>
+<i>num-copies</i>
+<i>options</i>
+[
+<i>filename</i>
+]
+<pre class="man">
+
+<b>#include &lt;cups/cups.h></b>
+
+<b>ssize_t cupsBackChannelRead</b>(<b>char *</b><i>buffer</i>, <b>size_t </b><i>bytes</i>,
+ <b>double </b><i>timeout</i>);
+
+<b>cups_sc_status_t cupsSideChannelDoRequest</b>(<b>cups_sc_command_t </b><i>command</i>,
+ <b>char *</b><i>data</i>, <b>int *</b><i>datalen</i>,
+ <b>double </b><i>timeout</i>);
+
+<b>#include &lt;cups/ppd.h></b>
+
+<b>const char *cupsGetOption</b>(<b>const char *</b><i>name</i>, <b>int </b><i>num_options</i>,
+ <b>cups_option_t *</b><i>options</i>);
+
+<b>int cupsMarkOptions</b>(<b>ppd_file_t *</b><i>ppd</i>, <b>int </b><i>num_options</i>,
+ <b>cups_option_t *</b><i>options</i>);
+
+<b>int cupsParseOptions</b>(<b>const char *</b><i>arg</i>, <b>int </b><i>num_options</i>,
+ <b>cups_option_t **</b><i>options</i>);
+
+<b>ppd_choice_t *ppdFindMarkedChoice</b>(<b>ppd_file_t *</b><i>ppd</i>, <b>const char *</b><i>keyword</i>);
+
+<b>void ppdMarkDefaults</b>(<b>ppd_file_t *</b><i>ppd</i>);
+
+<b>ppd_file_t *ppdOpenFile</b>(<b>const char *</b><i>filename</i>);
+</pre>
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The CUPS filter interface provides a standard method for adding support for
-new document types to CUPS. Each filter is capable of converting from one
-or more input formats to another format that can either be printed directly
-or piped into another filter to get it to a printable format.
-<p>Filters <b>must</b> be capable of reading from a filename on the command-line
-or from the standard input, copying the standard input to a temporary
-file as required by the file format. All output <b>must</b> be sent to the
-standard output.
-<p>The command name (argv[0]) is set to the name of the destination printer but is
-also available in the PRINTER environment variable.
-<h2 class="title"><a name="WARNING">Warning</a></h2>
-CUPS filters are not meant to be run directly by the user. Aside from the legacy
-System V interface issues (argv[0] is the printer name), CUPS filters also
-expect specific environment variables and file descriptors, and typically run in
-a user session that (on OS X) has additional restrictions that affect how it
-runs. Unless you are a developer and know what you are doing, please do not run
-filters directly. Instead, use the <a href='man-cupsfilter.html?TOPIC=Man+Pages'>cupsfilter(8)</a> program to use the
-appropriate filters to do the conversions you need.
-<h2 class="title"><a name="OPTIONS">Options</a></h2>
-Options passed on the command-line typically do not include the default choices
-the printer's PPD file. In addition, some options may be specified in multiple
-ways - "landscape" is a synonym for "orientation-requested=4", "media" is a
-synonym for "PageSize", "PageRegion", "InputSlot", and "MediaType", and "sides"
-is a synonym for the various "Duplex" options. Non-raster filters <b>must</b>
-support both explicit and implicit specification of PPD options - use the
-ppdMarkDefaults and cupsMarkOptions functions in the CUPS library to use the
-correct mapping, and ppdFindMarkedChoice to get the user-selected choice.
-<p>Raster filters should use option choices set through the raster page header, as
-those reflect the options in effect for a given page. Options specified on the
-command-line determine the default values for the entire job, which can be
-overridden on a per-page basis.
+The CUPS filter interface provides a standard method for adding support for new document types or printers to CUPS.
+Each filter is capable of converting from one or more input formats to another format that can either be printed directly or piped into another filter to get it to a printable format.
+<p>Filters <b>MUST</b> be capable of reading from a filename on the command-line or from the standard input, copying the standard input to a temporary file as required by the file format.
+All output <b>MUST</b> be sent to the standard output.
+Filters <b>MUST NOT</b> attempt to communicate directly with the printer, other processes, or other services.
+<p>The command name (<i>argv[0]</i>) is set to the name of the destination printer but is also available in the <b>PRINTER</b><i> environment variable.
+</i><h2 class="title"><a name="OPTIONS">Options</a></h2>
+Options are passed in <i>argv[5]</i> and are encoded from the corresponding IPP attributes used when the job was submitted. Use the
+<b>cupsParseOptions</b>()
+function to load the options into a <b>cups_option_t</b> array and the
+<b>cupsGetOption</b>()
+function to get the value of a specific attribute.
+Be careful to look for common aliases of IPP attributes such as "lansdscape" for the IPP "orientation-requested" attribute.
+<p>Options passed on the command-line typically do not include the default choices the printer's PPD file. Use the
+<b>ppdMarkDefaults</b>()
+and
+<b>cupsMarkOptions</b>()
+functions in the CUPS library to apply the options to the PPD defaults and map any IPP attributes to the corresponding PPD options.
+Use
+<b>ppdFindMarkedChoice</b>()
+to get the user-selected choice for a PPD option. For example, a filter might use the following code to determine the current value of the <b>Duplex</b> PPD option:
+<pre class="man">
+
+ ppd_file_t *ppd = ppdOpenFile(getenv("PPD"));
+ cups_option_t *options = NULL;
+ int num_options = cupsParseOptions(argv[5], 0, &amp;options);
+
+ ppdMarkDefaults(ppd);
+ cupsMarkOptions(ppd, num_options, options);
+
+ ppd_choice_t *choice = ppdFindMarkedChoice(ppd, "Duplex");
+</pre>
+<p>Raster filters should use option choices set through the raster page header, as those reflect the options in effect for a given page.
+Options specified on the command-line determine the default values for the entire job, which can be overridden on a per-page basis.
<h2 class="title"><a name="LOG_MESSAGES">Log Messages</a></h2>
-Messages sent to stderr are generally logged to
-printer-state-message attribute and the current <i>ErrorLog</i>.
+Messages sent to the standard error are generally stored in the printer's "printer-state-message" attribute and the current <b>ErrorLog</b> file.
Each line begins with a standard prefix:
-<dl>
-<dt>ALERT: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "alert" log level.
-</dd>
-<dt>ATTR: attribute=value [attribute=value]
-</dt>
-<dd></dd>
-<dd>Sets the named job or printer attribute(s). The following job attributes can be
-set: "job-media-progress". The following printer attributes can be set:
+<dl class="man">
+<dt><b>ALERT: </b><i>message</i>
+<dd style="margin-left: 5.0em">Sets the "printer-state-message" attribute and adds the specified message to the current <b>ErrorLog</b> using the "alert" log level.
+<dt><b>ATTR: </b><i>attribute=value </i>[ <i>... attribute=value</i>]
+<dd style="margin-left: 5.0em">Sets the named job or printer attribute(s). The following job attributes can be set: "job-media-progress". The following printer attributes can be set:
"auth-info-required", "marker-colors", "marker-high-levels", "marker-levels",
"marker-low-levels", "marker-message", "marker-names", "marker-types",
"printer-alert", and "printer-alert-description".
-</dd>
-<dt>CRIT: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "critical" log level.
-</dd>
-<dt>DEBUG: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "debug" log level.
-</dd>
-<dt>DEBUG2: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "debug2" log level.
-</dd>
-<dt>EMERG: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "emergency" log level.
-</dd>
-<dt>ERROR: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "error" log level.
-</dd>
-<dt>INFO: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute. If the current <i>LogLevel</i>
-is set to "debug2", also adds the specified message to the
-current <i>ErrorLog</i> using the "info" log level.
-</dd>
-<dt>NOTICE: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "notice" log level.
-</dd>
-<dt>PAGE: page-number #-copies
-</dt>
-<dd></dd>
-<dt>PAGE: total #-pages
-</dt>
-<dd></dd>
-<dd>Adds an entry to the current <i>PageLog</i>. The first form adds
-#-copies to the job-media-sheets-completed attribute. The second
-form sets the job-media-sheets-completed attribute to #-pages.
-</dd>
-<dt>PPD: Keyword=Value ... KeywordN=Value
-</dt>
-<dd></dd>
-<dd>Sets the named keywords in the printer's PPD file. This is typically
-used to update default option keywords such as DefaultPageSize and
-the various installable options in the PPD file.
-</dd>
-<dt>STATE: printer-state-reason [printer-state-reason ...]
-</dt>
-<dd></dd>
-<dt>STATE: + printer-state-reason [printer-state-reason ...]
-</dt>
-<dd></dd>
-<dt>STATE: - printer-state-reason [printer-state-reason ...]
-</dt>
-<dd></dd>
-<dd>Sets, adds, or removes printer-state-reason keywords to the
-current queue. Typically this is used to indicate media, ink, and
-toner conditions on a printer.
-</dd>
-<dt>WARNING: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "warning" log level.
-</dd>
+<dt><b>CRIT: </b><i>message</i>
+<dd style="margin-left: 5.0em">Sets the "printer-state-message" attribute and adds the specified message to the current <b>ErrorLog</b> using the "critical" log level.
+<dt><b>DEBUG: </b><i>message</i>
+<dd style="margin-left: 5.0em">Adds the specified message to the current <b>ErrorLog</b> using the "debug" log level.
+<b>DEBUG</b> messages are never stored in the "printer-state-message" attribute.
+<dt><b>DEBUG2: </b><i>message</i>
+<dd style="margin-left: 5.0em"><br>
+Adds the specified message to the current <b>ErrorLog</b> using the "debug2" log level.
+<b>DEBUG2</b> messages are never stored in the "printer-state-message" attribute.
+<dt><b>EMERG: </b><i>message</i>
+<dd style="margin-left: 5.0em">Sets the "printer-state-message" attribute and adds the specified message to the current <b>ErrorLog</b> using the "emergency" log level.
+<dt><b>ERROR:</b><i> message</i>
+<dd style="margin-left: 5.0em">Sets the "printer-state-message" attribute and adds the specified message to the current <b>ErrorLog</b> using the "error" log level.
+<dt><b>INFO:</b><i> message</i>
+<dd style="margin-left: 5.0em">Sets the "printer-state-message" attribute. If the current <b>LogLevel</b> is set to "debug2", also adds the specified message to the current <b>ErrorLog</b> using the "info" log level.
+<dt><b>NOTICE:</b><i> message</i>
+<dd style="margin-left: 5.0em">Sets the "printer-state-message" attribute and adds the specified message to the current <b>ErrorLog</b> using the "notice" log level.
+<dt><b>PAGE:</b><i> page-number #-copies</i>
+<dd style="margin-left: 5.0em"><dt><b>PAGE:</b><i> total #-pages</i>
+<dd style="margin-left: 5.0em">Adds an entry to the current <b>PageLog</b>. The first form adds <i>#-copies</i> to the "job-media-sheets-completed" attribute. The second form sets the "job-media-sheets-completed" attribute to <i>#-pages</i>.
+<dt><b>PPD:</b><i> Keyword=Value</i> [ <i>... KeywordN=Value</i> ]
+<dd style="margin-left: 5.0em">Sets the named keywords in the printer's PPD file. This is typically used to update default option keywords such as <b>DefaultPageSize</b> and the various installable options in the PPD file.
+<dt><b>STATE:</b><i> printer-state-reason </i>[ <i>... printer-state-reason</i> ]
+<dd style="margin-left: 5.0em"><dt><b>STATE: +</b><i> printer-state-reason </i>[ <i>... printer-state-reason</i> ]
+<dd style="margin-left: 5.0em"><dt><b>STATE: -</b><i> printer-state-reason </i>[ <i>... printer-state-reason</i> ]
+<dd style="margin-left: 5.0em">Sets, adds, or removes "printer-state-reason" keywords for the current queue. Typically this is used to indicate media, ink, and toner conditions on a printer.
+<dt><b>WARNING:</b><i> message</i>
+<dd style="margin-left: 5.0em">Sets the "printer-state-message" attribute and adds the specified message to the current <b>ErrorLog</b> using the "warning" log level.
</dl>
<h2 class="title"><a name="ENVIRONMENT_VARIABLES">Environment Variables</a></h2>
The following environment variables are defined by the CUPS
server when executing the filter:
-<dl>
-<dt>CHARSET
-</dt>
-<dd></dd>
-<dd>The default text character set, typically utf-8.
-</dd>
-<dt>CLASS
-</dt>
-<dd></dd>
-<dd>When a job is submitted to a printer class, contains the name of
-the destination printer class. Otherwise this environment
-variable will not be set.
-</dd>
-<dt>CONTENT_TYPE
-</dt>
-<dd></dd>
-<dd>The MIME type associated with the file (e.g.
-application/postscript).
-</dd>
-<dt>CUPS_CACHEDIR
-</dt>
-<dd></dd>
-<dd>The directory for semi-persistent cache files can be found.
-</dd>
-<dt>CUPS_DATADIR
-</dt>
-<dd></dd>
-<dd>The directory where data files can be found.
-</dd>
-<dt>CUPS_FILETYPE
-</dt>
-<dd></dd>
-<dd>The type of file being printed: "job-sheet" for a banner page and "document"
+<dl class="man">
+<dt><b>CHARSET</b>
+<dd style="margin-left: 5.0em">The default text character set, typically "utf-8".
+<dt><b>CLASS</b>
+<dd style="margin-left: 5.0em">When a job is submitted to a printer class, contains the name of the destination printer class. Otherwise this environment variable will not be set.
+<dt><b>CONTENT_TYPE</b>
+<dd style="margin-left: 5.0em">The MIME media type associated with the submitted job file, for example "application/postscript".
+<dt><b>CUPS_CACHEDIR</b>
+<dd style="margin-left: 5.0em">The directory where semi-persistent cache files can be found and stored.
+<dt><b>CUPS_DATADIR</b>
+<dd style="margin-left: 5.0em">The directory where data files can be found.
+<dt><b>CUPS_FILETYPE</b>
+<dd style="margin-left: 5.0em">The type of file being printed: "job-sheet" for a banner page and "document"
for a regular print file.
-</dd>
-<dt>CUPS_MAX_MESSAGE
-</dt>
-<dd></dd>
-<dd>The maximum size of a message sent to stderr, including any leading prefix and
-the trailing newline.
-</dd>
-<dt>CUPS_SERVERROOT
-</dt>
-<dd></dd>
-<dd>The root directory of the server.
-</dd>
-<dt>DEVICE_URI
-</dt>
-<dd></dd>
-<dd>The device-uri associated with the printer.
-</dd>
-<dt>FINAL_CONTENT_TYPE
-</dt>
-<dd></dd>
-<dd>The MIME type associated with the printer (e.g.
-application/vnd.cups-postscript).
-</dd>
-<dt>LANG
-</dt>
-<dd></dd>
-<dd>The default language locale (typically C or en).
-</dd>
-<dt>PATH
-</dt>
-<dd></dd>
-<dd>The standard execution path for external programs that may be run by
-the filter.
-</dd>
-<dt>PPD
-</dt>
-<dd></dd>
-<dd>The full pathname of the PostScript Printer Description (PPD)
-file for this printer.
-</dd>
-<dt>PRINTER
-</dt>
-<dd></dd>
-<dd>The name of the printer.
-</dd>
-<dt>RIP_CACHE
-</dt>
-<dd></dd>
-<dd>The recommended amount of memory to use for Raster Image
-Processors (RIPs).
-</dd>
-<dt>SOFTWARE
-</dt>
-<dd></dd>
-<dd>The name and version number of the server (typically CUPS/1.2).
-</dd>
-<dt>TZ
-</dt>
-<dd></dd>
-<dd>The timezone of the server.
-</dd>
-<dt>USER
-</dt>
-<dd></dd>
-<dd>The user executing the filter, typically "lp" or "root"; consult the
-<a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a> file for the current setting.
-</dd>
+<dt><b>CUPS_MAX_MESSAGE</b>
+<dd style="margin-left: 5.0em">The maximum size of a message sent to <i>stderr</i>, including any leading prefix and the trailing newline.
+<dt><b>CUPS_SERVERROOT</b>
+<dd style="margin-left: 5.0em">The root directory of the server.
+<dt><b>FINAL_CONTENT_TYPE</b>
+<dd style="margin-left: 5.0em">The MIME media type associated with the output destined for the printer, for example "application/vnd.cups-postscript".
+<dt><b>LANG</b>
+<dd style="margin-left: 5.0em">The default language locale (typically C or en).
+<dt><b>PATH</b>
+<dd style="margin-left: 5.0em">The standard execution path for external programs that may be run by the filter.
+<dt><b>PPD</b>
+<dd style="margin-left: 5.0em">The full pathname of the PostScript Printer Description (PPD) file for this printer.
+<dt><b>PRINTER</b>
+<dd style="margin-left: 5.0em">The name of the printer.
+<dt><b>RIP_CACHE</b>
+<dd style="margin-left: 5.0em">The recommended amount of memory to use for Raster Image Processors (RIPs).
+<dt><b>SOFTWARE</b>
+<dd style="margin-left: 5.0em">The name and version number of the server (typically CUPS/<i>major.minor</i>).
+<dt><b>TZ</b>
+<dd style="margin-left: 5.0em">The timezone of the server.
+<dt><b>USER</b>
+<dd style="margin-left: 5.0em">The user executing the filter, typically "lp" or "root"; consult the <i>cups-files.conf</i> file for the current setting.
</dl>
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
While the filter interface is compatible with System V interface
scripts, it will only work with the System V interface script as the
only filter. Typically the interface script will be provided via the
-<a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a> command using the <i>-i</i> option.
+<i>lpadmin(8)</i> command using the <i>-i</i> option.
+<h2 class="title"><a name="NOTES">Notes</a></h2>
+CUPS filters are not meant to be run directly by the user.
+Aside from the legacy System V interface issues (<i>argv[0]</i> is the printer name), CUPS filters also expect specific environment variables and file descriptors, and typically run in a user session that (on OS X) has additional restrictions that affect how it runs.
+Unless you are a developer and know what you are doing, please do not run filters directly.
+Instead, use the
+<a href="man-cupsfilter.html?TOPIC=Man+Pages"><b>cupsfilter</b>(8)</a>
+program to use the appropriate filters to do the conversions you need.
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-backend.html?TOPIC=Man+Pages'>backend(7)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-cupsfilter.html?TOPIC=Man+Pages'>cupsfilter(8)</a>,
+<a href="man-backend.html?TOPIC=Man+Pages"><b>backend</b>(7),</a>
+<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1),</a>
+<a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-cupsfilter.html?TOPIC=Man+Pages"><b>cupsfilter</b>(8),</a>
<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,307 +10,195 @@
<h2 class="title"><a name="NAME">Name</a></h2>
ippfind - find internet printing protocol printers
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>ippfind
-</b>[
-<i>options
-</i>] regtype[,subtype][.domain.] ... [
-<i>expression ...
-</i>]
-<b>ippfind
-</b>[
-<i>options
-</i>] name[.regtype[.domain.]] ... [
-<i>expression ...
-</i>]
-<b>ippfind
-</b>--help
-<b>ippfind
-</b>--version
-<h2 class="title"><a name="OPTIONS">Options</a></h2>
-<dl>
-<dt>--help
-</dt>
-<dd>Show program help
-</dd>
-<dt>--version
-</dt>
-<dd>Show program version
-</dd>
-<dt>-4
-</dt>
-<dd>Use IPv4 when listing
-</dd>
-<dt>-6
-</dt>
-<dd>Use IPv6 when listing
-</dd>
-<dt>-T seconds
-</dt>
-<dd>Specify find timeout in seconds. If 1 or less, <i>ippfind</i> stops as soon as it thinks it has found everything. The default is 1 second.
-</dd>
-<dt>-V version
-</dt>
-<dd>Specifies the IPP version when listing. Supported values are 1.1, 2.0, 2.1, and 2.2.
-
-</dd>
-</dl>
+<b>ippfind</b>
+[
+<i>options</i>
+] <i>regtype</i>[<b>,</b><i>subtype</i>][<b>.</b><i>domain</i><b>.</b>] ... [
+<i>expression</i>
+ ... ]
+<br>
+<b>ippfind</b>
+[
+<i>options</i>
+] <i>name</i>[<b>.</b><i>regtype</i>[<b>.</b><i>domain</i><b>.</b>]] ... [
+<i>expression</i>
+ ... ]
+<br>
+<b>ippfind</b>
+<b>--help</b>
+<br>
+<b>ippfind</b>
+<b>--version</b>
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>ippfind</i> finds services registered with a DNS server or available through local devices. Its primary purpose is to find IPP printers and show their URIs, show their current status, or run commands. For example, to show the status of all registered IPP printers on your network, run:
-<pre>
- ippfind --ls
-</pre>
-Similarly, to send a PostScript test page to every PostScript printer, run:
-<pre>
- ippfind --txt-pdl application/postscript --exec ipptool \
- -f onepage-letter.ps '{}' print-job.test \;
-</pre>
-
-<h2 class="title"><a name="REGISTRATION_TYPES">Registration Types</a></h2>
-<i>ippfind</i> supports the following registration types:
-<dl>
+<b>ippfind</b> finds services registered with a DNS server or available through local devices.
+Its primary purpose is to find IPP printers and show their URIs, show their current status, or run commands.
+<h3><a name="REGISTRATION_TYPES">Registration Types</a></h3>
+<b>ippfind</b> supports the following registration types:
+<dl class="man">
<dt>_http._tcp
-</dt>
-<dd>HyperText Transport Protocol (HTTP, RFC 2616)
-</dd>
+<dd style="margin-left: 5.0em">HyperText Transport Protocol (HTTP, RFC 2616)
<dt>_https._tcp
-</dt>
-<dd>Secure HyperText Transport Protocol (HTTPS, RFC 2818)
-</dd>
+<dd style="margin-left: 5.0em">Secure HyperText Transport Protocol (HTTPS, RFC 2818)
<dt>_ipp._tcp
-</dt>
-<dd>Internet Printing Protocol (IPP, RFC 2911)
-</dd>
+<dd style="margin-left: 5.0em">Internet Printing Protocol (IPP, RFC 2911)
<dt>_ipps._tcp
-</dt>
-<dd>Secure Internet Printing Protocol (IPPS, draft)
-</dd>
+<dd style="margin-left: 5.0em">Secure Internet Printing Protocol (IPPS, draft)
<dt>_printer._tcp
-</dt>
-<dd>Line Printer Daemon (LPD, RFC 1179)
-
-</dd>
+<dd style="margin-left: 5.0em">Line Printer Daemon (LPD, RFC 1179)
</dl>
-<h2 class="title"><a name="EXPRESSIONS">Expressions</a></h2>
-<i>ippfind</i> supports expressions much like the <i>find(1)</i> utility. However, unlike <i>find</i>, <i>ippfind</i> uses POSIX regular expressions instead of shell filename matching patterns. If --exec, -l, --ls, -p, --print, --print-name, -q, --quiet, -s, or -x is not specified, <i>ippfind</i> adds --print to print the service URI of anything it finds. The following expressions are supported:
-<dl>
-<dt>-d regex
-</dt>
-<dd></dd>
-<dt>--domain regex
-</dt>
-<dd>True if the domain matches the given regular expression.
-</dd>
-<dt>--false
-</dt>
-<dd>Always false.
-</dd>
-<dt>-h regex
-</dt>
-<dd></dd>
-<dt>--host regex
-</dt>
-<dd>True is the hostname matches the given regular expression.
-</dd>
-<dt>-l
-</dt>
-<dd></dd>
-<dt>--ls
-</dt>
-<dd>Lists attributes returned by Get-Printer-Attributes for IPP printers and traditional <i>find</i> "-ls" output for HTTP URLs. The result is true if the URI is accessible, false otherwise.
-</dd>
-<dt>--local
-</dt>
-<dd>True if the service is local to this computer.
-</dd>
-<dt>-n regex
-</dt>
-<dd></dd>
-<dt>--name regex
-</dt>
-<dd>True if the service instance name matches the given regular expression.
-</dd>
-<dt>--path regex
-</dt>
-<dd>True if the URI resource path matches the given regular expression.
-</dd>
-<dt>-P number[-number]
-</dt>
-<dd></dd>
-<dt>--port number[-number]
-</dt>
-<dd>True if the port matches the given number or range.
-</dd>
-<dt>-p
-</dt>
-<dd></dd>
-<dt>--print
-</dt>
-<dd>Prints the URI if the result of previous expressions is true. The result is always true.
-</dd>
-<dt>-q
-</dt>
-<dd></dd>
-<dt>--quiet
-</dt>
-<dd>Quiet mode - just returns the exit codes below.
-</dd>
-<dt>-r
-</dt>
-<dd></dd>
-<dt>--remote
-</dt>
-<dd>True if the service is not local to this computer.
-</dd>
-<dt>-s
-</dt>
-<dd></dd>
-<dt>--print-name
-</dt>
-<dd>Prints the service instance name if the result of previous expressions is true. The result is always true.
-</dd>
-<dt>--true
-</dt>
-<dd>Always true.
-</dd>
-<dt>-t key
-</dt>
-<dd></dd>
-<dt>--txt key
-</dt>
-<dd>True if the TXT record contains the named key.
-</dd>
-<dt>--txt-<i>key</i> regex
-</dt>
-<dd>True if the TXT record contains the named key and matches the given regular
-expression.
-</dd>
-<dt>-u regex
-</dt>
-<dd></dd>
-<dt>--uri regex
-</dt>
-<dd>True if the URI matches the given regular expression.
-</dd>
-<dt>-x utility [argument ...] ;
-</dt>
-<dd></dd>
-<dt>--exec utility [argument ...] ;
-</dt>
-<dd>Executes the specified program if the current result is true. "{foo}" arguments are replaced with the corresponding value - see SUBSTITUTIONS below.
-</dd>
+<h3><a name="EXPRESSIONS">Expressions</a></h3>
+<b>ippfind</b> supports expressions much like the
+<b>find</b>(1)
+utility.
+However, unlike
+<b>find</b>(1),
+<b>ippfind</b> uses POSIX regular expressions instead of shell filename matching patterns.
+If <i>--exec</i>, <i>-l</i>, <i>--ls</i>, <i>-p</i>, <i>--print</i>, <i>--print-name</i>, <i>-q</i>, <i>--quiet</i>, <i>-s</i>, or <i>-x</i> is not specified, <b>ippfind</b> adds <i>--print</i> to print the service URI of anything it finds.
+The following expressions are supported:
+<dl class="man">
+<dt><b>-d </b><i>regex</i>
+<dd style="margin-left: 5.0em"><dt><b>--domain </b><i>regex</i>
+<dd style="margin-left: 5.0em">True if the domain matches the given regular expression.
+<dt><b>--false</b>
+<dd style="margin-left: 5.0em">Always false.
+<dt><b>-h </b><i>regex</i>
+<dd style="margin-left: 5.0em"><dt><b>--host </b><i>regex</i>
+<dd style="margin-left: 5.0em">True is the hostname matches the given regular expression.
+<dt><b>-l</b>
+<dd style="margin-left: 5.0em"><dt><b>--ls</b>
+<dd style="margin-left: 5.0em">Lists attributes returned by Get-Printer-Attributes for IPP printers and traditional <i>find</i> "-ls" output for HTTP URLs.
+The result is true if the URI is accessible, false otherwise.
+<dt><b>--local</b>
+<dd style="margin-left: 5.0em">True if the service is local to this computer.
+<dt><b>-n </b><i>regex</i>
+<dd style="margin-left: 5.0em"><dt><b>--name </b><i>regex</i>
+<dd style="margin-left: 5.0em">True if the service instance name matches the given regular expression.
+<dt><b>--path </b><i>regex</i>
+<dd style="margin-left: 5.0em">True if the URI resource path matches the given regular expression.
+<dt><b>-P </b><i>number</i>[<b>-</b><i>number</i>]
+<dd style="margin-left: 5.0em"><dt><b>--port </b><i>number</i>[<b>-</b><i>number</i>]
+<dd style="margin-left: 5.0em">True if the port matches the given number or range.
+<dt><b>-p</b>
+<dd style="margin-left: 5.0em"><dt><b>--print</b>
+<dd style="margin-left: 5.0em">Prints the URI if the result of previous expressions is true.
+The result is always true.
+<dt><b>-q</b>
+<dd style="margin-left: 5.0em"><dt><b>--quiet</b>
+<dd style="margin-left: 5.0em">Quiet mode - just returns the exit codes below.
+<dt><b>-r</b>
+<dd style="margin-left: 5.0em"><dt><b>--remote</b>
+<dd style="margin-left: 5.0em">True if the service is not local to this computer.
+<dt><b>-s</b>
+<dd style="margin-left: 5.0em"><dt><b>--print-name</b>
+<dd style="margin-left: 5.0em">Prints the service instance name if the result of previous expressions is true.
+The result is always true.
+<dt><b>--true</b>
+<dd style="margin-left: 5.0em">Always true.
+<dt><b>-t </b><i>key</i>
+<dd style="margin-left: 5.0em"><dt><b>--txt </b><i>key</i>
+<dd style="margin-left: 5.0em">True if the TXT record contains the named key.
+<dt><b>--txt-</b><i>key regex</i>
+<dd style="margin-left: 5.0em">True if the TXT record contains the named key and matches the given regular expression.
+<dt><b>-u </b><i>regex</i>
+<dd style="margin-left: 5.0em"><dt><b>--uri </b><i>regex</i>
+<dd style="margin-left: 5.0em">True if the URI matches the given regular expression.
+<dt><b>-x </b><i>utility </i>[ <i>argument </i>... ] <b>;</b>
+<dd style="margin-left: 5.0em"><dt><b>--exec </b><i>utility </i>[ <i>argument </i>... ] <b>;</b>
+<dd style="margin-left: 5.0em">Executes the specified program if the current result is true.
+"{foo}" arguments are replaced with the corresponding value - see SUBSTITUTIONS below.
</dl>
<p>Expressions may also contain modifiers:
-<dl>
-<dt>( expression )
-</dt>
-<dd>Group the result of expressions.
-</dd>
-<dt>! expression
-</dt>
-<dd></dd>
-<dt>--not expression
-</dt>
-<dd>Unary NOT of the expression.
-</dd>
-<dt>expression expression
-</dt>
-<dd></dd>
-<dt>expression --and expression
-</dt>
-<dd>Logical AND of expressions.
-</dd>
-<dt>expression --or expression
-</dt>
-<dd>Logical OR of expressions.
-
-</dd>
+<dl class="man">
+<dt><b>( </b><i>expression </i><b>)</b>
+<dd style="margin-left: 5.0em">Group the result of expressions.
+<dt><b>! </b><i>expression</i>
+<dd style="margin-left: 5.0em"><dt><b>--not </b><i>expression</i>
+<dd style="margin-left: 5.0em">Unary NOT of the expression.
+<dt><i>expression expression</i>
+<dd style="margin-left: 5.0em"><dt><i>expression </i><b>--and </b><i>expression</i>
+<dd style="margin-left: 5.0em">Logical AND of expressions.
+<dt><i>expression </i><b>--or </b><i>expression</i>
+<dd style="margin-left: 5.0em">Logical OR of expressions.
</dl>
-<h2 class="title"><a name="SUBSTITUTIONS">Substitutions</a></h2>
-The substitutions for "{foo}" in -e and --exec are:
-<dl>
-<dt>{}
-</dt>
-<dd>URI
-</dd>
-<dt>{service_domain}
-</dt>
-<dd>Domain name, e.g., "example.com.", "local.", etc.
-</dd>
-<dt>{service_hostname}
-</dt>
-<dd>Fully-qualified domain name, e.g., "printer.example.com.", "printer.local.", etc.
-</dd>
-<dt>{service_name}
-</dt>
-<dd>Service instance name, e.g., "My Fine Printer".
-</dd>
-<dt>{service_port}
-</dt>
-<dd>Port number for server, typically 631 for IPP and 80 for HTTP.
-</dd>
-<dt>{service_regtype}
-</dt>
-<dd>DNS-SD registration type, e.g., "_ipp._tcp", "_http._tcp", etc.
-</dd>
-<dt>{service_scheme}
-</dt>
-<dd>URI scheme for DNS-SD registration type, e.g., "ipp", "http", etc.
-</dd>
-<dt>{service_uri}
-</dt>
-<dd>URI for service, e.g., "ipp://printer.local./ipp/print", "<a href='http://printer.local./",'>http://printer.local./",</a> etc.
-</dd>
-<dt>{txt_<i>key</i>}
-</dt>
-<dd>Value of TXT record <i>key</i> (lowercase).
-
-</dd>
+<h3><a name="SUBSTITUTIONS">Substitutions</a></h3>
+The substitutions for "{foo}" in <i>-e</i> and <i>--exec</i> are:
+<dl class="man">
+<dt><b>{service_domain}</b>
+<dd style="margin-left: 5.0em">Domain name, e.g., "example.com.", "local.", etc.
+<dt><b>{service_hostname}</b>
+<dd style="margin-left: 5.0em">Fully-qualified domain name, e.g., "printer.example.com.", "printer.local.", etc.
+<dt><b>{service_name}</b>
+<dd style="margin-left: 5.0em">Service instance name, e.g., "My Fine Printer".
+<dt><b>{service_port}</b>
+<dd style="margin-left: 5.0em">Port number for server, typically 631 for IPP and 80 for HTTP.
+<dt><b>{service_regtype}</b>
+<dd style="margin-left: 5.0em">DNS-SD registration type, e.g., "_ipp._tcp", "_http._tcp", etc.
+<dt><b>{service_scheme}</b>
+<dd style="margin-left: 5.0em">URI scheme for DNS-SD registration type, e.g., "ipp", "http", etc.
+<dt><b>{}</b>
+<dd style="margin-left: 5.0em"><dt><b>{service_uri}</b>
+<dd style="margin-left: 5.0em">URI for service, e.g., "ipp://printer.local./ipp/print", "<a href="http://printer.local./"">http://printer.local./"</a>, etc.
+<dt><b>{txt_</b><i>key</i><b>}</b>
+<dd style="margin-left: 5.0em">Value of TXT record <i>key</i> (lowercase).
</dl>
-<h2 class="title"><a name="ENVIRONMENT_VARIABLES">Environment Variables</a></h2>
-When executing a program, <i>ippfind</i> sets the following environment variables for the matching service registration:
-<dl>
-<dt>IPPFIND_SERVICE_DOMAIN
-</dt>
-<dd>Domain name, e.g., "example.com.", "local.", etc.
-</dd>
-<dt>IPPFIND_SERVICE_HOSTNAME
-</dt>
-<dd>Fully-qualified domain name, e.g., "printer.example.com.", "printer.local.", etc.
-</dd>
-<dt>IPPFIND_SERVICE_NAME
-</dt>
-<dd>Service instance name, e.g., "My Fine Printer".
-</dd>
-<dt>IPPFIND_SERVICE_PORT
-</dt>
-<dd>Port number for server, typically 631 for IPP and 80 for HTTP.
-</dd>
-<dt>IPPFIND_SERVICE_REGTYPE
-</dt>
-<dd>DNS-SD registration type, e.g., "_ipp._tcp", "_http._tcp", etc.
-</dd>
-<dt>IPPFIND_SERVICE_SCHEME
-</dt>
-<dd>URI scheme for DNS-SD registration type, e.g., "ipp", "http", etc.
-</dd>
-<dt>IPPFIND_SERVICE_URI
-</dt>
-<dd>URI for service, e.g., "ipp://printer.local./ipp/print", "<a href='http://printer.local./",'>http://printer.local./",</a> etc.
-</dd>
-<dt>IPPFIND_TXT_<i>KEY</i>
-</dt>
-<dd>Values of TXT record <i>KEY</i> (uppercase).
-
-</dd>
+<h2 class="title"><a name="OPTIONS">Options</a></h2>
+<b>ippfind</b> supports the following options:
+<dl class="man">
+<dt><b>--help</b>
+<dd style="margin-left: 5.0em">Show program help.
+<dt><b>--version</b>
+<dd style="margin-left: 5.0em">Show program version.
+<dt><b>-4</b>
+<dd style="margin-left: 5.0em">Use IPv4 when listing.
+<dt><b>-6</b>
+<dd style="margin-left: 5.0em">Use IPv6 when listing.
+<dt><b>-T </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specify find timeout in seconds.
+If 1 or less, <b>ippfind</b> stops as soon as it thinks it has found everything.
+The default timeout is 1 second.
+<dt><b>-V </b><i>version</i>
+<dd style="margin-left: 5.0em">Specifies the IPP version when listing.
+Supported values are "1.1", "2.0", "2.1", and "2.2".
+</dl>
+<h2 class="title"><a name="EXIT_STATUS">Exit Status</a></h2>
+<b>ippfind</b> returns 0 if the result for all processed expressions is true, 1 if the result of any processed expression is false, 2 if browsing or any query or resolution failed, 3 if an undefined option or invalid expression was specified, and 4 if it ran out of memory.
+<h2 class="title"><a name="ENVIRONMENT">Environment</a></h2>
+When executing a program, <b>ippfind</b> sets the following environment variables for the matching service registration:
+<dl class="man">
+<dt><b>IPPFIND_SERVICE_DOMAIN</b>
+<dd style="margin-left: 5.0em">Domain name, e.g., "example.com.", "local.", etc.
+<dt><b>IPPFIND_SERVICE_HOSTNAME</b>
+<dd style="margin-left: 5.0em">Fully-qualified domain name, e.g., "printer.example.com.", "printer.local.", etc.
+<dt><b>IPPFIND_SERVICE_NAME</b>
+<dd style="margin-left: 5.0em">Service instance name, e.g., "My Fine Printer".
+<dt><b>IPPFIND_SERVICE_PORT</b>
+<dd style="margin-left: 5.0em">Port number for server, typically 631 for IPP and 80 for HTTP.
+<dt><b>IPPFIND_SERVICE_REGTYPE</b>
+<dd style="margin-left: 5.0em">DNS-SD registration type, e.g., "_ipp._tcp", "_http._tcp", etc.
+<dt><b>IPPFIND_SERVICE_SCHEME</b>
+<dd style="margin-left: 5.0em">URI scheme for DNS-SD registration type, e.g., "ipp", "http", etc.
+<dt><b>IPPFIND_SERVICE_URI</b>
+<dd style="margin-left: 5.0em">URI for service, e.g., "ipp://printer.local./ipp/print", "<a href="http://printer.local./"">http://printer.local./"</a>, etc.
+<dt><b>IPPFIND_TXT_fIKEYfR</b>
+<dd style="margin-left: 5.0em">Values of TXT record <i>KEY</i> (uppercase).
</dl>
-<h2 class="title"><a name="EXIT_CODES">Exit Codes</a></h2>
-<i>ippfind</i> returns 0 if the result for all processed expressions is true, 1 if the result of any processed expression is false, 2 if browsing or any query or resolution failed, 3 if an undefined option or invalid expression was specified, and 4 if it ran out of memory.
+<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+To show the status of all registered IPP printers on your network, run:
+<pre class="man">
-<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-ipptool.html?TOPIC=Man+Pages'>ipptool(1)</a>
+ ippfind --ls
+</pre>
+Similarly, to send a PostScript test page to every PostScript printer, run:
+<pre class="man">
+
+ ippfind --txt-pdl application/postscript --exec ipptool
+ -f onepage-letter.ps '{}' print-job.test \;
+</pre>
+<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(1)</a>
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2013 by Apple Inc.
+Copyright &copy; 2013-2014 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-ipptool.html b/doc/help/man-ipptool.html
index 5d3b5bea2..aba14e551 100644
--- a/doc/help/man-ipptool.html
+++ b/doc/help/man-ipptool.html
@@ -1,4 +1,4 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,174 +10,212 @@
<h2 class="title"><a name="NAME">Name</a></h2>
ipptool - perform internet printing protocol requests
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>ipptool
-</b>[ --help ] [ --stop-after-include-error ] [ --version ]
-[ -4 ] [ -6 ] [ -C ] [ -E ] [ -I ] [ -L ] [ -S ] [ -T
-<i>seconds
-</i>] [ -V
-<i>version
-</i>] [ -X ] [ -c ] [ -d
-<i>name=value
-</i>] [ -f
-<i>filename
-</i>] [ -i
-<i>seconds
-</i>] [ -n
-<i>repeat-count
-</i>] [ -q ] [ -t ] [ -v ]
-<i>URI
-</i><i>filename
-</i>[
-<i>... filenameN
-</i>]
+<b>ipptool</b>
+[
+<b>--help</b>
+] [
+<b>--stop-after-include-error</b>
+] [
+<b>--version</b>
+] [
+<b>-4</b>
+] [
+<b>-6</b>
+] [
+<b>-C</b>
+] [
+<b>-E</b>
+] [
+<b>-I</b>
+] [
+<b>-L</b>
+] [
+<b>-P</b>
+<i>filename.plist</i>
+] [
+<b>-S</b>
+] [
+<b>-T</b>
+<i>seconds</i>
+] [
+<b>-V</b>
+<i>version</i>
+] [
+<b>-X</b>
+] [
+<b>-c</b>
+] [
+<b>-d</b>
+<i>name=value</i>
+] [
+<b>-f</b>
+<i>filename</i>
+] [
+<b>-i</b>
+<i>seconds</i>
+] [
+<b>-n</b>
+<i>repeat-count</i>
+] [
+<b>-q</b>
+] [
+<b>-t</b>
+] [
+<b>-v</b><b>]</b>
+<i>printer-uri</i>
+<i>testfile</i>
+[ ...
+<i>testfile</i>
+]
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>ipptool</i> sends IPP requests to the specified URI and tests and/or displays the results. Each named file defines one or more requests, including the expected response status, attributes, and values. Output is either a plain text, formatted text, CSV, or XML report on the standard output, with a non-zero exit status indicating that one or more tests have failed. The file format is described in <a href='man-ipptoolfile.html?TOPIC=Man+Pages'>ipptoolfile(5)</a>.
+<b>ipptool</b>
+sends IPP requests to the specified
+<i>printer-uri</i>
+and tests and/or displays the results.
+Each named
+<i>testfile</i>
+defines one or more requests, including the expected response status, attributes, and values.
+Output is either a plain text, formatted text, CSV, or XML report on the standard output, with a non-zero exit status indicating that one or more tests have failed.
+The
+<i>testfile</i>
+format is described in
+<a href="man-ipptoolfile.html?TOPIC=Man+Pages"><b>ipptoolfile</b>(5).</a>
<h2 class="title"><a name="OPTIONS">Options</a></h2>
-The following options are recognized by <i>ipptool</i>:
-<dl>
-<dt>--help
-</dt>
-<dd>Shows program help.
-</dd>
-<dt>--stop-after-include-error
-</dt>
-<dd>Tells <i>ipptool</i> to stop if an error occurs in an included file. Normally <i>ipptool</i> will continue with subsequent tests after the INCLUDE directive.
-</dd>
-<dt>--version
-</dt>
-<dd>Shows the version of <i>ipptool</i> being used.
-</dd>
-<dt>-4
-</dt>
-<dd>Specifies that <i>ipptool</i> must connect to the printer or server using IPv4.
-</dd>
-<dt>-6
-</dt>
-<dd>Specifies that <i>ipptool</i> must connect to the printer or server using IPv6.
-</dd>
-<dt>-C
-</dt>
-<dd>Specifies that requests should be sent using the HTTP/1.1 "Transfer-Encoding: chunked" header, which is required for conformance by all versions of IPP. The default is to use "Transfer-Encoding: chunked" for requests with attached files and "Content-Length:" for requests without attached files.
-</dd>
-<dt>-E
-</dt>
-<dd>Forces TLS encryption when connecting to the server using the HTTP "Upgrade" header.
-</dd>
-<dt>-I
-</dt>
-<dd>Specifies that <i>ipptool</i> will continue past errors.
-</dd>
-<dt>-L
-</dt>
-<dd>Specifies that requests should be sent using the HTTP/1.0 "Content-Length:" header, which is required for conformance by all versions of IPP. The default is to use "Transfer-Encoding: chunked" for requests with attached files and "Content-Length:" for requests without attached files.
-</dd>
-<dt>-S
-</dt>
-<dd>Forces (dedicated) SSL encryption when connecting to the server.
-</dd>
-<dt>-T seconds
-</dt>
-<dd>Specifies a timeout for IPP requests in seconds.
-</dd>
-<dt>-V version
-</dt>
-<dd>Specifies the default IPP version to use: 1.0, 1.1, 2.0, 2.1, or 2.2. If not specified, version 1.1 is used.
-</dd>
-<dt>-X
-</dt>
-<dd>Specifies that XML (Apple plist) output is desired instead of the plain text report. This option is incompatible with the <i>-i</i> (interval) and <i>-n</i> (repeat-count) options.
-</dd>
-<dt>-c
-</dt>
-<dd>Specifies that CSV (comma-separated values) output is desired instead of the plain text output.
-</dd>
-<dt>-d name=value
-</dt>
-<dd>Defines the named variable.
-</dd>
-<dt>-f filename
-</dt>
-<dd>Defines the default request filename for tests.
-</dd>
-<dt>-i seconds
-</dt>
-<dd>Specifies that the (last) file should be repeated at the specified interval. This option is incompatible with the <i>-X</i> (XML plist output) option.
-</dd>
-<dt>-l
-</dt>
-<dd>Specifies that plain text output is desired.
-</dd>
-<dt>-n repeat-count
-</dt>
-<dd>Specifies that the (last) file should be repeated the specified number of times. This option is incompatible with the <i>-X</i> (XML plist output) option.
-</dd>
-<dt>-t
-</dt>
-<dd>Specifies that CUPS test report output is desired instead of the plain text output.
-</dd>
-<dt>-v
-</dt>
-<dd>Specifies that all request and response attributes should be output in CUPS test mode (<i>-t</i>). This is the default for XML output.
-</dd>
+The following options are recognized by
+<b>ipptool:</b>
+<dl class="man">
+<dt><b>--help</b>
+<dd style="margin-left: 5.0em">Shows program help.
+<dt><b>--stop-after-include-error</b>
+<dd style="margin-left: 5.0em">Tells
+<b>ipptool</b>
+to stop if an error occurs in an included file. Normally
+<b>ipptool</b>
+will continue with subsequent tests after the INCLUDE directive.
+<dt><b>--version</b>
+<dd style="margin-left: 5.0em">Shows the version of
+<b>ipptool</b>
+being used.
+<dt><b>-4</b>
+<dd style="margin-left: 5.0em">Specifies that
+<b>ipptool</b>
+must connect to the printer or server using IPv4.
+<dt><b>-6</b>
+<dd style="margin-left: 5.0em">Specifies that
+<b>ipptool</b>
+must connect to the printer or server using IPv6.
+<dt><b>-C</b>
+<dd style="margin-left: 5.0em">Specifies that requests should be sent using the HTTP/1.1 "Transfer-Encoding: chunked" header, which is required for conformance by all versions of IPP.
+The default is to use "Transfer-Encoding: chunked" for requests with attached files and "Content-Length:" for requests without attached files.
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Forces TLS encryption when connecting to the server using the HTTP "Upgrade" header.
+<dt><b>-I</b>
+<dd style="margin-left: 5.0em">Specifies that
+<b>ipptool</b>
+will continue past errors.
+<dt><b>-L</b>
+<dd style="margin-left: 5.0em">Specifies that requests should be sent using the HTTP/1.0 "Content-Length:" header, which is required for conformance by all versions of IPP.
+The default is to use "Transfer-Encoding: chunked" for requests with attached files and "Content-Length:" for requests without attached files.
+<dt><b>-P</b><i> filename.plist</i>
+<dd style="margin-left: 5.0em">Specifies that the test results should be written to the named XML (Apple plist) file in addition to the regular test report (<b>-t</b>).
+This option is incompatible with the <b>-i</b> (interval) and <b>-n</b> (repeat-count) options.
+<dt><b>-S</b>
+<dd style="margin-left: 5.0em">Forces (dedicated) TLS encryption when connecting to the server.
+<dt><b>-T</b><i> seconds</i>
+<dd style="margin-left: 5.0em">Specifies a timeout for IPP requests in seconds.
+<dt><b>-V</b><i> version</i>
+<dd style="margin-left: 5.0em">Specifies the default IPP version to use: 1.0, 1.1, 2.0, 2.1, or 2.2. If not specified, version 1.1 is used.
+<dt><b>-X</b>
+<dd style="margin-left: 5.0em">Specifies that XML (Apple plist) output is desired instead of the plain text report.
+This option is incompatible with the <b>-i</b> (interval) and <b>-n</b> (repeat-count) options.
+<dt><b>-c</b>
+<dd style="margin-left: 5.0em">Specifies that CSV (comma-separated values) output is desired instead of the plain text output.
+<dt><b>-d</b><i> name=value</i>
+<dd style="margin-left: 5.0em">Defines the named variable.
+<dt><b>-f</b><i> filename</i>
+<dd style="margin-left: 5.0em">Defines the default request filename for tests.
+<dt><b>-i</b><i> seconds</i>
+<dd style="margin-left: 5.0em">Specifies that the (last)
+<i>testfile</i>
+should be repeated at the specified interval.
+This option is incompatible with the <b>-X</b> (XML plist output) option.
+<dt><b>-l</b>
+<dd style="margin-left: 5.0em">Specifies that plain text output is desired.
+<dt><b>-n</b><i> repeat-count</i>
+<dd style="margin-left: 5.0em">Specifies that the (last)
+<i>testfile</i>
+should be repeated the specified number of times.
+This option is incompatible with the <i>-X</i> (XML plist output) option.
+<dt><b>-q</b>
+<dd style="margin-left: 5.0em">Be quiet and produce no output.
+<dt><b>-t</b>
+<dd style="margin-left: 5.0em">Specifies that CUPS test report output is desired instead of the plain text output.
+<dt><b>-v</b>
+<dd style="margin-left: 5.0em">Specifies that all request and response attributes should be output in CUPS test mode (<b>-t</b>).
+This is the default for XML output.
</dl>
-<h2 class="title"><a name="EXIT_CODE">Exit Code</a></h2>
-The <i>ipptool</i> program returns 0 if all tests were sucessful and 1 otherwise.
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-The <i>ipptool</i> program is unique to CUPS.
+<h2 class="title"><a name="EXIT_STATUS">Exit Status</a></h2>
+The
+<b>ipptool</b>
+program returns 0 if all tests were sucessful and 1 otherwise.
+<h2 class="title"><a name="FILES">Files</a></h2>
+The following standard files are available:
+<pre class="man">
+<i>color.jpg</i>
+<i>create-printer-subscription.test</i>
+<i>document-a4.pdf</i>
+<i>document-a4.ps</i>
+<i>document-letter.pdf</i>
+<i>document-letter.ps</i>
+<i>get-completed-jobs.test</i>
+<i>get-jobs.test</i>
+<i>get-notifications.test</i>
+<i>get-printer-attributes.test</i>
+<i>get-subscriptions.test</i>
+<i>gray.jpg</i>
+<i>ipp-1.1.test</i>
+<i>ipp-2.0.test</i>
+<i>ipp-2.1.test</i>
+<i>ipp-2.2.test</i>
+<i>ipp-everywhere.test</i>
+<i>onepage-a4.pdf</i>
+<i>onepage-a4.ps</i>
+<i>onepage-letter.pdf</i>
+<i>onepage-letter.ps</i>
+<i>print-job.test</i>
+<i>print-job-deflate.test</i>
+<i>print-job-gzip.test</i>
+<i>testfile.jpg</i>
+<i>testfile.pcl</i>
+<i>testfile.pdf</i>
+<i>testfile.ps</i>
+<i>testfile.txt</i>
+<i>validate-job.test</i>
+</pre>
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+The
+<b>ipptool</b>
+program is unique to CUPS and conforms to the Internet Printing Protocol up to version 2.2.
<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
Get a list of completed jobs for "myprinter":
-<pre>
+<pre class="man">
+
ipptool ipp://localhost/printers/myprinter get-completed-jobs.test
</pre>
<p>Send email notifications to "user@example.com" when "myprinter" changes:
-<pre>
- ipptool -d recipient=mailto:user@example.com
+<pre class="man">
+
+ ipptool -d recipient=mailto:user@example.com \
ipp://localhost/printers/myprinter create-printer-subscription.test
</pre>
-<h2 class="title"><a name="STANDARD_FILES">Standard Files</a></h2>
-The following standard files are available:
-<pre>
- color.jpg
- create-printer-subscription.test
- document-a4.pdf
- document-a4.ps
- document-letter.pdf
- document-letter.ps
- get-completed-jobs.test
- get-jobs.test
- get-notifications.test
- get-printer-attributes.test
- get-subscriptions.test
- gray.jpg
- ipp-1.1.test
- ipp-2.0.test
- ipp-2.1.test
- ipp-2.2.test
- ipp-everywhere.test
- onepage-a4.pdf
- onepage-a4.ps
- onepage-letter.pdf
- onepage-letter.ps
- print-job.test
- print-job-deflate.test
- print-job-gzip.test
- testfile.jpg
- testfile.pcl
- testfile.pdf
- testfile.ps
- testfile.txt
- validate-job.test
-</pre>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-ipptoolfile.html?TOPIC=Man+Pages'>ipptoolfile(5)</a>, RFC 2911,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
-<br>
-<a href='http://www.iana.org/assignments/ipp-registrations'>http://www.iana.org/assignments/ipp-registrations</a>
-<br>
-<a href='http://www.pwg.org/ipp'>http://www.pwg.org/ipp</a>
+<a href="man-ipptoolfile.html?TOPIC=Man+Pages"><b>ipptoolfile</b>(5),</a>
+CUPS Online Help (<a href="http://localhost:631/help)">http://localhost:631/help)</a>,
+IANA IPP Registry (<a href="http://www.iana.org/assignments/ipp\-registrations)">http://www.iana.org/assignments/ipp\-registrations)</a>,
+PWG Internet Printing Protocol Workgroup (<a href="http://www.pwg.org/ipp">http://www.pwg.org/ipp</a>)
+RFC 2911 (<a href="http://tools.ietf.org/html/rfc2911)">http://tools.ietf.org/html/rfc2911)</a>,
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -9,15 +9,16 @@
<h1 class="title">ipptoolfile(5)</h1>
<h2 class="title"><a name="NAME">Name</a></h2>
ipptoolfile - ipptool file format
-
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <a href='man-ipptool.html?TOPIC=Man+Pages'>ipptool(1)</a> program accepts free-form plain text files that describe one or more IPP requests. Comments start with the "#" character and continue to the end of the line. Each request is enclosed by curly braces, for example:
-<pre>
+The
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(1)</a>
+program accepts free-form plain text files that describe one or more IPP requests. Comments start with the "#" character and continue to the end of the line. Each request is enclosed by curly braces, for example:
+<pre class="man">
# This is a comment
{
# The name of the test
- NAME "Print PostScript Job"
+ NAME "Print PostScript File"
# The request to send
OPERATION Print-Job
@@ -30,9 +31,7 @@ The <a href='man-ipptool.html?TOPIC=Man+Pages'>ipptool(1)</a> program accepts fr
# The response to expect
STATUS successful-ok
- EXPECT attributes-charset OF-TYPE charset
- EXPECT attributes-natural-language OF-TYPE naturalLanguage
- EXPECT job-id OF-TYPE integer
+ EXPECT job-id OF-TYPE integer WITH-VALUE >0
EXPECT job-uri OF-TYPE uri
}
{
@@ -50,462 +49,228 @@ The <a href='man-ipptool.html?TOPIC=Man+Pages'>ipptool(1)</a> program accepts fr
# The response to expect
STATUS successful-ok
- EXPECT attributes-charset OF-TYPE charset
- EXPECT attributes-natural-language OF-TYPE naturalLanguage
- EXPECT job-id OF-TYPE integer
+ EXPECT job-id OF-TYPE integer WITH-VALUE $job-id
EXPECT job-uri OF-TYPE uri
- EXPECT job-state OF-TYPE enum
+ EXPECT job-state OF-TYPE enum WITH-VALUE 3,4,5,6,7,8,9
EXPECT job-originating-user-name OF-TYPE name WITH-VALUE "$user"
}
</pre>
-
-<h2 class="title"><a name="TOP-LEVEL_DIRECTIVES">Top-level Directives</a></h2>
-The following directives can be used outside of a test:
-<dl>
-<dt>{ test }
-</dt>
-<dd>Defines a test.
-</dd>
-<dt>DEFINE variable-name value
-</dt>
-<dd>Defines the named variable to the given value. This is equivalent to specifying
-"-d variable-name=value" on the <i>ipptool</i> command-line.
-</dd>
-<dt>DEFINE-DEFAULT variable-name value
-</dt>
-<dd>Defines the named variable to the given value if it does not already have a
-value.
-</dd>
-<dt>FILE-ID "identifier"
-</dt>
-<dd>Specifies an identifier string for the current file.
-</dd>
-<dt>IGNORE-ERRORS yes
-</dt>
-<dd></dd>
-<dt>IGNORE-ERRORS no
-</dt>
-<dd>Specifies whether, by default, <i>ipptool</i> will ignore errors and continue with
-subsequent tests.
-</dd>
-<dt>INCLUDE "filename"
-</dt>
-<dd></dd>
-<dt>INCLUDE &lt;filename>
-</dt>
-<dd>Includes another test file. The first form includes a file relative to the
-current test file, while the second form includes a file from the <i>ipptool</i>
+<h3><a name="TOP_LEVEL_DIRECTIVES">Top-level Directives</a></h3>
+The following directives can be used outside of a <i>test</i>:
+<dl class="man">
+<dt><b>{ </b><i>test </i><b>}</b>
+<dd style="margin-left: 5.0em">Defines a test.
+<dt><b>DEFINE </b><i>variable-name value</i>
+<dd style="margin-left: 5.0em">Defines the named variable to the given value. This is equivalent to specifying <i>-d variable-name=value</i> on the
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+command-line.
+<dt><b>DEFINE-DEFAULT </b><i>variable-name value</i>
+<dd style="margin-left: 5.0em">Defines the named variable to the given value if it does not already have a value.
+<dt><b>FILE-ID "</b><i>identifier</i><b>"</b>
+<dd style="margin-left: 5.0em">Specifies an identifier string for the current file.
+<dt><b>IGNORE-ERRORS yes</b>
+<dd style="margin-left: 5.0em"><dt><b>IGNORE-ERRORS no</b>
+<dd style="margin-left: 5.0em">Specifies whether, by default,
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+will ignore errors and continue with subsequent tests.
+<dt><b>INCLUDE "</b><i>filename</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>INCLUDE &lt;</b><i>filename</i><b>></b>
+<dd style="margin-left: 5.0em">Includes another test file. The first form includes a file relative to the current test file, while the second form includes a file from the
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
include directory.
-</dd>
-<dt>INCLUDE-IF-DEFINED name "filename"
-</dt>
-<dd></dd>
-<dt>INCLUDE-IF-DEFINED name &lt;filename>
-</dt>
-<dd>Includes another test file if the named variable is defined. The first form
-includes a file relative to the current test file, while the second form
-includes a file from the <i>ipptool</i> include directory.
-</dd>
-<dt>INCLUDE-IF-NOT-DEFINED name "filename"
-</dt>
-<dd></dd>
-<dt>INCLUDE-IF-NOT-DEFINED name &lt;filename>
-</dt>
-<dd>Includes another test file if the named variable is not defined. The first form
-includes a file relative to the current test file, while the second form
-includes a file from the <i>ipptool</i> include directory.
-</dd>
-<dt>SKIP-IF-DEFINED variable-name
-</dt>
-<dd></dd>
-<dt>SKIP-IF-NOT-DEFINED variable-name
-</dt>
-<dd>Specifies that the remainder of the test file should be skipped when the
-variable is or is not defined.
-</dd>
-<dt>STOP-AFTER-INCLUDE-ERROR no
-</dt>
-<dd></dd>
-<dt>STOP-AFTER-INCLUDE-ERROR yes
-</dt>
-<dd>Specifies whether tests will be stopped after an error in an included file.
-</dd>
-<dt>TRANSFER auto
-</dt>
-<dd>Specifies that tests will, by default, use "Transfer-Encoding: chunked" for
-requests with attached files and "Content-Length:" for requests without attached
-files.
-</dd>
-<dt>TRANSFER chunked
-</dt>
-<dd>Specifies that tests will, by default, use the HTTP/1.1 "Transfer-Encoding:
-chunked" header. This is the default and is equivalent to specifying "-c" on the
-<i>ipptool</i> command-line. Support for chunked requests is required for
-conformance with all versions of IPP.
-</dd>
-<dt>TRANSFER length
-</dt>
-<dd>Specifies that tests will, by default, use the HTTP/1.0 "Content-Length:"
-header. This is equivalent to specifying "-l" on the <i>ipptool</i> command-line.
-Support for content length requests is required for conformance with all
-versions of IPP.
-</dd>
-<dt>VERSION 1.0
-</dt>
-<dd></dd>
-<dt>VERSION 1.1
-</dt>
-<dd></dd>
-<dt>VERSION 2.0
-</dt>
-<dd></dd>
-<dt>VERSION 2.1
-</dt>
-<dd></dd>
-<dt>VERSION 2.2
-</dt>
-<dd>Specifies the default IPP version number to use for the tests that follow.
-
-</dd>
+<dt><b>INCLUDE-IF-DEFINED </b><i>name </i><b>"</b><i>filename</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>INCLUDE-IF-DEFINED </b><i>name </i><b>&lt;</b><i>filename</i><b>></b>
+<dd style="margin-left: 5.0em">Includes another test file if the named variable is defined. The first form includes a file relative to the current test file, while the second form includes a file from the
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+include directory.
+<dt><b>INCLUDE-IF-NOT-DEFINED </b><i>name </i><b>"</b><i>filename</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>INCLUDE-IF-NOT-DEFINED </b><i>name </i><b>&lt;</b><i>filename</i><b>></b>
+<dd style="margin-left: 5.0em">Includes another test file if the named variable is not defined. The first form includes a file relative to the current test file, while the second form includes a file from the
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+include directory.
+<dt><b>SKIP-IF-DEFINED </b><i>variable-name</i>
+<dd style="margin-left: 5.0em"><dt><b>SKIP-IF-NOT-DEFINED </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Specifies that the remainder of the test file should be skipped when the variable is or is not defined.
+<dt><b>STOP-AFTER-INCLUDE-ERROR no</b>
+<dd style="margin-left: 5.0em"><dt><b>STOP-AFTER-INCLUDE-ERROR yes</b>
+<dd style="margin-left: 5.0em">Specifies whether tests will be stopped after an error in an included file.
+<dt><b>TRANSFER auto</b>
+<dd style="margin-left: 5.0em">Specifies that tests will, by default, use "Transfer-Encoding: chunked" for requests with attached files and "Content-Length:" for requests without attached files.
+<dt><b>TRANSFER chunked</b>
+<dd style="margin-left: 5.0em">Specifies that tests will, by default, use the HTTP/1.1 "Transfer-Encoding: chunked" header. This is the default and is equivalent to specifying <i>-c</i> on the
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+command-line. Support for chunked requests is required for conformance with all versions of IPP.
+<dt><b>TRANSFER length</b>
+<dd style="margin-left: 5.0em">Specifies that tests will, by default, use the HTTP/1.0 "Content-Length:" header. This is equivalent to specifying <i>-l</i> on the
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+command-line. Support for content length requests is required for conformance with all versions of IPP.
+<dt><b>VERSION 1.0</b>
+<dd style="margin-left: 5.0em"><dt><b>VERSION 1.1</b>
+<dd style="margin-left: 5.0em"><dt><b>VERSION 2.0</b>
+<dd style="margin-left: 5.0em"><dt><b>VERSION 2.1</b>
+<dd style="margin-left: 5.0em"><dt><b>VERSION 2.2</b>
+<dd style="margin-left: 5.0em">Specifies the default IPP version number to use for the tests that follow.
</dl>
-<h2 class="title"><a name="TEST_DIRECTIVES">Test Directives</a></h2>
-The following directives are understood in a test:
-<dl>
-<dt>ATTR tag attribute-name value(s)
-</dt>
-<dd>Adds an attribute to the test request. Values are separated by the comma (",")
-character - escape commas using the "" character. Common attributes and values are listed in the IANA IPP registry - see references below.
-</dd>
-<dt>ATTR collection attribute-name { MEMBER tag member-name value(s) ... } [ ... { ... } ]
-</dt>
-<dd>Adds a collection attribute to the test request. Member attributes follow the
-same syntax as regular attributes and can themselves be nested collections.
-Multiple collection values can be supplied as needed.
-</dd>
-<dt>COMPRESSION deflate
-</dt>
-<dd></dd>
-<dt>COMPRESSION gzip
-</dt>
-<dd></dd>
-<dt>COMPRESSION none
-</dt>
-<dd></dd>
-<dd>Uses the specified compression on the document data following the attributes in
-a Print-Job or Send-Document request.
-</dd>
-<dt>DELAY seconds
-</dt>
-<dd>Specifies a delay before this test will be run.
-</dd>
-<dt>DISPLAY attribute-name
-</dt>
-<dd>Specifies that value of the named attribute should be output as part of the
+<h3><a name="TEST_DIRECTIVES">Test Directives</a></h3>
+The following directives are understood within a <i>test</i>:
+<dl class="man">
+<dt><b>ATTR </b><i>tag attribute-name value(s)</i>
+<dd style="margin-left: 5.0em">Adds an attribute to the test request. Values are separated by the comma (",") character - escape commas using the "" character. Common attributes and values are listed in the IANA IPP registry - see references below.
+<dt><b>ATTR collection </b><i>attribute-name </i><b>{ MEMBER </b><i>tag member-name value(s) ... </i><b>}</b> [ <i>... </i><b>,{ </b><i>... </i><b>} </b>]
+<dd style="margin-left: 5.0em">Adds a collection attribute to the test request. Member attributes follow the same syntax as regular attributes and can themselves be nested collections. Multiple collection values can be supplied as needed, separated by commas.
+<dt><b>COMPRESSION deflate</b>
+<dd style="margin-left: 5.0em"><dt><b>COMPRESSION gzip</b>
+<dd style="margin-left: 5.0em"><dt><b>COMPRESSION none</b>
+<dd style="margin-left: 5.0em">Uses the specified compression on the document data following the attributes in a Print-Job or Send-Document request.
+<dt><b>DELAY </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies a delay before this test will be run.
+<dt><b>DISPLAY </b><i>attribute-name</i>
+<dd style="margin-left: 5.0em">Specifies that value of the named attribute should be output as part of the
test report.
-</dd>
-<dt>EXPECT attribute-name [ predicate(s) ]
-</dt>
-<dd></dd>
-<dt>EXPECT ?attribute-name predicate(s)
-</dt>
-<dd></dd>
-<dt>EXPECT !attribute-name
-</dt>
-<dd>Specifies that the response must/may/must not include the named attribute.
-Additional requirements can be added as predicates - see the "EXPECT PREDICATES"
-section for more information on predicates.
-</dd>
-<dt>FILE filename
-</dt>
-<dd>Specifies a file to include at the end of the request. This is typically used
-when sending a test print file.
-</dd>
-<dt>GROUP tag
-</dt>
-<dd>Specifies the group tag for subsequent attributes in the request.
-</dd>
-<dt>IGNORE-ERRORS yes
-</dt>
-<dd></dd>
-<dt>IGNORE-ERRORS no
-</dt>
-<dd>Specifies whether <i>ipptool</i> will ignore errors and continue with subsequent
-tests.
-</dd>
-<dt>NAME "literal string"
-</dt>
-<dd>Specifies the human-readable name of the test.
-</dd>
-<dt>OPERATION operation-code
-</dt>
-<dd>Specifies the operation to be performed.
-</dd>
-<dt>REQUEST-ID number
-</dt>
-<dd></dd>
-<dt>REQUEST-ID random
-</dt>
-<dd>Specifies the request-id value to use in the request, either an integer or the
-word "random" to use a randomly generated value (the default).
-</dd>
-<dt>RESOURCE path
-</dt>
-<dd>Specifies an alternate resource path that is used for the HTTP POST request.
-The default is the resource from the URI provided to the <i>ipptool</i> program.
-</dd>
-<dt>SKIP-IF-DEFINED variable-name
-</dt>
-<dd></dd>
-<dt>SKIP-IF-NOT-DEFINED variable-name
-</dt>
-<dd>Specifies that the current test should be skipped when the variable is or is not
-defined.
-</dd>
-<dt>SKIP-PREVIOUS-ERROR yes
-</dt>
-<dd></dd>
-<dt>SKIP-PREVIOUS-ERROR no
-</dt>
-<dd>Specifies whether <i>ipptool</i> will skip the current test if the previous test
-resulted in an error/failure.
-</dd>
-<dt>STATUS status-code [ predicate ]
-</dt>
-<dd>Specifies an expected response status-code value. Additional requirements can be
-added as predicates - see the "STATUS PREDICATES" section for more information
-on predicates.
-</dd>
-<dt>TEST-ID "identifier"
-</dt>
-<dd>Specifies an identifier string for the current test.
-</dd>
-<dt>TRANSFER auto
-</dt>
-<dd>Specifies that this test will use "Transfer-Encoding: chunked" if it has an
-attached file or "Content-Length:" otherwise.
-</dd>
-<dt>TRANSFER chunked
-</dt>
-<dd>Specifies that this test will use the HTTP/1.1 "Transfer-Encoding: chunked"
-header.
-</dd>
-<dt>TRANSFER length
-</dt>
-<dd>Specifies that this test will use the HTTP/1.0 "Content-Length:" header.
-</dd>
-<dt>VERSION 1.0
-</dt>
-<dd></dd>
-<dt>VERSION 1.1
-</dt>
-<dd></dd>
-<dt>VERSION 2.0
-</dt>
-<dd></dd>
-<dt>VERSION 2.1
-</dt>
-<dd></dd>
-<dt>VERSION 2.2
-</dt>
-<dd>Specifies the IPP version number to use for this test.
-
-</dd>
+<dt><b>EXPECT </b><i>attribute-name </i>[ <i>predicate(s) </i>]
+<dd style="margin-left: 5.0em"><dt><b>EXPECT ?</b><i>attribute-name predicate(s)</i>
+<dd style="margin-left: 5.0em"><dt><b>EXPECT !</b><i>attribute-name</i>
+<dd style="margin-left: 5.0em">Specifies that the response must/may/must not include the named attribute. Additional requirements can be added as predicates - see the "EXPECT PREDICATES" section for more information on predicates. Attribute names can specify member attributes by separating the attribute and member names with the forward slash, for example "media-col/media-size/x-dimension".
+<dt><b>FILE filename</b>
+<dd style="margin-left: 5.0em">Specifies a file to include at the end of the request. This is typically used when sending a test print file.
+<dt><b>GROUP tag</b>
+<dd style="margin-left: 5.0em">Specifies the group tag for subsequent attributes in the request.
+<dt><b>IGNORE-ERRORS yes</b>
+<dd style="margin-left: 5.0em"><dt><b>IGNORE-ERRORS no</b>
+<dd style="margin-left: 5.0em">Specifies whether
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+will ignore errors and continue with subsequent tests.
+<dt><b>NAME "</b><i>literal string</i><b>"</b>
+<dd style="margin-left: 5.0em">Specifies the human-readable name of the test.
+<dt><b>OPERATION </b><i>operation-code</i>
+<dd style="margin-left: 5.0em">Specifies the operation to be performed.
+<dt><b>PAUSE "</b><i>message</i><b>"</b>
+<dd style="margin-left: 5.0em">Displays the provided message and waits for the user to press a key to continue.
+<dt><b>REQUEST-ID </b><i>number</i>
+<dd style="margin-left: 5.0em"><dt><b>REQUEST-ID random</b>
+<dd style="margin-left: 5.0em">Specifies the request-id value to use in the request, either an integer or the word "random" to use a randomly generated value (the default).
+<dt><b>RESOURCE </b><i>path</i>
+<dd style="margin-left: 5.0em">Specifies an alternate resource path that is used for the HTTP POST request. The default is the resource from the URI provided to the
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+program.
+<dt><b>SKIP-IF-DEFINED </b><i>variable-name</i>
+<dd style="margin-left: 5.0em"><dt><b>SKIP-IF-NOT-DEFINED </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Specifies that the current test should be skipped when the variable is or is not defined.
+<dt><b>SKIP-PREVIOUS-ERROR yes</b>
+<dd style="margin-left: 5.0em"><dt><b>SKIP-PREVIOUS-ERROR no</b>
+<dd style="margin-left: 5.0em">Specifies whether
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+will skip the current test if the previous test resulted in an error/failure.
+<dt><b>STATUS </b><i>status-code </i>[ <i>predicate</i> ]
+<dd style="margin-left: 5.0em">Specifies an expected response status-code value. Additional requirements can be added as predicates - see the "STATUS PREDICATES" section for more information on predicates.
+<dt><b>TEST-ID "</b><i>identifier</i>"
+<dd style="margin-left: 5.0em">Specifies an identifier string for the current test.
+<dt><b>TRANSFER auto</b>
+<dd style="margin-left: 5.0em">Specifies that this test will use "Transfer-Encoding: chunked" if it has an attached file or "Content-Length:" otherwise.
+<dt><b>TRANSFER chunked</b>
+<dd style="margin-left: 5.0em">Specifies that this test will use the HTTP/1.1 "Transfer-Encoding: chunked" header.
+<dt><b>TRANSFER length</b>
+<dd style="margin-left: 5.0em">Specifies that this test will use the HTTP/1.0 "Content-Length:" header.
+<dt><b>VERSION 1.0</b>
+<dd style="margin-left: 5.0em"><dt><b>VERSION 1.1</b>
+<dd style="margin-left: 5.0em"><dt><b>VERSION 2.0</b>
+<dd style="margin-left: 5.0em"><dt><b>VERSION 2.1</b>
+<dd style="margin-left: 5.0em"><dt><b>VERSION 2.2</b>
+<dd style="margin-left: 5.0em">Specifies the IPP version number to use for this test.
</dl>
-<h2 class="title"><a name="EXPECT_PREDICATES">Expect Predicates</a></h2>
-The following predicates are understood following the EXPECT test directive:
-<dl>
-<dt>COUNT number
-</dt>
-<dd>Requires the EXPECT attribute to have the specified number of values.
-</dd>
-<dt>DEFINE-MATCH variable-name
-</dt>
-<dd>Defines the variable to "1" when the EXPECT condition matches. A side-effect of
-this predicate is that this EXPECT will never fail a test.
-</dd>
-<dt>DEFINE-NO-MATCH variable-name
-</dt>
-<dd>Defines the variable to "1" when the EXPECT condition does not match. A side-
-effect of this predicate is that this EXPECT will never fail a test.
-</dd>
-<dt>DEFINE-VALUE variable-name
-</dt>
-<dd>Defines the variable to the value of the attribute when the EXPECT condition
-matches. A side-effect of this predicate is that this EXPECT will never fail a test.
-</dd>
-<dt>IF-DEFINED variable-name
-</dt>
-<dd>Makes the EXPECT conditions apply only if the specified variable is defined.
-</dd>
-<dt>IF-NOT-DEFINED variable-name
-</dt>
-<dd>Makes the EXPECT conditions apply only if the specified variable is not
-defined.
-</dd>
-<dt>IN-GROUP tag
-</dt>
-<dd>Requires the EXPECT attribute to be in the specified group tag.
-</dd>
-<dt>OF-TYPE tag[,tag,...]
-</dt>
-<dd>Requires the EXPECT attribute to use the specified value tag(s).
-</dd>
-<dt>REPEAT-LIMIT number
-</dt>
-<dd></dd>
-<dd>Specifies the maximum number of times to repeat. The default value is 1000.
-</dd>
-<dt>REPEAT-MATCH
-</dt>
-<dd></dd>
-<dt>REPEAT-NO-MATCH
-</dt>
-<dd>Specifies that the current test should be repeated when the EXPECT condition
-matches or does not match.
-</dd>
-<dt>SAME-COUNT-AS attribute-name
-</dt>
-<dd>Requires the EXPECT attribute to have the same number of values as the specified
-parallel attribute.
-</dd>
-<dt>WITH-ALL-HOSTNAMES "literal string"
-</dt>
-<dd></dd>
-<dt>WITH-ALL-HOSTNAMES "/regular expression/"
-</dt>
-<dd>Requires that all URI values contain a matching hostname.
-</dd>
-<dt>WITH-ALL-RESOURCES "literal string"
-</dt>
-<dd></dd>
-<dt>WITH-ALL-RESOURCES "/regular expression/"
-</dt>
-<dd>Requires that all URI values contain a matching resource (including leading /).
-</dd>
-<dt>WITH-ALL-SCHEMES "literal string"
-</dt>
-<dd></dd>
-<dt>WITH-ALL-SCHEMES "/regular expression/"
-</dt>
-<dd>Requires that all URI values contain a matching scheme.
-</dd>
-<dt>WITH-ALL-VALUES "literal string"
-</dt>
-<dd>Requires that all values of the EXPECT attribute match the literal string. Comparisons are case-sensitive.
-</dd>
-<dt>WITH-ALL-VALUES &lt;number
-</dt>
-<dd></dd>
-<dt>WITH-ALL-VALUES =number
-</dt>
-<dd></dd>
-<dt>WITH-ALL-VALUES >number
-</dt>
-<dd></dd>
-<dt>WITH-ALL-VALUES number[,number,...]
-</dt>
-<dd>Requires that all values of the EXPECT attribute match the number(s) or numeric comparison. When comparing rangeOfInteger values, the "&lt;" and ">" operators only check the upper bound of the range.
-</dd>
-<dt>WITH-ALL-VALUES "false"
-</dt>
-<dd></dd>
-<dt>WITH-ALL-VALUES "true"
-</dt>
-<dd>Requires that all values of the EXPECT attribute match the boolean value given.
-</dd>
-<dt>WITH-ALL-VALUES "/regular expression/"
-</dt>
-<dd>Requires that all values of the EXPECT attribute match the regular expression, which must conform to the POSIX regular expression syntax. Comparisons are case-sensitive.
-</dd>
-<dt>WITH-HOSTNAME "literal string"
-</dt>
-<dd></dd>
-<dt>WITH-HOSTNAME "/regular expression/"
-</dt>
-<dd>Requires that at least one URI value contains a matching hostname.
-</dd>
-<dt>WITH-RESOURCE "literal string"
-</dt>
-<dd></dd>
-<dt>WITH-RESOURCE "/regular expression/"
-</dt>
-<dd>Requires that at least one URI value contains a matching resource (including leading /).
-</dd>
-<dt>WITH-SCHEME "literal string"
-</dt>
-<dd></dd>
-<dt>WITH-SCHEME "/regular expression/"
-</dt>
-<dd>Requires that at least one URI value contains a matching scheme.
-</dd>
-<dt>WITH-VALUE "literal string"
-</dt>
-<dd>Requires that at least one value of the EXPECT attribute matches the literal string. Comparisons are case-sensitive.
-</dd>
-<dt>WITH-VALUE &lt;number
-</dt>
-<dd></dd>
-<dt>WITH-VALUE =number
-</dt>
-<dd></dd>
-<dt>WITH-VALUE >number
-</dt>
-<dd></dd>
-<dt>WITH-VALUE number[,number,...]
-</dt>
-<dd>Requires that at least one value of the EXPECT attribute matches the number(s) or numeric comparison. When comparing rangeOfInteger values, the "&lt;" and ">" operators only check the upper bound of the range.
-</dd>
-<dt>WITH-VALUE "false"
-</dt>
-<dd></dd>
-<dt>WITH-VALUE "true"
-</dt>
-<dd>Requires that at least one value of the EXPECT attribute matches the boolean value given.
-</dd>
-<dt>WITH-VALUE "/regular expression/"
-</dt>
-<dd>Requires that at least one value of the EXPECT attribute matches the regular expression, which must conform to the POSIX regular expression syntax. Comparisons are case-sensitive.
-
-</dd>
+<h3><a name="EXPECT_PREDICATES">Expect Predicates</a></h3>
+The following predicates are understood following the <b>EXPECT</b> test directive:
+<dl class="man">
+<dt><b>COUNT </b><i>number</i>
+<dd style="margin-left: 5.0em">Requires the <b>EXPECT</b> attribute to have the specified number of values.
+<dt><b>DEFINE-MATCH </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Defines the variable to "1" when the <b>EXPECT</b> condition matches. A side-effect of this predicate is that this <b>EXPECT</b> will never fail a test.
+<dt><b>DEFINE-NO-MATCH </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Defines the variable to "1" when the <b>EXPECT</b> condition does not match. A side-effect of this predicate is that this <b>EXPECT</b> will never fail a test.
+<dt><b>DEFINE-VALUE </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Defines the variable to the value of the attribute when the <b>EXPECT</b> condition matches. A side-effect of this predicate is that this <b>EXPECT</b> will never fail a test.
+<dt><b>IF-DEFINED </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Makes the <b>EXPECT</b> conditions apply only if the specified variable is defined.
+<dt><b>IF-NOT-DEFINED </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Makes the <b>EXPECT</b> conditions apply only if the specified variable is not defined.
+<dt><b>IN-GROUP </b><i>tag</i>
+<dd style="margin-left: 5.0em">Requires the <b>EXPECT</b> attribute to be in the specified group tag.
+<dt><b>OF-TYPE </b><i>tag[,tag,...]</i>
+<dd style="margin-left: 5.0em">Requires the <b>EXPECT</b> attribute to use one of the specified value tag(s).
+<dt><b>REPEAT-LIMIT </b><i>number</i>
+<dd style="margin-left: 5.0em"><br>
+Specifies the maximum number of times to repeat if the <b>REPEAT-MATCH</b> or <b>REPEAT-NO-MATCH</b> predicate is specified. The default value is 1000.
+<dt><b>REPEAT-MATCH</b>
+<dd style="margin-left: 5.0em"><dt><b>REPEAT-NO-MATCH</b>
+<dd style="margin-left: 5.0em">Specifies that the current test should be repeated when the <b>EXPECT</b> condition matches or does not match.
+<dt><b>SAME-COUNT-AS </b><i>attribute-name</i>
+<dd style="margin-left: 5.0em">Requires the <b>EXPECT</b> attribute to have the same number of values as the specified parallel attribute.
+<dt><b>WITH-ALL-HOSTNAMES "</b><i>literal string</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>WITH-ALL-HOSTNAMES "/</b><i>regular expression</i><b>/"</b>
+<dd style="margin-left: 5.0em">Requires that all URI values contain a matching hostname.
+<dt><b>WITH-ALL-RESOURCES "</b><i>literal string</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>WITH-ALL-RESOURCES "/</b><i>regular expression</i><b>/"</b>
+<dd style="margin-left: 5.0em">Requires that all URI values contain a matching resource (including leading /).
+<dt><b>WITH-ALL-SCHEMES "</b><i>literal string</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>WITH-ALL-SCHEMES "/</b><i>regular expression</i><b>/"</b>
+<dd style="margin-left: 5.0em">Requires that all URI values contain a matching scheme.
+<dt><b>WITH-ALL-VALUES "</b><i>literal string</i><b>"</b>
+<dd style="margin-left: 5.0em">Requires that all values of the <b>EXPECT</b> attribute match the literal string. Comparisons are case-sensitive.
+<dt><b>WITH-ALL-VALUES &lt;</b><i>number</i>
+<dd style="margin-left: 5.0em"><dt><b>WITH-ALL-VALUES =</b><i>number</i>
+<dd style="margin-left: 5.0em"><dt><b>WITH-ALL-VALUES ></b><i>number</i>
+<dd style="margin-left: 5.0em"><dt><b>WITH-ALL-VALUES </b><i>number</i>[<i>,...,number</i>]
+<dd style="margin-left: 5.0em">Requires that all values of the <b>EXPECT</b> attribute match the number(s) or numeric comparison. When comparing rangeOfInteger values, the "&lt;" and ">" operators only check the upper bound of the range.
+<dt><b>WITH-ALL-VALUES "false"</b>
+<dd style="margin-left: 5.0em"><dt><b>WITH-ALL-VALUES "true"</b>
+<dd style="margin-left: 5.0em">Requires that all values of the <b>EXPECT</b> attribute match the boolean value given.
+<dt><b>WITH-ALL-VALUES "/</b><i>regular expression</i><b>/"</b>
+<dd style="margin-left: 5.0em">Requires that all values of the <b>EXPECT</b> attribute match the regular expression, which must conform to the POSIX regular expression syntax. Comparisons are case-sensitive.
+<dt><b>WITH-HOSTNAME "</b><i>literal string</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>WITH-HOSTNAME "/</b><i>regular expression</i><b>/"</b>
+<dd style="margin-left: 5.0em">Requires that at least one URI value contains a matching hostname.
+<dt><b>WITH-RESOURCE "</b><i>literal string</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>WITH-RESOURCE "/</b><i>regular expression</i><b>/"</b>
+<dd style="margin-left: 5.0em">Requires that at least one URI value contains a matching resource (including leading /).
+<dt><b>WITH-SCHEME "</b><i>literal string</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>WITH-SCHEME "/</b><i>regular expression</i><b>/"</b>
+<dd style="margin-left: 5.0em">Requires that at least one URI value contains a matching scheme.
+<dt><b>WITH-VALUE "</b><i>literal string</i><b>"</b>
+<dd style="margin-left: 5.0em">Requires that at least one value of the <b>EXPECT</b> attribute matches the literal string. Comparisons are case-sensitive.
+<dt><b>WITH-VALUE &lt;</b><i>number</i>
+<dd style="margin-left: 5.0em"><dt><b>WITH-VALUE =</b><i>number</i>
+<dd style="margin-left: 5.0em"><dt><b>WITH-VALUE ></b><i>number</i>
+<dd style="margin-left: 5.0em"><dt><b>WITH-VALUE </b><i>number</i>[<i>,...,number</i>]
+<dd style="margin-left: 5.0em">Requires that at least one value of the <b>EXPECT</b> attribute matches the number(s) or numeric comparison. When comparing rangeOfInteger values, the "&lt;" and ">" operators only check the upper bound of the range.
+<dt><b>WITH-VALUE "false"</b>
+<dd style="margin-left: 5.0em"><dt><b>WITH-VALUE "true"</b>
+<dd style="margin-left: 5.0em">Requires that at least one value of the <b>EXPECT</b> attribute matches the boolean value given.
+<dt><b>WITH-VALUE "/</b><i>regular expression</i><b>/"</b>
+<dd style="margin-left: 5.0em">Requires that at least one value of the <b>EXPECT</b> attribute matches the regular expression, which must conform to the POSIX regular expression syntax. Comparisons are case-sensitive.
</dl>
-<h2 class="title"><a name="STATUS_PREDICATES">Status Predicates</a></h2>
-The following predicates are understood following the STATUS test directive:
-<dl>
-<dt>DEFINE-MATCH variable-name
-</dt>
-<dd>Defines the variable to "1" when the STATUS matches. A side-effect of this predicate is that this STATUS will never fail a test.
-</dd>
-<dt>DEFINE-NO-MATCH variable-name
-</dt>
-<dd>Defines the variable to "1" when the STATUS does not match. A side-effect of this predicate is that this STATUS will never fail a test.
-</dd>
-<dt>IF-DEFINED variable-name
-</dt>
-<dd>Makes the STATUS apply only if the specified variable is defined.
-</dd>
-<dt>IF-NOT-DEFINED variable-name
-</dt>
-<dd>Makes the STATUS apply only if the specified variable is not defined.
-</dd>
-<dt>REPEAT-LIMIT number
-</dt>
-<dd></dd>
-<dd>Specifies the maximum number of times to repeat. The default value is 1000.
-</dd>
-<dt>REPEAT-MATCH
-</dt>
-<dd></dd>
-<dt>REPEAT-NO-MATCH
-</dt>
-<dd>Specifies that the current test should be repeated when the response status-code
-matches or does not match the value specified by the STATUS directive.
-
-</dd>
+<h3><a name="STATUS_PREDICATES">Status Predicates</a></h3>
+The following predicates are understood following the <b>STATUS</b> test directive:
+<dl class="man">
+<dt><b>DEFINE-MATCH </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Defines the variable to "1" when the <b>STATUS</b> matches. A side-effect of this predicate is that this <b>STATUS</b> will never fail a test.
+<dt><b>DEFINE-NO-MATCH </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Defines the variable to "1" when the <b>STATUS</b> does not match. A side-effect of this predicate is that this <b>STATUS</b> will never fail a test.
+<dt><b>IF-DEFINED </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Makes the <b>STATUS</b> apply only if the specified variable is defined.
+<dt><b>IF-NOT-DEFINED </b><i>variable-name</i>
+<dd style="margin-left: 5.0em">Makes the <b>STATUS</b> apply only if the specified variable is not defined.
+<dt><b>REPEAT-LIMIT </b><i>number</i>
+<dd style="margin-left: 5.0em"><br>
+Specifies the maximum number of times to repeat. The default value is 1000.
+<dt><b>REPEAT-MATCH</b>
+<dd style="margin-left: 5.0em"><dt><b>REPEAT-NO-MATCH</b>
+<dd style="margin-left: 5.0em">Specifies that the current test should be repeated when the response status-code matches or does not match the value specified by the STATUS directive.
</dl>
-<h2 class="title"><a name="OPERATION_CODES">Operation Codes</a></h2>
-Operation codes correspond to the hexadecimal numbers (0xHHHH) and names from
-RFC 2911 and other IPP extension specifications. Here is a complete list:
-<pre>
+<h3><a name="OPERATION_CODES">Operation Codes</a></h3>
+Operation codes correspond to the hexadecimal numbers (0xHHHH) and names from RFC 2911 and other IPP extension specifications. Here is a complete list of names supported by
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8):</a>
+<pre class="man">
+
Activate-Printer
CUPS-Accept-Jobs
CUPS-Add-Modify-Class
@@ -574,11 +339,15 @@ RFC 2911 and other IPP extension specifications. Here is a complete list:
Validate-Document
Validate-Job
</pre>
+<h3><a name="STATUS_CODES">Status Codes</a></h3>
+Status codes correspond to the hexadecimal numbers (0xHHHH) and names from RFC 2911 and other IPP extension specifications. Here is a complete list of the names supported by
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8):</a>
+<pre class="man">
-<h2 class="title"><a name="STATUS_CODES">Status Codes</a></h2>
-Status codes correspond to the hexadecimal numbers (0xHHHH) and names from RFC
-2911 and other IPP extension specifications. Here is a complete list:
-<pre>
+ client-error-account-authorization-failed
+ client-error-account-closed
+ client-error-account-info-needed
+ client-error-account-limit-reached
client-error-attributes-not-settable
client-error-attributes-or-values-not-supported
client-error-bad-request
@@ -607,6 +376,10 @@ Status codes correspond to the hexadecimal numbers (0xHHHH) and names from RFC
client-error-timeout
client-error-too-many-subscriptions
client-error-uri-scheme-not-supported
+ cups-error-account-authorization-failed
+ cups-error-account-closed
+ cups-error-account-info-needed
+ cups-error-account-limit-reached
cups-see-other
redirection-other-site
server-error-busy
@@ -629,11 +402,11 @@ Status codes correspond to the hexadecimal numbers (0xHHHH) and names from RFC
successful-ok-ignored-subscriptions
successful-ok-too-many-events
</pre>
+<h3><a name="TAGS">Tags</a></h3>
+Value and group tags correspond to the names from RFC 2911 and other IPP extension specifications. Here are the group tags:
+<pre class="man">
-<h2 class="title"><a name="TAGS">Tags</a></h2>
-Value and group tags correspond to the names from RFC 2911 and other IPP
-extension specifications. Here are the group tags:
-<pre>
+ document-attributes-tag
event-notification-attributes-tag
job-attributes-tag
operation-attributes-tag
@@ -642,7 +415,8 @@ extension specifications. Here are the group tags:
unsupported-attributes-tag
</pre>
<p>Here are the value tags:
-<pre>
+<pre class="man">
+
admin-define
boolean
charset
@@ -669,81 +443,59 @@ extension specifications. Here are the group tags:
uri
uriScheme
</pre>
-
-<h2 class="title"><a name="VARIABLES">Variables</a></h2>
-The <i>ipptool</i> program maintains a list of variables that can be used in any
-literal string or attribute value by specifying "$variable-name". Aside from
-variables defined using the "-d" option or "DEFINE" directive, the following
-pre-defined variables are available:
-<dl>
-<dt>$$
-</dt>
-<dd>Inserts a single "$" character.
-</dd>
-<dt>$ENV[name]
-</dt>
-<dd>Inserts the value of the named environment variable, or an empty string if the
-environment variable is not defined.
-</dd>
-<dt>$filename
-</dt>
-<dd>Inserts the filename provided to <i>ipptool</i> with the "-f" option.
-</dd>
-<dt>$hostname
-</dt>
-<dd>Inserts the hostname from the URI provided to <i>ipptool</i>.
-</dd>
-<dt>$job-id
-</dt>
-<dd>Inserts the last job-id value returned in a test response or 0 if no job-id has
-been seen.
-</dd>
-<dt>$job-uri
-</dt>
-<dd>Inserts the last job-uri value returned in a test response or an empty string if
-no job-uri has been seen.
-</dd>
-<dt>$scheme
-</dt>
-<dd>Inserts the scheme from the URI provided to <i>ipptool</i>.
-</dd>
-<dt>$notify-subscription-id
-</dt>
-<dd>Inserts the last notify-subscription-id value returned in a test response or 0 if
-no notify-subscription-id has been seen.
-</dd>
-<dt>$port
-</dt>
-<dd>Inserts the port number from the URI provided to <i>ipptool</i>.
-</dd>
-<dt>$resource
-</dt>
-<dd>Inserts the resource path from the URI provided to <i>ipptool</i>.
-</dd>
-<dt>$uri
-</dt>
-<dd>Inserts the URI provided to <i>ipptool</i>.
-</dd>
-<dt>$user
-</dt>
-<dd>Inserts the current user's login name.
-</dd>
-<dt>$username
-</dt>
-<dd>Inserts the username from the URI provided to <i>ipptool</i>, if any.
-
-</dd>
+<h3><a name="VARIABLES">Variables</a></h3>
+The
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+program maintains a list of variables that can be used in any literal string or attribute value by specifying "<i>$variable-name</i>". Aside from variables defined using the <i>-d</i> option or <b>DEFINE</b> directive, the following pre-defined variables are available:
+<dl class="man">
+<dt><b>$$</b>
+<dd style="margin-left: 5.0em">Inserts a single "$" character.
+<dt><b>$ENV[</b><i>name</i><b>]</b>
+<dd style="margin-left: 5.0em">Inserts the value of the named environment variable, or an empty string if the environment variable is not defined.
+<dt><b>$filename</b>
+<dd style="margin-left: 5.0em">Inserts the filename provided to
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+with the <i>-f</i> option.
+<dt><b>$filetype</b>
+<dd style="margin-left: 5.0em">Inserts the MIME media type for the filename provided to
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8)</a>
+with the <i>-f</i> option.
+<dt><b>$hostname</b>
+<dd style="margin-left: 5.0em">Inserts the hostname from the URI provided to
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8).</a>
+<dt><b>$job-id</b>
+<dd style="margin-left: 5.0em">Inserts the last "job-id" attribute value returned in a test response or 0 if no "job-id" attribute has been seen.
+<dt><b>$job-uri</b>
+<dd style="margin-left: 5.0em">Inserts the last "job-uri" attribute value returned in a test response or an empty string if no "job-uri" attribute has been seen.
+<dt><b>$notify-subscription-id</b>
+<dd style="margin-left: 5.0em">Inserts the last "notify-subscription-id" attribute value returned in a test response or 0 if no "notify-subscription-id" attribute has been seen.
+<dt><b>$port</b>
+<dd style="margin-left: 5.0em">Inserts the port number from the URI provided to
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8).</a>
+<dt><b>$resource</b>
+<dd style="margin-left: 5.0em">Inserts the resource path from the URI provided to
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8).</a>
+<dt><b>$scheme</b>
+<dd style="margin-left: 5.0em">Inserts the scheme from the URI provided to
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8).</a>
+<dt><b>$uri</b>
+<dd style="margin-left: 5.0em">Inserts the URI provided to
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8).</a>
+<dt><b>$uriuser</b>
+<dd style="margin-left: 5.0em">Inserts the username from the URI provided to
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(8),</a>
+if any.
+<dt><b>$user</b>
+<dd style="margin-left: 5.0em">Inserts the current user's login name.
</dl>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-ipptool.html?TOPIC=Man+Pages'>ipptool(1)</a>, RFC 2911,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
-<br>
-<a href='http://www.iana.org/assignments/ipp-registrations'>http://www.iana.org/assignments/ipp-registrations</a>
-<br>
-<a href='http://www.pwg.org/ipp'>http://www.pwg.org/ipp</a>
+<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(1),</a>
+CUPS Online Help (<a href="http://localhost:631/help)">http://localhost:631/help)</a>,
+IANA IPP Registry (<a href="http://www.iana.org/assignments/ipp-registrations)">http://www.iana.org/assignments/ipp-registrations)</a>,
+PWG Internet Printing Protocol Workgroup (<a href="http://www.pwg.org/ipp)">http://www.pwg.org/ipp)</a>,
+RFC 2911 (<a href="http://tools.ietf.org/html/rfc3911">http://tools.ietf.org/html/rfc3911</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,275 +10,184 @@
<h2 class="title"><a name="NAME">Name</a></h2>
lp - print files
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lp
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -c ] [ -d
-<i>destination[/instance]
-</i>] [ -h
-<i>hostname[:port]
-</i>] [ -m ] [ -n
-<i>num-copies
-</i>] [ -o
-<i>option[=value]
-</i>] [ -q
-<i>priority
-</i>] [ -s ] [ -t
-<i>title
-</i>] [ -H
-<i>handling
-</i>] [ -P
-<i>page-list
-</i>] [ -- ] [
-<i>file(s)
-</i>]
+<b>lp</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-c</b>
+] [
+<b>-d </b><i>destination</i>[<b>/</b><i>instance</i>]
+] [
+<b>-h </b><i>hostname</i>[<b>:</b><i>port</i>]
+] [
+<b>-m</b>
+] [
+<b>-n</b>
+<i>num-copies</i>
+] [
+<b>-o </b><i>option</i>[<b>=</b><i>value</i>]
+] [
+<b>-q</b>
+<i>priority</i>
+] [
+<b>-s</b>
+] [
+<b>-t</b>
+<i>title</i>
+] [
+<b>-H</b>
+<i>handling</i>
+] [
+<b>-P</b>
+<i>page-list</i>
+] [
+<b>--</b>
+] [
+<i>file(s)</i>
+]
<br>
-<b>lp
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -c ] [ -h
-<i>hostname[:port]
-</i>] [ -i
-<i>job-id
-</i>] [ -n
-<i>num-copies
-</i>] [ -o
-<i>option[=value]
-</i>] [ -q
-<i>priority
-</i>] [ -t
-<i>title
-</i>] [ -H
-<i>handling
-</i>] [ -P
-<i>page-list
-</i>]
+<b>lp</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-c</b>
+] [
+<b>-h </b><i>hostname</i>[<b>:</b><i>port</i>]
+] [
+<b>-i</b>
+<i>job-id</i>
+] [
+<b>-n</b>
+<i>num-copies</i>
+] [
+<b>-o </b><i>option</i>[<b>=</b><i>value</i>]
+] [
+<b>-q</b>
+<i>priority</i>
+] [
+<b>-t</b>
+<i>title</i>
+] [
+<b>-H</b>
+<i>handling</i>
+] [
+<b>-P</b>
+<i>page-list</i>
+]
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>lp</i> submits files for printing or alters a pending job. Use
-a filename of "-" to force printing from the standard input.
-<h2 class="title"><a name="THE_DEFAULT_DESTINATION">The Default Destination</a></h2>
-CUPS provides many ways to set the default destination. The "LPDEST" and
-"PRINTER" environment variables are consulted first. If neither are set,
-the current default set using the <a href='man-lpoptions.html?TOPIC=Man+Pages'>lpoptions(1)</a> command is used,
-followed by the default set using the <a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a> command.
+<b>lp</b> submits files for printing or alters a pending job.
+Use a filename of "-" to force printing from the standard input.
+<h3><a name="THE_DEFAULT_DESTINATION">The Default Destination</a></h3>
+CUPS provides many ways to set the default destination. The <b>LPDEST</b> and <b>PRINTER</b> environment variables are consulted first.
+If neither are set, the current default set using the
+<a href="man-lpoptions.html?TOPIC=Man+Pages"><b>lpoptions</b>(1)</a>
+command is used, followed by the default set using the
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8)</a>
+command.
<h2 class="title"><a name="OPTIONS">Options</a></h2>
The following options are recognized by <i>lp</i>:
-<dl>
-<dt>--
-</dt>
-<dd></dd>
-<dd>Marks the end of options; use this to print a file whose name
-begins with a dash (-).
-</dd>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Forces encryption when connecting to the server.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Specifies the username to use when connecting to the server.
-</dd>
-<dt>-c
-</dt>
-<dd></dd>
-<dd>This option is provided for backwards-compatibility only. On
-systems that support it, this option forces the print file to be
-copied to the spool directory before printing. In CUPS, print
-files are always sent to the scheduler via IPP which has the
-same effect.
-</dd>
-<dt>-d destination
-</dt>
-<dd></dd>
-<dd>Prints files to the named printer.
-</dd>
-<dt>-h hostname[:port]
-</dt>
-<dd></dd>
-<dd>Chooses an alternate server.
-</dd>
-<dt>-i job-id
-</dt>
-<dd></dd>
-<dd>Specifies an existing job to modify.
-</dd>
-<dt>-m
-</dt>
-<dd></dd>
-<dd>Sends an email when the job is completed.
-</dd>
-<dt>-n copies
-</dt>
-<dd></dd>
-<dd>Sets the number of copies to print from 1 to 100.
-</dd>
-<dt>-o "name=value [name=value ...]"
-</dt>
-<dd></dd>
-<dd>Sets one or more job options.
-</dd>
-<dt>-q priority
-</dt>
-<dd></dd>
-<dd>Sets the job priority from 1 (lowest) to 100 (highest). The
-default priority is 50.
-</dd>
-<dt>-s
-</dt>
-<dd></dd>
-<dd>Do not report the resulting job IDs (silent mode.)
-</dd>
-<dt>-t "name"
-</dt>
-<dd></dd>
-<dd>Sets the job name.
-</dd>
-<dt>-H hh:mm
-</dt>
-<dd></dd>
-<dt>-H hold
-</dt>
-<dd></dd>
-<dt>-H immediate
-</dt>
-<dd></dd>
-<dt>-H restart
-</dt>
-<dd></dd>
-<dt>-H resume
-</dt>
-<dd></dd>
-<dd>Specifies when the job should be printed. A value of <i>immediate</i> will print
-the file immediately, a value of <i>hold</i> will hold the job indefinitely, and
-a UTC time value (HH:MM) will hold the job until the specified UTC (not local)
-time. Use a value of <i>resume</i> with the <i>-i</i> option to resume a held job.
-Use a value of <i>restart</i> with the <i>-i</i> option to restart
-a completed job.
-</dd>
-<dt>-P page-list
-</dt>
-<dd></dd>
-<dd>Specifies which pages to print in the document. The list can
-contain a list of numbers and ranges (#-#) separated by commas
-(e.g. 1,3-5,16). The page numbers refer to the output pages and
-not the document's original pages - options like "number-up" can
-affect the numbering of the pages.
-</dd>
+<dl class="man">
+<dt><b>--</b>
+<dd style="margin-left: 5.0em">Marks the end of options; use this to print a file whose name begins with a dash (-).
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Forces encryption when connecting to the server.
+<dt><b>-U </b><i>username</i>
+<dd style="margin-left: 5.0em">Specifies the username to use when connecting to the server.
+<dt><b>-c</b>
+<dd style="margin-left: 5.0em">This option is provided for backwards-compatibility only. On systems that support it, this option forces the print file to be copied to the spool directory before printing.
+In CUPS, print files are always sent to the scheduler via IPP which has the same effect.
+<dt><b>-d </b><i>destination</i>
+<dd style="margin-left: 5.0em">Prints files to the named printer.
+<dt><b>-h </b><i>hostname</i>[<b>:</b><i>port</i>]
+<dd style="margin-left: 5.0em">Chooses an alternate server.
+<dt><b>-i </b><i>job-id</i>
+<dd style="margin-left: 5.0em">Specifies an existing job to modify.
+<dt><b>-m</b>
+<dd style="margin-left: 5.0em">Sends an email when the job is completed.
+<dt><b>-n </b><i>copies</i>
+<dd style="margin-left: 5.0em">Sets the number of copies to print.
+<dt><b>-o "</b><i>name</i><b>=</b><i>value </i>[ ... <i>name</i><b>=</b><i>value </i>]<b>"</b>
+<dd style="margin-left: 5.0em">Sets one or more job options.
+<dt><b>-q </b><i>priority</i>
+<dd style="margin-left: 5.0em">Sets the job priority from 1 (lowest) to 100 (highest).
+The default priority is 50.
+<dt><b>-s</b>
+<dd style="margin-left: 5.0em">Do not report the resulting job IDs (silent mode.)
+<dt><b>-t "</b><i>name</i><b>"</b>
+<dd style="margin-left: 5.0em">Sets the job name.
+<dt><b>-H </b><i>hh:mm</i>
+<dd style="margin-left: 5.0em"><dt><b>-H hold</b>
+<dd style="margin-left: 5.0em"><dt><b>-H immediate</b>
+<dd style="margin-left: 5.0em"><dt><b>-H restart</b>
+<dd style="margin-left: 5.0em"><dt><b>-H resume</b>
+<dd style="margin-left: 5.0em">Specifies when the job should be printed.
+A value of <i>immediate</i> will print the file immediately, a value of <i>hold</i> will hold the job indefinitely, and a UTC time value (HH:MM) will hold the job until the specified UTC (not local) time.
+Use a value of <i>resume</i> with the <i>-i</i> option to resume a held job.
+Use a value of <i>restart</i> with the <i>-i</i> option to restart a completed job.
+<dt><b>-P </b><i>page-list</i>
+<dd style="margin-left: 5.0em">Specifies which pages to print in the document.
+The list can contain a list of numbers and ranges (#-#) separated by commas, e.g., "1,3-5,16".
+The page numbers refer to the output pages and not the document's original pages - options like "number-up" can affect the numbering of the pages.
</dl>
-<h2 class="title"><a name="COMMON_JOB_OPTIONS">Common Job Options</a></h2>
+<h3><a name="COMMON_JOB_OPTIONS">Common Job Options</a></h3>
Aside from the printer-specific options reported by the
-<a href='man-lpoptions.html?TOPIC=Man+Pages'>lpoptions(1)</a> command, the following generic options are
-available:
-<dl>
-<dt>-o media=size
-</dt>
-<dd></dd>
-<dd>Sets the page size to <i>size</i>. Most printers support at least
-the size names "a4", "letter", and "legal".
-</dd>
-<dt>-o landscape
-</dt>
-<dd></dd>
-<dt>-o orientation-requested=4
-</dt>
-<dd></dd>
-<dd>Prints the job in landscape (rotated 90 degrees).
-</dd>
-<dt>-o sides=one-sided
-</dt>
-<dd></dd>
-<dt>-o sides=two-sided-long-edge
-</dt>
-<dd></dd>
-<dt>-o sides=two-sided-short-edge
-</dt>
-<dd></dd>
-<dd>Prints on one or two sides of the paper. The value
-"two-sided-long-edge" is normally used when printing portrait
-(unrotated) pages, while "two-sided-short-edge" is used for
-landscape pages.
-</dd>
-<dt>-o fit-to-page
-</dt>
-<dd></dd>
-<dd>Scales the print file to fit on the page.
-</dd>
-<dt>-o number-up=2
-</dt>
-<dd></dd>
-<dt>-o number-up=4
-</dt>
-<dd></dd>
-<dt>-o number-up=6
-</dt>
-<dd></dd>
-<dt>-o number-up=9
-</dt>
-<dd></dd>
-<dt>-o number-up=16
-</dt>
-<dd></dd>
-<dd>Prints multiple document pages on each output page.
-</dd>
-<dt>-o cpi=N
-</dt>
-<dd></dd>
-<dd>Sets the number of characters per inch to use when printing a
-text file. The default is 10.
-</dd>
-<dt>-o lpi=N
-</dt>
-<dd></dd>
-<dd>Sets the number of lines per inch to use when printing a text
-file. The default is 6.
-</dd>
-<dt>-o page-bottom=N
-</dt>
-<dd></dd>
-<dt>-o page-left=N
-</dt>
-<dd></dd>
-<dt>-o page-right=N
-</dt>
-<dd></dd>
-<dt>-o page-top=N
-</dt>
-<dd></dd>
-<dd>Sets the page margins when printing text files. The values are in
-points - there are 72 points to the inch.
-</dd>
+<a href="man-lpoptions.html?TOPIC=Man+Pages"><b>lpoptions</b>(1)</a>
+command, the following generic options are available:
+<dl class="man">
+<dt><b>-o media=</b><i>size</i>
+<dd style="margin-left: 5.0em">Sets the page size to <i>size</i>. Most printers support at least the size names "a4", "letter", and "legal".
+<dt><b>-o orientation-requested=4</b>
+<dd style="margin-left: 5.0em">Prints the job in landscape (rotated 90 degrees).
+<dt><b>-o sides=one-sided</b>
+<dd style="margin-left: 5.0em">Prints on one side of the paper.
+<dt><b>-o sides=two-sided-long-edge</b>
+<dd style="margin-left: 5.0em">Prints on both sides of the paper for portrait output.
+<dt><b>-o sides=two-sided-short-edge</b>
+<dd style="margin-left: 5.0em">Prints on both sides of the paper for landscape output.
+<dt><b>-o fit-to-page</b>
+<dd style="margin-left: 5.0em">Scales the print file to fit on the page.
+<dt><b>-o number-up=</b>{<i>2|4|6|9|16</i>}
+<dd style="margin-left: 5.0em">Prints 2, 4, 6, 9, or 16 document (input) pages on each output page.
</dl>
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+Unlike the System V printing system, CUPS allows printer names to contain any printable character except SPACE, TAB, "/", or "#".
+Also, printer and class names are <i>not</i> case-sensitive.
+<p>The <i>-q</i> option accepts a different range of values than the Solaris lp command, matching the IPP job priority values (1-100, 100 is highest priority) instead of the Solaris values (0-39, 0 is highest priority).
<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+Print two copies of a document to the default printer:
+<pre class="man">
+
+ lp -n 2 filename
+
+</pre>
Print a double-sided legal document to a printer called "foo":
-<pre>
+<pre class="man">
+
lp -d foo -o media=legal -o sides=two-sided-long-edge filename
+
</pre>
-<p>Print an image across 4 pages:
-<pre>
- lp -d bar -o scaling=200 filename
-</pre>
-<p>Print a text file with 12 characters per inch, 8 lines per inch, and
-a 1 inch left margin:
-<pre>
- lp -d bar -o cpi=12 -o lpi=8 -o page-left=72 filename
+Print a presentation document 2-up to a printer called "foo":
+<pre class="man">
+
+ lp -d foo -o number-up=2 filename
</pre>
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-Unlike the System V printing system, CUPS allows printer names to
-contain any printable character except SPACE, TAB, "/", or "#".
-Also, printer and class names are <i>not</i> case-sensitive.
-<p>The "q" option accepts a different range of values than the
-Solaris lp command, matching the IPP job priority values (1-100,
-100 is highest priority) instead of the Solaris values (0-39, 0
-is highest priority).
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cancel.html?TOPIC=Man+Pages'>cancel(1)</a>, <a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a>, <a href='man-lpmove.html?TOPIC=Man+Pages'>lpmove(8)</a>, <a href='man-lpoptions.html?TOPIC=Man+Pages'>lpoptions(1)</a>,
-<a href='man-lpstat.html?TOPIC=Man+Pages'>lpstat(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8),</a>
+<a href="man-lpoptions.html?TOPIC=Man+Pages"><b>lpoptions</b>(1),</a>
+<a href="man-lpq.html?TOPIC=Man+Pages"><b>lpq</b>(1),</a>
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1),</a>
+<a href="man-lprm.html?TOPIC=Man+Pages"><b>lprm</b>(1),</a>
+<a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,239 +10,165 @@
<h2 class="title"><a name="NAME">Name</a></h2>
lpadmin - configure cups printers and classes
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lpadmin
-</b>[ -E ] [-U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] -d
-<i>destination
-</i><br>
-<b>lpadmin
-</b>[ -E ] [-U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] -p
-<i>destination
-</i>[ -R
-<i>name-default
-</i>]
-<i>option(s)
-</i><br>
-<b>lpadmin
-</b>[ -E ] [-U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] -x
-<i>destination
-</i><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>lpadmin</i> configures printer and class queues provided by
-CUPS. It can also be used to set the server default printer or
-class.
-<p>When specified before the <i>-d</i>, <i>-p</i>, or <i>-x</i>
-options, the <i>-E</i> option forces encryption when connecting to
-the server.
-<p>The first form of the command (<i>-d</i>) sets the default printer
-or class to <i>destination</i>. Subsequent print jobs submitted
-via the <a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a> or <a href='man-lpr.html?TOPIC=Man+Pages'>lpr(1)</a> commands will use this
-destination unless the user specifies otherwise with the
-<a href='man-lpoptions.html?TOPIC=Man+Pages'>lpoptions(1)</a> command.
-<p>The second form of the command (<i>-p</i>) configures the named
-printer or class. The additional options are described below.
-<p>The third form of the command (<i>-x</i>) deletes the printer or
-class <i>destination</i>. Any jobs that are pending for the
-destination will be removed and any job that is currently printed
-will be aborted.
-<h2 class="title"><a name="CONFIGURATION_OPTIONS">Configuration Options</a></h2>
-The following options are recognized when configuring a printer
-queue:
-<dl>
-<dt>-c class
-</dt>
-<dd></dd>
-<dd>Adds the named <i>printer</i> to <i>class</i>. If <i>class</i> does
-not exist it is created automatically.
-</dd>
-<dt>-i interface
-</dt>
-<dd></dd>
-<dd>Sets a System V style interface script for the printer. This
-option cannot be specified with the <i>-P</i> option (PPD file)
-and is intended for providing support for legacy printer drivers.
-</dd>
-<dt>-m model
-</dt>
-<dd></dd>
-<dd>Sets a standard System V interface script or PPD file for the printer from the
-<i>model</i> directory or using one of the driver interfaces. Use the <i>-m</i>
-option with the <a href='man-lpinfo.html?TOPIC=Man+Pages'>lpinfo(8)</a> command to get a list of supported models.
-</dd>
-<dt>-o cupsIPPSupplies=true
-</dt>
-<dd></dd>
-<dt>-o cupsIPPSupplies=false
-</dt>
-<dd></dd>
-<dd>Specifies whether IPP supply level values should be reported.
-</dd>
-<dt>-o cupsSNMPSupplies=true
-</dt>
-<dd></dd>
-<dt>-o cupsSNMPSupplies=false
-</dt>
-<dd></dd>
-<dd>Specifies whether SNMP supply level (RFC 3805) values should be reported.
-</dd>
-<dt>-o job-k-limit=value
-</dt>
-<dd></dd>
-<dd>Sets the kilobyte limit for per-user quotas. The value is an
-integer number of kilobytes; one kilobyte is 1024 bytes.
-</dd>
-<dt>-o job-page-limit=value
-</dt>
-<dd></dd>
-<dd>Sets the page limit for per-user quotas. The value is the integer
-number of pages that can be printed; double-sided pages are
-counted as two pages.
-</dd>
-<dt>-o job-quota-period=value
-</dt>
-<dd></dd>
-<dd>Sets the accounting period for per-user quotas. The value is an
-integer number of seconds; 86,400 seconds are in one day.
-</dd>
-<dt>-o job-sheets-default=banner
-</dt>
-<dd></dd>
-<dt>-o job-sheets-default=banner,banner
-</dt>
-<dd></dd>
-<dd>Sets the default banner page(s) to use for print jobs.
-</dd>
-<dt>-o name=value
-</dt>
-<dd></dd>
-<dd>Sets a PPD option for the printer. PPD options can be listed using the <i>-l</i>
-option with the <a href='man-lpoptions.html?TOPIC=Man+Pages'>lpoptions(1)</a> command.
-</dd>
-<dt>-o name-default=value
-</dt>
-<dd></dd>
-<dd>Sets a default server-side option for the destination. Any print-time
-option can be defaulted, e.g. "-o cpi-default=17" to set the default
-"cpi" option value to 17.
-</dd>
-<dt>-o port-monitor=name
-</dt>
-<dd></dd>
-<dd>Sets the binary communications program to use when printing,
-"none", "bcp", or "tbcp". The default program is "none". The
-specified port monitor must be listed in the printer's PPD file.
-</dd>
-<dt>-o printer-error-policy=name
-</dt>
-<dd></dd>
-<dd>Sets the error policy to be used when the printer backend is
-unable to send the job to the printer. The name must be one of
-"abort-job", "retry-job", "retry-current-job", or "stop-printer". The default
-error policy is "stop-printer" for printers and "retry-current-job" for
+<b>lpadmin</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+]
+<b>-d</b>
+<i>destination</i>
+<br>
+<b>lpadmin</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+]
+<b>-p</b>
+<i>destination</i>
+[
+<b>-R</b>
+<i>name-default</i>
+]
+<i>option(s)</i>
+<br>
+<b>lpadmin</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+]
+<b>-x</b>
+<i>destination</i>
+<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
+<b>lpadmin</b> configures printer and class queues provided by CUPS.
+It can also be used to set the server default printer or class.
+<p>When specified before the <i>-d</i>, <i>-p</i>, or <i>-x</i> options, the <i>-E</i> option forces encryption when connecting to the server.
+<p>The first form of the command (<i>-d</i>) sets the default printer or class to <i>destination</i>.
+Subsequent print jobs submitted via the
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1)</a>
+or
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1)</a>
+commands will use this destination unless the user specifies otherwise with the
+<a href="man-lpoptions.html?TOPIC=Man+Pages"><b>lpoptions</b>(1)</a>
+command.
+<p>The second form of the command (<i>-p</i>) configures the named printer or class. The additional options are described below.
+<p>The third form of the command (<i>-x</i>) deletes the printer or class <i>destination</i>.
+Any jobs that are pending for the destination will be removed and any job that is currently printed will be aborted.
+<h2 class="title"><a name="OPTIONS">Options</a></h2>
+The following options are recognized when configuring a printer queue:
+<dl class="man">
+<dt><b>-c </b><i>class</i>
+<dd style="margin-left: 5.0em">Adds the named <i>printer</i> to <i>class</i>.
+If <i>class</i> does not exist it is created automatically.
+<dt><b>-i </b><i>interface</i>
+<dd style="margin-left: 5.0em">Sets a System V style interface script for the printer.
+This option cannot be specified with the <i>-P</i> option (PPD file) and is intended for providing support for legacy printer drivers.
+<dt><b>-m </b><i>model</i>
+<dd style="margin-left: 5.0em">Sets a standard System V interface script or PPD file for the printer from the <i>model</i> directory or using one of the driver interfaces.
+Use the <i>-m</i> option with the
+<a href="man-lpinfo.html?TOPIC=Man+Pages"><b>lpinfo</b>(8)</a>
+command to get a list of supported models.
+<dt><b>-o cupsIPPSupplies=true</b>
+<dd style="margin-left: 5.0em"><dt><b>-o cupsIPPSupplies=false</b>
+<dd style="margin-left: 5.0em">Specifies whether IPP supply level values should be reported.
+<dt><b>-o cupsSNMPSupplies=true</b>
+<dd style="margin-left: 5.0em"><dt><b>-o cupsSNMPSupplies=false</b>
+<dd style="margin-left: 5.0em">Specifies whether SNMP supply level (RFC 3805) values should be reported.
+<dt><b>-o job-k-limit=</b><i>value</i>
+<dd style="margin-left: 5.0em">Sets the kilobyte limit for per-user quotas.
+The value is an integer number of kilobytes; one kilobyte is 1024 bytes.
+<dt><b>-o job-page-limit=</b><i>value</i>
+<dd style="margin-left: 5.0em">Sets the page limit for per-user quotas.
+The value is the integer number of pages that can be printed; double-sided pages are counted as two pages.
+<dt><b>-o job-quota-period=</b><i>value</i>
+<dd style="margin-left: 5.0em">Sets the accounting period for per-user quotas.
+The value is an integer number of seconds; 86,400 seconds are in one day.
+<dt><b>-o job-sheets-default=</b><i>banner</i>
+<dd style="margin-left: 5.0em"><dt><b>-o job-sheets-default=</b><i>banner</i><b>,</b><i>banner</i>
+<dd style="margin-left: 5.0em">Sets the default banner page(s) to use for print jobs.
+<dt><b>-o </b><i>name</i><b>=</b><i>value</i>
+<dd style="margin-left: 5.0em">Sets a PPD option for the printer.
+PPD options can be listed using the <i>-l</i> option with the
+<a href="man-lpoptions.html?TOPIC=Man+Pages"><b>lpoptions</b>(1)</a>
+command.
+<dt><b>-o </b><i>name</i><b>-default=</b><i>value</i>
+<dd style="margin-left: 5.0em">Sets a default server-side option for the destination.
+Any print-time option can be defaulted, e.g., "-o number-up-default=2" to set the default "number-up" option value to 2.
+<dt><b>-o port-monitor=</b><i>name</i>
+<dd style="margin-left: 5.0em">Sets the binary communications program to use when printing, "none", "bcp", or "tbcp".
+The default program is "none".
+The specified port monitor must be listed in the printer's PPD file.
+<dt><b>-o printer-error-policy=</b><i>name</i>
+<dd style="margin-left: 5.0em">Sets the error policy to be used when the printer backend is unable to send the job to the printer.
+The name must be one of "abort-job", "retry-job", "retry-current-job", or "stop-printer".
+The default error policy is "stop-printer" for printers and "retry-current-job" for
classes.
-</dd>
-<dt>-o printer-is-shared=true/false
-</dt>
-<dd></dd>
-<dd>Sets the destination to shared/published or unshared/unpublished.
-Shared/published destinations are publicly announced by the server
-on the LAN based on the browsing configuration in
-<b>cupsd.conf</b>, while unshared/unpublished destinations are not
-announced. The default value is "true".
-</dd>
-<dt>-o printer-op-policy=name
-</dt>
-<dd></dd>
-<dd>Sets the IPP operation policy associated with the destination. The
-name must be defined in the <b>cupsd.conf</b> in a Policy section.
+<dt><b>-o printer-is-shared=true</b>
+<dd style="margin-left: 5.0em"><dt><b>-o printer-is-shared=false</b>
+<dd style="margin-left: 5.0em">Sets the destination to shared/published or unshared/unpublished.
+Shared/published destinations are publicly announced by the server on the LAN based on the browsing configuration in <i>cupsd.conf</i>, while unshared/unpublished destinations are not announced.
+The default value is "true".
+<dt><b>-o printer-op-policy=</b><i>name</i>
+<dd style="margin-left: 5.0em">Sets the IPP operation policy associated with the destination.
+The name must be defined in the <i>cupsd.conf</i> in a Policy section.
The default operation policy is "default".
-</dd>
-<dt>-R name-default
-</dt>
-<dd></dd>
-<dd>Deletes the named option from <i>printer</i>.
-</dd>
-<dt>-r class
-</dt>
-<dd></dd>
-<dd>Removes the named <i>printer</i> from <i>class</i>. If the
-resulting class becomes empty it is removed.
-</dd>
-<dt>-u allow:user,user,@group
-</dt>
-<dd></dd>
-<dt>-u deny:user,user,@group
-</dt>
-<dd></dd>
-<dt>-u allow:all
-</dt>
-<dd></dd>
-<dt>-u deny:none
-</dt>
-<dd></dd>
-<dd>Sets user-level access control on a destination. Names starting with
-"@" are interpreted as UNIX groups. The latter two forms turn
-user-level access control off.
-</dd>
-<dt>-v "device-uri"
-</dt>
-<dd></dd>
-<dd>Sets the <i>device-uri</i> attribute of the printer queue. Use the <i>-v</i>
-option with the <a href='man-lpinfo.html?TOPIC=Man+Pages'>lpinfo(8)</a> command to get a list of supported device URIs
-and schemes.
-</dd>
-<dt>-D "info"
-</dt>
-<dd></dd>
-<dd>Provides a textual description of the destination.
-</dd>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Enables the destination and accepts jobs; this is the same as running the
-<a href='man-cupsaccept.html?TOPIC=Man+Pages'>cupsaccept(8)</a> and <a href='man-cupsenable.html?TOPIC=Man+Pages'>cupsenable(8)</a> programs on the destination.
-</dd>
-<dt>-L "location"
-</dt>
-<dd></dd>
-<dd>Provides a textual location of the destination.
-</dd>
-<dt>-P ppd-file
-</dt>
-<dd></dd>
-<dd>Specifies a PostScript Printer Description file to use with the
-printer. If specified, this option overrides the <i>-i</i> option
-(interface script).
-</dd>
+<dt><b>-R </b><i>name</i><b>-default</b>
+<dd style="margin-left: 5.0em">Deletes the named option from <i>printer</i>.
+<dt><b>-r </b><i>class</i>
+<dd style="margin-left: 5.0em">Removes the named <i>printer</i> from <i>class</i>.
+If the resulting class becomes empty it is removed.
+<dt><b>-u allow:</b>{<i>user</i>|<b>@</b><i>group</i>}{<b>,</b><i>user</i>|<b>,@</b><i>group</i>}*
+<dd style="margin-left: 5.0em"><dt><b>-u deny:</b>{<i>user</i>|<b>@</b><i>group</i>}{<b>,</b><i>user</i>|<b>,@</b><i>group</i>}*
+<dd style="margin-left: 5.0em"><dt><b>-u allow:all</b>
+<dd style="margin-left: 5.0em"><dt><b>-u deny:none</b>
+<dd style="margin-left: 5.0em">Sets user-level access control on a destination.
+Names starting with "@" are interpreted as UNIX groups.
+The latter two forms turn user-level access control off.
+<dt><b>-v "</b><i>device-uri</i><b>"</b>
+<dd style="margin-left: 5.0em">Sets the <i>device-uri</i> attribute of the printer queue.
+Use the <i>-v</i> option with the
+<a href="man-lpinfo.html?TOPIC=Man+Pages"><b>lpinfo</b>(8)</a>
+command to get a list of supported device URIs and schemes.
+<dt><b>-D "</b><i>info</i><b>"</b>
+<dd style="margin-left: 5.0em">Provides a textual description of the destination.
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Enables the destination and accepts jobs; this is the same as running the
+<a href="man-cupsaccept.html?TOPIC=Man+Pages"><b>cupsaccept</b>(8)</a>
+and
+<a href="man-cupsenable.html?TOPIC=Man+Pages"><b>cupsenable</b>(8)</a>
+programs on the destination.
+<dt><b>-L "</b><i>location</i><b>"</b>
+<dd style="margin-left: 5.0em">Provides a textual location of the destination.
+<dt><b>-P </b><i>ppd-file</i>
+<dd style="margin-left: 5.0em">Specifies a PostScript Printer Description file to use with the printer.
+If specified, this option overrides the <i>-i</i> option (interface script).
</dl>
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-Unlike the System V printing system, CUPS allows printer names to
-contain any printable character except SPACE, TAB, "/", or "#".
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+Unlike the System V printing system, CUPS allows printer names to contain any printable character except SPACE, TAB, "/", or "#".
Also, printer and class names are <i>not</i> case-sensitive.
-Finally, the CUPS version of <i>lpadmin</i> may ask the user for
-an access password depending on the printing system
-configuration. This differs from the System V version which
-requires the root user to execute this command.
-<h2 class="title"><a name="LIMITATIONS">Limitations</a></h2>
-The CUPS version of <i>lpadmin</i> does not support all of the
-System V or Solaris printing system configuration options.
+Finally, the CUPS version of <b>lpadmin</b> may ask the user for an access password depending on the printing system configuration.
+This differs from the System V version which requires the root user to execute this command.
+<h2 class="title"><a name="NOTES">Notes</a></h2>
+The CUPS version of <b>lpadmin</b> does not support all of the System V or Solaris printing system configuration options.
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cupsaccept.html?TOPIC=Man+Pages'>cupsaccept(8)</a>, <a href='man-cupsenable.html?TOPIC=Man+Pages'>cupsenable(8)</a>, <a href='man-lpinfo.html?TOPIC=Man+Pages'>lpinfo(8)</a>,
-<a href='man-lpoptions.html?TOPIC=Man+Pages'>lpoptions(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cupsaccept.html?TOPIC=Man+Pages"><b>cupsaccept</b>(8),</a>
+<a href="man-cupsenable.html?TOPIC=Man+Pages"><b>cupsenable</b>(8),</a>
+<a href="man-lpinfo.html?TOPIC=Man+Pages"><b>lpinfo</b>(8),</a>
+<a href="man-lpoptions.html?TOPIC=Man+Pages"><b>lpoptions</b>(1),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,62 +10,45 @@
<h2 class="title"><a name="NAME">Name</a></h2>
lpc - line printer control program
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lpc
-</b>[
-<i>command
-</i>[
-<i>parameter(s)
-</i>] ]
+<b>lpc</b>
+[
+<i>command</i>
+[
+<i>parameter(s)</i>
+] ]
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>lpc</i> provides limited control over printer and class queues
-provided by CUPS. It can also be used to query the state of
-queues.
-<p>If no command is specified on the command-line, lpc will
-display a prompt and accept commands from the standard input.
-<h2 class="title"><a name="COMMANDS">Commands</a></h2>
-The <i>lpc</i> program accepts a subset of commands accepted by
-the Berkeley <i>lpc</i> program of the same name:
-<dl>
-<dt>exit
-</dt>
-<dd></dd>
-<dd>Exits the command interpreter.
-</dd>
-<dt>help [command]
-</dt>
-<dd></dd>
-<dt>? [command]
-</dt>
-<dd></dd>
-<dd>Displays a short help message.
-</dd>
-<dt>quit
-</dt>
-<dd></dd>
-<dd>Exits the command interpreter.
-</dd>
-<dt>status [queue]
-</dt>
-<dd></dd>
-<dd>Displays the status of one or more printer or class queues.
-</dd>
+<b>lpc</b> provides limited control over printer and class queues provided by CUPS. It can also be used to query the state of queues.
+<p>If no command is specified on the command-line, <b>lpc</b> displays a prompt and accepts commands from the standard input.
+<h3><a name="COMMANDS">Commands</a></h3>
+The <b>lpc</b> program accepts a subset of commands accepted by the Berkeley <b>lpc</b> program of the same name:
+<dl class="man">
+<dt><b>exit</b>
+<dd style="margin-left: 5.0em">Exits the command interpreter.
+<dt><b>help </b>[<i>command</i>]
+<dd style="margin-left: 5.0em"><dt><b>? </b>[<i>command</i>]
+<dd style="margin-left: 5.0em">Displays a short help message.
+<dt><b>quit</b>
+<dd style="margin-left: 5.0em">Exits the command interpreter.
+<dt><b>status </b>[<i>queue</i>]
+<dd style="margin-left: 5.0em">Displays the status of one or more printer or class queues.
</dl>
-<h2 class="title"><a name="LIMITATIONS">Limitations</a></h2>
-Since <i>lpc</i> is geared towards the Berkeley printing system,
-it is impossible to use <i>lpc</i> to configure printer or class
-queues provided by CUPS. To configure printer or class queues
-you must use the <a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a> command or another
-CUPS-compatible client with that functionality.
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-The CUPS version of <i>lpc</i> does not implement all of the
-standard Berkeley or LPRng commands.
+<h2 class="title"><a name="NOTES">Notes</a></h2>
+Since <b>lpc</b> is geared towards the Berkeley printing system, it is impossible to use <b>lpc</b> to configure printer or class queues provided by CUPS.
+To configure printer or class queues you must use the
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8)</a>
+command or another CUPS-compatible client with that functionality.
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cancel.html?TOPIC=Man+Pages'>cancel(1)</a>, <a href='man-cupsaccept.html?TOPIC=Man+Pages'>cupsaccept(8)</a>, <a href='man-cupsenable.html?TOPIC=Man+Pages'>cupsenable(8)</a>,
-<a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>, <a href='man-lpr.html?TOPIC=Man+Pages'>lpr(1)</a>, <a href='man-lprm.html?TOPIC=Man+Pages'>lprm(1)</a>, <a href='man-lpstat.html?TOPIC=Man+Pages'>lpstat(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-cupsaccept.html?TOPIC=Man+Pages"><b>cupsaccept</b>(8),</a>
+<a href="man-cupsenable.html?TOPIC=Man+Pages"><b>cupsenable</b>(8),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8),</a>
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1),</a>
+<a href="man-lprm.html?TOPIC=Man+Pages"><b>lprm</b>(1),</a>
+<a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,113 +10,114 @@
<h2 class="title"><a name="NAME">Name</a></h2>
lpinfo - show available devices or drivers
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lpinfo
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] [ -l ] [ --device-id
-<i>device-id-string
-</i>] [ --exclude-schemes
-<i>scheme-list
-</i>] [ --include-schemes
-<i>scheme-list
-</i>] [ --language
-<i>locale
-</i>] [ --make-and-model
-<i>name
-</i>] [ --product
-<i>name
-</i>] -m
+<b>lpinfo</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>-l</b>
+] [
+<b>--device-id</b>
+<i>device-id-string</i>
+] [
+<b>--exclude-schemes</b>
+<i>scheme-list</i>
+] [
+<b>--include-schemes</b>
+<i>scheme-list</i>
+] [
+<b>--language</b>
+<i>locale</i>
+] [
+<b>--make-and-model</b>
+<i>name</i>
+] [
+<b>--product</b>
+<i>name</i>
+]
+<b>-m</b>
<br>
-<b>lpinfo
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] [ -l ] [ --exclude-schemes
-<i>scheme-list
-</i>] [ --include-schemes
-<i>scheme-list
-</i>] [ --timeout
-<i>seconds
-</i>] -v
+<b>lpinfo</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>-l</b>
+] [
+<b>--exclude-schemes</b>
+<i>scheme-list</i>
+] [
+<b>--include-schemes</b>
+<i>scheme-list</i>
+] [
+<b>--timeout</b>
+<i>seconds</i>
+]
+<b>-v</b>
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>lpinfo</i> lists the available devices or drivers known to the
-CUPS server. The first form (<i>-m</i>) lists the available
-drivers, while the second form (<i>-v</i>) lists the available
-devices.
+<b>lpinfo</b> lists the available devices or drivers known to the CUPS server.
+The first form (<i>-m</i>) lists the available drivers, while the second form (<i>-v</i>) lists the available devices.
<h2 class="title"><a name="OPTIONS">Options</a></h2>
-<i>lpinfo</i> accepts the following options:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Forces encryption when connecting to the server.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Sets the username to use when connecting to the server.
-</dd>
-<dt>-h server[:port]
-</dt>
-<dd></dd>
-<dd>Selects an alternate server.
-</dd>
-<dt>-l
-</dt>
-<dd></dd>
-<dd>Shows a "long" listing of devices or drivers.
-</dd>
-<dt>--device-id device-id-string
-</dt>
-<dd></dd>
-<dd>Specifies the IEEE-1284 device ID to match when listing drivers with the
-<i>-m</i> option.
-</dd>
-<dt>--exclude-schemes scheme-list
-</dt>
-<dd></dd>
-<dd>Specifies a comma-separated list of device or PPD schemes that should be
-excluded from the results. Static PPD files use the "file" scheme.
-</dd>
-<dt>--include-schemes scheme-list
-</dt>
-<dd></dd>
-<dd>Specifies a comma-separated list of device or PPD schemes that should be
-included in the results. Static PPD files use the "file" scheme.
-</dd>
-<dt>--language locale
-</dt>
-<dd></dd>
-<dd>Specifies the language to match when listing drivers with the <i>-m</i> option.
-</dd>
-<dt>--make-and-model name
-</dt>
-<dd></dd>
-<dd>Specifies the make and model to match when listing drivers with the <i>-m</i>
-option.
-</dd>
-<dt>--product name
-</dt>
-<dd></dd>
-<dd>Specifies the product to match when listing drivers with the <i>-m</i> option.
-</dd>
-<dt>--timeout seconds
-</dt>
-<dd></dd>
-<dd>Specifies the timeout when listing devices with the <i>-v</i> option.
-</dd>
+<b>lpinfo</b> accepts the following options:
+<dl class="man">
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Forces encryption when connecting to the server.
+<dt><b>-U </b><i>username</i>
+<dd style="margin-left: 5.0em">Sets the username to use when connecting to the server.
+<dt><b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+<dd style="margin-left: 5.0em">Selects an alternate server.
+<dt><b>-l</b>
+<dd style="margin-left: 5.0em">Shows a "long" listing of devices or drivers.
+<dt><b>--device-id </b><i>device-id-string</i>
+<dd style="margin-left: 5.0em">Specifies the IEEE-1284 device ID to match when listing drivers with the <i>-m</i> option.
+<dt><b>--exclude-schemes </b><i>scheme-list</i>
+<dd style="margin-left: 5.0em">Specifies a comma-delimited list of device or PPD schemes that should be excluded from the results.
+Static PPD files use the "file" scheme.
+<dt><b>--include-schemes </b><i>scheme-list</i>
+<dd style="margin-left: 5.0em">Specifies a comma-delimited list of device or PPD schemes that should be included in the results.
+Static PPD files use the "file" scheme.
+<dt><b>--language </b><i>locale</i>
+<dd style="margin-left: 5.0em">Specifies the language to match when listing drivers with the <i>-m</i> option.
+<dt><b>--make-and-model </b><i>name</i>
+<dd style="margin-left: 5.0em">Specifies the make and model to match when listing drivers with the <i>-m</i> option.
+<dt><b>--product </b><i>name</i>
+<dd style="margin-left: 5.0em">Specifies the product to match when listing drivers with the <i>-m</i> option.
+<dt><b>--timeout </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies the timeout when listing devices with the <i>-v</i> option.
</dl>
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
The <i>lpinfo</i> command is unique to CUPS.
+<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+List all devices:
+<pre class="man">
+
+ lpinfo -v
+
+</pre>
+List all drivers:
+<pre class="man">
+
+ lpinfo -m
+
+</pre>
+List drivers matching "HP LaserJet":
+<pre class="man">
+
+ lpinfo --make-and-model "HP LaserJet" -m
+</pre>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,56 +10,66 @@
<h2 class="title"><a name="NAME">Name</a></h2>
lpmove - move a job or all jobs to a new destination
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lpmove
-</b>[ -E ] [ -h
-<i>server[:port]
-</i>] [ -U
-<i>username
-</i>]
-<i>job destination
-</i><br>
-<b>lpmove
-</b>[ -E ] [ -h
-<i>server[:port]
-</i>] [ -U
-<i>username
-</i>]
-<i>source destination
-</i><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<b>lpmove</b> moves the specified <i>job</i> or all jobs from
-<i>source</i> to <i>destination</i>. <i>job</i> can be the job ID
-number or the old destination and job ID:
+<b>lpmove</b>
+[
+<b>-E</b>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>-U</b>
+<i>username</i>
+]
+<i>job</i>
+<i>destination</i>
<br>
-<pre>
-
- lpmove 123 newprinter
- lpmove oldprinter-123 newprinter
-</pre>
+<b>lpmove</b>
+[
+<b>-E</b>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>-U</b>
+<i>username</i>
+]
+<i>source</i>
+<i>destination</i>
+<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
+<b>lpmove</b> moves the specified <i>job</i> or all jobs from <i>source</i> to <i>destination</i>. <i>job</i> can be the job ID number or the old destination and job ID.
<h2 class="title"><a name="OPTIONS">Options</a></h2>
-The <i>lpmove</i> command supports the following options:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Forces encryption when connecting to the server.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Specifies an alternate username.
-</dd>
-<dt>-h server[:port]
-</dt>
-<dd></dd>
-<dd>Specifies an alternate server.
-</dd>
+The <b>lpmove</b> command supports the following options:
+<dl class="man">
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Forces encryption when connecting to the server.
+<dt><b>-U </b><i>username</i>
+<dd style="margin-left: 5.0em">Specifies an alternate username.
+<dt><b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+<dd style="margin-left: 5.0em">Specifies an alternate server.
</dl>
+<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+Move job 123 from "oldprinter" to "newprinter":
+<pre class="man">
+
+ lpmove 123 newprinter
+
+ <i>or</i>
+
+ lpmove oldprinter-123 newprinter
+
+</pre>
+Move all jobs from "oldprinter" to "newprinter":
+<pre class="man">
+
+ lpmove oldprinter newprinter
+</pre>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cancel.html?TOPIC=Man+Pages'>cancel(1)</a>, <a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>,
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1),</a>
+<a href="man-lprm.html?TOPIC=Man+Pages"><b>lprm</b>(1),</a>
<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,129 +10,116 @@
<h2 class="title"><a name="NAME">Name</a></h2>
lpoptions - display or set printer options and defaults
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lpoptions
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] -d
-<i>destination[/instance]
-</i>[ -o
-<i>option[=value]
-</i>] ... [ -o
-<i>option[=value]
-</i>]
+<b>lpoptions</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+]
+<b>-d </b><i>destination</i>[<b>/</b><i>instance</i>]
+[
+<b>-l</b>
+]
<br>
-<b>lpoptions
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] [ -p
-<i>destination[/instance]
-</i>] -l
+<b>lpoptions</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>-p </b><i>destination</i>[<b>/</b><i>instance</i>]
+]
+<b>-o </b><i>option</i>[<b>=</b><i>value</i>] ...
<br>
-<b>lpoptions
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] [ -o
-<i>option[=value]
-</i>] ... [ -o
-<i>option[=value]
-</i>] [ -p
-<i>destination[/instance]
-</i>] -r
-<i>option
-</i><br>
-<b>lpoptions
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] -x
-<i>destination[/instance]
-</i><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>lpoptions</i> displays or sets printer options and defaults.
-<i>lpoptions</i> shows the default printer options when run with no
-arguments. Other options include:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Enables encryption when communicating with the CUPS server.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Uses an alternate username.
-</dd>
-<dt>-d destination[/instance]
-</dt>
-<dd></dd>
-<dd>Sets the user default printer to <i>destination</i>. If <i>instance</i>
-is supplied then that particular instance is used. This option
-overrides the system default printer for the current user.
-</dd>
-<dt>-h server[:port]
-</dt>
-<dd></dd>
-<dd>Uses an alternate server.
-</dd>
-<dt>-l
-</dt>
-<dd></dd>
-<dd>Lists the printer specific options and their current settings.
-</dd>
-<dt>-o option[=value]
-</dt>
-<dd></dd>
-<dd>Specifies a new option for the named destination.
-</dd>
-<dt>-p destination[/instance]
-</dt>
-<dd></dd>
-<dd>Sets the destination and instance, if specified, for any options
-that follow. If the named instance does not exist then it is
-created.
-</dd>
-<dt>-r option
-</dt>
-<dd></dd>
-<dd>Removes the specified option for the named destination.
-</dd>
-<dt>-x destination[/instance]
-</dt>
-<dd></dd>
-<dd>Removes the options for the named destination and instance, if
-specified. If the named instance does not exist then this does
-nothing.
-</dd>
+<b>lpoptions</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>-p </b><i>destination</i>[<b>/</b><i>instance</i>]
+]
+<b>-r</b>
+<i>option</i>
+<br>
+<b>lpoptions</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+]
+<b>-x </b><i>destination</i>[<b>/</b><i>instance</i>]
+<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
+<b>lpoptions</b> displays or sets printer options and defaults.
+If no printer is specified using the <i>-p</i> option, the default printer is used as described in
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1).</a>
+<p>If no <i>-l</i>, <i>-o</i>, or <i>-r</i> options are specified, the current options are reported on the standard output.
+<p>Options set with the <b>lpoptions</b> command are used by the
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1)</a>
+and
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1)</a>
+commands when submitting jobs.
+<p>When run by the root user, <b>lpoptions</b> gets and sets default options and instances for all users in the <i>/etc/cups/lpoptions</i> file.
+Otherwise, the per-user defaults are managed in the <i>~/.cups/lpoptions</i> file.
+<h2 class="title"><a name="OPTIONS">Options</a></h2>
+<b>lpoptions</b> supports the following options:
+<dl class="man">
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Enables encryption when communicating with the CUPS server.
+<dt><b>-U </b><i>username</i>
+<dd style="margin-left: 5.0em">Uses an alternate username.
+<dt><b>-d </b><i>destination</i>[<b>/</b><i>instance</i>]
+<dd style="margin-left: 5.0em">Sets the user default printer to <i>destination</i>.
+If <i>instance</i> is supplied then that particular instance is used.
+This option overrides the system default printer for the current user.
+<dt><b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+<dd style="margin-left: 5.0em">Uses an alternate server.
+<dt><b>-l</b>
+<dd style="margin-left: 5.0em">Lists the printer specific options and their current settings.
+<dt><b>-o </b><i>option</i>[<b>=</b><i>value</i>]
+<dd style="margin-left: 5.0em">Specifies a new option for the named destination.
+<dt><b>-p </b><i>destination</i>[<b>/</b><i>instance</i>]
+<dd style="margin-left: 5.0em">Sets the destination and instance, if specified, for any options that follow.
+If the named instance does not exist then it is created.
+Destinations can only be created using the
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8)</a>
+program.
+<dt><b>-r </b><i>option</i>
+<dd style="margin-left: 5.0em">Removes the specified option from the named destination.
+<dt><b>-x </b><i>destination</i>[<b>/</b><i>instance</i>]
+<dd style="margin-left: 5.0em">Removes the options for the named destination and instance, if specified.
+If the named instance does not exist then this does nothing.
+Destinations can only be removed using the
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8)</a>
+command.
</dl>
-<p>If no options are specified using the <i>-o</i> option, then the
-current options for the named printer are reported on the
-standard output.
-<p>Options set with the <i>lpoptions</i> command are used by the
-<a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a> and <a href='man-lpr.html?TOPIC=Man+Pages'>lpr(1)</a> commands when submitting jobs.
-<h2 class="title"><a name="ROOT_ACCOUNT_OPTIONS">Root Account Options</a></h2>
-When run by the root user, <i>lpoptions</i> gets and sets default
-options and instances for <i>all users</i> in the
-/etc/cups/lpoptions file.
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-The <i>lpoptions</i> command is unique to CUPS.
<h2 class="title"><a name="FILES">Files</a></h2>
-~/.cups/lpoptions - user defaults and instances created by non-root
-users.
+<i>~/.cups/lpoptions</i> - user defaults and instances created by non-root users.
<br>
-/etc/cups/lpoptions - system-wide defaults and instances
-created by the root user.
+<i>/etc/cups/lpoptions</i> - system-wide defaults and instances created by the root user.
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+The <b>lpoptions</b> command is unique to CUPS.
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cancel.html?TOPIC=Man+Pages'>cancel(1)</a>, <a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>, <a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a>, <a href='man-lpr.html?TOPIC=Man+Pages'>lpr(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8),</a>
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1),</a>
+<a href="man-lprm.html?TOPIC=Man+Pages"><b>lprm</b>(1),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-lppasswd.html b/doc/help/man-lppasswd.html
deleted file mode 100644
index a24bd206b..000000000
--- a/doc/help/man-lppasswd.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<!-- SECTION: Man Pages -->
-<head>
- <link rel="stylesheet" type="text/css" href="../cups-printable.css">
- <title>lppasswd(1)</title>
-</head>
-<body>
-<h1 class="title">lppasswd(1)</h1>
-<h2 class="title"><a name="NAME">Name</a></h2>
-lppasswd - add, change, or delete digest passwords.
-<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lppasswd
-</b>[
-<i>username
-</i>]
-<br>
-<b>lppasswd
-</b>-a [ -g
-<i>groupname
-</i>]
-<i>username
-</i><br>
-<b>lppasswd
-</b>-x
-<i>username
-</i><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>lppasswd</i> adds, changes, or deletes passwords in the CUPS
-digest password file, <i>passwd.md5</i>. When run by a normal
-user, <i>lppasswd</i> will prompt for the old and new passwords.
-When run by the super-user, <i>lppasswd</i> can add new accounts
-(<i>-a username</i>), change existing accounts (<i>username</i>),
-or delete accounts (<i>-x username</i>) in the digest password
-file. Digest usernames do not have to match local UNIX usernames.
-<h2 class="title"><a name="OPTIONS">Options</a></h2>
-<i>lppasswd</i> supports the following options:
-<dl>
-<dt>-g groupname
-</dt>
-<dd></dd>
-<dd>Specifies a group other than the default system group.
-</dd>
-</dl>
-<h2 class="title"><a name="SECURITY_ISSUES">Security Issues</a></h2>
-By default, the <i>lppasswd</i> program is not installed to allow ordinary
-users to change their passwords. To enable this, the <i>lppasswd</i> command
-must be made setuid to root with the command:
-<br>
-<pre>
-chmod u+s lppasswd
-</pre>
-<p>While every attempt has been made to make <i>lppasswd</i> secure against
-exploits that could grant super-user privileges to unprivileged users,
-paranoid system administrators may wish to use Basic authentication with
-accounts managed by PAM instead.
-<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>, <a href='man-lpr.html?TOPIC=Man+Pages'>lpr(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
-<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
-
-</body>
-</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,64 +10,52 @@
<h2 class="title"><a name="NAME">Name</a></h2>
lpq - show printer queue status
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lpq
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] [ -P
-<i>destination[/instance]
-</i>] [ -a ] [ -l ] [
-<i>+interval
-</i>]
+<b>lpq</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>-P </b><i>destination</i>[<b>/</b><i>instance</i>]
+] [
+<b>-a</b>
+] [
+<b>-l</b>
+] [
+<b>+</b><i>interval</i>
+]
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>lpq</i> shows the current print queue status on the named
-printer. Jobs queued on the default destination will be shown if
-no printer or class is specified on the command-line.
-<p>The <i>+interval</i> option allows you to continuously report the
-jobs in the queue until the queue is empty; the list of jobs is
-shown once every <i>interval</i> seconds.
+<b>lpq</b> shows the current print queue status on the named printer.
+Jobs queued on the default destination will be shown if no printer or class is specified on the command-line.
+<p>The <i>+interval</i> option allows you to continuously report the jobs in the queue until the queue is empty; the list of jobs is shown once every <i>interval</i> seconds.
<h2 class="title"><a name="OPTIONS">Options</a></h2>
-<i>lpq</i> supports the following options:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Forces encryption when connecting to the server.
-</dd>
-<dt>-P destination[/instance]
-</dt>
-<dd></dd>
-<dd>Specifies an alternate printer or class name.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Specifies an alternate username.
-</dd>
-<dt>-a
-</dt>
-<dd></dd>
-<dd>Reports jobs on all printers.
-</dd>
-<dt>-h server[:port]
-</dt>
-<dd></dd>
-<dd>Specifies an alternate server.
-</dd>
-<dt>-l
-</dt>
-<dd></dd>
-<dd>Requests a more verbose (long) reporting format.
-</dd>
+<b>lpq</b> supports the following options:
+<dl class="man">
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Forces encryption when connecting to the server.
+<dt><b>-P </b><i>destination</i>[<b>/</b><i>instance</i>]
+<dd style="margin-left: 5.0em">Specifies an alternate printer or class name.
+<dt><b>-U </b><i>username</i>
+<dd style="margin-left: 5.0em">Specifies an alternate username.
+<dt><b>-a</b>
+<dd style="margin-left: 5.0em">Reports jobs on all printers.
+<dt><b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+<dd style="margin-left: 5.0em">Specifies an alternate server.
+<dt><b>-l</b>
+<dd style="margin-left: 5.0em">Requests a more verbose (long) reporting format.
</dl>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cancel.html?TOPIC=Man+Pages'>cancel(1)</a>, <a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>, <a href='man-lpr.html?TOPIC=Man+Pages'>lpr(1)</a>, <a href='man-lprm.html?TOPIC=Man+Pages'>lprm(1)</a>,
-<a href='man-lpstat.html?TOPIC=Man+Pages'>lpstat(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1),</a>
+<a href="man-lprm.html?TOPIC=Man+Pages"><b>lprm</b>(1),</a>
+<a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,124 +10,121 @@
<h2 class="title"><a name="NAME">Name</a></h2>
lpr - print files
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lpr
-</b>[ -E ] [ -H
-<i>server[:port]
-</i>] [ -U
-<i>username
-</i>] [ -P
-<i>destination[/instance]
-</i>] [ -#
-<i>num-copies
-</i>[ -h ] [ -l ] [ -m ] [ -o
-<i>option[=value]
-</i>] [ -p] [ -q ] [ -r ] [ -C/J/T
-<i>title
-</i>] [
-<i>file(s)
-</i>]
+<b>lpr</b>
+[
+<b>-E</b>
+] [
+<b>-H </b><i>server</i>[<b>:</b><i>port</i>]
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-P </b><i>destination</i>[<b>/</b><i>instance</i>]
+] [
+<b>-#</b>
+<i>num-copies</i>
+[
+<b>-h</b>
+] [
+<b>-l</b>
+] [
+<b>-m</b>
+] [
+<b>-o </b><i>option</i>[<b>=</b><i>value</i>]
+] [
+<b>-p</b>
+] [
+<b>-q</b>
+] [
+<b>-r</b>
+] [
+<b>-C</b>
+<i>title</i>
+] [
+<b>-J</b>
+<i>title</i>
+] [
+<b>-T</b>
+<i>title</i>
+] [
+<i>file(s)</i>
+]
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>lpr</i> submits files for printing. Files named on the command
-line are sent to the named printer (or the default destination if no
-destination is specified). If no files are listed on the command-line,
-<i>lpr</i> reads the print file from the standard input.
-<h2 class="title"><a name="THE_DEFAULT_DESTINATION">The Default Destination</a></h2>
-CUPS provides many ways to set the default destination. The "LPDEST" and
-"PRINTER" environment variables are consulted first. If neither are set,
-the current default set using the <a href='man-lpoptions.html?TOPIC=Man+Pages'>lpoptions(1)</a> command is used,
-followed by the default set using the <a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a> command.
+<b>lpr</b> submits files for printing.
+Files named on the command line are sent to the named printer or the default destination if no destination is specified.
+If no files are listed on the command-line, <b>lpr</b> reads the print file from the standard input.
+<h3><a name="THE_DEFAULT_DESTINATION">The Default Destination</a></h3>
+CUPS provides many ways to set the default destination. The <b>LPDEST</b> and <b>PRINTER</b> environment variables are consulted first.
+If neither are set, the current default set using the
+<a href="man-lpoptions.html?TOPIC=Man+Pages"><b>lpoptions</b>(1)</a>
+command is used, followed by the default set using the
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8)</a>
+command.
<h2 class="title"><a name="OPTIONS">Options</a></h2>
The following options are recognized by <i>lpr</i>:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Forces encryption when connecting to the server.
-</dd>
-<dt>-H server[:port]
-</dt>
-<dd></dd>
-<dd>Specifies an alternate server.
-</dd>
-<dt>-C "name"
-</dt>
-<dd></dd>
-<dt>-J "name"
-</dt>
-<dd></dd>
-<dt>-T "name"
-</dt>
-<dd></dd>
-<dd>Sets the job name.
-</dd>
-<dt>-P destination[/instance]
-</dt>
-<dd></dd>
-<dd>Prints files to the named printer.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Specifies an alternate username.
-</dd>
-<dt>-# <i>copies</i>
-</dt>
-<dd></dd>
-<dd>Sets the number of copies to print from 1 to 100.
-</dd>
-<dt>-h
-</dt>
-<dd></dd>
-<dd>Disables banner printing. This option is equivalent to "-o
-job-sheets=none".
-</dd>
-<dt>-l
-</dt>
-<dd></dd>
-<dd>Specifies that the print file is already formatted for the
-destination and should be sent without filtering. This option is
-equivalent to "-o raw".
-</dd>
-<dt>-m
-</dt>
-<dd></dd>
-<dd>Send an email on job completion.
-</dd>
-<dt>-o option[=value]
-</dt>
-<dd></dd>
-<dd>Sets a job option.
-</dd>
-<dt>-p
-</dt>
-<dd></dd>
-<dd>Specifies that the print file should be formatted with a shaded
-header with the date, time, job name, and page number. This
-option is equivalent to "-o prettyprint" and is only useful when
-printing text files.
-</dd>
-<dt>-q
-</dt>
-<dd></dd>
-<dd>Hold job for printing.
-</dd>
-<dt>-r
-</dt>
-<dd></dd>
-<dd>Specifies that the named print files should be deleted after
-printing them.
-</dd>
+<dl class="man">
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Forces encryption when connecting to the server.
+<dt><b>-H </b><i>server</i>[<b>:</b><i>port</i>]
+<dd style="margin-left: 5.0em">Specifies an alternate server.
+<dt><b>-C "</b><i>name</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>-J "</b><i>name</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>-T "</b><i>name</i><b>"</b>
+<dd style="margin-left: 5.0em">Sets the job name/title.
+<dt><b>-P </b><i>destination</i>[<b>/</b><i>instance</i>]
+<dd style="margin-left: 5.0em">Prints files to the named printer.
+<dt><b>-U </b><i>username</i>
+<dd style="margin-left: 5.0em">Specifies an alternate username.
+<dt><b>-# </b><i>copies</i>
+<dd style="margin-left: 5.0em">Sets the number of copies to print.
+<dt><b>-h</b>
+<dd style="margin-left: 5.0em">Disables banner printing. This option is equivalent to <i>-o job-sheets=none</i>.
+<dt><b>-l</b>
+<dd style="margin-left: 5.0em">Specifies that the print file is already formatted for the destination and should be sent without filtering.
+This option is equivalent to <i>-o raw</i>.
+<dt><b>-m</b>
+<dd style="margin-left: 5.0em">Send an email on job completion.
+<dt><b>-o </b><i>option</i>[<b>=</b><i>value</i>]
+<dd style="margin-left: 5.0em">Sets a job option.
+<dt><b>-p</b>
+<dd style="margin-left: 5.0em">Specifies that the print file should be formatted with a shaded header with the date, time, job name, and page number.
+This option is equivalent to <i>-o prettyprint</i> and is only useful when printing text files.
+<dt><b>-q</b>
+<dd style="margin-left: 5.0em">Hold job for printing.
+<dt><b>-r</b>
+<dd style="margin-left: 5.0em">Specifies that the named print files should be deleted after submitting them.
</dl>
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-The "c", "d", "f", "g", "i", "n", "t", "v", and "w" options
-are not supported by CUPS and produce a warning message if used.
+<h2 class="title"><a name="NOTES">Notes</a></h2>
+The <i>-c</i>, <i>-d</i>, <i>-f</i>, <i>-g</i>, <i>-i</i>, <i>-n</i>, <i>-t</i>, <i>-v</i>, and <i>-w</i> options are not supported by CUPS and produce a warning message if used.
+<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+Print two copies of a document to the default printer:
+<pre class="man">
+
+ lpr -# 2 filename
+
+</pre>
+Print a double-sided legal document to a printer called "foo":
+<pre class="man">
+
+ lpr -P foo -o media=legal -o sides=two-sided-long-edge filename
+
+</pre>
+Print a presentation document 2-up to a printer called "foo":
+<pre class="man">
+
+ lpr -P foo -o number-up=2 filename
+</pre>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cancel.html?TOPIC=Man+Pages'>cancel(1)</a>, <a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>, <a href='man-lpadmin.html?TOPIC=Man+Pages'>lpadmin(8)</a>, <a href='man-lpoptions.html?TOPIC=Man+Pages'>lpoptions(1)</a>,
-<a href='man-lpq.html?TOPIC=Man+Pages'>lpq(1)</a>, <a href='man-lprm.html?TOPIC=Man+Pages'>lprm(1)</a>, <a href='man-lpstat.html?TOPIC=Man+Pages'>lpstat(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8),</a>
+<a href="man-lpoptions.html?TOPIC=Man+Pages"><b>lpoptions</b>(1),</a>
+<a href="man-lpq.html?TOPIC=Man+Pages"><b>lpq</b>(1),</a>
+<a href="man-lprm.html?TOPIC=Man+Pages"><b>lprm</b>(1),</a>
+<a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,56 +10,73 @@
<h2 class="title"><a name="NAME">Name</a></h2>
lprm - cancel print jobs
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lprm
-</b>[ -E ] [ -U
-<i>username
-</i>] [ -h
-<i>server[:port]
-</i>] [ -P
-<i>destination[/instance]
-</i>] [ - ] [
-<i>job ID(s)
-</i>]
+<b>lprm</b>
+[
+<b>-E</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h</b>
+<i>server</i>[<i>:port</i>]
+] [
+<b>-P</b>
+<i>destination</i>[<i>/instance</i>]
+] [
+<b>-</b>
+] [
+<i>job-id(s)</i>
+]
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>lprm</i> cancels print jobs that have been queued for printing.
-If no arguments are supplied, the current job on the default
-destination is cancelled. You can specify one or more job ID
-numbers to cancel those jobs or use the <i>-</i> option to cancel
-all jobs.
+<b>lprm</b>
+cancels print jobs that have been queued for printing.
+If no arguments are supplied, the current job on the default destination is canceled.
+You can specify one or more job ID numbers to cancel those jobs or use the <i>-</i> option to cancel all jobs.
<h2 class="title"><a name="OPTIONS">Options</a></h2>
-The <i>lprm</i> command supports the following options:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Forces encryption when connecting to the server.
-</dd>
-<dt>-P destination[/instance]
-</dt>
-<dd></dd>
-<dd>Specifies the destination printer or class.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Specifies an alternate username.
-</dd>
-<dt>-h server[:port]
-</dt>
-<dd></dd>
-<dd>Specifies an alternate server.
-</dd>
+The
+<b>lprm</b>
+command supports the following options:
+<dl class="man">
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Forces encryption when connecting to the server.
+<dt><b>-P </b><i>destination</i>[<i>/instance</i>]
+<dd style="margin-left: 5.0em">Specifies the destination printer or class.
+<dt><b>-U </b><i>username</i>
+<dd style="margin-left: 5.0em">Specifies an alternate username.
+<dt><b>-h </b><i>server</i>[<i>:port</i>]
+<dd style="margin-left: 5.0em">Specifies an alternate server.
</dl>
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-The CUPS version of <i>lprm</i> is compatible with the standard
-Berkeley <i>lprm</i> command.
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+The CUPS version of
+<b>lprm</b>
+is compatible with the standard Berkeley command of the same name.
+<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+Cancel the current job on the default printer:
+<pre class="man">
+
+ lprm
+
+</pre>
+Cancel job 1234:
+<pre class="man">
+
+ lprm 1234
+
+</pre>
+Cancel all jobs:
+<pre class="man">
+
+ lprm -
+</pre>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cancel.html?TOPIC=Man+Pages'>cancel(1)</a>, <a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>, <a href='man-lpq.html?TOPIC=Man+Pages'>lpq(1)</a>, <a href='man-lpr.html?TOPIC=Man+Pages'>lpr(1)</a>,
-<a href='man-lpstat.html?TOPIC=Man+Pages'>lpstat(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpq.html?TOPIC=Man+Pages"><b>lpq</b>(1),</a>
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1),</a>
+<a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,145 +10,120 @@
<h2 class="title"><a name="NAME">Name</a></h2>
lpstat - print cups status information
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>lpstat
-</b>[ -E ] [ -H ] [ -U
-<i>username
-</i>] [ -h
-<i>hostname[:port]
-</i>] [ -l ] [ -W
-<i>which-jobs
-</i>] [ -a [
-<i>destination(s)
-</i>] ] [ -c [
-<i>class(es)
-</i>] ] [ -d ] [ -o [
-<i>destination(s)
-</i>] ] [ -p [
-<i>printer(s)
-</i>] ] [ -r ] [ -R ] [ -s ] [ -t ] [ -u [
-<i>user(s)
-</i>] ] [ -v [
-<i>printer(s)
-</i>] ]
+<b>lpstat</b>
+[
+<b>-E</b>
+] [
+<b>-H</b>
+] [
+<b>-U</b>
+<i>username</i>
+] [
+<b>-h </b><i>hostname</i>[<b>:</b><i>port</i>]
+] [
+<b>-l</b>
+] [
+<b>-W</b>
+<i>which-jobs</i>
+] [
+<b>-a</b>
+[
+<i>destination(s)</i>
+] ] [
+<b>-c</b>
+[
+<i>class(es)</i>
+] ] [
+<b>-d</b>
+] [
+<b>-o</b>
+[
+<i>destination(s)</i>
+] ] [
+<b>-p</b>
+[
+<i>printer(s)</i>
+] ] [
+<b>-r</b>
+] [
+<b>-R</b>
+] [
+<b>-s</b>
+] [
+<b>-t</b>
+] [
+<b>-u</b>
+[
+<i>user(s)</i>
+] ] [
+<b>-v</b>
+[
+<i>printer(s)</i>
+] ]
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>lpstat</i> displays status information about the current
-classes, jobs, and printers. When run with no arguments,
-<i>lpstat</i> will list jobs queued by the current user.
+<b>lpstat</b> displays status information about the current classes, jobs, and printers.
+When run with no arguments, <b>lpstat</b> will list active jobs queued by the current user.
<h2 class="title"><a name="OPTIONS">Options</a></h2>
-The <i>lpstat</i> command supports the following options:
-<dl>
-<dt>-E
-</dt>
-<dd></dd>
-<dd>Forces encryption when connecting to the server.
-</dd>
-<dt>-H
-</dt>
-<dd></dd>
-<dd>Shows the server hostname and port.
-</dd>
-<dt>-R
-</dt>
-<dd></dd>
-<dd>Shows the ranking of print jobs.
-</dd>
-<dt>-U username
-</dt>
-<dd></dd>
-<dd>Specifies an alternate username.
-</dd>
-<dt>-W which-jobs
-</dt>
-<dd></dd>
-<dd>Specifies which jobs to show, <i>completed</i> or
-<i>not-completed</i> (the default). This option <i>must</i> appear
-before the <i>-o</i> option and/or any printer names, otherwise
-the default (not-completed) value will be used in the request to
-the scheduler.
-</dd>
-<dt>-a [printer(s)]
-</dt>
-<dd></dd>
-<dd>Shows the accepting state of printer queues. If no printers are
-specified then all printers are listed.
-</dd>
-<dt>-c [class(es)]
-</dt>
-<dd></dd>
-<dd>Shows the printer classes and the printers that belong to them.
+The <b>lpstat</b> command supports the following options:
+<dl class="man">
+<dt><b>-E</b>
+<dd style="margin-left: 5.0em">Forces encryption when connecting to the server.
+<dt><b>-H</b>
+<dd style="margin-left: 5.0em">Shows the server hostname and port.
+<dt><b>-R</b>
+<dd style="margin-left: 5.0em">Shows the ranking of print jobs.
+<dt><b>-U </b><i>username</i>
+<dd style="margin-left: 5.0em">Specifies an alternate username.
+<dt><b>-W </b><i>which-jobs</i>
+<dd style="margin-left: 5.0em">Specifies which jobs to show, "completed" or "not-completed" (the default).
+This option <i>must</i> appear before the <i>-o</i> option and/or any printer names, otherwise the default ("not-completed") value will be used in the request to the scheduler.
+<dt><b>-a </b>[<i>printer(s)</i>]
+<dd style="margin-left: 5.0em">Shows the accepting state of printer queues.
+If no printers are specified then all printers are listed.
+<dt><b>-c </b>[<i>class(es)</i>]
+<dd style="margin-left: 5.0em">Shows the printer classes and the printers that belong to them.
If no classes are specified then all classes are listed.
-</dd>
-<dt>-d
-</dt>
-<dd></dd>
-<dd>Shows the current default destination.
-</dd>
-<dt>-h server[:port]
-</dt>
-<dd></dd>
-<dd>Specifies an alternate server.
-</dd>
-<dt>-l
-</dt>
-<dd></dd>
-<dd>Shows a long listing of printers, classes, or jobs.
-</dd>
-<dt>-o [destination(s)]
-</dt>
-<dd></dd>
-<dd>Shows the jobs queue on the specified destinations. If no destinations are
-specified all jobs are shown.
-</dd>
-<dt>-p [printer(s)]
-</dt>
-<dd></dd>
-<dd>Shows the printers and whether or not they are enabled for printing. If
-no printers are specified then all printers are listed.
-</dd>
-<dt>-r
-</dt>
-<dd></dd>
-<dd>Shows whether the CUPS server is running.
-</dd>
-<dt>-s
-</dt>
-<dd></dd>
-<dd>Shows a status summary, including the default destination, a
-list of classes and their member printers, and a list of printers and
-their associated devices. This is equivalent to using the "-d", "-c",
-and "-v" options.
-</dd>
-<dt>-t
-</dt>
-<dd></dd>
-<dd>Shows all status information. This is equivalent to using the "-r",
-"-d", "-c", "-v", "-a", "-p", and "-o" options.
-</dd>
-<dt>-u [user(s)]
-</dt>
-<dd></dd>
-<dd>Shows a list of print jobs queued by the specified users. If no users
-are specified, lists the jobs queued by the current user.
-</dd>
-<dt>-v [printer(s)]
-</dt>
-<dd></dd>
-<dd>Shows the printers and what device they are attached to. If no printers
-are specified then all printers are listed.
-</dd>
+<dt><b>-d</b>
+<dd style="margin-left: 5.0em">Shows the current default destination.
+<dt><b>-h </b><i>server</i>[<b>:</b><i>port</i>]
+<dd style="margin-left: 5.0em">Specifies an alternate server.
+<dt><b>-l</b>
+<dd style="margin-left: 5.0em">Shows a long listing of printers, classes, or jobs.
+<dt><b>-o </b>[<i>destination(s)</i>]
+<dd style="margin-left: 5.0em">Shows the jobs queued on the specified destinations.
+If no destinations are specified all jobs are shown.
+<dt><b>-p </b>[<i>printer(s)</i>]
+<dd style="margin-left: 5.0em">Shows the printers and whether they are enabled for printing.
+If no printers are specified then all printers are listed.
+<dt><b>-r</b>
+<dd style="margin-left: 5.0em">Shows whether the CUPS server is running.
+<dt><b>-s</b>
+<dd style="margin-left: 5.0em">Shows a status summary, including the default destination, a list of classes and their member printers, and a list of printers and their associated devices.
+This is equivalent to using the <i>-d</i>, <i>-c</i>, and <i>-v</i> options.
+<dt><b>-t</b>
+<dd style="margin-left: 5.0em">Shows all status information.
+This is equivalent to using the <i>-r</i>, <i>-d</i>, <i>-c</i>, <i>-v</i>, <i>-a</i>, <i>-p</i>, and <i>-o</i> options.
+<dt><b>-u </b>[<i>user(s)</i>]
+<dd style="margin-left: 5.0em">Shows a list of print jobs queued by the specified users.
+If no users are specified, lists the jobs queued by the current user.
+<dt><b>-v </b>[<i>printer(s)</i>]
+<dd style="margin-left: 5.0em">Shows the printers and what device they are attached to.
+If no printers are specified then all printers are listed.
</dl>
-<h2 class="title"><a name="COMPATIBILITY">Compatibility</a></h2>
-Unlike the System V printing system, CUPS allows printer names to
-contain any printable character except SPACE, TAB, "/", and "#".
+<h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
+Unlike the System V printing system, CUPS allows printer names to contain any printable character except SPACE, TAB, "/", and "#".
Also, printer and class names are <i>not</i> case-sensitive.
-<p>The "-h", "-E", "-U", and "-W" options are unique to CUPS.
-<p>The Solaris "-f", "-P", and "-S" options are silently ignored.
+<p>The <i>-h</i>, <i>-E</i>, <i>-U</i>, and <i>-W</i> options are unique to CUPS.
+<p>The Solaris <i>-f</i>, <i>-P</i>, and <i>-S</i> options are silently ignored.
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-cancel.html?TOPIC=Man+Pages'>cancel(1)</a>, <a href='man-lp.html?TOPIC=Man+Pages'>lp(1)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cancel.html?TOPIC=Man+Pages"><b>cancel</b>(1),</a>
+<a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1),</a>
+<a href="man-lpq.html?TOPIC=Man+Pages"><b>lpq</b>(1),</a>
+<a href="man-lpr.html?TOPIC=Man+Pages"><b>lpr</b>(1),</a>
+<a href="man-lprm.html?TOPIC=Man+Pages"><b>lprm</b>(1),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,51 +10,33 @@
<h2 class="title"><a name="NAME">Name</a></h2>
mailto.conf - configuration file for cups email notifier
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <i>mailto.conf</i> file defines the local mail server and
-email notification preferences for CUPS.
-<p>Each line in the file can be a configuration directive, a blank line,
-or a comment. Comment lines start with the # character.
-<h2 class="title"><a name="DIRECTIVES">Directives</a></h2>
-<dl>
-<dt>Cc <i>cc-address@domain.com</i>
-</dt>
-<dd></dd>
-<dd>Specifies an additional recipient for all email notifications.
-</dd>
-<dt>From <i>from-address@domain.com</i>
-</dt>
-<dd></dd>
-<dd>Specifies the sender of email notifications.
-</dd>
-<dt>Sendmail <i>sendmail command and options</i>
-</dt>
-<dd></dd>
-<dd>Specifies the sendmail command to use when sending email
-notifications. Only one <i>Sendmail</i> or <i>SMTPServer</i> line
-may be present in the <i>mailto.conf</i> file. If multiple lines
-are present, only the last one is used.
-</dd>
-<dt>SMTPServer <i>servername</i>
-</dt>
-<dd></dd>
-<dd>Specifies a SMTP server to send email notifications to. Only one
-<i>Sendmail</i> or <i>SMTPServer</i> line may be present in the
-<i>mailto.conf</i> file. If multiple lines are present, only the
-last one is used.
-</dd>
-<dt>Subject <i>subject-prefix</i>
-</dt>
-<dd></dd>
-<dd>Specifies a prefix string for the subject line of an email notification.
-</dd>
+The <b>mailto.conf</b> file defines the local mail server and email notification preferences for CUPS.
+<p>Each line in the file can be a configuration directive, a blank line, or a comment.
+Configuration directives typically consist of a name and zero or more values separated by whitespace.
+The configuration directive name and values are case-insensitive.
+Comment lines start with the # character.
+<h3><a name="DIRECTIVES">Directives</a></h3>
+<dl class="man">
+<dt><b>Cc </b><i>cc-address@domain.com</i>
+<dd style="margin-left: 5.0em">Specifies an additional recipient for all email notifications.
+<dt><b>From </b><i>from-address@domain.com</i>
+<dd style="margin-left: 5.0em">Specifies the sender of email notifications.
+<dt><b>Sendmail </b><i>sendmail command and options</i>
+<dd style="margin-left: 5.0em">Specifies the sendmail command to use when sending email notifications.
+Only one <i>Sendmail</i> or <i>SMTPServer</i> line may be present in the <b>mailto.conf</b> file.
+If multiple lines are present, only the last one is used.
+<dt><b>SMTPServer </b><i>servername</i>
+<dd style="margin-left: 5.0em">Specifies a SMTP server to send email notifications to.
+Only one <i>Sendmail</i> or <i>SMTPServer</i> line may be present in the <b>mailto.conf</b> file.
+If multiple lines are present, only the last one is used.
+<dt><b>Subject </b><i>subject-prefix</i>
+<dd style="margin-left: 5.0em">Specifies a prefix string for the subject line of an email notification.
</dl>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-classes.conf.html?TOPIC=Man+Pages'>classes.conf(5)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>,
-<a href='man-mime.convs.html?TOPIC=Man+Pages'>mime.convs(5)</a>, <a href='man-mime.types.html?TOPIC=Man+Pages'>mime.types(5)</a>, <a href='man-printers.conf.html?TOPIC=Man+Pages'>printers.conf(5)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,29 +10,46 @@
<h2 class="title"><a name="NAME">Name</a></h2>
mime.convs - mime type conversion file for cups
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <i>mime.convs</i> file defines the filters that are available
-for converting files from one format to another. The standard
-filters support text, PDF, PostScript, HP-GL/2, and many types of
-image files.
-<p>Additional filters can be added to the <i>mime.convs</i> file or
-(preferably) to other files in the CUPS configuration directory.
-<p>Each line in the <i>mime.convs</i> file is a comment, blank, or filter
-line. Comment lines start with the # character. Filter lines specify
-the source and destination MIME types along with a relative cost
-associated with the filter and the filter to run:
+The <b>mime.convs</b> file defines the filters that are available for converting files from one format to another.
+The standard filters support text, PDF, PostScript, and many types of image files.
+<p>Additional filters are specified in files with the extension <i>.convs</i> in the CUPS configuration directory.
+<p>Each line in the <b>mime.convs</b> file is a comment, blank, or filter
+line.
+Comment lines start with the # character.
+Filter lines specify the source and destination MIME types along with a relative cost associated with the filter and the filter to run:
+<pre class="man">
+
+ source/type destination/type cost filter
+
+</pre>
+The <i>source/type</i> field specifies the source MIME media type that is consumed by the filter.
+<p>The <i>destination/type</i> field specifies the destiantion MIME media type that is produced by the filter.
+<p>The <i>cost</i> field specifies the relative cost for running the filter.
+A value of 100 means that the filter uses a large amount of resources while a value of 0 means that the filter uses very few resources.
+<p>The <i>filter</i> field specifies the filter program filename.
+Filenames are relative to the CUPS filter directory.
+<h2 class="title"><a name="FILES">Files</a></h2>
+<i>/etc/cups</i> - Typical CUPS configuration directory.
<br>
-<pre>
+<i>/usr/lib/cups/filter</i> - Typical CUPS filter directory.
+<br>
+<i>/usr/libexec/cups/filter</i> - CUPS filter directory on OS X.
+<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+Define a filter that converts PostScript documents to CUPS Raster format:
+<pre class="man">
+
+ application/vnd.cups-postscript application/vnd.cups-raster 50 pstoraster
-super/type super/type cost filter
-application/postscript application/vnd.cups-raster 50 pstoraster
</pre>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-classes.conf.html?TOPIC=Man+Pages'>classes.conf(5)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>,
-<a href='man-mime.types.html?TOPIC=Man+Pages'>mime.types(5)</a>, <a href='man-printers.conf.html?TOPIC=Man+Pages'>printers.conf(5)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5),</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-cupsfilter.html?TOPIC=Man+Pages"><b>cupsfilter</b>(8),</a>
+<a href="man-mime.types.html?TOPIC=Man+Pages"><b>mime.types</b>(5),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,109 +10,88 @@
<h2 class="title"><a name="NAME">Name</a></h2>
mime.types - mime type description file for cups
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <i>mime.types</i> file defines the recognized file types.
-<p>Additional file types can be added to <i>mime.types</i> or
-(preferably) in additional files in the CUPS configuration
-directory with the extension ".types".
-<p>Each line in the <i>mime.types</i> file is a comment, blank, or
-rule line. Comment lines start with the # character. Rule lines
-start with the MIME type name and are optionally followed by a
-series of file recognition rules that are used to automatically
-identify print and web files:
-<br>
-<pre>
+The <b>mime.types</b> file defines the recognized file types.
+<p>Additional file types are specified in files with the extension <i>.types</i> in the CUPS configuration directory.
+<p>Each line in the <b>mime.types</b> file is a comment, blank, or rule line.
+Comment lines start with the # character.
+Rule lines start with the MIME media type and are optionally followed by a series of file recognition rules:
+<pre class="man">
+
+ <i>mime/type </i>[ <i>rule </i>... <i>rule </i>]
+
+</pre>
+Rules can be extended over multiple lines using the backslash character (\):
+<pre class="man">
+
+ <i>mime/type </i>[ <i>really-really-really-long-rule </i>... <b>\
+ </b><i>rule </i>]
- super/type rule [ ... ruleN]
</pre>
-MIME type names are case-insensitive and are sorted in ascending alphanumeric
-order for the purposes of matching. See the "TYPE MATCHING AND PRIORITY"
-section for more information.
-<p>The rules may be grouped using parenthesis, joined using "+" for a
-logical AND and "," or whitespace for a logical OR, and negated using
-"!".
-<h2 class="title"><a name="RULES">Rules</a></h2>
+MIME media types specified by the <i>mime/type</i> field are case-insensitive and are sorted in ascending alphanumeric order for the purposes of matching.
+See the "TYPE MATCHING AND PRIORITY" section for more information.
+<p>The rules may be grouped using parenthesis, joined using "+" for a logical AND, joined using "," or whitespace for a logical OR, and negated using "!".
+<h3><a name="RULES">Rules</a></h3>
Rules take two forms - a filename extension by itself and functions with test
-values inside parenthesis. The following functions are available:
-<dl>
-<dt>match("pattern")
-</dt>
-<dd></dd>
-<dd>Pattern match on filename
-</dd>
-<dt>ascii(offset,length)
-</dt>
-<dd></dd>
-<dd>True if bytes are valid printable ASCII (CR, NL, TAB, BS, 32-126)
-</dd>
-<dt>printable(offset,length)
-</dt>
-<dd></dd>
-<dd>True if bytes are printable 8-bit chars (CR, NL, TAB, BS, 32-126, 128-254)
-</dd>
-<dt>priority(number)
-</dt>
-<dd></dd>
-<dd>Specifies the relative priority of this MIME type. The default priority is 100.
+values inside parenthesis.
+The following functions are available:
+<dl class="man">
+<dt><b>match("</b><i>pattern</i><b>")</b>
+<dd style="margin-left: 5.0em">True if the filename matches the given shell wildcard <i>pattern</i>.
+<dt><b>ascii(</b><i>offset</i><b>,</b><i>length</i><b>)</b>
+<dd style="margin-left: 5.0em">True if the <i>length</i> bytes starting at <i>offset</i> are valid printable ASCII (CR, NL, TAB, BS, 32-126).
+<dt><b>printable(</b><i>offset</i><b>,</b><i>length</i><b>)</b>
+<dd style="margin-left: 5.0em">True if the <i>length</i> bytes starting at <i>offset</i> are printable 8-bit chars (CR, NL, TAB, BS, 32-126, 128-254).
+<dt><b>priority(</b><i>number</i><b>)</b>
+<dd style="margin-left: 5.0em">Specifies the relative priority of this MIME media type.
+The default priority is 100.
Larger values have higher priority while smaller values have lower priority.
-</dd>
-<dt>string(offset,"string")
-</dt>
-<dd></dd>
-<dd>True if bytes are identical to string
-</dd>
-<dt>istring(offset,"string")
-</dt>
-<dd></dd>
-<dd>True if a case-insensitive comparison of the bytes is identical
-</dd>
-<dt>char(offset,value)
-</dt>
-<dd></dd>
-<dd>True if byte is identical
-</dd>
-<dt>short(offset,value)
-</dt>
-<dd></dd>
-<dd>True if 16-bit integer is identical
-</dd>
-<dt>int(offset,value)
-</dt>
-<dd></dd>
-<dd>True if 32-bit integer is identical
-</dd>
-<dt>locale("string")
-</dt>
-<dd></dd>
-<dd>True if current locale matches string
-</dd>
-<dt>contains(offset,range,"string")
-</dt>
-<dd></dd>
-<dd>True if the range contains the string
-</dd>
+<dt><b>string(</b><i>offset</i><b>,"</b><i>string</i><b>")</b>
+<dd style="margin-left: 5.0em">True if the bytes starting at <i>offset</i> are identical to <i>string</i>.
+<dt><b>istring(</b><i>offset</i><b>,"</b><i>string</i><b>")</b>
+<dd style="margin-left: 5.0em">True if the bytes starting at <i>offset</i> match <i>string</i> without respect to case.
+<dt><b>char(</b><i>offset</i><b>,</b><i>value</i><b>)</b>
+<dd style="margin-left: 5.0em">True if the byte at <i>offset</i> is identical to <i>value</i>.
+<dt><b>short(</b><i>offset</i><b>,</b><i>value</i><b>)</b>
+<dd style="margin-left: 5.0em">True if the 16-bit big-endian integer at <i>offset</i> is identical to <i>value</i>.
+<dt><b>int(</b><i>offset</i><b>,</b><i>value</i><b>)</b>
+<dd style="margin-left: 5.0em">True if the 32-bit big-endian integer at <i>offset</i> is identical to <i>value</i>.
+<dt><b>locale("</b><i>string</i><b>")</b>
+<dd style="margin-left: 5.0em">True if current locale matches <i>string</i>.
+<dt><b>contains(</b><i>offset</i><b>,</b><i>range</i><b>,"</b><i>string</i><b>")</b>
+<dd style="margin-left: 5.0em">True if the bytes starting at <i>offset</i> for <i>range</i> bytes contains <i>string</i>.
</dl>
-<h2 class="title"><a name="STRING_CONSTANTS">String Constants</a></h2>
-String constants can be specified inside quotes ("") for strings
-containing whitespace and angle brackets (&lt;>) for hexadecimal
-strings.
-<h2 class="title"><a name="TYPE_MATCHING_AND_PRIORITY">Type Matching And Priority</a></h2>
-When CUPS needs to determine the MIME type of a given file, it checks every
-MIME type defined in the .types files. When two types have the same matching
-rules, the type chosen will depend on the type name and priority, with higher-
-priority types being used over lower-priority ones. If the types have the same
-priority, the type names are sorted alphanumerically in ascending order and the
-first type is chosen.
+<h3><a name="STRING_CONSTANTS">String Constants</a></h3>
+String constants can be specified inside quotes ("") for strings containing whitespace and angle brackets (&lt;>) for hexadecimal strings.
+<h3><a name="TYPE_MATCHING_AND_PRIORITY">Type Matching And Priority</a></h3>
+When CUPS needs to determine the MIME media type of a given file, it checks every MIME media type defined in the <i>.types</i> files.
+When two or more types match a given file, the type chosen will depend on the type name and priority, with higher-priority types being used over lower-priority ones.
+If the types have the same priority, the type names are sorted alphanumerically in ascending order and the first type is chosen.
<p>For example, if two types "text/bar" and "text/foo" are defined as matching the
extension "doc", normally the type "text/bar" will be chosen since its name is
-alphanumerically smaller than "text/foo". However, if "text/foo" also defines a
-higher priority than "text/bar", "text/foo" will be chosen instead.
+alphanumerically smaller than "text/foo".
+However, if "text/foo" also defines a higher priority than "text/bar", "text/foo" will be chosen instead.
+<h2 class="title"><a name="FILES">Files</a></h2>
+<i>/etc/cups</i> - Typical CUPS configuration directory.
+<h2 class="title"><a name="EXAMPLES">Examples</a></h2>
+Define two MIME media types for raster data, with one being a subset with higher priority:
+<pre class="man">
+
+ application/vnd.cups-raster string(0,"RaSt") string(0,"tSaR") \
+ string(0,"RaS2") string(0,"2SaR") \
+ string(0,"RaS3") string(0,"3SaR")
+
+ image/pwg-raster string(0,"RaS2") + \
+ string(4,PwgRaster&lt;00>) priority(150)
+</pre>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-classes.conf.html?TOPIC=Man+Pages'>classes.conf(5)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>,
-<a href='man-mime.convs.html?TOPIC=Man+Pages'>mime.convs(5)</a>, <a href='man-printers.conf.html?TOPIC=Man+Pages'>printers.conf(5)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5),</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-cupsfilter.html?TOPIC=Man+Pages"><b>cupsfilter</b>(8),</a>
+<a href="man-mime.convs.html?TOPIC=Man+Pages"><b>mime.convs</b>(5),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,164 +10,28 @@
<h2 class="title"><a name="NAME">Name</a></h2>
notifier - cups notification interface
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>notifier
-</b><i>recipient
-</i>[
-<i>user-data
-</i>]
+<b>notifier</b>
+<i>recipient</i>
+[
+<i>user-data</i>
+]
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The CUPS notifier interface provides a standard method for adding support for
-new event notification methods to CUPS. Each notifier delivers one or more IPP
-events from the standard input to the specified recipient.
-<p>Notifiers <b>must</b> read IPP messages from the standard input using the
-ippNew and ippReadFile functions and exit on error. Notifiers are encouraged to
-exit after a suitable period of inactivity, however they may exit after reading
-the first message or stay running until an error is seen.
-<h2 class="title"><a name="LOG_MESSAGES">Log Messages</a></h2>
-Messages sent to stderr are generally logged to the current <i>ErrorLog</i>.
-Each line begins with a standard prefix:
-
-<dl>
-<dt>ALERT: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "alert" log level.
-
-</dd>
-<dt>CRIT: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "critical" log level.
-
-</dd>
-<dt>DEBUG: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "debug" log level.
-
-</dd>
-<dt>DEBUG2: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "debug2" log level.
-
-</dd>
-<dt>EMERG: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "emergency" log level.
-
-</dd>
-<dt>ERROR: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "error" log level.
-
-</dd>
-<dt>INFO: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute. If the current <i>LogLevel</i>
-is set to "debug2", also adds the specified message to the
-current <i>ErrorLog</i> using the "info" log level.
-
-</dd>
-<dt>NOTICE: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "notice" log level.
-
-</dd>
-<dt>WARNING: message
-</dt>
-<dd></dd>
-<dd>Sets the printer-state-message attribute and adds the specified
-message to the current <i>ErrorLog</i> using the "warning" log level.
-
-</dd>
-</dl>
-<h2 class="title"><a name="ENVIRONMENT_VARIABLES">Environment Variables</a></h2>
-The following environment variables are defined by the CUPS server when
-executing the notifier:
-
-<dl>
-<dt>CHARSET
-</dt>
-<dd></dd>
-<dd>The default text character set, typically utf-8.
-
-</dd>
-<dt>CUPS_CACHEDIR
-</dt>
-<dd></dd>
-<dd>The directory for semi-persistent cache files can be found.
-
-</dd>
-<dt>CUPS_DATADIR
-</dt>
-<dd></dd>
-<dd>The directory where data files can be found.
-
-</dd>
-<dt>CUPS_FILETYPE
-</dt>
-<dd></dd>
-<dd>The type of file being printed: "job-sheet" for a banner page and "document"
-for a regular print file.
-
-</dd>
-<dt>CUPS_SERVERROOT
-</dt>
-<dd></dd>
-<dd>The root directory of the server.
-
-</dd>
-<dt>LANG
-</dt>
-<dd></dd>
-<dd>The default language locale (typically C or en).
-
-</dd>
-<dt>PATH
-</dt>
-<dd></dd>
-<dd>The standard execution path for external programs that may be run by
-the filter.
-
-</dd>
-<dt>SOFTWARE
-</dt>
-<dd></dd>
-<dd>The name and version number of the server (typically CUPS/1.2).
-
-</dd>
-<dt>TZ
-</dt>
-<dd></dd>
-<dd>The timezone of the server.
-
-</dd>
-<dt>USER
-</dt>
-<dd></dd>
-<dd>The user executing the filter, typically "lp"; consult the <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>
-file for the current setting.
-
-</dd>
-</dl>
+The CUPS notifier interface provides a standard method for adding support for new event notification methods to CUPS.
+Each notifier delivers one or more IPP events from the standard input to the specified recipient.
+<p>Notifiers <b>MUST</b> read IPP messages from the standard input using the
+<b>ippNew</b>()
+and
+<b>ippReadFile</b>()
+functions and exit on error.
+Notifiers are encouraged to exit after a suitable period of inactivity, however they may exit after reading the first message or stay running until an error is seen.
+Notifiers inherit the environment and can use the logging mechanism documented in
+<a href="man-filter.html?TOPIC=Man+Pages"><b>filter</b>(7).</a>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-backend.html?TOPIC=Man+Pages'>backend(7)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-filter.html?TOPIC=Man+Pages'>filter(7)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-filter.html?TOPIC=Man+Pages"><b>filter</b>(7),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -8,58 +8,84 @@
<body>
<h1 class="title">ppdc(1)</h1>
<h2 class="title"><a name="NAME">Name</a></h2>
-ppdc - cups ppd compiler
+ppdc - cups ppd compiler (deprecated)
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>ppdc
-</b>[ -D
-<i>name[=value]
-</i>] [ -I
-<i>include-directory
-</i>] [ -c
-<i>message-catalog
-</i>] [ -d
-<i>output-directory
-</i>] [ -l
-<i>language(s)
-</i>] [-m] [-t] [ -v ] [ -z ] [ --cr ] [ --crlf ] [ --lf ]
-<i>source-file
-</i><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>ppdc</i> compiles PPDC source files into one or more PPD
-files. <b>This program is deprecated and will be removed in a future release of
-CUPS.</b>
-<p>The <i>-D</i> option sets the named variable for use in the
-source file. It is equivalent to using the #define directive
-in the source file.
-<p>The <i>-I</i> option specifies an alternate include directory;
-multiple <i>-I</i> options can be supplied to add additional
-directories.
-<p>The <i>-c</i> option specifies a single message catalog file in GNU
-gettext source format (filename.po) to be used for localization.
-<p>The <i>-d</i> option specifies the output directory for PPD
-files. The default output directory is "ppd".
-<p>The <i>-l</i> option specifies one or more languages to use when
-localizing the PPD file(s). The default language is "en"
-(English). Separate multiple languages with commas, for example
-"de_DE,en_UK,es_ES,es_MX,es_US,fr_CA,fr_FR,it_IT" will create PPD
-files with German, UK English, Spanish (Spain, Mexico, and US),
-French (France and Canada), and Italian languages in each file.
-<p>The <i>-m</i> option specifies that the output filename should be
-based on the ModelName value instead of FileName or PCFilenName.
-<p>The <i>-t</i> option specifies that PPD files should be tested instead
-of generated.
-<p>The <i>-v</i> option provides more verbose output, basically a
-running status of which files are being loaded or written.
-<p>The <i>-z</i> option generates compressed PPD files (filename.ppd.gz).
+<b>ppdc</b>
+[
+<b>-D </b><i>name</i>[<b>=</b><i>value</i>]
+] [
+<b>-I</b>
+<i>include-directory</i>
+] [
+<b>-c</b>
+<i>message-catalog</i>
+] [
+<b>-d</b>
+<i>output-directory</i>
+] [
+<b>-l</b>
+<i>language(s)</i>
+] [
+<b>-m</b>
+] [
+<b>-t</b>
+] [
+<b>-v</b>
+] [
+<b>-z</b>
+] [
+<b>--cr</b>
+] [
+<b>--crlf</b>
+] [
+<b>--lf</b>
+]
+<i>source-file</i>
+<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
+<b>ppdc</b> compiles PPDC source files into one or more PPD files.
+<b>This program is deprecated and will be removed in a future release of CUPS.</b>
+<h2 class="title"><a name="OPTIONS">Options</a></h2>
+<b>ppdc</b> supports the following options:
+<dl class="man">
+<dt><b>-D </b><i>name</i>[<b>=</b><i>value</i>]
+<dd style="margin-left: 5.0em">Sets the named variable for use in the source file.
+It is equivalent to using the <i>#define</i> directive in the source file.
+<dt><b>-I </b><i>include-directory</i>
+<dd style="margin-left: 5.0em">Specifies an alternate include directory.
+Multiple <i>-I</i> options can be supplied to add additional directories.
+<dt><b>-c </b><i>message-catalog</i>
+<dd style="margin-left: 5.0em">Specifies a single message catalog file in GNU gettext (filename.po) or Apple strings (filename.strings) format to be used for localization.
+<dt><b>-d </b><i>output-directory</i>
+<dd style="margin-left: 5.0em">Specifies the output directory for PPD files.
+The default output directory is "ppd".
+<dt><b>-l </b><i>language(s)</i>
+<dd style="margin-left: 5.0em">Specifies one or more languages to use when localizing the PPD file(s).
+The default language is "en" (English).
+Separate multiple languages with commas, for example "de_DE,en_UK,es_ES,es_MX,es_US,fr_CA,fr_FR,it_IT" will create PPD files with German, UK English, Spanish (Spain, Mexico, and US), French (France and Canada), and Italian languages in each file.
+<dt><b>-m</b>
+<dd style="margin-left: 5.0em">Specifies that the output filename should be based on the ModelName value instead of FileName or PCFilenName.
+<dt><b>-t</b>
+<dd style="margin-left: 5.0em">Specifies that PPD files should be tested instead of generated.
+<dt><b>-v</b>
+<dd style="margin-left: 5.0em">Specifies verbose output, basically a running status of which files are being loaded or written.
+<b>-z</b>
+Generates compressed PPD files (filename.ppd.gz).
The default is to generate uncompressed PPD files.
-<p>The <i>--cr</i>, <i>--crlf</i>, and <i>--lf</i> options specify the
-line ending to use - carriage return, carriage return and line feed,
-or line feed. The default is to use the line feed character alone.
+<dt><b>--cr</b>
+<dd style="margin-left: 5.0em"><dt><b>--crlf</b>
+<dd style="margin-left: 5.0em"><dt><b>--lf</b>
+<dd style="margin-left: 5.0em">Specifies the line ending to use - carriage return, carriage return and line feed, or line feed alone.
+The default is to use the line feed character alone.
+</dl>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-ppdhtml(1), ppdi(1), ppdmerge(1), ppdpo(1), ppdcfile(5)
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-ppdhtml.html?TOPIC=Man+Pages"><b>ppdhtml</b>(1),</a>
+<a href="man-ppdi.html?TOPIC=Man+Pages"><b>ppdi</b>(1),</a>
+<a href="man-ppdmerge.html?TOPIC=Man+Pages"><b>ppdmerge</b>(1),</a>
+<a href="man-ppdpo.html?TOPIC=Man+Pages"><b>ppdpo</b>(1),</a>
+<a href="man-ppdcfile.html?TOPIC=Man+Pages"><b>ppdcfile</b>(5),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,217 +10,86 @@
<h2 class="title"><a name="NAME">Name</a></h2>
ppdcfile - cups ppd compiler source file format
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The CUPS PPD compiler reads meta files that contain descriptions
-of one or more PPD files to be generated by <i>ppdc</i>. This man
-page provides a quick reference to the supported keywords and
-should be used in conjunction with the online help for CUPS.
-<p>The source file format is plain ASCII text that can be edited
-using your favorite text editor. Comments are supported using
-the C (/* ... */) and C++ (// ...) comment mechanisms.
-<p>Printer driver information can be grouped and shared using
-curly braces ({ ... }); PPD files are written when a close
-brace or end-of-file is seen and a PCFileName directive has been
-defined.
-<p>Directives may be placed anywhere on a line and are followed by
-one or more values. The following is a list of the available
-directives and the values they accept:
-<dl>
-<dt><b>#define</b> name value
-</dt>
-<dd></dd>
-<dt><b>#elif</b> {name | value}
-</dt>
-<dd></dd>
-<dt><b>#else</b>
-</dt>
-<dd></dd>
-<dt><b>#endif</b>
-</dt>
-<dd></dd>
-<dt><b>#font</b> name encoding "version" charset status
-</dt>
-<dd></dd>
-<dt><b>#if</b> {name | value}
-</dt>
-<dd></dd>
-<dt><b>#include</b> &lt;filename>
-</dt>
-<dd></dd>
-<dt><b>#include</b> "filename"
-</dt>
-<dd></dd>
-<dt><b>#media</b> name width length
-</dt>
-<dd></dd>
-<dt><b>#media</b> "name/text" width length
-</dt>
-<dd></dd>
-<dt><b>#po</b> locale "filename.po"
-</dt>
-<dd></dd>
-<dt><b>Attribute</b> name "" value
-</dt>
-<dd></dd>
-<dt><b>Attribute</b> name keyword value
-</dt>
-<dd></dd>
-<dt><b>Attribute</b> name "keyword/text" value
-</dt>
-<dd></dd>
-<dt><b>Choice</b> name "code"
-</dt>
-<dd></dd>
-<dt><b>Choice</b> "name/text" "code"
-</dt>
-<dd></dd>
-<dt><b>ColorDevice</b> boolean-value
-</dt>
-<dd></dd>
-<dt><b>ColorModel</b> name colorspace colororder compression
-</dt>
-<dd></dd>
-<dt><b>ColorModel</b> "name/text" colorspace colororder compression
-</dt>
-<dd></dd>
-<dt><b>ColorProfile</b> resolution/mediatype gamma density matrix
-</dt>
-<dd></dd>
-<dt><b>Copyright</b> "text"
-</dt>
-<dd></dd>
-<dt><b>CustomMedia</b> name width length left bottom right top "size-code" "region-code"
-</dt>
-<dd></dd>
-<dt><b>CustomMedia</b> "name/text" width length left bottom right top "size-code" "region-code"
-</dt>
-<dd></dd>
-<dt><b>Cutter</b> boolean-value
-</dt>
-<dd></dd>
-<dt><b>Darkness</b> temperature name
-</dt>
-<dd></dd>
-<dt><b>Darkness</b> temperature "name/text"
-</dt>
-<dd></dd>
-<dt><b>DriverType</b> type
-</dt>
-<dd></dd>
-<dt><b>Duplex</b> type
-</dt>
-<dd></dd>
-<dt><b>Filter</b> mime-type cost program
-</dt>
-<dd></dd>
-<dt><b>Finishing</b> name
-</dt>
-<dd></dd>
-<dt><b>Finishing</b> "name/text"
-</dt>
-<dd></dd>
-<dt><b>Font</b> *
-</dt>
-<dd></dd>
-<dt><b>Font</b> name encoding "version" charset status
-</dt>
-<dd></dd>
-<dt><b>Group</b> name
-</dt>
-<dd></dd>
-<dt><b>Group</b> "name/text"
-</dt>
-<dd></dd>
-<dt><b>HWMargins</b> left bottom right top
-</dt>
-<dd></dd>
-<dt><b>InputSlot</b> position name
-</dt>
-<dd></dd>
-<dt><b>InputSlot</b> position "name/text"
-</dt>
-<dd></dd>
-<dt><b>Installable</b> name
-</dt>
-<dd></dd>
-<dt><b>Installable</b> "name/text"
-</dt>
-<dd></dd>
-<dt><b>LocAttribute</b> name "keyword/text" value
-</dt>
-<dd></dd>
-<dt><b>ManualCopies</b> boolean-value
-</dt>
-<dd></dd>
-<dt><b>Manufacturer</b> "name"
-</dt>
-<dd></dd>
-<dt><b>MaxSize</b> width length
-</dt>
-<dd></dd>
-<dt><b>MediaSize</b> name
-</dt>
-<dd></dd>
-<dt><b>MediaType</b> type name
-</dt>
-<dd></dd>
-<dt><b>MediaType</b> type "name/text"
-</dt>
-<dd></dd>
-<dt><b>MinSize</b> width length
-</dt>
-<dd></dd>
-<dt><b>ModelName</b> "name"
-</dt>
-<dd></dd>
-<dt><b>ModelNumber</b> number
-</dt>
-<dd></dd>
-<dt><b>Option</b> name type section order
-</dt>
-<dd></dd>
-<dt><b>Option</b> "name/text" type section order
-</dt>
-<dd></dd>
-<dt><b>PCFileName</b> "filename.ppd"
-</dt>
-<dd></dd>
-<dt><b>Resolution</b> colorspace bits-per-color row-count row-feed row-step name
-</dt>
-<dd></dd>
-<dt><b>Resolution</b> colorspace bits-per-color row-count row-feed row-step "name/text"
-</dt>
-<dd></dd>
-<dt><b>SimpleColorProfile</b> resolution/mediatype density yellow-density red-density gamma red-adjust green-adjust blue-adjust
-</dt>
-<dd></dd>
-<dt><b>Throughput</b> pages-per-minute
-</dt>
-<dd></dd>
-<dt><b>UIConstraints</b> "*Option1 *Option2"
-</dt>
-<dd></dd>
-<dt><b>UIConstraints</b> "*Option1 Choice1 *Option2"
-</dt>
-<dd></dd>
-<dt><b>UIConstraints</b> "*Option1 *Option2 Choice2"
-</dt>
-<dd></dd>
-<dt><b>UIConstraints</b> "*Option1 Choice1 *Option2 Choice2"
-</dt>
-<dd></dd>
-<dt><b>VariablePaperSize</b> boolean-value
-</dt>
-<dd></dd>
-<dt><b>Version</b> number
-</dt>
-<dd></dd>
-</dl>
+The CUPS PPD compiler reads meta files that contain descriptions of one or more PPD files to be generated by
+<a href="man-ppdc.html?TOPIC=Man+Pages"><b>ppdc</b>(1).</a>
+This man page provides a quick reference to the supported keywords and should be used in conjunction with the online help for CUPS.
+<p>The source file format is plain ASCII text that can be edited using your favorite text editor. Comments are supported using the C (/* ... */) and C++ (// ...) comment mechanisms.
+<p>Printer driver information can be grouped and shared using curly braces ({ ... }); PPD files are written when a close brace or end-of-file is seen and a PCFileName directive has been defined.
+<p>Directives may be placed anywhere on a line and are followed by one or more values. The following is a list of the available directives and the values they accept:
+<dl class="man">
+<dt><b>#define </b><i>name value</i>
+<dd style="margin-left: 5.0em"><dt><b>#elif </b>{<i>name </i>| <i>value</i>}
+<dd style="margin-left: 5.0em"><dt><b>#else</b>
+<dd style="margin-left: 5.0em"><dt><b>#endif</b>
+<dd style="margin-left: 5.0em"><dt><b>#font </b><i>name encoding "version" charset status</i>
+<dd style="margin-left: 5.0em"><dt><b>#if </b>{<i>name </i>| <i>value</i>}
+<dd style="margin-left: 5.0em"><dt><b>#include &lt;</b><i>filename</i><b>></b>
+<dd style="margin-left: 5.0em"><dt><b>#include "</b><i>filename</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>#media </b><i>name width length</i>
+<dd style="margin-left: 5.0em"><dt><b>#media "</b><i>name</i><b>/</b><i>text</i><b>" </b><i>width length</i>
+<dd style="margin-left: 5.0em"><dt><b>#po </b><i>locale </i><b>"</b><i>filename</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>Attribute </b><i>name </i><b>"" </b><i>value</i>
+<dd style="margin-left: 5.0em"><dt><b>Attribute </b><i>name keyword value</i>
+<dd style="margin-left: 5.0em"><dt><b>Attribute </b><i>name </i><b>"</b><i>keyword</i><b>/</b><i>text</i><b>" </b><i>value</i>
+<dd style="margin-left: 5.0em"><dt><b>Choice </b><i>name </i><b>"</b><i>code</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>Choice "</b><i>name</i><b>/</b><i>text</i><b>" "</b><i>code</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>ColorDevice </b><i>boolean-value</i>
+<dd style="margin-left: 5.0em"><dt><b>ColorModel </b><i>name colorspace colororder compression</i>
+<dd style="margin-left: 5.0em"><dt><b>ColorModel "</b><i>name</i><b>/</b><i>text</i><b>" </b><i>colorspace colororder compression</i>
+<dd style="margin-left: 5.0em"><dt><b>ColorProfile </b><i>resolution</i><b>/</b><i>mediatype gamma density matrix</i>
+<dd style="margin-left: 5.0em"><dt><b>Copyright "</b><i>text</i>"
+<dd style="margin-left: 5.0em"><dt><b>CustomMedia </b><i>name width length left bottom right top </i><b>"</b><i>size-code</i><b>" "</b><i>region-code</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>CustomMedia "</b><i>name</i><b>/</b><i>text</i><b>" </b><i>width length left bottom right top </i><b>"</b><i>size-code</i><b>" "</b><i>region-code</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>Cutter </b><i>boolean-value</i>
+<dd style="margin-left: 5.0em"><dt><b>Darkness </b><i>temperature name</i>
+<dd style="margin-left: 5.0em"><dt><b>Darkness </b><i>temperature </i><b>"</b><i>name</i><b>/</b><i>text</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>DriverType </b><i>type</i>
+<dd style="margin-left: 5.0em"><dt><b>Duplex </b><i>type</i>
+<dd style="margin-left: 5.0em"><dt><b>Filter Imime-type cost program</b>
+<dd style="margin-left: 5.0em"><dt><b>Finishing </b><i>name</i>
+<dd style="margin-left: 5.0em"><dt><b>Finishing "</b><i>name</i><b>/</b><i>text</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>Font *</b>
+<dd style="margin-left: 5.0em"><dt><b>Font </b><i>name encoding </i><b>"</b><i>version</i><b>" </b><i>charset status</i>
+<dd style="margin-left: 5.0em"><dt><b>Group </b><i>name</i>
+<dd style="margin-left: 5.0em"><dt><b>Group "</b><i>name</i><b>/</b><i>text</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>HWMargins </b><i>left bottom right top</i>
+<dd style="margin-left: 5.0em"><dt><b>InputSlot </b><i>position name</i>
+<dd style="margin-left: 5.0em"><dt><b>InputSlot </b><i>position </i><b>"</b><i>name</i><b>/</b><i>text</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>Installable </b><i>name</i>
+<dd style="margin-left: 5.0em"><dt><b>Installable "</b><i>name</i><b>/</b><i>text</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>LocAttribute </b><i>name </i><b>"</b><i>keyword</i><b>/</b><i>text</i><b>" </b><i>value</i>
+<dd style="margin-left: 5.0em"><dt><b>ManualCopies </b><i>boolean-value</i>
+<dd style="margin-left: 5.0em"><dt><b>Manufacturer "</b><i>name</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>MaxSize </b><i>width length</i>
+<dd style="margin-left: 5.0em"><dt><b>MediaSize </b><i>name</i>
+<dd style="margin-left: 5.0em"><dt><b>MediaType </b><i>type name</i>
+<dd style="margin-left: 5.0em"><dt><b>MediaType </b><i>type </i><b>"</b><i>name</i><b>/</b><i>text</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>MinSize </b><i>width length</i>
+<dd style="margin-left: 5.0em"><dt><b>ModelName "</b><i>name</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>ModelNumber </b><i>number</i>
+<dd style="margin-left: 5.0em"><dt><b>Option </b><i>name type section order</i>
+<dd style="margin-left: 5.0em"><dt><b>Option "</b><i>name</i><b>/</b><i>text</i><b>" </b><i>type section order</i>
+<dd style="margin-left: 5.0em"><dt><b>PCFileName "</b><i>filename.ppd</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>Resolution </b><i>colorspace bits-per-color row-count row-feed row-step name</i>
+<dd style="margin-left: 5.0em"><dt><b>Resolution </b><i>colorspace bits-per-color row-count row-feed row-step </i><b>"</b><i>name</i><b>/</b><i>text</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>SimpleColorProfile </b><i>resolution</i><b>/</b><i>mediatype density yellow-density red-density gamma red-adjust green-adjust blue-adjust</i>
+<dd style="margin-left: 5.0em"><dt><b>Throughput </b><i>pages-per-minute</i>
+<dd style="margin-left: 5.0em"><dt><b>UIConstraints "</b><i>*Option1 *Option2</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>UIConstraints "</b><i>*Option1 Choice1 *Option2</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>UIConstraints "</b><i>*Option1 *Option2 Choice2</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>UIConstraints "</b><i>*Option1 Choice1 *Option2 Choice2</i><b>"</b>
+<dd style="margin-left: 5.0em"><dt><b>VariablePaperSize </b><i>boolean-value</i>
+<dd style="margin-left: 5.0em"><dt><b>Version </b><i>number</i>
+<dd style="margin-left: 5.0em"></dl>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-ppdc(1), ppdhtml(1), ppdi(1), ppdmerge(1), ppdpo(1)
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-ppdc.html?TOPIC=Man+Pages"><b>ppdc</b>(1),</a>
+<a href="man-ppdhtml.html?TOPIC=Man+Pages"><b>ppdhtml</b>(1),</a>
+<a href="man-ppdi.html?TOPIC=Man+Pages"><b>ppdi</b>(1),</a>
+<a href="man-ppdmerge.html?TOPIC=Man+Pages"><b>ppdmerge</b>(1),</a>
+<a href="man-ppdpo.html?TOPIC=Man+Pages"><b>ppdpo</b>(1),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -8,31 +8,38 @@
<body>
<h1 class="title">ppdhtml(1)</h1>
<h2 class="title"><a name="NAME">Name</a></h2>
-ppdhtml - cups html summary generator
+ppdhtml - cups html summary generator (deprecated)
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>ppdhtml
-</b>[ -D
-<i>name[=value]
-</i>] [ -I
-<i>include-directory
-</i>]
-<i>source-file
-</i><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>ppdhtml</i> reads a driver information file and produces a
-HTML summary page that lists all of the drivers in a file and
-the supported options.
-<p>The <i>-D</i> option sets the named variable for use in the
-source file. It is equivalent to using the #define directive
-in the source file.
-<p>The <i>-I</i> option specifies an alternate include directory;
-multiple <i>-I</i> options can be supplied to add additional
-directories.
+<b>ppdhtml</b>
+[
+<b>-D </b><i>name</i>[<b>=</b><i>value</i>]
+] [
+<b>-I</b>
+<i>include-directory</i>
+]
+<i>source-file</i>
+<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
+<b>ppdhtml</b> reads a driver information file and produces a HTML summary page that lists all of the drivers in a file and the supported options.
+<b>This program is deprecated and will be removed in a future release of CUPS.</b>
+<h2 class="title"><a name="OPTIONS">Options</a></h2>
+<b>ppdhtml</b> supports the following options:
+<dl class="man">
+<dt><b>-D </b><i>name</i>[<b>=</b><i>value</i>]
+<dd style="margin-left: 5.0em">Sets the named variable for use in the source file.
+It is equivalent to using the <i>#define</i> directive in the source file.
+<dt><b>-I </b><i>include-directory</i>
+<dd style="margin-left: 5.0em">Specifies an alternate include directory.
+Multiple <i>-I</i> options can be supplied to add additional directories.
+</dl>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-ppdc(1), ppdcfile(5), ppdi(1), ppdmerge(1), ppdpo(1)
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-ppdc.html?TOPIC=Man+Pages"><b>ppdc</b>(1),</a>
+<a href="man-ppdcfile.html?TOPIC=Man+Pages"><b>ppdcfile</b>(5),</a>
+<a href="man-ppdi.html?TOPIC=Man+Pages"><b>ppdi</b>(1),</a>
+<a href="man-ppdmerge.html?TOPIC=Man+Pages"><b>ppdmerge</b>(1),</a>
+<a href="man-ppdpo.html?TOPIC=Man+Pages"><b>ppdpo</b>(1),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -8,32 +8,45 @@
<body>
<h1 class="title">ppdi(1)</h1>
<h2 class="title"><a name="NAME">Name</a></h2>
-ppdi - import ppd files
+ppdi - import ppd files (deprecated)
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>ppdi
-</b>[ -I
-<i>include-directory
-</i>] [ -o
-<i>source-file
-</i>]
-<i>ppd-file
-</i>[
-<i>ppd-file2 ... ppd-fileN
-</i>]
+<b>ppdi</b>
+[
+<b>-I</b>
+<i>include-directory</i>
+] [
+<b>-o</b>
+<i>source-file</i>
+]
+<i>ppd-file</i>
+[ ...
+<i>ppd-file</i>
+]
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>ppdi</i> imports one or more PPD files into a PPD compiler source file.
-Multiple languages of the same PPD file are merged into a single printer
-definition to facilitate accurate changes for all localizations.
-<p>The <i>-o</i> option specifies the PPD source file to update. If the source
-file does not exist, a new source file is created. Otherwise the existing
-file is merged with the new PPD file(s) on the command-line. If no source
-file is specified, the filename "ppdi.drv" is used.
+<b>ppdi</b> imports one or more PPD files into a PPD compiler source file.
+Multiple languages of the same PPD file are merged into a single printer definition to facilitate accurate changes for all localizations.
+<b>This program is deprecated and will be removed in a future release of CUPS.</b>
+<h2 class="title"><a name="OPTIONS">Options</a></h2>
+<b>ppdi</b> supports the following options:
+<dl class="man">
+<dt><b>-I </b><i>include-directory</i>
+<dd style="margin-left: 5.0em">Specifies an alternate include directory.
+Multiple <i>-I</i> options can be supplied to add additional directories.
+<dt><b>-o </b><i>source-file</i>
+<dd style="margin-left: 5.0em">Specifies the PPD source file to update.
+If the source file does not exist, a new source file is created.
+Otherwise the existing file is merged with the new PPD file(s) on the command-line.
+If no source file is specified, the filename <i>ppdi.drv</i> is used.
+</dl>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-ppdc(1), ppdhtml(1), ppdmerge(1), ppdpo(1), ppdcfile(5)
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-ppdc.html?TOPIC=Man+Pages"><b>ppdc</b>(1),</a>
+<a href="man-ppdhtml.html?TOPIC=Man+Pages"><b>ppdhtml</b>(1),</a>
+<a href="man-ppdmerge.html?TOPIC=Man+Pages"><b>ppdmerge</b>(1),</a>
+<a href="man-ppdpo.html?TOPIC=Man+Pages"><b>ppdpo</b>(1),</a>
+<a href="man-ppdcfile.html?TOPIC=Man+Pages"><b>ppdcfile</b>(5),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -8,33 +8,42 @@
<body>
<h1 class="title">ppdmerge(1)</h1>
<h2 class="title"><a name="NAME">Name</a></h2>
-ppdmerge - merge ppd files
+ppdmerge - merge ppd files (deprecated)
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>ppdmerge
-</b>[ -o
-<i>output-ppd-file
-</i>]
-<i>ppd-file
-</i><i>ppd-file2
-</i>[
-<i>... ppd-fileN
-</i>]
+<b>ppdmerge</b>
+[
+<b>-o</b>
+<i>output-ppd-file</i>
+]
+<i>ppd-file</i>
+<i>ppd-file</i>
+[ ...
+<i>ppd-file</i>
+]
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>ppdmerge</i> merges two or more PPD files into a single, multi-language
+<b>ppdmerge</b> merges two or more PPD files into a single, multi-language
PPD file.
-<p>The <i>-o</i> option specifies the PPD file to create. If not specified,
-the merged PPD file is written to the standard output. If the output file
-already exists, the new
+<b>This program is deprecated and will be removed in a future release of CUPS.</b>
+<h2 class="title"><a name="OPTIONS">Options</a></h2>
+<b>ppdmerge</b> supports the following options:
+<dl class="man">
+<dt><b>-o </b><i>output-ppd-file</i>
+<dd style="margin-left: 3.0em">Specifies the PPD file to create.
+If not specified, the merged PPD file is written to the standard output.
+If the output file already exists, it is silently overwritten.
+</dl>
<h2 class="title"><a name="NOTES">Notes</a></h2>
-<i>ppdmerge</i> does not check whether the merged PPD files are for the
-same device. Merging of different device PPDs will yield unpredictable
-results.
+<b>ppdmerge</b> does not check whether the merged PPD files are for the same device.
+Merging of different device PPDs will yield unpredictable results.
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-cupsprofile(1), ppdc(1), ppdhtml(1), ppdi(1), ppdpo(1), ppdcfile(5)
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-ppdc.html?TOPIC=Man+Pages"><b>ppdc</b>(1),</a>
+<a href="man-ppdhtml.html?TOPIC=Man+Pages"><b>ppdhtml</b>(1),</a>
+<a href="man-ppdi.html?TOPIC=Man+Pages"><b>ppdi</b>(1),</a>
+<a href="man-ppdpo.html?TOPIC=Man+Pages"><b>ppdpo</b>(1),</a>
+<a href="man-ppdcfile.html?TOPIC=Man+Pages"><b>ppdcfile</b>(5),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -8,36 +8,44 @@
<body>
<h1 class="title">ppdpo(1)</h1>
<h2 class="title"><a name="NAME">Name</a></h2>
-ppdpo - ppd message catalog generator
+ppdpo - ppd message catalog generator (deprecated)
<h2 class="title"><a name="SYNOPSIS">Synopsis</a></h2>
-<b>ppdpo
-</b>[ -D
-<i>name[=value]
-</i>] [ -I
-<i>include-directory
-</i>] [ -o
-<i>output-file
-</i>]
-<i>source-file
-</i><h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>ppdpo</i> extracts UI strings from PPDC source files and updates either
-a GNU gettext or OS X strings format message catalog source file for
-translation.
-<p>The <i>-D</i> option sets the named variable for use in the
-source file. It is equivalent to using the #define directive
-in the source file.
-<p>The <i>-I</i> option specifies an alternate include directory;
-multiple <i>-I</i> options can be supplied to add additional
-directories.
-<p>The <i>-o</i> option specifies the output file. The supported extensions are
-".po" or ".po.gz" for GNU gettext format message catalogs and ".strings" for
-OS X strings files.
+<b>ppdpo</b>
+[
+<b>-D </b><i>name</i>[<b>=</b><i>value</i>]
+] [
+<b>-I</b>
+<i>include-directory</i>
+] [
+<b>-o</b>
+<i>output-file</i>
+]
+<i>source-file</i>
+<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
+<b>ppdpo</b> extracts UI strings from PPDC source files and updates either a GNU gettext or OS X strings format message catalog source file for translation.
+<b>This program is deprecated and will be removed in a future release of CUPS.</b>
+<h2 class="title"><a name="OPTIONS">Options</a></h2>
+<b>ppdpo</b> supports the following options:
+<dl class="man">
+<dt><b>-D </b><i>name</i>[<b>=</b><i>value</i>]
+<dd style="margin-left: 5.0em">Sets the named variable for use in the source file.
+It is equivalent to using the <i>#define</i> directive in the source file.
+<dt><b>-I </b><i>include-directory</i>
+<dd style="margin-left: 5.0em">Specifies an alternate include directory.
+Multiple <i>-I</i> options can be supplied to add additional directories.
+<dt><b>-o </b><i>output-file</i>
+<dd style="margin-left: 5.0em">Specifies the output file.
+The supported extensions are <i>.po</i> or <i>.po.gz</i> for GNU gettext format message catalogs and <i>.strings</i> for OS X strings files.
+</dl>
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-ppdc(1), ppdhtml(1), ppdi(1), ppdmerge(1), ppdcfile(5)
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-ppdc.html?TOPIC=Man+Pages"><b>ppdc</b>(1),</a>
+<a href="man-ppdhtml.html?TOPIC=Man+Pages"><b>ppdhtml</b>(1),</a>
+<a href="man-ppdi.html?TOPIC=Man+Pages"><b>ppdi</b>(1),</a>
+<a href="man-ppdmerge.html?TOPIC=Man+Pages"><b>ppdmerge</b>(1),</a>
+<b>ppdcfile(5),</b>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -10,135 +10,21 @@
<h2 class="title"><a name="NAME">Name</a></h2>
printers.conf - printer configuration file for cups
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <i>printers.conf</i> file defines the local printers that are
-available. It is normally located in the <i>/etc/cups</i> directory and
-is generated automatically by the <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a> program when printers
-are added or deleted.
-<p>Each line in the file can be a configuration directive, a blank line,
-or a comment. Comment lines start with the # character.
-<h2 class="title"><a name="DIRECTIVES">Directives</a></h2>
-<dl>
-<dt>&lt;Printer name> ... &lt;/Printer>
-</dt>
-<dd></dd>
-<dd>Defines a specific printer.
-</dd>
-<dt>&lt;DefaultPrinter name> ... &lt;/Printer>
-</dt>
-<dd></dd>
-<dd>Defines a default printer.
-</dd>
-<dt>Accepting Yes
-</dt>
-<dd></dd>
-<dt>Accepting No
-</dt>
-<dd></dd>
-<dd>Specifies whether the printer is accepting new jobs.
-</dd>
-<dt>AllowUser [ user @group ... ]
-</dt>
-<dd></dd>
-<dd>Allows specific users and groups to print to the printer.
-</dd>
-<dt>DenyUser [ user @group ... ]
-</dt>
-<dd></dd>
-<dd>Prevents specific users and groups from printing to the printer.
-</dd>
-<dt>DeviceURI uri
-</dt>
-<dd></dd>
-<dd>Specifies the device URI for a printer.
-</dd>
-<dt>ErrorPolicy abort-job
-</dt>
-<dd></dd>
-<dt>ErrorPolicy retry-current-job
-</dt>
-<dd></dd>
-<dt>ErrorPolicy retry-job
-</dt>
-<dd></dd>
-<dt>ErrorPolicy stop-printer
-</dt>
-<dd></dd>
-<dd>Specifies the error policy for the printer.
-</dd>
-<dt>Info text
-</dt>
-<dd></dd>
-<dd>Specifies human-readable text describing the printer.
-</dd>
-<dt>JobSheets banner banner
-</dt>
-<dd></dd>
-<dd>Specifies the banner pages to use for the printer.
-</dd>
-<dt>KLimit number
-</dt>
-<dd></dd>
-<dd>Specifies the job-k-limit value for the printer.
-</dd>
-<dt>Location text
-</dt>
-<dd></dd>
-<dd>Specifies human-readable text describing the location of the printer.
-</dd>
-<dt>OpPolicy name
-</dt>
-<dd></dd>
-<dd>Specifies the operation policy for the printer.
-</dd>
-<dt>PageLimit number
-</dt>
-<dd></dd>
-<dd>Specifies the job-page-limit value for the printer.
-</dd>
-<dt>PortMonitor monitor
-</dt>
-<dd></dd>
-<dd>Specifies the port monitor for a printer.
-</dd>
-<dt>QuotaPeriod seconds
-</dt>
-<dd></dd>
-<dd>Specifies the job-quota-period value for the printer.
-</dd>
-<dt>Shared Yes
-</dt>
-<dd></dd>
-<dt>Shared No
-</dt>
-<dd></dd>
-<dd>Specifies whether the printer is shared.
-</dd>
-<dt>State idle
-</dt>
-<dd></dd>
-<dt>State stopped
-</dt>
-<dd></dd>
-<dd>Specifies the initial state of the printer (Idle or Stopped)
-</dd>
-<dt>StateMessage text
-</dt>
-<dd></dd>
-<dd>Specifies the message associated with the state.
-</dd>
-<dt>StateTime seconds
-</dt>
-<dd></dd>
-<dd>Specifies the date/time associated with the state.
-</dd>
-</dl>
+The <b>printers.conf</b> file defines the local printers that are available. It is normally located in the <i>/etc/cups</i> directory and is maintained by the
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8)</a>
+program. This file is not intended to be edited or managed manually.
+<h2 class="title"><a name="NOTES">Notes</a></h2>
+The name, location, and format of this file are an implementation detail that will change in future releases of CUPS.
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-classes.conf.html?TOPIC=Man+Pages'>classes.conf(5)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>,
-<a href='man-mime.convs.html?TOPIC=Man+Pages'>mime.convs(5)</a>, <a href='man-mime.types.html?TOPIC=Man+Pages'>mime.types(5)</a>,
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-classes.conf.html?TOPIC=Man+Pages"><b>classes.conf</b>(5),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-mime.convs.html?TOPIC=Man+Pages"><b>mime.convs</b>(5),</a>
+<a href="man-mime.types.html?TOPIC=Man+Pages"><b>mime.types</b>(5),</a>
+<a href="man-subscriptions.conf.html?TOPIC=Man+Pages"><b>subscriptions.conf</b>(5),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
<html>
<!-- SECTION: Man Pages -->
<head>
@@ -8,89 +8,23 @@
<body>
<h1 class="title">subscriptions.conf(5)</h1>
<h2 class="title"><a name="NAME">Name</a></h2>
-subscriptions.conf - subscriptions file for cups
+subscriptions.conf - subscription configuration file for cups
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-The <i>subscriptions.conf</i> file defines the local subscriptions
-that are active. It is normally located in the <i>/etc/cups</i>
-directory and is generated automatically by the <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>
-program when subscriptions are created, renewed, or cancelled.
-<p>Each line in the file can be a configuration directive, a blank line,
-or a comment. Comment lines start with the # character.
-<h2 class="title"><a name="DIRECTIVES">Directives</a></h2>
-<dl>
-<dt>&lt;Subscription NNN> ... &lt;/Subscription>
-</dt>
-<dd></dd>
-<dd>Defines a subscription.
-</dd>
-<dt>Events name [ ... name ]
-</dt>
-<dd></dd>
-<dd>Specifies the events that are subscribed.
-</dd>
-<dt>ExpirationTime unix-time
-</dt>
-<dd></dd>
-<dd>Specifies the expiration time of a subscription as a UNIX time
-value in seconds since January 1st, 1970.
-</dd>
-<dt>Interval seconds
-</dt>
-<dd></dd>
-<dd>Specifies the preferred time interval for event notifications in
-seconds.
-</dd>
-<dt>JobId job-id
-</dt>
-<dd></dd>
-<dd>Specifies the job ID associated with the subscription.
-</dd>
-<dt>LeaseDuration seconds
-</dt>
-<dd></dd>
-<dd>Specifies the number of seconds that the subscription is valid
-for. If 0, the subscription does not expire.
-</dd>
-<dt>NextEventId number
-</dt>
-<dd></dd>
-<dd>Specifies the next notify-sequence-number to use for the
-subscription.
-</dd>
-<dt>NextSubscriptionId number
-</dt>
-<dd></dd>
-<dd>Specifies the next subscription-id to use.
-</dd>
-<dt>Owner username
-</dt>
-<dd></dd>
-<dd>Specifies the user that owns the subscription.
-</dd>
-<dt>PrinterName printername
-</dt>
-<dd></dd>
-<dd>Specifies the printer or class associated with the subscription.
-</dd>
-<dt>Recipient uri
-</dt>
-<dd></dd>
-<dd>Specifies the notify-recipient-uri value for push-type notifications.
-</dd>
-<dt>UserData hex-escaped-data
-</dt>
-<dd></dd>
-<dd>Specifies user data to be included in event notifications. This
-is typically the "from" address in mailto: notifications.
-</dd>
-</dl>
+The <b>subscriptions.conf</b> file defines the local event notification subscriptions that are active. It is normally located in the <i>/etc/cups</i> directory and is maintained by the
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8)</a>
+program. This file is not intended to be edited or managed manually.
+<h2 class="title"><a name="NOTES">Notes</a></h2>
+The name, location, and format of this file are an implementation detail that will change in future releases of CUPS.
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
-<a href='man-classes.conf.html?TOPIC=Man+Pages'>classes.conf(5)</a>, <a href='man-cupsd.html?TOPIC=Man+Pages'>cupsd(8)</a>, <a href='man-cupsd.conf.html?TOPIC=Man+Pages'>cupsd.conf(5)</a>,
-<a href='man-mime.convs.html?TOPIC=Man+Pages'>mime.convs(5)</a>, <a href='man-mime.types.html?TOPIC=Man+Pages'>mime.types(5)</a>, printers.conf(5)
-<br>
-<a href='http://localhost:631/help'>http://localhost:631/help</a>
+<a href="man-classes.conf.html?TOPIC=Man+Pages"><b>classes.conf</b>(5),</a>
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
+<a href="man-cupsd.conf.html?TOPIC=Man+Pages"><b>cupsd.conf</b>(5),</a>
+<a href="man-mime.convs.html?TOPIC=Man+Pages"><b>mime.convs</b>(5),</a>
+<a href="man-mime.types.html?TOPIC=Man+Pages"><b>mime.types</b>(5),</a>
+<a href="man-printers.conf.html?TOPIC=Man+Pages"><b>printers.conf</b>(5),</a>
+CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright 2007-2013 by Apple Inc.
+Copyright &copy; 2007-2014 by Apple Inc.
</body>
</html>
diff --git a/doc/help/network.html b/doc/help/network.html
index 21112f693..02a232ed5 100644
--- a/doc/help/network.html
+++ b/doc/help/network.html
@@ -14,7 +14,7 @@
<P>Every network printer or print server has a unique Internet Protocol (IP) address associated with it. This address is either configured manually or set using an automatic network protocol such as the <A HREF="#BOOTP">Boot Protocol (BOOTP)</A>, <A HREF="#DHCP">Dynamic Host Control Protocol (DHCP)</A>, Reverse Address Resolution Protocol (RARP), or ZeroConf.</P>
-<P>You can normally find the IP address of a printer on the printer's control panel or by printing the configuration or status page. The <A HREF="#SNMP">Simple Network Management Protocol (SNMP)</A> can also be used to get the IP address remotely, which happens automatically when you visit the CUPS administration web page or choose an available CUPS device when adding a printer.</P>
+<P>You can normally find the IP address of a printer on the printer's control panel or by printing the configuration or status page. The <A HREF="#SNMP">Simple Network Management Protocol (SNMP)</A> can also be used to get the IP address remotely.</P>
<H2 CLASS="title"><A NAME="CONFIG">Configuring the IP Address</A></H2>
@@ -102,7 +102,7 @@ socket://<i>ip-address-or-hostname</i>:<i>port-number</i>/?option=value&amp;opti
<H3><A NAME="IPP">Internet Printing Protocol (IPP)</A></H3>
-<P>IPP is the only protocol that CUPS supports natively and is supported by some network printers and print servers. However, since many printers do not implement IPP properly, only use IPP when the vendor actually documents official support for it. IPP printing normally happens over port 631 and uses the <tt>http</tt>, <tt>ipp</tt>, and <tt>ipps</tt> URI schemes:</P>
+<P>IPP is the only protocol that CUPS supports natively and is supported by most network printers and print servers. IPP printing normally happens over port 631 and uses the <tt>http</tt> (Windows), <tt>ipp</tt>, and <tt>ipps</tt> URI schemes:</P>
<PRE>
http://<i>ip-address-or-hostname</i>:<i>port-number</i>/<i>resource</i>
@@ -134,10 +134,6 @@ ipps://<i>ip-address-or-hostname</i>:<i>port-number</i>/<i>resource</i>?<i>optio
</THEAD>
<TBODY>
<TR>
- <TD><TT>compression=gzip</TT></TD>
- <TD>Specifies that print data should be compressed before sending.</TD>
-</TR>
-<TR>
<TD><TT>encryption=always</TT></TD>
<TD>Specifies that the connection to the IPP server should be encrypted using SSL.</TD>
</TR>
diff --git a/doc/help/overview.html b/doc/help/overview.html
index 4a4b173b2..367434d39 100644
--- a/doc/help/overview.html
+++ b/doc/help/overview.html
@@ -47,14 +47,9 @@ different ways.</P>
<H2 CLASS="title"><A NAME="BEGIN">Where Do I Begin?</A></H2>
-<P>Click on the <A HREF="http://localhost:631/admin">Administration</A> tab at
-the top of this page. Click on the <VAR>Add Printer</VAR> button and follow the
-prompts.</P>
+<P>Click on the <var>Administration</var> tab. Click on the <var>Add Printer</var> button and follow the prompts.</P>
-<BLOCKQUOTE>When you are asked for a username and password, enter your login
-username and password or the "root" username and password. On MacOS X, the login
-username (or "short name") is typically your first and last name in
-lowercase.</BLOCKQUOTE>
+<BLOCKQUOTE>When you are asked for a username and password, enter your login username and password or the "root" username and password. On OS X<sup>&reg;</sup>, the login username (or "short name") is typically your first and last name in lowercase.</BLOCKQUOTE>
<P>After the printer is added, CUPS will ask you to set the default printer
options (paper size, output mode, etc.) for the printer. Make any changes as
diff --git a/doc/help/policies.html b/doc/help/policies.html
index 42b789aaf..f7141a58a 100644
--- a/doc/help/policies.html
+++ b/doc/help/policies.html
@@ -154,19 +154,39 @@ HREF="ref-cupsd-conf.html#LimitIPP"><TT>Limit</TT></A> subsections which list th
</THEAD>
<TBODY>
<TR>
- <TD NOWRAP><TT>Print-Job</TT></TD>
- <TD>Yes</TD>
- <TD>Creates a print job with a single file.</TD>
+ <TD NOWRAP><TT>Activate-Printer</TT></TD>
+ <TD>No</TD>
+ <TD>Activates a printer or class.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Print-URI</TT></TD>
+ <TD NOWRAP><TT>Cancel-Current-Job</TT></TD>
<TD>No</TD>
- <TD>Create a print job with a single URI.</TD>
+ <TD>Cancels the current job on a printer or class.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Validate-Job</TT></TD>
+ <TD NOWRAP><TT>Cancel-Job</TT></TD>
<TD>Yes</TD>
- <TD>Validates a print request before printing.</TD>
+ <TD>Cancels a print job.</TD>
+</TR>
+<TR>
+ <TD NOWRAP><TT>Cancel-Jobs</TT></TD>
+ <TD>Yes</TD>
+ <TD>Cancels all print jobs.</TD>
+</TR>
+<TR>
+ <TD NOWRAP><TT>Cancel-My-Jobs</TT></TD>
+ <TD>Yes</TD>
+ <TD>Cancels a user's print job.</TD>
+</TR>
+<TR>
+ <TD NOWRAP><TT>Cancel-Subscription</TT></TD>
+ <TD>Yes</TD>
+ <TD>Cancels an event subscription.</TD>
+</TR>
+<TR>
+ <TD NOWRAP><TT>Close-Job</TT></TD>
+ <TD>Yes</TD>
+ <TD>Closes a user's print job so that it can be printed.</TD>
</TR>
<TR>
<TD NOWRAP><TT>Create-Job</TT></TD>
@@ -174,19 +194,29 @@ HREF="ref-cupsd-conf.html#LimitIPP"><TT>Limit</TT></A> subsections which list th
<TD>Creates a print job with no files or URIs.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Send-Document</TT></TD>
+ <TD NOWRAP><TT>Create-Job-Subscriptions</TT></TD>
<TD>Yes</TD>
- <TD>Adds a file to a print job.</TD>
+ <TD>Creates one or more event subscriptions for a job.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Send-URI</TT></TD>
+ <TD NOWRAP><TT>Create-Printer-Subscriptions</TT></TD>
+ <TD>Yes</TD>
+ <TD>Creates one or more event subscriptions for a printer or the server.</TD>
+</TR>
+<TR>
+ <TD NOWRAP><TT>Deactivate-Printer</TT></TD>
<TD>No</TD>
- <TD>Adds a URI to a print job.</TD>
+ <TD>Deactivates a printer or class.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Cancel-Job</TT></TD>
+ <TD NOWRAP><TT>Disable-Printer</TT></TD>
<TD>Yes</TD>
- <TD>Cancels a print job.</TD>
+ <TD>Stops a printer or class.</TD>
+</TR>
+<TR>
+ <TD NOWRAP><TT>Enable-Printer</TT></TD>
+ <TD>Yes</TD>
+ <TD>Starts a printer or class.</TD>
</TR>
<TR>
<TD NOWRAP><TT>Get-Job-Attributes</TT></TD>
@@ -199,78 +229,82 @@ HREF="ref-cupsd-conf.html#LimitIPP"><TT>Limit</TT></A> subsections which list th
<TD>Gets a list of jobs.</TD>
</TR>
<TR>
+ <TD NOWRAP><TT>Get-Notifications</TT></TD>
+ <TD>Yes</TD>
+ <TD>Gets (pending) events for an event subscription.</TD>
+</TR>
+<TR>
<TD NOWRAP><TT>Get-Printer-Attributes</TT></TD>
<TD>Yes</TD>
<TD>Gets information and options associated with a printer or class.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Hold-Job</TT></TD>
+ <TD NOWRAP><TT>Get-Printer-Supported-Values</TT></TD>
<TD>Yes</TD>
- <TD>Holds a print job for printing.</TD>
+ <TD>Gets -supported attributes for a printer based on job
+ options.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Release-Job</TT></TD>
+ <TD NOWRAP><TT>Get-Subscription-Attributes</TT></TD>
<TD>Yes</TD>
- <TD>Releases a print job for printing.</TD>
+ <TD>Gets information for an event subscription.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Restart-Job</TT></TD>
+ <TD NOWRAP><TT>Get-Subscriptions</TT></TD>
<TD>Yes</TD>
- <TD>Reprints a print job.</TD>
+ <TD>Gets a list of event subscriptions.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Pause-Printer</TT></TD>
+ <TD NOWRAP><TT>Hold-Job</TT></TD>
<TD>Yes</TD>
- <TD>Stops a printer or class.</TD>
+ <TD>Holds a print job for printing.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Resume-Printer</TT></TD>
+ <TD NOWRAP><TT>Hold-New-Jobs</TT></TD>
<TD>Yes</TD>
- <TD>Starts a printer or class.</TD>
+ <TD>Holds new jobs submitted to a printer or class.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Purge-Jobs</TT></TD>
+ <TD NOWRAP><TT>Pause-Printer</TT></TD>
<TD>Yes</TD>
- <TD>Cancels all jobs on the server or a printer or class
- and removes the job history information.</TD>
+ <TD>Stops a printer or class.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Set-Printer-Attributes</TT></TD>
+ <TD NOWRAP><TT>Pause-Printer-After-Current-Job</TT></TD>
<TD>No</TD>
- <TD>Sets printer or class information; CUPS uses
- CUPS-Add-Modify-Printer and CUPS-Add-Modify-Class
- instead.</TD>
+ <TD>Stops a printer or class after the current job is finished.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Set-Job-Attributes</TT></TD>
+ <TD NOWRAP><TT>Print-Job</TT></TD>
<TD>Yes</TD>
- <TD>Changes job options.</TD>
+ <TD>Creates a print job with a single file.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Get-Printer-Supported-Values</TT></TD>
+ <TD NOWRAP><TT>Print-URI</TT></TD>
<TD>No</TD>
- <TD>Gets -supported attributes for a printer based on job
- options.</TD>
+ <TD>Create a print job with a single URI.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Create-Printer-Subscription</TT></TD>
- <TD>Yes</TD>
- <TD>Creates an event subscription for a printer or the server.</TD>
+ <TD NOWRAP><TT>Promote-Job</TT></TD>
+ <TD>No</TD>
+ <TD>Prints a job before others.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Create-Job-Subscription</TT></TD>
+ <TD NOWRAP><TT>Purge-Jobs</TT></TD>
<TD>Yes</TD>
- <TD>Creates an event subscription for a job.</TD>
+ <TD>Cancels all jobs on the server or a printer or class
+ and removes the job history information.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Get-Subscription-Attributes</TT></TD>
+ <TD NOWRAP><TT>Release-Held-New-Jobs</TT></TD>
<TD>Yes</TD>
- <TD>Gets information for an event subscription.</TD>
+ <TD>Releases jobs that were held because of the
+ Hold-New-Jobs operation.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Get-Subscriptions</TT></TD>
+ <TD NOWRAP><TT>Release-Job</TT></TD>
<TD>Yes</TD>
- <TD>Gets a list of event subscriptions.</TD>
+ <TD>Releases a print job for printing.</TD>
</TR>
<TR>
<TD NOWRAP><TT>Renew-Subscription</TT></TD>
@@ -278,65 +312,62 @@ HREF="ref-cupsd-conf.html#LimitIPP"><TT>Limit</TT></A> subsections which list th
<TD>Renews an event subscription that is about to expire.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Cancel-Subscription</TT></TD>
- <TD>Yes</TD>
- <TD>Cancels an event subscription.</TD>
+ <TD NOWRAP><TT>Reprocess-Job</TT></TD>
+ <TD>No</TD>
+ <TD>Reprints a job on a different printer or class; CUPS has the
+ CUPS-Move-Job operation instead.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Get-Notifications</TT></TD>
+ <TD NOWRAP><TT>Restart-Job</TT></TD>
<TD>Yes</TD>
- <TD>Gets (pending) events for an event subscription.</TD>
+ <TD>Reprints a print job.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Send-Notifications</TT></TD>
+ <TD NOWRAP><TT>Restart-Printer</TT></TD>
<TD>No</TD>
- <TD>Sends events for an event subscription.</TD>
+ <TD>Restarts a printer or class, resuming print jobs as needed.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Get-Printer-Support-Files</TT></TD>
+ <TD NOWRAP><TT>Resubmit-Job</TT></TD>
<TD>No</TD>
- <TD>Gets printer driver files for a Novell client.</TD>
+ <TD>Reprints a job with new options.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Enable-Printer</TT></TD>
- <TD>Yes</TD>
- <TD>Starts a printer or class.</TD>
+ <TD NOWRAP><TT>Resume-Job</TT></TD>
+ <TD>No</TD>
+ <TD>Resumes printing of a stopped job.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Disable-Printer</TT></TD>
+ <TD NOWRAP><TT>Resume-Printer</TT></TD>
<TD>Yes</TD>
- <TD>Stops a printer or class.</TD>
-</TR>
-<TR>
- <TD NOWRAP><TT>Pause-Printer-After-Current-Job</TT></TD>
- <TD>No</TD>
- <TD>Stops a printer or class after the current job is finished.</TD>
+ <TD>Starts a printer or class.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Hold-New-Jobs</TT></TD>
+ <TD NOWRAP><TT>Schedule-Job-After</TT></TD>
<TD>No</TD>
- <TD>Holds new jobs submitted to a printer or class.</TD>
+ <TD>Prints a job after others.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Release-Held-New-Jobs</TT></TD>
- <TD>No</TD>
- <TD>Releases jobs that were held because of the
- Hold-New-Jobs operation.</TD>
+ <TD NOWRAP><TT>Send-Document</TT></TD>
+ <TD>Yes</TD>
+ <TD>Adds a file to a print job.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Deactivate-Printer</TT></TD>
+ <TD NOWRAP><TT>Send-URI</TT></TD>
<TD>No</TD>
- <TD>Deactivates a printer or class.</TD>
+ <TD>Adds a URI to a print job.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Activate-Printer</TT></TD>
- <TD>No</TD>
- <TD>Activates a printer or class.</TD>
+ <TD NOWRAP><TT>Set-Printer-Attributes</TT></TD>
+ <TD>Yes</TD>
+ <TD>Sets printer or class information; CUPS uses
+ CUPS-Add-Modify-Printer and CUPS-Add-Modify-Class
+ for most attributes instead.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Restart-Printer</TT></TD>
- <TD>No</TD>
- <TD>Restarts a printer or class, resuming print jobs as needed.</TD>
+ <TD NOWRAP><TT>Set-Job-Attributes</TT></TD>
+ <TD>Yes</TD>
+ <TD>Changes job options.</TD>
</TR>
<TR>
<TD NOWRAP><TT>Shutdown-Printer</TT></TD>
@@ -349,45 +380,30 @@ HREF="ref-cupsd-conf.html#LimitIPP"><TT>Limit</TT></A> subsections which list th
<TD>Powers a printer or class on.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Reprocess-Job</TT></TD>
- <TD>No</TD>
- <TD>Reprints a job on a different printer or class; CUPS has the
- CUPS-Move-Job operation instead.</TD>
-</TR>
-<TR>
- <TD NOWRAP><TT>Cancel-Current-Job</TT></TD>
- <TD>No</TD>
- <TD>Cancels the current job on a printer or class.</TD>
-</TR>
-<TR>
<TD NOWRAP><TT>Suspend-Current-Job</TT></TD>
<TD>No</TD>
<TD>Stops the current job on a printer or class.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Resume-Job</TT></TD>
+ <TD NOWRAP><TT>Validate-Document</TT></TD>
<TD>No</TD>
- <TD>Resumes printing of a stopped job.</TD>
+ <TD>Validates a document request before sending.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>Promote-Job</TT></TD>
- <TD>No</TD>
- <TD>Prints a job before others.</TD>
-</TR>
-<TR>
- <TD NOWRAP><TT>Schedule-Job-After</TT></TD>
- <TD>No</TD>
- <TD>Prints a job after others.</TD>
+ <TD NOWRAP><TT>Validate-Job</TT></TD>
+ <TD>Yes</TD>
+ <TD>Validates a print request before printing.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>CUPS-Get-Default</TT> *</TD>
+ <TD NOWRAP><TT>CUPS-Accept-Jobs</TT></TD>
<TD>Yes</TD>
- <TD>Gets the server/network default printer or class.</TD>
+ <TD>Sets a printer's or class' printer-is-accepting-jobs
+ attribute to true.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>CUPS-Get-Printers</TT> *</TD>
+ <TD NOWRAP><TT>CUPS-Add-Modify-Class</TT></TD>
<TD>Yes</TD>
- <TD>Gets a list of printers and/or classes.</TD>
+ <TD>Adds or modifies a class.</TD>
</TR>
<TR>
<TD NOWRAP><TT>CUPS-Add-Modify-Printer</TT></TD>
@@ -395,19 +411,9 @@ HREF="ref-cupsd-conf.html#LimitIPP"><TT>Limit</TT></A> subsections which list th
<TD>Adds or modifies a printer.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>CUPS-Delete-Printer</TT> *</TD>
- <TD>Yes</TD>
- <TD>Removes a printer.</TD>
-</TR>
-<TR>
- <TD NOWRAP><TT>CUPS-Get-Classes</TT> *</TD>
- <TD>Yes</TD>
- <TD>Gets a list of classes.</TD>
-</TR>
-<TR>
- <TD NOWRAP><TT>CUPS-Add-Modify-Class</TT></TD>
+ <TD NOWRAP><TT>CUPS-Authenticate-Job</TT></TD>
<TD>Yes</TD>
- <TD>Adds or modifies a class.</TD>
+ <TD>Authenticates a job for printing.</TD>
</TR>
<TR>
<TD NOWRAP><TT>CUPS-Delete-Class</TT> *</TD>
@@ -415,21 +421,19 @@ HREF="ref-cupsd-conf.html#LimitIPP"><TT>Limit</TT></A> subsections which list th
<TD>Removes a class.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>CUPS-Accept-Jobs</TT></TD>
+ <TD NOWRAP><TT>CUPS-Delete-Printer</TT> *</TD>
<TD>Yes</TD>
- <TD>Sets a printer's or class' printer-is-accepting-jobs
- attribute to true.</TD>
+ <TD>Removes a printer.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>CUPS-Reject-Jobs</TT></TD>
+ <TD NOWRAP><TT>CUPS-Get-Classes</TT> *</TD>
<TD>Yes</TD>
- <TD>Sets a printer's or class' printer-is-accepting-jobs
- attribute to false.</TD>
+ <TD>Gets a list of classes.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>CUPS-Set-Default</TT> *</TD>
+ <TD NOWRAP><TT>CUPS-Get-Default</TT> *</TD>
<TD>Yes</TD>
- <TD>Sets the server/network default printer or class.</TD>
+ <TD>Gets the server/network default printer or class.</TD>
</TR>
<TR>
<TD NOWRAP><TT>CUPS-Get-Devices</TT> *</TD>
@@ -437,24 +441,35 @@ HREF="ref-cupsd-conf.html#LimitIPP"><TT>Limit</TT></A> subsections which list th
<TD>Gets a list of printer devices.</TD>
</TR>
<TR>
+ <TD NOWRAP><TT>CUPS-Get-Document</TT></TD>
+ <TD>Yes</TD>
+ <TD>Retrieves a document file from a job.</TD>
+</TR>
+<TR>
<TD NOWRAP><TT>CUPS-Get-PPDs</TT> *</TD>
<TD>Yes</TD>
<TD>Gets a list of printer drivers or manufacturers.</TD>
</TR>
<TR>
+ <TD NOWRAP><TT>CUPS-Get-Printers</TT> *</TD>
+ <TD>Yes</TD>
+ <TD>Gets a list of printers and/or classes.</TD>
+</TR>
+<TR>
<TD NOWRAP><TT>CUPS-Move-Job</TT></TD>
<TD>Yes</TD>
<TD>Moves a job to a different printer or class.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>CUPS-Authenticate-Job</TT></TD>
+ <TD NOWRAP><TT>CUPS-Reject-Jobs</TT></TD>
<TD>Yes</TD>
- <TD>Authenticates a job for printing.</TD>
+ <TD>Sets a printer's or class' printer-is-accepting-jobs
+ attribute to false.</TD>
</TR>
<TR>
- <TD NOWRAP><TT>CUPS-Get-Document</TT></TD>
+ <TD NOWRAP><TT>CUPS-Set-Default</TT> *</TD>
<TD>Yes</TD>
- <TD>Retrieves a document file from a job.</TD>
+ <TD>Sets the server/network default printer or class.</TD>
</TR>
</TBODY>
</TABLE></DIV>
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 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
- <TITLE>access_log</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">access_log</H1>
-
-<P>The <VAR>access_log</VAR> file lists each HTTP resource that
-is accessed by a web browser or client. Each line is in an
-extended version of the so-called "Common Log Format" used by
-many web servers and web reporting tools:</P>
-
-<P CLASS="command">
-
-host group user date-time \"method resource version\" status
-bytes ipp-operation ipp-status<BR>
-
-<BR>
-
-10.0.1.2 - - [01/Dec/2005:21:50:28 +0000] "POST / HTTP/1.1" 200
-317 CUPS-Get-Printers
-successful-ok-ignored-or-substituted-attributes<BR>
-
-localhost - - [01/Dec/2005:21:50:32 +0000] "GET /admin HTTP/1.1"
-200 0 - -<BR>
-
-localhost - - [01/Dec/2005:21:50:32 +0000] "POST / HTTP/1.1" 200
-157 CUPS-Get-Printers
-successful-ok-ignored-or-substituted-attributes<BR>
-
-localhost - - [01/Dec/2005:21:50:32 +0000] "POST / HTTP/1.1" 200
-1411 CUPS-Get-Devices -<BR>
-
-localhost - - [01/Dec/2005:21:50:32 +0000] "GET /admin HTTP/1.1"
-200 6667 - -<BR>
-
-</P>
-
-<P>The <I>host</I> field will normally only be an IP address
-unless you have enabled the <A
-HREF="ref-cupsd-conf.html#HostNameLookups"><CODE>HostNameLookups</CODE></A>
-directive in the <VAR>cupsd.conf</VAR> file or if the IP address
-corresponds to your local machine.</P>
-
-<P>The <I>group</I> field always contains "-".</P>
-
-<P>The <I>user</I> field is the authenticated username of the
-requesting user. If no username and password is supplied for the
-request then this field contains "-".</P>
-
-<P>The <I>date-time</I> field is the date and time of the request
-in local time and is in the format:</P>
-
-<P CLASS="command">
-[DD/MON/YYYY:HH:MM:SS +ZZZZ]
-</P>
-
-<P>The <I>method</I> field is the HTTP method used: "GET",
-"OPTIONS", "PUT", or "POST". "GET" requests are used to get files
-from the server, both for the web interface and to get
-configuration and log files. "OPTIONS" requests are used to
-upgrade connections to TLS encryption. "PUT" requests are used to
-upload configuration files. "POST" requests are used for web
-interface forms and IPP requests.</P>
-
-<P>The <I>resource</I> field is the filename of the requested
-resource.</P>
-
-<P>The <I>version</I> field is the HTTP specification version used by the
-client. For CUPS clients this will always be "HTTP/1.1".</P>
-
-<P>The <I>status</I> field contains the HTTP result status of the
-request, as follows:</P>
-
-<UL>
-
- <LI><CODE>200</CODE> - Successful operation.</LI>
-
- <LI><CODE>201</CODE> - File created/modified successfully.</LI>
-
- <LI><CODE>304</CODE> - The requested file has not changed.</LI>
-
- <LI><CODE>400</CODE> - Bad HTTP request; typically this
- means that you have a malicious program trying to access
- your server.</LI>
-
- <LI><CODE>401</CODE> - Unauthorized, authentication
- (username + password) is required.</LI>
-
- <LI><CODE>403</CODE> - Access is forbidden; typically
- this means that a client tried to access a file or
- resource they do not have permission to access.</LI>
-
- <LI><CODE>404</CODE> - The file or resource does not
- exist.</LI>
-
- <LI><CODE>405</CODE> - URL access method is not allowed;
- typically this means you have a web browser using your
- server as a proxy.</LI>
-
- <LI><CODE>413</CODE> - Request too large; typically this
- means that a client tried to print a file larger than the
- <A
- HREF="ref-cupsd-conf.html#MaxRequestSize"><CODE>MaxRequestSize</CODE></A>
- allows.</LI>
-
- <LI><CODE>426</CODE> - Upgrading to TLS-encrypted
- connection.</LI>
-
- <LI><CODE>500</CODE> - Server error; typically this
- happens when the server is unable to open/create a file -
- consult the <VAR>error_log</VAR> file for details.</LI>
-
- <LI><CODE>501</CODE> - The client requested encryption
- but encryption support is not enabled/compiled in.</LI>
-
- <LI><CODE>505</CODE> - HTTP version number not supported;
- typically this means that you have a malicious program
- trying to access your server.</LI>
-
-</UL>
-
-<P>The <I>bytes</I> field contains the number of bytes in the
-request. For POST requests the <I>bytes</I> field contains the
-number of bytes of non-IPP data that is received from the
-client.</P>
-
-<P>The <I>ipp-operation</I> field contains either "-" for non-IPP
-requests or the IPP operation name for POST requests containing
-an IPP request.</P>
-
-<P>The <I>ipp-status</I> field contains either "-" for non-IPP
-requests or the IPP status code name for POST requests containing
-an IPP response.</P>
-
-</BODY>
-</HTML>
diff --git a/doc/help/ref-classes-conf.html b/doc/help/ref-classes-conf.html
deleted file mode 100644
index 4171bb26d..000000000
--- a/doc/help/ref-classes-conf.html
+++ /dev/null
@@ -1,565 +0,0 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
- <TITLE>classes.conf</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">classes.conf</H1>
-
-<P>The CUPS scheduler (cupsd) uses the
-<VAR>/etc/cups/classes.conf</VAR> file to store the list of
-available classes. This file contains only locally defined
-classes, not remote classes that are created automatically via
-browsing. Each directive is listed on a line by itself followed
-by its value. Comments are introduced using the number sign ("#")
-character at the beginning of a line.</P>
-
-<P>While the class configuration file consists of plain text and
-can be modified using your favorite text editor, you should
-normally use the <A HREF="man-lpadmin.html">lpadmin(8)</A>
-command, web interface, or any of the available GUIs to manage
-your classes instead. If you do choose to edit this file
-manually, you will need to stop the scheduler first, make your
-changes, and then start the scheduler to make them active.</P>
-
-
-<H2 CLASS="title"><A NAME="Accepting">Accepting</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
- ...
- Accepting yes
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Accepting</CODE> directive defines the initial state
-of the <VAR>printer-is-accepting-jobs</VAR> attribute. This state
-is also set by the <CODE>accept(8)</CODE> and
-<CODE>reject(8)</CODE> commands:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/accept classname
-/usr/sbin/reject classname</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="AllowUser">AllowUser</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
- ...
- AllowUser foo_user
- AllowUser @bar_group
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>AllowUser</CODE> directive adds a username or group
-name to the <VAR>requesting-user-name-allowed</VAR> attribute
-which can be set by the <CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p classname -u allow:foo_user,@bar_group</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A> directive.
-This directive cannot be used with <A
-HREF="#DenyUser"><CODE>DenyUser</CODE></A>.</P>
-
-
-<H2 CLASS="title"><A NAME="Class">Class</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
- ...
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Class</CODE> directive begins a class definition.
-Classes are added using the <CODE>lpadmin(8)</CODE> command:
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -c classname</KBD>
-</PRE>
-
-
-<H2 CLASS="title"><A NAME="DefaultClass">DefaultClass</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;DefaultClass name&gt;
- ...
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DefaultClass</CODE> directive begins a class
-definition as the default server destination. The default server
-destination can be set using the <CODE>lpadmin(8)</CODE>
-command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -d classname</KBD>
-</PRE>
-
-<P>Note that the server default destination settings can be
-overridden by the user's default destination settings which are
-normally set using the <CODE>lpoptions(1)</CODE> command.</P>
-
-
-<H2 CLASS="title"><A NAME="DenyUser">DenyUser</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
- ...
- DenyUser foo_user
- DenyUser @bar_group
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DenyUser</CODE> directive adds a username or group
-name to the <VAR>requesting-user-name-denied</VAR> attribute
-which can be set by the <CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p classname -u deny:foo_user,@bar_group</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A> directive.
-This directive cannot be used with <A
-HREF="#AllowUser"><CODE>AllowUser</CODE></A></P>
-
-
-<H2 CLASS="title"><A NAME="Info">Info</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
- ...
- Info My Class
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Info</CODE> directive defines the string for the
-<VAR>printer-info</VAR> attribute. It is normally set using the
-<CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p classname -D "My Class"</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="JobSheets">JobSheets</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
- ...
- JobSheets none,standard
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>JobSheets</CODE> directive specifies the default
-banner pages to print before and after a print job. In the above
-example, only a <VAR>standard</VAR> banner will print after each
-job. The <CODE>lpadmin(8)</CODE> command is normally used to set
-the default banners:
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p classname -o job-sheets-default=none,standard</KBD>
-</PRE>
-
-<P>If only one banner file is specified, it will be printed
-before the files in the job. If a second banner file is
-specified, it is printed after the files in the job.</P>
-
-<P>The available banner pages depend on the local system
-configuration; CUPS includes the following standard banner
-files:</P>
-
-<UL>
-
- <LI><CODE>none</CODE> - Do not produce a banner
- page.</LI>
-
- <LI><CODE>classified</CODE> - A banner page with a
- &quot;classified&quot; label at the top and bottom.</LI>
-
- <LI><CODE>confidential</CODE> - A banner page with a
- &quot;confidential&quot; label at the top and bottom.</LI>
-
- <LI><CODE>secret</CODE> - A banner page with a
- &quot;secret&quot; label at the top and bottom.</LI>
-
- <LI><CODE>standard</CODE> - A banner page with no label
- at the top and bottom.</LI>
-
- <LI><CODE>topsecret</CODE> - A banner page with a
- &quot;top secret&quot; label at the top and bottom.</LI>
-
- <LI><CODE>unclassified</CODE> - A banner page with an
- &quot;unclassified&quot; label at the top and bottom.</LI>
-
-</UL>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="KLimit">KLimit</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
- ...
- KLimit 1234
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>KLimit</CODE> directive defines the value of the
-<VAR>job-k-limit</VAR> attribute. It is normally set using the
-<CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p classname -o job-k-limit=1234</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="Location">Location</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
- ...
- Location Building 3321
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Location</CODE> directive defines the string for the
-<VAR>printer-location</VAR> attribute. It is normally set using the
-<CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p classname -L "Building 3321"</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2</SPAN><A NAME="OpPolicy">OpPolicy</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
- ...
- OpPolicy default
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>OpPolicy</CODE> directive sets the operation policy
-that is used for the printer. The <CODE>lpadmin(8)</CODE> command
-sets the current operation policy:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p classname -o printer-op-policy=default</KBD>
-</PRE>
-
-<P>The default policy is named "default". All policies correspond
-to those defined using the <VAR>cupsd.conf</VAR> <A
-HREF="ref-cupsd-conf.html#Policy"><CODE>Policy</CODE></A>
-section.</P>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2</SPAN><A NAME="Option">Option</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
- ...
- Option name value
- Option scaling 100
- Option page-left 72
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Option</CODE> directive specifies a default job
-template attribute value. It is mapped to
-<CODE>name-default</CODE> in the printer attributes and applied
-to jobs as <CODE>name</CODE>.</P>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="PageLimit">PageLimit</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
- ...
- PageLimit 1234
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PageLimit</CODE> directive defines the value of the
-<VAR>job-page-limit</VAR> attribute. It can be set using the
-<CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p classname -o job-page-limit=1234</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="Printer">Printer</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
- ...
- Printer foo
- Printer bar
- Printer bleep
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Printer</CODE> directive adds a printer to a class.
-Printers are added to a class using the <CODE>lpadmin(8)</CODE>
-command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -c classname</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="QuotaPeriod">QuotaPeriod</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
- ...
- QuotaPeriod 604800
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>QuotaPeriod</CODE> directive defines the value of
-the <VAR>job-quota-period</VAR> attribute. Typical values are
-86400 (1 day), 604800 (1 week), 2592000 (1 month), and 31536000
-(1 year). It is set using the <CODE>lpadmin(8)</CODE>
-command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p classname -o job-quota-period=604800</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2</SPAN><A NAME="Shared">Shared</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
- ...
- Shared yes
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Shared</CODE> directive defines the initial value of
-the <VAR>printer-is-shared</VAR> attribute. The strings
-<VAR>yes</VAR> and <VAR>no</VAR> correspond to the true and false
-values, respectively. The <CODE>lpadmin(8)</CODE> command sets
-the current state:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p classname -o printer-is-shared=true</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="State">State</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
- ...
- State idle
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>State</CODE> directive defines the initial value of
-the <VAR>printer-state</VAR> attribute. The strings
-<VAR>idle</VAR> and <VAR>stopped</VAR> correspond to the IPP
-enumeration values 3 and 5, respectively. The
-<CODE>cupsenable(8)</CODE> and <CODE>cupsdisable(8)</CODE>
-commands set the current state:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/cupsenable classname</KBD>
-<KBD>/usr/sbin/cupsdisable classname</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="StateMessage">StateMessage</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
- ...
- StateMessage Class is lonely.
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>StateMessage</CODE> directive defines the initial
-string for the <VAR>printer-state-message</VAR> attribute. The
-following are some example messages:</P>
-
-<PRE CLASS="command">
-StateMessage Connected to host_name...
-StateMessage Connecting to printer_queue on port port_number...
-StateMessage Network host host_name is busy; will retry in 30 seconds...
-StateMessage Class busy; will retry in 10 seconds...
-StateMessage Class is busy; retrying print job...
-StateMessage Print file accepted - job ID id_number.
-StateMessage Waiting for job to complete
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2</SPAN><A NAME="StateTime">StateTime</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Class name&gt;
- ...
- StateTime 1133542425
-&lt;/Class&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>StateTime</CODE> directive defines the UNIX time
-(seconds since Jan 1, 1970) for the last state change of the
-queue. It is mapped to the <VAR>printer-state-change-time</VAR>
-attribute.</P>
-
-<P>This directive must appear inside a <A
-HREF="#Class"><CODE>Class</CODE></A> or <A
-HREF="#DefaultClass"><CODE>DefaultClass</CODE></A>
-section.</P>
-
-
-</BODY>
-</HTML>
diff --git a/doc/help/ref-client-conf.html b/doc/help/ref-client-conf.html
deleted file mode 100644
index 03d1ea04c..000000000
--- a/doc/help/ref-client-conf.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
- <TITLE>client.conf</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">client.conf</H1>
-
-<P>The <VAR>/etc/cups/client.conf</VAR> and
-<VAR>~/.cups/client.conf</VAR> files contain up to two directives
-that determine how the client behaves. Each directive is listed
-on a line by itself followed by its value. Comments are
-introduced using the number sign ("#") character at the beginning
-of a line.</P>
-
-<H2 CLASS="title"><A NAME="Encryption">Encryption</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Encryption Never
-Encryption IfRequested
-Encryption Required
-Encryption Always
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Encryption</CODE> directive specifies the default
-encryption settings for the client.</P>
-
-<P>The default setting is <VAR>IfRequested</VAR>.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.6/OS X 10.8</SPAN><A NAME="GSSServiceName">GSSServiceName</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-GSSServiceName http
-GSSServiceName ipp
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>GSSServiceName</CODE> directive sets the Kerberos service name to use. The default is <CODE>http</CODE> for compatibility with Microsoft Windows.</P>
-
-
-<H2 CLASS="title"><A NAME="ServerName">ServerName</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ServerName foo.bar.com
-ServerName 11.22.33.44
-ServerName foo.bar.com:8631
-<SPAN CLASS="info">CUPS 1.6</SPAN>ServerName foo.bar.com/version=1.1
-<SPAN CLASS="info">CUPS 1.6</SPAN>ServerName foo.bar.com:8631/version=1.1
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ServerName</CODE> directive specifies sets the remote server that is to be used for all client operations. That is, it redirects all client requests to the remote server.</P>
-
-<P>The default port number is 631 but can be overridden by adding a colon followed by the desired port number to the value.</P>
-
-<P>By default, CUPS 1.6 and later use IPP/2.0 to communicate with the server. Add "/version=1.1" to force IPP/1.1 which is required for CUPS 1.3.12 and earlier.</P>
-
-<P>The default is to use the local server ("<VAR>localhost</VAR>") or domain socket, if so configured.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-<P>Only one <CODE>ServerName</CODE> directive may appear. If multiple names are
-present, only the last one is used. This directive is not supported on OS X 10.7 or later.</P>
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.6/OS X 10.8</SPAN><A NAME="User">User</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-User joe
-User bob
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>User</CODE> directive sets the user name to use. The default is the username associated with the current login.</P>
-
-
-</BODY>
-</HTML>
diff --git a/doc/help/ref-cups-files-conf.html.in b/doc/help/ref-cups-files-conf.html.in
deleted file mode 100644
index 70c996f4a..000000000
--- a/doc/help/ref-cups-files-conf.html.in
+++ /dev/null
@@ -1,529 +0,0 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
- <TITLE>cups-files.conf</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">cups-files.conf</H1>
-
-<P>The <VAR>/etc/cups/cups-files.conf</VAR> file contains configuration <I>directives</I> that control the files, directories. users. and groups that are used by the CUPS scheduler, <CODE>cupsd(8)</CODE>. Each directive is listed on a line by itself followed by its value. Comments are introduced using the number sign ("#") character at the beginning of a line.</P>
-
-<H2 CLASS="title"><A NAME="AccessLog">AccessLog</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-AccessLog /var/log/cups/access_log
-AccessLog /var/log/cups/access_log-%s
-AccessLog syslog
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>AccessLog</CODE> directive sets the name of the
-access log file. If the filename is not absolute then it is
-assumed to be relative to the <A
-HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
-access log file is stored in "common log format" and can be used
-by any web access reporting tool to generate a report on CUPS
-server activity.</P>
-
-<P>The server name can be included in the filename by using
-<CODE>%s</CODE> in the name.</P>
-
-<P>The special name "syslog" can be used to send the access
-information to the system log instead of a plain file.</P>
-
-<P>The default access log file is
-<VAR>/var/log/access_log</VAR>.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.15</SPAN><A NAME="ConfigFilePerm">ConfigFilePerm</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ConfigFilePerm 0644
-ConfigFilePerm 0640
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ConfigFilePerm</CODE> directive specifies the permissions to use when the scheduler writes configuration and cache files, typically in response to IPP or HTTP requests. The default is 644 on OS X and 640 on all other operating systems.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>The permissions for the <VAR>printers.conf</VAR> file are always masked to only allow access from the scheduler user (typically root). This is done because printer device URIs sometimes contain sensitive authentication information that should not be generally known on the system. There is no way to disable this security feature.</P>
-
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><A NAME="DataDir">DataDir</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DataDir /usr/share/cups
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DataDir</CODE> directive sets the directory to use
-for data files.</P>
-
-
-<H2 CLASS="title"><A NAME="DocumentRoot">DocumentRoot</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DocumentRoot /usr/share/doc/cups
-DocumentRoot /foo/bar/doc/cups
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DocumentRoot</CODE> directive specifies the location
-of web content for the HTTP server in CUPS. If an absolute path
-is not specified then it is assumed to be relative to the <A
-HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
-default directory is <VAR>/usr/share/doc/cups</VAR>.</P>
-
-<P>Documents are first looked up in a sub-directory for the
-primary language requested by the client (e.g.
-<VAR>/usr/share/doc/cups/fr/...</VAR>) and then directly under
-the <CODE>DocumentRoot</CODE> directory (e.g.
-<VAR>/usr/share/doc/cups/...</VAR>), so it is possible to
-localize the web content by providing subdirectories for each
-language needed.</P>
-
-
-<H2 CLASS="title"><A NAME="ErrorLog">ErrorLog</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ErrorLog /var/log/cups/error_log
-ErrorLog /var/log/cups/error_log-%s
-ErrorLog syslog
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ErrorLog</CODE> directive sets the name of the error
-log file. If the filename is not absolute then it is assumed to
-be relative to the <A
-HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
-default error log file is <VAR>/var/log/cups/error_log</VAR>.</P>
-
-<P>The server name can be included in the filename by using
-<CODE>%s</CODE> in the name.</P>
-
-<P>The special name "syslog" can be used to send the error
-information to the system log instead of a plain file.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.4/OS X 10.6</SPAN><A NAME="FatalErrors">FatalErrors</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-FatalErrors none
-FatalErrors all
-FatalErrors browse
-FatalErrors config
-FatalErrors listen
-FatalErrors log
-FatalErrors permissions
-FatalErrors all -permissions
-FatalErrors config permissions log
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>FatalErrors</CODE> directive determines whether certain kinds of
-errors are fatal. The following kinds of errors are currently recognized:</P>
-
-<UL>
-
- <LI><CODE>none</CODE> - No errors are fatal</LI>
-
- <LI><CODE>all</CODE> - All of the errors below are fatal</LI>
-
- <LI><CODE>browse</CODE> - Browsing initialization errors are fatal,
- for example failed binding to the CUPS browse port or failed connections
- to LDAP servers</LI>
-
- <LI><CODE>config</CODE> - Configuration file syntax errors are
- fatal</LI>
-
- <LI><CODE>listen</CODE> - Listen or Port errors are fatal, except for
- IPv6 failures on the loopback or "any" addresses</LI>
-
- <LI><CODE>log</CODE> - Log file creation or write errors are fatal</LI>
-
- <LI><CODE>permissions</CODE> - Bad startup file permissions are
- fatal, for example shared SSL certificate and key files with world-
- read permissions</LI>
-
-</UL>
-
-<P>Multiple errors can be listed, and the form "-kind" can be used with
-<CODE>all</CODE> to remove specific kinds of errors. The default setting is
-<CODE>config</CODE>.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.18</SPAN><A NAME="FileDevice">FileDevice</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-FileDevice Yes
-FileDevice No
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>FileDevice</CODE> directive determines whether the
-scheduler allows new printers to be added using device URIs of
-the form <CODE>file:/filename</CODE>. File devices are most often
-used to test new printer drivers and do not support raw file
-printing.</P>
-
-<P>The default setting is <CODE>No</CODE>.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>File devices are managed by the scheduler. Since the
-scheduler normally runs as the root user, file devices
-can be used to overwrite system files and potentially
-gain unauthorized access to the system. If you must
-create printers using file devices, we recommend that
-you set the <CODE>FileDevice</CODE> directive to
-<CODE>Yes</CODE> for only as long as you need to add the
-printers to the system, and then reset the directive to
-<CODE>No</CODE>.</P>
-
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.3</SPAN><A NAME="FontPath">FontPath</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-FontPath /foo/bar/fonts
-FontPath /usr/share/cups/fonts:/foo/bar/fonts
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>FontPath</CODE> directive specifies the font path to
-use when searching for fonts. The default font path is
-<CODE>/usr/share/cups/fonts</CODE>.</P>
-
-
-<H2 CLASS="title"><A NAME="Group">Group</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Group lp
-Group nobody
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Group</CODE> directive specifies the UNIX group that
-filter and CGI programs run as. The default group is
-system-specific but is usually <CODE>lp</CODE> or
-<CODE>nobody</CODE>.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.15</SPAN><A NAME="LogFilePerm">LogFilePerm</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-LogFilePerm 0644
-LogFilePerm 0600
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>LogFilePerm</CODE> directive specifies the
-permissions to use when writing log files. The default
-is 644.</P>
-
-
-<H2 CLASS="title"><A NAME="PageLog">PageLog</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-PageLog /var/log/cups/page_log
-PageLog /var/log/cups/page_log-%s
-PageLog syslog
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PageLog</CODE> directive sets the name of the page
-log file. If the filename is not absolute then it is assumed to
-be relative to the <A
-HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
-default page log file is <VAR>/var/log/cups/page_log</VAR>.</P>
-
-<P>The server name can be included in the filename by using
-<CODE>%s</CODE> in the name.</P>
-
-<P>The special name "syslog" can be used to send the page
-information to the system log instead of a plain file.</P>
-
-
-<H2 CLASS="title"><A NAME="Printcap">Printcap</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Printcap
-Printcap /etc/printcap
-Printcap /etc/printers.conf
-Printcap /Library/Preferences/org.cups.printers.plist
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Printcap</CODE> directive controls whether or not a printcap file is automatically generated and updated with a list of available printers. If specified with no value, then no printcap file will be generated. The default is to generate a file named <VAR>/Library/Preferences.org.cups.printers.plist</VAR> on OS X and <VAR>/etc/printcap</VAR> on all other operating systems.</P>
-
-<P>When a filename is specified (e.g. <VAR>/etc/printcap</VAR>), the printcap file is written whenever a printer is added or removed. The printcap file can then be used by applications that are hardcoded to look at the printcap file for the available printers.</P>
-
-
-<H2 CLASS="title"><A NAME="PrintcapFormat">PrintcapFormat</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-PrintcapFormat BSD
-PrintcapFormat Solaris
-PrintcapFormat plist
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PrintcapFormat</CODE> directive controls the output format of the
-printcap file. The default is to generate the plist format on OS X, the
-Solaris format on Solaris, and the BSD format on other operating systems.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.3</SPAN><A NAME="RemoteRoot">RemoteRoot</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-RemoteRoot remroot
-RemoteRoot root
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>RemoteRoot</CODE> directive sets the username for
-unauthenticated root requests from remote hosts. The default
-username is <VAR>remroot</VAR>. Setting <CODE>RemoteRoot</CODE>
-to <VAR>root</VAR> effectively disables this security
-mechanism.</P>
-
-
-<H2 CLASS="title"><A NAME="RequestRoot">RequestRoot</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-RequestRoot /var/spool/cups
-RequestRoot /foo/bar/spool/cups
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>RequestRoot</CODE> directive sets the directory for
-incoming IPP requests and HTML forms. If an absolute path is not
-provided then it is assumed to be relative to the <A
-HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
-default request directory is <VAR>/var/spool/cups</VAR>.</P>
-
-
-<H2 CLASS="title"><A NAME="ServerBin">ServerBin</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ServerBin /usr/lib/cups
-ServerBin /foo/bar/lib/cups
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ServerBin</CODE> directive sets the directory for
-server-run executables. If an absolute path is not provided then
-it is assumed to be relative to the <A
-HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
-default executable directory is <VAR>/usr/lib/cups</VAR>,
-<VAR>/usr/lib32/cups</VAR>, or <VAR>/usr/libexec/cups</VAR>
-depending on the operating system.</P>
-
-
-<H2 CLASS="title"><A NAME="ServerCertificate">ServerCertificate</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ServerCertificate /etc/cups/ssl/server.crt
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ServerCertificate</CODE> directive specifies the
-location of the SSL certificate file used by the server when
-negotiating encrypted connections. The certificate must not be
-encrypted (password protected) since the scheduler normally runs
-in the background and will be unable to ask for a password.</P>
-
-<P>The default certificate file is
-<VAR>/etc/cups/ssl/server.crt</VAR>.</P>
-
-
-<H2 CLASS="title"><A NAME="ServerKey">ServerKey</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ServerKey /etc/cups/ssl/server.key
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ServerKey</CODE> directive specifies the location of
-the SSL private key file used by the server when negotiating
-encrypted connections.</P>
-
-<P>The default key file is
-<VAR>/etc/cups/ssl/server.crt</VAR>.</P>
-
-
-<H2 CLASS="title"><A NAME="ServerRoot">ServerRoot</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ServerRoot /etc/cups
-ServerRoot /foo/bar/cups
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ServerRoot</CODE> directive specifies the absolute
-path to the server configuration and state files. It is also used
-to resolve relative paths in the <VAR>cupsd.conf</VAR> file. The
-default server directory is <VAR>/etc/cups</VAR>.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.6.4</SPAN><A NAME="SyncOnClose">SyncOnClose</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-SyncOnClose No
-SyncOnClose Yes
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>SyncOnClose</CODE> directive determines whether the scheduler
-flushes changes to configuration and state files to disk. The default is
-<CODE>No</CODE> which relies on the operating system to schedule a suitable
-time to write changes to disk.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>Setting <CODE>SyncOnClose</CODE> to <CODE>Yes</CODE> makes the scheduler use the <CODE>fsync(2)</CODE> system call to write all changes to disk, however the drive or network file system server may still delay writing data to disk. Do not depend on this functionality to prevent data loss in the event of unexpected hardware failure.</P>
-
-<P>Enabling <CODE>SyncOnClose</CODE> may also cause the scheduler to periodically become unresponsive while it waits for changes to be written.</P>
-
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><A NAME="SystemGroup">SystemGroup</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-SystemGroup lpadmin
-SystemGroup sys
-SystemGroup system
-SystemGroup root
-SystemGroup root lpadmin
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>SystemGroup</CODE> directive specifies the system administration group for <CODE>System</CODE> authentication. Multiple groups can be listed, separated with spaces. The default group list is <CODE>admin</CODE> on OS X and <CODE>lpadmin</CODE>, <CODE>root</CODE>, <CODE>sys</CODE>, and/or <CODE>system</CODE> on other operating systems.</P>
-
-
-<H2 CLASS="title"><A NAME="TempDir">TempDir</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-TempDir /var/tmp
-TempDir /foo/bar/tmp
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>TempDir</CODE> directive specifies an absolute path
-for the directory to use for temporary files. The default
-directory is <VAR>/var/spool/cups/tmp</VAR>.</P>
-
-<P>Temporary directories must be world-writable and should have
-the "sticky" permission bit enabled so that other users cannot
-delete filter temporary files. The following commands will create
-an appropriate temporary directory called
-<VAR>/foo/bar/tmp</VAR>:</P>
-
-<PRE CLASS="command">
-<KBD>mkdir /foo/bar/tmp</KBD>
-<KBD>chmod a+rwxt /foo/bar/tmp</KBD>
-</PRE>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>The <CODE>TempDir</CODE> cannot be pointed at a standard system temporary directory such as <VAR>/tmp</VAR> or <VAR>/var/tmp</VAR> for security reasons.</P></BLOCKQUOTE>
-
-
-<H2 CLASS="title"><A NAME="User">User</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-User lp
-User guest
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>User</CODE> directive specifies the UNIX user that filter and CGI programs run as. The default user is <CODE>_lp</CODE>, <CODE>lp</CODE>, or <CODE>nobody</CODE> (whichever is found first).</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>You may not use user <CODE>root</CODE>, as that would expose
-the system to unacceptable security risks. The scheduler will
-automatically choose user <CODE>nobody</CODE> if you specify a
-user whose ID is 0.</P>
-
-</BLOCKQUOTE>
-
-
-</BODY>
-</HTML>
diff --git a/doc/help/ref-cupsd-conf.html.in b/doc/help/ref-cupsd-conf.html.in
deleted file mode 100644
index dc9ee70cb..000000000
--- a/doc/help/ref-cupsd-conf.html.in
+++ /dev/null
@@ -1,2155 +0,0 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
- <TITLE>cupsd.conf</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">cupsd.conf</H1>
-
-<P>The <VAR>/etc/cups/cupsd.conf</VAR> file contains
-configuration <I>directives</I> that control how the server
-functions. Each directive is listed on a line by itself followed
-by its value. Comments are introduced using the number sign ("#")
-character at the beginning of a line.</P>
-
-<P>Since the server configuration file consists of plain text,
-you can use your favorite text editor to make changes to it.
-After making any changes, restart the <CODE>cupsd(8)</CODE>
-process using the startup script for your operating system:</P>
-
-<UL>
-
- <LI>AIX, Linux, Solaris:
- <PRE CLASS="command">
-/etc/init.d/cups restart
- </PRE></LI>
-
- <LI>HP-UX:
- <PRE CLASS="command">
-/sbin/init.d/cups restart
- </PRE></LI>
-
- <LI>MacOS X:
- <PRE CLASS="command">
-sudo launchctl unload /System/Library/LaunchDaemons/org.cups.cupsd.plist
-sudo launchctl load /System/Library/LaunchDaemons/org.cups.cupsd.plist
- </PRE></LI>
-
-</UL>
-
-<P>You can also edit this file from the CUPS web interface, which
-automatically handles restarting the scheduler.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>The specification of time units ("w" for weeks, "h" for hours, etc.) in the various time interval directives is new in CUPS 1.6/OS X 10.8. Prior releases of CUPS only supported time intervals in seconds.</P>
-
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><A NAME="AccessLogLevel">AccessLogLevel</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-AccessLogLevel config
-AccessLogLevel actions
-AccessLogLevel all
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>AccessLogLevel</CODE> directive controls which requests are logged
-to the access log file. The following levels are defined:</P>
-
-<UL>
-
- <LI><CODE>config</CODE>; Log when printers and classes are added,
- deleted, or modified and when configuration files are accessed or
- updated.</LI>
-
- <LI><CODE>actions</CODE>; Log when print jobs are submitted,
- held, released, modified, or canceled, and any of the conditions
- for <CODE>config</CODE>.</LI>
-
- <LI><CODE>all</CODE>; Log all requests.</LI>
-
-</UL>
-
-<P>The default access log level is <CODE>@CUPS_ACCESS_LOG_LEVEL@</CODE>.</P>
-
-
-<H2 CLASS="title"><A NAME="Allow">Allow</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Location /path&gt;
- ...
- Allow from All
- Allow from None
- Allow from *.example.com
- Allow from .example.com
- Allow from host.example.com
- Allow from nnn.*
- Allow from nnn.nnn.*
- Allow from nnn.nnn.nnn.*
- Allow from nnn.nnn.nnn.nnn
- Allow from nnn.nnn.nnn.nnn/mm
- Allow from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
- Allow from [xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]
- Allow from [xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]/mmm
- Allow from @LOCAL
- Allow from @IF(name)
-&lt;/Location&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Allow</CODE> directive specifies a hostname, IP
-address, or network that is allowed access to the server.
-<CODE>Allow</CODE> directives are cumulative, so multiple
-<CODE>Allow</CODE> directives can be used to allow access for
-multiple hosts or networks.</P>
-
-<P>Host and domain name matching require that you enable the <A
-HREF="#HostNameLookups"><CODE>HostNameLookups</CODE></A>
-directive.</P>
-
-<P>The <CODE>/mm</CODE> notation specifies a CIDR netmask, as shown in
-<A HREF="#TABLE1">Table 1</A>.</P>
-
-<DIV CLASS="table"><TABLE SUMMARY="CIDR Netmasks">
-<CAPTION>Table 1: <A NAME="TABLE1">CIDR Netmasks</A></CAPTION>
-<TR>
- <TH WIDTH="10%">mm</TH>
- <TH WIDTH="20%">netmask</TH>
- <TH WIDTH="10%">mm</TH>
- <TH WIDTH="20%">netmask</TH>
-</TR>
-<TR>
- <TD ALIGN="CENTER">0</TD>
- <TD ALIGN="CENTER">0.0.0.0</TD>
- <TD ALIGN="CENTER">8</TD>
- <TD ALIGN="CENTER">255.0.0.0</TD>
-</TR>
-<TR>
- <TD ALIGN="CENTER">1</TD>
- <TD ALIGN="CENTER">128.0.0.0</TD>
- <TD ALIGN="CENTER">16</TD>
- <TD ALIGN="CENTER">255.255.0.0</TD>
-</TR>
-<TR>
- <TD ALIGN="CENTER">2</TD>
- <TD ALIGN="CENTER">192.0.0.0</TD>
- <TD ALIGN="CENTER">24</TD>
- <TD ALIGN="CENTER">255.255.255.0</TD>
-</TR>
-<TR>
- <TD ALIGN="CENTER">...</TD>
- <TD ALIGN="CENTER">...</TD>
- <TD ALIGN="CENTER">32</TD>
- <TD ALIGN="CENTER">255.255.255.255</TD>
-</TR>
-</TABLE></DIV>
-
-<P>The <CODE>@LOCAL</CODE> name will allow access from all local
-interfaces. The <CODE>@IF(name)</CODE> name will allow access
-from the named interface. In both cases, CUPS only allows access
-from the network that the interface(s) are configured for -
-requests arriving on the interface from a foreign network will
-<em>not</em> be accepted.</P>
-
-<P>The <CODE>Allow</CODE> directive must appear inside a <A
-HREF="#Location"><CODE>Location</CODE></A> or <A
-HREF="#Limit"><CODE>Limit</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="AuthType">AuthType</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Location /path&gt;
- ...
- AuthType None
- AuthType Basic
- AuthType Digest
- AuthType BasicDigest
- AuthType Negotiate
-&lt;/Location&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>AuthType</CODE> directive defines the type of
-authentication to perform:</P>
-
-<UL>
-
- <LI><CODE>None</CODE> - No authentication should be
- performed (default)</LI>
-
- <LI><CODE>Basic</CODE> - Basic authentication should be
- performed using the UNIX password and group files</LI>
-
- <LI><CODE>Digest</CODE> - Digest authentication should be
- performed using the <VAR>/etc/cups/passwd.md5</VAR>
- file</LI>
-
- <LI><CODE>BasicDigest</CODE> - Basic authentication
- should be performed using the
- <VAR>/etc/cups/passwd.md5</VAR> file</LI>
-
- <LI><CODE>Negotiate</CODE> - Kerberos authentication
- should be performed</LI>
-
-</UL>
-
-<P>When using <CODE>Basic</CODE>, <CODE>Digest</CODE>,
-<CODE>BasicDigest</CODE>, or <CODE>Negotiate</CODE> authentication,
-clients connecting through the <CODE>localhost</CODE> interface can
-also authenticate using certificates.</P>
-
-<P>The <CODE>AuthType</CODE> directive must appear inside a <A
-HREF="#Location"><CODE>Location</CODE></A> or <A
-HREF="#Limit"><CODE>Limit</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="AutoPurgeJobs">AutoPurgeJobs</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-AutoPurgeJobs Yes
-AutoPurgeJobs No
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>AutoPurgeJobs</CODE> directive specifies whether or
-not to purge completed jobs once they are no longer required for
-quotas. This option has no effect if quotas are not enabled. The
-default setting is <CODE>No</CODE>.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="BrowseLocalProtocols">BrowseLocalProtocols</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-BrowseLocalProtocols all
-BrowseLocalProtocols none
-BrowseLocalProtocols dnssd
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>BrowseLocalProtocols</CODE> directive specifies the protocols to use when advertising local shared printers on the network. Multiple protocols can be specified by separating them with spaces. The default is "<CODE>dnssd</CODE>" on systems that support Bonjour and "<CODE>none</CODE>" on all others.</P>
-
-
-<H2 CLASS="title"><A NAME="BrowseWebIF">BrowseWebIF</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-BrowseWebIF On
-BrowseWebIF Off
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>BrowseWebIF</CODE> directive controls whether the CUPS web
-interface is advertised via DNS-SD. The default setting is
-<CODE>Off</CODE>.</P>
-
-
-<H2 CLASS="title"><A NAME="Browsing">Browsing</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Browsing On
-Browsing Off
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Browsing</CODE> directive controls whether or not printer sharing is enabled. The default setting is <CODE>On</CODE>.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.7</SPAN><A NAME="Classification">Classification</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Classification
-Classification classified
-Classification confidential
-Classification secret
-Classification topsecret
-Classification unclassified
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Classification</CODE> directive sets the
-classification level on the server. When this option is set, at
-least one of the banner pages is forced to the classification
-level, and the classification is placed on each page of output.
-The default is no classification level.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.10</SPAN><A NAME="ClassifyOverride">ClassifyOverride</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ClassifyOverride Yes
-ClassifyOverride No
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ClassifyOverride</CODE> directive specifies whether
-users can override the default classification level on the
-server. When the server classification is set, users can change
-the classification using the <CODE>job-sheets</CODE> option and
-can choose to only print one security banner before or after the
-job. If the <CODE>job-sheets</CODE> option is set to
-<CODE>none</CODE> then the server default classification is
-used.</P>
-
-<P>The default is to not allow classification overrides.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="DefaultAuthType">DefaultAuthType</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DefaultAuthType Basic
-DefaultAuthType BasicDigest
-DefaultAuthType Digest
-DefaultAuthType Negotiate
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DefaultAuthType</CODE> directive specifies the type
-of authentication to use for IPP operations that require a
-username. The default is <CODE>Basic</CODE>.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="DefaultEncryption">DefaultEncryption</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DefaultEncryption Never
-DefaultEncryption IfRequested
-DefaultEncryption Required
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DefaultEncryption</CODE> directive specifies the
-type of encryption to use when performing authentication. The
-default is <CODE>Required</CODE>.</P>
-
-
-<H2 CLASS="title"><A NAME="DefaultLanguage">DefaultLanguage</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DefaultLanguage de
-DefaultLanguage en
-DefaultLanguage es
-DefaultLanguage fr
-DefaultLanguage it
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DefaultLanguage</CODE> directive specifies the
-default language to use for client connections. Setting the
-default language also sets the default character set if a
-language localization file exists for it. The default language
-is "en" for English.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.4/OS X 10.6</SPAN><A NAME="DefaultPaperSize">DefaultPaperSize</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DefaultPaperSize Letter
-DefaultPaperSize A4
-DefaultPaperSize Auto
-DefaultPaperSize None
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DefaultPaperSize</CODE> directive specifies the default paper
-size to use when creating new printers. The default is <CODE>Auto</CODE>
-which uses a paper size appropriate for the system default locale. A value
-of <CODE>None</CODE> tells the scheduler to not set the default paper
-size.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="DefaultPolicy">DefaultPolicy</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DefaultPolicy default
-DefaultPolicy authenticated
-DefaultPolicy foo
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DefaultPolicy</CODE> directive specifies the default
-policy to use for IPP operation. The default is
-<CODE>default</CODE>. CUPS also includes a policy called
-<CODE>authenticated</CODE> that requires a username and password for printing
-and other job operations.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="DefaultShared">DefaultShared</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DefaultShared Yes
-DefaultShared No
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DefaultShared</CODE> directive specifies whether printers are shared (published) by default. The default is <CODE>Yes</CODE>.</P>
-
-
-<H2 CLASS="title"><A NAME="Deny">Deny</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Location /path&gt;
- ..
- Deny from All
- Deny from None
- Deny from *.example.com
- Deny from .example.com
- Deny from host.example.com
- Deny from nnn.*
- Deny from nnn.nnn.*
- Deny from nnn.nnn.nnn.*
- Deny from nnn.nnn.nnn.nnn
- Deny from nnn.nnn.nnn.nnn/mm
- Deny from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
- Deny from [xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]
- Deny from [xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]/mmm
- Deny from @LOCAL
- Deny from @IF(name)
-&lt;/Location&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Deny</CODE> directive specifies a hostname, IP
-address, or network that is denied access to the server.
-<CODE>Deny</CODE> directives are cumulative, so multiple
-<CODE>Deny</CODE> directives can be used to deny access for
-multiple hosts or networks.</P>
-
-<P>Host and domain name matching require that you enable the <A
-HREF="#HostNameLookups"><CODE>HostNameLookups</CODE></A>
-directive.</P>
-
-<P>The <CODE>/mm</CODE> notation specifies a CIDR netmask, a shown in
-<A HREF="TABLE1">Table 1</A>.</P>
-
-<P>The <CODE>@LOCAL</CODE> name will deny access from all local
-interfaces. The <CODE>@IF(name)</CODE> name will deny access from
-the named interface. In both cases, CUPS only denies access from
-the network that the interface(s) are configured for - requests
-arriving on the interface from a foreign network will
-<em>not</em> be denied.</P>
-
-<P>The <CODE>Deny</CODE> directive must appear inside a <A
-HREF="#Location"><CODE>Location</CODE></A> or <A
-HREF="#Limit"><CODE>Limit</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.4/OS X 10.6</SPAN><A NAME="DirtyCleanInterval">DirtyCleanInterval</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DirtyCleanInterval 1w
-DirtyCleanInterval 1d
-DirtyCleanInterval 1h
-DirtyCleanInterval 1m
-DirtyCleanInterval 30
-DirtyCleanInterval 0
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DirtyCleanInterval</CODE> directive specifies the amount of time to wait before updating configuration and state files for printers, classes, subscriptions, and jobs in seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix). A value of <CODE>0</CODE> causes the update to occur as soon as possible, typically within a few milliseconds.</P>
-
-<P>The default value is <CODE>30</CODE> (30 seconds).</P>
-
-
-<H2 CLASS="title"><A NAME="Encryption">Encryption</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Location /path&gt;
- ...
- Encryption Never
- Encryption IfRequested
- Encryption Required
-&lt;/Location&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Encryption</CODE> directive must appear instead a <A
-HREF="#Location"><CODE>Location</CODE></A> or <A
-HREF="#Limit"><CODE>Limit</CODE></A> section and specifies the
-encryption settings for that location. The default setting is
-<CODE>IfRequested</CODE> for all locations.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.3/OS X 10.5</SPAN><A NAME="ErrorPolicy">ErrorPolicy</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ErrorPolicy abort-job
-ErrorPolicy retry-job
-ErrorPolicy stop-printer
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ErrorPolicy</CODE> directive defines the default policy that
-is used when a backend is unable to send a print job to the
-printer.</P>
-
-<P>The following values are supported:</P>
-
-<UL>
-
- <LI><CODE>abort-job</CODE> - Abort the job and proceed
- with the next job in the queue</LI>
-
- <LI><CODE>retry-job</CODE> - Retry the job after waiting
- for N seconds; the <VAR>cupsd.conf</VAR> <A
- HREF="#JobRetryInterval"><CODE>JobRetryInterval</CODE></A>
- directive controls the value of N</LI>
-
- <LI><CODE>retry-this-job</CODE> - Retry the current job immediately
- and indefinitely.</LI>
-
- <LI><CODE>stop-printer</CODE> - Stop the printer and keep
- the job for future printing; this is the default
- value</LI>
-
-</UL>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.3</SPAN><A NAME="FilterLimit">FilterLimit</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-FilterLimit 0
-FilterLimit 200
-FilterLimit 1000
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>FilterLimit</CODE> directive sets the maximum cost
-of all running job filters. It can be used to limit the number of
-filter programs that are run on a server to minimize disk,
-memory, and CPU resource problems. A limit of 0 disables filter
-limiting.</P>
-
-<P>An average print to a non-PostScript printer needs a filter
-limit of about 200. A PostScript printer needs about half that
-(100). Setting the limit below these thresholds will effectively
-limit the scheduler to printing a single job at any time.</P>
-
-<P>The default limit is 0.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.16</SPAN><A NAME="FilterNice">FilterNice</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-FilterNice 0
-FilterNice 10
-FilterNice 19
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>FilterNice</CODE> directive sets the <B>nice(1)</B>
-value to assign to filter processes. The nice value ranges from
-0, the highest priority, to 19, the lowest priority. The default
-is 0.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.6/OS X 10.8</SPAN><A NAME="GSSServiceName">GSSServiceName</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-GSSServiceName http
-GSSServiceName ipp
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>GSSServiceName</CODE> directive sets the Kerberos service name to use. The default is <CODE>http</CODE> for compatibility with Microsoft Windows.</P>
-
-
-<H2 CLASS="title"><A NAME="HostNameLookups">HostNameLookups</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-HostNameLookups On
-HostNameLookups Off
-HostNameLookups Double
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>HostNameLookups</CODE> directive controls whether or
-not CUPS looks up the hostname for connecting clients. The
-<CODE>Double</CODE> setting causes CUPS to verify that the
-hostname resolved from the address matches one of the addresses
-returned for that hostname. <CODE>Double</CODE> lookups also
-prevent clients with unregistered addresses from connecting to
-your server.</P>
-
-<P>The default is <CODE>Off</CODE> to avoid the potential server
-performance problems with hostname lookups. Set this option to
-<CODE>On</CODE> or <CODE>Double</CODE> only if absolutely
-required.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.9</SPAN><A NAME="Include">Include</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Include filename
-Include /foo/bar/filename
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Include</CODE> directive includes the named file in
-the <CODE>cupsd.conf</CODE> file. If no leading path is provided,
-the file is assumed to be relative to the <A
-HREF="ref-cups-files-conf.html#ServerRoot"><CODE>ServerRoot</CODE></A> directory.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.5</SPAN><A NAME="JobPrivateAccess">JobPrivateAccess</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-JobPrivateAccess all
-JobPrivateAccess default
-JobPrivateAccess {user|@group|@ACL|@OWNER|@SYSTEM}+
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>JobPrivateAccess</CODE> directive specifies the access list for a
-job's private values. The "default" access list is "@OWNER @SYSTEM". "@ACL" maps
-to the printer's requesting-user-name-allowed or requesting-user-name-denied
-values.</P>
-
-<P>The <CODE>JobPrivateAccess</CODE> directive must appear inside a <A
-HREF="#Policy"><CODE>Policy</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.5</SPAN><A NAME="JobPrivateValues">JobPrivateValues</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-JobPrivateValues all
-JobPrivateValues default
-JobPrivateValues none
-JobPrivateValues attribute-name-1 [ ... attribute-name-N ]
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>JobPrivateValues</CODE> directive specifies the list of job values
-to make private. The "default" values are "job-name",
-"job-originating-host-name", "job-originating-user-name", and "phone".</P>
-
-<P>The <CODE>JobPrivateValues</CODE> directive must appear inside a <A
-HREF="#Policy"><CODE>Policy</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="JobRetryInterval">JobRetryInterval</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-JobRetryInterval 1w
-JobRetryInterval 1d
-JobRetryInterval 1h
-JobRetryInterval 1m
-JobRetryInterval 30
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>JobRetryInterval</CODE> directive specifies the amount of time to wait before retrying a job in seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix). This is typically used for fax queues but can also be used with normal print queues whose error policy is <CODE>retry-job</CODE> or <CODE>retry-current-job</CODE>.</P>
-
-<P>The default is <CODE>30</CODE> (30 seconds).</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.4/OS X 10.6</SPAN><A NAME="JobKillDelay">JobKillDelay</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-JobKillDelay 1w
-JobKillDelay 1d
-JobKillDelay 1h
-JobKillDelay 1m
-JobKillDelay 30
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>JobKillDelay</CODE> directive specifies the amount of time to wait before killing the filters and backend associated with a canceled or held job in seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix).</P>
-
-<P>The default is <CODE>30</CODE> (30 seconds).</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="JobRetryLimit">JobRetryLimit</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-JobRetryLimit 5
-JobRetryLimit 50
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>JobRetryLimit</CODE> directive specifies the maximum
-number of times the scheduler will try to print a job. This is
-typically used for fax queues but can also be used with normal
-print queues whose error policy is <CODE>retry-job</CODE>. The
-default is 5 times.</P>
-
-
-<H2 CLASS="title"><A NAME="KeepAlive">KeepAlive</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-KeepAlive On
-KeepAlive Off
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>KeepAlive</CODE> directive controls whether or not
-to support persistent HTTP connections. The default is
-<CODE>On</CODE>.</P>
-
-<P>HTTP/1.1 clients automatically support persistent connections,
-while HTTP/1.0 clients must specifically request them using the
-<CODE>Keep-Alive</CODE> attribute in the <CODE>Connection:</CODE>
-field of each request.</P>
-
-
-<H2 CLASS="title"><A NAME="KeepAliveTimeout">KeepAliveTimeout</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-KeepAliveTimeout 1w
-KeepAliveTimeout 1d
-KeepAliveTimeout 1h
-KeepAliveTimeout 1m
-KeepAliveTimeout 30
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>KeepAliveTimeout</CODE> directive controls how long a persistent HTTP connection will remain open after the last request in seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix).</P>
-
-<P>The default is <CODE>30</CODE> (30 seconds).</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.7</SPAN><A NAME="Limit">Limit (Location)</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Location /path&gt;
- &lt;Limit GET POST&gt;
- ...
- &lt;/Limit&gt;
-
- &lt;Limit ALL&gt;
- ...
- &lt;/Limit&gt;
-&lt;/Location&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Limit</CODE> directive groups access control
-directives for specific types of HTTP requests and must appear
-inside a <A HREF="#Location"><CODE>Location</CODE></A> section.
-Access can be limited for individual request types
-(<CODE>DELETE</CODE>, <CODE>GET</CODE>, <CODE>HEAD</CODE>,
-<CODE>OPTIONS</CODE>, <CODE>POST</CODE>, <CODE>PUT</CODE>, and
-<CODE>TRACE</CODE>) or for all request types (<CODE>ALL</CODE>).
-The request type names are case-sensitive for compatibility with
-Apache.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="LimitIPP">Limit (Policy)</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Policy name&gt;
- &lt;Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer&gt;
- ...
- &lt;/Limit&gt;
-
- &lt;Limit All&gt;
- ...
- &lt;/Limit&gt;
-&lt;/Policy&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>When included in <A HREF="#Policy"><CODE>Policy</CODE></A>
-sections, the <CODE>Limit</CODE> directive groups access control
-directives for specific IPP operations. Multiple operations can
-be listed, separated by spaces. Table 2 lists the supported
-operations.</P>
-
-<DIV CLASS="table"><TABLE SUMMARY="Supported IPP Operations">
-<CAPTION>Table 2: <A NAME="TABLE2">Supported IPP Operations</A></CAPTION>
-<THEAD>
-<TR>
- <TH>Operation Name</TH>
- <TH>Description</TH>
-</TR>
-</THEAD>
-<TBODY>
-<TR>
- <TD>All</TD>
- <TD>All operations - used as the default limit for
- operations that are not listed</TD>
-</TR>
-<TR>
- <TD>Cancel-Job</TD>
- <TD>Cancel a job</TD>
-</TR>
-<TR>
- <TD>Cancel-Subscription</TD>
- <TD>Cancel a subscription</TD>
-</TR>
-<TR>
- <TD>Create-Job</TD>
- <TD>Create a new, empty job</TD>
-</TR>
-<TR>
- <TD>Create-Job-Subscription</TD>
- <TD>Creates a notification subscription on a job</TD>
-</TR>
-<TR>
- <TD>Create-Printer-Subscription</TD>
- <TD>Creates a notification subscription on a printer</TD>
-</TR>
-<TR>
- <TD>CUPS-Accept-Jobs</TD>
- <TD>Sets the printer-is-accepting-jobs value for a printer to true</TD>
-</TR>
-<TR>
- <TD>CUPS-Add-Modify-Class</TD>
- <TD>Adds or modifies a class</TD>
-</TR>
-<TR>
- <TD>CUPS-Add-Modify-Printer</TD>
- <TD>Adds or modifies a printer</TD>
-</TR>
-<TR>
- <TD>CUPS-Authenticate-Job</TD>
- <TD>Authenticates a job for printing</TD>
-</TR>
-<TR>
- <TD>CUPS-Delete-Class</TD>
- <TD>Deletes a class</TD>
-</TR>
-<TR>
- <TD>CUPS-Delete-Printer</TD>
- <TD>Deletes a printer</TD>
-</TR>
-<TR>
- <TD>CUPS-Get-Classes</TD>
- <TD>Gets a list of classes</TD>
-</TR>
-<TR>
- <TD>CUPS-Get-Default</TD>
- <TD>Gets the (network/server) default printer or class</TD>
-</TR>
-<TR>
- <TD>CUPS-Get-Devices</TD>
- <TD>Gets a list of available devices</TD>
-</TR>
-<TR>
- <TD>CUPS-Get-PPDs</TD>
- <TD>Gets a list of available manufacturers or drivers</TD>
-</TR>
-<TR>
- <TD>CUPS-Get-Printers</TD>
- <TD>Gets a list of printers and/or classes</TD>
-</TR>
-<TR>
- <TD>CUPS-Move-Job</TD>
- <TD>Moves a job to a new destination</TD>
-</TR>
-<TR>
- <TD>CUPS-Reject-Jobs</TD>
- <TD>Sets the printer-is-accepting-jobs value for a printer to false</TD>
-</TR>
-<TR>
- <TD>CUPS-Set-Default</TD>
- <TD>Sets the network/server default printer or class</TD>
-</TR>
-<TR>
- <TD>Disable-Printer</TD>
- <TD>Sets the printer-state value for a printer to stopped</TD>
-</TR>
-<TR>
- <TD>Enable-Printer</TD>
- <TD>Sets the printer-state value for a printer to idle/processing</TD>
-</TR>
-<TR>
- <TD>Get-Job-Attributes</TD>
- <TD>Gets information about a job</TD>
-</TR>
-<TR>
- <TD>Get-Jobs</TD>
- <TD>Gets a list of jobs</TD>
-</TR>
-<TR>
- <TD>Get-Notifications</TD>
- <TD>Gets a list of events</TD>
-</TR>
-<TR>
- <TD>Get-Printer-Attributes</TD>
- <TD>Gets information about a printer or class</TD>
-</TR>
-<TR>
- <TD>Get-Subscription-Attributes</TD>
- <TD>Gets information about a notification subscription</TD>
-</TR>
-<TR>
- <TD>Get-Subscriptions</TD>
- <TD>Gets a list of notification subscriptions</TD>
-</TR>
-<TR>
- <TD>Hold-Job</TD>
- <TD>Holds a job for printing</TD>
-</TR>
-<TR>
- <TD>Pause-Printer</TD>
- <TD>Sets the printer-state value for a printer to stopped</TD>
-</TR>
-<TR>
- <TD>Print-Job</TD>
- <TD>Creates a job with a single file for printing</TD>
-</TR>
-<TR>
- <TD>Purge-Jobs</TD>
- <TD>Removes all jobs from a printer</TD>
-</TR>
-<TR>
- <TD>Release-Job</TD>
- <TD>Releases a previously held job for printing</TD>
-</TR>
-<TR>
- <TD>Renew-Subscription</TD>
- <TD>Renews a notification subscription</TD>
-</TR>
-<TR>
- <TD>Restart-Job</TD>
- <TD>Reprints a job</TD>
-</TR>
-<TR>
- <TD>Resume-Printer</TD>
- <TD>Sets the printer-state value for a printer to idle/processing</TD>
-</TR>
-<TR>
- <TD>Send-Document</TD>
- <TD>Adds a file to an job created with Create-Job</TD>
-</TR>
-<TR>
- <TD>Set-Job-Attributes</TD>
- <TD>Changes job options</TD>
-</TR>
-<TR>
- <TD>Validate-Job</TD>
- <TD>Validates job options prior to printing</TD>
-</TR>
-</TBODY>
-</TABLE></DIV>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.7</SPAN><A NAME="LimitExcept">LimitExcept</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Location /path&gt;
- &lt;LimitExcept GET POST&gt;
- ...
- &lt;/LimitExcept&gt;
-&lt;/Location&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>LimitExcept</CODE> directive groups access control
-directives for specific types of HTTP requests and must appear
-inside a <A HREF="#Location"><CODE>Location</CODE></A> section.
-Unlike the <A HREF="#Limit"><CODE>Limit</CODE></A> directive,
-<CODE>LimitExcept</CODE> restricts access for all requests
-<I>except</I> those listed on the <CODE>LimitExcept</CODE>
-line.</P>
-
-
-<H2 CLASS="title"><A NAME="LimitRequestBody">LimitRequestBody</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-LimitRequestBody 10485760
-LimitRequestBody 10m
-LimitRequestBody 0
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>LimitRequestBody</CODE> directive controls the
-maximum size of print files, IPP requests, and HTML form data in
-HTTP POST requests. The default limit is 0 which disables the
-limit check.</P>
-
-
-<H2 CLASS="title"><A NAME="Listen">Listen</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Listen 127.0.0.1:631
-Listen 192.0.2.1:631
-Listen [::1]:631
-Listen *:631
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Listen</CODE> directive specifies a network address
-and port to listen for connections. Multiple <CODE>Listen</CODE>
-directives can be provided to listen on multiple addresses.</P>
-
-<P>The <CODE>Listen</CODE> directive is similar to the <A
-HREF="#Port"><CODE>Port</CODE></A> directive but allows you to
-restrict access to specific interfaces or networks.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.7</SPAN><A NAME="ListenBackLog">ListenBackLog</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ListenBackLog 5
-ListenBackLog 10
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ListenBackLog</CODE> directive sets the maximum
-number of pending connections the scheduler will allow. This
-normally only affects very busy servers that have reached the <A
-HREF="#MaxClients"><CODE>MaxClients</CODE></A> limit, but can
-also be triggered by large numbers of simultaneous connections.
-When the limit is reached, the operating system will refuse
-additional connections until the scheduler can accept the pending
-ones. The default is the OS-defined default limit, typically
-either 5 for older operating systems or 128 for newer operating
-systems.</P>
-
-
-<H2 CLASS="title"><A NAME="Location">Location</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Location /&gt;
-...
-&lt;/Location&gt;
-
-&lt;Location /admin&gt;
-...
-&lt;/Location&gt;
-
-&lt;Location /admin/conf&gt;
-...
-&lt;/Location&gt;
-
-&lt;Location /admin/log&gt;
-...
-&lt;/Location&gt;
-
-&lt;Location /classes&gt;
-...
-&lt;/Location&gt;
-
-&lt;Location /classes/name&gt;
-...
-&lt;/Location&gt;
-
-&lt;Location /jobs&gt;
-...
-&lt;/Location&gt;
-
-&lt;Location /printers&gt;
-...
-&lt;/Location&gt;
-
-&lt;Location /printers/name&gt;
-...
-&lt;/Location&gt;
-
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Location</CODE> directive specifies access control
-and authentication options for the specified HTTP resource or
-path. The <A HREF="#Allow"><CODE>Allow</CODE></A>, <A
-HREF="#AuthType"><CODE>AuthType</CODE></A>, <A
-HREF="#Deny"><CODE>Deny</CODE></A>, <A
-HREF="#Encryption"><CODE>Encryption</CODE></A>, <A
-HREF="#Limit"><CODE>Limit</CODE></A>, <A
-HREF="#LimitExcept"><CODE>LimitExcept</CODE></A>, <A
-HREF="#Order"><CODE>Order</CODE></A>, <A
-HREF="#Require"><CODE>Require</CODE></A>, and <A
-HREF="#Satisfy"><CODE>Satisfy</CODE></A> directives may all
-appear inside a location.</P>
-
-<P>Note that more specific resources override the less specific
-ones. So the directives inside the <CODE>/printers/name</CODE>
-location will override ones from <CODE>/printers</CODE>.
-Directives inside <CODE>/printers</CODE> will override ones from
-<CODE>/</CODE>. None of the directives are inherited.</P>
-
-<DIV CLASS="table"><TABLE SUMMARY="Common Locations on the Server">
-<CAPTION>Table 3: <A NAME="TABLE3">Common Locations on the Server</A></CAPTION>
-<THEAD>
-<TR><TH>Location</TH><TH>Description</TH></TR>
-</THEAD>
-<TBODY>
-<TR><TD><CODE>/</CODE></TD><TD>The path for all get operations (get-printers, get-jobs, etc.)</TD></TR>
-<TR><TD><CODE>/admin</CODE></TD><TD>The path for all administration operations (add-printer, delete-printer, start-printer, etc.)</TD></TR>
-<TR><TD><CODE>/admin/conf</CODE></TD><TD>The path for access to the CUPS configuration files (cupsd.conf, client.conf, etc.)</TD></TR>
-<TR><TD><CODE>/admin/log</CODE></TD><TD>The path for access to the CUPS log files (access_log, error_log, page_log)</TD></TR>
-<TR><TD><CODE>/classes</CODE></TD><TD>The path for all classes</TD></TR>
-<TR><TD><CODE>/classes/name</CODE></TD><TD>The resource for class <CODE>name</CODE></TD></TR>
-<TR><TD><CODE>/jobs</CODE></TD><TD>The path for all jobs (hold-job, release-job, etc.)</TD></TR>
-<TR><TD><CODE>/jobs/id</CODE></TD><TD>The resource for job <CODE>id</CODE></TD></TR>
-<TR><TD><CODE>/printers</CODE></TD><TD>The path for all printers</TD></TR>
-<TR><TD><CODE>/printers/name</CODE></TD><TD>The path for printer <CODE>name</CODE></TD></TR>
-<TR><TD><CODE>/printers/name.ppd</CODE></TD><TD>The PPD file path for printer <CODE>name</CODE></TD></TR>
-</TBODY>
-</TABLE></DIV>
-
-
-<H2 CLASS="title"><A NAME="LogDebugHistory">LogDebugHistory</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-LogDebugHistory 0
-LogDebugHistory 200
-</PRE>
-
-<H3>Description</H3>
-
-<P>When <A HREF="#LogLevel"><CODE>LogLevel</CODE></A> is not set to
-<CODE>debug</CODE> or <CODE>debug2</CODE>, the <CODE>LogDebugHistory</CODE>
-directive specifies the number of debugging messages that are logged when an
-error occurs during printing. The default is 200 messages. A value of 0
-disables debugging history entirely and is not recommended.</P>
-
-
-<H2 CLASS="title"><A NAME="LogLevel">LogLevel</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-LogLevel none
-LogLevel emerg
-LogLevel alert
-LogLevel crit
-LogLevel error
-LogLevel warn
-LogLevel notice
-LogLevel info
-LogLevel debug
-LogLevel debug2
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>LogLevel</CODE> directive specifies the level of
-logging for the <A HREF="ref-cups-files-conf.html#ErrorLog"><CODE>ErrorLog</CODE></A>
-file. The following values are recognized (each level logs
-everything under the preceding levels):</P>
-
-<UL>
-
- <LI><CODE>none</CODE> - Log nothing</LI>
-
- <LI><CODE>emerg</CODE> - Log emergency conditions that
- prevent the server from running</LI>
-
- <LI><CODE>alert</CODE> - Log alerts that must be handled
- immediately</LI>
-
- <LI><CODE>crit</CODE> - Log critical errors that don't
- prevent the server from running</LI>
-
- <LI><CODE>error</CODE> - Log general errors</LI>
-
- <LI><CODE>warn</CODE> - Log errors and warnings</LI>
-
- <LI><CODE>notice</CODE> - Log temporary error conditions</LI>
-
- <LI><CODE>info</CODE> - Log all requests and state
- changes</LI>
-
- <LI><CODE>debug</CODE> - Log basic debugging
- information</LI>
-
- <LI><CODE>debug2</CODE> - Log all debugging
- information</LI>
-
-</UL>
-
-<p>The default <code>LogLevel</code> is <code>@CUPS_LOG_LEVEL@</code>.</p>
-
-
-<H2 CLASS="title"><A NAME="LogTimeFormat">LogTimeFormat</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-LogTimeFormat standard
-LogTimeFormat usecs
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>LogTimeFormat</CODE> directive specifies the format used for the
-date and time in the log files. <CODE>Standard</CODE> uses the standard Apache
-Common Log Format date and time while <CODE>usecs</CODE> adds microseconds.
-The default is <CODE>standard</CODE>.</P>
-
-
-<H2 CLASS="title"><A NAME="MaxClients">MaxClients</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxClients 100
-MaxClients 1024
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxClients</CODE> directive controls the maximum
-number of simultaneous clients that will be allowed by the
-server. The default is 100 clients.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>Since each print job requires a file descriptor for the status
-pipe, the scheduler internally limits the <CODE>MaxClients</CODE>
-value to 1/3 of the available file descriptors to avoid possible
-problems when printing large numbers of jobs.</P>
-
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.18</SPAN><A NAME="MaxClientsPerHost">MaxClientsPerHost</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxClientsPerHost 10
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxClientsPerHost</CODE> directive controls the
-maximum number of simultaneous clients that will be allowed from
-a single host by the server. The default is the
-<CODE>MaxClients</CODE> value.</P>
-
-<P>This directive provides a small measure of protection against
-Denial of Service attacks from a single host.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.16</SPAN><A NAME="MaxCopies">MaxCopies</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxCopies 100
-MaxCopies 65535
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxCopies</CODE> directive controls the maximum
-number of copies that a user can print of a job. The default is
-@CUPS_MAX_COPIES@ copies.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>Most HP PCL laser printers internally limit the number of
-copies to 100.</P>
-
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.6/OS X 10.8</SPAN><A NAME="MaxHoldTime">MaxHoldTime</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxHoldTime 10800
-MaxHoldTime 3h
-MaxHoldTime 180m
-MaxHoldTime 0
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxHoldTime</CODE> directive controls the maximum number of seconds allowed for a job to remain in the "indefinite" hold state. The job is canceled automatically if it remains held indefinitely longer than the specified time interval in seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix).</P>
-
-<p>The default setting is <CODE>0</CODE> which disables this functionality.</P>
-
-
-<H2 CLASS="title"><A NAME="MaxJobs">MaxJobs</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxJobs 100
-MaxJobs 9999
-MaxJobs 0
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxJobs</CODE> directive controls the maximum number
-of jobs that are kept in memory. Once the number of jobs reaches
-the limit, the oldest completed job is automatically purged from
-the system to make room for the new one. If all of the known jobs
-are still pending or active then the new job will be
-rejected.</P>
-
-<P>Setting the maximum size to 0 disables this functionality. The
-default setting is 500.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.7</SPAN><A NAME="MaxJobsPerPrinter">MaxJobsPerPrinter</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxJobsPerPrinter 100
-MaxJobsPerPrinter 9999
-MaxJobsPerPrinter 0
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxJobsPerPrinter</CODE> directive controls the
-maximum number of active jobs that are allowed for each printer
-or class. Once a printer or class reaches the limit, new jobs
-will be rejected until one of the active jobs is completed,
-stopped, aborted, or canceled.</P>
-
-<P>Setting the maximum to 0 disables this functionality. The
-default setting is 0.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.7</SPAN><A NAME="MaxJobsPerUser">MaxJobsPerUser</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxJobsPerUser 100
-MaxJobsPerUser 9999
-MaxJobsPerUser 0
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxJobsPerUser</CODE> directive controls the maximum
-number of active jobs that are allowed for each user. Once a user
-reaches the limit, new jobs will be rejected until one of the
-active jobs is completed, stopped, aborted, or canceled.</P>
-
-<P>Setting the maximum to 0 disables this functionality. The
-default setting is 0.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.6/OS X 10.8</SPAN><A NAME="MaxJobTime">MaxJobTime</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxJobTime 10800
-MaxJobTime 3h
-MaxJobTime 180m
-MaxJobTime 0
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxJobTime</CODE> directive controls the maximum number of
-seconds allowed for a job to complete printing before it is considered "stuck".
-The job is canceled automatically if it takes longer than the specified time to complete in seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix).</P>
-
-<p>Setting the maximum time to <CODE>0</CODE> disables this functionality. The default setting is <CODE>3h</CODE> (3 hours).</P>
-
-
-<H2 CLASS="title"><A NAME="MaxLogSize">MaxLogSize</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxLogSize 1048576
-MaxLogSize 1m
-MaxLogSize 0
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxLogSize</CODE> directive controls the maximum
-size of each log file. Once a log file reaches or exceeds the
-maximum size it is closed and renamed to <VAR>filename.O</VAR>.
-This allows you to rotate the logs automatically. The default
-size is 1048576 bytes (1MB).</P>
-
-<P>Setting the maximum size to 0 disables log rotation.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">Deprecated</SPAN><A NAME="MaxRequestSize">MaxRequestSize</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxRequestSize 10485760
-MaxRequestSize 10m
-MaxRequestSize 0
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxRequestSize</CODE> directive controls the maximum
-size of print files, IPP requests, and HTML form data in HTTP
-POST requests. The default limit is 0 which disables the limit
-check.</P>
-
-<P><B>This directive is deprecated and will be removed in a
-future CUPS release.</B> Use the <A
-HREF="#LimitRequestBody"><CODE>LimitRequestBody</CODE></A>
-directive instead.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.4/OS X 10.6</SPAN><A NAME="MultipleOperationTimeout">MultipleOperationTimeout</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MultipleOperationTimeout 1w
-MultipleOperationTimeout 1d
-MultipleOperationTimeout 1h
-MultipleOperationTimeout 5m
-MultipleOperationTimeout 300
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MultipleOperationTimeout</CODE> directive sets the maximum amount of time between files in a multi-file print job in seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix).</P>
-
-<P>The default is <CODE>5m</CODE> (five minutes).</P>
-
-
-<H2 CLASS="title"><A NAME="Order">Order</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Location /path&gt;
- ...
- Order Allow,Deny
- Order Deny,Allow
-&lt;/Location&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Order</CODE> directive defines the default access
-control. The following values are supported:</P>
-
-<UL>
-
- <LI><CODE>allow,deny</CODE> - Deny requests by default,
- then check the <A HREF="#Allow"><CODE>Allow</CODE></A>
- lines followed by the <A
- HREF="#Deny"><CODE>Deny</CODE></A> lines</LI>
-
- <LI><CODE>deny,allow</CODE> - Allow requests by default,
- then check the <A HREF="#Deny"><CODE>Deny</CODE></A>
- lines followed by the <A
- HREF="#Allow"><CODE>Allow</CODE></A> lines</LI>
-
-</UL>
-
-<P>The <CODE>Order</CODE> directive must appear inside a <A
-HREF="#Location"><CODE>Location</CODE></A> or <A
-HREF="#Limit"><CODE>Limit</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="PageLogFormat">PageLogFormat</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-PageLogFormat %p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}
-PageLogFormat PAGE %p %u %j %P %C %{job-billing} %{job-originating-host-name}
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PageLogFormat</CODE> directive sets the format of lines
-that are logged to the page log file. Sequences beginning with percent (%)
-characters are replaced with the corresponding information, while all other
-characters are copied literally. The following percent sequences are
-recognized:</P>
-
-<UL>
-
- <LI><CODE>%%</CODE>: Inserts a single percent character.</LI>
-
- <LI><CODE>%{name}</CODE>: Inserts the value of the specified IPP
- attribute.</LI>
-
- <LI><CODE>%C</CODE>: Inserts the number of copies for the current page.</LI>
-
- <LI><CODE>%P</CODE>: Inserts the current page number.</LI>
-
- <LI><CODE>%T</CODE>: Inserts the current date and time in common log
- format.</LI>
-
- <LI><CODE>%j</CODE>: Inserts the job ID.</LI>
-
- <LI><CODE>%p</CODE>: Inserts the printer name.</LI>
-
- <LI><CODE>%u</CODE>: Inserts the username.</LI>
-
-</UL>
-
-<P>The default is "%p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}".</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="PassEnv">PassEnv</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-PassEnv MY_ENV_VARIABLE
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PassEnv</CODE> directive specifies an environment
-variable that should be passed to child processes. Normally, the
-scheduler only passes the <CODE>DYLD_LIBRARY_PATH</CODE>,
-<CODE>LD_ASSUME_KERNEL</CODE>, <CODE>LD_LIBRARY_PATH</CODE>,
-<CODE>LD_PRELOAD</CODE>, <CODE>NLSPATH</CODE>,
-<CODE>SHLIB_PATH</CODE>, <CODE>TZ</CODE>, and <CODE>VGARGS</CODE>
-environment variables to child processes.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="Policy">Policy</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Policy name&gt;
- &lt;Limit operation ... operation&gt;
- ...
- &lt;/Limit&gt;
- &lt;Limit operation ... operation&gt;
- ...
- &lt;/Limit&gt;
- &lt;Limit All&gt;
- ...
- &lt;/Limit&gt;
-&lt;/Policy&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Policy</CODE> directive specifies IPP operation
-access control limits. Each policy contains 1 or more <A
-HREF="#LimitIPP"><CODE>Limit</CODE></A> sections to set the
-access control limits for specific operations - user limits,
-authentication, encryption, and allowed/denied addresses,
-domains, or hosts. The <CODE>&lt;Limit All&gt;</CODE> section
-specifies the default access control limits for operations that
-are not listed.</P>
-
-<P>Policies are named and associated with printers via the
-printer's operation policy setting
-(<CODE>printer-op-policy</CODE>). The default policy for the
-scheduler is specified using the <A
-HREF="#DefaultPolicy"><CODE>DefaultPolicy</CODE></A>
-directive.</P>
-
-
-<H2 CLASS="title"><A NAME="Port">Port</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Port 631
-Port 80
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Port</CODE> directive specifies a port to listen on.
-Multiple <CODE>Port</CODE> lines can be specified to listen on
-multiple ports. The <CODE>Port</CODE> directive is equivalent to
-"<CODE>Listen *:nnn</CODE>". The default port is 631.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>On systems that support IPv6, this directive will bind to both
-the IPv4 and IPv6 wildcard address.</P>
-
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><A NAME="PreserveJobHistory">PreserveJobHistory</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-PreserveJobHistory On
-PreserveJobHistory Off
-PreserveJobHistory 1w
-PreserveJobHistory 7d
-PreserveJobHistory 168h
-PreserveJobHistory 10080m
-PreserveJobHistory 604800
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PreserveJobHistory</CODE> directive controls whether the history of completed, canceled, or aborted print jobs is retained by the scheduler. A value of <CODE>On</CODE> preserves job information until the administrator purges it with the <CODE>cancel</CODE> command. A value of <CODE>Off</CODE> removes the job information as soon as each job is completed, canceled, or aborted. Numeric values preserve job information for the specified number of seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix).</P>
-
-<P>The default value is <CODE>On</CODE>.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>The <A HREF="#MaxJobs"><CODE>MaxJobs</CODE></A>, <A HREF="#MaxJobsPerPrinter"><CODE>MaxJobsPerPrinter</CODE></A>, and <A HREF="#MaxJobsPerUser"><CODE>MaxJobsPerUser</CODE></A> directives can cause job history to be discarded to make room for new jobs.</P>
-
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><A NAME="PreserveJobFiles">PreserveJobFiles</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-PreserveJobFiles On
-PreserveJobFiles Off
-PreserveJobFiles 1w
-PreserveJobFiles 7d
-PreserveJobFiles 168h
-PreserveJobFiles 10080m
-PreserveJobFiles 604800
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PreserveJobFiles</CODE> directive controls whether the document files of completed, canceled, or aborted print jobs are retained. Jobs can be restarted (and reprinted) as desired until they are purged.</P>
-
-<P>A value of <CODE>On</CODE> preserves job files until the administrator purges them with the <CODE>cancel</CODE> command. A value of <CODE>Off</CODE> removes the job files as soon as each job is completed, canceled, or aborted. Numeric values preserve job files for the specified number of seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix).</P>
-
-<P>The default value is <CODE>1d</CODE> (one day).</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>The <A HREF="#MaxJobs"><CODE>MaxJobs</CODE></A>, <A HREF="#MaxJobsPerPrinter"><CODE>MaxJobsPerPrinter</CODE></A>, <A HREF="#MaxJobsPerUser"><CODE>MaxJobsPerUser</CODE></A>, and <A HREF="#PreserveJobHistory"><CODE>PreserveJobHistory</CODE></A> directives can cause job files to be discarded sooner than specified.</P>
-
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.21</SPAN><A NAME="ReloadTimeout">ReloadTimeout</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ReloadTimeout 0
-ReloadTimeout 30
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ReloadTimeout</CODE> directive specifies the number
-of seconds the scheduler will wait for active jobs to complete
-before doing a restart. The default is 30 seconds.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.7</SPAN><A NAME="Require">Require</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Location /path&gt;
- ...
- Require group foo bar
- Require user john mary
- Require valid-user
- Require user @groupname
- Require user @SYSTEM
- Require user @OWNER
-&lt;/Location&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Require</CODE> directive specifies that
-authentication is required for the resource. The
-<CODE>group</CODE> keyword specifies that the authenticated user
-must be a member of one or more of the named groups that
-follow.</P>
-
-<P>The <CODE>user</CODE> keyword specifies that the
-authenticated user must be one of the named users or groups that
-follow. Group names are specified using the "@" prefix.</P>
-
-<P>The <CODE>valid-user</CODE> keyword specifies that any
-authenticated user may access the resource.</P>
-
-<P>The default is to do no authentication. This directive must
-appear inside a <A HREF="#Location"><CODE>Location</CODE></A> or
-<A HREF="#Limit"><CODE>Limit</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="RIPCache">RIPCache</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-RIPCache 128m
-RIPCache 1g
-RIPCache 2048k
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>RIPCache</CODE> directive sets the size of the
-memory cache used by Raster Image Processor ("RIP") filters such
-as <CODE>imagetoraster</CODE> and <CODE>pstoraster</CODE>. The
-size can be suffixed with a "k" for kilobytes, "m" for megabytes,
-or "g" for gigabytes. The default cache size is "128m", or 128
-megabytes.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.16</SPAN><A NAME="RootCertDuration">RootCertDuration</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-RootCertDuration 0
-RootCertDuration 1w
-RootCertDuration 1d
-RootCertDuration 1h
-RootCertDuration 5m
-RootCertDuration 300
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>RootCertDuration</CODE> directive specifies the amount of time the <EM>root certificate</EM> remains valid in seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix). The scheduler will generate a new certificate as needed when the given time interval has expired. If set to 0, the root certificate is generated only once on startup or on a restart.</P>
-
-<P>The default is <CODE>5m</CODE> (five minutes).</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.7</SPAN><A NAME="Satisfy">Satisfy</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Location /path&gt;
- ...
- Satisfy all
- Satisfy any
-&lt;/Location&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Satisfy</CODE> directive specifies whether all
-conditions must be satisfied to allow access to the resource. If
-set to <CODE>all</CODE>, then all authentication and access
-control conditions must be satisfied to allow access.</P>
-
-<P>Setting <CODE>Satisfy</CODE> to <CODE>any</CODE> allows a user
-to gain access if the authentication or access control
-requirements are satisfied. For example, you might require
-authentication for remote access, but allow local access without
-authentication.</P>
-
-<P>The default is <CODE>all</CODE>. This directive must appear
-inside a <A HREF="#Location"><CODE>Location</CODE></A> or <A
-HREF="#Limit"><CODE>Limit</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="ServerAdmin">ServerAdmin</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ServerAdmin user@host
-ServerAdmin root@foo.bar.com
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ServerAdmin</CODE> directive identifies the email
-address for the administrator on the system. By default the
-administrator email address is <CODE>root@server</CODE>, where
-<CODE>server</CODE> is the <A
-HREF="#ServerName"><CODE>ServerName</CODE></A>.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.3.10</SPAN><A NAME="ServerAlias">ServerAlias</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ServerAlias althost
-ServerAlias foo.example.com
-ServerAlias bar.example.com
-ServerAlias one.example.com two.example.com
-ServerAlias *
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ServerAlias</CODE> directive specifies alternate names that the server is known by. By default it contains a list of all aliases associated with the <A HREF="#ServerName"><CODE>ServerName</CODE></A>. The special name "*" can be used to allow any hostname when accessing CUPS via an external network interfaces.</P>
-
-<BLOCKQUOTE><B>Note</B>
-
-<P>The <CODE>ServerAlias</CODE> directive is used for HTTP Host header
-validation when clients connect to the scheduler from external interfaces.
-Using the special name "*" can expose your system to known browser-based
-DNS rebinding attacks, even when accessing sites through a firewall. If the
-auto-discovery of alternate names does not work, we recommend listing each
-alternate name with a ServerAlias directive instead of using "*".</P>
-
-</BLOCKQUOTE>
-
-
-<H2 CLASS="title"><A NAME="ServerName">ServerName</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ServerName foo.example.com
-ServerName myserver.example.com
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ServerName</CODE> directive specifies the hostname
-that is reported to clients. By default the server name is the
-hostname.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.1.21</SPAN><A NAME="ServerTokens">ServerTokens</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-ServerTokens None
-ServerTokens ProductOnly
-ServerTokens Major
-ServerTokens Minor
-ServerTokens Minimal
-ServerTokens OS
-ServerTokens Full
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ServerTokens</CODE> directive specifies the
-information that is included in the <CODE>Server:</CODE> header
-of all HTTP responses. Table 4 lists the token name along with
-the text that is returned. The default is
-<CODE>Minimal</CODE>.</P>
-
-<DIV CLASS="table"><TABLE SUMMARY="ServerToken Names and Values">
-<CAPTION>Table 4: <A NAME="TABLE4">ServerToken Names and Values</A></CAPTION>
-<THEAD>
-<TR>
- <TH>Name</TH>
- <TH>Value</TH>
-</TR>
-</THEAD>
-<TBODY>
-<TR>
- <TD>None</TD>
- <TD>No <CODE>Server:</CODE> header is returned</TD>
-</TR>
-<TR>
- <TD>ProductOnly</TD>
- <TD>"CUPS"</TD>
-</TR>
-<TR>
- <TD>Major</TD>
- <TD>"CUPS 1"</TD>
-</TR>
-<TR>
- <TD>Minor</TD>
- <TD>"CUPS 1.2"</TD>
-</TR>
-<TR>
- <TD>Minimal</TD>
- <TD>"CUPS 1.2.N" where N is the patch release</TD>
-</TR>
-<TR>
- <TD>OS</TD>
- <TD>"CUPS 1.2.N (UNAME)" where N is the patch release and
- UNAME is the output of the <B>uname(1)</B> command</TD>
-</TR>
-<TR>
- <TD>Full</TD>
- <TD>"CUPS 1.2.N (UNAME) IPP/1.1" where N is the patch
- release and UNAME is the output of the <B>uname(1)</B>
- command</TD>
-</TR>
-</TBODY>
-</TABLE></DIV>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2/OS X 10.5</SPAN><A NAME="SetEnv">SetEnv</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-SetEnv PATH /usr/lib/cups/filter:/bin:/usr/bin:/usr/local/bin
-SetEnv MY_ENV_VAR foo
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>SetEnv</CODE> directive specifies an environment
-variable that should be passed to child processes.</P>
-
-
-<H2 CLASS="title"><A NAME="SSLListen">SSLListen</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-SSLListen 127.0.0.1:443
-SSLListen 192.0.2.1:443
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>SSLListen</CODE> directive specifies a network
-address and port to listen for secure connections. Multiple
-<CODE>SSLListen</CODE> directives can be provided to listen on
-multiple addresses.</P>
-
-<P>The <CODE>SSLListen</CODE> directive is similar to the <A
-HREF="#SSLPort"><CODE>SSLPort</CODE></A> directive but allows you
-to restrict access to specific interfaces or networks.</P>
-
-
-<H2 CLASS="title"><A NAME="SSLOptions">SSLOptions</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-SSLOptions None
-SSLOptions NoEmptyFragments
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>SSLOptions</CODE> directive specifies additional SSL/TLS
-protocol options to use for encrypted connected. Currently only two
-options are supported - <code>None</code> (the default) for the most
-secure mode and <code>NoEmptyFragments</code> to allow CUPS to work with
-Microsoft Windows with the FIPS conformance mode enabled.</p>
-
-
-<H2 CLASS="title"><A NAME="SSLPort">SSLPort</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-SSLPort 443
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>SSLPort</CODE> directive specifies a port to listen
-on for secure connections. Multiple <CODE>SSLPort</CODE> lines
-can be specified to listen on multiple ports.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.6</SPAN><A NAME="StrictConformance">StrictConformance</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-StrictConformance No
-StrictConformance Yes
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>StrictConformance</CODE> directive specifies whether the scheduler
-requires strict IPP conformance for client requests, for example to not allow
-document attributes in a Create-Job request. The default is
-<code>No</code>.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.5</SPAN><A NAME="SubscriptionPrivateAccess">SubscriptionPrivateAccess</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-SubscriptionPrivateAccess all
-SubscriptionPrivateAccess default
-SubscriptionPrivateAccess {user|@group|@ACL|@OWNER|@SYSTEM}+
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>SubscriptionPrivateAccess</CODE> directive specifies the access list for a
-subscription's private values. The "default" access list is "@OWNER @SYSTEM".
-"@ACL" maps to the printer's requesting-user-name-allowed or
-requesting-user-name-denied values.</P>
-
-<P>The <CODE>SubscriptionPrivateAccess</CODE> directive must appear inside a <A
-HREF="#Policy"><CODE>Policy</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.5</SPAN><A NAME="SubscriptionPrivateValues">SubscriptionPrivateValues</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-SubscriptionPrivateValues all
-SubscriptionPrivateValues default
-SubscriptionPrivateValues none
-SubscriptionPrivateValues attribute-name-1 [ ... attribute-name-N ]
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>SubscriptionPrivateValues</CODE> directive specifies the list of
-subscription values to make private. The "default" values are "notify-events",
-"notify-pull-method", "notify-recipient-uri", "notify-subscriber-user-name", and
-"notify-user-data".</P>
-
-<P>The <CODE>SubscriptionPrivateValues</CODE> directive must appear inside a <A
-HREF="#Policy"><CODE>Policy</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="Timeout">Timeout</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Timeout 1w
-Timeout 1d
-Timeout 1h
-Timeout 5m
-Timeout 300
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Timeout</CODE> directive controls the amount of time
-to wait before an active HTTP or IPP request times out in seconds (no suffix), minutes ("m" suffix), hours ("h" suffix), days ("d" suffix), or weeks ("w" suffix).</P>
-
-<P>The default timeout is <CODE>5m</CODE> (five minutes).</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="INFO">CUPS 1.5</SPAN><A NAME="WebInterface">WebInterface</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-WebInterface Yes
-WebInterface No
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>WebInterface</CODE> directive specifies whether the web interface is enabled. The default value is <CODE>No</CODE> on OS X and <CODE>Yes</CODE> on all other operating systems.</P>
-
-</BODY>
-</HTML>
diff --git a/doc/help/ref-error_log.html b/doc/help/ref-error_log.html
deleted file mode 100644
index 010927802..000000000
--- a/doc/help/ref-error_log.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
- <TITLE>error_log</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">error_log</H1>
-
-<P>The <VAR>error_log</VAR> file lists messages from the
-scheduler - errors, warnings, etc. The <A
-HREF="ref-cupsd-conf.html#LogLevel"><CODE>LogLevel</CODE></A>
-directive controls which messages are logged:</P>
-
-<P CLASS="command">
-
-level date-time message<BR>
-
-<BR>
-
-I [20/May/1999:19:18:28 +0000] Job 1 queued on 'DeskJet' by 'mike'.<BR>
-
-I [20/May/1999:19:21:02 +0000] Job 2 queued on 'DeskJet' by 'mike'.<BR>
-
-I [20/May/1999:19:22:24 +0000] Job 2 was cancelled by 'mike'.<BR>
-
-</P>
-
-<P>The <I>level</I> field contains the type of message:</P>
-
-<UL>
-
- <LI><CODE>A</CODE> - Alert message (LogLevel alert)
- <LI><CODE>C</CODE> - Critical error message (LogLevel crit)
- <LI><CODE>D</CODE> - Debugging message (LogLevel debug)
- <LI><CODE>d</CODE> - Detailed debugging message (LogLevel debug2)
- <LI><CODE>E</CODE> - Normal error message (LogLevel error)
- <LI><CODE>I</CODE> - Informational message (LogLevel info)
- <LI><CODE>N</CODE> - Notice message (LogLevel notice)
- <LI><CODE>W</CODE> - Warning message (LogLevel warn)
- <LI><CODE>X</CODE> - Emergency error message (LogLevel emerg)
-
-</UL>
-
-<P>The <I>date-time</I> field contains the date and time of when
-the page started printing. The format of this field is identical
-to the <I>data-time</I> field in the <VAR>access_log</VAR> file.</P>
-
-<P>The <I>message</I> fields contains a free-form textual
-message. Messages from job filters are prefixed with "<CODE>[Job
-NNN]</CODE>".</P>
-
-</BODY>
-</HTML>
diff --git a/doc/help/ref-mailto-conf.html b/doc/help/ref-mailto-conf.html
deleted file mode 100644
index 0b9513220..000000000
--- a/doc/help/ref-mailto-conf.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
- <TITLE>mailto.conf</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">mailto.conf</H1>
-
-<P>The <VAR>/etc/cups/mailto.conf</VAR> file contains several
-directives that defines the local mail server and email
-notification preferences for CUPS. Each directive is listed on a
-line by itself followed by its value. Comments are introduced
-using the number sign ("#") character at the beginning of a
-line.</P>
-
-
-<H2 CLASS="title"><A NAME="Cc">Cc</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Cc bigbrother@example.com
-Cc John Doe &lt;jd@example.com>
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Cc</CODE> directive specifies an additional
-recipient ("carbon copy") for all email notifications. The
-default is to not send a copy to anyone but the subscriber.</P>
-
-
-<H2 CLASS="title"><A NAME="From">From</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-From printserver@example.com
-From Your Happy Printer &lt;printserver@example.com>
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>From</CODE> directive specifies the sender of email
-notifications. The default is the <A
-HREF="ref-cupsd-conf.html#ServerAdmin"><TT>ServerAdmin</TT><A>
-address defined in the <VAR>cupsd.conf</VAR> file.</P>
-
-
-<H2 CLASS="title"><A NAME="Sendmail">Sendmail</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Sendmail /usr/sbin/sendmail
-Sendmail /usr/lib/sendmail -bm -i
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Sendmail</CODE> directive specifies the command to
-run to deliver an email locally. This directive cannot be used
-with the <TT>SMTPServer</TT> directive, and if both
-<TT>Sendmail</TT> and <TT>SMTPServer</TT> lines appear in the
-<VAR>mailto.conf</VAR> file, only the last line is used. The
-default is <TT>/usr/sbin/sendmail</TT>.</P>
-
-
-<H2 CLASS="title"><A NAME="SMTPServer">SMTPServer</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-SMTPServer mail.example.com
-SMTPServer 192.168.2.1
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>SMTPServer</CODE> directive specifies a hostname or
-IP address of a (possibly remote) SMTP mail server. This
-directive cannot be used with the <TT>Sendmail</TT> directive,
-and if both <TT>Sendmail</TT> and <TT>SMTPServer</TT> lines
-appear in the <VAR>mailto.conf</VAR> file, only the last line is
-used. The default is to use the <TT>Sendmail</TT> command
-instead.</P>
-
-
-<H2 CLASS="title"><A NAME="Subject">Subject</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Subject [CUPS]
-Subject URGENT EMAIL NOTIFICATION
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Subject</CODE> directive specifies a prefix string to
-add to the subject of each email notification. The default is to
-not add a prefix string.</P>
-
-
-</BODY>
-</HTML>
diff --git a/doc/help/ref-page_log.html b/doc/help/ref-page_log.html
deleted file mode 100644
index 46453eb2e..000000000
--- a/doc/help/ref-page_log.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
- <TITLE>page_log</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">page_log</H1>
-
-<P>The <VAR>page_log</VAR> file lists each page that is sent to a
-printer. By default, each line contains the following information:</P>
-
-<P CLASS="command">
-
-printer user job-id date-time page-number num-copies job-billing job-originating-host-name job-name media sides<BR>
-
-<BR>
-
-DeskJet root 2 [20/May/1999:19:21:05 +0000] 1 1 acme-123 localhost myjob letter one-sided<BR>
-
-DeskJet root 2 [20/May/1999:19:21:05 +0000] 2 1 acme-123 localhost myjob letter one-sided<BR>
-
-</P>
-
-<p>The <a href="ref-cupsd-conf.html#PageLogFormat"><code>PageLogFormat</code></a>
-directive can be used to change this information.</p>
-
-<P>The <I>printer</I> field contains the name of the printer that
-printed the page. If you send a job to a printer class, this
-field will contain the name of the printer that was assigned the
-job.</P>
-
-<P>The <I>user</I> field contains the name of the user (the IPP
-<CODE>requesting-user-name</CODE> attribute) that submitted this
-file for printing.</P>
-
-<P>The <I>job-id</I> field contains the job number of the page
-being printed. Job numbers are reset to 1 whenever the spool
-directory (<VAR>/var/spool/cups</VAR>) is cleared, so don't
-depend on this number being unique!</P>
-
-<P>The <I>date-time</I> field contains the date and time of when
-the page started printing. The format of this field is identical
-to the <I>data-time</I> field in the <VAR>access_log</VAR>
-file.</P>
-
-<P>The <I>page-number</I> and <I>num-copies</I> fields contain the
-page number and number of copies being printed of that page. For
-printers that cannot produce copies on their own, the
-<I>num-copies</I> field will always be 1.</P>
-
-<P>The <I>job-billing</I> field contains a copy of the
-<CODE>job-billing</CODE> attribute provided with the IPP
-<CODE>Create-Job</CODE> or <CODE>Print-Job</CODE> requests or "-"
-if none was provided.
-
-<P>The <I>job-originating-host-name</I> field contains the hostname or IP
-address of the client that printed the job.</P>
-
-<P>The <I>job-name</I> field contains a copy of the
-<CODE>job-name</CODE> attribute provided with the IPP
-<CODE>Create-Job</CODE> or <CODE>Print-Job</CODE> requests or "-"
-if none was provided.
-
-<P>The <I>media</I> field contains a copy of the
-<CODE>media</CODE> attribute provided with the IPP
-<CODE>Create-Job</CODE> or <CODE>Print-Job</CODE> requests or "-"
-if none was provided.
-
-<P>The <I>sides</I> field contains a copy of the
-<CODE>sides</CODE> attribute provided with the IPP
-<CODE>Create-Job</CODE> or <CODE>Print-Job</CODE> requests or "-"
-if none was provided.
-
-</BODY>
-</HTML>
diff --git a/doc/help/ref-printers-conf.html b/doc/help/ref-printers-conf.html
deleted file mode 100644
index bb44c4c68..000000000
--- a/doc/help/ref-printers-conf.html
+++ /dev/null
@@ -1,719 +0,0 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
- <TITLE>printers.conf</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">printers.conf</H1>
-
-<P>The CUPS scheduler (cupsd) uses the
-<VAR>/etc/cups/printers.conf</VAR> file to store the list of
-available printers. This file contains only locally defined
-printers, not remote printers that are created automatically via
-browsing. Each directive is listed on a line by itself followed
-by its value. Comments are introduced using the number sign ("#")
-character at the beginning of a line.</P>
-
-<P>While the printer configuration file consists of plain text
-and can be modified using your favorite text editor, you should
-normally use the <A HREF="man-lpadmin.html">lpadmin(8)</A>
-command, web interface, or any of the available GUIs to manage
-your printers instead. If you do choose to edit this file
-manually, you will need to stop the scheduler first, make your
-changes, and then start the scheduler to make them active.</P>
-
-
-<H2 CLASS="title"><A NAME="Accepting">Accepting</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
- Accepting yes
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Accepting</CODE> directive defines the initial state
-of the <VAR>printer-is-accepting-jobs</VAR> attribute. This state
-is also set by the <CODE>cupsaccept(8)</CODE> and
-<CODE>cupsreject(8)</CODE> commands:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/cupsaccept printername
-/usr/sbin/cupsreject printername</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="AllowUser">AllowUser</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
- AllowUser foo_user
- AllowUser @bar_group
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>AllowUser</CODE> directive adds a username or group
-name to the <VAR>requesting-user-name-allowed</VAR> attribute
-which can be set by the <CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -u allow:foo_user,@bar_group</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A> directive.
-This directive cannot be used with <A
-HREF="#DenyUser"><CODE>DenyUser</CODE></A>.</P>
-
-
-<H2 CLASS="title"><A NAME="DefaultPrinter">DefaultPrinter</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;DefaultPrinter name&gt;
- ...
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DefaultPrinter</CODE> directive begins a printer
-definition as the default server destination. The default server
-destination can be set using the <CODE>lpadmin(8)</CODE>
-command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -d printername</KBD>
-</PRE>
-
-<P>Note that the server default destination settings can be
-overridden by the user's default destination settings which are
-normally set using the <CODE>lpoptions(1)</CODE> command.</P>
-
-
-<H2 CLASS="title"><A NAME="DenyUser">DenyUser</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
- DenyUser foo_user
- DenyUser @bar_group
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DenyUser</CODE> directive adds a username or group
-name to the <VAR>requesting-user-name-denied</VAR> attribute
-which can be set by the <CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -u deny:foo_user,@bar_group</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A> directive.
-This directive cannot be used with <A
-HREF="#AllowUser"><CODE>AllowUser</CODE></A></P>
-
-
-<H2 CLASS="title"><A NAME="DeviceURI">DeviceURI</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
- DeviceURI socket://foo.bar.com:9100
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DeviceURI</CODE> directive defines the value of the
-<VAR>device-uri-attribute</VAR> attribute. It is normally set
-using the <CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -v device-uri</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2</SPAN><A NAME="ErrorPolicy">ErrorPolicy</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
- ErrorPolicy abort-job
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ErrorPolicy</CODE> directive defines the policy that
-is used when a backend is unable to send a print job to the
-printer. The <CODE>lpadmin(8)</CODE> command sets the current
-error policy:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -o printer-error-policy=stop-printer</KBD>
-</PRE>
-
-<P>The following values are supported:</P>
-
-<UL>
-
- <LI><CODE>abort-job</CODE> - Abort the job and proceed
- with the next job in the queue</LI>
-
- <LI><CODE>retry-current-job</CODE> - Retry the current job
- immediately</LI>
-
- <LI><CODE>retry-job</CODE> - Retry the job after waiting
- for N seconds; the <VAR>cupsd.conf</VAR> <A
- HREF="ref-cupsd-conf.html#JobRetryInterval"><CODE>JobRetryInterval</CODE></A>
- directive controls the value of N</LI>
-
- <LI><CODE>stop-printer</CODE> - Stop the printer and keep
- the job for future printing; this is the default
- value</LI>
-
-</UL>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.4</SPAN><A NAME="Filter">Filter</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
- Filter mime/type 100 program
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Filter</CODE> directive lists a single filter program as defined
-in the printer's PPD file.</P>
-
-<P>This directive must appear inside a
-<A HREF="#Printer"><CODE>Printer</CODE></A> or
-<A HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="Info">Info</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
- Info My Printer
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Info</CODE> directive defines the string for the
-<VAR>printer-info</VAR> attribute. It is normally set using the
-<CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -D "My Printer"</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="JobSheets">JobSheets</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
- JobSheets none,standard
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>JobSheets</CODE> directive specifies the default
-banner pages to print before and after a print job. In the above
-example, only a <VAR>standard</VAR> banner will print after each
-job. The <CODE>lpadmin(8)</CODE> command is normally used to set
-the default banners:
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -o job-sheets-default=none,standard</KBD>
-</PRE>
-
-<P>If only one banner file is specified, it will be printed
-before the files in the job. If a second banner file is
-specified, it is printed after the files in the job.</P>
-
-<P>The available banner pages depend on the local system
-configuration; CUPS includes the following standard banner
-files:</P>
-
-<UL>
-
- <LI><CODE>none</CODE> - Do not produce a banner
- page.</LI>
-
- <LI><CODE>classified</CODE> - A banner page with a
- &quot;classified&quot; label at the top and bottom.</LI>
-
- <LI><CODE>confidential</CODE> - A banner page with a
- &quot;confidential&quot; label at the top and bottom.</LI>
-
- <LI><CODE>secret</CODE> - A banner page with a
- &quot;secret&quot; label at the top and bottom.</LI>
-
- <LI><CODE>standard</CODE> - A banner page with no label
- at the top and bottom.</LI>
-
- <LI><CODE>topsecret</CODE> - A banner page with a
- &quot;top secret&quot; label at the top and bottom.</LI>
-
- <LI><CODE>unclassified</CODE> - A banner page with an
- &quot;unclassified&quot; label at the top and bottom.</LI>
-
-</UL>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="KLimit">KLimit</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
- KLimit 1234
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>KLimit</CODE> directive defines the value of the
-<VAR>job-k-limit</VAR> attribute. It is normally set using the
-<CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -o job-k-limit=1234</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="Location">Location</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
- Location Building 3321
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Location</CODE> directive defines the string for the
-<VAR>printer-location</VAR> attribute. It is normally set using the
-<CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -L "Building 3321"</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2</SPAN><A NAME="OpPolicy">OpPolicy</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
- OpPolicy default
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>OpPolicy</CODE> directive sets the operation policy
-that is used for the printer. The <CODE>lpadmin(8)</CODE> command
-sets the current operation policy:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -o printer-op-policy=default</KBD>
-</PRE>
-
-<P>The default policy is named "default". All policies correspond
-to those defined using the <VAR>cupsd.conf</VAR> <A
-HREF="ref-cupsd-conf.html#Policy"><CODE>Policy</CODE></A>
-section.</P>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2</SPAN><A NAME="Option">Option</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
- Option name value
- Option scaling 100
- Option page-left 72
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Option</CODE> directive specifies a default job
-template attribute value. It is mapped to
-<CODE>name-default</CODE> in the printer attributes and applied
-to jobs as <CODE>name</CODE>.</P>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="PageLimit">PageLimit</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
- PageLimit 1234
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PageLimit</CODE> directive defines the value of the
-<VAR>job-page-limit</VAR> attribute. It can be set using the
-<CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -o job-page-limit=1234</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2</SPAN><A NAME="PortMonitor">PortMonitor</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
- PortMonitor bcp
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PortMonitor</CODE> directive sets the filter program that
-is used for every print job, typically to encode or package the print
-data in a format acceptable for a particular printer interface. It is
-set using the <CODE>lpadmin(8)</CODE> command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -o port-monitor=tbcp</KBD>
-</PRE>
-
-<P>The following standard port monitors are included with CUPS:</P>
-
-<UL>
-
- <LI><CODE>bcp</CODE> - Encode PostScript print data using
- the Adobe Binary Control Protocol (BCP)</LI>
-
- <LI><CODE>none</CODE> - Do not use a port monitor</LI>
-
- <LI><CODE>tbcp</CODE> - Encode PostScript print data
- using the Adobe Tagged Binary Control Protocol
- (TBCP)</LI>
-
-</UL>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.4</SPAN><A NAME="PreFilter">PreFilter</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
- PreFilter mime/type 100 program
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PreFilter</CODE> directive lists a single pre-filter program as
-defined in the printer's PPD file.</P>
-
-<P>This directive must appear inside a
-<A HREF="#Printer"><CODE>Printer</CODE></A> or
-<A HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="Printer">Printer</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Printer</CODE> directive begins a printer
-definition. Printers are added using the <CODE>lpadmin(8)</CODE>
-command:
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername ...</KBD>
-</PRE>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.4</SPAN><A NAME="Product">Product</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
- Product Acme PaperWriter
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Product</CODE> directive defines the main product string from the
-printer's PPD file and is used when advertising the queue via DNS-SD.</P>
-
-<P>This directive must appear inside a
-<A HREF="#Printer"><CODE>Printer</CODE></A> or
-<A HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="QuotaPeriod">QuotaPeriod</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
- QuotaPeriod 604800
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>QuotaPeriod</CODE> directive defines the value of
-the <VAR>job-quota-period</VAR> attribute. Typical values are
-86400 (1 day), 604800 (1 week), 2592000 (1 month), and 31536000
-(1 year). It is set using the <CODE>lpadmin(8)</CODE>
-command:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -o job-quota-period=604800</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2</SPAN><A NAME="Shared">Shared</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
- Shared yes
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Shared</CODE> directive defines the initial value of
-the <VAR>printer-is-shared</VAR> attribute. The strings
-<VAR>yes</VAR> and <VAR>no</VAR> correspond to the true and false
-values, respectively. The <CODE>lpadmin(8)</CODE> command sets
-the current state:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/lpadmin -p printername -o printer-is-shared=true</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="State">State</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
- State idle
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>State</CODE> directive defines the initial value of
-the <VAR>printer-state</VAR> attribute. The strings
-<VAR>idle</VAR> and <VAR>stopped</VAR> correspond to the IPP
-enumeration values 3 and 5, respectively. The
-<CODE>cupsenable(8)</CODE> and <CODE>cupsdisable(8)</CODE>
-commands set the current state:</P>
-
-<PRE CLASS="command">
-<KBD>/usr/sbin/cupsenable printername</KBD>
-<KBD>/usr/sbin/cupsdisable printername</KBD>
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="StateMessage">StateMessage</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
- StateMessage Printer is lonely.
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>StateMessage</CODE> directive defines the initial
-string for the <VAR>printer-state-message</VAR> attribute. The
-following are some example messages:</P>
-
-<PRE CLASS="command">
-StateMessage Connected to host_name...
-StateMessage Connecting to printer_queue on port port_number...
-StateMessage Network host host_name is busy; will retry in 30 seconds...
-StateMessage Printer busy; will retry in 10 seconds...
-StateMessage Printer is busy; retrying print job...
-StateMessage Print file accepted - job ID id_number.
-StateMessage Waiting for job to complete
-</PRE>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.2</SPAN><A NAME="StateTime">StateTime</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Printer name&gt;
- ...
- StateTime 1133542425
-&lt;/Printer&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>StateTime</CODE> directive defines the UNIX time
-(seconds since Jan 1, 1970) for the last state change of the
-queue. It is mapped to the <VAR>printer-state-change-time</VAR>
-attribute.</P>
-
-<P>This directive must appear inside a <A
-HREF="#Printer"><CODE>Printer</CODE></A> or <A
-HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
-section.</P>
-
-
-</BODY>
-</HTML>
diff --git a/doc/help/ref-snmp-conf.html b/doc/help/ref-snmp-conf.html
deleted file mode 100644
index 4cab237e8..000000000
--- a/doc/help/ref-snmp-conf.html
+++ /dev/null
@@ -1,145 +0,0 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
- <TITLE>snmp.conf</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">snmp.conf</H1>
-
-<P>The <VAR>/etc/cups/snmp.conf</VAR> file contains several
-directives that determine how the SNMP printer discovery backend
-behaves. Each directive is listed on a line by itself followed
-by its value. Comments are introduced using the number sign ("#")
-character at the beginning of a line.</P>
-
-<P>The SNMP backend uses the SNMPv1 protocol to discover network
-printers, collecting information from the Host MIB along with
-intelligent port probes to determine the correct device URI and
-make and model for each printer. Future versions of CUPS will
-likely support the new Port Monitor MIB as well.</P>
-
-<H2 CLASS="title"><A NAME="Address">Address</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Address @LOCAL
-Address @IF(name)
-Address 255.255.255.255
-Address 192.168.2.255
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Address</CODE> directive specifies a broadcast
-address to use when discovering printers. Multiple
-<CODE>Address</CODE> lines can be provided to scan different
-subnets.</P>
-
-<P>The default address is <VAR>@LOCAL</VAR>, which broadcasts to
-all LANs.</P>
-
-
-<H2 CLASS="title"><A NAME="Community">Community</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-Community public
-Community easysw
-Community BigCorp
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Community</CODE> directive specifies a community
-name to use when discovering printers and reporting status and supply
-levels for network printers.</P>
-
-<P>The default community is "public".</P>
-
-
-<H2 CLASS="title"><A NAME="DebugLevel">DebugLevel</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DebugLevel 0
-DebugLevel 1
-DebugLevel 2
-DebugLevel 3
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DebugLevel</CODE> directive specifies the debugging
-level to use when searching for network printers. Level 0
-produces no debugging information. Level 1 produces basic
-debugging information. Level 2 adds printing of the SNMP
-messages. Level 3 adds a hex dump of the network data.</P>
-
-<P>The default setting is <VAR>0</VAR>.</P>
-
-<H2 CLASS="title"><A NAME="DeviceURI">DeviceURI</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-DeviceURI "HP.*JetDirect.*" socket://%s:9100 socket://%s:9101 socket://%s:9102
-DeviceURI "HP.*" socket://%s
-DeviceURI "Acme.*Laser.*" lpd://%s/print
-DeviceURI "Xerox.*"
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>DeviceURI</CODE> directive specifies a regular expression
-(enclosed in double quotes) that is matched against the SNMP device
-description OID returned by a printer. If the description matches the
-regular expression, each device URI that follows the regular expression
-is listed by the backend, with any occurrences of <CODE>%s</CODE>
-replaced by the device's hostname or IP address. If no URIs are listed,
-the device is ignored.</P>
-
-<P>The <CODE>DeviceURI</CODE> directives are processed serially in
-the order specified in the <VAR>snmp.conf</VAR> file until a match
-is found.</P>
-
-
-<H2 CLASS="title"><A NAME="HostNameLookups">HostNameLookups</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-HostNameLookups on
-HostNameLookups off
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>HostNameLookups</CODE> directive specifies whether printer
-addresses are converted to hostnames or left as numeric IP addresses.</P>
-
-<P>The default setting is <VAR>off</VAR>.</P>
-
-<H2 CLASS="title"><A NAME="MaxRunTime">MaxRunTime</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-MaxRunTime 10
-MaxRunTime 300
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>MaxRunTime</CODE> directive specifies the maximum
-number of seconds that the SNMP backend will spend looking for
-printer devices on the network.</P>
-
-<P>The default setting is <VAR>10</VAR>.</P>
-
-</BODY>
-</HTML>
diff --git a/doc/help/ref-subscriptions-conf.html b/doc/help/ref-subscriptions-conf.html
deleted file mode 100644
index 06cfc72c4..000000000
--- a/doc/help/ref-subscriptions-conf.html
+++ /dev/null
@@ -1,354 +0,0 @@
-<HTML>
-<!-- SECTION: References -->
-<HEAD>
- <TITLE>subscriptions.conf</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">subscriptions.conf</H1>
-
-<P>The CUPS scheduler (cupsd) uses the
-<VAR>/etc/cups/subscriptions.conf</VAR> file to store the list
-of active subscriptions. Each directive is listed on a line by
-itself followed by its value. Comments are introduced using the
-number sign ("#") character at the beginning of a line.
-
-<P>While the subscriptions configuration file consists of plain
-text and can be modified using your favorite text editor, you
-should normally use the command-line programs (<A
-HREF="man-lp.html">lp(1)</A> and <A
-HREF="man-lpr.html">lpr(1)</A>) or specific applications via IPP
-requests to manage your subscriptions.</P>
-
-<H2 CLASS="title"><A NAME="Events">Events</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
- ...
- Events job-completed
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Events</CODE> directive lists the events, separated
-by spaces, that the subscriber is interested in. Table 1 lists
-the supported event names.</P>
-
-<P>The <CODE>Events</CODE> directive must appear inside a <A
-HREF="#Subscription"><CODE>Subscription</CODE></A> section.</P>
-
-<DIV CLASS="table"><TABLE SUMMARY="Event Names">
-<CAPTION>Table 1: <A NAME="TABLE1">Event Names</A></CAPTION>
-<THEAD>
-<TR>
- <TH>Name</TH>
- <TH>Description</TH>
-</TR>
-</THEAD>
-<TBODY>
-<TR>
- <TD>all</TD>
- <TD>All events</TD>
-</TR>
-<TR>
- <TD>job-completed</TD>
- <TD>Send notification when the job is completed</TD>
-</TR>
-<TR>
- <TD>job-config-changed</TD>
- <TD>Send notification when the job is changed</TD>
-</TR>
-<TR>
- <TD>job-created</TD>
- <TD>Send notification when a job is created</TD>
-</TR>
-<TR>
- <TD>job-progress</TD>
- <TD>Send notification for job progress</TD>
-</TR>
-<TR>
- <TD>job-state-changed</TD>
- <TD>Send notification when the job-state changes</TD>
-</TR>
-<TR>
- <TD>job-stopped</TD>
- <TD>Send notification when the job is stopped</TD>
-</TR>
-<TR>
- <TD>printer-added</TD>
- <TD>Send notification when a printer is added</TD>
-</TR>
-<TR>
- <TD>printer-changed</TD>
- <TD>Send notification when a printer is changed</TD>
-</TR>
-<TR>
- <TD>printer-config-changed</TD>
- <TD>Send notification when a printer's configuration is changed</TD>
-</TR>
-<TR>
- <TD>printer-deleted</TD>
- <TD>Send notification when a printer is deleted</TD>
-</TR>
-<TR>
- <TD>printer-modified</TD>
- <TD>Send notification when a printer is modified</TD>
-</TR>
-<TR>
- <TD>printer-state-changed</TD>
- <TD>Send notification when the printer-state changes</TD>
-</TR>
-<TR>
- <TD>printer-stopped</TD>
- <TD>Send notification when a printer is stopped</TD>
-</TR>
-<TR>
- <TD>server-audit</TD>
- <TD>Send notification when a bad request, security error, or
- authentication error occurs</TD>
-</TR>
-<TR>
- <TD>server-restarted</TD>
- <TD>Send notification when the server is restarted</TD>
-</TR>
-<TR>
- <TD>server-started</TD>
- <TD>Send notification when the server is initially started</TD>
-</TR>
-<TR>
- <TD>server-stopped</TD>
- <TD>Send notification when the server is shutdown</TD>
-</TR>
-</TBODY>
-</TABLE></DIV>
-
-
-<H2 CLASS="title"><A NAME="ExpirationTime">ExpirationTime</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
- ...
- ExpirationTime 1012563145
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>ExpirationTime</CODE> directive specifies the
-expiration time of the subscription as a UNIX time value. It is 0
-for subscriptions with no predefined expiration time.</P>
-
-<P>The <CODE>ExpirationTime</CODE> directive must appear inside a
-<A HREF="#Subscription"><CODE>Subscription</CODE></A>
-section.</P>
-
-
-<H2 CLASS="title"><A NAME="Interval">Interval</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
- ...
- Interval 30
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Interval</CODE> directive specifies the preferred
-time interval for event notifications in seconds.</P>
-
-<P>The <CODE>Interval</CODE> directive must appear inside a <A
-HREF="#Subscription"><CODE>Subscription</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="JobId">JobId</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
- ...
- JobId 123
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>JobId</CODE> directive specifies the
-<CODE>job-id</CODE> for job subscriptions.</P>
-
-<P>The <CODE>JobId</CODE> directive must appear inside a <A
-HREF="#Subscription"><CODE>Subscription</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="LeaseDuration">LeaseDuration</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
- ...
- LeaseDuration
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>LeaseDuration</CODE> directive specifies the number
-of seconds that the subscription is valid. A value of 0 means
-that the subscription will last forever or the life of the print
-job the subscription is attached to.</P>
-
-<P>The <CODE>LeaseDuration</CODE> directive must appear inside a <A
-HREF="#Subscription"><CODE>Subscription</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="NextEventId">NextEventId</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
- ...
- NextEventId 999
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>NextEventId</CODE> directive specifies the
-<CODE>notify-sequence-number</CODE> value for the next
-notification event. It starts at 1 and increases for every event
-that is delivered for the subscription.</P>
-
-<P>The <CODE>NextEventId</CODE> directive must appear inside a <A
-HREF="#Subscription"><CODE>Subscription</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="NextSubscriptionId">NextSubscriptionId</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-NextSubscriptionId 999
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>NextSubscriptionId</CODE> directive specifies the
-next subscription ID to use. It defaults to 1 more than the
-highest subscription number seen.</P>
-
-
-<H2 CLASS="title"><A NAME="Owner">Owner</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
- ...
- Owner username
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Owner</CODE> directive specifies the user that owns
-this subscription.</P>
-
-<P>The <CODE>Owner</CODE> directive must appear inside a <A
-HREF="#Subscription"><CODE>Subscription</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="PrinterName">PrinterName</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
- ...
- PrinterName name
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>PrinterName</CODE> directive specifies the name of
-the printer or class that is associated with this
-subscription.</P>
-
-<P>The <CODE>PrinterName</CODE> directive must appear inside a <A
-HREF="#Subscription"><CODE>Subscription</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="Recipient">Recipient</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
- ...
- Recipient mailto:foo@domain.com
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Recipient</CODE> directive specifies the
-<CODE>notify-recipient-uri</CODE> value for push-type
-notifications. The URI scheme name determines which notifier
-program is used to send the event(s).</P>
-
-<P>The <CODE>Recipient</CODE> directive must appear inside a <A
-HREF="#Subscription"><CODE>Subscription</CODE></A> section.</P>
-
-
-<H2 CLASS="title"><A NAME="Subscription">Subscription</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
- ...
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>Subscription</CODE> section defines a single
-subscription in the system. Each subscription is assigned a
-unique (to the server) number starting at 1.</P>
-
-
-<H2 CLASS="title"><A NAME="UserData">UserData</A></H2>
-
-<H3>Examples</H3>
-
-<PRE CLASS="command">
-&lt;Subscription NNN&gt;
- ...
- UserData mailto:bar&lt;40&gt;example.com
-&lt;/Subscription&gt;
-</PRE>
-
-<H3>Description</H3>
-
-<P>The <CODE>UserData</CODE> directive specifies the
-<CODE>notify-user-data</CODE> value, which is normally the "to"
-address used in <CODE>mailto</CODE> notifications. Binary values
-are introduced by encoding the bytes as hexadecimal values inside
-angle brackets, e.g. "&lt;1234&gt;".</P>
-
-<P>The <CODE>UserData</CODE> directive must appear inside a <A
-HREF="#Subscription"><CODE>Subscription</CODE></A> section.</P>
-
-</BODY>
-</HTML>
diff --git a/doc/help/security.html b/doc/help/security.html
index 3bd564253..d96cbf0df 100644
--- a/doc/help/security.html
+++ b/doc/help/security.html
@@ -19,10 +19,7 @@ server.</P>
<H2 CLASS="title"><A NAME="AUTHENTICATION">Authentication Issues</A></H2>
-<P>When you enable remote administration, the server will use
-Basic authentication for administration tasks. The current CUPS
-server supports Basic, Digest, Kerberos, and local certificate
-authentication:</P>
+<P>When you enable remote administration, the server will use Basic authentication for administration tasks. The current CUPS server supports Basic, Kerberos, and local certificate authentication:</P>
<OL>
@@ -38,18 +35,6 @@ authentication:</P>
username and password information - this is the default on
MacOS X and systems with GNU TLS or OpenSSL installed.</P></LI>
- <LI>Digest authentication uses an MD5 checksum of the
- username, password, and domain ("CUPS"), so the original
- username and password is not sent over the network.
-
- <P>The current implementation does not authenticate the
- entire message and uses the client's IP address for the
- nonce value, making it possible to launch "man in the
- middle" and replay attacks from the same client.</P>
-
- <P><B>Recommendation:</B> Enable encryption to hide the
- username and password information.</P></LI>
-
<LI>Local certificate authentication passes 128-bit
"certificates" that identify an authenticated user.
Certificates are created on-the-fly from random data and
@@ -101,20 +86,6 @@ variety of denial of service attacks:</P>
<P><B>Recommendation:</B> None.</P></LI>
- <LI>Flooding the network with broadcast packets on port
- 631.
-
- <P>It might be possible to disable browsing if this
- condition is detected by the CUPS software, however if
- there are large numbers of printers available on the
- network such an algorithm might think that an attack was
- occurring when instead a valid update was being
- received.</P>
-
- <P><B>Recommendation:</B> Block browse packets from
- foreign or untrusted networks using a router or
- firewall.</P></LI>
-
<LI>Sending partial IPP requests; specifically, sending
part of an attribute value and then stopping
transmission.
@@ -146,27 +117,7 @@ variety of denial of service attacks:</P>
<H2 CLASS="title"><A NAME="ENCRYPTION">Encryption Issues</A></H2>
-<P>CUPS supports 128-bit SSL 3.0 and TLS 1.0 encryption of
-network connections via the OpenSSL, GNU TLS, and CDSA encryption
-libraries. In additional to the potential security issues posed
-by the SSL and TLS protocols, CUPS currently has the following
-additional issue:</P>
-
-<OL>
-
- <LI>Certification validation/revocation; currently CUPS
- does not validate or revoke server or client certificates
- when establishing a secure connection. This can
- potentially lead to "man in the middle" and
- impersonation/spoofing attacks over unsecured networks.
- Future versions of CUPS will support both validation and
- revocation of server certificates.
-
- <P><B>Recommendation:</B> Do not depend on encryption for
- security when connecting to servers over the Internet or
- untrusted WAN links.</P></LI>
-
-</OL>
+<P>CUPS supports 128-bit TLS encryption of network connections via the GNU TLS library, OS X Security framework, and Windows Schannel APIs. Secure deployment of TLS depends on proper certificate management and software maintenance.</P>
</BODY>
</HTML>
diff --git a/doc/help/spec-browsing.html b/doc/help/spec-browsing.html
deleted file mode 100644
index e69de29bb..000000000
--- a/doc/help/spec-browsing.html
+++ /dev/null
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-<I>version</I>-source.tar.gz
<PRE CLASS="command">
tools/testrpm
-sudo rpm -U /usr/src/redhat/RPMS/i386/cups*.rpm
+sudo rpm -U /usr/src/redhat/RPMS/{arm,i386,x64_64}/cups*.rpm
sudo tools/testosx
open cups.pkg
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"></TD></TR>
<H4>Config Files</H4>
-<P>The scheduler uses several configuration files to store the server settings (<A HREF="ref-cupsd-conf.html">cupsd.conf</A>), available classes (<A HREF="ref-classes-conf.html">classes.conf</A>), available printers (<A HREF="ref-printers-conf.html">printers.conf</A>), current notification subscriptions (<A HREF="ref-subscriptions-conf.html">subscriptions.conf</A>), and supported file types and filters (<A HREF="man-mime.types.html">mime.types</A>, <A HREF="man-mime.convs.html">mime.convs</A>). In addition, PostScript Printer Description ("PPD") files or interface scripts are associated with each printer, and the scheduler has cache files for remote printers, PPD files, and current jobs to optimize the scheduler's startup speed and availability.</P>
+<P>The scheduler uses several configuration files to store the server settings (<A HREF="man-cupsd.conf.html">cupsd.conf</A>), available classes (<A HREF="man-classes.conf.html">classes.conf</A>), available printers (<A HREF="man-printers.conf.html">printers.conf</A>), current notification subscriptions (<A HREF="man-subscriptions.conf.html">subscriptions.conf</A>), and supported file types and filters (<A HREF="man-mime.types.html">mime.types</A>, <A HREF="man-mime.convs.html">mime.convs</A>). In addition, PostScript Printer Description ("PPD") files or interface scripts are associated with each printer, and the scheduler has cache files for remote printers, PPD files, and current jobs to optimize the scheduler's startup speed and availability.</P>
<H4>Job Files</H4>
@@ -41,8 +41,8 @@ WIDTH="768" HEIGHT="768" ALT="CUPS Block Diagram"></TD></TR>
<H4>Log Files</H4>
-<P>The scheduler keeps three kinds of log files which are normally stored in the <VAR>/var/log/cups</VAR> directory. The <A HREF="ref-access_log.html">access_log</A> file lists every HTTP and IPP request that is processed by the scheduler. The <A HREF="ref-error_log.html">error_log</A> file contains messages from the scheduler and its helper applications that can be used
-to track down problems. The <A HREF="ref-page_log.html">page_log</A> file lists every page that is printed, allowing for simple print accounting.</P>
+<P>The scheduler keeps three kinds of log files which are normally stored in the <VAR>/var/log/cups</VAR> directory. The <A HREF="man-cupsd-logs.html">access_log</A> file lists every HTTP and IPP request that is processed by the scheduler. The <A HREF="man-cupsd-logs.html">error_log</A> file contains messages from the scheduler and its helper applications that can be used
+to track down problems. The <A HREF="man-cupsd-logs.html">page_log</A> file lists every page that is printed, allowing for simple print accounting.</P>
<P>Log files are rotated automatically by the scheduler when they reach the configured size limit, by default 1MB. If the limit is set to 0 then no rotation is performed in the scheduler - this mode is often used by Linux distributions so they can use the <B>logrotated(8)</B> program to rotate them instead.</P>
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:
<dd>The client OPTIONALLY supplies one or more authentication values as specified by the "auth-info-required" attribute.
- <dt>"job-billing" (text(MAX)):<span class='info'>CUPS 1.1</span>
+ <dt>"job-billing" (text(MAX))<span class='info'>CUPS 1.1</span> or
+ "job-account-id (text(MAX))"<span class='info'>CUPS 1.7</span>:
<dd>The client OPTIONALLY supplies a billing string that is logged
with the page accounting information.
@@ -476,7 +477,8 @@ Create-Job request:
<dd>The client OPTIONALLY supplies one or more authentication values as specified by the "auth-info-required" attribute.
- <dt>"job-billing" (text(MAX)):<span class='info'>CUPS 1.1</span>
+ <dt>"job-billing" (text(MAX))<span class='info'>CUPS 1.1</span> or
+ "job-account-id (text(MAX))<span class='info'>CUPS 1.7</span>:
<dd>The client OPTIONALLY supplies a billing string that is logged
with the page accounting information.
@@ -2169,6 +2171,12 @@ document (fit-to-page=false). The default value is false.
<p>The job-billing attribute provides a text value to associate with a job
for billing purposes.
+<blockquote><b>Note:</b> This attribute has been superceded by the "job-account-id" attribute defined in PWG 5100.11: Job and Printer Extensions - Set 2.</blockquote>
+
+<h4><a name="job-cancel-after">job-cancel-after (integer(1:MAX))</a><span class='info'>CUPS 2.0</span></h4>
+
+<p>The job-cancel-after attribute provides the maximum number of seconds that are allowed for processing a job.</p>
+
<h4><a name="job-hold-until">job-hold-until (keyword | name(MAX))</a><span class='info'>CUPS 1.1</span></h4>
<p>The job-hold-until attribute specifies a hold time. In addition to the
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 @@
<H1 CLASS="title">CUPS PDF Format</H1>
-<P>CUPS PDF files (application/vnd.cups-pdf) are device-dependent
-PDF/A files that contain a job ticket information. These files
-are typically produced by the CUPS <CODE>pdftopdf</CODE> filter
-which handles job ticket generation, imposition, page labeling,
-scaling, and other formatting options requested by the user. CUPS
-PDF files are intended for direct consumption by a PDF-capable
-printer, PDF RIP, or the <CODE>pdftops</CODE> filter.</P>
-
-<P>More information will be posted here as the PDF workflow
-filters are added to CUPS.</P>
+<P>CUPS PDF files (application/vnd.cups-pdf) are device-dependent PDF files that contain a job ticket information.</P>
</BODY>
</HTML>
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 @@
-<HTML>
-<!-- SECTION: Getting Started -->
-<HEAD>
- <TITLE>What's New in CUPS 1.7</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">What's New in CUPS 1.7</H1>
-
-<P>This page provides a high-level outline of the changes in CUPS 1.7. If you have never used CUPS before, read the <A HREF="overview.html">"Overview of CUPS"</A> document instead.</P>
-
-<P>CUPS 1.7 is primarily a "polish" release. Users will appreciate improved support for paid, PIN, and release printing, as well as expanded support for printers conforming to the <a href="http://www.pwg.org/ipp/everywhere.html">IPP Everywhere</a> specification. Full support for this functionality depends on additional software from your operating system vendor.</p>
-
-<P>When supported by the printer or the remote server, CUPS now compresses print data sent over the network to greatly improve print speed and reduce bandwidth usage. This happens automatically when printing through IPP and is available as an option when using the <code>ipptool</code> utility.</P>
-
-<P>Developers can now enumerate supported sizes and option values, as well as query a printer to discovery which media is loaded, making it possible to easily build customized user interfaces without the use of printer drivers or PPD files.</P>
-
-</BODY>
-</HTML>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>Home - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
-</HEAD>
-<BODY>
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="sel"><A HREF="/">&nbsp;&nbsp;Home&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;Administration&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/classes/">&nbsp;&nbsp;Classes&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/help/">&nbsp;&nbsp;Online&nbsp;Help&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;Jobs&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;Printers&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD STYLE="padding-right: 20px;">
-
-<H1>CUPS @CUPS_VERSION@</H1>
-
-<P>CUPS is the standards-based, open source printing system developed by
-<A HREF="http://www.apple.com/">Apple Inc.</A> for OS<SUP>&reg;</SUP> X and
-other UNIX<SUP>&reg;</SUP>-like operating systems.</P>
-
-</TD>
-<TD><A HREF="http://www.cups.org/"><IMG SRC="images/cups-icon.png" WIDTH="128"
-HEIGHT="128" ALT="CUPS"></A></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-right: 20px;">
-
-<H2>CUPS for Users</H2>
-
-<P><A HREF="help/overview.html">Overview of CUPS</A></P>
-
-<P><A HREF="help/options.html">Command-Line Printing and Options</A></P>
-
-<P><A HREF="help/whatsnew.html">What's New in CUPS 1.7</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups">User Forum</A></P>
-
-</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
-
-<H2>CUPS for Administrators</H2>
-
-<P><A HREF="admin">Adding Printers and Classes</A></P>
-
-<P><A HREF="help/policies.html">Managing Operation Policies</A></P>
-
-<P><A HREF="help/accounting.html">Printer Accounting Basics</A></P>
-
-<P><A HREF="help/security.html">Server Security</A></P>
-
-<P><A HREF="help/kerberos.html">Using Kerberos Authentication</A></P>
-
-<P><A HREF="help/network.html">Using Network Printers</A></P>
-
-<P><A HREF="help/ref-cupsd-conf.html">cupsd.conf Reference</A></P>
-
-</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
-
-<H2>CUPS for Developers</H2>
-
-<P><A HREF="help/api-overview.html">Introduction to CUPS Programming</A></P>
-
-<P><A HREF="help/api-cups.html">CUPS API</A></P>
-
-<P><A HREF="help/api-filter.html">Filter and Backend Programming</A></P>
-
-<P><A HREF="help/api-httpipp.html">HTTP and IPP APIs</A></P>
-
-<P><A HREF="help/api-ppd.html">PPD API</A></P>
-
-<P><A HREF="help/api-raster.html">Raster API</A></P>
-
-<P><A HREF="help/ref-ppdcfile.html">PPD Compiler Driver Information File Reference</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Developer Forum</A></P>
-
-</TD></TR>
-</TABLE>
-
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS and the CUPS logo are trademarks of
-<A HREF="http://www.apple.com">Apple Inc.</A> Copyright 2007-2014 Apple
-Inc. All rights reserved.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
+<!DOCTYPE HTML>
+<html>
+ <head>
+ <link rel="stylesheet" href="/cups.css" type="text/css">
+ <link rel="shortcut icon" href="/apple-touch-icon.png" type="image/png">
+ <meta charset="utf-8">
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=9">
+ <meta name="viewport" content="width=device-width">
+ <title>Home - CUPS @CUPS_VERSION@@CUPS_REVISION@</title>
+ </head>
+ <body>
+ <div class="header">
+ <ul>
+ <li><a href="http://www.cups.org/" target="_blank">CUPS.org</a></li>
+ <li><a class="active" href="/">Home</a></li>
+ <li><a href="/admin">Administration</a></li>
+ <li><a href="/classes/">Classes</a></li>
+ <li><a href="/help/">Help</a></li>
+ <li><a href="/jobs/">Jobs</a></li>
+ <li><a href="/printers/">Printers</a></li>
+ </ul>
+ </div>
+ <div class="body">
+ <div class="row">
+ <h1>CUPS @CUPS_VERSION@</h1>
+ <p>CUPS is the standards-based, open source printing system developed by <a href="http://www.apple.com/">Apple Inc.</a> for OS X<sup>&reg;</sup> and other UNIX<sup>&reg;</sup>-like operating systems.</p>
+ </div>
+ <div class="row">
+ <div class="thirds">
+ <h2>CUPS for Users</h2>
+ <p><a href="help/overview.html">Overview of CUPS</a></p>
+ <p><a href="help/options.html">Command-Line Printing and Options</a></p>
+ <p><a href="http://www.cups.org/lists.php?LIST=cups">User Forum</a></p>
+ </div>
+ <div class="thirds">
+ <h2>CUPS for Administrators</h2>
+ <p><a href="admin">Adding Printers and Classes</a></p>
+ <p><a href="help/policies.html">Managing Operation Policies</a></p>
+ <p><a href="help/network.html">Using Network Printers</a></p>
+ <p><a href="help/man-cupsd.conf.html">cupsd.conf Reference</a></p>
+ </div>
+ <div class="thirds">
+ <h2>CUPS for Developers</h2>
+ <p><a href="help/api-overview.html">Introduction to CUPS Programming</a></p>
+ <p><a href="help/api-cups.html">CUPS API</a></p>
+ <p><a href="help/api-filter.html">Filter and Backend Programming</a></p>
+ <p><a href="help/api-httpipp.html">HTTP and IPP APIs</a></p>
+ <p><a href="http://www.cups.org/lists.php?LIST=cups-devel">Developer Forum</a></p>
+ </div>
+ </div>
+ </div>
+ <div class="footer">CUPS and the CUPS logo are trademarks of <a href="http://www.apple.com">Apple Inc.</a> Copyright &copy; 2007-2014 Apple Inc. All rights reserved.</div>
+ </body>
+</html>
diff --git a/doc/it/index.html.in b/doc/it/index.html.in
deleted file mode 100644
index d17bc84ae..000000000
--- a/doc/it/index.html.in
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>Home - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
-</HEAD>
-<BODY>
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="sel"><A HREF="/">&nbsp;&nbsp;Home&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;Amministrazione&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/classes/">&nbsp;&nbsp;Classi&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/help/">&nbsp;&nbsp;Guida&nbsp;in&nbsp;linea&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;Stampe&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;Stampanti&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Cerca aiuto"
-AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD STYLE="padding-right: 20px;">
-
-<H1>CUPS @CUPS_VERSION@</H1>
-
-<P>CUPS è il sistema di stampa open source, basato su degli standard, sviluppato da
-<A HREF="http://www.apple.com/">Apple Inc.</A> per OS<SUP>&reg;</SUP> X e
-per gli altri sistemi operativi UNIX<SUP>&reg;</SUP>-like.</P>
-
-</TD>
-<TD><A HREF="http://www.cups.org/"><IMG SRC="images/cups-icon.png" WIDTH="128"
-HEIGHT="128" ALT="CUPS"></A></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-right: 20px;">
-
-<H2>CUPS per gli utenti</H2>
-
-<P><A HREF="help/overview.html">Presentazione di CUPS</A></P>
-
-<P><A HREF="help/options.html">Stampare da riga di comando ed opzioni</A></P>
-
-<P><A HREF="help/whatsnew.html">Le novità introdotte da CUPS 1.7</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Forum dell'utente</A></P>
-
-</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
-
-<H2>CUPS per gli amministratori</H2>
-
-<P><A HREF="admin">Aggiungere stampanti e classi</A></P>
-
-<P><A HREF="help/policies.html">Gestire le policy</A></P>
-
-<P><A HREF="help/accounting.html">Nozioni di base sulla gestione delle stampanti</A></P>
-
-<P><A HREF="help/security.html">Sicurezza del server</A></P>
-
-<P><A HREF="help/kerberos.html">Usare l'autenticazione Kerberos</A></P>
-
-<P><A HREF="help/network.html">Usare le stampanti di rete</A></P>
-
-<P><A HREF="help/ref-cupsd-conf.html">Riferimenti a cupsd.conf</A></P>
-
-</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
-
-<H2>CUPS per gli sviluppatori</H2>
-
-<P><A HREF="help/api-overview.html">Introduzione alla programmazione di CUPS</A></P>
-
-<P><A HREF="help/api-cups.html">Le API di CUPS</A></P>
-
-<P><A HREF="help/api-filter.html">Programmazione dei filtri e dei backend</A></P>
-
-<P><A HREF="help/api-httpipp.html">Le API HTTP e IPP</A></P>
-
-<P><A HREF="help/api-ppd.html">Le API PPD</A></P>
-
-<P><A HREF="help/api-raster.html">Le API Raster</A></P>
-
-<P><A HREF="help/ref-ppdcfile.html">File di riferimento del compilatore di driver PPD</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Forum dello sviluppatore</A></P>
-
-</TD></TR>
-</TABLE>
-
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS e il logo di CUPS sono marchi registrati da
-<A HREF="http://www.apple.com">Apple Inc.</A> Copyright 2007-2014 Apple
-Inc. Tutti i diritti sono riservati.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/doc/ja/index.html.in b/doc/ja/index.html.in
deleted file mode 100644
index e2ccad31a..000000000
--- a/doc/ja/index.html.in
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>ホーム - CUPS 1.6</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
-</HEAD>
-<BODY>
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="sel"><A HREF="/">&nbsp;&nbsp;ホーム&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;管ç†&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/classes/">&nbsp;&nbsp;クラス&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/help/">&nbsp;&nbsp;ヘルプ&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;ジョブ&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;プリンター&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD STYLE="padding-right: 20px;">
-
-<H1>CUPS @CUPS_VERSION@</H1>
-
-<P>CUPS ã¯ã€OS<SUP>&reg;</SUP> X ãŠã‚ˆã³ãã®ä»–ã® UNIX <SUP>&reg;</SUP> ç³» OS ã®ãŸã‚ã«ã€
-<A HREF="http://www.apple.com/">Apple Inc.</A>
-ã«ã‚ˆã£ã¦é–‹ç™ºã•ã‚ŒãŸæ¨™æº–ベースã®ã‚ªãƒ¼ãƒ—ンソースå°åˆ·ã‚·ã‚¹ãƒ†ãƒ ã§ã™ã€‚</P>
-
-</TD>
-<TD><A HREF="http://www.cups.org/"><IMG SRC="images/cups-icon.png" WIDTH="128"
-HEIGHT="128" ALT="CUPS"></A></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-right: 20px;">
-
-<H2>ユーザーå‘ã‘</H2>
-
-<P><A HREF="help/overview.html">CUPS ã®æ¦‚è¦</A></P>
-
-<P><A HREF="help/options.html">コマンドラインã‹ã‚‰ã®å°åˆ·ã¨ã‚ªãƒ—ション</A></P>
-
-<P><A HREF="help/whatsnew.html">CUPS 1.6 ã®æ–°æ©Ÿèƒ½</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups">ユーザーフォーラム</A></P>
-
-</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
-
-<H2>管ç†è€…å‘ã‘</H2>
-
-<P><A HREF="admin">プリンターã¨ã‚¯ãƒ©ã‚¹ã®è¿½åŠ </A></P>
-
-<P><A HREF="help/policies.html">æ“作ãƒãƒªã‚·ãƒ¼ã®ç®¡ç†ã«ã¤ã„ã¦</A></P>
-
-<P><A HREF="help/accounting.html">プリンターアカウンティングã®åŸºæœ¬</A></P>
-
-<P><A HREF="help/security.html">サーãƒãƒ¼ã®ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ãƒ¼</A></P>
-
-<P><A HREF="help/kerberos.html">Kerberos èªè¨¼ã®ä½¿ã„æ–¹</A></P>
-
-<P><A HREF="help/network.html">ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ—リンターã®ä½¿ã„æ–¹</A></P>
-
-<P><A HREF="help/ref-cupsd-conf.html">cupsd.conf リファレンス</A></P>
-
-</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
-
-<H2>開発者å‘ã‘</H2>
-
-<P><A HREF="help/api-overview.html">CUPS プログラミングã®ã‚¤ãƒ³ãƒˆãƒ­ãƒ€ã‚¯ã‚·ãƒ§ãƒ³</A></P>
-
-<P><A HREF="help/api-cups.html">CUPS API</A></P>
-
-<P><A HREF="help/api-filter.html">フィルタã¨ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã®ãƒ—ログラミング</A></P>
-
-<P><A HREF="help/api-httpipp.html">HTTP 㨠IPP 㮠API</A></P>
-
-<P><A HREF="help/api-ppd.html">PPD API</A></P>
-
-<P><A HREF="help/api-raster.html">ラスター API</A></P>
-
-<P><A HREF="help/ref-ppdcfile.html">PPD コンパイラー用ドライãƒãƒ¼æƒ…報ファイル リファレンス</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">開発者フォーラム</A></P>
-
-</TD></TR>
-</TABLE>
-
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS and the CUPS logo are trademarks of
-<A HREF="http://www.apple.com">Apple Inc.</A> CUPS is copyright 2007-2014 Apple
-Inc. All rights reserved.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/doc/pt_BR/index.html.in b/doc/pt_BR/index.html.in
deleted file mode 100644
index 949921ede..000000000
--- a/doc/pt_BR/index.html.in
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>Home - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
-</HEAD>
-<BODY>
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="sel"><A HREF="/">&nbsp;&nbsp;In&iacute;cio&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;Administra&ccedil;&atilde;o&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/classes/">&nbsp;&nbsp;Classes&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/help/">&nbsp;&nbsp;Ajuda&nbsp;online&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;Trabalhos&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;Impressoras&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Procurar ajuda"
-AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD STYLE="padding-right: 20px;">
-
-<H1>CUPS @CUPS_VERSION@</H1>
-
-<P>CUPS &eacute; o sistema de impress&atilde;o de c&oacute;digo aberto e baseado em padr&otilde;es desenvolvido pela
-<A HREF="http://www.apple.com/">Apple Inc.</A> para o OS<SUP>&reg;</SUP> X e
-outros sistemas operacionais similares ao UNIX<SUP>&reg;</SUP>.</P>
-
-</TD>
-<TD><A HREF="http://www.cups.org/"><IMG SRC="images/cups-icon.png" WIDTH="128"
-HEIGHT="128" ALT="CUPS"></A></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-right: 20px;">
-
-<H2>CUPS para usu&aacute;rios</H2>
-
-<P><A HREF="help/overview.html">Vis&atilde;o geral do CUPS</A></P>
-
-<P><A HREF="help/options.html">Impress&atilde;o e op&ccedil;&otilde;es em linha de comando</A></P>
-
-<P><A HREF="help/whatsnew.html">O que h&aacute; de novo no CUPS 1.7</A></P>
-
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.general">F&oacute;rum de usu&aacute;rios</A></P>
-
-</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
-
-<H2>CUPS para administradores</H2>
-
-<P><A HREF="admin">Adicionar impressoras e classes</A></P>
-
-<P><A HREF="help/policies.html">Gerenciar pol&iacute;ticas de opera&ccedil;&atilde;o</A></P>
-
-<P><A HREF="help/accounting.html">B&aacute;sico de contabilidade de impress&atilde;o</A></P>
-
-<P><A HREF="help/security.html">Seguran&ccedil;a do servidor</A></P>
-
-<P><A HREF="help/kerberos.html">Usar autentica&ccedil;&atilde;o via kerberos</A></P>
-
-<P><A HREF="help/network.html">Usar impressoras de rede</A></P>
-
-<P><A HREF="help/ref-cupsd-conf.html">Refer&ecirc;ncia para o cupsd.conf</A></P>
-
-<P><A HREF="http://www.cups.org/ppd.php">Encontrar drivers de impressora</A></P>
-
-</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
-
-<H2>CUPS para desenvolvedores</H2>
-
-<P><A HREF="help/api-overview.html">Introdu&ccedil;&atilde;o &agrave; programa&ccedil;&atilde;o do CUPS</A></P>
-
-<P><A HREF="help/api-cups.html">API do CUPS</A></P>
-
-<P><A HREF="help/api-filter.html">Programa&ccedil;&atilde;o de filtros e retaguarda</A></P>
-
-<P><A HREF="help/api-httpipp.html">APIs HTTP e IPP</A></P>
-
-<P><A HREF="help/api-ppd.html">API PPD</A></P>
-
-<P><A HREF="help/api-raster.html">API de rasteriza&ccedil;&atilde;o</A></P>
-
-<P><A HREF="help/ref-ppdcfile.html">Refer&ecirc;ncia para o compilador de arquivos de informa&ccedil;&atilde;o de driver PPD</A></P>
-
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.development">F&oacute;rum de desenvolvedores</A></P>
-
-</TD></TR>
-</TABLE>
-
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS e o logo do CUPS s&atilde;o marcas registradas de
-<A HREF="http://www.apple.com">Apple Inc.</A> Copyright 2007-2014 Apple
-Inc. Todos os direitos reservados.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/doc/ru/index.html.in b/doc/ru/index.html.in
deleted file mode 100644
index fa07ae85e..000000000
--- a/doc/ru/index.html.in
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>Ðачало - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
-</HEAD>
-<BODY>
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="sel"><A HREF="/">&nbsp;&nbsp;Ðачало&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;ÐдминиÑтрирование&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/classes/">&nbsp;&nbsp;Группы&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/help/">&nbsp;&nbsp;Справка&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;ЗаданиÑ&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;Принтеры&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD STYLE="padding-right: 20px;">
-
-<H1>CUPS @CUPS_VERSION@</H1>
-
-<P>CUPS — Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÑŽÑ‰Ð°Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð½Ñтво Ñтандартов, ÑÐ²Ð¾Ð±Ð¾Ð´Ð½Ð°Ñ Ð¿Ð¾Ð´ÑиÑтема печати, Ñ€Ð°Ð·Ñ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°ÐµÐ¼Ð°Ñ ÐºÐ¾Ð¼Ð¿Ð°Ð½Ð¸ÐµÐ¹ <A HREF="http://www.apple.com/">Apple Inc.</A> Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¾Ð¹ ÑиÑтемы Mac OS<SUP>&reg;</SUP> X и других UNIX<SUP>&reg;</SUP>-подобных операционных ÑиÑтем.</P>
-
-</TD>
-<TD><A HREF="http://www.cups.org/"><IMG SRC="images/cups-icon.png" WIDTH="128"
-HEIGHT="128" ALT="CUPS"></A></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-right: 20px;">
-
-<H2>CUPS Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹</H2>
-
-<P><A HREF="help/overview.html">Введение в CUPS</A></P>
-
-<P><A HREF="help/options.html">Печать из командной Ñтроки</A></P>
-
-<P><A HREF="help/whatsnew.html">Что нового в CUPS 1.6</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Форум пользователей</A></P>
-
-</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
-
-<H2>CUPS Ð´Ð»Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтраторов</H2>
-
-<P><A HREF="admin">Добавление принтеров и групп</A></P>
-
-<P><A HREF="help/policies.html">Управление доÑтупом</A></P>
-
-<P><A HREF="help/accounting.html">ИÑпользование реÑурÑов</A></P>
-
-<P><A HREF="help/security.html">БезопаÑноÑÑ‚ÑŒ ÑиÑтемы</A></P>
-
-<P><A HREF="help/kerberos.html">ИÑпользование аутентификации Kerberos</A></P>
-
-<P><A HREF="help/network.html">ИÑпользование Ñетевых принтеров</A></P>
-
-<P><A HREF="help/ref-cupsd-conf.html">Справочник по cupsd.conf</A></P>
-
-</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
-
-<H2>CUPS Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸ÐºÐ¾Ð²</H2>
-
-<P><A HREF="help/api-overview.html">Введение в разработку CUPS</A></P>
-
-<P><A HREF="help/api-cups.html">CUPS API</A></P>
-
-<P><A HREF="help/api-filter.html">Разработка фильтров и модулей</A></P>
-
-<P><A HREF="help/api-httpipp.html">API доÑтупа по HTTP и IPP</A></P>
-
-<P><A HREF="help/api-ppd.html">PPD API</A></P>
-
-<P><A HREF="help/api-raster.html">Raster API</A></P>
-
-<P><A HREF="help/ref-ppdcfile.html">Справочник по компилÑтору PPD</A></P>
-
-<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Форум разработчиков</A></P>
-
-</TD></TR>
-</TABLE>
-
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS а также логотип CUPS ÑвлÑÑŽÑ‚ÑÑ Ð·Ð°Ñ€ÐµÐ³Ð¸Ñтрированными торговыми марками <A HREF="http://www.apple.com">Apple Inc.</A> ÐвторÑкие права на CUPS принадлежат (2007-2014) компании Apple Inc. Ð’Ñе права защищены.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
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..827215c68 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 12124 2014-08-28 15:37:22Z 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 ||
@@ -403,13 +378,13 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
if (!cups_raster_read(r, &byte, 1))
return (0);
- r->count = byte + 1;
+ r->count = (unsigned)byte + 1;
if (r->count > 1)
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);
@@ -443,9 +418,9 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
* Repeat the next N bytes...
*/
- count = (byte + 1) * r->bpp;
- if (count > bytes)
- count = bytes;
+ count = ((unsigned)byte + 1) * r->bpp;
+ 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 12124 2014-08-28 15:37:22Z 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..7d4cacd33 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 12124 2014-08-28 15:37:22Z 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 */
/*
@@ -211,27 +201,26 @@ StartPage(
if (Model < EPSON_ICOLOR)
{
pwrite("\033(U\001\000", 5); /* Resolution/units */
- putchar(3600 / header->HWResolution[1]);
+ putchar((int)(3600 / header->HWResolution[1]));
}
else
{
pwrite("\033(U\005\000", 5);
- putchar(1440 / header->HWResolution[1]);
- putchar(1440 / header->HWResolution[1]);
- putchar(1440 / header->HWResolution[0]);
+ putchar((int)(1440 / header->HWResolution[1]));
+ putchar((int)(1440 / header->HWResolution[1]));
+ putchar((int)(1440 / header->HWResolution[0]));
putchar(0xa0); /* n/1440ths... */
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...
@@ -826,8 +811,8 @@ OutputRows(
{
putchar(0x1b);
putchar('$');
- putchar(i & 255);
- putchar(i >> 8);
+ putchar((int)(i & 255));
+ putchar((int)(i >> 8));
}
/*
@@ -867,9 +852,9 @@ OutputRows(
break;
}
- n = (unsigned)dot_count / DotBytes;
- putchar(n & 255);
- putchar(n / 256);
+ n = dot_count / DotBytes;
+ putchar((int)(n & 255));
+ putchar((int)(n / 256));
/*
* Write the graphics data...
@@ -898,8 +883,8 @@ OutputRows(
{
putchar(0x1b);
putchar('$');
- putchar(i & 255);
- putchar(i >> 8);
+ putchar((int)(i & 255));
+ putchar((int)(i >> 8));
}
if (header->HWResolution[0] == 120)
@@ -908,8 +893,8 @@ OutputRows(
printf("\033*\003"); /* Select bit image */
n = (unsigned)dot_count / DotBytes;
- putchar(n & 255);
- putchar(n / 256);
+ putchar((int)(n & 255));
+ putchar((int)(n / 256));
for (n = dot_count / 2, ptr = dot_ptr + 1; n > 0; n --, ptr += 2)
{
@@ -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 12124 2014-08-28 15:37:22Z 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 <cups/raster-private.h>
+#include <math.h>
/*
@@ -172,13 +164,12 @@ static cups_page_header2_t setpagedevice_header =
1, /* cupsRowFeed */
1, /* cupsRowStep */
0, /* cupsNumColors */
- 1.001, /* cupsBorderlessScalingFactor */
- { 612.0, 792.1 }, /* cupsPageSize */
- { 0.0, 0.0, 0.0, 0.0 }, /* cupsImagingBBox */
+ 1.001f, /* cupsBorderlessScalingFactor */
+ { 612.0f, 792.1f }, /* cupsPageSize */
+ { 0.0f, 0.0f, 0.0f, 0.0f }, /* cupsImagingBBox */
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 },
/* cupsInteger[16] */
- { 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 8.1, 9.1, 10.1, 11.1, 12.1, 13.1,
- 14.1, 15.1, 16.1 }, /* cupsReal[16] */
+ { 1.1f, 2.1f, 3.1f, 4.1f, 5.1f, 6.1f, 7.1f, 8.1f, 9.1f, 10.1f, 11.1f, 12.1f, 13.1f, 14.1f, 15.1f, 16.1f }, /* cupsReal[16] */
{ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13",
"14", "15", "16" }, /* cupsString[16] */
"Marker Type", /* cupsMarkerType */
@@ -519,7 +510,7 @@ do_ras_file(const char *filename) /* I - Filename */
static int /* O - Number of errors */
do_raster_tests(cups_mode_t mode) /* O - Write mode */
{
- int page, x, y; /* Looping vars */
+ unsigned page, x, y; /* Looping vars */
FILE *fp; /* Raster file */
cups_raster_t *r; /* Raster stream */
cups_page_header2_t header, /* Page header */
@@ -610,7 +601,7 @@ do_raster_tests(cups_mode_t mode) /* O - Write mode */
else
{
for (x = 0; x < header.cupsBytesPerLine; x ++)
- data[x] = x;
+ data[x] = (unsigned char)x;
for (y = 0; y < 64; y ++)
if (!cupsRasterWritePixels(r, data, header.cupsBytesPerLine))
@@ -636,7 +627,7 @@ do_raster_tests(cups_mode_t mode) /* O - Write mode */
else
{
for (x = 0; x < header.cupsBytesPerLine; x ++)
- data[x] = x / 4;
+ data[x] = (unsigned char)(x / 4);
for (y = 0; y < 64; y ++)
if (!cupsRasterWritePixels(r, data, header.cupsBytesPerLine))
@@ -1020,22 +1011,21 @@ print_changes(
printf(" cupsNumColors %d, expected %d\n", header->cupsNumColors,
expected->cupsNumColors);
- if (header->cupsBorderlessScalingFactor !=
- expected->cupsBorderlessScalingFactor)
+ if (fabs(header->cupsBorderlessScalingFactor - expected->cupsBorderlessScalingFactor) > 0.001)
printf(" cupsBorderlessScalingFactor %g, expected %g\n",
header->cupsBorderlessScalingFactor,
expected->cupsBorderlessScalingFactor);
- if (header->cupsPageSize[0] != expected->cupsPageSize[0] ||
- header->cupsPageSize[1] != expected->cupsPageSize[1])
+ if (fabs(header->cupsPageSize[0] - expected->cupsPageSize[0]) > 0.001 ||
+ fabs(header->cupsPageSize[1] - expected->cupsPageSize[1]) > 0.001)
printf(" cupsPageSize [%g %g], expected [%g %g]\n",
header->cupsPageSize[0], header->cupsPageSize[1],
expected->cupsPageSize[0], expected->cupsPageSize[1]);
- if (header->cupsImagingBBox[0] != expected->cupsImagingBBox[0] ||
- header->cupsImagingBBox[1] != expected->cupsImagingBBox[1] ||
- header->cupsImagingBBox[2] != expected->cupsImagingBBox[2] ||
- header->cupsImagingBBox[3] != expected->cupsImagingBBox[3])
+ if (fabs(header->cupsImagingBBox[0] - expected->cupsImagingBBox[0]) > 0.001 ||
+ fabs(header->cupsImagingBBox[1] - expected->cupsImagingBBox[1]) > 0.001 ||
+ fabs(header->cupsImagingBBox[2] - expected->cupsImagingBBox[2]) > 0.001 ||
+ fabs(header->cupsImagingBBox[3] - expected->cupsImagingBBox[3]) > 0.001)
printf(" cupsImagingBBox [%g %g %g %g], expected [%g %g %g %g]\n",
header->cupsImagingBBox[0], header->cupsImagingBBox[1],
header->cupsImagingBBox[2], header->cupsImagingBBox[3],
@@ -1048,7 +1038,7 @@ print_changes(
expected->cupsInteger[i]);
for (i = 0; i < 16; i ++)
- if (header->cupsReal[i] != expected->cupsReal[i])
+ if (fabs(header->cupsReal[i] - expected->cupsReal[i]) > 0.001)
printf(" cupsReal%d %g, expected %g\n", i, header->cupsReal[i],
expected->cupsReal[i]);
@@ -1074,5 +1064,5 @@ print_changes(
/*
- * End of "$Id: testraster.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: testraster.c 11558 2014-02-06 18:33:34Z msweet $".
*/
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
#
@@ -197,20 +197,6 @@ 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..591989b86 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-08-29 22:25-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -39,156 +39,156 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: systemv/lpstat.c:1936 systemv/lpstat.c:2061
+#: systemv/lpstat.c:1867 systemv/lpstat.c:1990
msgid "\t\t(all)"
msgstr ""
-#: systemv/lpstat.c:1939 systemv/lpstat.c:1942 systemv/lpstat.c:2064
-#: systemv/lpstat.c:2067
+#: systemv/lpstat.c:1870 systemv/lpstat.c:1873 systemv/lpstat.c:1993
+#: systemv/lpstat.c:1996
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:1848 systemv/lpstat.c:1971
msgid "\tAfter fault: continue"
msgstr ""
-#: systemv/lpstat.c:1535 systemv/lpstat.c:1886 systemv/lpstat.c:2012
+#: systemv/lpstat.c:1471 systemv/lpstat.c:1817 systemv/lpstat.c:1941
#, c-format
msgid "\tAlerts: %s"
msgstr ""
-#: systemv/lpstat.c:1940 systemv/lpstat.c:2065
+#: systemv/lpstat.c:1871 systemv/lpstat.c:1994
msgid "\tBanner required"
msgstr ""
-#: systemv/lpstat.c:1941 systemv/lpstat.c:2066
+#: systemv/lpstat.c:1872 systemv/lpstat.c:1995
msgid "\tCharset sets:"
msgstr ""
-#: systemv/lpstat.c:1905 systemv/lpstat.c:2030
+#: systemv/lpstat.c:1836 systemv/lpstat.c:1959
msgid "\tConnection: direct"
msgstr ""
-#: systemv/lpstat.c:1896 systemv/lpstat.c:2022
+#: systemv/lpstat.c:1827 systemv/lpstat.c:1951
msgid "\tConnection: remote"
msgstr ""
-#: systemv/lpstat.c:1860 systemv/lpstat.c:1986
+#: systemv/lpstat.c:1793 systemv/lpstat.c:1917
msgid "\tContent types: any"
msgstr ""
-#: systemv/lpstat.c:1944 systemv/lpstat.c:2069
+#: systemv/lpstat.c:1875 systemv/lpstat.c:1998
msgid "\tDefault page size:"
msgstr ""
-#: systemv/lpstat.c:1943 systemv/lpstat.c:2068
+#: systemv/lpstat.c:1874 systemv/lpstat.c:1997
msgid "\tDefault pitch:"
msgstr ""
-#: systemv/lpstat.c:1945 systemv/lpstat.c:2070
+#: systemv/lpstat.c:1876 systemv/lpstat.c:1999
msgid "\tDefault port settings:"
msgstr ""
-#: systemv/lpstat.c:1866 systemv/lpstat.c:1992
+#: systemv/lpstat.c:1799 systemv/lpstat.c:1923
#, c-format
msgid "\tDescription: %s"
msgstr ""
-#: systemv/lpstat.c:1859 systemv/lpstat.c:1985
+#: systemv/lpstat.c:1792 systemv/lpstat.c:1916
msgid "\tForm mounted:"
msgstr ""
-#: systemv/lpstat.c:1938 systemv/lpstat.c:2063
+#: systemv/lpstat.c:1869 systemv/lpstat.c:1992
msgid "\tForms allowed:"
msgstr ""
-#: systemv/lpstat.c:1900 systemv/lpstat.c:2026
+#: systemv/lpstat.c:1831 systemv/lpstat.c:1955
#, c-format
msgid "\tInterface: %s.ppd"
msgstr ""
-#: systemv/lpstat.c:1909 systemv/lpstat.c:2034
+#: systemv/lpstat.c:1840 systemv/lpstat.c:1963
#, c-format
msgid "\tInterface: %s/interfaces/%s"
msgstr ""
-#: systemv/lpstat.c:1913 systemv/lpstat.c:2038
+#: systemv/lpstat.c:1844 systemv/lpstat.c:1967
#, c-format
msgid "\tInterface: %s/ppd/%s.ppd"
msgstr ""
-#: systemv/lpstat.c:1891 systemv/lpstat.c:2017
+#: systemv/lpstat.c:1822 systemv/lpstat.c:1946
#, c-format
msgid "\tLocation: %s"
msgstr ""
-#: systemv/lpstat.c:1916 systemv/lpstat.c:2041
+#: systemv/lpstat.c:1847 systemv/lpstat.c:1970
msgid "\tOn fault: no alert"
msgstr ""
-#: systemv/lpstat.c:1861 systemv/lpstat.c:1987
+#: systemv/lpstat.c:1794 systemv/lpstat.c:1918
msgid "\tPrinter types: unknown"
msgstr ""
-#: systemv/lpstat.c:1516
+#: systemv/lpstat.c:1454
#, 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:1852 systemv/lpstat.c:1866 systemv/lpstat.c:1975
+#: systemv/lpstat.c:1989
msgid "\tUsers allowed:"
msgstr ""
-#: systemv/lpstat.c:1928 systemv/lpstat.c:2053
+#: systemv/lpstat.c:1859 systemv/lpstat.c:1982
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:1474
#, 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:1785 systemv/lpstat.c:1909
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:2788
msgid " ! expression Unary NOT of expression."
msgstr ""
-#: test/ippfind.c:2775
+#: test/ippfind.c:2787
msgid " ( expressions ) Group expressions."
msgstr ""
@@ -1003,117 +1003,135 @@ 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:2769
msgid " --domain regex Match domain to regular expression."
msgstr ""
-#: test/ippfind.c:2758
+#: test/ippfind.c:2770
msgid ""
" --exec utility [argument ...] ;\n"
" Execute program if true."
msgstr ""
-#: test/ippfind.c:2778
+#: test/ippfind.c:2790
msgid " --false Always false."
msgstr ""
-#: test/ippfind.c:2740
+#: test/ipptool.c:4806
+msgid " --help Show help."
+msgstr ""
+
+#: test/ippfind.c:2752
msgid " --help Show this help."
msgstr ""
-#: test/ippfind.c:2760
+#: test/ippfind.c:2772
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:2774
msgid " --local True if service is local."
msgstr ""
-#: test/ippfind.c:2761
+#: test/ippfind.c:2773
msgid " --ls List attributes."
msgstr ""
-#: test/ippfind.c:2763
+#: test/ippfind.c:2775
msgid " --name regex Match service name to regular expression."
msgstr ""
-#: test/ippfind.c:2777
+#: test/ippfind.c:2789
msgid " --not expression Unary NOT of expression."
msgstr ""
-#: test/ippfind.c:2764
+#: test/ippfind.c:2776
msgid " --path regex Match resource path to regular expression."
msgstr ""
-#: test/ippfind.c:2765
+#: test/ippfind.c:2777
msgid " --port number[-number] Match port to number or range."
msgstr ""
-#: test/ippfind.c:2766
+#: test/ippfind.c:2778
msgid " --print Print URI if true."
msgstr ""
-#: test/ippfind.c:2767
+#: test/ippfind.c:2779
msgid " --print-name Print service name if true."
msgstr ""
-#: test/ippfind.c:2768
+#: test/ippfind.c:2780
msgid " --quiet Quietly report match via exit code."
msgstr ""
-#: test/ippfind.c:2769
+#: test/ippfind.c:2781
msgid " --remote True if service is remote."
msgstr ""
-#: test/ippfind.c:2779
+#: test/ipptool.c:4807
+msgid ""
+" --stop-after-include-error\n"
+" Stop tests after a failed INCLUDE."
+msgstr ""
+
+#: test/ippfind.c:2791
msgid " --true Always true."
msgstr ""
-#: test/ippfind.c:2770
+#: test/ippfind.c:2782
msgid " --txt key True if the TXT record contains the key."
msgstr ""
-#: test/ippfind.c:2771
+#: test/ippfind.c:2783
msgid " --txt-* regex Match TXT record key to regular expression."
msgstr ""
-#: test/ippfind.c:2772
+#: test/ippfind.c:2784
msgid " --uri regex Match URI to regular expression."
msgstr ""
-#: test/ippfind.c:2741
+#: test/ippfind.c:2753
msgid " --version Show program version."
msgstr ""
-#: test/ippfind.c:2734 test/ipptool.c:4709
+#: test/ipptool.c:4809
+msgid " --version Show version."
+msgstr ""
+
+#: test/ippfind.c:2746 test/ipptool.c:4810
msgid " -4 Connect using IPv4."
msgstr ""
-#: test/ippfind.c:2735 test/ipptool.c:4710
+#: test/ippfind.c:2747 test/ipptool.c:4811
msgid " -6 Connect using IPv6."
msgstr ""
-#: test/ipptool.c:4711
+#: test/ipptool.c:4812
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 +1139,11 @@ msgstr ""
msgid " -E Encrypt the connection."
msgstr ""
-#: test/ipptool.c:4713
+#: test/ipptool.c:4814
msgid " -E Test with HTTP Upgrade to TLS."
msgstr ""
-#: scheduler/main.c:2005
+#: scheduler/main.c:2149
msgid " -F Run in the foreground but detach from console."
msgstr ""
@@ -1133,11 +1151,11 @@ msgstr ""
msgid " -H samba-server Use the named SAMBA server."
msgstr ""
-#: test/ipptool.c:4715
+#: test/ipptool.c:4816
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 +1163,19 @@ msgstr ""
msgid " -I {filename,filters,none,profiles}"
msgstr ""
-#: test/ipptool.c:4716
+#: test/ipptool.c:4817
msgid " -L Send requests using content-length."
msgstr ""
-#: scheduler/cupsfilter.c:1460
+#: test/ipptool.c:4819
+msgid " -P filename.plist Produce XML plist to a file and test report to standard output."
+msgstr ""
+
+#: scheduler/cupsfilter.c:1485
msgid " -P filename.ppd Set PPD file."
msgstr ""
-#: test/ippfind.c:2744
+#: test/ippfind.c:2756
msgid " -P number[-number] Match port to number or range."
msgstr ""
@@ -1161,23 +1183,23 @@ msgstr ""
msgid " -R root-directory Set alternate root."
msgstr ""
-#: test/ipptool.c:4718
+#: test/ipptool.c:4820
msgid " -S Test with SSL encryption."
msgstr ""
-#: test/ippfind.c:2736
+#: test/ippfind.c:2748
msgid " -T seconds Set the browse timeout in seconds."
msgstr ""
-#: test/ipptool.c:4720
+#: test/ipptool.c:4822
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:2750 test/ipptool.c:4824
msgid " -V version Set default IPP version."
msgstr ""
@@ -1185,7 +1207,7 @@ msgstr ""
msgid " -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,translations}"
msgstr ""
-#: test/ipptool.c:4724
+#: test/ipptool.c:4826
msgid " -X Produce XML plist instead of plain text."
msgstr ""
@@ -1197,15 +1219,19 @@ msgstr ""
msgid " -a Export all printers."
msgstr ""
-#: ppdc/ppdc.cxx:442
+#: test/ipptool.c:4828
+msgid " -c Produce CSV output."
+msgstr ""
+
+#: 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:2147
msgid " -c cupsd.conf Set cupsd.conf file to use."
msgstr ""
@@ -1213,39 +1239,39 @@ msgstr ""
msgid " -d domain Browse/resolve in specified domain."
msgstr ""
-#: test/ipptool.c:4726
+#: test/ipptool.c:4829
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:2757
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:2148
msgid " -f Run in the foreground."
msgstr ""
-#: test/ipptool.c:4728
+#: test/ipptool.c:4831
msgid " -f filename Set default request filename."
msgstr ""
-#: scheduler/main.c:2007
+#: scheduler/main.c:2151
msgid " -h Show this usage message."
msgstr ""
-#: test/ippfind.c:2746
+#: test/ippfind.c:2758
msgid " -h regex Match hostname to regular expression."
msgstr ""
@@ -1253,47 +1279,51 @@ 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:4833
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:2759
msgid " -l List attributes."
msgstr ""
-#: scheduler/main.c:2008
-msgid " -l Run cupsd from launchd(8)."
+#: test/ipptool.c:4835
+msgid " -l Produce plain text output."
msgstr ""
-#: ppdc/ppdc.cxx:446
+#: scheduler/main.c:2152
+msgid " -l Run cupsd on demand."
+msgstr ""
+
+#: 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:4836
msgid " -n count Repeat the last file the given number of times."
msgstr ""
-#: test/ippfind.c:2748
+#: test/ippfind.c:2760
msgid " -n regex Match service name to regular expression."
msgstr ""
@@ -1301,19 +1331,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:2761
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 +1351,15 @@ msgstr ""
msgid " -p program Run specified program for each service."
msgstr ""
-#: test/ippfind.c:2750
+#: test/ippfind.c:2762
msgid " -q Quietly report match via exit code."
msgstr ""
-#: systemv/cupstestppd.c:3826 test/ipptool.c:4734
+#: systemv/cupstestppd.c:3826 test/ipptool.c:4838
msgid " -q Run silently."
msgstr ""
-#: test/ippfind.c:2751
+#: test/ippfind.c:2763
msgid " -r True if service is remote."
msgstr ""
@@ -1337,27 +1367,27 @@ msgstr ""
msgid " -r Use 'relaxed' open mode."
msgstr ""
-#: test/ippfind.c:2752
+#: test/ippfind.c:2764
msgid " -s Print service name if true."
msgstr ""
-#: test/ipptool.c:4735
+#: test/ipptool.c:4839
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:2153
msgid " -t Test the configuration file."
msgstr ""
-#: test/ippfind.c:2753
+#: test/ippfind.c:2765
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 +1395,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:2766
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:4840
+#: ppdc/ppdc.cxx:447 ppdc/ppdpo.cxx:259
msgid " -v Be verbose."
msgstr ""
@@ -1382,99 +1412,99 @@ msgstr ""
msgid " -vv Be very verbose."
msgstr ""
-#: test/ippfind.c:2755
+#: test/ippfind.c:2767
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:2810
msgid " IPPFIND_SERVICE_DOMAIN Domain name"
msgstr ""
-#: test/ippfind.c:2799
+#: test/ippfind.c:2811
msgid ""
" IPPFIND_SERVICE_HOSTNAME\n"
" Fully-qualified domain name"
msgstr ""
-#: test/ippfind.c:2801
+#: test/ippfind.c:2813
msgid " IPPFIND_SERVICE_NAME Service instance name"
msgstr ""
-#: test/ippfind.c:2802
+#: test/ippfind.c:2814
msgid " IPPFIND_SERVICE_PORT Port number"
msgstr ""
-#: test/ippfind.c:2803
+#: test/ippfind.c:2815
msgid " IPPFIND_SERVICE_REGTYPE DNS-SD registration type"
msgstr ""
-#: test/ippfind.c:2804
+#: test/ippfind.c:2816
msgid " IPPFIND_SERVICE_SCHEME URI scheme"
msgstr ""
-#: test/ippfind.c:2805
+#: test/ippfind.c:2817
msgid " IPPFIND_SERVICE_URI URI"
msgstr ""
-#: test/ippfind.c:2806
+#: test/ippfind.c:2818
msgid " IPPFIND_TXT_* Value of TXT record key"
msgstr ""
-#: test/ippfind.c:2781
+#: test/ippfind.c:2793
msgid ""
" expression --and expression\n"
" Logical AND."
msgstr ""
-#: test/ippfind.c:2783
+#: test/ippfind.c:2795
msgid ""
" expression --or expression\n"
" Logical OR."
msgstr ""
-#: test/ippfind.c:2780
+#: test/ippfind.c:2792
msgid " expression expression Logical AND."
msgstr ""
-#: test/ippfind.c:2788
+#: test/ippfind.c:2800
msgid " {service_domain} Domain name"
msgstr ""
-#: test/ippfind.c:2789
+#: test/ippfind.c:2801
msgid " {service_hostname} Fully-qualified domain name"
msgstr ""
-#: test/ippfind.c:2790
+#: test/ippfind.c:2802
msgid " {service_name} Service instance name"
msgstr ""
-#: test/ippfind.c:2791
+#: test/ippfind.c:2803
msgid " {service_port} Port number"
msgstr ""
-#: test/ippfind.c:2792
+#: test/ippfind.c:2804
msgid " {service_regtype} DNS-SD registration type"
msgstr ""
-#: test/ippfind.c:2793
+#: test/ippfind.c:2805
msgid " {service_scheme} URI scheme"
msgstr ""
-#: test/ippfind.c:2794
+#: test/ippfind.c:2806
msgid " {service_uri} URI"
msgstr ""
-#: test/ippfind.c:2795
+#: test/ippfind.c:2807
msgid " {txt_*} Value of TXT record key"
msgstr ""
-#: test/ippfind.c:2787
+#: test/ippfind.c:2799
msgid " {} URI"
msgstr ""
@@ -1539,252 +1569,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 ""
-#: systemv/lpstat.c:779
+#: 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 ""
+
+#: 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:9952
#, 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 +1854,7 @@ msgstr ""
msgid "%s: %s failed: %s"
msgstr ""
-#: test/ippfind.c:797 test/ipptool.c:361
+#: test/ippfind.c:777 test/ipptool.c:378
#, c-format
msgid "%s: Bad version %s for \"-V\"."
msgstr ""
@@ -1804,109 +1864,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:1339
+#: systemv/lpstat.c:1579
#, 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 +1976,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 +1993,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 +2003,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 +2038,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 +2064,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:309
+#, c-format
+msgid "%s: Missing filename for \"-P\"."
+msgstr ""
+
+#: test/ippfind.c:749 test/ipptool.c:346
#, c-format
msgid "%s: Missing timeout for \"-T\"."
msgstr ""
-#: test/ippfind.c:781 test/ipptool.c:343
+#: test/ippfind.c:762 test/ipptool.c:360
#, 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 +2099,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:291 test/ipptool.c:335
#, 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,234 +2118,239 @@ 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:318
+#, 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:648
#, c-format
msgid "%s: Unknown option \"%s\"."
msgstr ""
-#: test/ippfind.c:948
+#: test/ippfind.c:928
#, 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 ""
-#: ppdc/sample.c:310
+#: ppdc/sample.c:305
msgid "-1"
msgstr ""
-#: ppdc/sample.c:301
+#: ppdc/sample.c:296
msgid "-10"
msgstr ""
-#: ppdc/sample.c:393
+#: ppdc/sample.c:388
msgid "-100"
msgstr ""
-#: ppdc/sample.c:392
+#: ppdc/sample.c:387
msgid "-105"
msgstr ""
-#: ppdc/sample.c:300
+#: ppdc/sample.c:295
msgid "-11"
msgstr ""
-#: ppdc/sample.c:391
+#: ppdc/sample.c:386
msgid "-110"
msgstr ""
-#: ppdc/sample.c:390
+#: ppdc/sample.c:385
msgid "-115"
msgstr ""
-#: ppdc/sample.c:299
+#: ppdc/sample.c:294
msgid "-12"
msgstr ""
-#: ppdc/sample.c:389
+#: ppdc/sample.c:384
msgid "-120"
msgstr ""
-#: ppdc/sample.c:298
+#: ppdc/sample.c:293
msgid "-13"
msgstr ""
-#: ppdc/sample.c:297
+#: ppdc/sample.c:292
msgid "-14"
msgstr ""
-#: ppdc/sample.c:296
+#: ppdc/sample.c:291
msgid "-15"
msgstr ""
-#: ppdc/sample.c:309
+#: ppdc/sample.c:304
msgid "-2"
msgstr ""
-#: ppdc/sample.c:409
+#: ppdc/sample.c:404
msgid "-20"
msgstr ""
-#: ppdc/sample.c:408
+#: ppdc/sample.c:403
msgid "-25"
msgstr ""
-#: ppdc/sample.c:308
+#: ppdc/sample.c:303
msgid "-3"
msgstr ""
-#: ppdc/sample.c:407
+#: ppdc/sample.c:402
msgid "-30"
msgstr ""
-#: ppdc/sample.c:406
+#: ppdc/sample.c:401
msgid "-35"
msgstr ""
-#: ppdc/sample.c:307
+#: ppdc/sample.c:302
msgid "-4"
msgstr ""
-#: ppdc/sample.c:405
+#: ppdc/sample.c:400
msgid "-40"
msgstr ""
-#: ppdc/sample.c:404
+#: ppdc/sample.c:399
msgid "-45"
msgstr ""
-#: ppdc/sample.c:306
+#: ppdc/sample.c:301
msgid "-5"
msgstr ""
-#: ppdc/sample.c:403
+#: ppdc/sample.c:398
msgid "-50"
msgstr ""
-#: ppdc/sample.c:402
+#: ppdc/sample.c:397
msgid "-55"
msgstr ""
-#: ppdc/sample.c:305
+#: ppdc/sample.c:300
msgid "-6"
msgstr ""
-#: ppdc/sample.c:401
+#: ppdc/sample.c:396
msgid "-60"
msgstr ""
-#: ppdc/sample.c:400
+#: ppdc/sample.c:395
msgid "-65"
msgstr ""
-#: ppdc/sample.c:304
+#: ppdc/sample.c:299
msgid "-7"
msgstr ""
-#: ppdc/sample.c:399
+#: ppdc/sample.c:394
msgid "-70"
msgstr ""
-#: ppdc/sample.c:398
+#: ppdc/sample.c:393
msgid "-75"
msgstr ""
-#: ppdc/sample.c:303
+#: ppdc/sample.c:298
msgid "-8"
msgstr ""
-#: ppdc/sample.c:397
+#: ppdc/sample.c:392
msgid "-80"
msgstr ""
-#: ppdc/sample.c:396
+#: ppdc/sample.c:391
msgid "-85"
msgstr ""
-#: ppdc/sample.c:302
+#: ppdc/sample.c:297
msgid "-9"
msgstr ""
-#: ppdc/sample.c:395
+#: ppdc/sample.c:390
msgid "-90"
msgstr ""
-#: ppdc/sample.c:394
+#: ppdc/sample.c:389
msgid "-95"
msgstr ""
-#: ppdc/sample.c:311
+#: ppdc/sample.c:306
msgid "0"
msgstr ""
-#: ppdc/sample.c:312
+#: ppdc/sample.c:307
msgid "1"
msgstr ""
-#: ppdc/sample.c:384
+#: ppdc/sample.c:379
msgid "1 inch/sec."
msgstr ""
@@ -2292,7 +2362,7 @@ msgstr ""
msgid "1.25x2.25\""
msgstr ""
-#: ppdc/sample.c:432
+#: ppdc/sample.c:427
msgid "1.5 inch/sec."
msgstr ""
@@ -2312,11 +2382,11 @@ msgstr ""
msgid "1.50x2.00\""
msgstr ""
-#: ppdc/sample.c:321
+#: ppdc/sample.c:316
msgid "10"
msgstr ""
-#: ppdc/sample.c:443
+#: ppdc/sample.c:438
msgid "10 inches/sec."
msgstr ""
@@ -2332,39 +2402,39 @@ msgstr ""
msgid "10 x 14"
msgstr ""
-#: ppdc/sample.c:423
+#: ppdc/sample.c:418
msgid "100"
msgstr ""
-#: ppdc/sample.c:334
+#: ppdc/sample.c:329
msgid "100 mm/sec."
msgstr ""
-#: ppdc/sample.c:424
+#: ppdc/sample.c:419
msgid "105"
msgstr ""
-#: ppdc/sample.c:322
+#: ppdc/sample.c:317
msgid "11"
msgstr ""
-#: ppdc/sample.c:444
+#: ppdc/sample.c:439
msgid "11 inches/sec."
msgstr ""
-#: ppdc/sample.c:425
+#: ppdc/sample.c:420
msgid "110"
msgstr ""
-#: ppdc/sample.c:426
+#: ppdc/sample.c:421
msgid "115"
msgstr ""
-#: ppdc/sample.c:323
+#: ppdc/sample.c:318
msgid "12"
msgstr ""
-#: ppdc/sample.c:445
+#: ppdc/sample.c:440
msgid "12 inches/sec."
msgstr ""
@@ -2372,11 +2442,11 @@ msgstr ""
msgid "12 x 11"
msgstr ""
-#: ppdc/sample.c:427
+#: ppdc/sample.c:422
msgid "120"
msgstr ""
-#: ppdc/sample.c:335
+#: ppdc/sample.c:330
msgid "120 mm/sec."
msgstr ""
@@ -2388,7 +2458,7 @@ msgstr ""
msgid "120x72dpi"
msgstr ""
-#: ppdc/sample.c:324
+#: ppdc/sample.c:319
msgid "13"
msgstr ""
@@ -2396,15 +2466,15 @@ msgstr ""
msgid "136dpi"
msgstr ""
-#: ppdc/sample.c:325
+#: ppdc/sample.c:320
msgid "14"
msgstr ""
-#: ppdc/sample.c:326
+#: ppdc/sample.c:321
msgid "15"
msgstr ""
-#: ppdc/sample.c:328
+#: ppdc/sample.c:323
msgid "15 mm/sec."
msgstr ""
@@ -2412,23 +2482,23 @@ msgstr ""
msgid "15 x 11"
msgstr ""
-#: ppdc/sample.c:336
+#: ppdc/sample.c:331
msgid "150 mm/sec."
msgstr ""
-#: ppdc/sample.c:283
+#: ppdc/sample.c:278
msgid "150dpi"
msgstr ""
-#: ppdc/sample.c:368
+#: ppdc/sample.c:363
msgid "16"
msgstr ""
-#: ppdc/sample.c:369
+#: ppdc/sample.c:364
msgid "17"
msgstr ""
-#: ppdc/sample.c:370
+#: ppdc/sample.c:365
msgid "18"
msgstr ""
@@ -2436,19 +2506,19 @@ msgstr ""
msgid "180dpi"
msgstr ""
-#: ppdc/sample.c:371
+#: ppdc/sample.c:366
msgid "19"
msgstr ""
-#: ppdc/sample.c:313
+#: ppdc/sample.c:308
msgid "2"
msgstr ""
-#: ppdc/sample.c:385
+#: ppdc/sample.c:380
msgid "2 inches/sec."
msgstr ""
-#: ppdc/sample.c:270
+#: ppdc/sample.c:262
msgid "2-Sided Printing"
msgstr ""
@@ -2504,7 +2574,7 @@ msgstr ""
msgid "2.38x5.50\""
msgstr ""
-#: ppdc/sample.c:433
+#: ppdc/sample.c:428
msgid "2.5 inches/sec."
msgstr ""
@@ -2524,15 +2594,15 @@ msgstr ""
msgid "2.9 x 1\""
msgstr ""
-#: ppdc/sample.c:372
+#: ppdc/sample.c:367
msgid "20"
msgstr ""
-#: ppdc/sample.c:329
+#: ppdc/sample.c:324
msgid "20 mm/sec."
msgstr ""
-#: ppdc/sample.c:337
+#: ppdc/sample.c:332
msgid "200 mm/sec."
msgstr ""
@@ -2540,19 +2610,19 @@ msgstr ""
msgid "203dpi"
msgstr ""
-#: ppdc/sample.c:373
+#: ppdc/sample.c:368
msgid "21"
msgstr ""
-#: ppdc/sample.c:374
+#: ppdc/sample.c:369
msgid "22"
msgstr ""
-#: ppdc/sample.c:375
+#: ppdc/sample.c:370
msgid "23"
msgstr ""
-#: ppdc/sample.c:376
+#: ppdc/sample.c:371
msgid "24"
msgstr ""
@@ -2564,35 +2634,35 @@ msgstr ""
msgid "240x72dpi"
msgstr ""
-#: ppdc/sample.c:377
+#: ppdc/sample.c:372
msgid "25"
msgstr ""
-#: ppdc/sample.c:338
+#: ppdc/sample.c:333
msgid "250 mm/sec."
msgstr ""
-#: ppdc/sample.c:378
+#: ppdc/sample.c:373
msgid "26"
msgstr ""
-#: ppdc/sample.c:379
+#: ppdc/sample.c:374
msgid "27"
msgstr ""
-#: ppdc/sample.c:380
+#: ppdc/sample.c:375
msgid "28"
msgstr ""
-#: ppdc/sample.c:381
+#: ppdc/sample.c:376
msgid "29"
msgstr ""
-#: ppdc/sample.c:314
+#: ppdc/sample.c:309
msgid "3"
msgstr ""
-#: ppdc/sample.c:386
+#: ppdc/sample.c:381
msgid "3 inches/sec."
msgstr ""
@@ -2652,15 +2722,15 @@ msgstr ""
msgid "3.50x1.00\""
msgstr ""
-#: ppdc/sample.c:382
+#: ppdc/sample.c:377
msgid "30"
msgstr ""
-#: ppdc/sample.c:330
+#: ppdc/sample.c:325
msgid "30 mm/sec."
msgstr ""
-#: ppdc/sample.c:339
+#: ppdc/sample.c:334
msgid "300 mm/sec."
msgstr ""
@@ -2668,7 +2738,7 @@ msgstr ""
msgid "300dpi"
msgstr ""
-#: ppdc/sample.c:410
+#: ppdc/sample.c:405
msgid "35"
msgstr ""
@@ -2680,11 +2750,11 @@ msgstr ""
msgid "360x180dpi"
msgstr ""
-#: ppdc/sample.c:315
+#: ppdc/sample.c:310
msgid "4"
msgstr ""
-#: ppdc/sample.c:387
+#: ppdc/sample.c:382
msgid "4 inches/sec."
msgstr ""
@@ -2724,23 +2794,23 @@ msgstr ""
msgid "4.00x6.50\""
msgstr ""
-#: ppdc/sample.c:411
+#: ppdc/sample.c:406
msgid "40"
msgstr ""
-#: ppdc/sample.c:331
+#: ppdc/sample.c:326
msgid "40 mm/sec."
msgstr ""
-#: ppdc/sample.c:412
+#: ppdc/sample.c:407
msgid "45"
msgstr ""
-#: ppdc/sample.c:316
+#: ppdc/sample.c:311
msgid "5"
msgstr ""
-#: ppdc/sample.c:437
+#: ppdc/sample.c:432
msgid "5 inches/sec."
msgstr ""
@@ -2748,19 +2818,19 @@ msgstr ""
msgid "5 x 7"
msgstr ""
-#: ppdc/sample.c:413
+#: ppdc/sample.c:408
msgid "50"
msgstr ""
-#: ppdc/sample.c:414
+#: ppdc/sample.c:409
msgid "55"
msgstr ""
-#: ppdc/sample.c:317
+#: ppdc/sample.c:312
msgid "6"
msgstr ""
-#: ppdc/sample.c:438
+#: ppdc/sample.c:433
msgid "6 inches/sec."
msgstr ""
@@ -2792,15 +2862,15 @@ msgstr ""
msgid "6.00x6.50\""
msgstr ""
-#: ppdc/sample.c:415
+#: ppdc/sample.c:410
msgid "60"
msgstr ""
-#: ppdc/sample.c:332
+#: ppdc/sample.c:327
msgid "60 mm/sec."
msgstr ""
-#: ppdc/sample.c:261
+#: ppdc/sample.c:253
msgid "600dpi"
msgstr ""
@@ -2812,15 +2882,15 @@ msgstr ""
msgid "60x72dpi"
msgstr ""
-#: ppdc/sample.c:416
+#: ppdc/sample.c:411
msgid "65"
msgstr ""
-#: ppdc/sample.c:318
+#: ppdc/sample.c:313
msgid "7"
msgstr ""
-#: ppdc/sample.c:440
+#: ppdc/sample.c:435
msgid "7 inches/sec."
msgstr ""
@@ -2828,23 +2898,19 @@ msgstr ""
msgid "7 x 9"
msgstr ""
-#: ppdc/sample.c:417
+#: ppdc/sample.c:412
msgid "70"
msgstr ""
-#: ppdc/sample.c:252
-msgid "720dpi"
-msgstr ""
-
-#: ppdc/sample.c:418
+#: ppdc/sample.c:413
msgid "75"
msgstr ""
-#: ppdc/sample.c:319
+#: ppdc/sample.c:314
msgid "8"
msgstr ""
-#: ppdc/sample.c:441
+#: ppdc/sample.c:436
msgid "8 inches/sec."
msgstr ""
@@ -2880,23 +2946,23 @@ msgstr ""
msgid "8.00x6.50\""
msgstr ""
-#: ppdc/sample.c:419
+#: ppdc/sample.c:414
msgid "80"
msgstr ""
-#: ppdc/sample.c:333
+#: ppdc/sample.c:328
msgid "80 mm/sec."
msgstr ""
-#: ppdc/sample.c:420
+#: ppdc/sample.c:415
msgid "85"
msgstr ""
-#: ppdc/sample.c:320
+#: ppdc/sample.c:315
msgid "9"
msgstr ""
-#: ppdc/sample.c:442
+#: ppdc/sample.c:437
msgid "9 inches/sec."
msgstr ""
@@ -2912,32 +2978,32 @@ msgstr ""
msgid "9-Pin Series"
msgstr ""
-#: ppdc/sample.c:421
+#: ppdc/sample.c:416
msgid "90"
msgstr ""
-#: ppdc/sample.c:422
+#: ppdc/sample.c:417
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:2274
#, 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 +3144,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,28 +3169,28 @@ 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 ""
-#: ppdc/sample.c:429
+#: ppdc/sample.c:424
msgid "Always"
msgstr ""
-#: backend/socket.c:126
+#: backend/socket.c:121
msgid "AppSocket/HP JetDirect"
msgstr ""
-#: ppdc/sample.c:450
+#: ppdc/sample.c:445
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,303 +3243,335 @@ msgstr ""
msgid "B9"
msgstr ""
-#: scheduler/ipp.c:10793
+#: scheduler/ipp.c:10877
#, 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:2360
#, c-format
msgid "Bad device-uri \"%s\"."
msgstr ""
-#: scheduler/ipp.c:2418
+#: scheduler/ipp.c:2399
#, c-format
msgid "Bad device-uri scheme \"%s\"."
msgstr ""
-#: scheduler/ipp.c:8039 scheduler/ipp.c:8055 scheduler/ipp.c:9276
+#: scheduler/ipp.c:8125 scheduler/ipp.c:8141 scheduler/ipp.c:9360
#, c-format
msgid "Bad document-format \"%s\"."
msgstr ""
-#: scheduler/ipp.c:9292
+#: scheduler/ipp.c:9376
#, c-format
msgid "Bad document-format-default \"%s\"."
msgstr ""
-#: cups/util.c:932
+#: cups/util.c:823
msgid "Bad filename buffer"
msgstr ""
-#: scheduler/ipp.c:1548
+#: cups/http-support.c:1465
+msgid "Bad hostname/address in URI"
+msgstr ""
+
+#: scheduler/ipp.c:1527
#, c-format
msgid "Bad job-name value: %s"
msgstr ""
-#: scheduler/ipp.c:1541
+#: scheduler/ipp.c:1520
msgid "Bad job-name value: Wrong type or count."
msgstr ""
-#: scheduler/ipp.c:9882
+#: scheduler/ipp.c:9967
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:9997
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:5930
+#: scheduler/ipp.c:6077 scheduler/ipp.c:7559 scheduler/ipp.c:7828
+#: scheduler/ipp.c:8678 scheduler/ipp.c:8904 scheduler/ipp.c:9256
+#: scheduler/ipp.c:9860
#, c-format
msgid "Bad job-uri \"%s\"."
msgstr ""
-#: scheduler/ipp.c:2059 scheduler/ipp.c:5442
+#: scheduler/ipp.c:2040 scheduler/ipp.c:5468
#, c-format
msgid "Bad notify-pull-method \"%s\"."
msgstr ""
-#: scheduler/ipp.c:2023 scheduler/ipp.c:5406
+#: scheduler/ipp.c:2004 scheduler/ipp.c:5432
#, 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:2442
+#, c-format
+msgid "Bad port-monitor \"%s\"."
msgstr ""
-#: scheduler/ipp.c:2522
+#: scheduler/ipp.c:2503
#, 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 ""
-#: ppdc/sample.c:287
+#: ppdc/sample.c:282
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 ""
-#: ppdc/sample.c:254
+#: ppdc/sample.c:277
msgid "CMYK"
msgstr ""
-#: ppdc/sample.c:363
+#: ppdc/sample.c:358
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:2198
msgid "Canceling print job."
msgstr ""
-#: scheduler/ipp.c:2502
+#: scheduler/ipp.c:2483
msgid "Cannot share a remote Kerberized printer."
msgstr ""
-#: ppdc/sample.c:279
+#: ppdc/sample.c:271
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:2052 scheduler/ipp.c:5480
#, 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 ""
-#: ppdc/sample.c:282
+#: ppdc/sample.c:276
msgid "Color"
msgstr ""
-#: ppdc/sample.c:253
+#: ppdc/sample.c:274
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:854 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:759 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 ""
-#: ppdc/sample.c:365
+#: ppdc/sample.c:360
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:1349 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 ""
-#: ppdc/sample.c:359
+#: ppdc/sample.c:354
msgid "CustominCutInterval"
msgstr ""
-#: ppdc/sample.c:357
+#: ppdc/sample.c:352
msgid "CustominTearInterval"
msgstr ""
-#: ppdc/sample.c:343
+#: ppdc/sample.c:338
msgid "Cut"
msgstr ""
-#: ppdc/sample.c:451
+#: ppdc/sample.c:446
msgid "Cutter"
msgstr ""
@@ -3485,23 +3583,23 @@ 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 ""
-#: ppdc/sample.c:281
+#: ppdc/sample.c:273
msgid "DeskJet Series"
msgstr ""
-#: scheduler/ipp.c:1296
+#: scheduler/ipp.c:1276
#, c-format
msgid "Destination \"%s\" is not accepting jobs."
msgstr ""
@@ -3517,7 +3615,7 @@ msgid ""
" location = %s"
msgstr ""
-#: ppdc/sample.c:436
+#: ppdc/sample.c:431
msgid "Direct Thermal Media"
msgstr ""
@@ -3546,16 +3644,16 @@ msgstr ""
msgid "Directory \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
msgstr ""
-#: ppdc/sample.c:345
+#: ppdc/sample.c:340
msgid "Disabled"
msgstr ""
-#: scheduler/ipp.c:5953
+#: scheduler/ipp.c:5979
#, c-format
msgid "Document #%d does not exist in job #%d."
msgstr ""
-#: ppdc/sample.c:275
+#: ppdc/sample.c:267
msgid "Duplexer"
msgstr ""
@@ -3563,26 +3661,30 @@ msgstr ""
msgid "Dymo"
msgstr ""
-#: ppdc/sample.c:431
+#: ppdc/sample.c:426
msgid "EPL1 Label Printer"
msgstr ""
-#: ppdc/sample.c:434
+#: ppdc/sample.c:429
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:4624
+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 +3692,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:2209
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 ""
@@ -3694,7 +3784,7 @@ msgstr ""
msgid "Envelope DL"
msgstr ""
-#: ppdc/sample.c:269
+#: ppdc/sample.c:261
msgid "Envelope Feed"
msgstr ""
@@ -3818,7 +3908,7 @@ msgstr ""
msgid "Envelope You4 Long Edge"
msgstr ""
-#: test/ippfind.c:2797
+#: test/ippfind.c:2809
msgid "Environment Variables:"
msgstr ""
@@ -3826,12 +3916,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 ""
@@ -3839,43 +3929,43 @@ msgstr ""
msgid "Error: need hostname after \"-h\" option."
msgstr ""
-#: ppdc/sample.c:355
+#: ppdc/sample.c:350
msgid "Every 10 Labels"
msgstr ""
-#: ppdc/sample.c:347
+#: ppdc/sample.c:342
msgid "Every 2 Labels"
msgstr ""
-#: ppdc/sample.c:348
+#: ppdc/sample.c:343
msgid "Every 3 Labels"
msgstr ""
-#: ppdc/sample.c:349
+#: ppdc/sample.c:344
msgid "Every 4 Labels"
msgstr ""
-#: ppdc/sample.c:350
+#: ppdc/sample.c:345
msgid "Every 5 Labels"
msgstr ""
-#: ppdc/sample.c:351
+#: ppdc/sample.c:346
msgid "Every 6 Labels"
msgstr ""
-#: ppdc/sample.c:352
+#: ppdc/sample.c:347
msgid "Every 7 Labels"
msgstr ""
-#: ppdc/sample.c:353
+#: ppdc/sample.c:348
msgid "Every 8 Labels"
msgstr ""
-#: ppdc/sample.c:354
+#: ppdc/sample.c:349
msgid "Every 9 Labels"
msgstr ""
-#: ppdc/sample.c:346
+#: ppdc/sample.c:341
msgid "Every Label"
msgstr ""
@@ -3883,15 +3973,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:2755
msgid "Expressions:"
msgstr ""
@@ -3946,13 +4036,13 @@ msgstr ""
msgid "File Folder "
msgstr ""
-#: scheduler/ipp.c:2397
+#: scheduler/ipp.c:2378
#, 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,38 +4051,38 @@ 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 ""
-#: ppdc/sample.c:259
+#: ppdc/sample.c:251
msgid "Generic"
msgstr ""
-#: cups/snmp.c:1012
+#: cups/snmp.c:968
msgid "Get-Response-PDU uses indefinite length"
msgstr ""
-#: ppdc/sample.c:290
+#: ppdc/sample.c:285
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:5908 scheduler/ipp.c:6055 scheduler/ipp.c:7536
+#: scheduler/ipp.c:8656 scheduler/ipp.c:8882 scheduler/ipp.c:9234
+#: scheduler/ipp.c:9838
msgid "Got a printer-uri attribute but no job-id."
msgstr ""
-#: ppdc/sample.c:255
+#: ppdc/sample.c:275
msgid "Grayscale"
msgstr ""
-#: ppdc/sample.c:280
+#: ppdc/sample.c:272
msgid "HP"
msgstr ""
@@ -4004,95 +4094,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,47 +4190,47 @@ 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 ""
-#: ppdc/sample.c:274
+#: ppdc/sample.c:266
msgid "Installable Options"
msgstr ""
-#: ppdc/sample.c:277
+#: ppdc/sample.c:269
msgid "Installed"
msgstr ""
-#: ppdc/sample.c:293
+#: ppdc/sample.c:288
msgid "IntelliBar Label Printer"
msgstr ""
-#: ppdc/sample.c:292
+#: ppdc/sample.c:287
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 +4242,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 +4319,93 @@ msgstr ""
msgid "JIS B9"
msgstr ""
-#: scheduler/ipp.c:8867
+#: scheduler/ipp.c:8954
#, 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:5566
+#: scheduler/ipp.c:5948 scheduler/ipp.c:6095 scheduler/ipp.c:6433
+#: scheduler/ipp.c:7383 scheduler/ipp.c:7405 scheduler/ipp.c:7577
+#: scheduler/ipp.c:7802 scheduler/ipp.c:7845 scheduler/ipp.c:8696
+#: scheduler/ipp.c:8922 scheduler/ipp.c:9274 scheduler/ipp.c:9878
#, 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:7603 scheduler/ipp.c:7887 scheduler/ipp.c:9893
#, c-format
msgid "Job #%d is finished and cannot be altered."
msgstr ""
-#: scheduler/ipp.c:8849
+#: scheduler/ipp.c:8936
#, 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:8710
#, 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:9975
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:10011 scheduler/ipp.c:10028 scheduler/ipp.c:10039
msgid "Job state cannot be changed."
msgstr ""
-#: scheduler/ipp.c:8715
+#: scheduler/ipp.c:8802
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 ""
@@ -4323,11 +4413,11 @@ msgstr ""
msgid "Label Printer"
msgstr ""
-#: ppdc/sample.c:446
+#: ppdc/sample.c:441
msgid "Label Top"
msgstr ""
-#: scheduler/ipp.c:2080 scheduler/ipp.c:5463
+#: scheduler/ipp.c:2061 scheduler/ipp.c:5489
#, c-format
msgid "Language \"%s\" not supported."
msgstr ""
@@ -4336,7 +4426,7 @@ msgstr ""
msgid "Large Address"
msgstr ""
-#: ppdc/sample.c:291
+#: ppdc/sample.c:286
msgid "LaserJet Series PCL 4/5"
msgstr ""
@@ -4352,39 +4442,43 @@ 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 ""
-#: ppdc/sample.c:272
+#: cups/localize.c:291
+msgid "Load paper."
+msgstr ""
+
+#: ppdc/sample.c:264
msgid "Long-Edge (Portrait)"
msgstr ""
-#: cups/http-support.c:1640
+#: cups/http-support.c:1725
msgid "Looking for printer."
msgstr ""
-#: ppdc/sample.c:268
+#: ppdc/sample.c:260
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:254
msgid "Media Source"
msgstr ""
-#: ppdc/sample.c:364
+#: ppdc/sample.c:359
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:280
msgid "Media Type"
msgstr ""
@@ -4392,79 +4486,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:5971
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:9328
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:6574
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,104 +4579,96 @@ msgid ""
" device-id = %s"
msgstr ""
-#: test/ippfind.c:2774
+#: test/ippfind.c:2786
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 ""
-#: ppdc/sample.c:430
+#: ppdc/sample.c:425
msgid "Never"
msgstr ""
-#: ppdc/sample.c:256
-msgid "New Stylus Color Series"
-msgstr ""
-
-#: ppdc/sample.c:258
-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:1123
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:5771
msgid "No default printer."
msgstr ""
-#: cgi-bin/ipp-var.c:436 scheduler/ipp.c:7063
+#: cgi-bin/ipp-var.c:421 scheduler/ipp.c:7149
msgid "No destinations added."
msgstr ""
@@ -4582,76 +4676,84 @@ 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:8091 scheduler/ipp.c:9342
msgid "No file in print request."
msgstr ""
-#: cups/util.c:926
+#: cups/util.c:817
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:811
msgid "No printer name"
msgstr ""
-#: cups/util.c:1843
+#: cups/util.c:1647
msgid "No printer-uri found"
msgstr ""
-#: cups/util.c:1828
+#: cups/util.c:1631
msgid "No printer-uri found for class"
msgstr ""
-#: scheduler/ipp.c:6148
+#: scheduler/ipp.c:6179
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:5374
msgid "No subscription attributes in request."
msgstr ""
-#: scheduler/ipp.c:7390
+#: scheduler/ipp.c:7476
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 ""
-#: ppdc/sample.c:367
+#: ppdc/sample.c:362
msgid "Non-continuous (Mark sensing)"
msgstr ""
-#: ppdc/sample.c:366
+#: ppdc/sample.c:361
msgid "Non-continuous (Web sensing)"
msgstr ""
@@ -4659,27 +4761,27 @@ 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 ""
-#: ppdc/sample.c:276
+#: ppdc/sample.c:268
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:10572
msgid "Not allowed to print."
msgstr ""
@@ -4691,15 +4793,15 @@ 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 ""
-#: ppdc/sample.c:271
+#: ppdc/sample.c:263
msgid "Off (1-Sided)"
msgstr ""
-#: ppdc/sample.c:361
+#: ppdc/sample.c:356
msgid "Oki"
msgstr ""
@@ -4707,77 +4809,69 @@ 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:2146 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:2745 test/ipptool.c:4805 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"
+#: cups/localize.c:316
+msgid "Output bin is almost full."
msgstr ""
-#: systemv/lpstat.c:1233
-#, c-format
-msgid "Output for printer %s is sent to remote printer %s on %s"
+#: cups/localize.c:318
+msgid "Output bin is full."
msgstr ""
-#: systemv/lpstat.c:1257 systemv/lpstat.c:1261
-#, c-format
-msgid "Output for printer %s/%s is sent to %s"
-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
msgid "PASS"
msgstr ""
-#: ppdc/sample.c:260
+#: ppdc/sample.c:252
msgid "PCL Laser Printer"
msgstr ""
@@ -4805,23 +4899,39 @@ 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 ""
-#: ppdc/sample.c:360
+#: 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:355
msgid "ParamCustominCutInterval"
msgstr ""
-#: ppdc/sample.c:358
+#: ppdc/sample.c:353
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,15 +4941,15 @@ 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 ""
-#: ppdc/sample.c:448
+#: ppdc/sample.c:443
msgid "Peel-Off"
msgstr ""
@@ -4851,19 +4961,19 @@ msgstr ""
msgid "Photo Labels"
msgstr ""
-#: ppdc/sample.c:286
+#: ppdc/sample.c:281
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 ""
-#: ppdc/sample.c:278
+#: ppdc/sample.c:270
msgid "PostScript Printer"
msgstr ""
@@ -4883,11 +4993,11 @@ msgstr ""
msgid "Postcard Long Edge"
msgstr ""
-#: backend/ipp.c:921 backend/ipp.c:929
+#: backend/ipp.c:961 backend/ipp.c:969
msgid "Preparing to print."
msgstr ""
-#: ppdc/sample.c:295
+#: ppdc/sample.c:290
msgid "Print Density"
msgstr ""
@@ -4895,79 +5005,79 @@ msgstr ""
msgid "Print Job:"
msgstr ""
-#: ppdc/sample.c:340
+#: ppdc/sample.c:335
msgid "Print Mode"
msgstr ""
-#: ppdc/sample.c:383
+#: ppdc/sample.c:378
msgid "Print Rate"
msgstr ""
-#: cgi-bin/printers.c:179
+#: cgi-bin/printers.c:171
msgid "Print Self-Test Page"
msgstr ""
-#: ppdc/sample.c:327
+#: ppdc/sample.c:322
msgid "Print Speed"
msgstr ""
-#: cgi-bin/ipp-var.c:792
+#: cgi-bin/ipp-var.c:777
msgid "Print Test Page"
msgstr ""
-#: ppdc/sample.c:356
+#: ppdc/sample.c:351
msgid "Print and Cut"
msgstr ""
-#: ppdc/sample.c:344
+#: ppdc/sample.c:339
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:2172
msgid "Print job canceled at printer."
msgstr ""
-#: backend/ipp.c:2105
+#: backend/ipp.c:2164
msgid "Print job too large."
msgstr ""
-#: backend/ipp.c:1602
+#: backend/ipp.c:1642
msgid "Print job was not accepted."
msgstr ""
-#: cgi-bin/ipp-var.c:1047
+#: cgi-bin/ipp-var.c:1027
msgid "Printer Added"
msgstr ""
-#: ppdc/sample.c:263
+#: ppdc/sample.c:255
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 ""
-#: ppdc/sample.c:294
+#: ppdc/sample.c:289
msgid "Printer Settings"
msgstr ""
-#: backend/ipp.c:2108
+#: backend/ipp.c:2167
msgid "Printer cannot print supplied content."
msgstr ""
-#: backend/ipp.c:2111
+#: backend/ipp.c:2170
msgid "Printer cannot print with supplied options."
msgstr ""
@@ -4975,68 +5085,59 @@ 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:10567
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 ""
-#: ppdc/sample.c:428
+#: ppdc/sample.c:423
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 ""
@@ -5044,69 +5145,73 @@ msgstr ""
msgid "Return Address"
msgstr ""
-#: ppdc/sample.c:449
+#: ppdc/sample.c:444
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:1008 cups/tls-gnutls.c:1024
+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 ""
@@ -5114,30 +5219,30 @@ msgstr ""
msgid "Shipping Address"
msgstr ""
-#: ppdc/sample.c:273
+#: ppdc/sample.c:265
msgid "Short-Edge (Landscape)"
msgstr ""
-#: ppdc/sample.c:288
+#: ppdc/sample.c:283
msgid "Special Paper"
msgstr ""
-#: backend/lpd.c:1074
+#: backend/lpd.c:1065
#, c-format
msgid "Spooling job, %.0f%% complete."
msgstr ""
-#: ppdc/sample.c:341
+#: ppdc/sample.c:336
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 ""
@@ -5146,21 +5251,13 @@ msgstr ""
msgid "Statement"
msgstr ""
-#: ppdc/sample.c:251
-msgid "Stylus Color Series"
-msgstr ""
-
-#: ppdc/sample.c:257
-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:6590 scheduler/ipp.c:7289
+#: scheduler/ipp.c:8790
#, c-format
msgid "Subscription #%d does not exist."
msgstr ""
-#: test/ippfind.c:2786
+#: test/ippfind.c:2798
msgid "Substitutions:"
msgstr ""
@@ -5176,7 +5273,7 @@ msgstr ""
msgid "Super B/A3"
msgstr ""
-#: cups/http-support.c:1350
+#: cups/http-support.c:1338
msgid "Switching Protocols"
msgstr ""
@@ -5192,306 +5289,278 @@ msgstr ""
msgid "Tabloid Oversize Long Edge"
msgstr ""
-#: ppdc/sample.c:342
+#: ppdc/sample.c:337
msgid "Tear"
msgstr ""
-#: ppdc/sample.c:447
+#: ppdc/sample.c:442
msgid "Tear-Off"
msgstr ""
-#: ppdc/sample.c:388
+#: ppdc/sample.c:383
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:6250 scheduler/ipp.c:6330 scheduler/ipp.c:6343
+#: scheduler/ipp.c:6355 scheduler/ipp.c:6370
#, 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:5183
#, c-format
msgid "The '%s' operation attribute cannot be supplied in a Create-Job request."
msgstr ""
-#: scheduler/ipp.c:6734
+#: scheduler/ipp.c:6820
#, c-format
msgid "The PPD file \"%s\" could not be found."
msgstr ""
-#: scheduler/ipp.c:6721
+#: scheduler/ipp.c:6807
#, 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:2088
msgid "The notify-lease-duration attribute cannot be used with job subscriptions."
msgstr ""
-#: scheduler/ipp.c:2090 scheduler/ipp.c:5473
+#: scheduler/ipp.c:2071 scheduler/ipp.c:5499
#, 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:981
+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:825 backend/ipp.c:944 backend/ipp.c:1058 backend/ipp.c:1449
+#: backend/ipp.c:1614 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:803 backend/ipp.c:836 backend/ipp.c:940 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:818 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:812 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:5166 scheduler/ipp.c:5333
+#: scheduler/ipp.c:5647 scheduler/ipp.c:6216 scheduler/ipp.c:7025
+#: scheduler/ipp.c:7081 scheduler/ipp.c:7395 scheduler/ipp.c:7661
+#: scheduler/ipp.c:7750 scheduler/ipp.c:7783 scheduler/ipp.c:8106
+#: scheduler/ipp.c:8500 scheduler/ipp.c:8582 scheduler/ipp.c:9747
+#: scheduler/ipp.c:10199 scheduler/ipp.c:10530 scheduler/ipp.c:10612
+#: scheduler/ipp.c:10987
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:2252
#, 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:2236
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:2232
msgid "The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to enable it."
msgstr ""
-#: scheduler/ipp.c:6280
+#: scheduler/ipp.c:6314
#, c-format
msgid "The which-jobs value \"%s\" is not supported."
msgstr ""
-#: scheduler/ipp.c:5551
+#: scheduler/ipp.c:5577
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 ""
-#: ppdc/sample.c:435
+#: ppdc/sample.c:430
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:2537
#, c-format
msgid "Too many printer-state-reasons values (%d > %d)."
msgstr ""
-#: ppdc/sample.c:289
+#: ppdc/sample.c:284
msgid "Transparency"
msgstr ""
-#: ppdc/sample.c:284
+#: ppdc/sample.c:279
msgid "Tray"
msgstr ""
-#: ppdc/sample.c:264
+#: ppdc/sample.c:256
msgid "Tray 1"
msgstr ""
-#: ppdc/sample.c:265
+#: ppdc/sample.c:257
msgid "Tray 2"
msgstr ""
-#: ppdc/sample.c:266
+#: ppdc/sample.c:258
msgid "Tray 3"
msgstr ""
-#: ppdc/sample.c:267
+#: ppdc/sample.c:259
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 +5593,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 +5601,231 @@ 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:1796
msgid "Unable to add document to print job."
msgstr ""
-#: scheduler/ipp.c:1558
+#: scheduler/ipp.c:1537
#, 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:2077 backend/ipp.c:2512
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:781 backend/ipp.c:1254 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:2657
#, c-format
msgid "Unable to copy PPD file - %s"
msgstr ""
-#: scheduler/ipp.c:2731
+#: scheduler/ipp.c:2712
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:2634
#, c-format
msgid "Unable to copy interface script - %s"
msgstr ""
-#: cups/util.c:605 cups/util.c:1667
+#: cups/util.c:496 cups/util.c:1479
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:1116 cups/tls-gnutls.c:1157
+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:1284
msgid "Unable to establish a secure connection to host (certificate chain invalid)."
msgstr ""
-#: cups/http.c:5344
+#: cups/tls-darwin.c:1274
msgid "Unable to establish a secure connection to host (certificate not yet valid)."
msgstr ""
-#: cups/http.c:5339
+#: cups/tls-darwin.c:1269
msgid "Unable to establish a secure connection to host (expired certificate)."
msgstr ""
-#: cups/http.c:5349
+#: cups/tls-darwin.c:1279
msgid "Unable to establish a secure connection to host (host name mismatch)."
msgstr ""
-#: cups/http.c:5359
+#: cups/tls-darwin.c:1289
msgid "Unable to establish a secure connection to host (peer dropped connection before responding)."
msgstr ""
-#: cups/http.c:5334
+#: cups/tls-darwin.c:1264
msgid "Unable to establish a secure connection to host (self-signed certificate)."
msgstr ""
-#: cups/http.c:5329
+#: cups/tls-darwin.c:1259
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:1316 cups/tls-sspi.c:1247 cups/tls-sspi.c:1264
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:1130
+msgid "Unable to find server credentials."
+msgstr ""
+
+#: backend/ipp.c:3493
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:1005
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 +5834,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:5992
#, c-format
msgid "Unable to open document #%d in job #%d."
msgstr ""
@@ -5804,226 +5881,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:1543 backend/ipp.c:1751 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:3352 backend/ipp.c:3429 backend/ipp.c:3437
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:10401
#, c-format
msgid "Unknown printer-error-policy \"%s\"."
msgstr ""
-#: scheduler/ipp.c:10301
+#: scheduler/ipp.c:10384
#, 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:10858
#, c-format
msgid "Unsupported 'compression' value \"%s\"."
msgstr ""
-#: scheduler/ipp.c:10804
+#: scheduler/ipp.c:10888
#, c-format
msgid "Unsupported 'document-format' value \"%s\"."
msgstr ""
-#: scheduler/ipp.c:10879
+#: scheduler/ipp.c:10963
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:8072 scheduler/ipp.c:9307
#, c-format
msgid "Unsupported compression \"%s\"."
msgstr ""
-#: scheduler/ipp.c:8120 scheduler/ipp.c:9373
+#: scheduler/ipp.c:8206 scheduler/ipp.c:9457
#, c-format
msgid "Unsupported document-format \"%s\"."
msgstr ""
-#: scheduler/ipp.c:9356
+#: scheduler/ipp.c:9440
#, 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 +6124,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 +6140,12 @@ msgstr ""
msgid "Usage: cupsctl [options] [param=value ... paramN=valueN]"
msgstr ""
-#: scheduler/main.c:2001
+#: scheduler/main.c:2145
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 +6164,7 @@ msgid ""
"Options:"
msgstr ""
-#: test/ippfind.c:2726
+#: test/ippfind.c:2738
msgid ""
"Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n"
" ippfind [options] name[.regtype[.domain.]] ... [expression]\n"
@@ -6083,7 +6172,7 @@ msgid ""
" ippfind --version"
msgstr ""
-#: test/ipptool.c:4706
+#: test/ipptool.c:4803
msgid "Usage: ipptool [options] URI filename [ ... filenameN ]"
msgstr ""
@@ -6091,7 +6180,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 +6188,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 +6204,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,60 +6212,56 @@ 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:1913
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:2219
#, c-format
msgid "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
msgstr ""
-#: systemv/lppasswd.c:254
-msgid "Your password must be at least 6 characters long, cannot contain your username, and must contain at least one letter and number."
-msgstr ""
-
-#: ppdc/sample.c:439
+#: ppdc/sample.c:434
msgid "ZPL Label Printer"
msgstr ""
-#: ppdc/sample.c:362
+#: ppdc/sample.c:357
msgid "Zebra"
msgstr ""
@@ -6203,11 +6277,11 @@ msgstr ""
msgid "completed"
msgstr ""
-#: scheduler/ipp.c:5838
+#: scheduler/ipp.c:5864
msgid "cups-deviced failed to execute."
msgstr ""
-#: scheduler/ipp.c:6657 scheduler/ipp.c:6906
+#: scheduler/ipp.c:6743 scheduler/ipp.c:6992
msgid "cups-driverd failed to execute."
msgstr ""
@@ -6239,11 +6313,15 @@ msgstr ""
msgid "cupsd: Expected config filename after \"-c\" option."
msgstr ""
-#: scheduler/main.c:259
+#: scheduler/main.c:258
msgid "cupsd: Expected cups-files.conf filename after \"-s\" option."
msgstr ""
-#: scheduler/main.c:270
+#: scheduler/main.c:236
+msgid "cupsd: On-demand support not compiled in, running in normal mode."
+msgstr ""
+
+#: scheduler/main.c:269
msgid "cupsd: Relative cups-files.conf filename not allowed."
msgstr ""
@@ -6251,39 +6329,35 @@ msgstr ""
msgid "cupsd: Unable to get current directory."
msgstr ""
-#: scheduler/main.c:317 scheduler/main.c:326
+#: scheduler/main.c:316 scheduler/main.c:325
msgid "cupsd: Unable to get path to cups-files.conf file."
msgstr ""
-#: scheduler/main.c:299
+#: scheduler/main.c:298
#, c-format
msgid "cupsd: Unknown argument \"%s\" - aborting."
msgstr ""
-#: scheduler/main.c:292
+#: scheduler/main.c:291
#, c-format
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 +6370,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 +6392,7 @@ msgstr ""
msgid "held"
msgstr ""
-#: berkeley/lpc.c:209
+#: berkeley/lpc.c:201
msgid "help\t\tGet help on commands."
msgstr ""
@@ -6326,297 +6400,297 @@ msgstr ""
msgid "idle"
msgstr ""
-#: test/ippfind.c:2458
+#: test/ippfind.c:2465
#, c-format
msgid "ippfind: Bad regular expression: %s"
msgstr ""
-#: test/ippfind.c:347
+#: test/ippfind.c:328
msgid "ippfind: Cannot use --and after --or."
msgstr ""
-#: test/ippfind.c:620
+#: test/ippfind.c:601
#, c-format
msgid "ippfind: Expected key name after %s."
msgstr ""
-#: test/ippfind.c:570 test/ippfind.c:753
+#: test/ippfind.c:551 test/ippfind.c:734
#, c-format
msgid "ippfind: Expected port range after %s."
msgstr ""
-#: test/ippfind.c:380
+#: test/ippfind.c:361
#, c-format
msgid "ippfind: Expected program after %s."
msgstr ""
-#: test/ippfind.c:397
+#: test/ippfind.c:378
#, c-format
msgid "ippfind: Expected semi-colon after %s."
msgstr ""
-#: test/ippfind.c:1977
+#: test/ippfind.c:1965
msgid "ippfind: Missing close brace in substitution."
msgstr ""
-#: test/ippfind.c:1074
+#: test/ippfind.c:1053
msgid "ippfind: Missing close parenthesis."
msgstr ""
-#: test/ippfind.c:354
+#: test/ippfind.c:335
msgid "ippfind: Missing expression before \"--and\"."
msgstr ""
-#: test/ippfind.c:467
+#: test/ippfind.c:448
msgid "ippfind: Missing expression before \"--or\"."
msgstr ""
-#: test/ippfind.c:891
+#: test/ippfind.c:871
#, c-format
msgid "ippfind: Missing key name after %s."
msgstr ""
-#: test/ippfind.c:1045
+#: test/ippfind.c:1024
msgid "ippfind: Missing open parenthesis."
msgstr ""
-#: test/ippfind.c:921
+#: test/ippfind.c:901
#, 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:347 test/ippfind.c:401 test/ippfind.c:430 test/ippfind.c:536
+#: test/ippfind.c:618 test/ippfind.c:633 test/ippfind.c:788 test/ippfind.c:803
+#: test/ippfind.c:826 test/ippfind.c:886
#, c-format
msgid "ippfind: Missing regular expression after %s."
msgstr ""
-#: test/ippfind.c:939
+#: test/ippfind.c:919
#, c-format
msgid "ippfind: Missing semi-colon after %s."
msgstr ""
-#: test/ippfind.c:1924 test/ippfind.c:1949
+#: test/ippfind.c:1912 test/ippfind.c:1937
msgid "ippfind: Out of memory."
msgstr ""
-#: test/ippfind.c:1018
+#: test/ippfind.c:997
msgid "ippfind: Too many parenthesis."
msgstr ""
-#: test/ippfind.c:1287 test/ippfind.c:1423 test/ippfind.c:2545
+#: test/ippfind.c:1266 test/ippfind.c:1402 test/ippfind.c:2557
#, c-format
msgid "ippfind: Unable to browse or resolve: %s"
msgstr ""
-#: test/ippfind.c:2036 test/ippfind.c:2063
+#: test/ippfind.c:2035 test/ippfind.c:2062
#, 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:1143 test/ippfind.c:1151 test/ippfind.c:1162
#, c-format
msgid "ippfind: Unable to use Bonjour: %s"
msgstr ""
-#: test/ippfind.c:2006
+#: test/ippfind.c:1994
#, 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:326 test/ipptool.c:389 test/ipptool.c:544 test/ipptool.c:567
+msgid "ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"."
msgstr ""
-#: test/ipptool.c:603
+#: test/ipptool.c:623
#, c-format
msgid "ipptool: Bad URI - %s."
msgstr ""
-#: test/ipptool.c:514
+#: test/ipptool.c:537
msgid "ipptool: Invalid seconds for \"-i\"."
msgstr ""
-#: test/ipptool.c:584
+#: test/ipptool.c:604
msgid "ipptool: May only specify a single URI."
msgstr ""
-#: test/ipptool.c:537
+#: test/ipptool.c:559
msgid "ipptool: Missing count for \"-n\"."
msgstr ""
-#: test/ipptool.c:407
+#: test/ipptool.c:423
msgid "ipptool: Missing filename for \"-f\"."
msgstr ""
-#: test/ipptool.c:388
+#: test/ipptool.c:404
msgid "ipptool: Missing name=value for \"-d\"."
msgstr ""
-#: test/ipptool.c:504
+#: test/ipptool.c:527
msgid "ipptool: Missing seconds for \"-i\"."
msgstr ""
-#: test/ipptool.c:630
+#: test/ipptool.c:649
msgid "ipptool: URI required before test file."
msgstr ""
-#: test/ipptool.c:564
+#: test/ipptool.c:585
#, c-format
msgid "ipptool: Unknown option \"-%c\"."
msgstr ""
-#: scheduler/ipp.c:7653
+#: scheduler/ipp.c:7739
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 +6752,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:5548
msgid "notify-events not specified."
msgstr ""
-#: scheduler/ipp.c:2044 scheduler/ipp.c:5427
+#: scheduler/ipp.c:2025 scheduler/ipp.c:5453
#, c-format
msgid "notify-recipient-uri URI \"%s\" is already used."
msgstr ""
-#: scheduler/ipp.c:2034 scheduler/ipp.c:5417
+#: scheduler/ipp.c:2015 scheduler/ipp.c:5443
#, c-format
msgid "notify-recipient-uri URI \"%s\" uses unknown scheme."
msgstr ""
@@ -6791,7 +6811,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 +6821,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 +6831,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 +7209,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:1777
#, c-format
msgid "printer %s disabled since %s -"
msgstr ""
-#: systemv/lpstat.c:1833
+#: systemv/lpstat.c:1766
#, c-format
msgid "printer %s is idle. enabled since %s"
msgstr ""
-#: systemv/lpstat.c:1838
+#: systemv/lpstat.c:1771
#, c-format
msgid "printer %s now printing %s-%d. enabled since %s"
msgstr ""
-#: systemv/lpstat.c:1969
+#: systemv/lpstat.c:1900
#, c-format
msgid "printer %s/%s disabled since %s -"
msgstr ""
-#: systemv/lpstat.c:1955
+#: systemv/lpstat.c:1886
#, c-format
msgid "printer %s/%s is idle. enabled since %s"
msgstr ""
-#: systemv/lpstat.c:1962
+#: systemv/lpstat.c:1893
#, c-format
msgid "printer %s/%s now printing %s-%d. enabled since %s"
msgstr ""
@@ -7298,29 +7318,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:2032
msgid "scheduler is not running"
msgstr ""
-#: systemv/lpstat.c:2099
+#: systemv/lpstat.c:2028
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 +7348,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 +7366,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..33e9891ae 100644
--- a/locale/cups.strings
+++ b/locale/cups.strings
@@ -189,9 +189,11 @@
" --domain regex Match domain to regular expression." = " --domain regex Match domain to regular expression.";
" --exec utility [argument ...] ;\n Execute program if true." = " --exec utility [argument ...] ;\n Execute program if true.";
" --false Always false." = " --false Always false.";
+" --help Show help." = " --help Show help.";
" --help Show this help." = " --help Show this help.";
" --host regex Match hostname to regular expression." = " --host regex Match hostname to regular expression.";
" --lf End lines with LF (UNIX/Linux/OS X)." = " --lf End lines with LF (UNIX/Linux/OS X).";
+" --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.";
@@ -202,11 +204,13 @@
" --print-name Print service name if true." = " --print-name Print service name if true.";
" --quiet Quietly report match via exit code." = " --quiet Quietly report match via exit code.";
" --remote True if service is remote." = " --remote True if service is remote.";
+" --stop-after-include-error\n Stop tests after a failed INCLUDE." = " --stop-after-include-error\n Stop tests after a failed INCLUDE.";
" --true Always true." = " --true Always true.";
" --txt key True if the TXT record contains the key." = " --txt key True if the TXT record contains the key.";
" --txt-* regex Match TXT record key to regular expression." = " --txt-* regex Match TXT record key to regular expression.";
" --uri regex Match URI to regular expression." = " --uri regex Match URI to regular expression.";
" --version Show program version." = " --version Show program version.";
+" --version Show version." = " --version Show version.";
" -4 Connect using IPv4." = " -4 Connect using IPv4.";
" -6 Connect using IPv6." = " -6 Connect using IPv6.";
" -C Send requests using chunking (default)." = " -C Send requests using chunking (default).";
@@ -220,6 +224,7 @@
" -I include-dir Add include directory to search path." = " -I include-dir Add include directory to search path.";
" -I {filename,filters,none,profiles}" = " -I {filename,filters,none,profiles}";
" -L Send requests using content-length." = " -L Send requests using content-length.";
+" -P filename.plist Produce XML plist to a file and test report to standard output." = " -P filename.plist Produce XML plist to a file and test report to standard output.";
" -P filename.ppd Set PPD file." = " -P filename.ppd Set PPD file.";
" -P number[-number] Match port to number or range." = " -P number[-number] Match port to number or range.";
" -R root-directory Set alternate root." = " -R root-directory Set alternate root.";
@@ -232,6 +237,7 @@
" -X Produce XML plist instead of plain text." = " -X Produce XML plist instead of plain text.";
" -a Browse for all services." = " -a Browse for all services.";
" -a Export all printers." = " -a Export all printers.";
+" -c Produce CSV output." = " -c Produce CSV output.";
" -c catalog.po Load the specified message catalog." = " -c catalog.po Load the specified message catalog.";
" -c cups-files.conf Set cups-files.conf file to use." = " -c cups-files.conf Set cups-files.conf file to use.";
" -c cupsd.conf Set cupsd.conf file to use." = " -c cupsd.conf Set cupsd.conf file to use.";
@@ -250,7 +256,8 @@
" -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 Produce plain text output." = " -l Produce plain text output.";
+" -l Run cupsd on demand." = " -l Run cupsd on demand.";
" -l lang[,lang,...] Specify the output language(s) (locale)." = " -l lang[,lang,...] Specify the output language(s) (locale).";
" -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 +343,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 +407,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 +417,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\".";
@@ -593,7 +608,6 @@
"7 inches/sec." = "7 inches/sec.";
"7 x 9" = "7 x 9";
"70" = "70";
-"720dpi" = "720dpi";
"75" = "75";
"8" = "8";
"8 inches/sec." = "8 inches/sec.";
@@ -687,6 +701,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 +709,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 +722,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 +788,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 +973,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 +996,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.";
@@ -990,8 +1013,6 @@
"Name OID uses indefinite length" = "Name OID uses indefinite length";
"Nested classes are not allowed." = "Nested classes are not allowed.";
"Never" = "Never";
-"New Stylus Color Series" = "New Stylus Color Series";
-"New Stylus Photo Series" = "New Stylus Photo Series";
"No" = "No";
"No Content" = "No Content";
"No PPD name" = "No PPD name";
@@ -1016,6 +1037,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 +1070,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 +1083,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 +1128,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 +1151,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";
@@ -1143,8 +1167,6 @@
"Starting Banner" = "Starting Banner";
"Starting page %d." = "Starting page %d.";
"Statement" = "Statement";
-"Stylus Color Series" = "Stylus Color Series";
-"Stylus Photo Series" = "Stylus Photo Series";
"Subscription #%d does not exist." = "Subscription #%d does not exist.";
"Substitutions:" = "Substitutions:";
"Super A" = "Super A";
@@ -1173,23 +1195,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 +1225,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 +1237,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 +1275,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 +1291,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 +1318,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 +1344,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 +1370,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 +1378,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 +1395,6 @@
"Web Interface is Disabled" = "Web Interface is Disabled";
"Yes" = "Yes";
"You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>." = "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>.";
-"Your password must be at least 6 characters long, cannot contain your username, and must contain at least one letter and number." = "Your password must be at least 6 characters long, cannot contain your username, and must contain at least one letter and number.";
"ZPL Label Printer" = "ZPL Label Printer";
"Zebra" = "Zebra";
"aborted" = "aborted";
@@ -1392,12 +1409,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 +1449,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 +1511,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..9c6985f28 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-08-29 22:25-0400\n"
"PO-Revision-Date: 2012-09-29 11:21+0200\n"
"Last-Translator: Àngel Mompó <mecatxis@gmail.com>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
@@ -973,6 +973,9 @@ msgstr ""
msgid " --false Always false."
msgstr ""
+msgid " --help Show help."
+msgstr ""
+
msgid " --help Show this help."
msgstr ""
@@ -982,6 +985,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 ""
@@ -1012,6 +1018,11 @@ msgstr ""
msgid " --remote True if service is remote."
msgstr ""
+msgid ""
+" --stop-after-include-error\n"
+" Stop tests after a failed INCLUDE."
+msgstr ""
+
msgid " --true Always true."
msgstr ""
@@ -1027,6 +1038,9 @@ msgstr ""
msgid " --version Show program version."
msgstr ""
+msgid " --version Show version."
+msgstr ""
+
msgid " -4 Connect using IPv4."
msgstr " -4 Connecta fent servir IPv4."
@@ -1072,6 +1086,11 @@ msgid " -L Send requests using content-length."
msgstr ""
" -L Envia les peticions fent servir content-length."
+msgid ""
+" -P filename.plist Produce XML plist to a file and test report to "
+"standard output."
+msgstr ""
+
msgid " -P filename.ppd Set PPD file."
msgstr " -P nomfitxer.ppd Estableix el fitxer PPD."
@@ -1115,6 +1134,9 @@ msgstr ""
msgid " -a Export all printers."
msgstr " -a Exporta totes les impressores."
+msgid " -c Produce CSV output."
+msgstr ""
+
msgid " -c catalog.po Load the specified message catalog."
msgstr " -c catàleg.po Carrega el catàleg de missatges indicat."
@@ -1180,8 +1202,11 @@ msgstr ""
msgid " -l List attributes."
msgstr ""
-msgid " -l Run cupsd from launchd(8)."
-msgstr " -l Executa cupsd des de launchd(8)."
+msgid " -l Produce plain text output."
+msgstr ""
+
+msgid " -l Run cupsd on demand."
+msgstr ""
msgid " -l lang[,lang,...] Specify the output language(s) (locale)."
msgstr ""
@@ -1524,14 +1549,38 @@ msgid ""
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"
@@ -1764,6 +1813,10 @@ 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 ""
@@ -1800,6 +1853,10 @@ 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"
@@ -2387,9 +2444,6 @@ msgstr "7 x 9"
msgid "70"
msgstr "70"
-msgid "720dpi"
-msgstr "720ppp"
-
msgid "75"
msgstr "75"
@@ -2679,6 +2733,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 +2762,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 +2809,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 +2831,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 +2868,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 +3039,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 +3049,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 +3622,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 +3692,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."
@@ -3672,12 +3753,6 @@ msgstr "No es permeten les classes imbricades."
msgid "Never"
msgstr "Mai"
-msgid "New Stylus Color Series"
-msgstr "Sèrie New Stylus Color"
-
-msgid "New Stylus Photo Series"
-msgstr "Sèrie New Stylus Photo"
-
msgid "No"
msgstr "No"
@@ -3753,6 +3828,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 +3932,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 +3971,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 +4109,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 +4122,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 +4182,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"
@@ -4152,12 +4230,6 @@ msgstr "S'està començant la pàgina %d."
msgid "Statement"
msgstr "Declaració"
-msgid "Stylus Color Series"
-msgstr "Sèrie Stylus Color"
-
-msgid "Stylus Photo Series"
-msgstr "Sèrie Stylus Photo"
-
#, c-format
msgid "Subscription #%d does not exist."
msgstr "La subscripció #%d no existeix."
@@ -4262,27 +4334,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 +4343,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 +4364,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 +4445,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 +4483,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 +4616,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 +4684,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 +4773,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 +4863,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 +4972,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 +5014,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 +5075,6 @@ msgstr ""
"Heu d'accedir a aquesta pagina a través de la URL <A HREF=\"https://%s:%d%s"
"\">https://%s:%d%s</A>."
-msgid ""
-"Your password must be at least 6 characters long, cannot contain your "
-"username, and must contain at least one letter and number."
-msgstr ""
-"La contrasenya ha de tenir com a mínim 6 caràcters, no pot contenir el nom "
-"d'usuari, i ha de tenir com a mínim una lletra i un número."
-
msgid "ZPL Label Printer"
msgstr "Impressora d'etiquetes ZPL"
@@ -5075,6 +5122,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 +5142,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 +5262,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 +5489,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 +6053,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,15 +6078,33 @@ 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»."
#~ msgid "3.5\" Disk - 2 1/8 x 2 3/4\""
#~ msgstr "Disc de 3.5 - 2 1/8 x 2 3/4\""
+#~ msgid "720dpi"
+#~ msgstr "720ppp"
+
#~ 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 +6127,26 @@ 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 "New Stylus Color Series"
+#~ msgstr "Sèrie New Stylus Color"
+
+#~ msgid "New Stylus Photo Series"
+#~ msgstr "Sèrie New Stylus Photo"
+
+#~ 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 +6176,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 +6197,33 @@ 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 "Stylus Color Series"
+#~ msgstr "Sèrie Stylus Color"
+
+#~ msgid "Stylus Photo Series"
+#~ msgstr "Sèrie Stylus Photo"
+
+#~ 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 +6232,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 +6265,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 +6323,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..307c15fa8 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-08-29 22:25-0400\n"
"PO-Revision-Date: 2012-09-14 10:26+0100\n"
"Last-Translator: Jan Bartos <jan.bartos@madeta.cz>\n"
"Language-Team: Czech\n"
@@ -39,746 +38,593 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: systemv/lpstat.c:1876 systemv/lpstat.c:2001
msgid "\t\t(all)"
msgstr ""
-#: systemv/lpstat.c:1879 systemv/lpstat.c:1882 systemv/lpstat.c:2004
-#: systemv/lpstat.c:2007
msgid "\t\t(none)"
msgstr ""
-#: berkeley/lpc.c:434
#, c-format
msgid "\t%d entries"
msgstr ""
-#: systemv/lpstat.c:756 systemv/lpstat.c:772
#, c-format
msgid "\t%s"
msgstr ""
-#: systemv/lpstat.c:1857 systemv/lpstat.c:1982
msgid "\tAfter fault: continue"
msgstr ""
-#: systemv/lpstat.c:1481 systemv/lpstat.c:1826 systemv/lpstat.c:1952
#, c-format
msgid "\tAlerts: %s"
msgstr ""
-#: systemv/lpstat.c:1880 systemv/lpstat.c:2005
msgid "\tBanner required"
msgstr ""
-#: systemv/lpstat.c:1881 systemv/lpstat.c:2006
msgid "\tCharset sets:"
msgstr ""
-#: systemv/lpstat.c:1845 systemv/lpstat.c:1970
msgid "\tConnection: direct"
msgstr ""
-#: systemv/lpstat.c:1836 systemv/lpstat.c:1962
msgid "\tConnection: remote"
msgstr ""
-#: systemv/lpstat.c:1800 systemv/lpstat.c:1926
msgid "\tContent types: any"
msgstr ""
-#: systemv/lpstat.c:1884 systemv/lpstat.c:2009
msgid "\tDefault page size:"
msgstr ""
-#: systemv/lpstat.c:1883 systemv/lpstat.c:2008
msgid "\tDefault pitch:"
msgstr ""
-#: systemv/lpstat.c:1885 systemv/lpstat.c:2010
msgid "\tDefault port settings:"
msgstr ""
-#: systemv/lpstat.c:1806 systemv/lpstat.c:1932
#, c-format
msgid "\tDescription: %s"
msgstr ""
-#: systemv/lpstat.c:1799 systemv/lpstat.c:1925
msgid "\tForm mounted:"
msgstr ""
-#: systemv/lpstat.c:1878 systemv/lpstat.c:2003
msgid "\tForms allowed:"
msgstr ""
-#: systemv/lpstat.c:1840 systemv/lpstat.c:1966
#, c-format
msgid "\tInterface: %s.ppd"
msgstr ""
-#: systemv/lpstat.c:1849 systemv/lpstat.c:1974
#, c-format
msgid "\tInterface: %s/interfaces/%s"
msgstr ""
-#: systemv/lpstat.c:1853 systemv/lpstat.c:1978
#, c-format
msgid "\tInterface: %s/ppd/%s.ppd"
msgstr ""
-#: systemv/lpstat.c:1831 systemv/lpstat.c:1957
#, c-format
msgid "\tLocation: %s"
msgstr ""
-#: systemv/lpstat.c:1856 systemv/lpstat.c:1981
msgid "\tOn fault: no alert"
msgstr ""
-#: systemv/lpstat.c:1801 systemv/lpstat.c:1927
msgid "\tPrinter types: unknown"
msgstr ""
-#: systemv/lpstat.c:1462
#, c-format
msgid "\tStatus: %s"
msgstr ""
-#: systemv/lpstat.c:1861 systemv/lpstat.c:1875 systemv/lpstat.c:1986
-#: systemv/lpstat.c:2000
msgid "\tUsers allowed:"
msgstr ""
-#: systemv/lpstat.c:1868 systemv/lpstat.c:1993
msgid "\tUsers denied:"
msgstr ""
-#: berkeley/lpc.c:436
msgid "\tdaemon present"
msgstr ""
-#: berkeley/lpc.c:432
msgid "\tno entries"
msgstr ""
-#: berkeley/lpc.c:404 berkeley/lpc.c:416
#, c-format
msgid "\tprinter is on device '%s' speed -1"
msgstr ""
-#: berkeley/lpc.c:429
msgid "\tprinting is disabled"
msgstr ""
-#: berkeley/lpc.c:427
msgid "\tprinting is enabled"
msgstr ""
-#: systemv/lpstat.c:1484
#, c-format
msgid "\tqueued for %s"
msgstr ""
-#: berkeley/lpc.c:424
msgid "\tqueuing is disabled"
msgstr ""
-#: berkeley/lpc.c:422
msgid "\tqueuing is enabled"
msgstr ""
-#: systemv/lpstat.c:1792 systemv/lpstat.c:1918
msgid "\treason unknown"
msgstr ""
-#: systemv/cupstestppd.c:454
msgid ""
"\n"
" DETAILED CONFORMANCE TEST RESULTS"
msgstr ""
-#: systemv/cupstestppd.c:3800
msgid " Ignore specific warnings."
msgstr ""
-#: systemv/cupstestppd.c:3804
msgid " Issue warnings instead of errors."
msgstr ""
-#: systemv/cupstestppd.c:410 systemv/cupstestppd.c:415
msgid " REF: Page 15, section 3.1."
msgstr ""
-#: systemv/cupstestppd.c:405
msgid " REF: Page 15, section 3.2."
msgstr ""
-#: systemv/cupstestppd.c:425
msgid " REF: Page 19, section 3.3."
msgstr ""
-#: systemv/cupstestppd.c:378
msgid " REF: Page 20, section 3.4."
msgstr ""
-#: systemv/cupstestppd.c:430
msgid " REF: Page 27, section 3.5."
msgstr ""
-#: systemv/cupstestppd.c:373
msgid " REF: Page 42, section 5.2."
msgstr ""
-#: systemv/cupstestppd.c:420
msgid " REF: Pages 16-17, section 3.2."
msgstr ""
-#: systemv/cupstestppd.c:390
msgid " REF: Pages 42-45, section 5.2."
msgstr ""
-#: systemv/cupstestppd.c:384
msgid " REF: Pages 45-46, section 5.2."
msgstr ""
-#: systemv/cupstestppd.c:395
msgid " REF: Pages 48-49, section 5.2."
msgstr ""
-#: systemv/cupstestppd.c:400
msgid " REF: Pages 52-54, section 5.2."
msgstr ""
-#: berkeley/lpq.c:554
#, c-format
msgid " %-39.39s %.0f bytes"
msgstr ""
-#: systemv/cupstestppd.c:589
#, c-format
msgid " PASS Default%s"
msgstr ""
-#: systemv/cupstestppd.c:524
msgid " PASS DefaultImageableArea"
msgstr ""
-#: systemv/cupstestppd.c:558
msgid " PASS DefaultPaperDimension"
msgstr ""
-#: systemv/cupstestppd.c:631
msgid " PASS FileVersion"
msgstr ""
-#: systemv/cupstestppd.c:675
msgid " PASS FormatVersion"
msgstr ""
-#: systemv/cupstestppd.c:695
msgid " PASS LanguageEncoding"
msgstr ""
-#: systemv/cupstestppd.c:715
msgid " PASS LanguageVersion"
msgstr ""
-#: systemv/cupstestppd.c:769
msgid " PASS Manufacturer"
msgstr ""
-#: systemv/cupstestppd.c:809
msgid " PASS ModelName"
msgstr ""
-#: systemv/cupstestppd.c:829
msgid " PASS NickName"
msgstr ""
-#: systemv/cupstestppd.c:889
msgid " PASS PCFileName"
msgstr ""
-#: systemv/cupstestppd.c:964
msgid " PASS PSVersion"
msgstr ""
-#: systemv/cupstestppd.c:869
msgid " PASS PageRegion"
msgstr ""
-#: systemv/cupstestppd.c:849
msgid " PASS PageSize"
msgstr ""
-#: systemv/cupstestppd.c:924
msgid " PASS Product"
msgstr ""
-#: systemv/cupstestppd.c:999
msgid " PASS ShortNickName"
msgstr ""
-#: systemv/cupstestppd.c:1374
#, c-format
msgid " WARN %s has no corresponding options."
msgstr ""
-#: systemv/cupstestppd.c:1486
#, c-format
msgid ""
" WARN %s shares a common prefix with %s\n"
" REF: Page 15, section 3.2."
msgstr ""
-#: systemv/cupstestppd.c:1345
#, c-format
msgid ""
-" WARN Duplex option keyword %s may not work as expected and should be named Duplex.\n"
+" WARN Duplex option keyword %s may not work as expected and should "
+"be named Duplex.\n"
" REF: Page 122, section 5.17"
msgstr ""
-#: systemv/cupstestppd.c:1744
msgid " WARN File contains a mix of CR, LF, and CR LF line endings."
msgstr ""
-#: systemv/cupstestppd.c:1390
msgid ""
" WARN LanguageEncoding required by PPD 4.3 spec.\n"
" REF: Pages 56-57, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:1726
#, c-format
msgid " WARN Line %d only contains whitespace."
msgstr ""
-#: systemv/cupstestppd.c:1398
msgid ""
" WARN Manufacturer required by PPD 4.3 spec.\n"
" REF: Pages 58-59, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:1749
-msgid " WARN Non-Windows PPD files should use lines ending with only LF, not CR LF."
+msgid ""
+" WARN Non-Windows PPD files should use lines ending with only LF, "
+"not CR LF."
msgstr ""
-#: systemv/cupstestppd.c:1382
#, c-format
msgid ""
" WARN Obsolete PPD version %.1f.\n"
" REF: Page 42, section 5.2."
msgstr ""
-#: systemv/cupstestppd.c:1413
msgid ""
" WARN PCFileName longer than 8.3 in violation of PPD spec.\n"
" REF: Pages 61-62, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:1421
msgid ""
" WARN PCFileName should contain a unique filename.\n"
" REF: Pages 61-62, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:1456
msgid ""
" WARN Protocols contains PJL but JCL attributes are not set.\n"
" REF: Pages 78-79, section 5.7."
msgstr ""
-#: systemv/cupstestppd.c:1447
msgid ""
" WARN Protocols contains both PJL and BCP; expected TBCP.\n"
" REF: Pages 78-79, section 5.7."
msgstr ""
-#: systemv/cupstestppd.c:1430
msgid ""
" WARN ShortNickName required by PPD 4.3 spec.\n"
" REF: Pages 64-65, section 5.3."
msgstr ""
-#: systemv/cupsaddsmb.c:282
msgid " cupsaddsmb [options] -a"
msgstr ""
-#: systemv/cupstestdsc.c:427
msgid " cupstestdsc [options] -"
msgstr ""
-#: systemv/cupstestppd.c:3795
msgid " program | cupstestppd [options] -"
msgstr ""
-#: systemv/cupstestppd.c:3727
#, c-format
msgid ""
" %s \"%s %s\" conflicts with \"%s %s\"\n"
" (constraint=\"%s %s %s %s\")."
msgstr ""
-#: systemv/cupstestppd.c:2248
#, c-format
msgid " %s %s %s does not exist."
msgstr ""
-#: systemv/cupstestppd.c:3884
#, c-format
msgid " %s %s file \"%s\" has the wrong capitalization."
msgstr ""
-#: systemv/cupstestppd.c:2318
#, c-format
msgid ""
" %s Bad %s choice %s.\n"
" REF: Page 122, section 5.17"
msgstr ""
-#: systemv/cupstestppd.c:3487 systemv/cupstestppd.c:3536
-#: systemv/cupstestppd.c:3575
#, c-format
msgid " %s Bad UTF-8 \"%s\" translation string for option %s, choice %s."
msgstr ""
-#: systemv/cupstestppd.c:3441
#, c-format
msgid " %s Bad UTF-8 \"%s\" translation string for option %s."
msgstr ""
-#: systemv/cupstestppd.c:2389
#, c-format
msgid " %s Bad cupsFilter value \"%s\"."
msgstr ""
-#: systemv/cupstestppd.c:2475
#, c-format
msgid " %s Bad cupsFilter2 value \"%s\"."
msgstr ""
-#: systemv/cupstestppd.c:2964
#, c-format
msgid " %s Bad cupsICCProfile %s."
msgstr ""
-#: systemv/cupstestppd.c:2571
#, c-format
msgid " %s Bad cupsPreFilter value \"%s\"."
msgstr ""
-#: systemv/cupstestppd.c:1822
#, c-format
msgid " %s Bad cupsUIConstraints %s: \"%s\""
msgstr ""
-#: systemv/cupstestppd.c:3391
#, c-format
msgid " %s Bad language \"%s\"."
msgstr ""
-#: systemv/cupstestppd.c:2433 systemv/cupstestppd.c:2529
-#: systemv/cupstestppd.c:2615 systemv/cupstestppd.c:2673
-#: systemv/cupstestppd.c:2728 systemv/cupstestppd.c:2783
-#: systemv/cupstestppd.c:2838 systemv/cupstestppd.c:2891
-#: systemv/cupstestppd.c:3013
#, c-format
msgid " %s Bad permissions on %s file \"%s\"."
msgstr ""
-#: systemv/cupstestppd.c:2373 systemv/cupstestppd.c:2459
-#: systemv/cupstestppd.c:2555 systemv/cupstestppd.c:2642
-#: systemv/cupstestppd.c:2697 systemv/cupstestppd.c:2752
-#: systemv/cupstestppd.c:2807 systemv/cupstestppd.c:2862
#, c-format
msgid " %s Bad spelling of %s - should be %s."
msgstr ""
-#: systemv/cupstestppd.c:2907
#, c-format
msgid " %s Cannot provide both APScanAppPath and APScanAppBundleID."
msgstr ""
-#: systemv/cupstestppd.c:2205
#, c-format
msgid " %s Default choices conflicting."
msgstr ""
-#: systemv/cupstestppd.c:1803
#, c-format
msgid " %s Empty cupsUIConstraints %s"
msgstr ""
-#: systemv/cupstestppd.c:3519 systemv/cupstestppd.c:3559
#, c-format
msgid " %s Missing \"%s\" translation string for option %s, choice %s."
msgstr ""
-#: systemv/cupstestppd.c:3427
#, c-format
msgid " %s Missing \"%s\" translation string for option %s."
msgstr ""
-#: systemv/cupstestppd.c:2418 systemv/cupstestppd.c:2514
-#: systemv/cupstestppd.c:2600 systemv/cupstestppd.c:2658
-#: systemv/cupstestppd.c:2713 systemv/cupstestppd.c:2768
-#: systemv/cupstestppd.c:2823 systemv/cupstestppd.c:2875
-#: systemv/cupstestppd.c:2998
#, c-format
msgid " %s Missing %s file \"%s\"."
msgstr ""
-#: systemv/cupstestppd.c:3121
#, c-format
msgid ""
" %s Missing REQUIRED PageRegion option.\n"
" REF: Page 100, section 5.14."
msgstr ""
-#: systemv/cupstestppd.c:3106
#, c-format
msgid ""
" %s Missing REQUIRED PageSize option.\n"
" REF: Page 99, section 5.14."
msgstr ""
-#: systemv/cupstestppd.c:2013 systemv/cupstestppd.c:2054
#, c-format
msgid " %s Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"."
msgstr ""
-#: systemv/cupstestppd.c:1908
#, c-format
msgid " %s Missing choice *%s %s in cupsUIConstraints %s: \"%s\""
msgstr ""
-#: systemv/cupstestppd.c:1840
#, c-format
msgid " %s Missing cupsUIResolver %s"
msgstr ""
-#: systemv/cupstestppd.c:1999 systemv/cupstestppd.c:2040
#, c-format
msgid " %s Missing option %s in UIConstraints \"*%s %s *%s %s\"."
msgstr ""
-#: systemv/cupstestppd.c:1892
#, c-format
msgid " %s Missing option %s in cupsUIConstraints %s: \"%s\""
msgstr ""
-#: systemv/cupstestppd.c:3613
#, c-format
msgid " %s No base translation \"%s\" is included in file."
msgstr ""
-#: systemv/cupstestppd.c:2294
#, c-format
msgid ""
" %s REQUIRED %s does not define choice None.\n"
" REF: Page 122, section 5.17"
msgstr ""
-#: systemv/cupstestppd.c:3180 systemv/cupstestppd.c:3194
#, c-format
msgid " %s Size \"%s\" defined for %s but not for %s."
msgstr ""
-#: systemv/cupstestppd.c:3160
#, c-format
msgid " %s Size \"%s\" has unexpected dimensions (%gx%g)."
msgstr ""
-#: systemv/cupstestppd.c:3332
#, c-format
msgid " %s Size \"%s\" should be \"%s\"."
msgstr ""
-#: systemv/cupstestppd.c:3292
#, c-format
msgid " %s Size \"%s\" should be the Adobe standard name \"%s\"."
msgstr ""
-#: systemv/cupstestppd.c:3041
#, c-format
msgid " %s cupsICCProfile %s hash value collides with %s."
msgstr ""
-#: systemv/cupstestppd.c:1963
#, c-format
msgid " %s cupsUIResolver %s causes a loop."
msgstr ""
-#: systemv/cupstestppd.c:1945
#, c-format
-msgid " %s cupsUIResolver %s does not list at least two different options."
+msgid ""
+" %s cupsUIResolver %s does not list at least two different options."
msgstr ""
-#: systemv/cupstestppd.c:1168
#, c-format
msgid ""
" **FAIL** %s must be 1284DeviceID\n"
" REF: Page 72, section 5.5"
msgstr ""
-#: systemv/cupstestppd.c:580
#, c-format
msgid ""
" **FAIL** Bad Default%s %s\n"
" REF: Page 40, section 4.5."
msgstr ""
-#: systemv/cupstestppd.c:514
#, c-format
msgid ""
" **FAIL** Bad DefaultImageableArea %s\n"
" REF: Page 102, section 5.15."
msgstr ""
-#: systemv/cupstestppd.c:550
#, c-format
msgid ""
" **FAIL** Bad DefaultPaperDimension %s\n"
" REF: Page 103, section 5.15."
msgstr ""
-#: systemv/cupstestppd.c:623
#, c-format
msgid ""
" **FAIL** Bad FileVersion \"%s\"\n"
" REF: Page 56, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:667
#, c-format
msgid ""
" **FAIL** Bad FormatVersion \"%s\"\n"
" REF: Page 56, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:1025
msgid ""
" **FAIL** Bad JobPatchFile attribute in file\n"
" REF: Page 24, section 3.4."
msgstr ""
-#: systemv/cupstestppd.c:1213
#, c-format
msgid " **FAIL** Bad LanguageEncoding %s - must be ISOLatin1."
msgstr ""
-#: systemv/cupstestppd.c:1227
#, c-format
msgid " **FAIL** Bad LanguageVersion %s - must be English."
msgstr ""
-#: systemv/cupstestppd.c:743 systemv/cupstestppd.c:760
#, c-format
msgid ""
" **FAIL** Bad Manufacturer (should be \"%s\")\n"
" REF: Page 211, table D.1."
msgstr ""
-#: systemv/cupstestppd.c:800
#, c-format
msgid ""
" **FAIL** Bad ModelName - \"%c\" not allowed in string.\n"
" REF: Pages 59-60, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:956
msgid ""
" **FAIL** Bad PSVersion - not \"(string) int\".\n"
" REF: Pages 62-64, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:917
msgid ""
" **FAIL** Bad Product - not \"(string)\".\n"
" REF: Page 62, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:991
msgid ""
" **FAIL** Bad ShortNickName - longer than 31 chars.\n"
" REF: Pages 64-65, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:1149
#, c-format
msgid ""
" **FAIL** Bad option %s choice %s\n"
" REF: Page 84, section 5.9"
msgstr ""
-#: systemv/cupstestppd.c:3754 systemv/cupstestppd.c:3776
#, c-format
msgid " **FAIL** Default option code cannot be interpreted: %s"
msgstr ""
-#: systemv/cupstestppd.c:1286
#, c-format
-msgid " **FAIL** Default translation string for option %s choice %s contains 8-bit characters."
+msgid ""
+" **FAIL** Default translation string for option %s choice %s contains "
+"8-bit characters."
msgstr ""
-#: systemv/cupstestppd.c:1259
#, c-format
-msgid " **FAIL** Default translation string for option %s contains 8-bit characters."
+msgid ""
+" **FAIL** Default translation string for option %s contains 8-bit "
+"characters."
msgstr ""
-#: systemv/cupstestppd.c:2101
#, c-format
msgid " **FAIL** Group names %s and %s differ only by case."
msgstr ""
-#: systemv/cupstestppd.c:2146
#, c-format
msgid " **FAIL** Multiple occurrences of option %s choice name %s."
msgstr ""
-#: systemv/cupstestppd.c:2163
#, c-format
msgid " **FAIL** Option %s choice names %s and %s differ only by case."
msgstr ""
-#: systemv/cupstestppd.c:2123
#, c-format
msgid " **FAIL** Option names %s and %s differ only by case."
msgstr ""
-#: systemv/cupstestppd.c:600
#, c-format
msgid ""
" **FAIL** REQUIRED Default%s\n"
" REF: Page 40, section 4.5."
msgstr ""
-#: systemv/cupstestppd.c:499
msgid ""
" **FAIL** REQUIRED DefaultImageableArea\n"
" REF: Page 102, section 5.15."
msgstr ""
-#: systemv/cupstestppd.c:535
msgid ""
" **FAIL** REQUIRED DefaultPaperDimension\n"
" REF: Page 103, section 5.15."
msgstr ""
-#: systemv/cupstestppd.c:641
msgid ""
" **FAIL** REQUIRED FileVersion\n"
" REF: Page 56, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:685
msgid ""
" **FAIL** REQUIRED FormatVersion\n"
" REF: Page 56, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:1076
#, c-format
msgid ""
" **FAIL** REQUIRED ImageableArea for PageSize %s\n"
@@ -786,68 +632,57 @@ msgid ""
" REF: Page 102, section 5.15."
msgstr ""
-#: systemv/cupstestppd.c:705
msgid ""
" **FAIL** REQUIRED LanguageEncoding\n"
" REF: Pages 56-57, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:725
msgid ""
" **FAIL** REQUIRED LanguageVersion\n"
" REF: Pages 57-58, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:779
msgid ""
" **FAIL** REQUIRED Manufacturer\n"
" REF: Pages 58-59, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:819
msgid ""
" **FAIL** REQUIRED ModelName\n"
" REF: Pages 59-60, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:839
msgid ""
" **FAIL** REQUIRED NickName\n"
" REF: Page 60, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:899
msgid ""
" **FAIL** REQUIRED PCFileName\n"
" REF: Pages 61-62, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:974
msgid ""
" **FAIL** REQUIRED PSVersion\n"
" REF: Pages 62-64, section 5.3."
msgstr ""
-#: systemv/cupstestppd.c:879
msgid ""
" **FAIL** REQUIRED PageRegion\n"
" REF: Page 100, section 5.14."
msgstr ""
-#: systemv/cupstestppd.c:1045
msgid ""
" **FAIL** REQUIRED PageSize\n"
" REF: Page 41, section 5.\n"
" REF: Page 99, section 5.14."
msgstr ""
-#: systemv/cupstestppd.c:859
msgid ""
" **FAIL** REQUIRED PageSize\n"
" REF: Pages 99-100, section 5.14."
msgstr ""
-#: systemv/cupstestppd.c:1098
#, c-format
msgid ""
" **FAIL** REQUIRED PaperDimension for PageSize %s\n"
@@ -855,2194 +690,2095 @@ 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 help."
+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 ""
+" --stop-after-include-error\n"
+" Stop tests after a failed INCLUDE."
+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 " --version Show 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.plist Produce XML plist to a file and test report to "
+"standard output."
+msgstr ""
+
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 Produce CSV output."
+msgstr ""
+
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 ""
+
+msgid " -l List attributes."
msgstr ""
-#: scheduler/cupsfilter.c:1443
-msgid " -j job-id[,N] Filter file N from the specified job (default is file 1)."
+msgid " -l Produce plain text output."
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 ""
+
+msgid " -n regex Match service name to regular expression."
msgstr ""
-#: ppdc/ppdi.cxx:133
-msgid " -o filename.drv Set driver information file (otherwise ppdi.drv)."
+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 +2789,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 +3513,1179 @@ 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"
+msgid "Output bin is almost full."
msgstr ""
-#: systemv/lpstat.c:1185
-#, c-format
-msgid "Output for printer %s is sent to remote printer %s on %s"
+msgid "Output bin is 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 missing."
msgstr ""
-#: systemv/lpstat.c:1203
-#, c-format
-msgid "Output for printer %s/%s is sent to remote printer %s on %s"
-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."
+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."
+msgid "The printer did not respond."
msgstr ""
-#: backend/ipp.c:909
-msgid "The printer URI is incorrect or no longer exists."
+msgid "The printer is in use."
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 low on ink."
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 toner."
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."
-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 +4697,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 +4747,964 @@ msgid ""
" lpoptions [-h server] [-E] -x printer"
msgstr ""
-#: systemv/lppasswd.c:476
-msgid "Usage: lppasswd [-g groupname]"
-msgstr ""
-
-#: systemv/lppasswd.c:479
msgid ""
-"Usage: lppasswd [-g groupname] [username]\n"
-" lppasswd [-g groupname] -a [username]\n"
-" lppasswd [-g groupname] -x [username]"
-msgstr ""
-
-#: berkeley/lpq.c:670
-msgid "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
+"Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
msgstr ""
-#: ppdc/ppdc.cxx:435
msgid "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]"
msgstr ""
-#: ppdc/ppdhtml.cxx:172
msgid "Usage: ppdhtml [options] filename.drv >filename.html"
msgstr ""
-#: ppdc/ppdi.cxx:128
msgid "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]"
msgstr ""
-#: ppdc/ppdmerge.cxx:367
msgid "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]"
msgstr ""
-#: ppdc/ppdpo.cxx:252
-msgid "Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]"
+msgid ""
+"Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]"
msgstr ""
-#: backend/snmp.c:218
msgid "Usage: snmp [host-or-ip-address]"
msgstr ""
-#: cups/snmp.c:1064
msgid "Value uses indefinite length"
msgstr "Hodnota má neomezenou délku"
-#: cups/snmp.c:1049
msgid "VarBind uses indefinite length"
msgstr "VarBind má neomezenou délku"
-#: cups/snmp.c:999
msgid "Version uses indefinite length"
msgstr "Version má neomezenou délku"
-#: backend/ipp.c:1675
msgid "Waiting for job to complete."
msgstr ""
-#: backend/usb-darwin.c:457 backend/usb-libusb.c:193
msgid "Waiting for printer to become available."
msgstr ""
-#: backend/socket.c:444
msgid "Waiting for printer to finish."
msgstr ""
-#: cups/adminutil.c:793
msgid "Warning, no Windows 2000 printer drivers are installed."
msgstr ""
-#: cups/http-support.c:1339
msgid "Web Interface is Disabled"
msgstr ""
-#: cups/ppd.c:1947
msgid "Yes"
msgstr "Ano"
-#: scheduler/client.c:2437
#, c-format
-msgid "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
-msgstr Pro přístup k této stránce, použijte adresu URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
-
-#: systemv/lppasswd.c:254
-msgid "Your password must be at least 6 characters long, cannot contain your username, and must contain at least one letter and number."
+msgid ""
+"You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://"
+"%s:%d%s</A>."
msgstr ""
+"Pro přístup k této stránce, použijte adresu URL <A HREF=\"https://%s:%d%s"
+"\">https://%s:%d%s</A>."
-#: ppdc/sample.c:439
msgid "ZPL Label Printer"
msgstr "Tiskárna štítků ZPL"
-#: ppdc/sample.c:362
msgid "Zebra"
msgstr "Zebra"
-#: cups/notify.c:102
msgid "aborted"
msgstr "zrušeno"
-#: cups/notify.c:99
msgid "canceled"
msgstr "zrušeno"
-#: cups/notify.c:105
msgid "completed"
msgstr "dokonÄeno"
-#: scheduler/ipp.c:6012
msgid "cups-deviced failed to execute."
msgstr "Nepodařilo se spustit \"cups-deviced\"."
-#: scheduler/ipp.c:6842 scheduler/ipp.c:7091
msgid "cups-driverd failed to execute."
msgstr "Nepodařilo se spustit \"cups-driverd\"."
-#: systemv/cupsaddsmb.c:233
#, c-format
msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s"
msgstr ""
-#: systemv/cupsctl.c:141
msgid "cupsctl: Cannot set Listen or Port directly."
msgstr ""
-#: systemv/cupsctl.c:152
#, c-format
msgid "cupsctl: Unable to connect to server: %s"
msgstr ""
-#: systemv/cupsctl.c:195
#, c-format
msgid "cupsctl: Unknown option \"%s\""
msgstr ""
-#: systemv/cupsctl.c:197
#, c-format
msgid "cupsctl: Unknown option \"-%c\""
msgstr ""
-#: scheduler/main.c:189
msgid "cupsd: Expected config filename after \"-c\" option."
msgstr ""
-#: scheduler/main.c:221 scheduler/main.c:228
+msgid "cupsd: Expected cups-files.conf filename after \"-s\" option."
+msgstr ""
+
+msgid "cupsd: On-demand support not compiled in, running in normal mode."
+msgstr ""
+
+msgid "cupsd: Relative cups-files.conf filename not allowed."
+msgstr ""
+
msgid "cupsd: Unable to get current directory."
msgstr ""
-#: scheduler/main.c:295
+msgid "cupsd: Unable to get path to cups-files.conf file."
+msgstr ""
+
#, c-format
msgid "cupsd: Unknown argument \"%s\" - aborting."
msgstr ""
-#: scheduler/main.c:288
#, c-format
msgid "cupsd: Unknown option \"%c\" - aborting."
msgstr ""
-#: scheduler/main.c:255
-msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
-msgstr ""
-
-#: scheduler/cupsfilter.c:1209
#, c-format
msgid "cupsfilter: Invalid document number %d."
msgstr ""
-#: scheduler/cupsfilter.c:1203
#, c-format
msgid "cupsfilter: Invalid job ID %d."
msgstr ""
-#: scheduler/cupsfilter.c:358
msgid "cupsfilter: Only one filename can be specified."
msgstr ""
-#: scheduler/cupsfilter.c:1251
#, c-format
msgid "cupsfilter: Unable to get job file - %s"
msgstr ""
-#: systemv/cupstestppd.c:261
msgid "cupstestppd: The -q option is incompatible with the -v option."
msgstr ""
-#: systemv/cupstestppd.c:277
msgid "cupstestppd: The -v option is incompatible with the -q option."
msgstr ""
-#: systemv/lpstat.c:1231 systemv/lpstat.c:1234 systemv/lpstat.c:1237
#, c-format
msgid "device for %s/%s: %s"
msgstr ""
-#: systemv/lpstat.c:1218 systemv/lpstat.c:1221 systemv/lpstat.c:1224
#, c-format
msgid "device for %s: %s"
msgstr ""
-#: cups/snmp.c:1036
msgid "error-index uses indefinite length"
msgstr "\"error-index\" má neomezenou délku"
-#: cups/snmp.c:1028
msgid "error-status uses indefinite length"
msgstr "\"error-status\" má neomezenou délku"
-#: cups/notify.c:90
msgid "held"
msgstr "pozastaveno"
-#: berkeley/lpc.c:209
msgid "help\t\tGet help on commands."
msgstr ""
-#: cups/notify.c:131
msgid "idle"
msgstr "Äeká"
-#: test/ipptool.c:373 test/ipptool.c:515 test/ipptool.c:539
-msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
+#, c-format
+msgid "ippfind: Bad regular expression: %s"
+msgstr ""
+
+msgid "ippfind: Cannot use --and after --or."
msgstr ""
-#: test/ipptool.c:597
#, c-format
-msgid "ipptool: Bad URI - %s."
+msgid "ippfind: Expected key name after %s."
+msgstr ""
+
+#, c-format
+msgid "ippfind: Expected port range after %s."
+msgstr ""
+
+#, c-format
+msgid "ippfind: Expected program after %s."
+msgstr ""
+
+#, c-format
+msgid "ippfind: Expected semi-colon after %s."
+msgstr ""
+
+msgid "ippfind: Missing close brace in substitution."
+msgstr ""
+
+msgid "ippfind: Missing close parenthesis."
+msgstr ""
+
+msgid "ippfind: Missing expression before \"--and\"."
+msgstr ""
+
+msgid "ippfind: Missing expression before \"--or\"."
+msgstr ""
+
+#, c-format
+msgid "ippfind: Missing key name after %s."
+msgstr ""
+
+msgid "ippfind: Missing open parenthesis."
+msgstr ""
+
+#, c-format
+msgid "ippfind: Missing program after %s."
+msgstr ""
+
+#, c-format
+msgid "ippfind: Missing regular expression after %s."
+msgstr ""
+
+#, c-format
+msgid "ippfind: Missing semi-colon after %s."
+msgstr ""
+
+msgid "ippfind: Out of memory."
+msgstr ""
+
+msgid "ippfind: Too many parenthesis."
+msgstr ""
+
+#, c-format
+msgid "ippfind: Unable to browse or resolve: %s"
+msgstr ""
+
+#, c-format
+msgid "ippfind: Unable to execute \"%s\": %s"
msgstr ""
-#: test/ipptool.c:362
#, c-format
-msgid "ipptool: Bad version %s for \"-V\"."
+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 ""
+
+#, c-format
+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 "720dpi"
+#~ msgstr "720 dpi"
-#
-# End of "$Id$".
-#
+#~ msgid "Enter old password:"
+#~ msgstr "Zadejte původní heslo:"
+
+#~ msgid "Enter password again:"
+#~ msgstr "Opakujte heslo:"
+
+#~ msgid "Enter password:"
+#~ msgstr "Zadejte heslo:"
+
+#~ msgid "New Stylus Color Series"
+#~ msgstr "New Stylus Color Series"
+
+#~ msgid "New Stylus Photo Series"
+#~ msgstr "New Stylus Photo Series"
+
+#~ msgid "Purge Jobs"
+#~ msgstr "Výmaz úloh"
+
+#~ msgid "Stylus Color Series"
+#~ msgstr "Stylus Color Series"
+
+#~ msgid "Stylus Photo Series"
+#~ msgstr "Stylus Photo Series"
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 <A HREF=\"https://%s:%d%s\">https://%"
-"s:%d%s</A>."
-msgstr ""
-"Auf diese Seite greifen Sie zu über die URL <A HREF=\"https://%s:%d%s"
-"\">https://%s:%d%s</A>."
-
-msgid ""
-"Your password must be at least 6 characters long, cannot contain your "
-"username, and must contain at least one letter and number."
-msgstr ""
-
-msgid "ZPL Label Printer"
-msgstr "ZPL Etikettendrucker"
-
-msgid "Zebra"
-msgstr "Zebra"
-
-msgid "aborted"
-msgstr "abgebrochen"
-
-msgid "canceled"
-msgstr "abgebrochen"
-
-msgid "completed"
-msgstr "abgeschlossen"
-
-msgid "convert: Use the -f option to specify a file to convert."
-msgstr ""
-
-msgid "cups-deviced failed to execute."
-msgstr "„cups-deviced“ konnte nicht ausgeführt werden."
-
-msgid "cups-driverd failed to execute."
-msgstr "„cups-driverd“ konnte nicht ausgeführt werden."
-
-#, c-format
-msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s"
-msgstr ""
-
-msgid "cupsctl: Cannot set Listen or Port directly."
-msgstr ""
-
-#, c-format
-msgid "cupsctl: Unable to connect to server: %s"
-msgstr ""
-
-#, c-format
-msgid "cupsctl: Unknown option \"%s\""
-msgstr ""
-
-#, c-format
-msgid "cupsctl: Unknown option \"-%c\""
-msgstr ""
-
-msgid "cupsd: Expected config filename after \"-c\" option."
-msgstr ""
-
-msgid "cupsd: Unable to get current directory."
-msgstr ""
-
-#, c-format
-msgid "cupsd: Unknown argument \"%s\" - aborting."
-msgstr ""
-
-#, c-format
-msgid "cupsd: Unknown option \"%c\" - aborting."
-msgstr ""
-
-msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
-msgstr ""
-
-#, c-format
-msgid "cupsfilter: Invalid document number %d."
-msgstr ""
-
-#, c-format
-msgid "cupsfilter: Invalid job ID %d."
-msgstr ""
-
-msgid "cupsfilter: Only one filename can be specified."
-msgstr ""
-
-#, c-format
-msgid "cupsfilter: Unable to get job file - %s"
-msgstr ""
-
-msgid "cupstestppd: The -q option is incompatible with the -v option."
-msgstr ""
-
-msgid "cupstestppd: The -v option is incompatible with the -q option."
-msgstr ""
-
-#, c-format
-msgid "device for %s/%s: %s"
-msgstr ""
-
-#, c-format
-msgid "device for %s: %s"
-msgstr ""
-
-msgid "error-index uses indefinite length"
-msgstr "Fehlerindex hat unbestimmte Länge"
-
-msgid "error-status uses indefinite length"
-msgstr "Fehlerstatus hat unbestimmte Länge"
-
-msgid "held"
-msgstr "gehalten"
-
-msgid "help\t\tGet help on commands."
-msgstr ""
-
-msgid "idle"
-msgstr "inaktiv"
-
-msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
-msgstr ""
-
-msgid "ipptool: \"-i\" is incompatible with \"-X\"."
-msgstr ""
-
-msgid "ipptool: \"-n\" is incompatible with \"-X\"."
-msgstr ""
-
-#, c-format
-msgid "ipptool: Bad URI - %s."
-msgstr ""
-
-#, c-format
-msgid "ipptool: Bad version %s for \"-V\"."
-msgstr ""
-
-msgid "ipptool: Invalid seconds for \"-i\"."
-msgstr ""
-
-msgid "ipptool: May only specify a single URI."
-msgstr ""
-
-msgid "ipptool: Missing count for \"-n\"."
-msgstr ""
-
-msgid "ipptool: Missing filename for \"-f\"."
-msgstr ""
-
-msgid "ipptool: Missing name=value for \"-d\"."
-msgstr ""
-
-msgid "ipptool: Missing seconds for \"-i\"."
-msgstr ""
-
-msgid "ipptool: Missing timeout for \"-T\"."
-msgstr ""
-
-msgid "ipptool: Missing version for \"-V\"."
-msgstr ""
-
-msgid "ipptool: URI required before test file."
-msgstr ""
-
-#, c-format
-msgid "ipptool: Unknown option \"-%c\"."
-msgstr ""
-
-msgid "job-printer-uri attribute missing."
-msgstr ""
-
-msgid "lpadmin: Class name can only contain printable characters."
-msgstr ""
-
-msgid "lpadmin: Expected PPD after \"-P\" option."
-msgstr ""
-
-msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
-msgstr ""
-
-msgid "lpadmin: Expected class after \"-r\" option."
-msgstr ""
-
-msgid "lpadmin: Expected class name after \"-c\" option."
-msgstr ""
-
-msgid "lpadmin: Expected description after \"-D\" option."
-msgstr ""
-
-msgid "lpadmin: Expected device URI after \"-v\" option."
-msgstr ""
-
-msgid "lpadmin: Expected file type(s) after \"-I\" option."
-msgstr ""
-
-msgid "lpadmin: Expected hostname after \"-h\" option."
-msgstr ""
-
-msgid "lpadmin: Expected interface after \"-i\" option."
-msgstr ""
-
-msgid "lpadmin: Expected location after \"-L\" option."
-msgstr ""
-
-msgid "lpadmin: Expected model after \"-m\" option."
-msgstr ""
-
-msgid "lpadmin: Expected name after \"-R\" option."
-msgstr ""
-
-msgid "lpadmin: Expected name=value after \"-o\" option."
-msgstr ""
-
-msgid "lpadmin: Expected printer after \"-p\" option."
-msgstr ""
-
-msgid "lpadmin: Expected printer name after \"-d\" option."
-msgstr ""
-
-msgid "lpadmin: Expected printer or class after \"-x\" option."
-msgstr ""
-
-msgid "lpadmin: No member names were seen."
-msgstr ""
-
-#, c-format
-msgid "lpadmin: Printer %s is already a member of class %s."
-msgstr ""
-
-#, c-format
-msgid "lpadmin: Printer %s is not a member of class %s."
-msgstr ""
-
-msgid "lpadmin: Printer name can only contain printable characters."
-msgstr ""
-
-msgid ""
-"lpadmin: Unable to add a printer to the class:\n"
-" You must specify a printer name first."
-msgstr ""
-
-#, c-format
-msgid "lpadmin: Unable to connect to server: %s"
-msgstr ""
-
-msgid "lpadmin: Unable to create temporary file"
-msgstr ""
-
-msgid ""
-"lpadmin: Unable to delete option:\n"
-" You must specify a printer name first."
-msgstr ""
-
-#, c-format
-msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
-msgstr ""
-
-msgid ""
-"lpadmin: Unable to remove a printer from the class:\n"
-" You must specify a printer name first."
-msgstr ""
-
-msgid ""
-"lpadmin: Unable to set the printer options:\n"
-" You must specify a printer name first."
-msgstr ""
-
-#, c-format
-msgid "lpadmin: Unknown allow/deny option \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "lpadmin: Unknown argument \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "lpadmin: Unknown option \"%c\"."
-msgstr ""
-
-msgid "lpadmin: Warning - content type list ignored."
-msgstr ""
-
-msgid "lpc> "
-msgstr "lpc> "
-
-msgid "lpinfo: Expected 1284 device ID string after \"--device-id\"."
-msgstr ""
-
-msgid "lpinfo: Expected language after \"--language\"."
-msgstr ""
-
-msgid "lpinfo: Expected make and model after \"--make-and-model\"."
-msgstr ""
-
-msgid "lpinfo: Expected product string after \"--product\"."
-msgstr ""
-
-msgid "lpinfo: Expected scheme list after \"--exclude-schemes\"."
-msgstr ""
-
-msgid "lpinfo: Expected scheme list after \"--include-schemes\"."
-msgstr ""
-
-msgid "lpinfo: Expected timeout after \"--timeout\"."
-msgstr ""
-
-#, c-format
-msgid "lpinfo: Unknown argument \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "lpinfo: Unknown option \"%c\"."
-msgstr ""
-
-#, c-format
-msgid "lpinfo: Unknown option \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "lpmove: Unable to connect to server: %s"
-msgstr ""
-
-#, c-format
-msgid "lpmove: Unknown argument \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "lpmove: Unknown option \"%c\"."
-msgstr ""
-
-msgid "lpoptions: No printers."
-msgstr ""
-
-#, c-format
-msgid "lpoptions: Unable to add printer or instance: %s"
-msgstr ""
-
-#, c-format
-msgid "lpoptions: Unable to get PPD file for %s: %s"
-msgstr ""
-
-#, c-format
-msgid "lpoptions: Unable to open PPD file for %s."
-msgstr ""
-
-msgid "lpoptions: Unknown printer or class."
-msgstr ""
-
-msgid "lppasswd: Only root can add or delete passwords."
-msgstr ""
-
-msgid "lppasswd: Password file busy."
-msgstr ""
-
-msgid "lppasswd: Password file not updated."
-msgstr ""
-
-msgid "lppasswd: Sorry, password doesn't match."
-msgstr ""
-
-msgid "lppasswd: Sorry, password rejected."
-msgstr ""
-
-msgid "lppasswd: Sorry, passwords don't match."
-msgstr ""
-
-#, c-format
-msgid "lppasswd: Unable to copy password string: %s"
-msgstr ""
-
-#, c-format
-msgid "lppasswd: Unable to open password file: %s"
-msgstr ""
-
-#, c-format
-msgid "lppasswd: Unable to write to password file: %s"
-msgstr ""
-
-#, c-format
-msgid "lppasswd: failed to backup old password file: %s"
-msgstr ""
-
-#, c-format
-msgid "lppasswd: failed to rename password file: %s"
-msgstr ""
-
-#, c-format
-msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
-msgstr ""
-
-#, c-format
-msgid ""
-"lpstat: error - %s environment variable names non-existent destination \"%s"
-"\"."
-msgstr ""
-
-#, c-format
-msgid "members of class %s:"
-msgstr ""
-
-msgid "no entries"
-msgstr ""
-
-msgid "no system default destination"
-msgstr ""
-
-msgid "notify-events not specified."
-msgstr ""
-
-#, c-format
-msgid "notify-recipient-uri URI \"%s\" is already used."
-msgstr ""
-
-#, c-format
-msgid "notify-recipient-uri URI \"%s\" uses unknown scheme."
-msgstr ""
-
-msgid "pending"
-msgstr "ausstehend"
-
-#, c-format
-msgid "ppdc: Adding include directory \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Adding/updating UI text from %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Bad boolean value (%s) on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Bad font attribute: %s"
-msgstr ""
-
-#, c-format
-msgid "ppdc: Bad resolution name \"%s\" on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Bad status keyword %s on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Bad variable substitution ($%c) on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Choice found on line %d of %s with no Option."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Duplicate #po for locale %s on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected a filter definition on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected a program name on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected boolean value on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected charset after Font on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected choice code on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected choice name/text on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected color order for ColorModel on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected colorspace for ColorModel on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected compression for ColorModel on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected constraints string for UIConstraints on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid ""
-"ppdc: Expected driver type keyword following DriverType on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected duplex type after Duplex on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected encoding after Font on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected filename after #po %s on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected group name/text on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected include filename on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected integer on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected locale after #po on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name after %s on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name after FileName on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name after Font on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name after Manufacturer on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name after MediaSize on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name after ModelName on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name after PCFileName on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name/text after %s on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name/text after Installable on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name/text after Resolution on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected name/text combination for ColorModel on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected option name/text on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected option section on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected option type on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected override field after Resolution on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected quoted string on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected real number on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid ""
-"ppdc: Expected resolution/mediatype following ColorProfile on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid ""
-"ppdc: Expected resolution/mediatype following SimpleColorProfile on line %d "
-"of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected selector after %s on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected status after Font on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected string after Copyright on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected string after Version on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected two option names on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected value after %s on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Expected version after Font on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Invalid #include/#po filename \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Invalid cost for filter on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Invalid empty MIME type for filter on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Invalid empty program name for filter on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Invalid option section \"%s\" on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Invalid option type \"%s\" on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Loading driver information file \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Loading messages for locale \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Loading messages from \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Missing #endif at end of \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Missing #if on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid ""
-"ppdc: Need a msgid line before any translation strings on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: No message catalog provided for locale %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Option %s defined in two different groups on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Option %s redefined with a different type on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Option constraint must *name on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Too many nested #if's on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unable to create PPD file \"%s\" - %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unable to create output directory %s: %s"
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unable to create output pipes: %s"
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unable to execute cupstestppd: %s"
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unable to find #po file %s on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unable to find include file \"%s\" on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unable to find localization for \"%s\" - %s"
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unable to load localization file \"%s\" - %s"
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unable to open %s: %s"
-msgstr ""
-
-#, c-format
-msgid "ppdc: Undefined variable (%s) on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unexpected text on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unknown driver type %s on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unknown duplex type \"%s\" on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unknown media size \"%s\" on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unknown message catalog format for \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unknown token \"%s\" seen on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid ""
-"ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Unterminated string starting with %c on line %d of %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Warning - overlapping filename \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Writing %s."
-msgstr ""
-
-#, c-format
-msgid "ppdc: Writing PPD files to directory \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s."
-msgstr ""
-
-#, c-format
-msgid "ppdmerge: Ignoring PPD file %s."
-msgstr ""
-
-#, c-format
-msgid "ppdmerge: Unable to backup %s to %s - %s"
-msgstr ""
-
-#, c-format
-msgid "printer %s disabled since %s -"
-msgstr ""
-
-#, c-format
-msgid "printer %s is idle. enabled since %s"
-msgstr ""
-
-#, c-format
-msgid "printer %s now printing %s-%d. enabled since %s"
-msgstr ""
-
-#, c-format
-msgid "printer %s/%s disabled since %s -"
-msgstr ""
-
-#, c-format
-msgid "printer %s/%s is idle. enabled since %s"
-msgstr ""
-
-#, c-format
-msgid "printer %s/%s now printing %s-%d. enabled since %s"
-msgstr ""
-
-msgid "processing"
-msgstr "Bearbeiten"
-
-#, c-format
-msgid "request id is %s-%d (%d file(s))"
-msgstr ""
-
-msgid "request-id uses indefinite length"
-msgstr "Anfrage-ID hat unbestimmte Länge"
-
-msgid "scheduler is not running"
-msgstr ""
-
-msgid "scheduler is running"
-msgstr ""
-
-#, c-format
-msgid "stat of %s failed: %s"
-msgstr "Status von %s fehlgeschlagen: %s"
-
-msgid "status\t\tShow status of daemon and queue."
-msgstr ""
-
-msgid "stopped"
-msgstr "Gestoppt"
-
-#, c-format
-msgid "system default destination: %s"
-msgstr ""
-
-#, c-format
-msgid "system default destination: %s/%s"
-msgstr ""
-
-msgid "unknown"
-msgstr "Unbekannt"
-
-msgid "untitled"
-msgstr "Ohne Titel"
-
-msgid "variable-bindings uses indefinite length"
-msgstr "variable-bindings hat unbestimmte Länge"
-
-#~ msgid "\t\t(all)\n"
-#~ msgstr "\t\t(alles)\n"
-
-#~ msgid "\t\t(none)\n"
-#~ msgstr "\t\t(ohne)\n"
-
-#~ msgid "\t%d entries\n"
-#~ msgstr "\t%d Einträge\n"
-
-#~ msgid "\tAfter fault: continue\n"
-#~ msgstr "\tNach Fehler: fortsetzen\n"
-
-#~ msgid "\tAlerts:"
-#~ msgstr "\tWarnhinweise:"
-
-#~ msgid "\tBanner required\n"
-#~ msgstr "\tBanner erforderlich\n"
-
-#~ msgid "\tCharset sets:\n"
-#~ msgstr "\tZeichensätze:\n"
-
-#~ msgid "\tConnection: direct\n"
-#~ msgstr "\tVerbindung: direkt\n"
-
-#~ msgid "\tConnection: remote\n"
-#~ msgstr "\tVerbindung: enfernt\n"
-
-#~ msgid "\tDefault page size:\n"
-#~ msgstr "\tStandardseitengröße:\n"
-
-#~ msgid "\tDefault pitch:\n"
-#~ msgstr "\tStandardzeilenhöhe:\n"
-
-#~ msgid "\tDefault port settings:\n"
-#~ msgstr "\tStandard-Anschlusseinstellungen:\n"
-
-#~ msgid "\tDescription: %s\n"
-#~ msgstr "\tBeschreibung: %s\n"
-
-#~ msgid ""
-#~ "\tForm mounted:\n"
-#~ "\tContent types: any\n"
-#~ "\tPrinter types: unknown\n"
-#~ msgstr ""
-#~ "\tFormular aktiviert:\n"
-#~ "\tInhaltstypen: beliebig\n"
-#~ "\tDruckertypen: unbekannt\n"
-
-#~ msgid "\tForms allowed:\n"
-#~ msgstr "\tZugelassene Formulare:\n"
-
-#~ msgid "\tInterface: %s.ppd\n"
-#~ msgstr "\tSchnittstelle: %s.ppd\n"
-
-#~ msgid "\tInterface: %s/interfaces/%s\n"
-#~ msgstr "\tSchnittstelle: %s/interfaces/%s\n"
-
-#~ msgid "\tInterface: %s/ppd/%s.ppd\n"
-#~ msgstr "\tSchnittstelle: %s/ppd/%s.ppd\n"
-
-#~ msgid "\tLocation: %s\n"
-#~ msgstr "\tStandort: %s\n"
-
-#~ msgid "\tOn fault: no alert\n"
-#~ msgstr "\tBei Fehler: kein Warnhinweis\n"
-
-#~ msgid "\tUsers allowed:\n"
-#~ msgstr "\tZugelassene Benutzer:\n"
-
-#~ msgid "\tUsers denied:\n"
-#~ msgstr "\tGesperrte Benutzer:\n"
-
-#~ msgid "\tdaemon present\n"
-#~ msgstr "\tDaemon vorhanden\n"
-
-#~ msgid "\tno entries\n"
-#~ msgstr "\tkeine Einträge\n"
-
-#~ msgid "\tprinter is on device '%s' speed -1\n"
-#~ msgstr "\tDrucker ist auf Geschwindigkeit des Geräts „%s“ -1\n"
-
-#~ msgid "\tprinting is disabled\n"
-#~ msgstr "\tDrucken ist deaktiviert\n"
-
-#~ msgid "\tprinting is enabled\n"
-#~ msgstr "\tDrucken ist aktiviert\n"
-
-#~ msgid "\tqueued for %s\n"
-#~ msgstr "\tWarteliste für %s\n"
-
-#~ msgid "\tqueuing is disabled\n"
-#~ msgstr "\tWarteliste ist deaktiviert\n"
-
-#~ msgid "\tqueuing is enabled\n"
-#~ msgstr "\tWarteliste ist aktiviert\n"
-
-#~ msgid "\treason unknown\n"
-#~ msgstr "\tGrund unbekannt\n"
-
-#~ msgid ""
-#~ "\n"
-#~ " DETAILED CONFORMANCE TEST RESULTS\n"
-#~ msgstr ""
-#~ "\n"
-#~ " AUSFÜHRLICHE KONFORMITÄTSTESTERGEBNISSE\n"
-
-#~ msgid " REF: Page 15, section 3.1.\n"
-#~ msgstr " REF: Seite 15, Abschnitt 3.1.\n"
-
-#~ msgid " REF: Page 15, section 3.2.\n"
-#~ msgstr " REF: Seite 15, Abschnitt 3.2.\n"
-
-#~ msgid " REF: Page 19, section 3.3.\n"
-#~ msgstr " REF: Seite 19, Abschnitt 3.3.\n"
-
-#~ msgid " REF: Page 20, section 3.4.\n"
-#~ msgstr " REF: Seite 20, Abschnitt 3.4.\n"
-
-#~ msgid " REF: Page 27, section 3.5.\n"
-#~ msgstr " REF: Seite 27, Abschnitt 3.5.\n"
-
-#~ msgid " REF: Page 42, section 5.2.\n"
-#~ msgstr " REF: Seite 42, Abschnitt 5.2.\n"
-
-#~ msgid " REF: Pages 16-17, section 3.2.\n"
-#~ msgstr " REF: Seite 16–17, Abschnitt 3.2.\n"
-
-#~ msgid " REF: Pages 42-45, section 5.2.\n"
-#~ msgstr " REF: Seite 42–45, Abschnitt 5.2.\n"
-
-#~ msgid " REF: Pages 45-46, section 5.2.\n"
-#~ msgstr " REF: Seite 45–46, Abschnitt 5.2.\n"
-
-#~ msgid " REF: Pages 48-49, section 5.2.\n"
-#~ msgstr " REF: Seite 48–49, Abschnitt 5.2.\n"
-
-#~ msgid " REF: Pages 52-54, section 5.2.\n"
-#~ msgstr " REF: Seite 52–54, Abschnitt 5.2.\n"
-
-#~ msgid " %-39.39s %.0f bytes\n"
-#~ msgstr " %-39.39s %.0f Byte\n"
-
-#~ msgid " PASS Default%s\n"
-#~ msgstr " PASS Default%s\n"
-
-#~ msgid " PASS DefaultImageableArea\n"
-#~ msgstr " PASS DefaultImageableArea\n"
-
-#~ msgid " PASS DefaultPaperDimension\n"
-#~ msgstr " PASS DefaultPaperDimension\n"
-
-#~ msgid " PASS FileVersion\n"
-#~ msgstr " PASS FileVersion\n"
-
-#~ msgid " PASS FormatVersion\n"
-#~ msgstr " PASS FormatVersion\n"
-
-#~ msgid " PASS LanguageEncoding\n"
-#~ msgstr " PASS LanguageEncoding\n"
-
-#~ msgid " PASS LanguageVersion\n"
-#~ msgstr " PASS LanguageVersion\n"
-
-#~ msgid " PASS Manufacturer\n"
-#~ msgstr " PASS Manufacturer\n"
-
-#~ msgid " PASS ModelName\n"
-#~ msgstr " PASS ModelName\n"
-
-#~ msgid " PASS NickName\n"
-#~ msgstr " PASS NickName\n"
-
-#~ msgid " PASS PCFileName\n"
-#~ msgstr " PASS PCFileName\n"
-
-#~ msgid " PASS PSVersion\n"
-#~ msgstr " PASS PSVersion\n"
-
-#~ msgid " PASS PageRegion\n"
-#~ msgstr " PASS PageRegion\n"
-
-#~ msgid " PASS PageSize\n"
-#~ msgstr " PASS PageSize\n"
-
-#~ msgid " PASS Product\n"
-#~ msgstr " PASS Product\n"
-
-#~ msgid " PASS ShortNickName\n"
-#~ msgstr " PASS ShortNickName\n"
-
-#~ msgid ""
-#~ " WARN \"%s %s\" conflicts with \"%s %s\"\n"
-#~ " (constraint=\"%s %s %s %s\")\n"
-#~ msgstr ""
-#~ " WARN Konflikt zwischen „%s %s“ und „%s %s“\n"
-#~ " (constraint=\"%s %s %s %s\")\n"
-
-#~ msgid " WARN %s has no corresponding options!\n"
-#~ msgstr " WARN %s hat keine passenden Optionen!\n"
-
-#~ msgid ""
-#~ " WARN %s shares a common prefix with %s\n"
-#~ " REF: Page 15, section 3.2.\n"
-#~ msgstr ""
-#~ " WARN %s hat eine gemeinsames übliches Präfix mit %s\n"
-#~ " REF: Seite 15, Abschnitt 3.2.\n"
-
-#~ msgid " WARN Default choices conflicting!\n"
-#~ msgstr " WARN Konflikt bei Standardauswahl!\n"
-
-#~ msgid ""
-#~ " WARN Duplex option keyword %s may not work as expected and "
-#~ "should be named Duplex!\n"
-#~ " REF: Page 122, section 5.17\n"
-#~ msgstr ""
-#~ " WARN Duplex-Option-Keyword „%s“ funktioniert u. U. nicht wie "
-#~ "erwartet – es sollte „Duplex“ heißen!\n"
-#~ " REF: Seite 122, Abschnitt 5.17\n"
-
-#~ msgid ""
-#~ " WARN File contains a mix of CR, LF, and CR LF line endings!\n"
-#~ msgstr ""
-#~ " WARN Datei enthält Mischung aus den Zeilenenden „CR“, „LF“ und "
-#~ "„CR LF“!\n"
-
-#~ msgid ""
-#~ " WARN LanguageEncoding required by PPD 4.3 spec.\n"
-#~ " REF: Pages 56-57, section 5.3.\n"
-#~ msgstr ""
-#~ " WARN LanguageEncoding benötigt von PPD 4.3 Spezifikation.\n"
-#~ " REF: Seite 56–57, Abschnitt 5.3.\n"
-
-#~ msgid " WARN Line %d only contains whitespace!\n"
-#~ msgstr " WARN Zeile %d enthält nur Leerzeichen!\n"
-
-#~ msgid ""
-#~ " WARN Manufacturer required by PPD 4.3 spec.\n"
-#~ " REF: Pages 58-59, section 5.3.\n"
-#~ msgstr ""
-#~ " WARN Manufacturer benötigt von PPD 4.3 Spezifikation.\n"
-#~ " REF: Seite 58–59, Abschnitt 5.3.\n"
-
-#~ msgid " WARN Missing APDialogExtension file \"%s\"\n"
-#~ msgstr " WARN APDialogExtension-Datei „%s“ fehlt\n"
-
-#~ msgid " WARN Missing APPrinterIconPath file \"%s\"\n"
-#~ msgstr " WARN APPrinterIconPath-Datei „%s“ fehlt\n"
-
-#~ msgid ""
-#~ " WARN Non-Windows PPD files should use lines ending with only "
-#~ "LF, not CR LF!\n"
-#~ msgstr ""
-#~ " WARN Windows-fremde PPD-Datei sollte nur Zeilenenden mit „LF“ "
-#~ "verwenden, nicht mit „CR LF“!\n"
-
-#~ msgid ""
-#~ " WARN Obsolete PPD version %.1f!\n"
-#~ " REF: Page 42, section 5.2.\n"
-#~ msgstr ""
-#~ " WARN Veraltete PPD-Version %.1f!\n"
-#~ " REF: Seite 42, Abschnitt 5.2.\n"
-
-#~ msgid ""
-#~ " WARN PCFileName longer than 8.3 in violation of PPD spec.\n"
-#~ " REF: Pages 61-62, section 5.3.\n"
-#~ msgstr ""
-#~ " WARN PCFileName ist länger als 8.3 und verstößt gegen die PPD-"
-#~ "Spezifikation.\n"
-#~ " REF: Seite 61–62, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ " WARN Protocols contains PJL but JCL attributes are not set.\n"
-#~ " REF: Pages 78-79, section 5.7.\n"
-#~ msgstr ""
-#~ " WARN Protokolle enthalten PJL, aber JCL-Attribute sind nicht "
-#~ "festgelegt.\n"
-#~ " REF: Seite 78–79, Abschnitt 5.7.\n"
-
-#~ msgid ""
-#~ " WARN Protocols contains both PJL and BCP; expected TBCP.\n"
-#~ " REF: Pages 78-79, section 5.7.\n"
-#~ msgstr ""
-#~ " WARN Protokolle enthalten PJL sowie BCP; es wurde aber TBCP "
-#~ "erwartet.\n"
-#~ " REF: Seite 78–79, section 5.7.\n"
-
-#~ msgid ""
-#~ " WARN ShortNickName required by PPD 4.3 spec.\n"
-#~ " REF: Pages 64-65, section 5.3.\n"
-#~ msgstr ""
-#~ " WARN ShortNickName benötigt von PPD 4.3 Spezifikation.\n"
-#~ " REF: Seite 64–65, Abschnitt 5.3.\n"
-
-#~ msgid " %s %s %s does not exist!\n"
-#~ msgstr " %s %s %s existiert nicht!\n"
-
-#~ msgid ""
-#~ " %s Bad %s choice %s!\n"
-#~ " REF: Page 122, section 5.17\n"
-#~ msgstr ""
-#~ " %s Ungültig: %s Auswahl %s!\n"
-#~ " REF: Seite 122, Abschnitt 5.17\n"
-
-#~ msgid " %s Bad UTF-8 \"%s\" translation string for option %s!\n"
-#~ msgstr ""
-#~ " %s Ungültiger UTF-8 „%s“ Übersetzungsstring für Option „%s“!\n"
-
-#~ msgid ""
-#~ " %s Bad UTF-8 \"%s\" translation string for option %s, choice %s!\n"
-#~ msgstr ""
-#~ " %s Ungültiger UTF-8 „%s“ Übersetzungsstring für Option „%s“, "
-#~ "Auswahl „%s“!\n"
-
-#~ msgid " %s Bad cupsFilter value \"%s\"!\n"
-#~ msgstr " %s Ungültiger cupsFilter-Wert „%s“!\n"
-
-#~ msgid " %s Bad cupsICCProfile %s!\n"
-#~ msgstr " %s Ungültiges cupsICCProfile „%s“!\n"
-
-#~ msgid " %s Bad cupsPreFilter value \"%s\"!\n"
-#~ msgstr " %s Ungültiger cupsPreFilter-Wert „%s“!\n"
-
-#~ msgid " %s Bad cupsUIConstraints %s: \"%s\"!\n"
-#~ msgstr " %s Ungültiges cupsUIConstraints „%s“: „%s“!\n"
-
-#~ msgid " %s Bad language \"%s\"!\n"
-#~ msgstr " %s Ungültige Sprache „%s“!\n"
-
-#~ msgid " %s Empty cupsUIConstraints %s!\n"
-#~ msgstr " %s Leeres cupsUIConstraints „%s“!\n"
-
-#~ msgid " %s Missing \"%s\" translation string for option %s!\n"
-#~ msgstr " %s Fehlender „%s“-Übersetzungsstring für Option „%s“!\n"
-
-#~ msgid ""
-#~ " %s Missing \"%s\" translation string for option %s, choice %s!\n"
-#~ msgstr ""
-#~ " %s Fehlender „%s“-Übersetzungsstring für Option „%s“, Auswahl „%"
-#~ "s“!\n"
-
-#~ msgid ""
-#~ " %s Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"!\n"
-#~ msgstr ""
-#~ " %s Fehlende Auswahl „*%s %s“ in UIConstraints „*%s %s *%s %s“!\n"
-
-#~ msgid " %s Missing choice *%s %s in cupsUIConstraints %s: \"%s\"!\n"
-#~ msgstr ""
-#~ " %s Fehlende Auswahl „*%s %s“ in cupsUIConstraints „%s“: „%s“!\n"
-
-#~ msgid " %s Missing cupsFilter file \"%s\"\n"
-#~ msgstr " %s Fehlende cupsFilter-Datei „%s“\n"
-
-#~ msgid " %s Missing cupsICCProfile file \"%s\"!\n"
-#~ msgstr " %s Fehlende cupsICCProfile-Datei „%s“!\n"
-
-#~ msgid " %s Missing cupsPreFilter file \"%s\"\n"
-#~ msgstr " %s Fehlende cupsPreFilter-Datei „%s“\n"
-
-#~ msgid " %s Missing cupsUIResolver %s!\n"
-#~ msgstr " %s Fehlender cupsUIResolver „%s“!\n"
-
-#~ msgid " %s Missing option %s in UIConstraints \"*%s %s *%s %s\"!\n"
-#~ msgstr " %s Fehlende Option „%s“ in UIConstraints „*%s %s *%s %s“!\n"
-
-#~ msgid " %s Missing option %s in cupsUIConstraints %s: \"%s\"!\n"
-#~ msgstr " %s Fehlende Option „%s“ in cupsUIConstraints „%s“: „%s“!\n"
-
-#~ msgid " %s No base translation \"%s\" is included in file!\n"
-#~ msgstr " %s Keine Basisübersetzung „%s“ in der Datei enthalten!\n"
-
-#~ msgid ""
-#~ " %s REQUIRED %s does not define choice None!\n"
-#~ " REF: Page 122, section 5.17\n"
-#~ msgstr ""
-#~ " %s BENÖTIGT: „%s“ definiert Auswahl nicht als „None“!\n"
-#~ " REF: Seite 122, Abschnitt 5.17\n"
-
-#~ msgid " %s cupsICCProfile %s hash value collides with %s!\n"
-#~ msgstr " %s Hash-Wert von cupsICCProfile „%s“ in Konflikt mit „%s“!\n"
-
-#~ msgid " %s cupsUIResolver %s causes a loop!\n"
-#~ msgstr " %s cupsUIResolver „%s“ erzeugt eine Schleife!\n"
-
-#~ msgid " **FAIL** %s choice names %s and %s differ only by case!\n"
-#~ msgstr ""
-#~ " **FEHLER** %s-Auswahlnamen „%s“ und „%s“ unterscheiden sich nur "
-#~ "durch Groß-/Kleinschreibung!\n"
-
-#~ msgid ""
-#~ " **FAIL** %s must be 1284DeviceID!\n"
-#~ " REF: Page 72, section 5.5\n"
-#~ msgstr ""
-#~ " **FEHLER** „%s“ muss 1284DeviceID sein!\n"
-#~ " REF: Seite 72, Abschnitt 5.5\n"
-
-#~ msgid ""
-#~ " **FAIL** BAD Default%s %s\n"
-#~ " REF: Page 40, section 4.5.\n"
-#~ msgstr ""
-#~ " **FEHLER** UNGÜLTIG: Default%s „%s“\n"
-#~ " REF: Seite 40, Abschnitt 4.5.\n"
-
-#~ msgid ""
-#~ " **FAIL** BAD DefaultImageableArea %s!\n"
-#~ " REF: Page 102, section 5.15.\n"
-#~ msgstr ""
-#~ " **FEHLER** UNGÜLTIG: DefaultImageableArea „%s“!\n"
-#~ " REF: Seite 102, Abschnitt 5.15.\n"
-
-#~ msgid ""
-#~ " **FAIL** BAD DefaultPaperDimension %s!\n"
-#~ " REF: Page 103, section 5.15.\n"
-#~ msgstr ""
-#~ " **FEHLER** UNGÜLTIG: DefaultPaperDimension „%s“!\n"
-#~ " REF: Seite 103, Abschnitt 5.15.\n"
-
-#~ msgid ""
-#~ " **FAIL** BAD JobPatchFile attribute in file\n"
-#~ " REF: Page 24, section 3.4.\n"
-#~ msgstr ""
-#~ " **FEHLER** UNGÃœLTIG: JobPatchFile-Attribut in Datei\n"
-#~ " REF: Seite 24, Abschnitt 3.4.\n"
-
-#~ msgid ""
-#~ " **FAIL** BAD Manufacturer (should be \"HP\")\n"
-#~ " REF: Page 211, table D.1.\n"
-#~ msgstr ""
-#~ " **FEHLER** UNGÜLTIG: Manufacturer (sollte „HP“ sein)\n"
-#~ " REF: Seite 211, Tabelle D.1.\n"
-
-#~ msgid ""
-#~ " **FAIL** BAD Manufacturer (should be \"Oki\")\n"
-#~ " REF: Page 211, table D.1.\n"
-#~ msgstr ""
-#~ " **FEHLER** UNGÜLTIG: Manufacturer (sollte „Oki“ sein)\n"
-#~ " REF: Seite 211, Tabelle D.1.\n"
-
-#~ msgid ""
-#~ " **FAIL** BAD ModelName - \"%c\" not allowed in string.\n"
-#~ " REF: Pages 59-60, section 5.3.\n"
-#~ msgstr ""
-#~ " **FEHLER** UNGÜLTIG: ModelName – „%c“ nicht zulässig im String.\n"
-#~ " REF: Seite 59–60, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ " **FAIL** BAD PSVersion - not \"(string) int\".\n"
-#~ " REF: Pages 62-64, section 5.3.\n"
-#~ msgstr ""
-#~ " **FEHLER** UNGÜLTIG: PSVersion – nicht „(string) int“.\n"
-#~ " REF: Seite 62–64, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ " **FAIL** BAD Product - not \"(string)\".\n"
-#~ " REF: Page 62, section 5.3.\n"
-#~ msgstr ""
-#~ " **FEHLER** UNGÜLTIG: Product – nicht „(string)“.\n"
-#~ " REF: Seite 62, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ " **FAIL** BAD ShortNickName - longer than 31 chars.\n"
-#~ " REF: Pages 64-65, section 5.3.\n"
-#~ msgstr ""
-#~ " **FEHLER** UNGÜLTIG: ShortNickName – länger als 31 Zeichen.\n"
-#~ " REF: Seite 64–65, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ " **FAIL** Bad %s choice %s!\n"
-#~ " REF: Page 84, section 5.9\n"
-#~ msgstr ""
-#~ " **FEHLER** Ungültig: „%s“ Auswahl „%s“!\n"
-#~ " REF: Seite 84, Abschnitt 5.9\n"
-
-#~ msgid ""
-#~ " **FAIL** Bad FileVersion \"%s\"\n"
-#~ " REF: Page 56, section 5.3.\n"
-#~ msgstr ""
-#~ " **FEHLER** Ungültige FileVersion „%s“\n"
-#~ " REF: Seite 56, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ " **FAIL** Bad FormatVersion \"%s\"\n"
-#~ " REF: Page 56, section 5.3.\n"
-#~ msgstr ""
-#~ " **FEHLER** Ungültige FormatVersion „%s“\n"
-#~ " REF: Seite 56, Abschnitt 5.3.\n"
-
-#~ msgid " **FAIL** Bad LanguageEncoding %s - must be ISOLatin1!\n"
-#~ msgstr ""
-#~ " **FEHLER** Ungültiges LanguageEncoding „%s“ – muss „ISOLatin1“ "
-#~ "sein!\n"
-
-#~ msgid " **FAIL** Bad LanguageVersion %s - must be English!\n"
-#~ msgstr ""
-#~ " **FEHLER** Ungültige LanguageVersion „%s“ – muss „Englisch“ sein!\n"
-
-#~ msgid " **FAIL** Default option code cannot be interpreted: %s\n"
-#~ msgstr ""
-#~ " **FEHLER** Standardoptionscode kann nicht interpretiert werden: %"
-#~ "s\n"
-
-#~ msgid ""
-#~ " **FAIL** Default translation string for option %s choice %s "
-#~ "contains 8-bit characters!\n"
-#~ msgstr ""
-#~ " **FEHLER** Standard-Übersetzungsstring für Option „%s“ Auswahl „%"
-#~ "s“ enthält 8-Bit-Zeichen!\n"
-
-#~ msgid ""
-#~ " **FAIL** Default translation string for option %s contains 8-bit "
-#~ "characters!\n"
-#~ msgstr ""
-#~ " **FEHLER** Standard-Übersetzungsstring für Option „%s“ enthält 8-"
-#~ "Bit-Zeichen!\n"
-
-#~ msgid " **FAIL** Group names %s and %s differ only by case!\n"
-#~ msgstr ""
-#~ " **FEHLER** Gruppennamen „%s“ und „%s“ unterscheiden sich nur durch "
-#~ "Groß-/Kleinschreibung!\n"
-
-#~ msgid " **FAIL** Multiple occurrences of %s choice name %s!\n"
-#~ msgstr " **FEHLER** Mehrere Vorkommen des „%s“-Auswahlnamens „%s“!\n"
-
-#~ msgid " **FAIL** Option names %s and %s differ only by case!\n"
-#~ msgstr ""
-#~ " **FEHLER** Optionnamen „%s“ und „%s“ unterscheiden sich nur durch "
-#~ "Groß-/Kleinschreibung!\n"
-
-#~ msgid ""
-#~ " **FAIL** REQUIRED Default%s\n"
-#~ " REF: Page 40, section 4.5.\n"
-#~ msgstr ""
-#~ " **FEHLER** BENÖTIGT: Default%s\n"
-#~ " REF: Seite 40, Abschnitt 4.5.\n"
-
-#~ msgid ""
-#~ " **FAIL** REQUIRED DefaultImageableArea\n"
-#~ " REF: Page 102, section 5.15.\n"
-#~ msgstr ""
-#~ " **FEHLER** BENÖTIGT: DefaultImageableArea\n"
-#~ " REF: Seite 102, Abschnitt 5.15.\n"
-
-#~ msgid ""
-#~ " **FAIL** REQUIRED DefaultPaperDimension\n"
-#~ " REF: Page 103, section 5.15.\n"
-#~ msgstr ""
-#~ " **FEHLER** BENÖTIGT: DefaultPaperDimension\n"
-#~ " REF: Seite 103, Abschnitt 5.15.\n"
-
-#~ msgid ""
-#~ " **FAIL** REQUIRED FileVersion\n"
-#~ " REF: Page 56, section 5.3.\n"
-#~ msgstr ""
-#~ " **FEHLER** BENÖTIGT: FileVersion\n"
-#~ " REF: Seite 56, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ " **FAIL** REQUIRED FormatVersion\n"
-#~ " REF: Page 56, section 5.3.\n"
-#~ msgstr ""
-#~ " **FEHLER** BENÖTIGT: FormatVersion\n"
-#~ " REF: Seite 56, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ " **FAIL** REQUIRED ImageableArea for PageSize %s\n"
-#~ " REF: Page 41, section 5.\n"
-#~ " REF: Page 102, section 5.15.\n"
-#~ msgstr ""
-#~ " **FEHLER** BENÖTIGT: ImageableArea für PageSize „%s“\n"
-#~ " REF: Seite 41, Abschnitt 5.\n"
-#~ " REF: Seite 102, Abschnitt 5.15.\n"
-
-#~ msgid ""
-#~ " **FAIL** REQUIRED LanguageEncoding\n"
-#~ " REF: Pages 56-57, section 5.3.\n"
-#~ msgstr ""
-#~ " **FEHLER** BENÖTIGT: LanguageEncoding\n"
-#~ " REF: Seite 56–57, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ " **FAIL** REQUIRED LanguageVersion\n"
-#~ " REF: Pages 57-58, section 5.3.\n"
-#~ msgstr ""
-#~ " **FEHLER** BENÖTIGT: LanguageVersion\n"
-#~ " REF: Seite 57–58, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ " **FAIL** REQUIRED Manufacturer\n"
-#~ " REF: Pages 58-59, section 5.3.\n"
-#~ msgstr ""
-#~ " **FEHLER** BENÖTIGT: Manufacturer\n"
-#~ " REF: Seite 58–59, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ " **FAIL** REQUIRED ModelName\n"
-#~ " REF: Pages 59-60, section 5.3.\n"
-#~ msgstr ""
-#~ " **FEHLER** BENÖTIGT: ModelName\n"
-#~ " REF: Seite 59–60, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ " **FAIL** REQUIRED NickName\n"
-#~ " REF: Page 60, section 5.3.\n"
-#~ msgstr ""
-#~ " **FEHLER** BENÖTIGT: NickName\n"
-#~ " REF: Seite 60, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ " **FAIL** REQUIRED PCFileName\n"
-#~ " REF: Pages 61-62, section 5.3.\n"
-#~ msgstr ""
-#~ " **FEHLER** BENÖTIGT: PCFileName\n"
-#~ " REF: Seite 61–62, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ " **FAIL** REQUIRED PSVersion\n"
-#~ " REF: Pages 62-64, section 5.3.\n"
-#~ msgstr ""
-#~ " **FEHLER** BENÖTIGT: PSVersion\n"
-#~ " REF: Seite 62–64, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ " **FAIL** REQUIRED PageRegion\n"
-#~ " REF: Page 100, section 5.14.\n"
-#~ msgstr ""
-#~ " **FEHLER** BENÖTIGT: PageRegion\n"
-#~ " REF: Seite 100, Abschnitt 5.14.\n"
-
-#~ msgid ""
-#~ " **FAIL** REQUIRED PageSize\n"
-#~ " REF: Page 41, section 5.\n"
-#~ " REF: Page 99, section 5.14.\n"
-#~ msgstr ""
-#~ " **FEHLER** BENÖTIGT: PageSize\n"
-#~ " REF: Seite 41, Abschnitt 5.\n"
-#~ " REF: Seite 99, Abschnitt 5.14.\n"
-
-#~ msgid ""
-#~ " **FAIL** REQUIRED PageSize\n"
-#~ " REF: Pages 99-100, section 5.14.\n"
-#~ msgstr ""
-#~ " **FEHLER** BENÖTIGT: PageSize\n"
-#~ " REF: Seite 99–100, Abschnitt 5.14.\n"
-
-#~ msgid ""
-#~ " **FAIL** REQUIRED PaperDimension for PageSize %s\n"
-#~ " REF: Page 41, section 5.\n"
-#~ " REF: Page 103, section 5.15.\n"
-#~ msgstr ""
-#~ " **FEHLER** BENÖTIGT: PaperDimension für PageSize „%s“\n"
-#~ " REF: Seite 41, Abschnitt 5.\n"
-#~ " REF: Seite 103, Abschnitt 5.15.\n"
-
-#~ msgid ""
-#~ " **FAIL** REQUIRED Product\n"
-#~ " REF: Page 62, section 5.3.\n"
-#~ msgstr ""
-#~ " **FEHLER** BENÖTIGT: Product\n"
-#~ " REF: Seite 62, Abschnitt 5.3.\n"
-
-#~ msgid ""
-#~ " **FAIL** REQUIRED ShortNickName\n"
-#~ " REF: Page 64-65, section 5.3.\n"
-#~ msgstr ""
-#~ " **FEHLER** BENÖTIGT: ShortNickName\n"
-#~ " REF: Seite 64–65, Abschnitt 5.3.\n"
-
-#~ msgid " %d ERRORS FOUND\n"
-#~ msgstr " %d FEHLER GEFUNDEN\n"
-
-#~ msgid ""
-#~ " Bad %%%%BoundingBox: on line %d!\n"
-#~ " REF: Page 39, %%%%BoundingBox:\n"
-#~ msgstr ""
-#~ " Ungültige %%%%BoundingBox: in Zeile %d!\n"
-#~ " REF: Seite 39, %%%%BoundingBox:\n"
-
-#~ msgid ""
-#~ " Bad %%%%Page: on line %d!\n"
-#~ " REF: Page 53, %%%%Page:\n"
-#~ msgstr ""
-#~ " Ungültige %%%%Page: in Zeile %d!\n"
-#~ " REF: Seite 53, %%%%Page:\n"
-
-#~ msgid ""
-#~ " Bad %%%%Pages: on line %d!\n"
-#~ " REF: Page 43, %%%%Pages:\n"
-#~ msgstr ""
-#~ " Ungültige %%%%Pages: in Zeile %d!\n"
-#~ " REF: Seite 43, %%%%Pages:\n"
-
-#~ msgid ""
-#~ " Line %d is longer than 255 characters (%d)!\n"
-#~ " REF: Page 25, Line Length\n"
-#~ msgstr ""
-#~ " Zeile %d ist länger als 255 Zeichen (%d)!\n"
-#~ " REF: Seite 25, Line Length\n"
-
-#~ msgid ""
-#~ " Missing %!PS-Adobe-3.0 on first line!\n"
-#~ " REF: Page 17, 3.1 Conforming Documents\n"
-#~ msgstr ""
-#~ " %!PS-Adobe-3.0 fehlt in der ersten Zeile!\n"
-#~ " REF: Seite 17, 3.1 Conforming Documents\n"
-
-#~ msgid ""
-#~ " Missing %%EndComments comment!\n"
-#~ " REF: Page 41, %%EndComments\n"
-#~ msgstr ""
-#~ " %%EndComments-Kommentar fehlt!\n"
-#~ " REF: Seite 41, %%EndComments\n"
-
-#~ msgid ""
-#~ " Missing or bad %%BoundingBox: comment!\n"
-#~ " REF: Page 39, %%BoundingBox:\n"
-#~ msgstr ""
-#~ " %%BoundingBox fehlt oder ist ungültig: Kommentar!\n"
-#~ " REF: Seite 39, %%BoundingBox:\n"
-
-#~ msgid ""
-#~ " Missing or bad %%Page: comments!\n"
-#~ " REF: Page 53, %%Page:\n"
-#~ msgstr ""
-#~ " %%Page fehlt oder ist ungültig: Kommentare!\n"
-#~ " REF: Seite 53, %%Page:\n"
-
-#~ msgid ""
-#~ " Missing or bad %%Pages: comment!\n"
-#~ " REF: Page 43, %%Pages:\n"
-#~ msgstr ""
-#~ " %%Pages fehlt oder ist ungültig: Kommentar!\n"
-#~ " REF: Seite 43, %%Pages:\n"
-
-#~ msgid " NO ERRORS FOUND\n"
-#~ msgstr " KEINE FEHLER GEFUNDEN\n"
-
-#~ msgid " Saw %d lines that exceeded 255 characters!\n"
-#~ msgstr " %d Zeilen mit über 255 Zeichen gefunden!\n"
-
-#~ msgid " Too many %%BeginDocument comments!\n"
-#~ msgstr " Zu viele %%BeginDocument-Kommentare!\n"
-
-#~ msgid " Too many %%EndDocument comments!\n"
-#~ msgstr " Zu viele %%EndDocument-Kommentare!\n"
-
-#~ msgid " Warning: file contains binary data!\n"
-#~ msgstr " Achtung: Datei enthält Binärdaten!\n"
-
-#~ msgid " Warning: no %%EndComments comment in file!\n"
-#~ msgstr " Achtung: kein %%EndComments-Kommentar in der Datei!\n"
-
-#~ msgid " Warning: obsolete DSC version %.1f in file!\n"
-#~ msgstr " Achtung: veraltete DSC-Version %.1f in der Datei!\n"
-
-#~ msgid " FAIL\n"
-#~ msgstr " FEHLER\n"
-
-#~ msgid ""
-#~ " FAIL\n"
-#~ " **FAIL** Unable to open PPD file - %s\n"
-#~ msgstr ""
-#~ " FEHLER\n"
-#~ " **FEHLER** PPD-Datei konnte nicht geöffnet werden – %s.\n"
-
-#~ msgid ""
-#~ " FAIL\n"
-#~ " **FAIL** Unable to open PPD file - %s on line %d.\n"
-#~ msgstr ""
-#~ " FEHLER\n"
-#~ " **FEHLER** PPD-Datei konnte nicht geöffnet werden – %s in Zeile %"
-#~ "d.\n"
-
-#~ msgid " PASS\n"
-#~ msgstr " PASS\n"
-
-#~ msgid "#10 Envelope"
-#~ msgstr "US #10 Umschlag"
-
-#~ msgid "#11 Envelope"
-#~ msgstr "US #11 Umschlag"
-
-#~ msgid "#12 Envelope"
-#~ msgstr "US #12 Umschlag"
-
-#~ msgid "#14 Envelope"
-#~ msgstr "US #14 Umschlag"
-
-#~ msgid "#9 Envelope"
-#~ msgstr "US #9 Umschlag"
-
-#~ msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes\n"
-#~ msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f Byte\n"
-
-#~ msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes\n"
-#~ msgstr "%-7s %-7.7s %-7d %-31.31s %.0f Byte\n"
-
-#~ msgid "%s accepting requests since %s\n"
-#~ msgstr "%s akzeptiert Anfragen seit %s\n"
-
-#~ msgid "%s is not implemented by the CUPS version of lpc.\n"
-#~ msgstr "%s ist nicht implementiert in der CUPS-Version von lpc.\n"
-
-#~ msgid "%s is not ready\n"
-#~ msgstr "%s ist nicht bereit\n"
-
-#~ msgid "%s is ready\n"
-#~ msgstr "%s ist bereit\n"
-
-#~ msgid "%s is ready and printing\n"
-#~ msgstr "%s ist bereit und druckt\n"
-
-#~ msgid ""
-#~ "%s not accepting requests since %s -\n"
-#~ "\t%s\n"
-#~ msgstr ""
-#~ "%s akzeptiert keine Anfragen seit %s -\n"
-#~ "\t%s\n"
-
-#~ msgid "%s not supported!"
-#~ msgstr "%s nicht unterstützt!"
-
-#~ msgid "%s/%s accepting requests since %s\n"
-#~ msgstr "%s/%s akzeptiert Anfragen seit %s\n"
-
-#~ msgid ""
-#~ "%s/%s not accepting requests since %s -\n"
-#~ "\t%s\n"
-#~ msgstr ""
-#~ "%s/%s akzeptiert keine Anfragen seit %s -\n"
-#~ "\t%s\n"
-
-#~ msgid "%s: %-33.33s [job %d localhost]\n"
-#~ msgstr "%s: %-33.33s [Druckauftrag %d localhost]\n"
-
-#~ msgid "%s: %s failed: %s\n"
-#~ msgstr "%s: %s fehlgeschlagen: %s\n"
-
-#~ msgid "%s: Don't know what to do!\n"
-#~ msgstr "%s: Weiß nicht, was ich tun soll!\n"
-
-#~ msgid ""
-#~ "%s: Error - %s environment variable names non-existent destination \"%s"
-#~ "\"!\n"
-#~ msgstr ""
-#~ "%s: Fehler – %s Umgebungsvariablennamen nicht vorhanden für Ziel „%s“!\n"
-
-#~ msgid "%s: Error - bad job ID!\n"
-#~ msgstr "%s: Fehler – ungültige Druckauftrags-ID!\n"
-
-#~ msgid "%s: Error - cannot print files and alter jobs simultaneously!\n"
-#~ msgstr ""
-#~ "%s: Fehler – kann nicht gleichzeitig Dateien drucken und Druckaufträge "
-#~ "ändern!\n"
-
-#~ msgid ""
-#~ "%s: Error - cannot print from stdin if files or a job ID are provided!\n"
-#~ msgstr ""
-#~ "%s: Fehler – kann nicht von „stdin“, wenn Dateien oder eine Druckauftrags-"
-#~ "ID übergeben werden!\n"
-
-#~ msgid "%s: Error - expected character set after '-S' option!\n"
-#~ msgstr "%s: Fehler – Zeichensatz erwartet nach '-S'-Option!\n"
-
-#~ msgid "%s: Error - expected content type after '-T' option!\n"
-#~ msgstr "%s: Fehler – Inhaltstyp erwartet nach '-T'-Option!\n"
-
-#~ msgid "%s: Error - expected copies after '-n' option!\n"
-#~ msgstr "%s: Fehler – Kopien erwartet nach '-n'-Option!\n"
-
-#~ msgid "%s: Error - expected copy count after '-#' option!\n"
-#~ msgstr "%s: Fehler – Kopienanzahl erwartet nach '-#'-Option!\n"
-
-#~ msgid "%s: Error - expected destination after '-P' option!\n"
-#~ msgstr "%s: Fehler – Ziel erwartet nach '-P'-Option!\n"
-
-#~ msgid "%s: Error - expected destination after '-b' option!\n"
-#~ msgstr "%s: Fehler – Ziel erwartet nach '-b'-Option!\n"
-
-#~ msgid "%s: Error - expected destination after '-d' option!\n"
-#~ msgstr "%s: Fehler – Ziel erwartet nach '-d'-Option!\n"
-
-#~ msgid "%s: Error - expected form after '-f' option!\n"
-#~ msgstr "%s: Fehler – Form erwartet nach '-f'-Option!\n"
-
-#~ msgid "%s: Error - expected hold name after '-H' option!\n"
-#~ msgstr "%s: Fehler – Name halten erwartet nach '-H'-Option!\n"
-
-#~ msgid "%s: Error - expected hostname after '-H' option!\n"
-#~ msgstr "%s: Fehler – Hostname erwartet nach '-H'-Option!\n"
-
-#~ msgid "%s: Error - expected hostname after '-h' option!\n"
-#~ msgstr "%s: Fehler – Hostname erwartet nach '-h'-Option!\n"
-
-#~ msgid "%s: Error - expected mode list after '-y' option!\n"
-#~ msgstr "%s: Fehler – Modusliste erwartet nach '-y'-Option!\n"
-
-#~ msgid "%s: Error - expected name after '-%c' option!\n"
-#~ msgstr "%s: Fehler – Name erwartet nach '-%c'-Option!\n"
-
-#~ msgid "%s: Error - expected option string after '-o' option!\n"
-#~ msgstr "%s: Fehler – Optionsstring erwartet nach '-o'-Option!\n"
-
-#~ msgid "%s: Error - expected page list after '-P' option!\n"
-#~ msgstr "%s: Fehler – Seitenliste erwartet nach '-P'-Option!\n"
-
-#~ msgid "%s: Error - expected priority after '-%c' option!\n"
-#~ msgstr "%s: Fehler – Priorität erwartet nach '-%c'-Option!\n"
-
-#~ msgid "%s: Error - expected reason text after '-r' option!\n"
-#~ msgstr "%s: Fehler – Text mit Grund erwartet nach '-r'-Option!\n"
-
-#~ msgid "%s: Error - expected title after '-t' option!\n"
-#~ msgstr "%s: Fehler – Titel erwartet nach '-t'-Option!\n"
-
-#~ msgid "%s: Error - expected username after '-U' option!\n"
-#~ msgstr "%s: Fehler – Benutzername erwartet nach '-U'-Option!\n"
-
-#~ msgid "%s: Error - expected username after '-u' option!\n"
-#~ msgstr "%s: Fehler – Benutzername erwartet nach '-u'-Option!\n"
-
-#~ msgid "%s: Error - expected value after '-%c' option!\n"
-#~ msgstr "%s: Fehler – Wert erwartet nach '-%c'-Option!\n"
-
-#~ msgid ""
-#~ "%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' "
-#~ "option!\n"
-#~ msgstr ""
-#~ "%s: Fehler – benötigt „completed“, „not-completed“ oder „all“ nach '-W'-"
-#~ "Option!\n"
-
-#~ msgid "%s: Error - no default destination available.\n"
-#~ msgstr "%s: Fehler – kein Standardziel verfügbar.\n"
-
-#~ msgid "%s: Error - priority must be between 1 and 100.\n"
-#~ msgstr "%s: Fehler – Priorität muss zwischen 1 und 100 sein.\n"
-
-#~ msgid "%s: Error - scheduler not responding!\n"
-#~ msgstr "%s: Fehler – Scheduler reagiert nicht!\n"
-
-#~ msgid "%s: Error - too many files - \"%s\"\n"
-#~ msgstr "%s: Fehler – zu viele Dateien – „%s“\n"
-
-#~ msgid "%s: Error - unable to access \"%s\" - %s\n"
-#~ msgstr "%s: Fehler – kein Zugriff auf „%s“ – %s\n"
-
-#~ msgid "%s: Error - unable to queue from stdin - %s\n"
-#~ msgstr "%s: Fehler – keine Warteliste für „stdin“ – %s\n"
-
-#~ msgid "%s: Error - unknown destination \"%s\"!\n"
-#~ msgstr "%s: Fehler – unbekanntes Ziel „%s“!\n"
-
-#~ msgid "%s: Error - unknown destination \"%s/%s\"!\n"
-#~ msgstr "%s: Fehler – unbekanntes Ziel „%s/%s“!\n"
-
-#~ msgid "%s: Error - unknown option '%c'!\n"
-#~ msgstr "%s: Fehler – unbekannte Option '%c'!\n"
-
-#~ msgid "%s: Error - unknown option '%s'!\n"
-#~ msgstr "%s: Fehler – unbekannte Option '%s'!\n"
-
-#~ msgid "%s: Expected job ID after '-i' option!\n"
-#~ msgstr "%s: Druckauftrags-ID erwartet nach '-i'-Option!\n"
-
-#~ msgid "%s: Filter \"%s\" not available: %s\n"
-#~ msgstr "%s: Filter „%s“ nicht verfügbar: %s\n"
-
-#~ msgid "%s: Invalid destination name in list \"%s\"!\n"
-#~ msgstr "%s: Ungültiger Zielname in Liste „%s“!\n"
-
-#~ msgid "%s: Invalid filter string \"%s\"\n"
-#~ msgstr "%s: Ungültiger Filterstring „%s“\n"
-
-#~ msgid "%s: Need job ID ('-i jobid') before '-H restart'!\n"
-#~ msgstr "%s: Druckauftrags-ID ('-i jobid') benötigt vor '-H restart'!\n"
-
-#~ msgid "%s: No filter to convert from %s/%s to %s/%s!\n"
-#~ msgstr "%s: Kein Filter für Konvertierung von %s/%s zu %s/%s!\n"
-
-#~ msgid "%s: Operation failed: %s\n"
-#~ msgstr "%s: Aktion fehlgeschlagen: %s\n"
-
-#~ msgid "%s: Sorry, no encryption support compiled in!\n"
-#~ msgstr "%s: Verschlüsselungsunterstützung nicht verfügbar!\n"
-
-#~ msgid "%s: Unable to connect to server\n"
-#~ msgstr "%s: Verbindung mit Server fehlgeschlagen\n"
-
-#~ msgid "%s: Unable to contact server!\n"
-#~ msgstr "%s: Verbindungsaufbau zum Server fehlgeschlagen!\n"
-
-#~ msgid "%s: Unable to determine MIME type of \"%s\"!\n"
-#~ msgstr "%s: MIME-Typ von „%s“ konnte nicht bestimmt werden!\n"
-
-#~ msgid "%s: Unable to open %s - %s\n"
-#~ msgstr "%s: „%s“ konnte nicht geöffnet werden – %s\n"
-
-#~ msgid "%s: Unable to open %s - %s on line %d.\n"
-#~ msgstr "%s: „%s“ konnte nicht geöffnet werden – %s in Zeile %d.\n"
-
-#~ msgid "%s: Unable to open %s: %s\n"
-#~ msgstr "%s: „%s“ konnte nicht geöffnet werden: %s\n"
-
-#~ msgid "%s: Unable to open PPD file: %s on line %d\n"
-#~ msgstr "%s: PPD-Datei konnte nicht geöffnet werden – %s in Zeile %d\n"
-
-#~ msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"!\n"
-#~ msgstr ""
-#~ "%s: MIME-Datenbank von „%s“ oder „%s“ konnte nicht gelesen werden!\n"
-
-#~ msgid "%s: Unknown destination \"%s\"!\n"
-#~ msgstr "%s: Unbekanntes Ziel „%s“!\n"
-
-#~ msgid "%s: Unknown destination MIME type %s/%s!\n"
-#~ msgstr "%s: Unbekannter Ziel-MIME-Typ „%s/%s“!\n"
-
-#~ msgid "%s: Unknown option '%c'!\n"
-#~ msgstr "%s: Unbekannte Option '%c'!\n"
-
-#~ msgid "%s: Unknown source MIME type %s/%s!\n"
-#~ msgstr "%s: Unbekannter Quell-MIME-Typ „%s/%s“!\n"
-
-#~ msgid ""
-#~ "%s: Warning - '%c' format modifier not supported - output may not be "
-#~ "correct!\n"
-#~ msgstr ""
-#~ "%s: Achtung – '%c'-Format-Modifier nicht unterstützt – Ausgabe ist u. U. "
-#~ "nicht korrekt!\n"
-
-#~ msgid "%s: Warning - character set option ignored!\n"
-#~ msgstr "%s: Achtung – Zeichensatzoption ignoriert!\n"
-
-#~ msgid "%s: Warning - content type option ignored!\n"
-#~ msgstr "%s: Achtung – Inhaltstypoption ignoriert!\n"
-
-#~ msgid "%s: Warning - form option ignored!\n"
-#~ msgstr "%s: Achtung – Formoption ignoriert!\n"
-
-#~ msgid "%s: Warning - mode option ignored!\n"
-#~ msgstr "%s: Achtung – Modusoption ignoriert!\n"
-
-#~ msgid ""
-#~ "%s: error - %s environment variable names non-existent destination \"%s"
-#~ "\"!\n"
-#~ msgstr ""
-#~ "%s: Fehler – %s Umgebungsvariablennamen nicht vorhanden für Ziel „%s“!\n"
-
-#~ msgid "%s: error - expected option=value after '-o' option!\n"
-#~ msgstr "%s: Fehler – „option=value“ erwartet nach '-o'-Option!\n"
-
-#~ msgid "%s: error - no default destination available.\n"
-#~ msgstr "%s: Fehler – kein Standardziel verfügbar.\n"
-
-#~ msgid "10 x 11\""
-#~ msgstr "10 x 11 Zoll"
-
-#~ msgid "10 x 13\""
-#~ msgstr "10 x 13 Zoll"
-
-#~ msgid "10 x 14\""
-#~ msgstr "10 x 14 Zoll"
-
-#~ msgid "12 x 11\""
-#~ msgstr "12 x 11 Zoll"
-
-#~ msgid "15 x 11\""
-#~ msgstr "15 x 11 Zoll"
-
-#~ msgid "600 DPI Grayscale"
-#~ msgstr "600 DPI Graustufen"
-
-#~ msgid "60x720dpi"
-#~ msgstr "60x720 dpi"
-
-#~ msgid "7 x 9\""
-#~ msgstr "7 x 9 Zoll"
-
-#~ msgid "8 x 10\""
-#~ msgstr "8 x 10 Zoll"
-
-#~ msgid "9 x 11\""
-#~ msgstr "9 x 11 Zoll"
-
-#~ msgid "9 x 12\""
-#~ msgstr "9 x 12 Zoll"
-
-#~ msgid "?Invalid help command unknown\n"
-#~ msgstr "?Ungültiger Hilfebefehl ist unbekannt\n"
-
-#~ msgid "A Samba password is required to export printer drivers!"
-#~ msgstr ""
-#~ "Es wird ein Samba-Kennwort benötigt, um Druckertreiber exportieren zu "
-#~ "können!"
-
-#~ msgid "A Samba username is required to export printer drivers!"
-#~ msgstr ""
-#~ "Es wird ein Samba-Benutzername benötigt, um Druckertreiber exportieren zu "
-#~ "können!"
-
-#~ msgid "A class named \"%s\" already exists!"
-#~ msgstr "Es gibt bereits eine Klasse mit dem Namen „%s“!"
-
-#~ msgid "A printer named \"%s\" already exists!"
-#~ msgstr "Es gibt bereits einen Drucker mit dem Namen „%s“!"
-
-#~ msgid "A3 (Oversize)"
-#~ msgstr "A3 (Übergröße)"
-
-#~ msgid "A4 (Oversize)"
-#~ msgstr "A4 (Übergröße)"
-
-#~ msgid "A4 (Small)"
-#~ msgstr "A4 (klein)"
-
-#~ msgid "A5 (Oversize)"
-#~ msgstr "A5 (Übergröße)"
-
-#~ msgid "ARCH A"
-#~ msgstr "ARCH A"
-
-#~ msgid "ARCH B"
-#~ msgstr "ARCH B"
-
-#~ msgid "Attempt to set %s printer-state to bad value %d!"
-#~ msgstr ""
-#~ "Versuch, den Druckerstatus für „%s“ auf den ungültigen Wert „%d“ zu "
-#~ "setzen!"
-
-#~ msgid "Attribute groups are out of order (%x < %x)!"
-#~ msgstr "Attributgruppen sind durcheinander (%x < %x)!"
-
-#~ msgid "Bad device URI \"%s\"!\n"
-#~ msgstr "Ungültige Geräte-URI „%s“!\n"
-
-#~ msgid "Bad device-uri \"%s\"!"
-#~ msgstr "Ungültige Geräte-URI „%s“!"
-
-#~ msgid "Bad device-uri scheme \"%s\"!"
-#~ msgstr "Ungültiges Geräte-URI-Schema „%s“!"
-
-#~ msgid "Bad document-format \"%s\"!"
-#~ msgstr "Ungültiges Dokumentformat „%s“!"
-
-#~ msgid "Bad filename buffer!"
-#~ msgstr "Ungültiger Dateinamen-Puffer!"
-
-#~ msgid "Bad font attribute: %s\n"
-#~ msgstr "Ungültiges Schriftattribut: %s\n"
-
-#~ msgid "Bad job-priority value!"
-#~ msgstr "Ungültiger Wert für Druckauftragspriorität!"
-
-#~ msgid "Bad job-sheets value \"%s\"!"
-#~ msgstr "Ungültiger Wert „%s“ für Druckauftragslisten!"
-
-#~ msgid "Bad job-sheets value type!"
-#~ msgstr "Ungültiger Wertetyp für Druckauftragslisten!"
-
-#~ msgid "Bad job-state value!"
-#~ msgstr "Ungültiger Wert für Druckauftragsstatus!"
-
-#~ msgid "Bad job-uri attribute \"%s\"!"
-#~ msgstr "Ungültiges Druckauftrags-URI-Attribut „%s“!"
-
-#~ msgid "Bad notify-pull-method \"%s\"!"
-#~ msgstr "Ungültige Notify-Pull-Methode „%s“!"
-
-#~ msgid "Bad notify-recipient-uri URI \"%s\"!"
-#~ msgstr "Ungültige Notify-Recipient-URI: URI „%s“!"
-
-#~ msgid "Bad option + choice on line %d!"
-#~ msgstr "Ungültige Option + Auswahl in Zeile %d!"
-
-#~ msgid "Bad port-monitor \"%s\"!"
-#~ msgstr "Ungültiger Port-Monitor „%s“!"
-
-#~ msgid "Bad printer-state value %d!"
-#~ msgstr "Ungültiger Wert „%d“ für Druckerstatus!"
-
-#~ msgid "Bad request version number %d.%d!"
-#~ msgstr "Ungültige Anfrage-Versionsnummer %d.%d!"
-
-#~ msgid "Bad subscription ID!"
-#~ msgstr "Ungültige Subskriptions-ID!"
-
-#~ msgid "C0 Envelope"
-#~ msgstr "DIN C0 Umschlag"
-
-#~ msgid "C1 Envelope"
-#~ msgstr "DIN C1 Umschlag"
-
-#~ msgid "C2 Envelope"
-#~ msgstr "DIN C2 Umschlag"
-
-#~ msgid "C3 Envelope"
-#~ msgstr "DIN C3 Umschlag"
-
-#~ msgid "C4"
-#~ msgstr "DIN C4"
-
-#~ msgid "C4 Envelope"
-#~ msgstr "DIN C4 Umschlag"
-
-#~ msgid "C5"
-#~ msgstr "DIN C5"
-
-#~ msgid "C5 Envelope"
-#~ msgstr "DIN C5 Umschlag"
-
-#~ msgid "C6"
-#~ msgstr "DIN C6"
-
-#~ msgid "C6 Envelope"
-#~ msgstr "DIN C6 Umschlag"
-
-#~ msgid "C65 Envelope"
-#~ msgstr "DIN C65 Umschlag"
-
-#~ msgid "C7 Envelope"
-#~ msgstr "DIN C7 Umschlag"
-
-#~ msgid "Character set \"%s\" not supported!"
-#~ msgstr "Zeichensatz „%s“ nicht unterstützt!"
-
-#~ msgid "Chou3 Envelope"
-#~ msgstr "Chou3 Umschlag"
-
-#~ msgid "Chou4 Envelope"
-#~ msgstr "Chou4 Umschlag"
-
-#~ msgid ""
-#~ "Commands may be abbreviated. Commands are:\n"
-#~ "\n"
-#~ "exit help quit status ?\n"
-#~ msgstr ""
-#~ "Befehle können abgekürzt werden. Befehle sind:\n"
-#~ "\n"
-#~ "exit help quit status ?\n"
-
-#~ msgid "Could not scan type \"%s\"!"
-#~ msgstr "Typ „%s“ konnte nicht durchsucht werden!"
-
-#~ msgid "Cover open."
-#~ msgstr "Die Abdeckung ist offen."
-
-#~ msgid "DL"
-#~ msgstr "DL"
-
-#~ msgid "DL Envelope"
-#~ msgstr "DL Umschlag"
-
-#~ msgid "Developer almost empty."
-#~ msgstr "Der Entwickler ist fast leer."
-
-#~ msgid "Developer empty!"
-#~ msgstr "Der Entwickler ist leer!"
-
-#~ msgid ""
-#~ "Device: uri = %s\n"
-#~ " class = %s\n"
-#~ " info = %s\n"
-#~ " make-and-model = %s\n"
-#~ " device-id = %s\n"
-#~ " location = %s\n"
-#~ msgstr ""
-#~ "Gerät: URI = %s\n"
-#~ " Klasse = %s\n"
-#~ " Info = %s\n"
-#~ " Hersteller und Modell = %s\n"
-#~ " Geräte-ID = %s\n"
-#~ " Standort = %s\n"
-
-#~ msgid "Document %d not found in job %d."
-#~ msgstr "Dokument „%d“ nicht gefunden in Druckauftrag „%d“."
-
-#~ msgid "Door open."
-#~ msgstr "Die Tür ist offen."
-
-#~ msgid "Double Postcard"
-#~ msgstr "Doppelpostkarte"
-
-#~ msgid "EMERG: Unable to allocate memory for page info: %s\n"
-#~ msgstr "EMERG: Speicher für Seiteninfo konnte nicht zugewiesen werden: %s\n"
-
-#~ msgid "EMERG: Unable to allocate memory for pages array: %s\n"
-#~ msgstr ""
-#~ "EMERG: Speicher für Seiten-Array konnte nicht zugewiesen werden: %s\n"
-
-#~ msgid "ERROR: Bad %%BoundingBox: comment seen!\n"
-#~ msgstr "ERROR: Ungültige %%BoundingBox: Kommentar gesehen!\n"
-
-#~ msgid "ERROR: Bad %%IncludeFeature: comment!\n"
-#~ msgstr "ERROR: Ungültiges %%IncludeFeature: Kommentar!\n"
-
-#~ msgid "ERROR: Bad %%Page: comment in file!\n"
-#~ msgstr "ERROR: Ungültige %%Page: Kommentar in Datei!\n"
-
-#~ msgid "ERROR: Bad %%PageBoundingBox: comment in file!\n"
-#~ msgstr "ERROR: Ungültige %%PageBoundingBox: Kommentar in Datei!\n"
-
-#~ msgid "ERROR: Bad SCSI device file \"%s\"!\n"
-#~ msgstr "ERROR: Ungültige SCSI-Gerätedatei „%s“!\n"
-
-#~ msgid "ERROR: Bad charset file %s\n"
-#~ msgstr "ERROR: Ungültige Zeichensatzdatei „%s“\n"
-
-#~ msgid "ERROR: Bad charset type %s\n"
-#~ msgstr "ERROR: Ungültiger Zeichensatztyp „%s“\n"
-
-#~ msgid "ERROR: Bad columns value %d!\n"
-#~ msgstr "ERROR: Ungültiger Spaltenwert „%d“!\n"
-
-#~ msgid "ERROR: Bad cpi value %f!\n"
-#~ msgstr "ERROR: Ungültiger cpi-Wert „%f“!\n"
-
-#~ msgid "ERROR: Bad font description line: %s\n"
-#~ msgstr "ERROR: Ungültige Schriftbeschreibungszeile: „%s“\n"
-
-#~ msgid "ERROR: Bad lpi value %f!\n"
-#~ msgstr "ERROR: Ungültiger lpi-Wert „%f“!\n"
-
-#~ msgid "ERROR: Bad page setup!\n"
-#~ msgstr "ERROR: Ungültiges Seitenformat!\n"
-
-#~ msgid "ERROR: Bad text direction %s\n"
-#~ msgstr "ERROR: Ungültige Textrichtung „%s“\n"
-
-#~ msgid "ERROR: Bad text width %s\n"
-#~ msgstr "ERROR: Ungültige Textweite „%s“\n"
-
-#~ msgid "ERROR: Destination printer does not exist!\n"
-#~ msgstr "ERROR: Zieldrucker existiert nicht!\n"
-
-#~ msgid "ERROR: Duplicate %%BoundingBox: comment seen!\n"
-#~ msgstr "ERROR: Doppelte %%BoundingBox: Kommentar gesehen!\n"
-
-#~ msgid "ERROR: Duplicate %%Pages: comment seen!\n"
-#~ msgstr "ERROR: Doppelte %%Pages: Kommentar gesehen!\n"
-
-#~ msgid "ERROR: Empty print file!\n"
-#~ msgstr "ERROR: Leere Druckdatei!\n"
-
-#~ msgid "ERROR: Error %d sending PAPSendData request: %s\n"
-#~ msgstr "ERROR: Fehler „%d“ beim Senden der PAPSendData-Anfrage: %s\n"
-
-#~ msgid "ERROR: Expected quoted string on line %d of %s!\n"
-#~ msgstr "ERROR: String mit Anführungszeichen erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ERROR: Fatal USB error!\n"
-#~ msgstr "ERROR: Schwerwiegender USB-Fehler!\n"
-
-#~ msgid "ERROR: Invalid HP-GL/2 command seen, unable to print file!\n"
-#~ msgstr ""
-#~ "ERROR: Ungültiger HP-GL/2-Befehl aufgetreten; Datei konnte nicht gedruckt "
-#~ "werden!\n"
-
-#~ msgid "ERROR: Missing %%EndProlog!\n"
-#~ msgstr "ERROR: Fehlender %%EndProlog!\n"
-
-#~ msgid "ERROR: Missing %%EndSetup!\n"
-#~ msgstr "ERROR: Fehlendes %%EndSetup!\n"
-
-#~ msgid ""
-#~ "ERROR: Missing device URI on command-line and no DEVICE_URI environment "
-#~ "variable!\n"
-#~ msgstr ""
-#~ "ERROR: Geräte-URI fehlt in der Befehlszeile und keine DEVICE_URI "
-#~ "Umgebungsvariable vorhanden!\n"
-
-#~ msgid "ERROR: Missing value on line %d of banner file!\n"
-#~ msgstr "ERROR: Wert fehlt in Zeile %d der Bannerdatei!\n"
-
-#~ msgid ""
-#~ "ERROR: Need a msgid line before any translation strings on line %d of %"
-#~ "s!\n"
-#~ msgstr ""
-#~ "ERROR: msgid-Zeile benötigt vor allen Übersetzungsstrings in Zeile %d von "
-#~ "%s!\n"
-
-#~ msgid "ERROR: No %%BoundingBox: comment in header!\n"
-#~ msgstr "ERROR: Keine %%BoundingBox: Kommentar im Header!\n"
-
-#~ msgid "ERROR: No %%Pages: comment in header!\n"
-#~ msgstr "ERROR: Keine %%Pages: Kommentar im Header!\n"
-
-#~ msgid ""
-#~ "ERROR: No device URI found in argv[0] or in DEVICE_URI environment "
-#~ "variable!\n"
-#~ msgstr ""
-#~ "ERROR: Keine Geräte-URI gefunden in „argv[0]“ oder in DEVICE_URI "
-#~ "Umgebungsvariable!\n"
-
-#~ msgid "ERROR: No fonts in charset file %s\n"
-#~ msgstr "ERROR: Keine Schriften in Zeichensatzdatei „%s“\n"
-
-#~ msgid "ERROR: No pages found!\n"
-#~ msgstr "ERROR: Keine Seiten gefunden!\n"
-
-#~ msgid "ERROR: Out of paper!\n"
-#~ msgstr "ERROR: Kein Papier mehr!\n"
-
-#~ msgid "ERROR: PRINTER environment variable not defined!\n"
-#~ msgstr "ERROR: DRUCKER: Umgebungsvariable nicht definiert!\n"
-
-#~ msgid "ERROR: Print file was not accepted (%s)!\n"
-#~ msgstr "ERROR: Druckdatei wurde nicht akzeptiert (%s)!\n"
-
-#~ msgid "ERROR: Printer not responding\n"
-#~ msgstr "ERROR: Drucker reagiert nicht\n"
-
-#~ msgid "ERROR: Printer not responding!\n"
-#~ msgstr "ERROR: Drucker reagiert nicht!\n"
-
-#~ msgid "ERROR: Printer sent unexpected EOF\n"
-#~ msgstr "ERROR: Drucker sendete unerwartet EOF\n"
-
-#~ msgid "ERROR: Remote host did not accept control file (%d)\n"
-#~ msgstr ""
-#~ "ERROR: Entfernter Host hat die Steuerungsdatei nicht akzeptiert (%d)\n"
-
-#~ msgid "ERROR: Remote host did not accept data file (%d)\n"
-#~ msgstr "ERROR: Entfernter Host hat Datendatei nicht akzeptiert (%d)\n"
-
-#~ msgid "ERROR: There was a timeout error while sending data to the printer\n"
-#~ msgstr ""
-#~ "ERROR: Beim Senden der Daten an den Drucker ist ein Fehler wegen "
-#~ "Zeitüberschreitung aufgetreten.\n"
-
-#~ msgid "ERROR: Unable to add file %d to job: %s\n"
-#~ msgstr ""
-#~ "ERROR: Datei „%d“ konnte nicht zu Druckauftrag hinzugefügt werden: %s\n"
-
-#~ msgid "ERROR: Unable to cancel job %d: %s\n"
-#~ msgstr "ERROR: Druckauftrag „%d“ konnte nicht abgebrochen werden: %s\n"
-
-#~ msgid "ERROR: Unable to copy PDF file"
-#~ msgstr "ERROR: PDF-Datei konnte nicht kopiert werden"
-
-#~ msgid "ERROR: Unable to create socket"
-#~ msgstr "ERROR: Socket konnte nicht erstellt werden"
-
-#~ msgid "ERROR: Unable to create temporary compressed print file: %s\n"
-#~ msgstr ""
-#~ "ERROR: Temporäre komprimierte Druckdatei konnte nicht erstellt werden: %"
-#~ "s\n"
-
-#~ msgid "ERROR: Unable to create temporary file"
-#~ msgstr "ERROR: Temporäre Datei konnte nicht erstellt werden"
-
-#~ msgid "ERROR: Unable to create temporary file - %s.\n"
-#~ msgstr "ERROR: Temporäre Datei konnte nicht erstellt werden – %s.\n"
-
-#~ msgid "ERROR: Unable to create temporary file: %s\n"
-#~ msgstr "ERROR: Temporäre Datei konnte nicht erstellt werden: %s.\n"
-
-#~ msgid "ERROR: Unable to exec pictwpstops: %s\n"
-#~ msgstr "ERROR: pictwpstops konnte nicht ausgeführt werden: %s\n"
-
-#~ msgid "ERROR: Unable to execute gs program"
-#~ msgstr "ERROR: gs-Programm konnte nicht ausgeführt werden"
-
-#~ msgid "ERROR: Unable to execute pdftops program"
-#~ msgstr "ERROR: pdftops-Programm konnte nicht ausgeführt werden"
-
-#~ msgid "ERROR: Unable to fork pictwpstops: %s\n"
-#~ msgstr "ERROR: Fork für pictwpstops konnte nicht ausgeführt werden: %s\n"
-
-#~ msgid "ERROR: Unable to get PAP request"
-#~ msgstr "ERROR: PAP-Anfrage konnte nicht empfangen werden"
-
-#~ msgid "ERROR: Unable to get PAP response"
-#~ msgstr "ERROR: PAP-Antwort konnte nicht empfangen werden"
-
-#~ msgid "ERROR: Unable to get PPD file for printer \"%s\" - %s.\n"
-#~ msgstr ""
-#~ "ERROR: PPD-Datei für Drucker „%s“ konnte nicht abgefragt werden – %s.\n"
-
-#~ msgid "ERROR: Unable to get default AppleTalk zone"
-#~ msgstr "ERROR: AppleTalk-Standardzone konnte nicht abgefragt werden"
-
-#~ msgid "ERROR: Unable to get job %d attributes (%s)!\n"
-#~ msgstr ""
-#~ "ERROR: Attribute für Druckauftrag „%d“ konnten nicht abgefragt werden (%"
-#~ "s)!\n"
-
-#~ msgid "ERROR: Unable to get printer status (%s)!\n"
-#~ msgstr "ERROR: Druckerstatus konnte nicht abgefragt werden (%s)!\n"
-
-#~ msgid "ERROR: Unable to locate printer '%s'!\n"
-#~ msgstr "ERROR: Drucker „%s“ konnte nicht gefunden werden!\n"
-
-#~ msgid "ERROR: Unable to look for PAP response"
-#~ msgstr "ERROR: Abfrage der PAP-Antwort nicht möglich"
-
-#~ msgid "ERROR: Unable to lookup AppleTalk printers"
-#~ msgstr "ERROR: Suche nach AppleTalk-Druckern nicht möglich"
-
-#~ msgid "ERROR: Unable to make AppleTalk address"
-#~ msgstr "ERROR: Erstellen der AppleTalk-Adresse nicht möglich"
-
-#~ msgid "ERROR: Unable to open \"%s\" - %s\n"
-#~ msgstr "ERROR: „%s“ konnte nicht geöffnet werden – %s\n"
-
-#~ msgid "ERROR: Unable to open %s: %s\n"
-#~ msgstr "ERROR: „%s“ konnte nicht geöffnet werden: %s\n"
-
-#~ msgid "ERROR: Unable to open banner file \"%s\" - %s\n"
-#~ msgstr "ERROR: Bannerdatei „%s“ konnte nicht geöffnet werden – %s\n"
-
-#~ msgid "ERROR: Unable to open device file \"%s\": %s\n"
-#~ msgstr "ERROR: Gerätedatei „%s“ konnte nicht geöffnet werden – %s\n"
-
-#~ msgid "ERROR: Unable to open file \"%s\" - %s\n"
-#~ msgstr "ERROR: Datei „%s“ konnte nicht geöffnet werden – %s\n"
-
-#~ msgid "ERROR: Unable to open file \"%s\": %s\n"
-#~ msgstr "ERROR: Datei „%s“ konnte nicht geöffnet werden: %s\n"
-
-#~ msgid "ERROR: Unable to open image file for printing!\n"
-#~ msgstr "ERROR: Bilddatei konnte nicht zum Drucken geöffnet werden!\n"
-
-#~ msgid "ERROR: Unable to open print file \"%s\": %s\n"
-#~ msgstr "ERROR: Druckdatei „%s“ konnte nicht geöffnet werden: %s\n"
-
-#~ msgid "ERROR: Unable to open print file %s - %s\n"
-#~ msgstr "ERROR: Druckdatei „%s“ konnte nicht geöffnet werden – %s\n"
-
-#~ msgid "ERROR: Unable to open print file %s: %s\n"
-#~ msgstr "ERROR: Druckdatei „%s“ konnte nicht geöffnet werden: %s\n"
-
-#~ msgid "ERROR: Unable to open temporary compressed print file: %s\n"
-#~ msgstr ""
-#~ "ERROR: Temporäre komprimierte Druckdatei konnte nicht geöffnet werden: %"
-#~ "s\n"
-
-#~ msgid "ERROR: Unable to open temporary file"
-#~ msgstr "ERROR: Temporäre Datei konnte nicht geöffnet werden"
-
-#~ msgid "ERROR: Unable to print %d text columns!\n"
-#~ msgstr "ERROR: %d Textspalten konnten nicht gedruckt werden!\n"
-
-#~ msgid "ERROR: Unable to print %dx%d text page!\n"
-#~ msgstr "ERROR: %dx%d Textseite konnte nicht gedruckt werden!\n"
-
-#~ msgid "ERROR: Unable to read print data"
-#~ msgstr "ERROR: Druckdaten konnten nicht gelesen werden"
-
-#~ msgid "ERROR: Unable to read print data!\n"
-#~ msgstr "ERROR: Druckdaten konnten nicht gelesen werden!\n"
-
-#~ msgid "ERROR: Unable to reserve port"
-#~ msgstr "ERROR: Anschluss konnte nicht reserviert werden"
-
-#~ msgid "ERROR: Unable to seek to offset %ld in file - %s\n"
-#~ msgstr ""
-#~ "ERROR: Nach dem Versatz „%ld“ in der Datei konnte nicht gesucht werden – %"
-#~ "s\n"
-
-#~ msgid "ERROR: Unable to seek to offset %lld in file - %s\n"
-#~ msgstr ""
-#~ "ERROR: Nach dem Versatz „%lld“ in der Datei konnte nicht gesucht werden – "
-#~ "%s\n"
-
-#~ msgid "ERROR: Unable to send LPD command"
-#~ msgstr "ERROR: LPD-Befehl konnte nicht gesendet werden"
-
-#~ msgid "ERROR: Unable to send PAP tickle request"
-#~ msgstr "ERROR: PAP-Rückkopplungsanfrage konnte nicht gesendet werden"
-
-#~ msgid "ERROR: Unable to send initial PAP send data request"
-#~ msgstr ""
-#~ "ERROR: Erste PAP-Anfrage zum Senden von Daten konnte nicht gesendet werden"
-
-#~ msgid "ERROR: Unable to send print data (%d)\n"
-#~ msgstr "ERROR: Druckdaten konnten nicht gesendet werden (%d)\n"
-
-#~ msgid "ERROR: Unable to send print data!\n"
-#~ msgstr "ERROR: Druckdaten konnten nicht gesendet werden!\n"
-
-#~ msgid "ERROR: Unable to send print file to printer"
-#~ msgstr "ERROR: Druckdatei konnte nicht an den Drucker gesendet werden"
-
-#~ msgid "ERROR: Unable to send trailing nul to printer"
-#~ msgstr ""
-#~ "ERROR: Nachfolgende Nullen konnten nicht an den Drucker gesendet werden"
-
-#~ msgid "ERROR: Unable to wait for pictwpstops: %s\n"
-#~ msgstr "ERROR: Warten auf pictwpstops nicht möglich: %s\n"
-
-#~ msgid "ERROR: Unable to write %d bytes to \"%s\": %s\n"
-#~ msgstr "ERROR: %d Byte konnten nicht auf „%s“ geschrieben werden: %s\n"
-
-#~ msgid "ERROR: Unable to write %d bytes to printer!\n"
-#~ msgstr "ERROR: %d Byte konnten nicht auf den Drucker geschrieben werden!\n"
-
-#~ msgid "ERROR: Unable to write control file"
-#~ msgstr "ERROR: Steuerungsdatei konnte nicht geschrieben werden"
-
-#~ msgid "ERROR: Unable to write print data"
-#~ msgstr "ERROR: Druckdaten konnten nicht geschrieben werden"
-
-#~ msgid "ERROR: Unable to write print data: %s\n"
-#~ msgstr "ERROR: Druckdaten konnten nicht geschrieben werden: %s\n"
-
-#~ msgid "ERROR: Unable to write raster data to driver!\n"
-#~ msgstr ""
-#~ "ERROR: Rasterdaten konnten nicht auf den Treiber geschrieben werden!\n"
-
-#~ msgid "ERROR: Unable to write to temporary file"
-#~ msgstr "ERROR: Temporäre Datei konnte nicht geschrieben werden"
-
-#~ msgid "ERROR: Unable to write uncompressed document data: %s\n"
-#~ msgstr ""
-#~ "ERROR: Unkomprimierte Dokumentdaten konnten nicht geschrieben werden: %s\n"
-
-#~ msgid "ERROR: Unexpected text on line %d of %s!\n"
-#~ msgstr "ERROR: Unerwarteter Text in Zeile %d von %s!\n"
-
-#~ msgid "ERROR: Unknown encryption option value \"%s\"!\n"
-#~ msgstr "ERROR: Unbekannter Verschlüsselungsoptionswert „%s“!\n"
-
-#~ msgid "ERROR: Unknown file order \"%s\"\n"
-#~ msgstr "ERROR: Unbekannte Dateianordnung „%s“\n"
-
-#~ msgid "ERROR: Unknown format character \"%c\"\n"
-#~ msgstr "ERROR: Unbekanntes Formatzeichen „%c“\n"
-
-#~ msgid "ERROR: Unknown message catalog format for \"%s\"!\n"
-#~ msgstr "ERROR: Unbekanntes Message-Catalog-Format für „%s“!\n"
-
-#~ msgid "ERROR: Unknown option \"%s\" with value \"%s\"!\n"
-#~ msgstr "ERROR: Unbekannte Option „%s“ mit Wert „%s“!\n"
-
-#~ msgid "ERROR: Unknown print mode \"%s\"\n"
-#~ msgstr "ERROR: Unbekannter Druckmodus „%s“\n"
-
-#~ msgid "ERROR: Unknown version option value \"%s\"!\n"
-#~ msgstr "ERROR: Unbekannter Versionsoptionswert „%s“!\n"
-
-#~ msgid "ERROR: Unsupported brightness value %s, using brightness=100!\n"
-#~ msgstr ""
-#~ "ERROR: Nicht unterstützter Helligkeitswert „%s“; „brightness=100“ "
-#~ "verwenden!\n"
-
-#~ msgid "ERROR: Unsupported gamma value %s, using gamma=1000!\n"
-#~ msgstr ""
-#~ "ERROR: Nicht unterstützter Gammawert „%s“; „gamma=1000“ verwenden!\n"
-
-#~ msgid "ERROR: Unsupported number-up value %d, using number-up=1!\n"
-#~ msgstr ""
-#~ "ERROR: Nicht unterstützter Number-Up-Wert „%d“; „number-up=1“ verwenden!\n"
-
-#~ msgid ""
-#~ "ERROR: Unsupported number-up-layout value %s, using number-up-"
-#~ "layout=lrtb!\n"
-#~ msgstr ""
-#~ "ERROR: Nicht unterstützter Number-Up-Layout-Wert „%s“; „number-up-"
-#~ "layout=lrtb“ verwenden!\n"
-
-#~ msgid "ERROR: Unsupported page-border value %s, using page-border=none!\n"
-#~ msgstr ""
-#~ "ERROR: Nicht unterstützter Seitenrandwert „%s“; „page-border=none“ "
-#~ "verwenden!\n"
-
-#~ msgid "ERROR: doc_printf overflow (%d bytes) detected, aborting!\n"
-#~ msgstr "ERROR: doc_printf-Overflow (%d Byte) festgestellt; abbrechen!\n"
-
-#~ msgid "ERROR: pdftops filter crashed on signal %d!\n"
-#~ msgstr "ERROR: pdftops-Filter fehlgeschlagen bei Signal „%d“!\n"
-
-#~ msgid "ERROR: pdftops filter exited with status %d!\n"
-#~ msgstr "ERROR: pdftops-Filter ausgestiegen mit Status „%d“!\n"
-
-#~ msgid "ERROR: pictwpstops exited on signal %d!\n"
-#~ msgstr "ERROR: pictwpstops-Filter ausgestiegen bei Signal „%d“!\n"
-
-#~ msgid "ERROR: pictwpstops exited with status %d!\n"
-#~ msgstr "ERROR: pictwpstops-Filter ausgestiegen mit Status „%d“!\n"
-
-#~ msgid ""
-#~ "ERROR: recoverable: Unable to connect to printer; will retry in 30 "
-#~ "seconds...\n"
-#~ msgstr ""
-#~ "ERROR: wiederherstellbar: Verbindung zum Drucker nicht möglich, erneuter "
-#~ "Versuch in 30 Sekunden …\n"
-
-#~ msgid "ERROR: select() failed"
-#~ msgstr "ERROR: Auswahl() fehlgeschlagen"
-
-#~ msgid "ERROR: unable to stat print file"
-#~ msgstr "ERROR: „stat“ für Druckdatei nicht möglich"
-
-#~ msgid "Empty PPD file!"
-#~ msgstr "Leere PPD-Datei!"
-
-#~ msgid "Error: need hostname after '-h' option!\n"
-#~ msgstr "Fehler: Hostname benötigt nach '-h'-Option!\n"
-
-#~ msgid "FAIL\n"
-#~ msgstr "FEHLER\n"
-
-#~ msgid ""
-#~ "File device URIs have been disabled! To enable, see the FileDevice "
-#~ "directive in \"%s/cupsd.conf\"."
-#~ msgstr ""
-#~ "Dateigeräte-URIs wurden deaktiviert! Infos zum Aktivieren finden Sie im "
-#~ "FileDevice-Verzeichnis unter „%s/cupsd.conf“."
-
-#~ msgid "Fuser temperature high!"
-#~ msgstr "Die Temperatur des Fixierers ist zu hoch!"
-
-#~ msgid "Fuser temperature low!"
-#~ msgstr "Die Temperatur des Fixierers ist zu niedrig!"
-
-#~ msgid "German FanFold"
-#~ msgstr "Deutsch Endlospapier"
-
-#~ msgid "German FanFold Legal"
-#~ msgstr "Deutsch Endlospapier (Brief)"
-
-#~ msgid "Got a printer-uri attribute but no job-id!"
-#~ msgstr "Drucker-URI-Attribute vorhanden, aber keine Druckauftrags-ID!"
-
-#~ msgid "INFO: AppleTalk disabled in System Preferences\n"
-#~ msgstr "INFO: AppleTalk wurde in den Systemeinstellungen deaktiviert.\n"
-
-#~ msgid "INFO: AppleTalk disabled in System Preferences.\n"
-#~ msgstr "INFO: AppleTalk wurde in den Systemeinstellungen deaktiviert.\n"
-
-#~ msgid "INFO: Canceling print job...\n"
-#~ msgstr "INFO: Druckauftrag abbrechen …\n"
-
-#~ msgid "INFO: Connected to printer...\n"
-#~ msgstr "INFO: Mit Drucker verbunden …\n"
-
-#~ msgid "INFO: Connecting to printer...\n"
-#~ msgstr "INFO: Mit Drucker verbinden …\n"
-
-#~ msgid "INFO: Control file sent successfully\n"
-#~ msgstr "INFO: Steuerungsdatei erfolgreich übertragen\n"
-
-#~ msgid "INFO: Data file sent successfully\n"
-#~ msgstr "INFO: Datendatei erfolgreich übertragen\n"
-
-#~ msgid "INFO: Formatting page %d...\n"
-#~ msgstr "INFO: Seite %d formatieren …\n"
-
-#~ msgid "INFO: Loading image file...\n"
-#~ msgstr "INFO: Bilddatei laden …\n"
-
-#~ msgid "INFO: Looking for printer...\n"
-#~ msgstr "INFO: Drucker suchen …\n"
-
-#~ msgid "INFO: Opening connection\n"
-#~ msgstr "INFO: Verbindung herstellen\n"
-
-#~ msgid "INFO: Print file sent, waiting for printer to finish...\n"
-#~ msgstr "INFO: Druckdatei gesendet, warten auf Abschließen des Druckers …\n"
-
-#~ msgid "INFO: Printer busy; will retry in 10 seconds...\n"
-#~ msgstr "INFO: Drucker ist ausgelastet, erneuter Versuch in 10 Sekunden …\n"
-
-#~ msgid "INFO: Printer busy; will retry in 30 seconds...\n"
-#~ msgstr "INFO: Drucker ist ausgelastet, erneuter Versuch in 30 Sekunden …\n"
-
-#~ msgid "INFO: Printer busy; will retry in 5 seconds...\n"
-#~ msgstr "INFO: Drucker ist ausgelastet, erneuter Versuch in 5 Sekunden …\n"
-
-#~ msgid "INFO: Printer does not support IPP/%d.%d, trying IPP/1.0...\n"
-#~ msgstr ""
-#~ "INFO: Drucker unterstützt IPP/%d.%d nicht, erneuter Versuch mit IPP/1.0 "
-#~ "…\n"
-
-#~ msgid "INFO: Printer is busy; will retry in 5 seconds...\n"
-#~ msgstr "INFO: Drucker ausgelastet, erneuter Versuch in 5 Sekunden …\n"
-
-#~ msgid "INFO: Printer is currently off-line.\n"
-#~ msgstr "INFO: Drucker ist derzeit offline.\n"
-
-#~ msgid "INFO: Printer is currently offline.\n"
-#~ msgstr "INFO: Drucker ist derzeit offline.\n"
-
-#~ msgid "INFO: Printer is now online.\n"
-#~ msgstr "INFO: Drucker ist jetzt online.\n"
-
-#~ msgid "INFO: Printer is offline.\n"
-#~ msgstr "INFO: Drucker ist offline.\n"
-
-#~ msgid "INFO: Printer not connected; will retry in 30 seconds...\n"
-#~ msgstr "INFO: Drucker nicht verbunden, erneuter Versuch in 30 Sekunden …\n"
-
-#~ msgid "INFO: Printing page %d, %d%% complete...\n"
-#~ msgstr "INFO: Seite %d drucken, %d %% abgeschlossen …\n"
-
-#~ msgid "INFO: Printing page %d...\n"
-#~ msgstr "INFO: Seite %d drucken …\n"
-
-#~ msgid "INFO: Ready to print.\n"
-#~ msgstr "INFO: Bereit zum Drucken\n"
-
-#~ msgid "INFO: Sending control file (%lu bytes)\n"
-#~ msgstr "INFO: Steuerungsdatei senden (%lu Byte)\n"
-
-#~ msgid "INFO: Sending control file (%u bytes)\n"
-#~ msgstr "INFO: Steuerungsdatei senden (%u Byte)\n"
-
-#~ msgid "INFO: Sending data\n"
-#~ msgstr "INFO: Daten senden\n"
-
-#~ msgid "INFO: Sending data file (%ld bytes)\n"
-#~ msgstr "INFO: Datendatei senden (%ld Byte)\n"
-
-#~ msgid "INFO: Sending data file (%lld bytes)\n"
-#~ msgstr "INFO: Datendatei senden (%lld Byte)\n"
-
-#~ msgid "INFO: Sending print data...\n"
-#~ msgstr "INFO: Druckdaten senden …\n"
-
-#~ msgid "INFO: Sent print file, %ld bytes...\n"
-#~ msgstr "INFO: Druckdatei gesendet, %ld Byte …\n"
-
-#~ msgid "INFO: Sent print file, %lld bytes...\n"
-#~ msgstr "INFO: Druckdatei gesendet, %lld Byte …\n"
-
-#~ msgid "INFO: Spooling LPR job, %.0f%% complete...\n"
-#~ msgstr "INFO: LPR-Druckauftrag aufzeichnen, %.0f %% abgeschlossen …\n"
-
-#~ msgid ""
-#~ "INFO: Unable to contact printer, queuing on next printer in class...\n"
-#~ msgstr ""
-#~ "INFO: Verbindung zum Drucker nicht möglich; an den nächsten Drucker der "
-#~ "Klasse senden …\n"
-
-#~ msgid "INFO: Using default AppleTalk zone \"%s\"\n"
-#~ msgstr "INFO: Standard-AppleTalk-Zone „%s“ verwenden\n"
-
-#~ msgid "INFO: Waiting for job to complete...\n"
-#~ msgstr "INFO: Warten, bis der Druckauftrag agbeschlossen ist …\n"
-
-#~ msgid "INFO: Waiting for printer to become available...\n"
-#~ msgstr "INFO: Warten, bis der Drucker verfügbar ist …\n"
-
-#~ msgid "ISO B0"
-#~ msgstr "ISO B0"
-
-#~ msgid "ISO B1"
-#~ msgstr "ISO B1"
-
-#~ msgid "ISO B10"
-#~ msgstr "ISO B10"
-
-#~ msgid "ISO B2"
-#~ msgstr "ISO B2"
-
-#~ msgid "ISO B3"
-#~ msgstr "ISO B3"
-
-#~ msgid "ISO B4"
-#~ msgstr "ISO B4"
-
-#~ msgid "ISO B4 Envelope"
-#~ msgstr "ISO B4 Umschlag"
-
-#~ msgid "ISO B5"
-#~ msgstr "ISO B5"
-
-#~ msgid "ISO B5 (Oversize)"
-#~ msgstr "ISO B5 (Übergröße)"
-
-#~ msgid "ISO B5 Envelope"
-#~ msgstr "ISO B5 Umschlag"
-
-#~ msgid "ISO B6"
-#~ msgstr "ISO B6"
-
-#~ msgid "ISO B6 Envelope"
-#~ msgstr "ISO B6 Umschlag"
-
-#~ msgid "ISO B7"
-#~ msgstr "ISO B7"
-
-#~ msgid "ISO B8"
-#~ msgstr "ISO B8"
-
-#~ msgid "ISO B9"
-#~ msgstr "ISO B9"
-
-#~ msgid "Ink/toner almost empty."
-#~ msgstr "Tinte/Toner fast leer."
-
-#~ msgid "Ink/toner empty!"
-#~ msgstr "Tinte/Toner leer!"
-
-#~ msgid "Ink/toner waste bin almost full."
-#~ msgstr "Tinten/Toner-Abfallbehälter fast voll."
-
-#~ msgid "Ink/toner waste bin full!"
-#~ msgstr "Tinten/Toner-Abfallbehälter voll!"
-
-#~ msgid "Interlock open."
-#~ msgstr "Die Verriegelung ist offen."
-
-#~ msgid "Invite Envelope"
-#~ msgstr "Einladung Umschlag"
-
-#~ msgid "Italian Envelope"
-#~ msgstr "Italienisch Umschlag"
-
-#~ msgid "Job #%d cannot be restarted - no files!"
-#~ msgstr ""
-#~ "Druckauftrag Nr. %d kann nicht neu gestartet werden – keine Dateien "
-#~ "vorhanden!"
-
-#~ msgid "Job #%d does not exist!"
-#~ msgstr "Druckauftrag Nr. %d existiert nicht!"
-
-#~ msgid "Job #%d is finished and cannot be altered!"
-#~ msgstr ""
-#~ "Druckauftrag Nr. %d ist abgeschlossen und kann nicht geändert werden!"
-
-#~ msgid "Job #%d is not complete!"
-#~ msgstr "Druckauftrag Nr. %d ist nicht abgeschlossen!"
-
-#~ msgid "Job #%d is not held for authentication!"
-#~ msgstr "Druckauftrag Nr. %d benötigt keine Authentifizierung!"
-
-#~ msgid "Job #%d is not held!"
-#~ msgstr "Druckauftrag Nr. %d wird nicht gehalten!"
-
-#~ msgid "Job #%s does not exist!"
-#~ msgstr "Druckauftrag Nr. %s existiert nicht!"
-
-#~ msgid "Job %d not found!"
-#~ msgstr "Druckauftrag %d wurde nicht gefunden!"
-
-#~ msgid "Job subscriptions cannot be renewed!"
-#~ msgstr "Druckauftrags-Subskription kann nicht erneuert werden."
-
-#~ msgid "Kaku2 Envelope"
-#~ msgstr "Kaku2 Umschlag"
-
-#~ msgid "Kaku3 Envelope"
-#~ msgstr "Kaku3 Umschlag"
-
-#~ msgid "Language \"%s\" not supported!"
-#~ msgstr "Sprache „%s“ nicht unterstützt!"
-
-#~ msgid "Media jam!"
-#~ msgstr "Papierstau im Medienfach!"
-
-#~ msgid "Media tray almost empty."
-#~ msgstr "Das Medienfach ist fast leer."
-
-#~ msgid "Media tray empty!"
-#~ msgstr "Das Medienfach ist leer!"
-
-#~ msgid "Media tray missing!"
-#~ msgstr "Das Medienfach fehlt!"
-
-#~ msgid "Media tray needs to be filled."
-#~ msgstr "Das Medienfach muss aufgefüllt werden."
-
-#~ msgid "Missing document-number attribute!"
-#~ msgstr "Attribut „document-number“ fehlt!"
-
-#~ msgid "Missing double quote on line %d!"
-#~ msgstr "Doppeltes Anführungszeichen in Zeile %d fehlt!"
-
-#~ msgid "Missing form variable!"
-#~ msgstr "Formvariable fehlt!"
-
-#~ msgid "Missing notify-subscription-ids attribute!"
-#~ msgstr "Attribut „notify-subscription-ids“ fehlt!"
-
-#~ msgid "Missing requesting-user-name attribute!"
-#~ msgstr "Attribut „requesting-user-name“ fehlt!"
-
-#~ msgid "Missing required attributes!"
-#~ msgstr "Benötigte Attribute fehlen!"
-
-#~ msgid "Missing value on line %d!"
-#~ msgstr "Wert in Zeile %d fehlt!"
-
-#~ msgid ""
-#~ "Model: name = %s\n"
-#~ " natural_language = %s\n"
-#~ " make-and-model = %s\n"
-#~ " device-id = %s\n"
-#~ msgstr ""
-#~ "Modell: Name = %s\n"
-#~ " Standardsprache = %s\n"
-#~ " Hersteller und Modell = %s\n"
-#~ " Geräte-ID = %s\n"
-
-#~ msgid "Monarch"
-#~ msgstr "Monarch"
-
-#~ msgid "Monarch Envelope"
-#~ msgstr "US Monarch Umschlag"
-
-#~ msgid "NOTICE: Print file accepted - job ID %d.\n"
-#~ msgstr "NOTICE: Druckdatei akzeptiert – Druckauftrags-ID %d.\n"
-
-#~ msgid "NOTICE: Print file accepted - job ID unknown.\n"
-#~ msgstr "NOTICE: Druckdatei akzeptiert – Druckauftrags-ID unbekannt.\n"
-
-#~ msgid "No PPD name!"
-#~ msgstr "Kein PPD-Name!"
-
-#~ msgid "No Windows printer drivers are installed!"
-#~ msgstr "Es sind keine Windows-Druckertreiber installiert!"
-
-#~ msgid "No active jobs on %s!"
-#~ msgstr "Keine aktiven Druckaufträge auf %s!"
-
-#~ msgid "No attributes in request!"
-#~ msgstr "Keine Attribute abgerufen!"
-
-#~ msgid "No authentication information provided!"
-#~ msgstr "Keine Authentifizierungs-Informationen übergeben!"
-
-#~ msgid "No default printer"
-#~ msgstr "Kein Standarddrucker"
-
-#~ msgid "No file!?!"
-#~ msgstr "Keine Datei!?!"
-
-#~ msgid "No modification time!"
-#~ msgstr "Kein Änderungsdatum!"
-
-#~ msgid "No printer name!"
-#~ msgstr "Kein Druckername!"
-
-#~ msgid "No printer-uri found for class!"
-#~ msgstr "Keine Drucker-URI gefunden für Klasse!"
-
-#~ msgid "No printer-uri found!"
-#~ msgstr "Keine Drucker-URI gefunden!"
-
-#~ msgid "No printer-uri in request!"
-#~ msgstr "Keine Drucker-URI abgerufen!"
-
-#~ msgid "No subscription attributes in request!"
-#~ msgstr "Keine Subskriptionsattribute abgerufen!"
-
-#~ msgid "OPC almost at end-of-life."
-#~ msgstr "Die Bildtrommel (OPC) muss bald ausgetauscht werden."
-
-#~ msgid "OPC at end-of-life!"
-#~ msgstr "Die Bildtrommel (OPC) muss ausgetauscht werden!"
-
-#~ msgid "Out of toner!"
-#~ msgstr "Der Toner ist leer!"
-
-#~ msgid "Output bin almost full."
-#~ msgstr "Das Ausgabefach ist fast voll."
-
-#~ msgid "Output bin full!"
-#~ msgstr "Das Ausgabefach ist voll!"
-
-#~ msgid "Output for printer %s is sent to %s\n"
-#~ msgstr "Ausgabe für Drucker „%s“ wird an „%s“ gesendet\n"
-
-#~ msgid "Output for printer %s is sent to remote printer %s on %s\n"
-#~ msgstr ""
-#~ "Ausgabe für Drucker „%s“ wird an den entfernten Drucker „%s“ auf „%s“ "
-#~ "gesendet\n"
-
-#~ msgid "Output for printer %s/%s is sent to %s\n"
-#~ msgstr "Ausgabe für Drucker „%s/%s“ wird an „%s“ gesendet\n"
-
-#~ msgid "Output for printer %s/%s is sent to remote printer %s on %s\n"
-#~ msgstr ""
-#~ "Ausgabe für Drucker „%s/%s“ wird an den entfernten Drucker „%s“ auf „%s“ "
-#~ "gesendet\n"
-
-#~ msgid "Output tray missing!"
-#~ msgstr "Das Ausgabefach fehlt!"
-
-#~ msgid "PASS\n"
-#~ msgstr "PASS\n"
-
-#~ msgid "PRC1 Envelope"
-#~ msgstr "PRC1 Umschlag"
-
-#~ msgid "PRC10 Envelope"
-#~ msgstr "PRC10 Umschlag"
-
-#~ msgid "PRC2 Envelope"
-#~ msgstr "PRC2 Umschlag"
-
-#~ msgid "PRC3 Envelope"
-#~ msgstr "PRC3 Umschlag"
-
-#~ msgid "PRC32K (Oversize)"
-#~ msgstr "PRC32K (Übergröße)"
-
-#~ msgid "PRC4 Envelope"
-#~ msgstr "PRC4 Umschlag"
-
-#~ msgid "PRC5 Envelope"
-#~ msgstr "PRC5 Umschlag"
-
-#~ msgid "PRC6 Envelope"
-#~ msgstr "PRC6 Umschlag"
-
-#~ msgid "PRC7 Envelope"
-#~ msgstr "PRC7 Umschlag"
-
-#~ msgid "PRC8 Envelope"
-#~ msgstr "PRC8 Umschlag"
-
-#~ msgid "PRC9 Envelope"
-#~ msgstr "PRC9 Umschlag"
-
-#~ msgid "Personal Envelope"
-#~ msgstr "Persönlicher Umschlag"
-
-#~ msgid "Printer offline."
-#~ msgstr "Der Drucker ist offline."
-
-#~ msgid "Rank Owner Job File(s) Total Size\n"
-#~ msgstr ""
-#~ "Rang Eigentümer Druckauftrag Datei(en) "
-#~ "Gesamtgröße\n"
-
-#~ msgid ""
-#~ "Rank Owner Pri Job Files Total Size\n"
-#~ msgstr ""
-#~ "Rang Eigentümer Druckauftrag Dateien "
-#~ "Gesamtgröße\n"
-
-#~ msgid "Running command: %s %s -N -A %s -c '%s'\n"
-#~ msgstr "Befehl ausführen: %s %s -N -A %s -c '%s'\n"
-
-#~ msgid "SCSI Printer"
-#~ msgstr "SCSI-Drucker"
-
-#~ msgid "Tabloid (Oversize)"
-#~ msgstr "US Tabloid (Übergröße)"
-
-#~ msgid "The notify-user-data value is too large (%d > 63 octets)!"
-#~ msgstr "Der Wert für „notify-user-data“ ist zu groß (%d > 63 Oktetts)!"
-
-#~ msgid "The printer or class is not shared!"
-#~ msgstr "Der Drucker oder die Klasse sind nicht freigegeben!"
-
-#~ msgid "The printer or class was not found."
-#~ msgstr "Der Drucker oder die Klasse wurden nicht gefunden!"
-
-#~ msgid "The printer-uri attribute is required!"
-#~ msgstr "Das Drucker-URI-Attribut wird benötigt!"
-
-#~ msgid "Toner low."
-#~ msgstr "Wenig Toner."
-
-#~ msgid "Too many job-sheets values (%d > 2)!"
-#~ msgstr "Zu viele job-sheets-Werte (%d > 2)!"
-
-#~ msgid "Too many printer-state-reasons values (%d > %d)!"
-#~ msgstr "Zu viele printer-state-reasons-Werte (%d > %d)!"
-
-#~ msgid "US Executive"
-#~ msgstr "US Executive"
-
-#~ msgid "US Fanfold"
-#~ msgstr "US Endlospapier"
-
-#~ msgid "US Legal (Oversize)"
-#~ msgstr "US Lang (Übergröße)"
-
-#~ msgid "US Letter (Oversize)"
-#~ msgstr "US Brief (Übergröße)"
-
-#~ msgid "US Letter (Small)"
-#~ msgstr "US Brief (klein)"
-
-#~ msgid "Unable to add job for destination \"%s\"!"
-#~ msgstr "Druckauftrag für das Ziel „%s“ konnte nicht hinzugefügt werden!"
-
-#~ msgid "Unable to allocate memory for file types!"
-#~ msgstr "Der Speicher für die Dateitypen konnte nicht zugeordnet werden."
-
-#~ msgid "Unable to copy 64-bit CUPS printer driver files (%d)!"
-#~ msgstr ""
-#~ "64-Bit CUPS-Druckertreiberdateien konnten nicht kopiert werden (%d)!"
-
-#~ msgid "Unable to copy 64-bit Windows printer driver files (%d)!"
-#~ msgstr ""
-#~ "64-Bit Windows-Druckertreiberdateien konnten nicht kopiert werden (%d)!"
-
-#~ msgid "Unable to copy CUPS printer driver files (%d)!"
-#~ msgstr "CUPS-Druckertreiberdateien konnten nicht kopiert werden (%d)!"
-
-#~ msgid "Unable to copy PPD file - %s!"
-#~ msgstr "PPD-Datei konnte nicht kopiert werden – %s!"
-
-#~ msgid "Unable to copy PPD file!"
-#~ msgstr "PPD-Datei konnte nicht kopiert werden!"
-
-#~ msgid "Unable to copy Windows 2000 printer driver files (%d)!"
-#~ msgstr ""
-#~ "Windows 2000 Druckertreiberdateien konnten nicht kopiert werden (%d)!"
-
-#~ msgid "Unable to copy Windows 9x printer driver files (%d)!"
-#~ msgstr "Windows 9x Druckertreiberdateien konnten nicht kopiert werden (%d)!"
-
-#~ msgid "Unable to copy interface script - %s!"
-#~ msgstr "Schnittstellenskript konnte nicht kopiert werden – %s!"
-
-#~ msgid "Unable to create printer-uri!"
-#~ msgstr "Drucker-URI konnte nicht erstellt werden!"
-
-#~ msgid "Unable to edit cupsd.conf files larger than 1MB!"
-#~ msgstr ""
-#~ "„cupsd.conf“-Dateien größer als 1 MB können nicht bearbeitet werden!"
-
-#~ msgid "Unable to find destination for job!"
-#~ msgstr "Ziel für den Druckauftrag konnte nicht gefunden werden!"
-
-#~ msgid "Unable to find printer!\n"
-#~ msgstr "Drucker konnte nicht gefunden werden!\n"
-
-#~ msgid "Unable to install Windows 2000 printer driver files (%d)!"
-#~ msgstr ""
-#~ "Windows 2000 Druckertreiberdateien konnten nicht installiert werden (%d)!"
-
-#~ msgid "Unable to install Windows 9x printer driver files (%d)!"
-#~ msgstr ""
-#~ "Windows 9x Druckertreiberdateien konnten nicht installiert werden (%d)!"
-
-#~ msgid "Unable to open document %d in job %d!"
-#~ msgstr ""
-#~ "Das Dokument „%d“ in Druckauftrag „%d“ konnte nicht geöffnet werden!"
-
-#~ msgid "Unable to run \"%s\": %s\n"
-#~ msgstr "„%s“ konnte nicht ausgeführt werden: %s\n"
-
-#~ msgid "Unable to send command to printer driver!"
-#~ msgstr "Befehl konnte nicht an den Druckertreiber gesendet werden!"
-
-#~ msgid "Unable to set Windows printer driver (%d)!"
-#~ msgstr "Windows-Druckertreiber konnte nicht festgelegt werden (%d)!"
-
-#~ msgid "Unable to use legacy USB class driver!\n"
-#~ msgstr "Alte USB-Klasse-Treiber konnten nicht verwendet werden!\n"
-
-#~ msgid "Unknown printer error (%s)!"
-#~ msgstr "Unbekannter Druckerfehler (%s)!"
-
-#~ msgid "Unsupported character set \"%s\"!"
-#~ msgstr "Zeichensatz „%s“ nicht unterstützt!"
-
-#~ msgid "Unsupported compression \"%s\"!"
-#~ msgstr "Komprimierung „%s“ nicht unterstützt!"
-
-#~ msgid "Unsupported compression attribute %s!"
-#~ msgstr "Komprimierungsattribut „%s“ nicht unterstützt!"
-
-#~ msgid "Unsupported format \"%s\"!"
-#~ msgstr "Format „%s“ nicht unterstützt!"
-
-#~ msgid "Unsupported format '%s'!"
-#~ msgstr "Format „%s“ nicht unterstützt!"
-
-#~ msgid "Unsupported format '%s/%s'!"
-#~ msgstr "Format „%s/%s“ nicht unterstützt!"
-
-#~ msgid ""
-#~ "Usage:\n"
-#~ "\n"
-#~ " lpadmin [-h server] -d destination\n"
-#~ " lpadmin [-h server] -x destination\n"
-#~ " lpadmin [-h server] -p printer [-c add-class] [-i interface] [-m "
-#~ "model]\n"
-#~ " [-r remove-class] [-v device] [-D description]\n"
-#~ " [-P ppd-file] [-o name=value]\n"
-#~ " [-u allow:user,user] [-u deny:user,user]\n"
-#~ "\n"
-#~ msgstr ""
-#~ "Usage:\n"
-#~ "\n"
-#~ " lpadmin [-h server] -d destination\n"
-#~ " lpadmin [-h server] -x destination\n"
-#~ " lpadmin [-h server] -p printer [-c add-class] [-i interface] [-m "
-#~ "model]\n"
-#~ " [-r remove-class] [-v device] [-D description]\n"
-#~ " [-P ppd-file] [-o name=value]\n"
-#~ " [-u allow:user,user] [-u deny:user,user]\n"
-#~ "\n"
-
-#~ msgid "Usage: %s job user title copies options [filename]\n"
-#~ msgstr "Usage: %s job user title copies options [filename]\n"
-
-#~ msgid "Usage: %s job-id user title copies options [file]\n"
-#~ msgstr "Usage: %s job-id user title copies options [file]\n"
-
-#~ msgid "Usage: %s job-id user title copies options file\n"
-#~ msgstr "Usage: %s job-id user title copies options file\n"
-
-#~ msgid ""
-#~ "Usage: convert [ options ]\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ " -f filename Set file to be converted (otherwise stdin)\n"
-#~ " -o filename Set file to be generated (otherwise stdout)\n"
-#~ " -i mime/type Set input MIME type (otherwise auto-typed)\n"
-#~ " -j mime/type Set output MIME type (otherwise application/pdf)\n"
-#~ " -P filename.ppd Set PPD file\n"
-#~ " -a 'name=value ...' Set option(s)\n"
-#~ " -U username Set username for job\n"
-#~ " -J title Set title\n"
-#~ " -c copies Set number of copies\n"
-#~ " -u Remove the PPD file when finished\n"
-#~ " -D Remove the input file when finished\n"
-#~ msgstr ""
-#~ "Usage: convert [ options ]\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ " -f filename Set file to be converted (otherwise stdin)\n"
-#~ " -o filename Set file to be generated (otherwise stdout)\n"
-#~ " -i mime/type Set input MIME type (otherwise auto-typed)\n"
-#~ " -j mime/type Set output MIME type (otherwise application/pdf)\n"
-#~ " -P filename.ppd Set PPD file\n"
-#~ " -a 'name=value ...' Set option(s)\n"
-#~ " -U username Set username for job\n"
-#~ " -J title Set title\n"
-#~ " -c copies Set number of copies\n"
-#~ " -u Remove the PPD file when finished\n"
-#~ " -D Remove the input file when finished\n"
-
-#~ msgid ""
-#~ "Usage: cupsaddsmb [options] printer1 ... printerN\n"
-#~ " cupsaddsmb [options] -a\n"
-#~ "\n"
-#~ "Options:\n"
-#~ " -E Encrypt the connection to the server\n"
-#~ " -H samba-server Use the named SAMBA server\n"
-#~ " -U samba-user Authenticate using the named SAMBA user\n"
-#~ " -a Export all printers\n"
-#~ " -h cups-server Use the named CUPS server\n"
-#~ " -v Be verbose (show commands)\n"
-#~ msgstr ""
-#~ "Usage: cupsaddsmb [options] printer1 ... printerN\n"
-#~ " cupsaddsmb [options] -a\n"
-#~ "\n"
-#~ "Options:\n"
-#~ " -E Encrypt the connection to the server\n"
-#~ " -H samba-server Use the named SAMBA server\n"
-#~ " -U samba-user Authenticate using the named SAMBA user\n"
-#~ " -a Export all printers\n"
-#~ " -h cups-server Use the named CUPS server\n"
-#~ " -v Be verbose (show commands)\n"
-
-#~ msgid ""
-#~ "Usage: cupsctl [options] [param=value ... paramN=valueN]\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ " -E Enable encryption\n"
-#~ " -U username Specify username\n"
-#~ " -h server[:port] Specify server address\n"
-#~ "\n"
-#~ " --[no-]debug-logging Turn debug logging on/off\n"
-#~ " --[no-]remote-admin Turn remote administration on/off\n"
-#~ " --[no-]remote-any Allow/prevent access from the Internet\n"
-#~ " --[no-]remote-printers Show/hide remote printers\n"
-#~ " --[no-]share-printers Turn printer sharing on/off\n"
-#~ " --[no-]user-cancel-any Allow/prevent users to cancel any job\n"
-#~ msgstr ""
-#~ "Usage: cupsctl [options] [param=value ... paramN=valueN]\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ " -E Enable encryption\n"
-#~ " -U username Specify username\n"
-#~ " -h server[:port] Specify server address\n"
-#~ "\n"
-#~ " --[no-]debug-logging Turn debug logging on/off\n"
-#~ " --[no-]remote-admin Turn remote administration on/off\n"
-#~ " --[no-]remote-any Allow/prevent access from the Internet\n"
-#~ " --[no-]remote-printers Show/hide remote printers\n"
-#~ " --[no-]share-printers Turn printer sharing on/off\n"
-#~ " --[no-]user-cancel-any Allow/prevent users to cancel any job\n"
-
-#~ msgid ""
-#~ "Usage: cupsd [-c config-file] [-f] [-F] [-h] [-l]\n"
-#~ "\n"
-#~ "-c config-file Load alternate configuration file\n"
-#~ "-f Run in the foreground\n"
-#~ "-F Run in the foreground but detach\n"
-#~ "-h Show this usage message\n"
-#~ "-l Run cupsd from launchd(8)\n"
-#~ msgstr ""
-#~ "Usage: cupsd [-c config-file] [-f] [-F] [-h] [-l]\n"
-#~ "\n"
-#~ "-c config-file Load alternate configuration file\n"
-#~ "-f Run in the foreground\n"
-#~ "-F Run in the foreground but detach\n"
-#~ "-h Show this usage message\n"
-#~ "-l Run cupsd from launchd(8)\n"
-
-#~ msgid ""
-#~ "Usage: cupsfilter -m mime/type [ options ] filename\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ " -c cupsd.conf Set cupsd.conf file to use\n"
-#~ " -j job-id[,N] Filter file N from the specified job (default is file "
-#~ "1)\n"
-#~ " -n copies Set number of copies\n"
-#~ " -o name=value Set option(s)\n"
-#~ " -p filename.ppd Set PPD file\n"
-#~ " -t title Set title\n"
-#~ msgstr ""
-#~ "Usage: cupsfilter -m mime/type [ options ] filename\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ " -c cupsd.conf Set cupsd.conf file to use\n"
-#~ " -j job-id[,N] Filter file N from the specified job (default is file "
-#~ "1)\n"
-#~ " -n copies Set number of copies\n"
-#~ " -o name=value Set option(s)\n"
-#~ " -p filename.ppd Set PPD file\n"
-#~ " -t title Set title\n"
-
-#~ msgid ""
-#~ "Usage: cupstestdsc [options] filename.ps [... filename.ps]\n"
-#~ " cupstestdsc [options] -\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ " -h Show program usage\n"
-#~ "\n"
-#~ " Note: this program only validates the DSC comments, not the "
-#~ "PostScript itself.\n"
-#~ msgstr ""
-#~ "Usage: cupstestdsc [options] filename.ps [... filename.ps]\n"
-#~ " cupstestdsc [options] -\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ " -h Show program usage\n"
-#~ "\n"
-#~ " Note: this program only validates the DSC comments, not the "
-#~ "PostScript itself.\n"
-
-#~ msgid ""
-#~ "Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]\n"
-#~ " program | cupstestppd [options] -\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ " -R root-directory Set alternate root\n"
-#~ " -W {all,none,constraints,defaults,duplex,filters,translations}\n"
-#~ " Issue warnings instead of errors\n"
-#~ " -q Run silently\n"
-#~ " -r Use 'relaxed' open mode\n"
-#~ " -v Be slightly verbose\n"
-#~ " -vv Be very verbose\n"
-#~ msgstr ""
-#~ "Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]\n"
-#~ " program | cupstestppd [options] -\n"
-#~ "\n"
-#~ "Options:\n"
-#~ "\n"
-#~ " -R root-directory Set alternate root\n"
-#~ " -W {all,none,constraints,defaults,duplex,filters,translations}\n"
-#~ " Issue warnings instead of errors\n"
-#~ " -q Run silently\n"
-#~ " -r Use 'relaxed' open mode\n"
-#~ " -v Be slightly verbose\n"
-#~ " -vv Be very verbose\n"
-
-#~ msgid "Usage: lpmove job/src dest\n"
-#~ msgstr "Usage: lpmove job/src dest\n"
-
-#~ msgid ""
-#~ "Usage: lpoptions [-h server] [-E] -d printer\n"
-#~ " lpoptions [-h server] [-E] [-p printer] -l\n"
-#~ " lpoptions [-h server] [-E] -p printer -o option[=value] ...\n"
-#~ " lpoptions [-h server] [-E] -x printer\n"
-#~ msgstr ""
-#~ "Usage: lpoptions [-h server] [-E] -d printer\n"
-#~ " lpoptions [-h server] [-E] [-p printer] -l\n"
-#~ " lpoptions [-h server] [-E] -p printer -o option[=value] ...\n"
-#~ " lpoptions [-h server] [-E] -x printer\n"
-
-#~ msgid "Usage: lppasswd [-g groupname]\n"
-#~ msgstr "Usage: lppasswd [-g groupname]\n"
-
-#~ msgid ""
-#~ "Usage: lppasswd [-g groupname] [username]\n"
-#~ " lppasswd [-g groupname] -a [username]\n"
-#~ " lppasswd [-g groupname] -x [username]\n"
-#~ msgstr ""
-#~ "Usage: lppasswd [-g groupname] [username]\n"
-#~ " lppasswd [-g groupname] -a [username]\n"
-#~ " lppasswd [-g groupname] -x [username]\n"
-
-#~ msgid ""
-#~ "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
-#~ msgstr ""
-#~ "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
-
-#~ msgid ""
-#~ "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]\n"
-#~ "Options:\n"
-#~ " -D name=value Set named variable to value.\n"
-#~ " -I include-dir Add include directory to search path.\n"
-#~ " -c catalog.po Load the specified message catalog.\n"
-#~ " -d output-dir Specify the output directory.\n"
-#~ " -l lang[,lang,...] Specify the output language(s) (locale).\n"
-#~ " -m Use the ModelName value as the filename.\n"
-#~ " -t Test PPDs instead of generating them.\n"
-#~ " -v Be verbose (more v's for more verbosity).\n"
-#~ " -z Compress PPD files using GNU zip.\n"
-#~ " --cr End lines with CR (Mac OS 9).\n"
-#~ " --crlf End lines with CR + LF (Windows).\n"
-#~ " --lf End lines with LF (UNIX/Linux/Mac OS X).\n"
-#~ msgstr ""
-#~ "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]\n"
-#~ "Options:\n"
-#~ " -D name=value Set named variable to value.\n"
-#~ " -I include-dir Add include directory to search path.\n"
-#~ " -c catalog.po Load the specified message catalog.\n"
-#~ " -d output-dir Specify the output directory.\n"
-#~ " -l lang[,lang,...] Specify the output language(s) (locale).\n"
-#~ " -m Use the ModelName value as the filename.\n"
-#~ " -t Test PPDs instead of generating them.\n"
-#~ " -v Be verbose (more v's for more verbosity).\n"
-#~ " -z Compress PPD files using GNU zip.\n"
-#~ " --cr End lines with CR (Mac OS 9).\n"
-#~ " --crlf End lines with CR + LF (Windows).\n"
-#~ " --lf End lines with LF (UNIX/Linux/Mac OS X).\n"
-
-#~ msgid ""
-#~ "Usage: ppdhtml [options] filename.drv >filename.html\n"
-#~ " -D name=value Set named variable to value.\n"
-#~ "Options:\n"
-#~ " -I include-dir Add include directory to search path.\n"
-#~ msgstr ""
-#~ "Usage: ppdhtml [options] filename.drv >filename.html\n"
-#~ " -D name=value Set named variable to value.\n"
-#~ "Options:\n"
-#~ " -I include-dir Add include directory to search path.\n"
-
-#~ msgid ""
-#~ "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]\n"
-#~ "Options:\n"
-#~ " -I include-dir\n"
-#~ " -o filename.drv\n"
-#~ msgstr ""
-#~ "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]\n"
-#~ "Options:\n"
-#~ " -I include-dir\n"
-#~ " -o filename.drv\n"
-
-#~ msgid ""
-#~ "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]\n"
-#~ "Options:\n"
-#~ " -o filename.ppd[.gz]\n"
-#~ msgstr ""
-#~ "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]\n"
-#~ "Options:\n"
-#~ " -o filename.ppd[.gz]\n"
-
-#~ msgid ""
-#~ "Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]\n"
-#~ "Options:\n"
-#~ " -D name=value Set named variable to value.\n"
-#~ " -I include-dir Add include directory to search path.\n"
-#~ " -v Be verbose (more v's for more verbosity).\n"
-#~ msgstr ""
-#~ "Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]\n"
-#~ "Options:\n"
-#~ " -D name=value Set named variable to value.\n"
-#~ " -I include-dir Add include directory to search path.\n"
-#~ " -v Be verbose (more v's for more verbosity).\n"
-
-#~ msgid "Usage: snmp [host-or-ip-address]\n"
-#~ msgstr "Usage: snmp [host-or-ip-address]\n"
-
-#~ msgid "WARNING: Adding only the first %d printers found"
-#~ msgstr "WARNING: Nur die ersten %d gefundenen Drucker werden hinzugefügt"
-
-#~ msgid "WARNING: Boolean expected for waiteof option \"%s\"\n"
-#~ msgstr "WARNING: Boolscher Wert erwartet für waiteof-Option „%s“\n"
-
-#~ msgid "WARNING: Failed to read side-channel request!\n"
-#~ msgstr "WARNING: Lesen der Side-Channel-Anfrage fehlgeschlagen!\n"
-
-#~ msgid "WARNING: Option \"%s\" cannot be included via IncludeFeature!\n"
-#~ msgstr ""
-#~ "WARNING: Option „%s“ kann nicht mithilfe von „IncludeFeature“ "
-#~ "eingeschlossen werden!\n"
-
-#~ msgid "WARNING: Printer not responding\n"
-#~ msgstr "WARNING: Drucker reagiert nicht\n"
-
-#~ msgid "WARNING: Printer sent unexpected EOF\n"
-#~ msgstr "WARNING: Drucker sendete unerwartet EOF\n"
-
-#~ msgid ""
-#~ "WARNING: Remote host did not respond with command status byte after %d "
-#~ "seconds!\n"
-#~ msgstr ""
-#~ "WARNING: Entfernter Host hat nicht mit dem Befehlstatusbyte geantwortet "
-#~ "nach %d Sekunden!\n"
-
-#~ msgid ""
-#~ "WARNING: Remote host did not respond with control status byte after %d "
-#~ "seconds!\n"
-#~ msgstr ""
-#~ "WARNING: Entfernter Host hat nicht mit dem Steuerungsstatusbyte "
-#~ "geantwortet nach %d Sekunden!\n"
-
-#~ msgid ""
-#~ "WARNING: Remote host did not respond with data status byte after %d "
-#~ "seconds!\n"
-#~ msgstr ""
-#~ "WARNING: Entfernter Host hat nicht mit dem Datenstatusbyte geantwortet "
-#~ "nach %d Sekunden!\n"
-
-#~ msgid "WARNING: SCSI command timed out (%d); retrying...\n"
-#~ msgstr ""
-#~ "WARNING: Zeitüberschreitung bei SCSI-Befehl (%d); erneut versuchen …\n"
-
-#~ msgid ""
-#~ "WARNING: This document does not conform to the Adobe Document Structuring "
-#~ "Conventions and may not print correctly!\n"
-#~ msgstr ""
-#~ "WARNING: Dieses Dokument entspricht nicht den Dokumentstruktur-"
-#~ "Konventionen von Adobe und wird u. U. nicht korrekt gedruckt!\n"
-
-#~ msgid "WARNING: Unable to open \"%s:%s\": %s\n"
-#~ msgstr "WARNING: „%s:%s“ konnte nicht geöffnet werden: %s\n"
-
-#~ msgid "WARNING: Unable to send PAP status request"
-#~ msgstr "WARNING: PAP-Statusanfrage konnte nicht gesendet werden"
-
-#~ msgid "WARNING: Unexpected PAP packet of type %d\n"
-#~ msgstr "WARNING: Unerwartetes PAP-Paket des Typs „%d“\n"
-
-#~ msgid "WARNING: Unknown PAP packet of type %d\n"
-#~ msgstr "WARNING: Unbekanntes PAP-Paket des Typs „%d“\n"
-
-#~ msgid "WARNING: Unknown choice \"%s\" for option \"%s\"!\n"
-#~ msgstr "WARNING: Unbekannte Auswahl „%s“ für Option „%s“!\n"
-
-#~ msgid "WARNING: Unknown option \"%s\"!\n"
-#~ msgstr "WARNING: Unbekannte Option „%s“!\n"
-
-#~ msgid "WARNING: Unsupported baud rate %s!\n"
-#~ msgstr "WARNING: Baud-Rate „%s“ wird nicht unterstützt!\n"
-
-#~ msgid "WARNING: number expected for status option \"%s\"\n"
-#~ msgstr "WARNING: Zahlwert erwartet für Statusoption „%s“\n"
-
-#~ msgid ""
-#~ "WARNING: recoverable: Network host '%s' is busy; will retry in %d "
-#~ "seconds...\n"
-#~ msgstr ""
-#~ "WARNING: wiederherstellbar: Netzwerkhost „%s“ ist ausgelastet; erneuter "
-#~ "Versuch in %d Sekunden …\n"
-
-#~ msgid "Warning, no Windows 2000 printer drivers are installed!"
-#~ msgstr "Achtung: Es sind keine Windows 2000 Druckertreiber installiert!"
-
-#~ msgid "You4 Envelope"
-#~ msgstr "You4 Umschlag"
-
-#~ msgid "convert: Use the -f option to specify a file to convert.\n"
-#~ msgstr ""
-#~ "konvertieren: Mit der -f Option eine Datei zum Konvertieren festlegen.\n"
-
-#~ msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s\n"
-#~ msgstr "cupsaddsmb: keine PPD-Datei für Drucker „%s“ – %s\n"
-
-#~ msgid "cupsctl: Unable to connect to server: %s\n"
-#~ msgstr "cupsctl: Verbindungsaufbau zum Server fehlgeschlagen: %s\n"
-
-#~ msgid "cupsctl: Unknown option \"%s\"!\n"
-#~ msgstr "cupsctl: unbekannte Option „%s“!\n"
-
-#~ msgid "cupsctl: Unknown option \"-%c\"!\n"
-#~ msgstr "cupsctl: unbekannte Option „-%c“!\n"
-
-#~ msgid "cupsd: Expected config filename after \"-c\" option!\n"
-#~ msgstr "cupsd: „config filename“ erwartet nach '-c'-Option!\n"
-
-#~ msgid "cupsd: Unable to get current directory!\n"
-#~ msgstr "cupsd: Aktueller Ordner konnte nicht gefunden werden!\n"
-
-#~ msgid "cupsd: Unknown argument \"%s\" - aborting!\n"
-#~ msgstr "cupsd: unbekanntes Argument „%s“ – abbrechen!\n"
-
-#~ msgid "cupsd: Unknown option \"%c\" - aborting!\n"
-#~ msgstr "cupsd: unbekannte Option „%c“ – abbrechen!\n"
-
-#~ msgid "cupsd: launchd(8) support not compiled in, running in normal mode.\n"
-#~ msgstr ""
-#~ "cupsd: „launchd(8) support“ nicht übersetzt, in „normal mode“ ausführen.\n"
-
-#~ msgid "cupsfilter: Invalid document number %d!\n"
-#~ msgstr "cupsfilter: ungültige Dokumentnummer %d!\n"
-
-#~ msgid "cupsfilter: Invalid job ID %d!\n"
-#~ msgstr "cupsfilter: ungültige Druckauftrags-ID %d!\n"
-
-#~ msgid "cupsfilter: Only one filename can be specified!\n"
-#~ msgstr "cupsfilter: Nur ein Dateiname kann angegeben werden!\n"
-
-#~ msgid "cupsfilter: Unable to create temporary file: %s\n"
-#~ msgstr "cupsfilter: Temporäre Datei konnte nicht erstellt werden: %s\n"
-
-#~ msgid "cupsfilter: Unable to get job file - %s\n"
-#~ msgstr "cupsfilter: Druckauftragsdatei konnte nicht geladen werden – %s\n"
-
-#~ msgid "cupstestppd: The -q option is incompatible with the -v option.\n"
-#~ msgstr ""
-#~ "cupstestppd: '-q'-Option ist nicht kompatibel mit der '-v'-Option.\n"
-
-#~ msgid "cupstestppd: The -v option is incompatible with the -q option.\n"
-#~ msgstr ""
-#~ "cupstestppd: '-v'-Option ist nicht kompatibel mit der '-q'-Option.\n"
-
-#~ msgid "device for %s/%s: %s\n"
-#~ msgstr "Gerät für %s/%s: %s\n"
-
-#~ msgid "device for %s: %s\n"
-#~ msgstr "Gerät für %s: %s\n"
-
-#~ msgid "help\t\tget help on commands\n"
-#~ msgstr "help\t\tget help on commands\n"
-
-#~ msgid "job-printer-uri attribute missing!"
-#~ msgstr "job-printer-URI-Attribut fehlt!"
-
-#~ msgid "lpadmin: Class name can only contain printable characters!\n"
-#~ msgstr "lpadmin: Klassenname kann nur druckbare Zeichen enthalten!\n"
-
-#~ msgid "lpadmin: Expected PPD after '-P' option!\n"
-#~ msgstr "lpadmin: PPD erwartet nach '-P'-Option!\n"
-
-#~ msgid "lpadmin: Expected allow/deny:userlist after '-u' option!\n"
-#~ msgstr "lpadmin: „allow/deny:userlist“ erwartet nach '-u'-Option!\n"
-
-#~ msgid "lpadmin: Expected class after '-r' option!\n"
-#~ msgstr "lpadmin: Klasse erwartet nach '-r'-Option!\n"
-
-#~ msgid "lpadmin: Expected class name after '-c' option!\n"
-#~ msgstr "lpadmin: Klassenname erwartet nach '-c'-Option!\n"
-
-#~ msgid "lpadmin: Expected description after '-D' option!\n"
-#~ msgstr "lpadmin: Beschreibung erwartet nach '-D'-Option!\n"
-
-#~ msgid "lpadmin: Expected device URI after '-v' option!\n"
-#~ msgstr "lpadmin: Geräte-URI erwartet nach '-v'-Option!\n"
-
-#~ msgid "lpadmin: Expected file type(s) after '-I' option!\n"
-#~ msgstr "lpadmin: Dateityp(en) erwartet nach '-I'-Option!\n"
-
-#~ msgid "lpadmin: Expected hostname after '-h' option!\n"
-#~ msgstr "lpadmin: Hostname erwartet nach '-h'-Option!\n"
-
-#~ msgid "lpadmin: Expected interface after '-i' option!\n"
-#~ msgstr "lpadmin: Schnittstelle erwartet nach '-i'-Option!\n"
-
-#~ msgid "lpadmin: Expected location after '-L' option!\n"
-#~ msgstr "lpadmin: Standort erwartet nach '-L'-Option!\n"
-
-#~ msgid "lpadmin: Expected model after '-m' option!\n"
-#~ msgstr "lpadmin: Modell erwartet nach '-m'-Option!\n"
-
-#~ msgid "lpadmin: Expected name=value after '-o' option!\n"
-#~ msgstr "lpadmin: name=value erwartet nach '-o'-Option!\n"
-
-#~ msgid "lpadmin: Expected printer after '-p' option!\n"
-#~ msgstr "lpadmin: Drucker erwartet nach '-p'-Option!\n"
-
-#~ msgid "lpadmin: Expected printer name after '-d' option!\n"
-#~ msgstr "lpadmin: Druckername erwartet nach '-d'-Option!\n"
-
-#~ msgid "lpadmin: Expected printer or class after '-x' option!\n"
-#~ msgstr "lpadmin: Drucker oder Klasse erwartet nach '-x'-Option!\n"
-
-#~ msgid "lpadmin: No member names were seen!\n"
-#~ msgstr "lpadmin: Keine zugehörigen Namen gefunden!\n"
-
-#~ msgid "lpadmin: Printer %s is already a member of class %s.\n"
-#~ msgstr "lpadmin: Drucker „%s“ gehört bereits zur Klasse „%s“.\n"
-
-#~ msgid "lpadmin: Printer %s is not a member of class %s.\n"
-#~ msgstr "lpadmin: Drucker „%s“ gehört bereits zur Klasse „%s“.\n"
-
-#~ msgid "lpadmin: Printer name can only contain printable characters!\n"
-#~ msgstr "lpadmin: Druckername kann nur druckbare Zeichen enthalten!\n"
-
-#~ msgid ""
-#~ "lpadmin: Unable to add a printer to the class:\n"
-#~ " You must specify a printer name first!\n"
-#~ msgstr ""
-#~ "lpadmin: Drucker konnte nicht zu der Klasse hinzugefügt werden:\n"
-#~ " Legen Sie zuerst einen Druckernamen fest!\n"
-
-#~ msgid "lpadmin: Unable to connect to server: %s\n"
-#~ msgstr "lpadmin: Verbindungsaufbau zum Server fehlgeschlagen: %s\n"
-
-#~ msgid "lpadmin: Unable to create temporary file - %s\n"
-#~ msgstr "lpadmin: Temporäre Datei konnte nicht erstellt werden – %s\n"
-
-#~ msgid "lpadmin: Unable to create temporary file: %s\n"
-#~ msgstr "lpadmin: Temporäre Datei konnte nicht erstellt werden: %s\n"
-
-#~ msgid "lpadmin: Unable to open PPD file \"%s\" - %s\n"
-#~ msgstr "lpadmin: PPD-Datei „%s“ konnte nicht geöffnet werden – %s\n"
-
-#~ msgid "lpadmin: Unable to open file \"%s\": %s\n"
-#~ msgstr "lpadmin: Datei „%s“ konnte nicht geöffnet werden: %s\n"
-
-#~ msgid ""
-#~ "lpadmin: Unable to remove a printer from the class:\n"
-#~ " You must specify a printer name first!\n"
-#~ msgstr ""
-#~ "lpadmin: Drucker konnte nicht aus der Klasse entfernt werden:\n"
-#~ " Legen Sie zuerst einen Druckernamen fest!\n"
-
-#~ msgid ""
-#~ "lpadmin: Unable to set the PPD file:\n"
-#~ " You must specify a printer name first!\n"
-#~ msgstr ""
-#~ "lpadmin: Die PPD-Datei konnte nicht festgelegt werden:\n"
-#~ " Legen Sie zuerst einen Druckernamen fest!\n"
-
-#~ msgid ""
-#~ "lpadmin: Unable to set the device URI:\n"
-#~ " You must specify a printer name first!\n"
-#~ msgstr ""
-#~ "lpadmin: Die Geräte-URI konnte nicht festgelegt werden:\n"
-#~ " Legen Sie zuerst einen Druckernamen fest!\n"
-
-#~ msgid ""
-#~ "lpadmin: Unable to set the interface script or PPD file:\n"
-#~ " You must specify a printer name first!\n"
-#~ msgstr ""
-#~ "lpadmin: Das Schnittstellenskript oder die PPD-Datei konnten nicht "
-#~ "festgelegt werden:\n"
-#~ " Legen Sie zuerst einen Druckernamen fest!\n"
-
-#~ msgid ""
-#~ "lpadmin: Unable to set the interface script:\n"
-#~ " You must specify a printer name first!\n"
-#~ msgstr ""
-#~ "lpadmin: Das Schnittstellenskript konnte nicht festgelegt werden:\n"
-#~ " Legen Sie zuerst einen Druckernamen fest!\n"
-
-#~ msgid ""
-#~ "lpadmin: Unable to set the printer description:\n"
-#~ " You must specify a printer name first!\n"
-#~ msgstr ""
-#~ "lpadmin: Die Druckerbeschreibung konnte nicht festgelegt werden:\n"
-#~ " Legen Sie zuerst einen Druckernamen fest!\n"
-
-#~ msgid ""
-#~ "lpadmin: Unable to set the printer location:\n"
-#~ " You must specify a printer name first!\n"
-#~ msgstr ""
-#~ "lpadmin: Der Druckerstandort konnte nicht festgelegt werden:\n"
-#~ " Legen Sie zuerst einen Druckernamen fest!\n"
-
-#~ msgid ""
-#~ "lpadmin: Unable to set the printer options:\n"
-#~ " You must specify a printer name first!\n"
-#~ msgstr ""
-#~ "lpadmin: Die Druckeroptionen konnten nicht festgelegt werden:\n"
-#~ " Legen Sie zuerst einen Druckernamen fest!\n"
-
-#~ msgid "lpadmin: Unknown allow/deny option \"%s\"!\n"
-#~ msgstr "lpadmin: unbekannte allow/deny-Option „%s“!\n"
-
-#~ msgid "lpadmin: Unknown argument '%s'!\n"
-#~ msgstr "lpadmin: unbekanntes Argument „%s“!\n"
-
-#~ msgid "lpadmin: Unknown option '%c'!\n"
-#~ msgstr "lpadmin: unbekannte Option '%c'!\n"
-
-#~ msgid "lpadmin: Warning - content type list ignored!\n"
-#~ msgstr "lpadmin: Achtung – Inhaltstypliste ignoriert!\n"
-
-#~ msgid "lpinfo: Expected 1284 device ID string after --device-id!\n"
-#~ msgstr "lpinfo: 1284 Geräte-ID String erwartet nach „--device-id“!\n"
-
-#~ msgid "lpinfo: Expected language after --language!\n"
-#~ msgstr "lpinfo: Sprache erwartet nach „--language“!\n"
-
-#~ msgid "lpinfo: Expected make and model after --make-and-model!\n"
-#~ msgstr "lpinfo: Hersteller und Modell erwartet nach „--make-and-model“!\n"
-
-#~ msgid "lpinfo: Expected product string after --product!\n"
-#~ msgstr "lpinfo: Produktstring erwartet nach „--product“!\n"
-
-#~ msgid "lpinfo: Expected scheme list after --exclude-schemes!\n"
-#~ msgstr "lpinfo: Schemaliste erwartet nach „--exclude-schemes“!\n"
-
-#~ msgid "lpinfo: Expected scheme list after --include-schemes!\n"
-#~ msgstr "lpinfo: Schemaliste erwartet nach „--include-schemes“!\n"
-
-#~ msgid "lpinfo: Expected timeout after --timeout!\n"
-#~ msgstr "lpinfo: Zeitüberschreitung erwartet nach „--timeout“!\n"
-
-#~ msgid "lpinfo: Unknown argument '%s'!\n"
-#~ msgstr "lpinfo: unbekanntes Argument „%s“!\n"
-
-#~ msgid "lpinfo: Unknown option '%c'!\n"
-#~ msgstr "lpinfo: unbekannte Option '%c'!\n"
-
-#~ msgid "lpinfo: Unknown option '%s'!\n"
-#~ msgstr "lpinfo: unbekannte Option '%s'!\n"
-
-#~ msgid "lpmove: Unable to connect to server: %s\n"
-#~ msgstr "lpmove: Verbindungsaufbau zum Server fehlgeschlagen: %s\n"
-
-#~ msgid "lpmove: Unknown argument '%s'!\n"
-#~ msgstr "lpmove: unbekanntes Argument „%s“!\n"
-
-#~ msgid "lpmove: Unknown option '%c'!\n"
-#~ msgstr "lpmove: unbekannte Option '%c'!\n"
-
-#~ msgid "lpoptions: No printers!?!\n"
-#~ msgstr "lpoptions: Keine Drucker!?!\n"
-
-#~ msgid "lpoptions: Unable to add printer or instance: %s\n"
-#~ msgstr ""
-#~ "lpoptions: Drucker oder Instanz konnten nicht hinzugefügt werden: %s\n"
-
-#~ msgid "lpoptions: Unable to get PPD file for %s: %s\n"
-#~ msgstr "lpoptions: PPD-Datei für „%s“ konnte nicht geladen werden: %s\n"
-
-#~ msgid "lpoptions: Unable to open PPD file for %s!\n"
-#~ msgstr "lpoptions: PPD-Datei für „%s“ konnte nicht geöffnet werden!\n"
-
-#~ msgid "lpoptions: Unknown printer or class!\n"
-#~ msgstr "lpoptions: Drucker oder Klasse unbekannt!\n"
-
-#~ msgid "lppasswd: Only root can add or delete passwords!\n"
-#~ msgstr "lppasswd: Nur „root“ kann Kennwörter hinzufügen und löschen!\n"
-
-#~ msgid "lppasswd: Password file busy!\n"
-#~ msgstr "lppasswd: Kennwortdatei wird gerade verwendet!\n"
-
-#~ msgid "lppasswd: Password file not updated!\n"
-#~ msgstr "lppasswd: Kennwortdatei ist nicht aktualisiert!\n"
-
-#~ msgid "lppasswd: Sorry, password doesn't match!\n"
-#~ msgstr "lppasswd: Kennwörter stimmen nicht überein!\n"
-
-#~ msgid ""
-#~ "lppasswd: Sorry, password rejected.\n"
-#~ "Your password must be at least 6 characters long, cannot contain\n"
-#~ "your username, and must contain at least one letter and number.\n"
-#~ msgstr ""
-#~ "lppasswd: Kennwort abgelehnt.\n"
-#~ "Das Kennwort muss mindestens 6 Zeichen lang sein, darf nicht Ihren "
-#~ "Benutzernamen enthalten und muss mindestens einen Buchstaben und eine "
-#~ "Zahl enthalten.\n"
-
-#~ msgid "lppasswd: Sorry, passwords don't match!\n"
-#~ msgstr "lppasswd: Kennwörter stimmen nicht überein!\n"
-
-#~ msgid "lppasswd: Unable to copy password string: %s\n"
-#~ msgstr "lppasswd: Kennwortstring konnte nicht kopiert werden: %s\n"
-
-#~ msgid "lppasswd: Unable to open password file: %s\n"
-#~ msgstr "lppasswd: Kennwortdatei konnte nicht geöffnet werden: %s\n"
-
-#~ msgid "lppasswd: Unable to write to password file: %s\n"
-#~ msgstr ""
-#~ "lppasswd: In die Kennwortdatei konnte nicht geschrieben werden: %s\n"
-
-#~ msgid "lppasswd: failed to backup old password file: %s\n"
-#~ msgstr "lppasswd: Sichern der alten Kennwortdatei fehlgeschlagen: %s\n"
-
-#~ msgid "lppasswd: failed to rename password file: %s\n"
-#~ msgstr "lppasswd: Kennwortdatei konnte nicht umbenannt werden: %s\n"
-
-#~ msgid "lppasswd: user \"%s\" and group \"%s\" do not exist.\n"
-#~ msgstr "lppasswd: Benutzer „%s“ und Gruppe „%s“ existieren nicht.\n"
-
-#~ msgid ""
-#~ "lpstat: error - %s environment variable names non-existent destination \"%"
-#~ "s\"!\n"
-#~ msgstr ""
-#~ "lpstat: Fehler – %s Umgebungsvariablennamen nicht vorhanden für Ziel „%"
-#~ "s“!\n"
-
-#~ msgid "members of class %s:\n"
-#~ msgstr "gehört zu Klasse „%s“:\n"
-
-#~ msgid "no entries\n"
-#~ msgstr "keine Einträge\n"
-
-#~ msgid "no system default destination\n"
-#~ msgstr "kein System-Standardzielort\n"
-
-#~ msgid "notify-events not specified!"
-#~ msgstr "„notify-events“ nicht festgelegt!"
-
-#~ msgid "notify-recipient-uri URI \"%s\" is already used!"
-#~ msgstr "notify-recipient-uri URI „%s“ wird bereits verwendet!"
-
-#~ msgid "notify-recipient-uri URI \"%s\" uses unknown scheme!"
-#~ msgstr "notify-recipient-uri URI „%s“ verwendet unbekanntes Schema!"
-
-#~ msgid "notify-subscription-id %d no good!"
-#~ msgstr "notify-subscription-id „%d“ ist ungültig!"
-
-#~ msgid "ppdc: Adding include directory \"%s\"...\n"
-#~ msgstr "ppdc: Ordner „%s“ hinzufügen …\n"
-
-#~ msgid "ppdc: Adding/updating UI text from %s...\n"
-#~ msgstr "ppdc: UI-Text von „%s“ hinzufügen/aktualisieren …\n"
-
-#~ msgid "ppdc: Bad boolean value (%s) on line %d of %s.\n"
-#~ msgstr "ppdc: Ungültiger Boolscher Wert (%s) in Zeile %d von %s.\n"
-
-#~ msgid "ppdc: Bad resolution name \"%s\" on line %d of %s!\n"
-#~ msgstr "ppdc: Ungültiger aufzulösender Name „%s“ in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Bad status keyword %s on line %d of %s!\n"
-#~ msgstr "ppdc: Ungültiges Status-Keyword „%s“ in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Bad variable substitution ($%c) on line %d of %s.\n"
-#~ msgstr "ppdc: Ungültige Variablenersetzung ($%c) in Zeile %d von %s.\n"
-
-#~ msgid "ppdc: Choice found on line %d of %s with no Option!\n"
-#~ msgstr "ppdc: Auswahl in Zeile %d von %s gefunden ohne Option!\n"
-
-#~ msgid "ppdc: Duplicate #po for locale %s on line %d of %s!\n"
-#~ msgstr "ppdc: Duplikat #po für Locale „%s“ in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected a filter definition on line %d of %s!\n"
-#~ msgstr "ppdc: Filterdefinition erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected a program name on line %d of %s!\n"
-#~ msgstr "ppdc: Programmname erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected boolean value on line %d of %s.\n"
-#~ msgstr "ppdc: Boolschen Wert erwartet in Zeile %d von %s.\n"
-
-#~ msgid "ppdc: Expected charset after Font on line %d of %s!\n"
-#~ msgstr "ppdc: Zeichensatz nach Schrift erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected choice code on line %d of %s.\n"
-#~ msgstr "ppdc: Auswahlcode erwartet in Zeile %d von %s.\n"
-
-#~ msgid "ppdc: Expected choice name/text on line %d of %s.\n"
-#~ msgstr "ppdc: Auswahlname/-text erwartet in Zeile %d von %s.\n"
-
-#~ msgid "ppdc: Expected color order for ColorModel on line %d of %s!\n"
-#~ msgstr "ppdc: Farbreihenfolge für ColorModel erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected colorspace for ColorModel on line %d of %s!\n"
-#~ msgstr "ppdc: Farbraum für ColorModel erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected compression for ColorModel on line %d of %s!\n"
-#~ msgstr "ppdc: Komprimierung für ColorModel erwartet in Zeile %d von %s!\n"
-
-#~ msgid ""
-#~ "ppdc: Expected constraints string for UIConstraints on line %d of %s!\n"
-#~ msgstr ""
-#~ "ppdc: Constraints String für UIConstraints erwartet in Zeile %d von %s!\n"
-
-#~ msgid ""
-#~ "ppdc: Expected driver type keyword following DriverType on line %d of %"
-#~ "s!\n"
-#~ msgstr ""
-#~ "ppdc: Treibertyp-Keyword nach DriverType erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected duplex type after Duplex on line %d of %s!\n"
-#~ msgstr "ppdc: Duplextyp nach Duplex erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected encoding after Font on line %d of %s!\n"
-#~ msgstr "ppdc: Codierung nach Schrift erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected filename after #po %s on line %d of %s!\n"
-#~ msgstr "ppdc: Dateiname nach #po %s erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected group name/text on line %d of %s!\n"
-#~ msgstr "ppdc: Gruppenname/-text erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected include filename on line %d of %s!\n"
-#~ msgstr "ppdc: „include filename“ erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected integer on line %d of %s!\n"
-#~ msgstr "ppdc: „integer“ erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected locale after #po on line %d of %s!\n"
-#~ msgstr "ppdc: Locale nach #po erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected name after %s on line %d of %s!\n"
-#~ msgstr "ppdc: Name nach „%s“ erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected name after FileName on line %d of %s!\n"
-#~ msgstr "ppdc: Name nach FileName erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected name after Font on line %d of %s!\n"
-#~ msgstr "ppdc: Name nach Font erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected name after Manufacturer on line %d of %s!\n"
-#~ msgstr "ppdc: Name nach Manufacturer erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected name after MediaSize on line %d of %s!\n"
-#~ msgstr "ppdc: Name nach MediaSize erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected name after ModelName on line %d of %s!\n"
-#~ msgstr "ppdc: Name nach ModelName erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected name after PCFileName on line %d of %s!\n"
-#~ msgstr "ppdc: Name nach PCFileName erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected name/text after %s on line %d of %s!\n"
-#~ msgstr "ppdc: Name/Text nach „%s“ erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected name/text after Installable on line %d of %s!\n"
-#~ msgstr "ppdc: Name/Text nach Installable erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected name/text after Resolution on line %d of %s!\n"
-#~ msgstr "ppdc: Name/Text nach Resolution erwartet in Zeile %d von %s!\n"
-
-#~ msgid ""
-#~ "ppdc: Expected name/text combination for ColorModel on line %d of %s!\n"
-#~ msgstr ""
-#~ "ppdc: Kombination aus Name/Text für ColorModel erwartet in Zeile %d von %"
-#~ "s!\n"
-
-#~ msgid "ppdc: Expected option name/text on line %d of %s!\n"
-#~ msgstr "ppdc: Optionsname/-text erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected option section on line %d of %s!\n"
-#~ msgstr "ppdc: „option section“ erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected option type on line %d of %s!\n"
-#~ msgstr "ppdc: „option type“ erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected override field after Resolution on line %d of %s!\n"
-#~ msgstr ""
-#~ "ppdc: „override field“ nach Resolution erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected real number on line %d of %s!\n"
-#~ msgstr "ppdc: „real number“ erwartet in Zeile %d von %s!\n"
-
-#~ msgid ""
-#~ "ppdc: Expected resolution/mediatype following ColorProfile on line %d of %"
-#~ "s!\n"
-#~ msgstr ""
-#~ "ppdc: „resolution/mediatype“ nach ColorProfile erwartet in Zeile %d von %"
-#~ "s!\n"
-
-#~ msgid ""
-#~ "ppdc: Expected resolution/mediatype following SimpleColorProfile on line %"
-#~ "d of %s!\n"
-#~ msgstr ""
-#~ "ppdc: „resolution/mediatype“ nach SimpleColorProfile erwartet in Zeile %d "
-#~ "von %s!\n"
-
-#~ msgid "ppdc: Expected selector after %s on line %d of %s!\n"
-#~ msgstr "ppdc: „selector“ nach „%s“ erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected status after Font on line %d of %s!\n"
-#~ msgstr "ppdc: Status nach Font erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected string after Copyright on line %d of %s!\n"
-#~ msgstr "ppdc: „string“ nach Copyright erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected string after Version on line %d of %s!\n"
-#~ msgstr "ppdc: „string“ nach Version erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected two option names on line %d of %s!\n"
-#~ msgstr "ppdc: Zwei Optionsnamen erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected value after %s on line %d of %s!\n"
-#~ msgstr "ppdc: „value“ nach „%s“ erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Expected version after Font on line %d of %s!\n"
-#~ msgstr "ppdc: Version nach Font erwartet in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Invalid #include/#po filename \"%s\"!\n"
-#~ msgstr "ppdc: ungültiger #include/#po Dateiname „%s“!\n"
-
-#~ msgid "ppdc: Invalid cost for filter on line %d of %s!\n"
-#~ msgstr "ppdc: Ungültiges „cost“ für Filter in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Invalid empty MIME type for filter on line %d of %s!\n"
-#~ msgstr "ppdc: Ungültiger leerer MIME-Typ für Filter in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Invalid empty program name for filter on line %d of %s!\n"
-#~ msgstr ""
-#~ "ppdc: Ungültiger leerer Programmname für Filter in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Invalid option section \"%s\" on line %d of %s!\n"
-#~ msgstr "ppdc: Ungültiger Optionsabschnitt „%s“ in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Invalid option type \"%s\" on line %d of %s!\n"
-#~ msgstr "ppdc: Ungültiger Optionstyp „%s“ in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Loading driver information file \"%s\"...\n"
-#~ msgstr "ppdc: Treiberinfodatei „%s“ laden …\n"
-
-#~ msgid "ppdc: Loading messages for locale \"%s\"...\n"
-#~ msgstr "ppdc: Meldungen für Locale „%s“ laden …\n"
-
-#~ msgid "ppdc: Loading messages from \"%s\"...\n"
-#~ msgstr "ppdc: Meldungen von „%s“ laden …\n"
-
-#~ msgid "ppdc: Missing #endif at end of \"%s\"!\n"
-#~ msgstr "ppdc: #endif fehlt am Ende von „%s“!\n"
-
-#~ msgid "ppdc: Missing #if on line %d of %s!\n"
-#~ msgstr "ppdc: #if fehlt in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: No message catalog provided for locale %s!\n"
-#~ msgstr "ppdc: Kein Message-Catalog verfügbar für Locale „%s“!\n"
-
-#~ msgid "ppdc: Option %s redefined with a different type on line %d of %s!\n"
-#~ msgstr ""
-#~ "ppdc: Option „%s“ neu definiert durch anderen Typ in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Option constraint must *name on line %d of %s!\n"
-#~ msgstr "ppdc: Option „constraint must *name“ in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Too many nested #if's on line %d of %s!\n"
-#~ msgstr "ppdc: Zu viele verschachtelte #if in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Unable to create PPD file \"%s\" - %s.\n"
-#~ msgstr "ppdc: PPD-Datei „%s“ konnte nicht erstellt werden – %s.\n"
-
-#~ msgid "ppdc: Unable to create output directory %s: %s\n"
-#~ msgstr "ppdc: Ausgabeordner „%s“ konnte nicht erstellt werden: %s\n"
-
-#~ msgid "ppdc: Unable to create output pipes: %s\n"
-#~ msgstr "ppdc: Ausgabekanäle konnten nicht erstellt werden: %s\n"
-
-#~ msgid "ppdc: Unable to execute cupstestppd: %s\n"
-#~ msgstr "ppdc: cupstestppd konnte nicht ausgeführt werden: %s\n"
-
-#~ msgid "ppdc: Unable to find #po file %s on line %d of %s!\n"
-#~ msgstr "ppdc: #po-Datei „%s“ wurde nicht gefunden in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Unable to find include file \"%s\" on line %d of %s!\n"
-#~ msgstr "ppdc: include-Datei „%s“ wurde nicht gefunden in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Unable to find localization for \"%s\" - %s\n"
-#~ msgstr "ppdc: Lokalisierung für „%s“ wurde nicht gefunden – %s\n"
-
-#~ msgid "ppdc: Unable to load localization file \"%s\" - %s\n"
-#~ msgstr "ppdc: Lokalisierungsdatei „%s“ konnte nicht geladen werden – %s\n"
-
-#~ msgid "ppdc: Undefined variable (%s) on line %d of %s.\n"
-#~ msgstr "ppdc: Nicht defnierte Variable (%s) in Zeile %d von %s.\n"
-
-#~ msgid "ppdc: Unknown driver type %s on line %d of %s!\n"
-#~ msgstr "ppdc: Unbekannter Treibertyp „%s“ in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Unknown duplex type \"%s\" on line %d of %s!\n"
-#~ msgstr "ppdc: Unbekannter Duplextyp „%s“ in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Unknown media size \"%s\" on line %d of %s!\n"
-#~ msgstr "ppdc: Unbekannte Mediengröße „%s“ in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Unknown token \"%s\" seen on line %d of %s!\n"
-#~ msgstr "ppdc: Unbekannter Token „%s“ gefunden in Zeile %d von %s!\n"
-
-#~ msgid ""
-#~ "ppdc: Unknown trailing characters in real number \"%s\" on line %d of %"
-#~ "s!\n"
-#~ msgstr ""
-#~ "ppdc: Unbekannte nachfolgende Zeichen in Real Number „%s“ in Zeile %d von "
-#~ "%s!\n"
-
-#~ msgid "ppdc: Unterminated string starting with %c on line %d of %s!\n"
-#~ msgstr "ppdc: Unvollständiger String beginnend mit %c in Zeile %d von %s!\n"
-
-#~ msgid "ppdc: Writing %s...\n"
-#~ msgstr "ppdc: %s schreiben …\n"
-
-#~ msgid "ppdc: Writing PPD files to directory \"%s\"...\n"
-#~ msgstr "ppdc: PPD-Dateien schreiben in Ordner „%s“ …\n"
-
-#~ msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s!\n"
-#~ msgstr "ppdmerge: Ungültige LanguageVersion „%s“ in %s!\n"
-
-#~ msgid "ppdmerge: Ignoring PPD file %s...\n"
-#~ msgstr "ppdmerge: PPD-Datei „%s“ ignorieren …\n"
-
-#~ msgid "ppdmerge: Unable to backup %s to %s- %s\n"
-#~ msgstr "ppdmerge: Backup von „%s“ auf %s fehlgeschlagen – %s\n"
-
-#~ msgid "printer %s disabled since %s -\n"
-#~ msgstr "Drucker „%s“ deaktiviert seit %s -\n"
-
-#~ msgid "printer %s is idle. enabled since %s\n"
-#~ msgstr "Drucker „%s“ ist inaktiv; aktiviert seit %s\n"
-
-#~ msgid "printer %s now printing %s-%d. enabled since %s\n"
-#~ msgstr "Drucker „%s“ druckt gerade %s–%d; aktiviert seit %s\n"
-
-#~ msgid "printer %s/%s disabled since %s -\n"
-#~ msgstr "Drucker „%s/%s“ deaktiviert seit %s -\n"
-
-#~ msgid "printer %s/%s is idle. enabled since %s\n"
-#~ msgstr "Drucker „%s/%s“ ist inaktiv; aktiviert seit %s\n"
-
-#~ msgid "printer %s/%s now printing %s-%d. enabled since %s\n"
-#~ msgstr "Drucker „%s/%s“ druckt gerade %s–%d; aktiviert seit %s\n"
-
-#~ msgid "request id is %s-%d (%d file(s))\n"
-#~ msgstr "Anfrage-ID ist %s–%d (%d Datei(en))\n"
-
-#~ msgid "scheduler is not running\n"
-#~ msgstr "Scheduler ist nicht aktiv\n"
-
-#~ msgid "scheduler is running\n"
-#~ msgstr "Scheduler ist aktiv\n"
-
-#~ msgid "status\t\tshow status of daemon and queue\n"
-#~ msgstr "Status\t\tStatus für Daemon und Warteliste anzeigen\n"
-
-#~ msgid "system default destination: %s\n"
-#~ msgstr "System-Standardzielort: %s\n"
-
-#~ msgid "system default destination: %s/%s\n"
-#~ msgstr "System-Standardzielort: %s/%s\n"
diff --git a/locale/cups_es.po b/locale/cups_es.po
index 6ed3795c0..00a63b8a4 100644
--- a/locale/cups_es.po
+++ b/locale/cups_es.po
@@ -16,131 +16,169 @@ 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"
-"PO-Revision-Date: 2012-07-01 20:21+0100\n"
-"Last-Translator: Juan Pablo González Riopedre <riopedre13@yahoo.es>\n"
+"POT-Creation-Date: 2014-08-29 22:25-0400\n"
+"PO-Revision-Date: 2014-09-23 23:45+0100\n"
+"Last-Translator: Juan Pablo González Riopedre <jpgriopedre@yahoo.es>\n"
"Language-Team: Spanish\n"
-"Language: \n"
+"Language: Spanish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+#: systemv/lpstat.c:1867 systemv/lpstat.c:1990
msgid "\t\t(all)"
msgstr "\t\t(todos)"
+#: systemv/lpstat.c:1870 systemv/lpstat.c:1873 systemv/lpstat.c:1993
+#: systemv/lpstat.c:1996
msgid "\t\t(none)"
msgstr "\t\t(ninguno)"
+#: berkeley/lpc.c:426
#, c-format
msgid "\t%d entries"
msgstr "\t%d entradas"
+#: systemv/lpstat.c:783 systemv/lpstat.c:799
#, c-format
msgid "\t%s"
msgstr "\t%s"
+#: systemv/lpstat.c:1848 systemv/lpstat.c:1971
msgid "\tAfter fault: continue"
msgstr "\tTras fallo: continuar"
+#: systemv/lpstat.c:1471 systemv/lpstat.c:1817 systemv/lpstat.c:1941
#, c-format
msgid "\tAlerts: %s"
msgstr "\tAlertas: %s"
+#: systemv/lpstat.c:1871 systemv/lpstat.c:1994
msgid "\tBanner required"
msgstr "\tSe necesita un rótulo"
+#: systemv/lpstat.c:1872 systemv/lpstat.c:1995
msgid "\tCharset sets:"
-msgstr "\tAjustes del juego de caracteres:"
+msgstr "\tJuegos de caracteres:"
+#: systemv/lpstat.c:1836 systemv/lpstat.c:1959
msgid "\tConnection: direct"
msgstr "\tConexión: directa"
+#: systemv/lpstat.c:1827 systemv/lpstat.c:1951
msgid "\tConnection: remote"
msgstr "\tConexión: remota"
+#: systemv/lpstat.c:1793 systemv/lpstat.c:1917
msgid "\tContent types: any"
msgstr "\tTipos de contenido: cualesquiera"
+#: systemv/lpstat.c:1875 systemv/lpstat.c:1998
msgid "\tDefault page size:"
msgstr "\tTamaño de página predeterminado:"
+#: systemv/lpstat.c:1874 systemv/lpstat.c:1997
msgid "\tDefault pitch:"
msgstr "\tPaso predeterminado:"
+#: systemv/lpstat.c:1876 systemv/lpstat.c:1999
msgid "\tDefault port settings:"
msgstr "\tAjustes del puerto predeterminados:"
+#: systemv/lpstat.c:1799 systemv/lpstat.c:1923
#, c-format
msgid "\tDescription: %s"
msgstr "\tDescripción: %s"
+#: systemv/lpstat.c:1792 systemv/lpstat.c:1916
msgid "\tForm mounted:"
msgstr "\tFormulario montado:"
+#: systemv/lpstat.c:1869 systemv/lpstat.c:1992
msgid "\tForms allowed:"
msgstr "\tFormularios permitidos:"
+#: systemv/lpstat.c:1831 systemv/lpstat.c:1955
#, c-format
msgid "\tInterface: %s.ppd"
msgstr "\tInterfaz: %s.ppd"
+#: systemv/lpstat.c:1840 systemv/lpstat.c:1963
#, c-format
msgid "\tInterface: %s/interfaces/%s"
msgstr "\tInterfaz: %s/interfaces/%s"
+#: systemv/lpstat.c:1844 systemv/lpstat.c:1967
#, c-format
msgid "\tInterface: %s/ppd/%s.ppd"
msgstr "\tInterfaz: %s/ppd/%s.ppd"
+#: systemv/lpstat.c:1822 systemv/lpstat.c:1946
#, c-format
msgid "\tLocation: %s"
msgstr "\tUbicación: %s"
+#: systemv/lpstat.c:1847 systemv/lpstat.c:1970
msgid "\tOn fault: no alert"
msgstr "\tEn fallo: no alertar"
+#: systemv/lpstat.c:1794 systemv/lpstat.c:1918
msgid "\tPrinter types: unknown"
msgstr "\tTipos de impresora: desconocidos"
+#: systemv/lpstat.c:1454
#, c-format
msgid "\tStatus: %s"
msgstr "\tEstado: %s"
+#: systemv/lpstat.c:1852 systemv/lpstat.c:1866 systemv/lpstat.c:1975
+#: systemv/lpstat.c:1989
msgid "\tUsers allowed:"
msgstr "\tUsuarios permitidos:"
+#: systemv/lpstat.c:1859 systemv/lpstat.c:1982
msgid "\tUsers denied:"
msgstr "\tUsuarios denegados:"
+#: berkeley/lpc.c:428
msgid "\tdaemon present"
msgstr "\tdemonio presente"
+#: berkeley/lpc.c:424
msgid "\tno entries"
msgstr "\tno hay entradas"
+#: berkeley/lpc.c:396 berkeley/lpc.c:408
#, c-format
msgid "\tprinter is on device '%s' speed -1"
msgstr "\tla impresora está conectada a '%s' velocidad -1"
+#: berkeley/lpc.c:421
msgid "\tprinting is disabled"
msgstr "\tla impresión está desactivada"
+#: berkeley/lpc.c:419
msgid "\tprinting is enabled"
msgstr "\tla impresión está activada"
+#: systemv/lpstat.c:1474
#, c-format
msgid "\tqueued for %s"
msgstr "\ten cola para %s"
+#: berkeley/lpc.c:416
msgid "\tqueuing is disabled"
msgstr "\tla cola está desactivada"
+#: berkeley/lpc.c:414
msgid "\tqueuing is enabled"
msgstr "\tla cola está activada"
+#: systemv/lpstat.c:1785 systemv/lpstat.c:1909
msgid "\treason unknown"
msgstr "\trazón desconocida"
+#: systemv/cupstestppd.c:454
msgid ""
"\n"
" DETAILED CONFORMANCE TEST RESULTS"
@@ -148,103 +186,135 @@ msgstr ""
"\n"
" RESULTADOS DETALLADOS DE LA PRUEBA DE CONFORMIDAD"
+#: systemv/cupstestppd.c:3820
msgid " Ignore specific warnings."
msgstr " Ignorar advertencias (warnings) específicas."
+#: systemv/cupstestppd.c:3824
msgid " Issue warnings instead of errors."
msgstr ""
-" Emitor advertencias (warnings) en vez de errores."
+" Emitir advertencias (warnings) en vez de errores."
+#: systemv/cupstestppd.c:410 systemv/cupstestppd.c:415
msgid " REF: Page 15, section 3.1."
msgstr " REF: Página 15, sección 3.1."
+#: systemv/cupstestppd.c:405
msgid " REF: Page 15, section 3.2."
msgstr " REF: Página 15, sección 3.2."
+#: systemv/cupstestppd.c:425
msgid " REF: Page 19, section 3.3."
msgstr " REF: Página 19, sección 3.3."
+#: systemv/cupstestppd.c:378
msgid " REF: Page 20, section 3.4."
msgstr " REF: Página 20, sección 3.4."
+#: systemv/cupstestppd.c:430
msgid " REF: Page 27, section 3.5."
msgstr " REF: Página 27, sección 3.5."
+#: systemv/cupstestppd.c:373
msgid " REF: Page 42, section 5.2."
msgstr " REF: Página 42, sección 5.2."
+#: systemv/cupstestppd.c:420
msgid " REF: Pages 16-17, section 3.2."
msgstr " REF: Páginas 16-17, sección 3.2."
+#: systemv/cupstestppd.c:390
msgid " REF: Pages 42-45, section 5.2."
msgstr " REF: Páginas 42-45, sección 5.2."
+#: systemv/cupstestppd.c:384
msgid " REF: Pages 45-46, section 5.2."
msgstr " REF: Páginas 45-46, sección 5.2."
+#: systemv/cupstestppd.c:395
msgid " REF: Pages 48-49, section 5.2."
msgstr " REF: Páginas 48-49, sección 5.2."
+#: systemv/cupstestppd.c:400
msgid " REF: Pages 52-54, section 5.2."
msgstr " REF: Páginas 52-54, sección 5.2."
+#: berkeley/lpq.c:528
#, c-format
msgid " %-39.39s %.0f bytes"
msgstr " %-39.39s %.0f bytes"
+#: systemv/cupstestppd.c:589
#, c-format
msgid " PASS Default%s"
msgstr " PASA Default%s"
+#: systemv/cupstestppd.c:524
msgid " PASS DefaultImageableArea"
msgstr " PASA DefaultImageableArea"
+#: systemv/cupstestppd.c:558
msgid " PASS DefaultPaperDimension"
msgstr " PASA DefaultPaperDimension"
+#: systemv/cupstestppd.c:631
msgid " PASS FileVersion"
msgstr " PASA FileVersion"
+#: systemv/cupstestppd.c:675
msgid " PASS FormatVersion"
msgstr " PASA FormatVersion"
+#: systemv/cupstestppd.c:695
msgid " PASS LanguageEncoding"
msgstr " PASA LanguageEncoding"
+#: systemv/cupstestppd.c:715
msgid " PASS LanguageVersion"
msgstr " PASA LanguageVersion"
+#: systemv/cupstestppd.c:769
msgid " PASS Manufacturer"
msgstr " PASA Manufacturer"
+#: systemv/cupstestppd.c:809
msgid " PASS ModelName"
msgstr " PASA ModelName"
+#: systemv/cupstestppd.c:829
msgid " PASS NickName"
msgstr " PASA NickName"
+#: systemv/cupstestppd.c:889
msgid " PASS PCFileName"
msgstr " PASA PCFileName"
+#: systemv/cupstestppd.c:964
msgid " PASS PSVersion"
msgstr " PASA PSVersion"
+#: systemv/cupstestppd.c:869
msgid " PASS PageRegion"
msgstr " PASA PageRegion"
+#: systemv/cupstestppd.c:849
msgid " PASS PageSize"
msgstr " PASA PageSize"
+#: systemv/cupstestppd.c:924
msgid " PASS Product"
msgstr " PASA Product"
+#: systemv/cupstestppd.c:999
msgid " PASS ShortNickName"
msgstr " PASA ShortNickName"
+#: systemv/cupstestppd.c:1374
#, c-format
msgid " WARN %s has no corresponding options."
msgstr " ADVERTENCIA %s tiene opciones que no corresponden."
+#: systemv/cupstestppd.c:1486
#, c-format
msgid ""
" WARN %s shares a common prefix with %s\n"
@@ -253,6 +323,7 @@ msgstr ""
" ADVERTENCIA %s comparte un prefijo común con %s\n"
" REF: Página 15, sección 3.2."
+#: systemv/cupstestppd.c:1345
#, c-format
msgid ""
" WARN Duplex option keyword %s may not work as expected and should "
@@ -263,11 +334,13 @@ msgstr ""
"como se espera y debería llamarse Duplex.\n"
" REF: Página 122, sección 5.17"
+#: systemv/cupstestppd.c:1744
msgid " WARN File contains a mix of CR, LF, and CR LF line endings."
msgstr ""
" ADVERTENCIA El archivo contiene una mezcla de líneas acabadas en "
"CR, LF y CR LF."
+#: systemv/cupstestppd.c:1390
msgid ""
" WARN LanguageEncoding required by PPD 4.3 spec.\n"
" REF: Pages 56-57, section 5.3."
@@ -276,10 +349,12 @@ msgstr ""
"PPD 4.3.\n"
" REF: Páginas 56-57, sección 5.3."
+#: systemv/cupstestppd.c:1726
#, c-format
msgid " WARN Line %d only contains whitespace."
msgstr " ADVERTENCIA La línea %d solo contiene espacios en blanco."
+#: systemv/cupstestppd.c:1398
msgid ""
" WARN Manufacturer required by PPD 4.3 spec.\n"
" REF: Pages 58-59, section 5.3."
@@ -288,6 +363,7 @@ msgstr ""
"4.3.\n"
" REF: Páginas 58-59, sección 5.3."
+#: systemv/cupstestppd.c:1749
msgid ""
" WARN Non-Windows PPD files should use lines ending with only LF, "
"not CR LF."
@@ -295,6 +371,7 @@ msgstr ""
" ADVERTENCIA Los archivos PPD que no sean de Windows deben tener "
"líneas que acaben sólo en LF, no en CR LF."
+#: systemv/cupstestppd.c:1382
#, c-format
msgid ""
" WARN Obsolete PPD version %.1f.\n"
@@ -303,6 +380,7 @@ msgstr ""
" ADVERTENCIA Versión de PPD %.1f anticuada.\n"
" REF: Página 42, sección 5.2."
+#: systemv/cupstestppd.c:1413
msgid ""
" WARN PCFileName longer than 8.3 in violation of PPD spec.\n"
" REF: Pages 61-62, section 5.3."
@@ -311,6 +389,7 @@ msgstr ""
"especificación PPD.\n"
" REF: Páginas 61-62, sección 5.3."
+#: systemv/cupstestppd.c:1421
msgid ""
" WARN PCFileName should contain a unique filename.\n"
" REF: Pages 61-62, section 5.3."
@@ -318,6 +397,7 @@ msgstr ""
" ADVERTENCIA PCFileName debe contener un único nombre de archivo.\n"
" REF: Páginas 61-62, sección 5.3."
+#: systemv/cupstestppd.c:1456
msgid ""
" WARN Protocols contains PJL but JCL attributes are not set.\n"
" REF: Pages 78-79, section 5.7."
@@ -326,6 +406,7 @@ msgstr ""
"los atributos JCL.\n"
" REF: Páginas 78-79, sección 5.7."
+#: systemv/cupstestppd.c:1447
msgid ""
" WARN Protocols contains both PJL and BCP; expected TBCP.\n"
" REF: Pages 78-79, section 5.7."
@@ -334,6 +415,7 @@ msgstr ""
"esperaba TBCP.\n"
" REF: Páginas 78-79, sección 5.7."
+#: systemv/cupstestppd.c:1430
msgid ""
" WARN ShortNickName required by PPD 4.3 spec.\n"
" REF: Pages 64-65, section 5.3."
@@ -342,15 +424,19 @@ msgstr ""
"4.3.\n"
" REF: Páginas 64-65, sección 5.3."
+#: systemv/cupsaddsmb.c:282
msgid " cupsaddsmb [options] -a"
msgstr " cupsaddsmb [opciones] -a"
+#: systemv/cupstestdsc.c:427
msgid " cupstestdsc [options] -"
msgstr " cupstestdsc [opciones] -"
+#: systemv/cupstestppd.c:3815
msgid " program | cupstestppd [options] -"
msgstr " programa | cupstestppd [opciones] -"
+#: systemv/cupstestppd.c:3747
#, c-format
msgid ""
" %s \"%s %s\" conflicts with \"%s %s\"\n"
@@ -359,14 +445,17 @@ msgstr ""
" %s \"%s %s\" está en conflictocon \"%s %s\"\n"
" (restricción=\"%s %s %s %s\")."
+#: systemv/cupstestppd.c:2248
#, c-format
msgid " %s %s %s does not exist."
msgstr " %s %s %s no existe."
+#: systemv/cupstestppd.c:3904
#, c-format
msgid " %s %s file \"%s\" has the wrong capitalization."
-msgstr " %s archivo %s \"%s\" tiene las mayúsculas equivocadas"
+msgstr " %s %s archivo \"%s\" tiene las mayúsculas equivocadas."
+#: systemv/cupstestppd.c:2318
#, c-format
msgid ""
" %s Bad %s choice %s.\n"
@@ -375,73 +464,102 @@ msgstr ""
" %s Preferencia %s incorrecta %s.\n"
" REF: Página 122, sección 5.17"
+#: systemv/cupstestppd.c:3507 systemv/cupstestppd.c:3556
+#: systemv/cupstestppd.c:3595
#, c-format
msgid " %s Bad UTF-8 \"%s\" translation string for option %s, choice %s."
msgstr ""
" %s Cadena de traducción UTF-8 \"%s\" incorrecta para opción %s, "
"preferencia %s."
+#: systemv/cupstestppd.c:3461
#, c-format
msgid " %s Bad UTF-8 \"%s\" translation string for option %s."
msgstr " %s Cadena de traducción UTF-8 \"%s\" incorrecta para opción %s."
+#: systemv/cupstestppd.c:2389
#, c-format
msgid " %s Bad cupsFilter value \"%s\"."
msgstr " %s Valor cupsFilter \"%s\" incorrecto."
+#: systemv/cupstestppd.c:2475
#, c-format
msgid " %s Bad cupsFilter2 value \"%s\"."
-msgstr " %s Valor cupsFilter2 incorrecto \"%s\"."
+msgstr " %s Valor cupsFilter2 \"%s\" incorrecto."
+#: systemv/cupstestppd.c:2964
#, c-format
msgid " %s Bad cupsICCProfile %s."
msgstr " %s cupsICCProfile %s incorrecto."
+#: systemv/cupstestppd.c:2571
#, c-format
msgid " %s Bad cupsPreFilter value \"%s\"."
msgstr " %s Valor cupsPreFilter \"%s\" incorrecto."
+#: systemv/cupstestppd.c:1822
#, c-format
msgid " %s Bad cupsUIConstraints %s: \"%s\""
msgstr " %s cupsUIConstraints %s: \"%s\" incorrecto"
+#: systemv/cupstestppd.c:3411
#, c-format
msgid " %s Bad language \"%s\"."
msgstr " %s Idioma incorrecto \"%s\"."
+#: 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 " %s Permisos incorrectos en el archivo %s \"%s\"."
+#: 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 " %s %s mal escrito - debería ser %s."
+#: systemv/cupstestppd.c:2907
#, c-format
msgid " %s Cannot provide both APScanAppPath and APScanAppBundleID."
msgstr " %s No puede proporcionar APScanAppPath y APScanAppBundleID."
+#: systemv/cupstestppd.c:2205
#, c-format
msgid " %s Default choices conflicting."
msgstr " %s Las preferencias predeterminadas están en conflicto."
+#: systemv/cupstestppd.c:1803
#, c-format
msgid " %s Empty cupsUIConstraints %s"
-msgstr " %s cupsUIConstraints %s vacío."
+msgstr " %s cupsUIConstraints vacío %s"
+#: systemv/cupstestppd.c:3539 systemv/cupstestppd.c:3579
#, c-format
msgid " %s Missing \"%s\" translation string for option %s, choice %s."
msgstr ""
" %s Falta cadena de traducción \"%s\" para opción %s, preferencia %s."
+#: systemv/cupstestppd.c:3447
#, c-format
msgid " %s Missing \"%s\" translation string for option %s."
msgstr " %s Falta cadena de traducción \"%s\" para opción %s."
+#: 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 " %s Falta archivo %s \"%s\"."
+#: systemv/cupstestppd.c:3121
#, c-format
msgid ""
" %s Missing REQUIRED PageRegion option.\n"
@@ -450,6 +568,7 @@ msgstr ""
" %s Falta la opción NECESARIA PageRegion.\n"
" REF: Página 100, sección 5.14."
+#: systemv/cupstestppd.c:3106
#, c-format
msgid ""
" %s Missing REQUIRED PageSize option.\n"
@@ -458,31 +577,38 @@ msgstr ""
" %s Falta la opción NECESARIA PageSize.\n"
" REF: Página 99, sección 5.14."
+#: systemv/cupstestppd.c:2013 systemv/cupstestppd.c:2054
#, c-format
msgid " %s Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"."
msgstr ""
" %s Falta la preferencia *%s %s en UIConstraint \"*%s %s *%s %s\"."
+#: systemv/cupstestppd.c:1908
#, c-format
msgid " %s Missing choice *%s %s in cupsUIConstraints %s: \"%s\""
msgstr " %s Falta la preferencia *%s %s en cupsUIConstraints %s: \"%s\""
+#: systemv/cupstestppd.c:1840
#, c-format
msgid " %s Missing cupsUIResolver %s"
msgstr " %s Falta cupsUIResolver %s"
+#: systemv/cupstestppd.c:1999 systemv/cupstestppd.c:2040
#, c-format
msgid " %s Missing option %s in UIConstraints \"*%s %s *%s %s\"."
msgstr " %s Falta la opción %s en UIConstraints \"*%s %s *%s %s\"."
+#: systemv/cupstestppd.c:1892
#, c-format
msgid " %s Missing option %s in cupsUIConstraints %s: \"%s\""
msgstr " %s Falta la opción %s en cupsUIConstraints %s: \"%s\""
+#: systemv/cupstestppd.c:3633
#, c-format
msgid " %s No base translation \"%s\" is included in file."
msgstr " %s No hay traducción base \"%s\" incluida en el archivo."
+#: systemv/cupstestppd.c:2294
#, c-format
msgid ""
" %s REQUIRED %s does not define choice None.\n"
@@ -491,36 +617,44 @@ msgstr ""
" %s NECESARIA %s no define la opción None.\n"
" REF: Página 122, sección 5.17"
+#: systemv/cupstestppd.c:3180 systemv/cupstestppd.c:3194
#, c-format
msgid " %s Size \"%s\" defined for %s but not for %s."
msgstr " %s Tamaño \"%s\" definido para %s pero no para %s."
+#: systemv/cupstestppd.c:3160
#, c-format
msgid " %s Size \"%s\" has unexpected dimensions (%gx%g)."
msgstr " %s El tamaño \"%s\" tiene dimensiones inesperadas (%gx%g)."
+#: systemv/cupstestppd.c:3351
#, c-format
msgid " %s Size \"%s\" should be \"%s\"."
msgstr " %s Tamaño \"%s\" debería ser \"%s\"."
+#: systemv/cupstestppd.c:3300
#, c-format
msgid " %s Size \"%s\" should be the Adobe standard name \"%s\"."
msgstr ""
" %s Tamaño \"%s\" debería ser el nombre estandar de Adobe \"%s\"."
+#: systemv/cupstestppd.c:3041
#, c-format
msgid " %s cupsICCProfile %s hash value collides with %s."
-msgstr " %s valor hash de cupsICCProfile %s colisiona con %s."
+msgstr " %s Valor hash de cupsICCProfile %s colisiona con %s."
+#: systemv/cupstestppd.c:1963
#, c-format
msgid " %s cupsUIResolver %s causes a loop."
msgstr " %s cupsUIResolver %s genera un bucle."
+#: systemv/cupstestppd.c:1945
#, c-format
msgid ""
" %s cupsUIResolver %s does not list at least two different options."
msgstr " %s cupsUIResolver %s no lista al menos dos opciones diferentes."
+#: systemv/cupstestppd.c:1168
#, c-format
msgid ""
" **FAIL** %s must be 1284DeviceID\n"
@@ -529,6 +663,7 @@ msgstr ""
" **FALLO** %s debe ser 1284DeviceID\n"
" REF: Página 72, sección 5.5"
+#: systemv/cupstestppd.c:580
#, c-format
msgid ""
" **FAIL** Bad Default%s %s\n"
@@ -537,6 +672,7 @@ msgstr ""
" **FALLO** Default%s %s incorrecto\n"
" REF: Página 40, sección 4.5."
+#: systemv/cupstestppd.c:514
#, c-format
msgid ""
" **FAIL** Bad DefaultImageableArea %s\n"
@@ -545,6 +681,7 @@ msgstr ""
" **FALLO** DefaultImageableArea %s incorrecto\n"
" REF: Página 102, sección 5.15."
+#: systemv/cupstestppd.c:550
#, c-format
msgid ""
" **FAIL** Bad DefaultPaperDimension %s\n"
@@ -553,6 +690,7 @@ msgstr ""
" **FALLO** DefaultPaperDimension %s incorrecto\n"
" REF: Página 103, sección 5.15."
+#: systemv/cupstestppd.c:623
#, c-format
msgid ""
" **FAIL** Bad FileVersion \"%s\"\n"
@@ -561,6 +699,7 @@ msgstr ""
" **FALLO** FileVersion \"%s\" incorrecto\n"
" REF: Página 56, sección 5.3."
+#: systemv/cupstestppd.c:667
#, c-format
msgid ""
" **FAIL** Bad FormatVersion \"%s\"\n"
@@ -569,6 +708,7 @@ msgstr ""
" **FALLO** FormatVersion \"%s\" incorrecto\n"
" REF: Página 56, sección 5.3."
+#: systemv/cupstestppd.c:1025
msgid ""
" **FAIL** Bad JobPatchFile attribute in file\n"
" REF: Page 24, section 3.4."
@@ -576,16 +716,19 @@ msgstr ""
" **FALLO** Atributo JobPatchFile en archivo, incorrecto\n"
" REF: Página 24, sección 3.4."
+#: systemv/cupstestppd.c:1213
#, c-format
msgid " **FAIL** Bad LanguageEncoding %s - must be ISOLatin1."
msgstr ""
" **FALLO** LanguageEncoding %s incorrecto: debería ser ISOLatin1."
+#: systemv/cupstestppd.c:1227
#, c-format
msgid " **FAIL** Bad LanguageVersion %s - must be English."
msgstr ""
" **FALLO** LanguageVersion %s incorrecto: debería ser English (Inglés)."
+#: systemv/cupstestppd.c:743 systemv/cupstestppd.c:760
#, c-format
msgid ""
" **FAIL** Bad Manufacturer (should be \"%s\")\n"
@@ -594,6 +737,7 @@ msgstr ""
" **FALLO** Fabricante incorrecto (debería ser \"%s\")\n"
" REF: Página 211, tabla D.1."
+#: systemv/cupstestppd.c:800
#, c-format
msgid ""
" **FAIL** Bad ModelName - \"%c\" not allowed in string.\n"
@@ -602,6 +746,7 @@ msgstr ""
" **FALLO** ModelName incorrecto - \"%c\" no permitido en la cadena.\n"
" REF: Páginas 59-60, sección 5.3."
+#: systemv/cupstestppd.c:956
msgid ""
" **FAIL** Bad PSVersion - not \"(string) int\".\n"
" REF: Pages 62-64, section 5.3."
@@ -609,6 +754,7 @@ msgstr ""
" **FALLO** PSVersion incorrecto - no es \"(string) int\".\n"
" REF: Páginas 62-64, sección 5.3."
+#: systemv/cupstestppd.c:917
msgid ""
" **FAIL** Bad Product - not \"(string)\".\n"
" REF: Page 62, section 5.3."
@@ -616,6 +762,7 @@ msgstr ""
" **FALLO** Product incorrecto - no es \"(string)\".\n"
" REF: Página 62, sección 5.3."
+#: systemv/cupstestppd.c:991
msgid ""
" **FAIL** Bad ShortNickName - longer than 31 chars.\n"
" REF: Pages 64-65, section 5.3."
@@ -623,6 +770,7 @@ msgstr ""
" **FALLO** ShortNickName incorrecto - mayor de 31 caracteres.\n"
" REF: Páginas 64-65, sección 5.3."
+#: systemv/cupstestppd.c:1149
#, c-format
msgid ""
" **FAIL** Bad option %s choice %s\n"
@@ -631,12 +779,14 @@ msgstr ""
" **FALLO** Opción %s, preferencia %s incorrecta\n"
" REF: Página 84, sección 5.9"
+#: systemv/cupstestppd.c:3774 systemv/cupstestppd.c:3796
#, c-format
msgid " **FAIL** Default option code cannot be interpreted: %s"
msgstr ""
" **FALLO** El código de opción predeterminado no puede ser "
"interpretado: %s"
+#: systemv/cupstestppd.c:1286
#, c-format
msgid ""
" **FAIL** Default translation string for option %s choice %s contains "
@@ -645,6 +795,7 @@ msgstr ""
" **FALLO** Cadena de traducción predeterminada para opción %s "
"preferencia %s contiene caracteres de 8-bits."
+#: systemv/cupstestppd.c:1259
#, c-format
msgid ""
" **FAIL** Default translation string for option %s contains 8-bit "
@@ -653,29 +804,34 @@ msgstr ""
" **FALLO** Cadena de traducción predeterminada para opción %s contiene "
"caracteres de 8-bits."
+#: systemv/cupstestppd.c:2101
#, c-format
msgid " **FAIL** Group names %s and %s differ only by case."
msgstr ""
" **FALLO** Nombres de grupo %s y %s se diferencian sólo en la "
"capitalización."
+#: systemv/cupstestppd.c:2146
#, c-format
msgid " **FAIL** Multiple occurrences of option %s choice name %s."
msgstr ""
" **FALLO** Múltiples apariciones de opción %s nombre de preferencia %s."
+#: systemv/cupstestppd.c:2163
#, c-format
msgid " **FAIL** Option %s choice names %s and %s differ only by case."
msgstr ""
" **FALLO** Opción %s nombres de preferencia %s y %s se diferencian "
"sólo en la capitalización."
+#: systemv/cupstestppd.c:2123
#, c-format
msgid " **FAIL** Option names %s and %s differ only by case."
msgstr ""
" **FALLO** Nombres de opción %s y %s se diferencian sólo en la "
"capitalización."
+#: systemv/cupstestppd.c:600
#, c-format
msgid ""
" **FAIL** REQUIRED Default%s\n"
@@ -684,6 +840,7 @@ msgstr ""
" **FALLO** SE NECESITA Default%s\n"
" REF: Página 40, sección 4.5."
+#: systemv/cupstestppd.c:499
msgid ""
" **FAIL** REQUIRED DefaultImageableArea\n"
" REF: Page 102, section 5.15."
@@ -691,6 +848,7 @@ msgstr ""
" **FALLO** SE NECESITA DefaultImageableArea\n"
" REF: Página 102, sección 5.15."
+#: systemv/cupstestppd.c:535
msgid ""
" **FAIL** REQUIRED DefaultPaperDimension\n"
" REF: Page 103, section 5.15."
@@ -698,6 +856,7 @@ msgstr ""
" **FALLO** SE NECESITA DefaultPaperDimension\n"
" REF: Página 103, sección 5.15."
+#: systemv/cupstestppd.c:641
msgid ""
" **FAIL** REQUIRED FileVersion\n"
" REF: Page 56, section 5.3."
@@ -705,6 +864,7 @@ msgstr ""
" **FALLO** SE NECESITA FileVersion\n"
" REF: Página 56, sección 5.3."
+#: systemv/cupstestppd.c:685
msgid ""
" **FAIL** REQUIRED FormatVersion\n"
" REF: Page 56, section 5.3."
@@ -712,6 +872,7 @@ msgstr ""
" **FALLO** SE NECESITA FormatVersion\n"
" REF: Página 56, sección 5.3."
+#: systemv/cupstestppd.c:1076
#, c-format
msgid ""
" **FAIL** REQUIRED ImageableArea for PageSize %s\n"
@@ -722,6 +883,7 @@ msgstr ""
" REF: Página 41, sección 5.\n"
" REF: Página 102, sección 5.15."
+#: systemv/cupstestppd.c:705
msgid ""
" **FAIL** REQUIRED LanguageEncoding\n"
" REF: Pages 56-57, section 5.3."
@@ -729,6 +891,7 @@ msgstr ""
" **FALLO** SE NECESITA LanguageEncoding\n"
" REF: Páginas 56-57, sección 5.3."
+#: systemv/cupstestppd.c:725
msgid ""
" **FAIL** REQUIRED LanguageVersion\n"
" REF: Pages 57-58, section 5.3."
@@ -736,6 +899,7 @@ msgstr ""
" **FALLO** SE NECESITA LanguageVersion\n"
" REF: Páginas 57-58, sección 5.3."
+#: systemv/cupstestppd.c:779
msgid ""
" **FAIL** REQUIRED Manufacturer\n"
" REF: Pages 58-59, section 5.3."
@@ -743,6 +907,7 @@ msgstr ""
" **FALLO** SE NECESITA Manufacturer\n"
" REF: Páginas 58-59, sección 5.3."
+#: systemv/cupstestppd.c:819
msgid ""
" **FAIL** REQUIRED ModelName\n"
" REF: Pages 59-60, section 5.3."
@@ -750,6 +915,7 @@ msgstr ""
" **FALLO** SE NECESITA ModelName\n"
" REF: Páginas 59-60, sección 5.3."
+#: systemv/cupstestppd.c:839
msgid ""
" **FAIL** REQUIRED NickName\n"
" REF: Page 60, section 5.3."
@@ -757,6 +923,7 @@ msgstr ""
" **FALLO** SE NECESITA NickName\n"
" REF: Página 60, sección 5.3."
+#: systemv/cupstestppd.c:899
msgid ""
" **FAIL** REQUIRED PCFileName\n"
" REF: Pages 61-62, section 5.3."
@@ -764,6 +931,7 @@ msgstr ""
" **FALLO** SE NECESITA PCFileName\n"
" REF: Páginas 61-62, sección 5.3."
+#: systemv/cupstestppd.c:974
msgid ""
" **FAIL** REQUIRED PSVersion\n"
" REF: Pages 62-64, section 5.3."
@@ -771,6 +939,7 @@ msgstr ""
" **FALLO** SE NECESITA PSVersion\n"
" REF: Páginas 62-64, sección 5.3."
+#: systemv/cupstestppd.c:879
msgid ""
" **FAIL** REQUIRED PageRegion\n"
" REF: Page 100, section 5.14."
@@ -778,6 +947,7 @@ msgstr ""
" **FALLO** SE NECESITA PageRegion\n"
" REF: Página 100, sección 5.14."
+#: systemv/cupstestppd.c:1045
msgid ""
" **FAIL** REQUIRED PageSize\n"
" REF: Page 41, section 5.\n"
@@ -787,6 +957,7 @@ msgstr ""
" REF: Página 41, sección 5.\n"
" REF: Página 99, sección 5.14."
+#: systemv/cupstestppd.c:859
msgid ""
" **FAIL** REQUIRED PageSize\n"
" REF: Pages 99-100, section 5.14."
@@ -794,6 +965,7 @@ msgstr ""
" **FALLO** SE NECESITA PageSize\n"
" REF: Páginas 99-100, sección 5.14."
+#: systemv/cupstestppd.c:1098
#, c-format
msgid ""
" **FAIL** REQUIRED PaperDimension for PageSize %s\n"
@@ -804,6 +976,7 @@ msgstr ""
" REF: Página 41, sección 5.\n"
" REF: Página 103, sección 5.15."
+#: systemv/cupstestppd.c:934
msgid ""
" **FAIL** REQUIRED Product\n"
" REF: Page 62, section 5.3."
@@ -811,6 +984,7 @@ msgstr ""
" **FALLO** SE NECESITA Product\n"
" REF: Página 62, sección 5.3."
+#: systemv/cupstestppd.c:1009
msgid ""
" **FAIL** REQUIRED ShortNickName\n"
" REF: Page 64-65, section 5.3."
@@ -818,18 +992,23 @@ msgstr ""
" **FALLO** SE NECESITA ShortNickName\n"
" REF: Página 64-65, sección 5.3."
+#: 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 ""
" **FALLO** No se ha podido abrir el archivo PPD - %s en la línea %d."
+#: systemv/cupstestppd.c:1498
#, c-format
msgid " %d ERRORS FOUND"
msgstr " %d ERRORES ENCONTRADOS"
+#: systemv/cupstestdsc.c:431
msgid " -h Show program usage"
msgstr " -h Mostrar el uso del programa"
+#: systemv/cupstestdsc.c:234 systemv/cupstestdsc.c:276
#, c-format
msgid ""
" Bad %%%%BoundingBox: on line %d.\n"
@@ -838,6 +1017,7 @@ msgstr ""
" %%%%BoundingBox: incorrecto en línea %d.\n"
" REF: Página 39, %%%%BoundingBox:"
+#: systemv/cupstestdsc.c:305
#, c-format
msgid ""
" Bad %%%%Page: on line %d.\n"
@@ -846,6 +1026,7 @@ msgstr ""
" %%%%Page: incorrecto en línea %d.\n"
" REF: Página 53, %%%%Page:"
+#: systemv/cupstestdsc.c:218 systemv/cupstestdsc.c:258
#, c-format
msgid ""
" Bad %%%%Pages: on line %d.\n"
@@ -854,6 +1035,7 @@ msgstr ""
" %%%%Pages: incorrecto en línea %d.\n"
" REF: Página 43, %%%%Pages:"
+#: systemv/cupstestdsc.c:176
#, c-format
msgid ""
" Line %d is longer than 255 characters (%d).\n"
@@ -862,6 +1044,7 @@ msgstr ""
" La línea %d es más larga de 255 caracteres (%d).\n"
" REF: Página 25, Longitud de Línea"
+#: systemv/cupstestdsc.c:192
msgid ""
" Missing %!PS-Adobe-3.0 on first line.\n"
" REF: Page 17, 3.1 Conforming Documents"
@@ -869,11 +1052,13 @@ msgstr ""
" Falta %!PS-Adobe-3.0 en la primera línea.\n"
" REF: Página 17, 3.1 Conformidad de documentos"
+#: systemv/cupstestdsc.c:362
#, c-format
msgid " Missing %%EndComments comment. REF: Page 41, %%EndComments"
msgstr ""
" Falta comentario %%EndComments. REF: Página 41, %%EndComments"
+#: systemv/cupstestdsc.c:342
#, c-format
msgid ""
" Missing or bad %%BoundingBox: comment.\n"
@@ -882,6 +1067,7 @@ msgstr ""
" Falta comentario %%BoundingBox: o incorrecto.\n"
" REF: Página 39, %%BoundingBox:"
+#: systemv/cupstestdsc.c:372
#, c-format
msgid ""
" Missing or bad %%Page: comments.\n"
@@ -890,6 +1076,7 @@ msgstr ""
" Falta comentario %%Page: o incorrecto.\n"
" REF: Página 53, %%Page:"
+#: systemv/cupstestdsc.c:352
#, c-format
msgid ""
" Missing or bad %%Pages: comment.\n"
@@ -898,198 +1085,307 @@ msgstr ""
" Falta comentario %%Pages: o incorrecto.\n"
" REF: Página 43, %%Pages:"
+#: systemv/cupstestppd.c:1500
msgid " NO ERRORS FOUND"
msgstr " NO SE HAN ENCONTRADO ERRORES"
+#: systemv/cupstestdsc.c:395
#, c-format
msgid " Saw %d lines that exceeded 255 characters."
msgstr " Se han visto %d líneas que exceden de 255 caracteres."
+#: systemv/cupstestdsc.c:390
#, c-format
msgid " Too many %%BeginDocument comments."
msgstr " Demasiados comentarios %%BeginDocument."
+#: systemv/cupstestdsc.c:382
#, c-format
msgid " Too many %%EndDocument comments."
msgstr " Demasiados comentarios %%EndDocument."
+#: systemv/cupstestdsc.c:402
msgid " Warning: file contains binary data."
msgstr " Advertencia: el archivo contiene datos binarios."
+#: systemv/cupstestdsc.c:410
#, c-format
msgid " Warning: no %%EndComments comment in file."
msgstr " Advertencia: no hay comentario %%EndComments en el archivo."
+#: systemv/cupstestdsc.c:406
#, c-format
msgid " Warning: obsolete DSC version %.1f in file."
msgstr " Advertencia: versión DSC %.1f obsoleta en el archivo."
+#: test/ippfind.c:2788
msgid " ! expression Unary NOT of expression."
-msgstr ""
+msgstr " ! expresión NOT unario de la expresión."
+#: test/ippfind.c:2787
msgid " ( expressions ) Group expressions."
-msgstr ""
+msgstr " ( expresiones ) Agrupar expresiones."
+#: systemv/cupsctl.c:210
msgid " --[no-]debug-logging Turn debug logging on/off."
msgstr " --[no-]debug-logging Activar/desactivar registro de depuración."
+#: systemv/cupsctl.c:212
msgid " --[no-]remote-admin Turn remote administration on/off."
msgstr " --[no-]remote-admin Activar/desactivar administración remota."
+#: systemv/cupsctl.c:214
msgid " --[no-]remote-any Allow/prevent access from the Internet."
msgstr " --[no-]remote-any Permitir/evitar acceso desde Internet."
+#: systemv/cupsctl.c:216
msgid " --[no-]share-printers Turn printer sharing on/off."
msgstr ""
" --[no-]share-printers Activar/desactivar compartición de impresoras."
+#: systemv/cupsctl.c:218
msgid " --[no-]user-cancel-any Allow/prevent users to cancel any job."
msgstr ""
" --[no-]user-cancel-any Permitir/evitar a usuarios que cancelen cualquier "
"trabajo."
+#: ppdc/ppdc.cxx:450
msgid " --cr End lines with CR (Mac OS 9)."
msgstr " --cr Finalizar líneas con CR (Mac OS 9)."
+#: ppdc/ppdc.cxx:452
msgid " --crlf End lines with CR + LF (Windows)."
msgstr " --crlf Finalizar líneas con CR + LF (Windows)."
+#: test/ippfind.c:2769
msgid " --domain regex Match domain to regular expression."
msgstr ""
+" --domain regex Hacer coincidir el dominio con la expresión "
+"regular."
+#: test/ippfind.c:2770
msgid ""
" --exec utility [argument ...] ;\n"
" Execute program if true."
msgstr ""
+" --exec utilidad [argumento ...] ;\n"
+" Ejecutar programa si es cierto."
+#: test/ippfind.c:2790
msgid " --false Always false."
-msgstr ""
+msgstr " --false Siempre falso."
+
+#: test/ipptool.c:4806
+msgid " --help Show help."
+msgstr " --help Muestra ayuda."
+#: test/ippfind.c:2752
msgid " --help Show this help."
-msgstr ""
+msgstr " --help Muestra esta ayuda."
+#: test/ippfind.c:2772
msgid " --host regex Match hostname to regular expression."
msgstr ""
+" --host regex Hacer coincidir el nombre del equipo con la "
+"expresión regular."
+#: ppdc/ppdc.cxx:454
msgid " --lf End lines with LF (UNIX/Linux/OS X)."
msgstr " --lf Finalizar líneas con LF (UNIX/Linux/OS X)."
+#: scheduler/cupsfilter.c:1483
+msgid " --list-filters List filters that will be used."
+msgstr " --list-filters Listar los filtros a usar."
+
+#: test/ippfind.c:2774
msgid " --local True if service is local."
-msgstr ""
+msgstr " --local Cierto si el servicio es local."
+#: test/ippfind.c:2773
msgid " --ls List attributes."
-msgstr ""
+msgstr " --ls Lista atributos."
+#: test/ippfind.c:2775
msgid " --name regex Match service name to regular expression."
msgstr ""
+" --name regex Hacer coincidir el servicio con la expresión "
+"regular."
+#: test/ippfind.c:2789
msgid " --not expression Unary NOT of expression."
-msgstr ""
+msgstr " [parcial]expresión NOT unario de la expresión."
+#: test/ippfind.c:2776
msgid " --path regex Match resource path to regular expression."
msgstr ""
+" --path regex Hacer coincidir la ruta del recurso con la "
+"expresión regular."
+#: test/ippfind.c:2777
msgid " --port number[-number] Match port to number or range."
msgstr ""
+" --port número[-número] Hacer coincidir el puerto con un número o "
+"intervalo de números."
+#: test/ippfind.c:2778
msgid " --print Print URI if true."
-msgstr ""
+msgstr " --print Imprimir URI si es cierto."
+#: test/ippfind.c:2779
msgid " --print-name Print service name if true."
-msgstr ""
+msgstr " --print-name Imprimir nombre del servicio si es cierto."
+#: test/ippfind.c:2780
msgid " --quiet Quietly report match via exit code."
msgstr ""
+" --quiet Silenciosamente informar de la coincidencia via "
+"código de salida."
+#: test/ippfind.c:2781
msgid " --remote True if service is remote."
+msgstr " --remote Cierto si el servicio es remoto."
+
+#: test/ipptool.c:4807
+msgid ""
+" --stop-after-include-error\n"
+" Stop tests after a failed INCLUDE."
msgstr ""
+" --stop-after-include-error\n"
+" Detiene las pruebas tras un INCLUDE fallido."
+#: test/ippfind.c:2791
msgid " --true Always true."
-msgstr ""
+msgstr " --true Siempre cierto."
+#: test/ippfind.c:2782
msgid " --txt key True if the TXT record contains the key."
msgstr ""
+" --txt clave Cierto si el registro TXT contiene la clave."
+#: test/ippfind.c:2783
msgid " --txt-* regex Match TXT record key to regular expression."
msgstr ""
+" --txt-* regex Hacer coincidir la clave del registro TXT a la "
+"expresión regular."
+#: test/ippfind.c:2784
msgid " --uri regex Match URI to regular expression."
msgstr ""
+" --uri regex Hacer coincidir la URI a la expresión regular."
+#: test/ippfind.c:2753
msgid " --version Show program version."
-msgstr ""
+msgstr " --version Muestra la versión del programa."
+#: test/ipptool.c:4809
+msgid " --version Show version."
+msgstr " --version Muestra la versión."
+
+#: test/ippfind.c:2746 test/ipptool.c:4810
msgid " -4 Connect using IPv4."
msgstr " -4 Conectar usando IPv4."
+#: test/ippfind.c:2747 test/ipptool.c:4811
msgid " -6 Connect using IPv6."
msgstr " -6 Conectar usando IPv6."
+#: test/ipptool.c:4812
msgid " -C Send requests using chunking (default)."
msgstr ""
" -C Enviar peticiones usando fragmentación "
"(predeterminado)."
+#: scheduler/cupsfilter.c:1484
msgid " -D Remove the input file when finished."
msgstr " -D Eliminar el archivo de entrada al terminar."
+#: ppdc/ppdc.cxx:433 ppdc/ppdhtml.cxx:175 ppdc/ppdpo.cxx:255
msgid " -D name=value Set named variable to value."
msgstr " -D nombre=valor Establece la variable nombre al valor."
+#: systemv/cupsaddsmb.c:285 systemv/cupsctl.c:205
msgid " -E Encrypt the connection."
msgstr " -E Cifra la conexión."
+#: test/ipptool.c:4814
msgid " -E Test with HTTP Upgrade to TLS."
msgstr " -E Prueba con actualización HTTP a TLS."
+#: scheduler/main.c:2149
msgid ""
" -F Run in the foreground but detach from console."
msgstr ""
" -F Ejecuta en primer plano pero separado de la "
"consola."
+#: systemv/cupsaddsmb.c:286
msgid " -H samba-server Use the named SAMBA server."
msgstr " -H servidor-samba Usa el servidor SAMBA nombrado."
+#: test/ipptool.c:4816
msgid " -I Ignore errors."
msgstr " -I Ignora errores."
+#: 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 ""
" -I include-dir Añade directorio include a la ruta de búsqueda."
+#: systemv/cupstestppd.c:3819
msgid " -I {filename,filters,none,profiles}"
msgstr " -I {filename,filters,none,profiles}"
+#: test/ipptool.c:4817
msgid " -L Send requests using content-length."
msgstr " -L Envía peticiones usando content-length."
+#: test/ipptool.c:4819
+msgid ""
+" -P filename.plist Produce XML plist to a file and test report to "
+"standard output."
+msgstr ""
+" -P filename.plist Produce plist XML a un archivo y un informe de "
+"prueba a la salida estandar."
+
+#: scheduler/cupsfilter.c:1485
msgid " -P filename.ppd Set PPD file."
msgstr " -P nombre_archivo.ppd Establece archivo PPD."
+#: test/ippfind.c:2756
msgid " -P number[-number] Match port to number or range."
msgstr ""
+" -P número[-número] Hacer coincidir el puerto con un número o intervalo "
+"de números."
+#: systemv/cupstestppd.c:3821
msgid " -R root-directory Set alternate root."
msgstr " -R directorio-raíz Establece directorio raíz alternativo."
+#: test/ipptool.c:4820
msgid " -S Test with SSL encryption."
msgstr " -S Prueba con cifrado SSL."
+#: test/ippfind.c:2748
msgid " -T seconds Set the browse timeout in seconds."
msgstr ""
+" -T segundos Establece el tiempo de espera de navegación en "
+"segundos."
+#: test/ipptool.c:4822
msgid " -T seconds Set the receive/send timeout in seconds."
msgstr ""
" -T segundos Establece el tiempo de espera de recepción/envío "
"en segundos."
+#: scheduler/cupsfilter.c:1486 systemv/cupsaddsmb.c:288 systemv/cupsctl.c:206
msgid " -U username Specify username."
msgstr " -U nombre_usuario Especifica el nombre de usuario."
+#: test/ippfind.c:2750 test/ipptool.c:4824
msgid " -V version Set default IPP version."
msgstr " -V versión Establece la versión IPP predeterminada."
+#: systemv/cupstestppd.c:3822
msgid ""
" -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,"
"translations}"
@@ -1097,70 +1393,98 @@ msgstr ""
" -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,"
"translations}"
+#: test/ipptool.c:4826
msgid " -X Produce XML plist instead of plain text."
msgstr ""
" -X Produce XML plist en vez de texto sin formato."
+#: test/ippdiscover.c:818
msgid " -a Browse for all services."
-msgstr ""
+msgstr " -a Explorar todos los servicios."
+#: systemv/cupsaddsmb.c:289
msgid " -a Export all printers."
msgstr " -a Exporta todas las impresoras."
+#: test/ipptool.c:4828
+msgid " -c Produce CSV output."
+msgstr " -c Produce salida CSV."
+
+#: ppdc/ppdc.cxx:437
msgid " -c catalog.po Load the specified message catalog."
msgstr " -c catálogo.po Carga el catálogo de mensajes especificado."
+#: scheduler/cupsfilter.c:1487
msgid " -c cups-files.conf Set cups-files.conf file to use."
-msgstr ""
+msgstr " -c cups-files.conf Establece el archivo cups-files.conf a usar."
+#: scheduler/main.c:2147
msgid " -c cupsd.conf Set cupsd.conf file to use."
msgstr " -c cupsd.conf Establece el archivo cupsd.conf a usar."
+#: test/ippdiscover.c:819
msgid " -d domain Browse/resolve in specified domain."
msgstr ""
+" -d dominio Explora/resuelve en el dominio especificado."
+#: test/ipptool.c:4829
msgid " -d name=value Set named variable to value."
msgstr " -d nombre=valor Establece la variable al valor."
+#: ppdc/ppdc.cxx:439
msgid " -d output-dir Specify the output directory."
msgstr " -d dir-salida Especifica el directorio de salida."
+#: scheduler/cupsfilter.c:1488
msgid " -d printer Use the named printer."
msgstr " -d impresora Usa la impresora especificada."
+#: test/ippfind.c:2757
msgid " -d regex Match domain to regular expression."
msgstr ""
+" -d regex Hacer coincidir el dominio con la expresión regular."
+#: scheduler/cupsfilter.c:1489
msgid " -e Use every filter from the PPD file."
msgstr " -e Usa cada filtro desde el archivo PPD."
+#: scheduler/main.c:2148
msgid " -f Run in the foreground."
msgstr " -f Ejecuta en primer plano."
+#: test/ipptool.c:4831
msgid " -f filename Set default request filename."
msgstr ""
" -f nombre_archivo Establece nombre de archivo predeterminado."
+#: scheduler/main.c:2151
msgid " -h Show this usage message."
msgstr " -h Muestra este mensaje de uso."
+#: test/ippfind.c:2758
msgid " -h regex Match hostname to regular expression."
msgstr ""
+" -h regex Hacer coincidir el nombre del equipo con la "
+"expresión regular."
+#: systemv/cupsaddsmb.c:290 systemv/cupsctl.c:207
msgid " -h server[:port] Specify server address."
msgstr " -h servidor[:puerto] Especifica la dirección del servidor."
+#: scheduler/cupsfilter.c:1490
msgid " -i mime/type Set input MIME type (otherwise auto-typed)."
msgstr ""
" -i tipo/mime Establece el tipo MIME de entrada (si no, auto-"
"typed)."
+#: test/ipptool.c:4833
msgid ""
" -i seconds Repeat the last file with the given time interval."
msgstr ""
" -i segundos Repite el último archivo con el intervalo de "
"tiempo dado."
+#: scheduler/cupsfilter.c:1491
msgid ""
" -j job-id[,N] Filter file N from the specified job (default is "
"file 1)."
@@ -1168,529 +1492,823 @@ msgstr ""
" -j id-trabajo[,N] Filtra el archivo N desde el trabajo "
"especificado (predeterminado archivo 1)."
+#: test/ippfind.c:2759
msgid " -l List attributes."
-msgstr ""
+msgstr " -l Lista atributos."
-msgid " -l Run cupsd from launchd(8)."
-msgstr " -l Ejecuta cupsd desde launchd(8)."
+#: test/ipptool.c:4835
+msgid " -l Produce plain text output."
+msgstr " -l Produce salida en texto plano."
+#: scheduler/main.c:2152
+msgid " -l Run cupsd on demand."
+msgstr " -l Ejecuta cupsd según demanda."
+
+#: ppdc/ppdc.cxx:441
msgid " -l lang[,lang,...] Specify the output language(s) (locale)."
msgstr ""
" -l idioma[,idioma,...] Especifica los idiomas de salida (código "
"regional)."
+#: ppdc/ppdc.cxx:443
msgid " -m Use the ModelName value as the filename."
msgstr ""
" -m Usa el valor ModelName como nombre de archivo."
+#: scheduler/cupsfilter.c:1492
msgid ""
" -m mime/type Set output MIME type (otherwise application/pdf)."
msgstr ""
" -m tipo/mime Establece el tipo MIME de salida (si no, "
"application/pdf)."
+#: scheduler/cupsfilter.c:1493
msgid " -n copies Set number of copies."
msgstr " -n copias Establece el número de copias."
+#: test/ipptool.c:4836
msgid ""
" -n count Repeat the last file the given number of times."
msgstr ""
" -n contador Repite el último archivo el número de veces "
"especificado."
+#: test/ippfind.c:2760
msgid " -n regex Match service name to regular expression."
msgstr ""
+" -n regex Hacer coincidir el nombre del servicio con la "
+"expresión regular."
+#: ppdc/ppdi.cxx:133
msgid ""
" -o filename.drv Set driver information file (otherwise ppdi.drv)."
msgstr ""
" -o nombre_archivo.drv Establece el archivo de información del "
"controlador (si no, ppdi.drv)."
+#: ppdc/ppdmerge.cxx:364
msgid " -o filename.ppd[.gz] Set output file (otherwise stdout)."
msgstr ""
" -o nombre_archivo.ppd[.gz] Establece el archivo de salida (si no, "
"stdout)."
+#: scheduler/cupsfilter.c:1494
msgid " -o name=value Set option(s)."
msgstr " -o nombre=valor Establece opciones."
+#: test/ippfind.c:2761
msgid " -p Print URI if true."
-msgstr ""
+msgstr " -p Imprimir URI si es cierto."
+#: scheduler/cupsfilter.c:1495
msgid " -p filename.ppd Set PPD file."
msgstr " -p nombre_archivo.ppd Establece archivo PPD."
+#: test/ippdiscover.c:820
msgid " -p program Run specified program for each service."
msgstr ""
+" -p program Ejecuta el programa especificado para cada "
+"servicio."
+#: test/ippfind.c:2762
msgid " -q Quietly report match via exit code."
msgstr ""
+" -q Silenciosamente informar de la coincidencia via "
+"código de salida."
+#: systemv/cupstestppd.c:3826 test/ipptool.c:4838
msgid " -q Run silently."
msgstr " -q Ejecución silenciosa."
+#: test/ippfind.c:2763
msgid " -r True if service is remote."
-msgstr ""
+msgstr " -r Cierto si el servicio es remoto."
+#: systemv/cupstestppd.c:3827
msgid " -r Use 'relaxed' open mode."
msgstr " -r Usa modo abierto 'relajado'."
+#: test/ippfind.c:2764
msgid " -s Print service name if true."
-msgstr ""
+msgstr " -s Imprimir nombre del servicio si es cierto."
+#: test/ipptool.c:4839
msgid " -t Produce a test report."
msgstr " -t Produce un informe de la prueba."
+#: ppdc/ppdc.cxx:445
msgid " -t Test PPDs instead of generating them."
msgstr " -t Prueba los PPDs en vez de generarlos."
+#: scheduler/main.c:2153
msgid " -t Test the configuration file."
msgstr " -t Prueba el archivo de configuración."
+#: test/ippfind.c:2765
msgid " -t key True if the TXT record contains the key."
-msgstr ""
+msgstr " -t clave Cierto si el registro TXT contiene la clave."
+#: scheduler/cupsfilter.c:1496
msgid " -t title Set title."
-msgstr " -t título Establece título."
+msgstr " -t título Establece título."
+#: test/ippdiscover.c:821
msgid " -t type Browse/resolve with specified type."
-msgstr ""
+msgstr " -t tipo Explora/resuelve con el tipo especificado."
+#: scheduler/cupsfilter.c:1497
msgid " -u Remove the PPD file when finished."
msgstr " -u Borra el archivo PPD tras terminar."
+#: test/ippfind.c:2766
msgid " -u regex Match URI to regular expression."
msgstr ""
+" -u regex Hacer coincidir la URI a la expresión regular."
+#: systemv/cupsaddsmb.c:291 systemv/cupstestppd.c:3828 test/ipptool.c:4840
+#: ppdc/ppdc.cxx:447 ppdc/ppdpo.cxx:259
msgid " -v Be verbose."
-msgstr " -v Ser detallado."
+msgstr " -v Ser detallado."
+#: systemv/cupstestppd.c:3829
msgid " -vv Be very verbose."
msgstr " -vv Ser muy detallado."
+#: test/ippfind.c:2767
msgid ""
" -x utility [argument ...] ;\n"
" Execute program if true."
msgstr ""
+" -x utilidad [argumento ...] ;\n"
+" Ejecutar programa si es cierto."
+#: ppdc/ppdc.cxx:448
msgid " -z Compress PPD files using GNU zip."
msgstr " -z Comprimir archivos PPD usando GNU zip."
+#: test/ippfind.c:2810
msgid " IPPFIND_SERVICE_DOMAIN Domain name"
-msgstr ""
+msgstr " IPPFIND_SERVICE_DOMAIN Nombre de dominio"
+#: test/ippfind.c:2811
msgid ""
" IPPFIND_SERVICE_HOSTNAME\n"
" Fully-qualified domain name"
msgstr ""
+" IPPFIND_SERVICE_HOSTNAME\n"
+" Nombre de dominio completo"
+#: test/ippfind.c:2813
msgid " IPPFIND_SERVICE_NAME Service instance name"
-msgstr ""
+msgstr " IPPFIND_SERVICE_NAME Nombre de la instancia del servicio"
+#: test/ippfind.c:2814
msgid " IPPFIND_SERVICE_PORT Port number"
-msgstr ""
+msgstr " IPPFIND_SERVICE_PORT Número del puerto"
+#: test/ippfind.c:2815
msgid " IPPFIND_SERVICE_REGTYPE DNS-SD registration type"
-msgstr ""
+msgstr " IPPFIND_SERVICE_REGTYPE Tipo de registro DNS-SD"
+#: test/ippfind.c:2816
msgid " IPPFIND_SERVICE_SCHEME URI scheme"
-msgstr ""
+msgstr " IPPFIND_SERVICE_SCHEME Esquema URI"
+#: test/ippfind.c:2817
msgid " IPPFIND_SERVICE_URI URI"
-msgstr ""
+msgstr " IPPFIND_SERVICE_URI URI"
+#: test/ippfind.c:2818
msgid " IPPFIND_TXT_* Value of TXT record key"
-msgstr ""
+msgstr " IPPFIND_TXT_* Valor de la clave del registro TXT"
+#: test/ippfind.c:2793
msgid ""
" expression --and expression\n"
" Logical AND."
msgstr ""
+" expresión --and expresión\n"
+" AND lógico."
+#: test/ippfind.c:2795
msgid ""
" expression --or expression\n"
" Logical OR."
msgstr ""
+" expresión --or expresión\n"
+" OR lógico."
+#: test/ippfind.c:2792
msgid " expression expression Logical AND."
-msgstr ""
+msgstr " expresión expresión AND lógico."
+#: test/ippfind.c:2800
msgid " {service_domain} Domain name"
-msgstr ""
+msgstr " {service_domain} Nombre de dominio"
+#: test/ippfind.c:2801
msgid " {service_hostname} Fully-qualified domain name"
-msgstr ""
+msgstr " {service_hostname} Nombre de dominio completo"
+#: test/ippfind.c:2802
msgid " {service_name} Service instance name"
-msgstr ""
+msgstr " {service_name} Nombre de la instancia del servicio"
+#: test/ippfind.c:2803
msgid " {service_port} Port number"
-msgstr ""
+msgstr " {service_port} Número de puerto"
+#: test/ippfind.c:2804
msgid " {service_regtype} DNS-SD registration type"
-msgstr ""
+msgstr " {service_regtype} Tipo de registro DNS-SD"
+#: test/ippfind.c:2805
msgid " {service_scheme} URI scheme"
-msgstr ""
+msgstr " {service_scheme} Esquema URI"
+#: test/ippfind.c:2806
msgid " {service_uri} URI"
-msgstr ""
+msgstr " {service_uri} URI"
+#: test/ippfind.c:2807
msgid " {txt_*} Value of TXT record key"
-msgstr ""
+msgstr " {txt_*} Valor de la clave del registro TXT"
+#: test/ippfind.c:2799
msgid " {} URI"
-msgstr ""
-
+msgstr " {} URI"
+
+#: 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:3407 systemv/cupstestppd.c:3443
+#: systemv/cupstestppd.c:3457 systemv/cupstestppd.c:3503
+#: systemv/cupstestppd.c:3535 systemv/cupstestppd.c:3552
+#: systemv/cupstestppd.c:3575 systemv/cupstestppd.c:3591
+#: systemv/cupstestppd.c:3629 systemv/cupstestppd.c:3770
+#: systemv/cupstestppd.c:3792 systemv/cupstestppd.c:3900
msgid " FAIL"
msgstr " FALLO"
+#: systemv/cupstestppd.c:1306
msgid " PASS"
msgstr " PASA"
+#: cups/ipp.c:5227
#, c-format
msgid "\"%s\": Bad URI value \"%s\" - %s (RFC 2911 section 4.1.5)."
-msgstr ""
+msgstr "\"%s\": Valor URI \"%s\" incorrecto - %s (RFC 2911 sección 4.1.5)."
+#: cups/ipp.c:5238
#, c-format
msgid "\"%s\": Bad URI value \"%s\" - bad length %d (RFC 2911 section 4.1.5)."
msgstr ""
+"\"%s\": Valor URI \"%s\" incorrecto - longitud %d incorrecta (RFC 2911 "
+"sección 4.1.5)."
+#: cups/ipp.c:4858
#, c-format
msgid "\"%s\": Bad attribute name - bad length %d (RFC 2911 section 4.1.3)."
msgstr ""
+"\"%s\": Nombre de atributo incorrecto - longitud %d incorrecta (RFC 2911 "
+"sección 4.1.3)."
+#: cups/ipp.c:4850
#, c-format
msgid ""
"\"%s\": Bad attribute name - invalid character (RFC 2911 section 4.1.3)."
msgstr ""
+"\"%s\": Nombre de atributo incorrecto - carácter inválido (RFC 2911 sección "
+"4.1.3)."
+#: cups/ipp.c:4876
#, c-format
msgid "\"%s\": Bad boolen value %d (RFC 2911 section 4.1.11)."
-msgstr ""
+msgstr "\"%s\": Valor lógico \"%d\" incorrecto (RFC 2911 sección 4.1.11)."
+#: cups/ipp.c:5290
#, c-format
msgid ""
"\"%s\": Bad charset value \"%s\" - bad characters (RFC 2911 section 4.1.7)."
msgstr ""
+"\"%s\": Valor del juego de caracteres \"%s\" incorrecto - caracteres "
+"incorrectos (RFC 2911 sección 4.1.7)."
+#: cups/ipp.c:5299
#, c-format
msgid ""
"\"%s\": Bad charset value \"%s\" - bad length %d (RFC 2911 section 4.1.7)."
msgstr ""
+"\"%s\": Valor del juego de caracteres \"%s\" incorrecto - longitud %d "
+"incorrecta (RFC 2911 sección 4.1.7)."
+#: cups/ipp.c:4976
#, c-format
msgid "\"%s\": Bad dateTime UTC hours %u (RFC 2911 section 4.1.14)."
-msgstr ""
+msgstr "\"%s\": Horas dateTime UTC %u incorrectas (RFC 2911 sección 4.1.14)."
+#: cups/ipp.c:4984
#, c-format
msgid "\"%s\": Bad dateTime UTC minutes %u (RFC 2911 section 4.1.14)."
-msgstr ""
+msgstr "\"%s\": Minutos dateTime UTC %u incorrectos (RFC 2911 sección 4.1.14)."
+#: cups/ipp.c:4968
#, c-format
msgid "\"%s\": Bad dateTime UTC sign '%c' (RFC 2911 section 4.1.14)."
-msgstr ""
+msgstr "\"%s\": Signo dateTime UTC %c incorrecto (RFC 2911 sección 4.1.14)."
+#: cups/ipp.c:4928
#, c-format
msgid "\"%s\": Bad dateTime day %u (RFC 2911 section 4.1.14)."
-msgstr ""
+msgstr "\"%s\": Día dateTime %u incorrecto (RFC 2911 sección 4.1.14)."
+#: cups/ipp.c:4960
#, c-format
msgid "\"%s\": Bad dateTime deciseconds %u (RFC 2911 section 4.1.14)."
msgstr ""
+"\"%s\": Décimas de segundo dateTime %u incorrectas (RFC 2911 sección 4.1.14)."
+#: cups/ipp.c:4936
#, c-format
msgid "\"%s\": Bad dateTime hours %u (RFC 2911 section 4.1.14)."
-msgstr ""
+msgstr "\"%s\": Horas dateTime %u incorrectas (RFC 2911 sección 4.1.14)."
+#: cups/ipp.c:4944
#, c-format
msgid "\"%s\": Bad dateTime minutes %u (RFC 2911 section 4.1.14)."
-msgstr ""
+msgstr "\"%s\": Minutos dateTime %u incorrectos (RFC 2911 sección 4.1.14)."
+#: cups/ipp.c:4920
#, c-format
msgid "\"%s\": Bad dateTime month %u (RFC 2911 section 4.1.14)."
-msgstr ""
+msgstr "\"%s\": Mes dateTime %u incorrecto (RFC 2911 sección 4.1.14)."
+#: cups/ipp.c:4952
#, c-format
msgid "\"%s\": Bad dateTime seconds %u (RFC 2911 section 4.1.14)."
-msgstr ""
+msgstr "\"%s\": Segundos dateTime %u incorrectos (RFC 2911 sección 4.1.14)."
+#: cups/ipp.c:4890
#, c-format
msgid "\"%s\": Bad enum value %d - out of range (RFC 2911 section 4.1.4)."
msgstr ""
+"\"%s\": Valor enumerado %d incorrecto - fuera de intervalo (RFC 2911 sección "
+"4.1.4)."
+#: cups/ipp.c:5205
#, c-format
msgid ""
"\"%s\": Bad keyword value \"%s\" - bad length %d (RFC 2911 section 4.1.3)."
msgstr ""
+"\"%s\": Valor clave \"%s\" incorrecto - longitud %d incorrecta (RFC 2911 "
+"sección 4.1.3)."
+#: cups/ipp.c:5196
#, c-format
msgid ""
"\"%s\": Bad keyword value \"%s\" - invalid character (RFC 2911 section "
"4.1.3)."
msgstr ""
+"\"%s\": Valor clave \"%s\" incorrecto - carácter inválido (RFC 2911 sección "
+"4.1.3)."
+#: cups/ipp.c:5399
#, c-format
msgid ""
"\"%s\": Bad mimeMediaType value \"%s\" - bad characters (RFC 2911 section "
"4.1.9)."
msgstr ""
+"\"%s\": Valor mimeMediaType \"%s\" incorrecto - caracteres incorrectos (RFC "
+"2911 sección 4.1.9)."
+#: cups/ipp.c:5409
#, c-format
msgid ""
"\"%s\": Bad mimeMediaType value \"%s\" - bad length %d (RFC 2911 section "
"4.1.9)."
msgstr ""
+"\"%s\": Valor mimeMediaType \"%s\" incorrecto - longitud %d incorrecta (RFC "
+"2911 sección 4.1.9)."
+#: cups/ipp.c:5167
#, c-format
msgid ""
"\"%s\": Bad name value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.2)."
msgstr ""
+"\"%s\": Valor del nombre \"%s\" incorrecto - secuencia UTF-8 incorrecta (RFC "
+"2911 sección 4.1.2)."
+#: cups/ipp.c:5176
#, c-format
msgid "\"%s\": Bad name value \"%s\" - bad length %d (RFC 2911 section 4.1.2)."
msgstr ""
+"\"%s\": Valor del nombre \"%s\" incorrecto - longitud %d incorrecta (RFC "
+"2911 sección 4.1.2)."
+#: cups/ipp.c:5345
#, c-format
msgid ""
"\"%s\": Bad naturalLanguage value \"%s\" - bad characters (RFC 2911 section "
"4.1.8)."
msgstr ""
+"\"%s\": Valor naturalLanguage \"%s\" incorrecto - caracteres incorrectos "
+"(RFC 2911 sección 4.1.8)."
+#: cups/ipp.c:5355
#, c-format
msgid ""
"\"%s\": Bad naturalLanguage value \"%s\" - bad length %d (RFC 2911 section "
"4.1.8)."
msgstr ""
+"\"%s\": Valor naturalLanguage \"%s\" incorrecto - longitud %d incorrecta "
+"(RFC 2911 sección 4.1.8)."
+#: cups/ipp.c:4904
#, c-format
msgid ""
"\"%s\": Bad octetString value - bad length %d (RFC 2911 section 4.1.10)."
msgstr ""
+"\"%s\": Valor octetString incorrecto - longitud %d incorrecta (RFC 2911 "
+"sección 4.1.10)."
+#: cups/ipp.c:5047
#, c-format
msgid ""
"\"%s\": Bad rangeOfInteger value %d-%d - lower greater than upper (RFC 2911 "
"section 4.1.13)."
msgstr ""
+"\"%s\": Valor rangeOfInteger %d-%d incorrecto - el más bajo es mayor que el "
+"más alto (RFC 2911 section 4.1.13)."
+#: cups/ipp.c:5028
#, c-format
msgid ""
"\"%s\": Bad resolution value %dx%d%s - bad units value (RFC 2911 section "
"4.1.15)."
msgstr ""
+"\"%s\": Valor de resolución %dx%d%s incorrecto - valores de unidades "
+"incorrectas (RFC 2911 section 4.1.15)."
+#: 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 ""
+"\"%s\": Valor de resolución %dx%d%s incorrecto - la resolución de la "
+"alimentación cruzada debe ser positiva (RFC 2911 sección 4.1.15)."
+#: 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 ""
+"\"%s\": Valor de resolución %dx%d%s incorrecto - la resolución de la "
+"alimentación debe ser positiva (RFC 2911 sección 4.1.15)."
+#: cups/ipp.c:5109
#, c-format
msgid ""
"\"%s\": Bad text value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.1)."
msgstr ""
+"\"%s\": Valor del texto \"%s\" incorrecto - secuencia UTF-8 incorrecta (RFC "
+"2911 sección 4.1.1)."
+#: cups/ipp.c:5118
#, c-format
msgid "\"%s\": Bad text value \"%s\" - bad length %d (RFC 2911 section 4.1.1)."
msgstr ""
+"\"%s\": Valor del texto \"%s\" incorrecto - longitud %d incorrecta (RFC 2911 "
+"sección 4.1.1)."
+#: cups/ipp.c:5261
#, c-format
msgid ""
"\"%s\": Bad uriScheme value \"%s\" - bad characters (RFC 2911 section 4.1.6)."
msgstr ""
+"\"%s\": Valor uriScheme \"%s\" incorrecto - caracteres incorrectos (RFC 2911 "
+"sección 4.1.6)."
+#: cups/ipp.c:5270
#, c-format
msgid ""
"\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 2911 section 4.1.6)."
msgstr ""
+"\"%s\": Valor uriScheme \"%s\" incorrecto - longitud %d incorrecta (RFC 2911 "
+"sección 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"
-
+#: berkeley/lpq.c:533
#, c-format
msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
msgstr "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
+#: cups/dest-localization.c:114
+#, c-format
+msgid "%d x %d mm"
+msgstr "%d x %d mm"
+
+#: cups/dest-localization.c:106
+#, c-format
+msgid "%g x %g"
+msgstr "%g x %g"
+
+#: cups/dest-localization.c:169 cups/dest-localization.c:176
+#, c-format
+msgid "%s (%s)"
+msgstr "%s (%s)"
+
+#: cups/dest-localization.c:183
+#, c-format
+msgid "%s (%s, %s)"
+msgstr "%s (%s, %s)"
+
+#: cups/dest-localization.c:160
+#, c-format
+msgid "%s (Borderless)"
+msgstr "%s (Sin bordes)"
+
+#: cups/dest-localization.c:167 cups/dest-localization.c:174
+#, c-format
+msgid "%s (Borderless, %s)"
+msgstr "%s (Sin bordes, %s)"
+
+#: cups/dest-localization.c:181
+#, c-format
+msgid "%s (Borderless, %s, %s)"
+msgstr "%s (Sin bordes, %s, %s)"
+
+#: systemv/lpstat.c:777
#, c-format
msgid "%s accepting requests since %s"
msgstr "%s aceptando peticiones desde %s"
+#: scheduler/ipp.c:9952
#, c-format
msgid "%s cannot be changed."
msgstr "%s no puede ser cambiado."
+#: berkeley/lpc.c:181
#, c-format
msgid "%s is not implemented by the CUPS version of lpc."
msgstr "%s no está implementado en la versión de CUPS de lpc."
+#: berkeley/lpq.c:618
#, c-format
msgid "%s is not ready"
msgstr "%s no está preparada"
+#: berkeley/lpq.c:611
#, c-format
msgid "%s is ready"
msgstr "%s está preparada"
+#: berkeley/lpq.c:614
#, c-format
msgid "%s is ready and printing"
msgstr "%s está preparada e imprimiendo"
+#: filter/rastertoepson.c:970 filter/rastertohp.c:700
+#: filter/rastertolabel.c:1120
#, c-format
msgid "%s job-id user title copies options [file]"
msgstr "%s job-id usuario título copias opciones [archivo]"
+#: systemv/lpstat.c:781
#, c-format
msgid "%s not accepting requests since %s -"
msgstr "%s no acepta peticiones desde %s -"
+#: scheduler/ipp.c:618
#, c-format
msgid "%s not supported."
-msgstr "No se admite el uso de %s."
+msgstr "%s no está implementado."
+#: systemv/lpstat.c:792
#, c-format
msgid "%s/%s accepting requests since %s"
msgstr "%s/%s aceptando peticiones desde %s"
+#: systemv/lpstat.c:797
#, c-format
msgid "%s/%s not accepting requests since %s -"
msgstr "%s/%s no acepta peticiones desde %s -"
+#: berkeley/lpq.c:526
#, c-format
msgid "%s: %-33.33s [job %d localhost]"
msgstr "%s: %-33.33s [trabajo %d localhost]"
#. TRANSLATORS: Message is "subject: error"
+#: 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 "%s: %s"
+#: systemv/cancel.c:305 systemv/cancel.c:368
#, c-format
msgid "%s: %s failed: %s"
msgstr "%s: %s ha fallado: %s"
+#: test/ippfind.c:777 test/ipptool.c:378
#, c-format
msgid "%s: Bad version %s for \"-V\"."
-msgstr ""
+msgstr "%s: Versión %s incorrecta para \"-V\"."
+#: systemv/cupsaccept.c:68
#, c-format
msgid "%s: Don't know what to do."
msgstr "%s: No sé que hay que hacer."
+#: 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 ""
"%s: Error - %s nombres de variables de entorno no existen en destino \"%s\"."
+#: berkeley/lpq.c:133 berkeley/lpq.c:203 berkeley/lpr.c:230 berkeley/lpr.c:333
+#: systemv/lp.c:157 systemv/lp.c:577 systemv/lp.c:697 systemv/lp.c:746
+#: systemv/lpstat.c:195 systemv/lpstat.c:241 systemv/lpstat.c:332
+#: systemv/lpstat.c:361 systemv/lpstat.c:385 systemv/lpstat.c:444
+#: systemv/lpstat.c:510 systemv/lpstat.c:571 systemv/lpstat.c:696
+#: systemv/lpstat.c:880 systemv/lpstat.c:1141 systemv/lpstat.c:1339
+#: systemv/lpstat.c:1579
#, c-format
msgid "%s: Error - add '/version=1.1' to server name."
-msgstr ""
+msgstr "%s: Error - añada '/version=1.1' al nombre del servidor."
+#: systemv/lp.c:234
#, c-format
msgid "%s: Error - bad job ID."
msgstr "%s: Error - ID de trabajo incorrecta."
+#: systemv/lp.c:222
#, c-format
msgid "%s: Error - cannot print files and alter jobs simultaneously."
msgstr ""
"%s: Error - no se pueden imprimir archivos y alterar trabajos al mismo "
"tiempo."
+#: systemv/lp.c:515
#, c-format
msgid "%s: Error - cannot print from stdin if files or a job ID are provided."
msgstr ""
"%s: Error - no se puede imprimir desde stdin si se proporcionan archivos o "
"una ID de trabajo."
+#: systemv/lp.c:464
#, c-format
msgid "%s: Error - expected character set after \"-S\" option."
msgstr "%s: Error - se esperaba un juego de caracteres tras la opción \"-S\"."
+#: systemv/lp.c:483
#, c-format
msgid "%s: Error - expected content type after \"-T\" option."
msgstr "%s: Error - se esperaba un tipo de contenido tras la opción \"-T\"."
+#: berkeley/lpr.c:245
#, c-format
msgid "%s: Error - expected copies after \"-#\" option."
-msgstr "%s: Error - se esperaba número de copias tras la opción \"-#\"."
+msgstr "%s: Error - se esperaba número de copias tras la opción \"-#\"."
+#: systemv/lp.c:267
#, c-format
msgid "%s: Error - expected copies after \"-n\" option."
-msgstr "%s: Error - se esperaba número de copias tras la opción \"-n\"."
+msgstr "%s: Error - se esperaba número de copias tras la opción \"-n\"."
+#: berkeley/lpr.c:206
#, c-format
msgid "%s: Error - expected destination after \"-P\" option."
msgstr "%s: Error - se esperaba un destino tras la opción \"-P\"."
+#: systemv/lp.c:132
#, c-format
msgid "%s: Error - expected destination after \"-d\" option."
-msgstr "%s: Error - se esperaba un destino tras la opción \"-d\"."
+msgstr "%s: Error - se esperaba un destino tras la opción \"-d\"."
+#: systemv/lp.c:171
#, c-format
msgid "%s: Error - expected form after \"-f\" option."
msgstr "%s: Error - se esperaba un formulario tras la opción \"-f\"."
+#: systemv/lp.c:394
#, c-format
msgid "%s: Error - expected hold name after \"-H\" option."
msgstr "%s: Error - se esperaba un nombre de retención tras la opción \"-H\"."
+#: berkeley/lpr.c:100
#, c-format
msgid "%s: Error - expected hostname after \"-H\" option."
-msgstr "%s: Error - se esperaba un nombre de ordenador tras la opción \"-H\"."
+msgstr "%s: Error - se esperaba un nombre de equipo tras la opción \"-H\"."
+#: 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 "%s: Error - se esperaba un nombre de ordenador tras la opción \"-h\"."
+msgstr "%s: Error - se esperaba un nombre de equipo tras la opción \"-h\"."
+#: systemv/lp.c:374
#, c-format
msgid "%s: Error - expected mode list after \"-y\" option."
msgstr "%s: Error - se esperaba una lista de modos tras la opción \"-y\"."
+#: berkeley/lpr.c:268
#, c-format
msgid "%s: Error - expected name after \"-%c\" option."
-msgstr "%s: Error - se esperaba un nombre tras la opción \"%c\"."
+msgstr "%s: Error - se esperaba un nombre tras la opción \"-%c\"."
+#: berkeley/lpr.c:150 systemv/lp.c:291
#, c-format
msgid "%s: Error - expected option=value after \"-o\" option."
msgstr "%s: Error - se esperaba opción=valor tras la opción \"-o\"."
+#: systemv/lp.c:444
#, c-format
msgid "%s: Error - expected page list after \"-P\" option."
msgstr "%s: Error - se esperaba una lista de páginas tras la opción \"-P\"."
+#: systemv/lp.c:311
#, c-format
msgid "%s: Error - expected priority after \"-%c\" option."
msgstr "%s: Error - se esperaba un valor de prioridad tras la opción \"-%c\"."
+#: systemv/cupsaccept.c:141
#, c-format
msgid "%s: Error - expected reason text after \"-r\" option."
msgstr "%s: Error - se esperaba un texto con una razón tras la opción \"-r\"."
+#: systemv/lp.c:357
#, c-format
msgid "%s: Error - expected title after \"-t\" option."
msgstr "%s: Error - se esperaba un título tras la opción \"-t\"."
+#: 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 "%s: Error - se esperaba un nombre de usuario tras la opción \"-U\"."
+#: systemv/cancel.c:145
#, c-format
msgid "%s: Error - expected username after \"-u\" option."
msgstr "%s: Error - se esperaba un nombre de usuario tras la opción \"-u\"."
+#: berkeley/lpr.c:122
#, c-format
msgid "%s: Error - expected value after \"-%c\" option."
-msgstr "%s: Error - se esperaba un valor tras la opción \"%c\"."
+msgstr "%s: Error - se esperaba un valor tras la opción \"-%c\"."
+#: systemv/lpstat.c:144 systemv/lpstat.c:158
#, c-format
msgid ""
"%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" "
@@ -1699,131 +2317,178 @@ msgstr ""
"%s: Error - se necesita \"completed\", \"not completed\", o \"all\" tras la "
"opción \"-W\"."
+#: berkeley/lpq.c:230 berkeley/lpr.c:363 systemv/lp.c:607
#, c-format
msgid "%s: Error - no default destination available."
msgstr "%s: Error - destino predeterminado no disponible."
+#: systemv/lp.c:333
#, c-format
msgid "%s: Error - priority must be between 1 and 100."
msgstr "%s: Error - la prioridad debe estar entre 1 y 100."
+#: berkeley/lpr.c:366 systemv/lp.c:610
#, c-format
msgid "%s: Error - scheduler not responding."
msgstr "%s: Error - el programa planificador de tareas no responde."
+#: berkeley/lpr.c:311 systemv/lp.c:547
#, c-format
msgid "%s: Error - too many files - \"%s\"."
msgstr "%s: Error - demasiados archivos - \"%s\"."
+#: berkeley/lpr.c:293 systemv/lp.c:530
#, c-format
msgid "%s: Error - unable to access \"%s\" - %s"
msgstr "%s: Error - no se ha podido acceder a \"%s\" - %s"
+#: berkeley/lpr.c:409 systemv/lp.c:641
#, c-format
msgid "%s: Error - unable to queue from stdin - %s."
msgstr "%s: Error - no se ha podido poner en cola desde stdin - %s."
+#: berkeley/lprm.c:87 berkeley/lprm.c:172 systemv/cancel.c:222
#, c-format
msgid "%s: Error - unknown destination \"%s\"."
msgstr "%s: Error - destino \"%s\" desconocido."
+#: berkeley/lpq.c:137
#, c-format
msgid "%s: Error - unknown destination \"%s/%s\"."
msgstr "%s: Error - destino \"%s/%s\" desconocido."
+#: 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 "%s: Error - opción \"%c\" desconocida."
+#: systemv/cupsaccept.c:157 systemv/lp.c:497
#, c-format
msgid "%s: Error - unknown option \"%s\"."
-msgstr "%s: Error: opción \"%s\" desconocida."
+msgstr "%s: Error - opción \"%s\" desconocida."
+#: systemv/lp.c:211
#, c-format
msgid "%s: Expected job ID after \"-i\" option."
-msgstr "%s : Se esperaba una ID de trabajo tras la opción \"-i\"."
+msgstr "%s: Se esperaba una ID de trabajo tras la opción \"-i\"."
+#: systemv/lpstat.c:514 systemv/lpstat.c:554
#, c-format
msgid "%s: Invalid destination name in list \"%s\"."
msgstr "%s: Nombre de destino no válido en la lista \"%s\"."
+#: scheduler/cupsfilter.c:579
#, c-format
msgid "%s: Invalid filter string \"%s\"."
msgstr "%s: Cadena de filtro \"%s\" no válida."
+#: test/ipptool.c:309
+#, c-format
+msgid "%s: Missing filename for \"-P\"."
+msgstr "%s: Falta el nombre del archivo para \"-P\"."
+
+#: test/ippfind.c:749 test/ipptool.c:346
#, c-format
msgid "%s: Missing timeout for \"-T\"."
-msgstr ""
+msgstr "%s: Falta el tiempo de espera para \"-T\"."
+#: test/ippfind.c:762 test/ipptool.c:360
#, c-format
msgid "%s: Missing version for \"-V\"."
-msgstr ""
+msgstr "%s: Falta la versión para \"-V\"."
+#: systemv/lp.c:421
#, c-format
msgid "%s: Need job ID (\"-i jobid\") before \"-H restart\"."
msgstr ""
"%s: Se necesita un ID de trabajo (\"-i id_trabajo\") antes de \"-H restart\"."
+#: scheduler/cupsfilter.c:451
#, c-format
msgid "%s: No filter to convert from %s/%s to %s/%s."
msgstr "%s: No hay ningún filtro para convertir de %s/%s a %s/%s."
+#: systemv/cupsaccept.c:198
#, c-format
msgid "%s: Operation failed: %s"
msgstr "%s: La operación ha fallado: %s"
+#: 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:291 test/ipptool.c:335
#, c-format
msgid "%s: Sorry, no encryption support."
-msgstr "%s: Lo siento, no está compilado con la opción de cifrado."
+msgstr "%s: Lo siento, no está implementado el cifrado."
+#: 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."
msgstr "%s: No se ha podido conectar al servidor."
+#: systemv/cancel.c:328
#, c-format
msgid "%s: Unable to contact server."
msgstr "%s: No se ha podido contactar con el servidor."
+#: scheduler/cupsfilter.c:416
#, c-format
msgid "%s: Unable to determine MIME type of \"%s\"."
msgstr "%s: No se ha podido determinar el tipo MIME de \"%s\"."
+#: test/ipptool.c:318
+#, c-format
+msgid "%s: Unable to open \"%s\": %s"
+msgstr "%s: No se pudo abrir \"%s\": %s"
+
+#: ppdc/ppdmerge.cxx:90
#, c-format
msgid "%s: Unable to open %s: %s"
msgstr "%s: No se pudo abrir %s: %s"
+#: scheduler/cupsfilter.c:674 ppdc/ppdmerge.cxx:106
#, c-format
msgid "%s: Unable to open PPD file: %s on line %d."
msgstr "%s: No se ha podido abrir el archivo PPD: %s en la línea %d."
+#: scheduler/cupsfilter.c:383
#, c-format
msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"."
msgstr "%s: No se pudo leer base de datos MIME desde \"%s\" o \"%s\"."
+#: berkeley/lpq.c:140 systemv/lpstat.c:575
#, c-format
msgid "%s: Unknown destination \"%s\"."
msgstr "%s: Destino \"%s\" desconocido."
+#: scheduler/cupsfilter.c:428
#, c-format
msgid "%s: Unknown destination MIME type %s/%s."
msgstr "%s: Tipo MIME de destino %s/%s desconocido."
+#: scheduler/cupsfilter.c:1479
#, c-format
msgid "%s: Unknown option \"%c\"."
msgstr "%s: Opción \"%c\" desconocida."
+#: test/ippfind.c:648
#, c-format
msgid "%s: Unknown option \"%s\"."
-msgstr ""
+msgstr "%s: Opción \"%s\" desconocida."
+#: test/ippfind.c:928
#, c-format
msgid "%s: Unknown option \"-%c\"."
-msgstr ""
+msgstr "%s: Opción \"-%c\" desconocida."
+#: scheduler/cupsfilter.c:408
#, c-format
msgid "%s: Unknown source MIME type %s/%s."
msgstr "%s: Tipo MIME de origen %s/%s desconocido."
+#: berkeley/lpr.c:136
#, c-format
msgid ""
"%s: Warning - \"%c\" format modifier not supported - output may not be "
@@ -1832,990 +2497,1350 @@ msgstr ""
"%s: Advertencia - no se admite el uso del modificador de formato \"%c\" - la "
"salida puede no ser correcta."
+#: systemv/lp.c:471
#, c-format
msgid "%s: Warning - character set option ignored."
msgstr "%s: Advertencia - opción de juego de caracteres no tenida en cuenta."
+#: systemv/lp.c:490
#, c-format
msgid "%s: Warning - content type option ignored."
msgstr "%s: Advertencia - opción de tipo de contenido no tenida en cuenta."
+#: systemv/lp.c:178
#, c-format
msgid "%s: Warning - form option ignored."
msgstr "%s: Advertencia - opción de formulario no tenida en cuenta."
+#: systemv/lp.c:381
#, c-format
msgid "%s: Warning - mode option ignored."
msgstr "%s: Advertencia - opción de modo no tenida en cuenta."
+#: ppdc/sample.c:305
msgid "-1"
msgstr "-1"
+#: ppdc/sample.c:296
msgid "-10"
msgstr "-10"
+#: ppdc/sample.c:388
msgid "-100"
msgstr "-100"
+#: ppdc/sample.c:387
msgid "-105"
msgstr "-105"
+#: ppdc/sample.c:295
msgid "-11"
msgstr "-11"
+#: ppdc/sample.c:386
msgid "-110"
msgstr "-110"
+#: ppdc/sample.c:385
msgid "-115"
msgstr "-115"
+#: ppdc/sample.c:294
msgid "-12"
msgstr "-12"
+#: ppdc/sample.c:384
msgid "-120"
msgstr "-120"
+#: ppdc/sample.c:293
msgid "-13"
msgstr "-13"
+#: ppdc/sample.c:292
msgid "-14"
msgstr "-14"
+#: ppdc/sample.c:291
msgid "-15"
msgstr "-15"
+#: ppdc/sample.c:304
msgid "-2"
msgstr "-2"
+#: ppdc/sample.c:404
msgid "-20"
msgstr "-20"
+#: ppdc/sample.c:403
msgid "-25"
msgstr "-25"
+#: ppdc/sample.c:303
msgid "-3"
msgstr "-3"
+#: ppdc/sample.c:402
msgid "-30"
msgstr "-30"
+#: ppdc/sample.c:401
msgid "-35"
msgstr "-35"
+#: ppdc/sample.c:302
msgid "-4"
msgstr "-4"
+#: ppdc/sample.c:400
msgid "-40"
msgstr "-40"
+#: ppdc/sample.c:399
msgid "-45"
msgstr "-45"
+#: ppdc/sample.c:301
msgid "-5"
msgstr "-5"
+#: ppdc/sample.c:398
msgid "-50"
msgstr "-50"
+#: ppdc/sample.c:397
msgid "-55"
msgstr "-55"
+#: ppdc/sample.c:300
msgid "-6"
msgstr "-6"
+#: ppdc/sample.c:396
msgid "-60"
msgstr "-60"
+#: ppdc/sample.c:395
msgid "-65"
msgstr "-65"
+#: ppdc/sample.c:299
msgid "-7"
msgstr "-7"
+#: ppdc/sample.c:394
msgid "-70"
msgstr "-70"
+#: ppdc/sample.c:393
msgid "-75"
msgstr "-75"
+#: ppdc/sample.c:298
msgid "-8"
msgstr "-8"
+#: ppdc/sample.c:392
msgid "-80"
msgstr "-80"
+#: ppdc/sample.c:391
msgid "-85"
msgstr "-85"
+#: ppdc/sample.c:297
msgid "-9"
msgstr "-9"
+#: ppdc/sample.c:390
msgid "-90"
msgstr "-90"
+#: ppdc/sample.c:389
msgid "-95"
msgstr "-95"
+#: ppdc/sample.c:306
msgid "0"
msgstr "0"
+#: ppdc/sample.c:307
msgid "1"
msgstr "1"
+#: ppdc/sample.c:379
msgid "1 inch/sec."
msgstr "1 pulg./seg"
+#: ppdc/sample.c:172
msgid "1.25x0.25\""
msgstr "1.25x0.25 pulg."
+#: ppdc/sample.c:173
msgid "1.25x2.25\""
msgstr "1.25x2.25 pulg."
+#: ppdc/sample.c:427
msgid "1.5 inch/sec."
msgstr "1.5 pulg./seg"
+#: ppdc/sample.c:174
msgid "1.50x0.25\""
msgstr "1.50x0.25 pulg."
+#: ppdc/sample.c:175
msgid "1.50x0.50\""
msgstr "1.50x0.50 pulg."
+#: ppdc/sample.c:176
msgid "1.50x1.00\""
msgstr "1.50x1.00 pulg."
+#: ppdc/sample.c:177
msgid "1.50x2.00\""
msgstr "1.50x2.00 pulg."
+#: ppdc/sample.c:316
msgid "10"
msgstr "10"
+#: ppdc/sample.c:438
msgid "10 inches/sec."
msgstr "10 pulg./seg"
+#: ppdc/sample.c:6
msgid "10 x 11"
msgstr "10 x 11"
+#: ppdc/sample.c:7
msgid "10 x 13"
msgstr "10 x 13"
+#: ppdc/sample.c:8
msgid "10 x 14"
msgstr "10 x 14"
+#: ppdc/sample.c:418
msgid "100"
msgstr "100"
+#: ppdc/sample.c:329
msgid "100 mm/sec."
msgstr "100 mm/seg"
+#: ppdc/sample.c:419
msgid "105"
msgstr "105"
+#: ppdc/sample.c:317
msgid "11"
msgstr "11"
+#: ppdc/sample.c:439
msgid "11 inches/sec."
msgstr "11 pulg./seg"
+#: ppdc/sample.c:420
msgid "110"
msgstr "110"
+#: ppdc/sample.c:421
msgid "115"
msgstr "115"
+#: ppdc/sample.c:318
msgid "12"
msgstr "12"
+#: ppdc/sample.c:440
msgid "12 inches/sec."
msgstr "12 pulg./seg"
+#: ppdc/sample.c:9
msgid "12 x 11"
msgstr "12 x 11"
+#: ppdc/sample.c:422
msgid "120"
msgstr "120"
+#: ppdc/sample.c:330
msgid "120 mm/sec."
msgstr "120 mm/seg"
+#: ppdc/sample.c:243
msgid "120x60dpi"
msgstr "120x60ppp"
+#: ppdc/sample.c:249
msgid "120x72dpi"
msgstr "120x72ppp"
+#: ppdc/sample.c:319
msgid "13"
msgstr "13"
+#: ppdc/sample.c:232
msgid "136dpi"
msgstr "136ppp"
+#: ppdc/sample.c:320
msgid "14"
msgstr "14"
+#: ppdc/sample.c:321
msgid "15"
msgstr "15"
+#: ppdc/sample.c:323
msgid "15 mm/sec."
msgstr "15 mm/seg"
+#: ppdc/sample.c:10
msgid "15 x 11"
msgstr "15 x 11"
+#: ppdc/sample.c:331
msgid "150 mm/sec."
msgstr "150 mm/seg"
+#: ppdc/sample.c:278
msgid "150dpi"
msgstr "150ppp"
+#: ppdc/sample.c:363
msgid "16"
msgstr "16"
+#: ppdc/sample.c:364
msgid "17"
msgstr "17"
+#: ppdc/sample.c:365
msgid "18"
msgstr "18"
+#: ppdc/sample.c:244
msgid "180dpi"
msgstr "180ppp"
+#: ppdc/sample.c:366
msgid "19"
msgstr "19"
+#: ppdc/sample.c:308
msgid "2"
msgstr "2"
+#: ppdc/sample.c:380
msgid "2 inches/sec."
msgstr "2 pulg./seg"
+#: ppdc/sample.c:262
msgid "2-Sided Printing"
msgstr "Dúplex"
+#: ppdc/sample.c:178
msgid "2.00x0.37\""
msgstr "2.00x0.37 pulg."
+#: ppdc/sample.c:179
msgid "2.00x0.50\""
msgstr "2.00x0.50 pulg."
+#: ppdc/sample.c:180
msgid "2.00x1.00\""
msgstr "2.00x1.00 pulg."
+#: ppdc/sample.c:181
msgid "2.00x1.25\""
msgstr "2.00x1.25 pulg."
+#: ppdc/sample.c:182
msgid "2.00x2.00\""
msgstr "2.00x2.00 pulg."
+#: ppdc/sample.c:183
msgid "2.00x3.00\""
msgstr "2.00x3.00 pulg."
+#: ppdc/sample.c:184
msgid "2.00x4.00\""
msgstr "2.00x4.00 pulg."
+#: ppdc/sample.c:185
msgid "2.00x5.50\""
msgstr "2.00x5.50 pulg."
+#: ppdc/sample.c:186
msgid "2.25x0.50\""
msgstr "2.25x0.50 pulg."
+#: ppdc/sample.c:187
msgid "2.25x1.25\""
msgstr "2.25x1.25 pulg."
+#: ppdc/sample.c:188
msgid "2.25x4.00\""
msgstr "2.25x4.00 pulg."
+#: ppdc/sample.c:189
msgid "2.25x5.50\""
msgstr "2.25x5.50 pulg."
+#: ppdc/sample.c:190
msgid "2.38x5.50\""
msgstr "2.38x5.50 pulg."
+#: ppdc/sample.c:428
msgid "2.5 inches/sec."
msgstr "2.5 pulg./seg"
+#: ppdc/sample.c:191
msgid "2.50x1.00\""
msgstr "2.50x1.00 pulg."
+#: ppdc/sample.c:192
msgid "2.50x2.00\""
msgstr "2.50x2.00 pulg."
+#: ppdc/sample.c:193
msgid "2.75x1.25\""
msgstr "2.75x1.25 pulg."
+#: ppdc/sample.c:194
msgid "2.9 x 1\""
msgstr "2.9 x 1 pulg."
+#: ppdc/sample.c:367
msgid "20"
msgstr "20"
+#: ppdc/sample.c:324
msgid "20 mm/sec."
msgstr "20 mm/seg"
+#: ppdc/sample.c:332
msgid "200 mm/sec."
msgstr "200 mm/seg"
+#: ppdc/sample.c:233
msgid "203dpi"
msgstr "203ppp"
+#: ppdc/sample.c:368
msgid "21"
msgstr "21"
+#: ppdc/sample.c:369
msgid "22"
msgstr "22"
+#: ppdc/sample.c:370
msgid "23"
msgstr "23"
+#: ppdc/sample.c:371
msgid "24"
msgstr "24"
+#: ppdc/sample.c:241
msgid "24-Pin Series"
msgstr "24-Pin Series"
+#: ppdc/sample.c:250
msgid "240x72dpi"
msgstr "240x72ppp"
+#: ppdc/sample.c:372
msgid "25"
msgstr "25"
+#: ppdc/sample.c:333
msgid "250 mm/sec."
msgstr "250 mm/seg"
+#: ppdc/sample.c:373
msgid "26"
msgstr "26"
+#: ppdc/sample.c:374
msgid "27"
msgstr "27"
+#: ppdc/sample.c:375
msgid "28"
msgstr "28"
+#: ppdc/sample.c:376
msgid "29"
msgstr "29"
+#: ppdc/sample.c:309
msgid "3"
msgstr "3"
+#: ppdc/sample.c:381
msgid "3 inches/sec."
msgstr "3 pulg./seg"
+#: ppdc/sample.c:3
msgid "3 x 5"
msgstr "3 x 5"
+#: ppdc/sample.c:195
msgid "3.00x1.00\""
msgstr "3.00x1.00 pulg."
+#: ppdc/sample.c:196
msgid "3.00x1.25\""
msgstr "3.00x1.25 pulg."
+#: ppdc/sample.c:197
msgid "3.00x2.00\""
msgstr "3.00x2.00 pulg."
+#: ppdc/sample.c:198
msgid "3.00x3.00\""
msgstr "3.00x3.00 pulg."
+#: ppdc/sample.c:199
msgid "3.00x5.00\""
msgstr "3.00x5.00 pulg."
+#: ppdc/sample.c:200
msgid "3.25x2.00\""
msgstr "3.25x2.00 pulg."
+#: ppdc/sample.c:201
msgid "3.25x5.00\""
msgstr "3.25x5.00 pulg."
+#: ppdc/sample.c:202
msgid "3.25x5.50\""
msgstr "3.25x5.50 pulg."
+#: ppdc/sample.c:203
msgid "3.25x5.83\""
msgstr "3.25x5.83 pulg."
+#: ppdc/sample.c:204
msgid "3.25x7.83\""
msgstr "3.25x7.83 pulg."
+#: ppdc/sample.c:4
msgid "3.5 x 5"
msgstr "3.5 x 5"
+#: ppdc/sample.c:171
msgid "3.5\" Disk"
msgstr "Disco de 3.5 pulg."
+#: ppdc/sample.c:205
msgid "3.50x1.00\""
msgstr "3.50x1.00 pulg."
+#: ppdc/sample.c:377
msgid "30"
msgstr "30"
+#: ppdc/sample.c:325
msgid "30 mm/sec."
msgstr "30 mm/seg"
+#: ppdc/sample.c:334
msgid "300 mm/sec."
msgstr "300 mm/seg"
+#: ppdc/sample.c:234
msgid "300dpi"
msgstr "300ppp"
+#: ppdc/sample.c:405
msgid "35"
msgstr "35"
+#: ppdc/sample.c:246
msgid "360dpi"
msgstr "360ppp"
+#: ppdc/sample.c:245
msgid "360x180dpi"
msgstr "360x180ppp"
+#: ppdc/sample.c:310
msgid "4"
msgstr "4"
+#: ppdc/sample.c:382
msgid "4 inches/sec."
msgstr "4 pulg./seg"
+#: ppdc/sample.c:206
msgid "4.00x1.00\""
msgstr "4.00x1.00 pulg."
+#: ppdc/sample.c:214
msgid "4.00x13.00\""
msgstr "4.00x13.00 pulg."
+#: ppdc/sample.c:207
msgid "4.00x2.00\""
msgstr "4.00x2.00 pulg."
+#: ppdc/sample.c:208
msgid "4.00x2.50\""
msgstr "4.00x2.50 pulg."
+#: ppdc/sample.c:209
msgid "4.00x3.00\""
msgstr "4.00x3.00 pulg."
+#: ppdc/sample.c:210
msgid "4.00x4.00\""
msgstr "4.00x4.00 pulg."
+#: ppdc/sample.c:211
msgid "4.00x5.00\""
msgstr "4.00x5.00 pulg."
+#: ppdc/sample.c:212
msgid "4.00x6.00\""
msgstr "4.00x6.00 pulg."
+#: ppdc/sample.c:213
msgid "4.00x6.50\""
msgstr "4.00x6.50 pulg."
+#: ppdc/sample.c:406
msgid "40"
msgstr "40"
+#: ppdc/sample.c:326
msgid "40 mm/sec."
msgstr "40 mm/seg"
+#: ppdc/sample.c:407
msgid "45"
msgstr "45"
+#: ppdc/sample.c:311
msgid "5"
msgstr "5"
+#: ppdc/sample.c:432
msgid "5 inches/sec."
msgstr "5 pulg./seg"
+#: ppdc/sample.c:5
msgid "5 x 7"
msgstr "5 x 7"
+#: ppdc/sample.c:408
msgid "50"
msgstr "50"
+#: ppdc/sample.c:409
msgid "55"
msgstr "55"
+#: ppdc/sample.c:312
msgid "6"
msgstr "6"
+#: ppdc/sample.c:433
msgid "6 inches/sec."
msgstr "6 pulg./seg"
+#: ppdc/sample.c:215
msgid "6.00x1.00\""
msgstr "6.00x1.00 pulg."
+#: ppdc/sample.c:216
msgid "6.00x2.00\""
msgstr "6.00x2.00 pulg."
+#: ppdc/sample.c:217
msgid "6.00x3.00\""
msgstr "6.00x3.00 pulg."
+#: ppdc/sample.c:218
msgid "6.00x4.00\""
msgstr "6.00x4.00 pulg."
+#: ppdc/sample.c:219
msgid "6.00x5.00\""
msgstr "6.00x5.00 pulg."
+#: ppdc/sample.c:220
msgid "6.00x6.00\""
msgstr "6.00x6.00 pulg."
+#: ppdc/sample.c:221
msgid "6.00x6.50\""
msgstr "6.00x6.50 pulg."
+#: ppdc/sample.c:410
msgid "60"
msgstr "60"
+#: ppdc/sample.c:327
msgid "60 mm/sec."
msgstr "60 mm/seg"
+#: ppdc/sample.c:253
msgid "600dpi"
msgstr "600ppp"
+#: ppdc/sample.c:242
msgid "60dpi"
msgstr "60ppp"
+#: ppdc/sample.c:248
msgid "60x72dpi"
msgstr "60x72ppp"
+#: ppdc/sample.c:411
msgid "65"
msgstr "65"
+#: ppdc/sample.c:313
msgid "7"
msgstr "7"
+#: ppdc/sample.c:435
msgid "7 inches/sec."
msgstr "7 pulg./seg"
+#: ppdc/sample.c:11
msgid "7 x 9"
msgstr "7 x 9"
+#: ppdc/sample.c:412
msgid "70"
msgstr "70"
-msgid "720dpi"
-msgstr "720ppp"
-
+#: ppdc/sample.c:413
msgid "75"
msgstr "75"
+#: ppdc/sample.c:314
msgid "8"
msgstr "8"
+#: ppdc/sample.c:436
msgid "8 inches/sec."
msgstr "8 pulg./seg"
+#: ppdc/sample.c:12
msgid "8 x 10"
msgstr "8 x 10"
+#: ppdc/sample.c:222
msgid "8.00x1.00\""
msgstr "8.00x1.00 pulg."
+#: ppdc/sample.c:223
msgid "8.00x2.00\""
msgstr "8.00x2.00 pulg."
+#: ppdc/sample.c:224
msgid "8.00x3.00\""
msgstr "8.00x3.00 pulg."
+#: ppdc/sample.c:225
msgid "8.00x4.00\""
msgstr "8.00x4.00 pulg."
+#: ppdc/sample.c:226
msgid "8.00x5.00\""
msgstr "8.00x5.00 pulg."
+#: ppdc/sample.c:227
msgid "8.00x6.00\""
msgstr "8.00x6.00 pulg."
+#: ppdc/sample.c:228
msgid "8.00x6.50\""
msgstr "8.00x6.50 pulg."
+#: ppdc/sample.c:414
msgid "80"
msgstr "80"
+#: ppdc/sample.c:328
msgid "80 mm/sec."
msgstr "80 mm/seg"
+#: ppdc/sample.c:415
msgid "85"
msgstr "85"
+#: ppdc/sample.c:315
msgid "9"
msgstr "9"
+#: ppdc/sample.c:437
msgid "9 inches/sec."
msgstr "9 pulg./seg"
+#: ppdc/sample.c:13
msgid "9 x 11"
msgstr "9 x 11"
+#: ppdc/sample.c:14
msgid "9 x 12"
msgstr "9 x 12"
+#: ppdc/sample.c:247
msgid "9-Pin Series"
msgstr "9-Pin Series"
+#: ppdc/sample.c:416
msgid "90"
msgstr "90"
+#: ppdc/sample.c:417
msgid "95"
msgstr "95"
+#: berkeley/lpc.c:205
msgid "?Invalid help command unknown."
msgstr "?Comando de ayuda no válido desconocido."
+#: cgi-bin/admin.c:2348
msgid "A Samba password is required to export printer drivers"
msgstr ""
"Se requiere una contraseña Samba para exportar los controladores de impresora"
+#: cgi-bin/admin.c:2344
msgid "A Samba username is required to export printer drivers"
msgstr ""
"Se requiere un nombre de usuario Samba para exportar los controladores de "
"impresora"
+#: scheduler/ipp.c:2274
#, c-format
msgid "A class named \"%s\" already exists."
msgstr "Ya existe una clase llamada \"%s\"."
+#: scheduler/ipp.c:916
#, c-format
msgid "A printer named \"%s\" already exists."
msgstr "Ya existe una impresora llamada \"%s\"."
+#: ppdc/sample.c:15
msgid "A0"
msgstr "A0"
+#: ppdc/sample.c:16
msgid "A0 Long Edge"
msgstr "A0 lado largo"
+#: ppdc/sample.c:17
msgid "A1"
msgstr "A1"
+#: ppdc/sample.c:18
msgid "A1 Long Edge"
msgstr "A1 lado largo"
+#: 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 "A2 lado largo"
+#: ppdc/sample.c:21
msgid "A3"
msgstr "A3"
+#: ppdc/sample.c:22
msgid "A3 Long Edge"
msgstr "A3 lado largo"
+#: ppdc/sample.c:23
msgid "A3 Oversize"
msgstr "A3 Extragrande"
+#: ppdc/sample.c:24
msgid "A3 Oversize Long Edge"
msgstr "A3 Extragrande lado largo"
+#: ppdc/sample.c:25
msgid "A4"
msgstr "A4"
+#: ppdc/sample.c:27
msgid "A4 Long Edge"
msgstr "A4 lado largo"
+#: ppdc/sample.c:26
msgid "A4 Oversize"
msgstr "A4 Extragrande"
+#: ppdc/sample.c:28
msgid "A4 Small"
msgstr "A4 Pequeño"
+#: ppdc/sample.c:29
msgid "A5"
msgstr "A5"
+#: ppdc/sample.c:31
msgid "A5 Long Edge"
msgstr "A5 lado largo"
+#: ppdc/sample.c:30
msgid "A5 Oversize"
msgstr "A5 Extragrande"
+#: ppdc/sample.c:32
msgid "A6"
msgstr "A6"
+#: ppdc/sample.c:33
msgid "A6 Long Edge"
msgstr "A6 lado largo"
+#: 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 "ARCH C lado largo"
+#: ppdc/sample.c:49
msgid "ARCH D"
msgstr "ARCH D"
+#: ppdc/sample.c:50
msgid "ARCH D Long Edge"
msgstr "ARCH D lado largo"
+#: ppdc/sample.c:51
msgid "ARCH E"
msgstr "ARCH E"
+#: ppdc/sample.c:52
msgid "ARCH E Long Edge"
msgstr "ARCH E lado largo"
+#: cgi-bin/classes.c:161 cgi-bin/printers.c:164
msgid "Accept Jobs"
msgstr "Aceptar trabajos"
+#: cups/http-support.c:1347
msgid "Accepted"
msgstr "Aceptado"
+#: cgi-bin/admin.c:548
msgid "Add Class"
msgstr "Añadir clase"
+#: cgi-bin/admin.c:860
msgid "Add Printer"
msgstr "Añadir impresora"
+#: 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 "Añadir subscripción RSS"
+#: ppdc/sample.c:163
msgid "Address"
msgstr "Dirección"
+#: cgi-bin/admin.c:188 cgi-bin/admin.c:262 cgi-bin/admin.c:2725
msgid "Administration"
msgstr "Administración"
+#: ppdc/sample.c:424
msgid "Always"
msgstr "Siempre"
+#: backend/socket.c:121
msgid "AppSocket/HP JetDirect"
msgstr "AppSocket/HP JetDirect"
+#: ppdc/sample.c:445
msgid "Applicator"
msgstr "Aplicador"
+#: scheduler/ipp.c:991
#, c-format
msgid "Attempt to set %s printer-state to bad value %d."
msgstr ""
"Se ha intentado cambiar el valor printer-state de %s a un valor incorrecto "
"%d."
+#: scheduler/ipp.c:239
#, c-format
msgid "Attribute groups are out of order (%x < %x)."
msgstr "Los grupos de atributos están desordenados (%x < %x)."
+#: 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 "A5 Extragrande"
+#: 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"
+#: scheduler/ipp.c:10877
#, c-format
msgid "Bad 'document-format' value \"%s\"."
-msgstr ""
+msgstr "Valor 'document-format' \"%s\" incorrecto."
+#: cups/dest.c:1736
msgid "Bad NULL dests pointer"
msgstr "Puntero destino NULLincorrecto"
+#: cups/ppd.c:303
msgid "Bad OpenGroup"
msgstr "OpenGroup incorrecto"
+#: cups/ppd.c:305
msgid "Bad OpenUI/JCLOpenUI"
msgstr "OpenUI/JCLOpenUI incorrecto"
+#: cups/ppd.c:307
msgid "Bad OrderDependency"
msgstr "OrderDependency incorrecto"
+#: 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 "Archivo de caché PPD incorrecto."
+#: cups/http-support.c:1362
msgid "Bad Request"
msgstr "Petición incorrecta"
+#: cups/snmp.c:954
msgid "Bad SNMP version number"
msgstr "Número de versión SNMP incorrecto"
+#: cups/ppd.c:308
msgid "Bad UIConstraints"
msgstr "UIConstraints incorrecto"
+#: cups/http-support.c:1456
+msgid "Bad arguments to function"
+msgstr "Argumentos de la función incorrectos"
+
+#: scheduler/ipp.c:1352
#, c-format
msgid "Bad copies value %d."
msgstr "Valor de copias %d incorrecto."
+#: cups/ppd.c:316
msgid "Bad custom parameter"
msgstr "Parámetro a medida incorrecto"
+#: cups/http-support.c:1598 scheduler/ipp.c:2360
#, c-format
msgid "Bad device-uri \"%s\"."
msgstr "device-uri \"%s\" incorrecto."
+#: scheduler/ipp.c:2399
#, c-format
msgid "Bad device-uri scheme \"%s\"."
msgstr "Esquema device-uri \"%s\" incorrecto."
+#: scheduler/ipp.c:8125 scheduler/ipp.c:8141 scheduler/ipp.c:9360
#, c-format
msgid "Bad document-format \"%s\"."
msgstr "document-format \"%s\" incorrecto."
+#: scheduler/ipp.c:9376
#, c-format
msgid "Bad document-format-default \"%s\"."
msgstr "document-format-default \"%s\" incorrecto."
+#: cups/util.c:823
msgid "Bad filename buffer"
msgstr "Nombre de archivo del búfer incorrecto"
+#: cups/http-support.c:1465
+msgid "Bad hostname/address in URI"
+msgstr "Nombre de equipo/dirección incorrecto en la URI"
+
+#: scheduler/ipp.c:1527
#, c-format
msgid "Bad job-name value: %s"
-msgstr ""
+msgstr "Valor job-name incorrecto: %s"
+#: scheduler/ipp.c:1520
msgid "Bad job-name value: Wrong type or count."
-msgstr ""
+msgstr "Valor job-name incorrecto: tipo o contador equivocado."
+#: scheduler/ipp.c:9967
msgid "Bad job-priority value."
msgstr "Valor job-priority incorrecto."
+#: scheduler/ipp.c:1382
#, c-format
msgid "Bad job-sheets value \"%s\"."
msgstr "Valor de job-sheets \"%s\" incorrecto."
+#: scheduler/ipp.c:1366
msgid "Bad job-sheets value type."
msgstr "Tipo de valor de job-sheets incorrecto."
+#: scheduler/ipp.c:9997
msgid "Bad job-state value."
msgstr "Valor job-state incorrecto."
+#: scheduler/ipp.c:2981 scheduler/ipp.c:3441 scheduler/ipp.c:5930
+#: scheduler/ipp.c:6077 scheduler/ipp.c:7559 scheduler/ipp.c:7828
+#: scheduler/ipp.c:8678 scheduler/ipp.c:8904 scheduler/ipp.c:9256
+#: scheduler/ipp.c:9860
#, c-format
msgid "Bad job-uri \"%s\"."
msgstr "job-uri \"%s\" incorrecto."
+#: scheduler/ipp.c:2040 scheduler/ipp.c:5468
#, c-format
msgid "Bad notify-pull-method \"%s\"."
msgstr "notify-pull-method \"%s\" incorrecto."
+#: scheduler/ipp.c:2004 scheduler/ipp.c:5432
#, c-format
msgid "Bad notify-recipient-uri \"%s\"."
msgstr "notify-recipient-uri \"%s\" incorrecto."
+#: scheduler/ipp.c:1398
#, c-format
msgid "Bad number-up value %d."
msgstr "Valor number-up (páginas por hoja) %d incorrecto."
+#: cups/adminutil.c:281
#, c-format
msgid "Bad option + choice on line %d."
msgstr "Opción + preferencia incorrectas en línea %d."
+#: scheduler/ipp.c:1415
#, c-format
msgid "Bad page-ranges values %d-%d."
msgstr "Valores de page-ranges %d-%d incorrectos."
+#: cups/http-support.c:1462
+msgid "Bad port number in URI"
+msgstr "Número de puerto incorrecto en URI"
+
+#: scheduler/ipp.c:2442
#, c-format
msgid "Bad port-monitor \"%s\"."
msgstr "port-monitor \"%s\" incorrecto."
-msgid "Bad printer URI."
-msgstr "URI de impresora incorrecto."
-
+#: scheduler/ipp.c:2503
#, c-format
msgid "Bad printer-state value %d."
msgstr "Valor printer-state %d incorrecto."
+#: cups/dest.c:610 cups/dest.c:1296 cups/dest.c:1343
+msgid "Bad printer-uri."
+msgstr "printer-uri incorrecto."
+
+#: scheduler/ipp.c:207
#, c-format
msgid "Bad request ID %d."
msgstr "Petición incorrecta de ID %d."
+#: scheduler/ipp.c:192
#, c-format
msgid "Bad request version number %d.%d."
msgstr "Petición incorrecta de número de versión %d.%d."
+#: cups/http-support.c:1459
+msgid "Bad resource in URI"
+msgstr "Recurso incorrecto en URI"
+
+#: cups/http-support.c:1471
+msgid "Bad scheme in URI"
+msgstr "Esquema incorrecto en URI"
+
+#: cgi-bin/admin.c:1464
msgid "Bad subscription ID"
msgstr "ID de subscripción incorrecto"
+#: cups/http-support.c:1468
+msgid "Bad username in URI"
+msgstr "Nombre de usuario incorrecto en URI"
+
+#: cups/ppd.c:318
msgid "Bad value string"
msgstr "Cadena de valores incorrecta"
+#: cups/http-support.c:1474
+msgid "Bad/empty URI"
+msgstr "URI incorrecta/vacía"
+
+#: cgi-bin/admin.c:3270 cgi-bin/admin.c:3516
msgid "Banners"
msgstr "Rótulos"
+#: ppdc/sample.c:282
msgid "Bond Paper"
msgstr "Papel de cartas"
+#: backend/usb-darwin.c:1874
#, c-format
msgid "Boolean expected for waiteof option \"%s\"."
msgstr "Se esperaba un valor lógico para la opción waiteof \"%s\"."
+#: filter/pstops.c:2029
msgid "Buffer overflow detected, aborting."
msgstr "Se ha detectado un desbordamiento de buffer, cancelando."
+#: ppdc/sample.c:277
msgid "CMYK"
msgstr "CMYK"
+#: ppdc/sample.c:358
msgid "CPCL Label Printer"
msgstr "Impresora de etiquetas CPCL"
+#: cgi-bin/classes.c:165 cgi-bin/printers.c:168
+msgid "Cancel Jobs"
+msgstr "Cancelar trabajos"
+
+#: cgi-bin/admin.c:1465 cgi-bin/admin.c:1504 cgi-bin/admin.c:1514
msgid "Cancel RSS Subscription"
msgstr "Cancelar subscripción RSS"
+#: backend/ipp.c:2198
msgid "Canceling print job."
msgstr "Cancelando trabajo de impresión."
+#: scheduler/ipp.c:2483
msgid "Cannot share a remote Kerberized printer."
msgstr "No se puede compartir una impresora remota Kerberizada."
+#: ppdc/sample.c:271
msgid "Cassette"
msgstr "Casete"
+#: cgi-bin/admin.c:1635 cgi-bin/admin.c:1777 cgi-bin/admin.c:1790
+#: cgi-bin/admin.c:1801
msgid "Change Settings"
msgstr "Cambiar configuración"
+#: scheduler/ipp.c:2052 scheduler/ipp.c:5480
#, c-format
msgid "Character set \"%s\" not supported."
msgstr "No se admite el juego de caracteres \"%s\"."
+#: cgi-bin/classes.c:187 cgi-bin/classes.c:314
msgid "Classes"
msgstr "Clases"
+#: cgi-bin/printers.c:174
msgid "Clean Print Heads"
msgstr "Limpiar cabezales de impresión"
+#: scheduler/ipp.c:3893
msgid "Close-Job doesn't support the job-uri attribute."
msgstr "Close-Job no admite el atributo job-uri."
+#: ppdc/sample.c:276
msgid "Color"
msgstr "Color"
+#: ppdc/sample.c:274
msgid "Color Mode"
msgstr "Modo de color"
+#: berkeley/lpc.c:196
msgid ""
"Commands may be abbreviated. Commands are:\n"
"\n"
@@ -2825,67 +3850,88 @@ msgstr ""
"\n"
"exit help quit status ?"
+#: cups/snmp.c:958
msgid "Community name uses indefinite length"
msgstr "Nombre de comunidad usa una longitud indefinida"
+#: backend/ipp.c:854 backend/lpd.c:879 backend/socket.c:400
msgid "Connected to printer."
msgstr "Conectado a la impresora."
+#: backend/ipp.c:759 backend/lpd.c:702 backend/socket.c:319
msgid "Connecting to printer."
msgstr "Conectando a la impresora."
+#: cups/http-support.c:1335
msgid "Continue"
msgstr "Continuar"
+#: ppdc/sample.c:360
msgid "Continuous"
msgstr "Continuo"
+#: backend/lpd.c:1028 backend/lpd.c:1160
msgid "Control file sent successfully."
msgstr "Archivo de control enviado correctamente."
+#: backend/ipp.c:1349 backend/lpd.c:472
msgid "Copying print data."
msgstr "Copiando datos de impresión."
+#: cups/http-support.c:1344
msgid "Created"
msgstr "Creado"
+#: cups/ppd.c:1069 cups/ppd.c:1109 cups/ppd.c:1354 cups/ppd.c:1457
msgid "Custom"
msgstr "A medida"
+#: ppdc/sample.c:354
msgid "CustominCutInterval"
msgstr "CustominCutInterval"
+#: ppdc/sample.c:352
msgid "CustominTearInterval"
msgstr "CustominTearInterval"
+#: ppdc/sample.c:338
msgid "Cut"
msgstr "Cortar"
+#: ppdc/sample.c:446
msgid "Cutter"
msgstr "Cortadora"
+#: ppdc/sample.c:239
msgid "Dark"
msgstr "Oscuro"
+#: ppdc/sample.c:235
msgid "Darkness"
msgstr "Oscuridad"
+#: backend/lpd.c:1113
msgid "Data file sent successfully."
msgstr "Archivo de datos enviado correctamente."
+#: cgi-bin/admin.c:2074 cgi-bin/admin.c:2085 cgi-bin/admin.c:2130
msgid "Delete Class"
msgstr "Borrar clase"
+#: cgi-bin/admin.c:2159 cgi-bin/admin.c:2170 cgi-bin/admin.c:2215
msgid "Delete Printer"
msgstr "Borrar impresora"
+#: ppdc/sample.c:273
msgid "DeskJet Series"
msgstr "DeskJet Series"
+#: scheduler/ipp.c:1276
#, c-format
msgid "Destination \"%s\" is not accepting jobs."
msgstr "El destino %s no acepta trabajos."
+#: systemv/lpinfo.c:300
#, c-format
msgid ""
"Device: uri = %s\n"
@@ -2902,70 +3948,84 @@ msgstr ""
" id dispositivo= %s\n"
" ubicación = %s"
+#: ppdc/sample.c:431
msgid "Direct Thermal Media"
msgstr "Soporte térmico directo"
+#: cups/file.c:258
#, c-format
msgid "Directory \"%s\" contains a relative path."
msgstr "El directorio \"%s\" contiene una ruta relativa."
+#: cups/file.c:230
#, c-format
msgid "Directory \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
msgstr "El directorio \"%s\" tiene permisos no seguros (0%o/uid=%d/gid=%d)."
+#: cups/file.c:247
#, c-format
msgid "Directory \"%s\" is a file."
msgstr "El directorio \"%s\" es un archivo."
+#: cups/file.c:218
#, c-format
msgid "Directory \"%s\" not available: %s"
msgstr "Directorio \"%s\" no disponible: %s"
+#: cups/file.c:203
#, c-format
msgid "Directory \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
msgstr "Permisos del directorio \"%s\" OK (0%o/uid=%d/gid=%d)."
+#: ppdc/sample.c:340
msgid "Disabled"
msgstr "Deshabilitado"
+#: scheduler/ipp.c:5979
#, c-format
msgid "Document #%d does not exist in job #%d."
msgstr "El documento #%d no existe en el trabajo #%d."
+#: ppdc/sample.c:267
msgid "Duplexer"
msgstr "Unidad de impresión dúplex"
+#: ppdc/sample.c:229
msgid "Dymo"
msgstr "Dymo"
+#: ppdc/sample.c:426
msgid "EPL1 Label Printer"
msgstr "Impresora de etiquetas EPL1"
+#: ppdc/sample.c:429
msgid "EPL2 Label Printer"
msgstr "Impresora de etiquetas EPL2"
+#: 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 "Editar archivo de configuración"
+#: cups/adminutil.c:326
msgid "Empty PPD file."
msgstr "Archivo PPD vacío."
+#: cups/http.c:4624
+msgid "Encryption is not supported."
+msgstr "El cifrado no está implementado."
+
#. TRANSLATORS: Banner/cover sheet after the print job.
+#: cgi-bin/admin.c:3541
msgid "Ending Banner"
msgstr "Rótulo final"
+#: ppdc/sample.c:2
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:"
-
+#: scheduler/client.c:2209
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 "
@@ -2975,257 +4035,347 @@ msgstr ""
"contraseña de root para poder acceder a esta página. Si está usando "
"autentificación Kerberos, asegúrese de que tiene un ticket Kerberos válido."
+#: ppdc/sample.c:73
msgid "Envelope #10 "
-msgstr "Sobre #10"
+msgstr "Sobre #10 "
+#: ppdc/sample.c:74
msgid "Envelope #11"
msgstr "Sobre #11"
+#: ppdc/sample.c:75
msgid "Envelope #12"
msgstr "Sobre #12"
+#: ppdc/sample.c:76
msgid "Envelope #14"
msgstr "Sobre #14"
+#: ppdc/sample.c:77
msgid "Envelope #9"
msgstr "Sobre #9"
+#: ppdc/sample.c:89
msgid "Envelope B4"
msgstr "Sobre B4"
+#: ppdc/sample.c:90
msgid "Envelope B5"
msgstr "Sobre B5"
+#: ppdc/sample.c:91
msgid "Envelope B6"
msgstr "Sobre B6"
+#: ppdc/sample.c:78
msgid "Envelope C0"
msgstr "Sobre C0"
+#: ppdc/sample.c:79
msgid "Envelope C1"
msgstr "Sobre C1"
+#: ppdc/sample.c:80
msgid "Envelope C2"
msgstr "Sobre C2"
+#: ppdc/sample.c:81
msgid "Envelope C3"
msgstr "Sobre C3"
+#: ppdc/sample.c:67
msgid "Envelope C4"
msgstr "Sobre C4"
+#: ppdc/sample.c:68
msgid "Envelope C5"
msgstr "Sobre C5"
+#: ppdc/sample.c:69
msgid "Envelope C6"
msgstr "Sobre C6"
+#: ppdc/sample.c:82
msgid "Envelope C65"
msgstr "Sobre C65"
+#: ppdc/sample.c:83
msgid "Envelope C7"
msgstr "Sobre C7"
+#: ppdc/sample.c:84
msgid "Envelope Choukei 3"
msgstr "Sobre Choukei 3"
+#: ppdc/sample.c:85
msgid "Envelope Choukei 3 Long Edge"
msgstr "Sobre Choukei 3 lado largo"
+#: ppdc/sample.c:86
msgid "Envelope Choukei 4"
msgstr "Sobre Choukei 4"
+#: ppdc/sample.c:87
msgid "Envelope Choukei 4 Long Edge"
msgstr "Sobre Choukei 4 lado largo"
+#: ppdc/sample.c:70
msgid "Envelope DL"
msgstr "Sobre DL"
+#: ppdc/sample.c:261
msgid "Envelope Feed"
msgstr "Alimentador de sobre"
+#: ppdc/sample.c:88
msgid "Envelope Invite"
msgstr "Sobre Invitación"
+#: ppdc/sample.c:92
msgid "Envelope Italian"
msgstr "Sobre Italiano"
+#: ppdc/sample.c:93
msgid "Envelope Kaku2"
msgstr "Sobre Kaku2"
+#: ppdc/sample.c:94
msgid "Envelope Kaku2 Long Edge"
msgstr "Sobre Kaku2 lado largo"
+#: ppdc/sample.c:95
msgid "Envelope Kaku3"
msgstr "Sobre Kaku3"
+#: ppdc/sample.c:96
msgid "Envelope Kaku3 Long Edge"
msgstr "Sobre Kaku3 lado largo"
+#: ppdc/sample.c:97
msgid "Envelope Monarch"
msgstr "Sobre Monarch"
+#: ppdc/sample.c:99
msgid "Envelope PRC1 "
-msgstr "Sobre PRC1"
+msgstr "Sobre PRC1 "
+#: ppdc/sample.c:100
msgid "Envelope PRC1 Long Edge"
msgstr "Sobre PRC1 lado largo"
+#: ppdc/sample.c:117
msgid "Envelope PRC10"
msgstr "Sobre PRC10"
+#: ppdc/sample.c:118
msgid "Envelope PRC10 Long Edge"
msgstr "Sobre PRC10 lado largo"
+#: ppdc/sample.c:101
msgid "Envelope PRC2"
msgstr "Sobre PRC2"
+#: ppdc/sample.c:102
msgid "Envelope PRC2 Long Edge"
msgstr "Sobre PRC2 lado largo"
+#: ppdc/sample.c:103
msgid "Envelope PRC3"
msgstr "Sobre PRC3"
+#: ppdc/sample.c:104
msgid "Envelope PRC3 Long Edge"
msgstr "Sobre PRC3 lado largo"
+#: ppdc/sample.c:105
msgid "Envelope PRC4"
msgstr "Sobre PRC4"
+#: ppdc/sample.c:106
msgid "Envelope PRC4 Long Edge"
msgstr "Sobre PRC4 lado largo"
+#: ppdc/sample.c:108
msgid "Envelope PRC5 Long Edge"
msgstr "Sobre PRC5 lado largo"
+#: ppdc/sample.c:107
msgid "Envelope PRC5PRC5"
msgstr "Sobre PRC5PRC5"
+#: ppdc/sample.c:109
msgid "Envelope PRC6"
msgstr "Sobre PRC6"
+#: ppdc/sample.c:110
msgid "Envelope PRC6 Long Edge"
msgstr "Sobre PRC6 lado largo"
+#: ppdc/sample.c:111
msgid "Envelope PRC7"
msgstr "Sobre PRC7"
+#: ppdc/sample.c:112
msgid "Envelope PRC7 Long Edge"
msgstr "Sobre PRC7 lado largo"
+#: ppdc/sample.c:113
msgid "Envelope PRC8"
msgstr "Sobre PRC8"
+#: ppdc/sample.c:114
msgid "Envelope PRC8 Long Edge"
msgstr "Sobre PRC8 lado largo"
+#: ppdc/sample.c:115
msgid "Envelope PRC9"
msgstr "Sobre PRC9"
+#: ppdc/sample.c:116
msgid "Envelope PRC9 Long Edge"
msgstr "Sobre PRC9 lado largo"
+#: ppdc/sample.c:98
msgid "Envelope Personal"
msgstr "Sobre Personal"
+#: ppdc/sample.c:119
msgid "Envelope You4"
msgstr "Sobre You4"
+#: ppdc/sample.c:120
msgid "Envelope You4 Long Edge"
msgstr "Sobre You4 lado largo"
+#: test/ippfind.c:2809
msgid "Environment Variables:"
-msgstr ""
+msgstr "Variables de entorno:"
+#: ppdc/sample.c:240
msgid "Epson"
msgstr "Epson"
+#: cgi-bin/admin.c:3584
msgid "Error Policy"
msgstr "Directiva de error"
+#: filter/rastertopwg.c:395 filter/rastertopwg.c:410 filter/rastertopwg.c:421
+#: filter/rastertopwg.c:432
msgid "Error sending raster data."
msgstr "Error enviando trama de datos (raster)."
+#: systemv/lpinfo.c:103 systemv/lpmove.c:88
msgid "Error: need hostname after \"-h\" option."
-msgstr "Error: se necesita un nombre de ordenador tras la opción \"-h\"."
+msgstr "Error: se necesita un nombre de equipo tras la opción \"-h\"."
+#: ppdc/sample.c:350
msgid "Every 10 Labels"
msgstr "Cada 10 etiquetas"
+#: ppdc/sample.c:342
msgid "Every 2 Labels"
msgstr "Cada 2 etiquetas"
+#: ppdc/sample.c:343
msgid "Every 3 Labels"
msgstr "Cada 3 etiquetas"
+#: ppdc/sample.c:344
msgid "Every 4 Labels"
msgstr "Cada 4 etiquetas"
+#: ppdc/sample.c:345
msgid "Every 5 Labels"
msgstr "Cada 5 etiquetas"
+#: ppdc/sample.c:346
msgid "Every 6 Labels"
msgstr "Cada 6 etiquetas"
+#: ppdc/sample.c:347
msgid "Every 7 Labels"
msgstr "Cada 7 etiquetas"
+#: ppdc/sample.c:348
msgid "Every 8 Labels"
msgstr "Cada 8 etiquetas"
+#: ppdc/sample.c:349
msgid "Every 9 Labels"
msgstr "Cada 9 etiquetas"
+#: ppdc/sample.c:341
msgid "Every Label"
msgstr "Cada etiqueta"
+#: ppdc/sample.c:121
msgid "Executive"
msgstr "Ejecutivo"
+#: cups/http-support.c:1390
msgid "Expectation Failed"
msgstr "Lo que se esperaba, falló."
+#: cgi-bin/admin.c:2336 cgi-bin/admin.c:2355
msgid "Export Printers to Samba"
msgstr "Exportar impresoras a Samba"
+#: test/ippfind.c:2755
msgid "Expressions:"
-msgstr ""
-
+msgstr "Expresiones:"
+
+#: 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 "FAIL"
msgstr "FALLO"
+#: ppdc/sample.c:122
msgid "FanFold German"
msgstr "FanFold alemán"
+#: ppdc/sample.c:123
msgid "FanFold Legal German"
msgstr "FanFold Legal alemán"
+#: ppdc/sample.c:124
msgid "Fanfold US"
msgstr "FanFold de EE.UU"
+#: cups/file.c:262
#, c-format
msgid "File \"%s\" contains a relative path."
msgstr "El archivo \"%s\" contiene una ruta relativa."
+#: cups/file.c:237
#, c-format
msgid "File \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
msgstr "El archivo \"%s\" tiene permisos no seguros (0%o/uid=%d/gid=%d)."
+#: cups/file.c:251
#, c-format
msgid "File \"%s\" is a directory."
msgstr "El archivo \"%s\" es un directorio."
+#: cups/file.c:223
#, c-format
msgid "File \"%s\" not available: %s"
msgstr "Archivo \"%s\" no disponible: %s"
+#: cups/file.c:209
#, c-format
msgid "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
msgstr "Permisos del archivo \"%s\" OK (0%o/uid=%d/gid=%d)."
+#: ppdc/sample.c:169
msgid "File Folder "
-msgstr "Carpeta de archivo"
+msgstr "Carpeta de archivo "
+#: scheduler/ipp.c:2378
#, c-format
msgid ""
"File device URIs have been disabled. To enable, see the FileDevice directive "
@@ -3234,389 +4384,536 @@ msgstr ""
"Los URIs del dispositivo de archivo han sido deshabilitados. Para "
"habilitarlos, vea la directiva FileDevice en \"%s/cups-files.conf\"."
+#: filter/rastertoepson.c:1102 filter/rastertohp.c:834
+#: filter/rastertolabel.c:1259
#, c-format
msgid "Finished page %d."
msgstr "Acabada la página %d."
+#: ppdc/sample.c:125
msgid "Folio"
msgstr "Folio"
+#: cups/http-support.c:1369
msgid "Forbidden"
msgstr "Prohibido"
+#: cups/ppd.c:700 cups/ppd.c:1258
msgid "General"
msgstr "General"
+#: ppdc/sample.c:251
msgid "Generic"
msgstr "Genérico"
+#: cups/snmp.c:968
msgid "Get-Response-PDU uses indefinite length"
msgstr "Get-Response-PDU usa una longitud indefinida"
+#: ppdc/sample.c:285
msgid "Glossy Paper"
msgstr "Papel satinado"
+#: scheduler/ipp.c:2959 scheduler/ipp.c:3367 scheduler/ipp.c:3905
+#: scheduler/ipp.c:5908 scheduler/ipp.c:6055 scheduler/ipp.c:7536
+#: scheduler/ipp.c:8656 scheduler/ipp.c:8882 scheduler/ipp.c:9234
+#: scheduler/ipp.c:9838
msgid "Got a printer-uri attribute but no job-id."
msgstr "Se ha obtenido el atributo printer-uri pero no el job-id."
+#: ppdc/sample.c:275
msgid "Grayscale"
msgstr "Escale de grises"
+#: ppdc/sample.c:272
msgid "HP"
msgstr "HP"
+#: ppdc/sample.c:170
msgid "Hanging Folder"
msgstr "Carpeta colgante"
+#: cgi-bin/help.c:143
msgid "Help file not in index."
-msgstr "El archivo de ayuda no está en el índice"
+msgstr "El archivo de ayuda no está en el índice."
+#: cups/ipp.c:3183 cups/ipp.c:3210 cups/ipp.c:3233
msgid "IPP 1setOf attribute with incompatible value tags."
-msgstr "IPP atributo 1setOf con etiquetas de valor incompatibles"
+msgstr "Atributo IPP 1setOf con etiquetas de valor incompatibles."
+#: cups/ipp.c:3146
msgid "IPP attribute has no name."
-msgstr "IPP atributo sin nombre"
+msgstr "Atributo IPP sin nombre."
+#: cups/ipp.c:7000
msgid "IPP attribute is not a member of the message."
msgstr "El atributo IPP no es un miembro del mensaje."
+#: cups/ipp.c:3594
msgid "IPP begCollection value not 0 bytes."
msgstr "IPP el valor begCollection no es de 0 bytes."
+#: cups/ipp.c:3376
msgid "IPP boolean value not 1 byte."
msgstr "IPP el valor lógico no es de 1 byte."
+#: cups/ipp.c:3437
msgid "IPP date value not 11 bytes."
msgstr "IPP el valor de fecha no es de 11 bytes."
+#: cups/ipp.c:3615
msgid "IPP endCollection value not 0 bytes."
msgstr "IPP el valor endCollection no es de 0 bytes."
+#: cups/ipp.c:3351
msgid "IPP enum value not 4 bytes."
msgstr "IPP el valor enum no es de 4 bytes."
+#: cups/ipp.c:3075
msgid "IPP extension tag larger than 0x7FFFFFFF."
msgstr "IPP etiqueta de extensión mayor de 0x7FFFFFFF."
+#: cups/ipp.c:3348
msgid "IPP integer value not 4 bytes."
msgstr "IPP el valor entero no es de 4 bytes."
+#: cups/ipp.c:3547
msgid "IPP language length overflows value."
msgstr "IPP la longitud del idioma sobrepasa el valor."
+#: cups/ipp.c:3556
msgid "IPP language length too large."
-msgstr ""
+msgstr "Longitud de idioma IPP demasiado larga."
+#: cups/ipp.c:3260
msgid "IPP member name is not empty."
msgstr "IPP el nombre del miembro no está vacío."
+#: cups/ipp.c:3641
msgid "IPP memberName value is empty."
msgstr "IPP el valor memberName está vacío."
+#: cups/ipp.c:3633
msgid "IPP memberName with no attribute."
-msgstr ""
+msgstr "IPP memberName sin atributo."
+#: cups/ipp.c:3129
msgid "IPP name larger than 32767 bytes."
msgstr "IPP nombre mayor de 32767 bytes."
+#: cups/ipp.c:3514
msgid "IPP nameWithLanguage value less than minimum 4 bytes."
msgstr "IPP el valor nameWithLanguage menor del mínimo de 4 bytes."
+#: cups/ipp.c:3671
msgid "IPP octetString length too large."
-msgstr ""
+msgstr "Longitud de IPP octetString demasiado larga."
+#: cups/ipp.c:3482
msgid "IPP rangeOfInteger value not 8 bytes."
msgstr "IPP el valor rangeOfInteger no es de 8 bytes."
+#: cups/ipp.c:3455
msgid "IPP resolution value not 9 bytes."
msgstr "IPP el valor de la resolución no es de 9 bytes."
+#: cups/ipp.c:3574
msgid "IPP string length overflows value."
msgstr "IPP la longitud de la cadena sobrepasa el valor."
+#: cups/ipp.c:3510
msgid "IPP textWithLanguage value less than minimum 4 bytes."
msgstr "IPP el valor textWithLanguage menor del mínimo de 4 bytes."
+#: cups/ipp.c:3334
msgid "IPP value larger than 32767 bytes."
msgstr "IPP valor mayor de 32767 bytes."
+#: ppdc/sample.c:1
msgid "ISOLatin1"
msgstr "UTF-8"
+#: cups/ppd.c:311
msgid "Illegal control character"
msgstr "Carácter de control ilegal"
+#: cups/ppd.c:312
msgid "Illegal main keyword string"
msgstr "Cadena de clave principal ilegal"
+#: cups/ppd.c:313
msgid "Illegal option keyword string"
msgstr "Cadena de clave de opción ilegal"
+#: cups/ppd.c:314
msgid "Illegal translation string"
msgstr "Cadena de traducción ilegal"
+#: cups/ppd.c:315
msgid "Illegal whitespace character"
msgstr "Carácter de espacio en blanco ilegal"
+#: ppdc/sample.c:266
msgid "Installable Options"
msgstr "Opciones instalables"
+#: ppdc/sample.c:269
msgid "Installed"
msgstr "Instalada"
+#: ppdc/sample.c:288
msgid "IntelliBar Label Printer"
msgstr "Impresora de etiquetas IntelliBar"
+#: ppdc/sample.c:287
msgid "Intellitech"
msgstr "Intellitech"
+#: cups/http-support.c:1396
msgid "Internal Server Error"
msgstr "Error interno del servidor"
+#: cups/ppd.c:302
msgid "Internal error"
msgstr "Error interno"
+#: ppdc/sample.c:167
msgid "Internet Postage 2-Part"
msgstr "Correo por Internet Parte-2"
+#: ppdc/sample.c:168
msgid "Internet Postage 3-Part"
msgstr "Correo por Internet Parte-3"
+#: backend/ipp.c:319
msgid "Internet Printing Protocol"
msgstr "Protocolo de Impresión de Internet IPP"
+#: cups/pwg-media.c:293 cups/pwg-media.c:312
msgid "Invalid media name arguments."
-msgstr ""
+msgstr "Argumentos del nombre del papel no válidos."
+#: cups/dest-options.c:1032
msgid "Invalid media size."
-msgstr "Tamaño del papel no válido"
+msgstr "Tamaño de papel no válido."
+#: filter/commandtops.c:114
#, c-format
msgid "Invalid printer command \"%s\"."
msgstr "Comando de impresora \"%s\" no válido."
+#: cups/ppd.c:1376
msgid "JCL"
msgstr "JCL"
+#: ppdc/sample.c:53
msgid "JIS B0"
msgstr "JIS B0"
+#: ppdc/sample.c:55
msgid "JIS B1"
msgstr "JIS B1"
+#: ppdc/sample.c:54
msgid "JIS B10"
msgstr "JIS B10"
+#: ppdc/sample.c:56
msgid "JIS B2"
msgstr "JIS B2"
+#: ppdc/sample.c:57
msgid "JIS B3"
msgstr "JIS B3"
+#: ppdc/sample.c:58
msgid "JIS B4"
msgstr "JIS B4"
+#: ppdc/sample.c:59
msgid "JIS B4 Long Edge"
msgstr "JIS B4 lado largo"
+#: ppdc/sample.c:60
msgid "JIS B5"
msgstr "JIS B5"
+#: ppdc/sample.c:61
msgid "JIS B5 Long Edge"
msgstr "JIS B5 lado largo"
+#: ppdc/sample.c:62
msgid "JIS B6"
msgstr "JIS B6"
+#: ppdc/sample.c:63
msgid "JIS B6 Long Edge"
msgstr "JIS B6 lado largo"
+#: ppdc/sample.c:64
msgid "JIS B7"
msgstr "JIS B7"
+#: ppdc/sample.c:65
msgid "JIS B8"
msgstr "JIS B8"
+#: ppdc/sample.c:66
msgid "JIS B9"
msgstr "JIS B9"
+#: scheduler/ipp.c:8954
#, c-format
msgid "Job #%d cannot be restarted - no files."
msgstr "El trabajo #%d no puede ser reiniciado - no hay archivos."
+#: scheduler/ipp.c:2999 scheduler/ipp.c:3233 scheduler/ipp.c:3292
+#: scheduler/ipp.c:3469 scheduler/ipp.c:3915 scheduler/ipp.c:5566
+#: scheduler/ipp.c:5948 scheduler/ipp.c:6095 scheduler/ipp.c:6433
+#: scheduler/ipp.c:7383 scheduler/ipp.c:7405 scheduler/ipp.c:7577
+#: scheduler/ipp.c:7802 scheduler/ipp.c:7845 scheduler/ipp.c:8696
+#: scheduler/ipp.c:8922 scheduler/ipp.c:9274 scheduler/ipp.c:9878
#, c-format
msgid "Job #%d does not exist."
msgstr "El trabajo #%d no existe."
+#: scheduler/ipp.c:3501
#, c-format
msgid "Job #%d is already aborted - can't cancel."
msgstr "El trabajo #%d ya está anulado - no se puede cancelar."
+#: scheduler/ipp.c:3495
#, c-format
msgid "Job #%d is already canceled - can't cancel."
msgstr "El trabajo #%d ya está cancelado - no se puede cancelar."
+#: scheduler/ipp.c:3507
#, c-format
msgid "Job #%d is already completed - can't cancel."
msgstr "El trabajo #%d ya ha sido completado - no se puede cancelar."
+#: scheduler/ipp.c:7603 scheduler/ipp.c:7887 scheduler/ipp.c:9893
#, c-format
msgid "Job #%d is finished and cannot be altered."
msgstr "El trabajo #%d ha terminado y no puede ser modificado."
+#: scheduler/ipp.c:8936
#, c-format
msgid "Job #%d is not complete."
msgstr "El trabajo #%d no ha sido completado."
+#: scheduler/ipp.c:3014
#, c-format
msgid "Job #%d is not held for authentication."
msgstr "El trabajo #%d no está retenido para autentificación."
+#: scheduler/ipp.c:8710
#, c-format
msgid "Job #%d is not held."
msgstr "El trabajo #%d no está retenido."
+#: cgi-bin/ipp-var.c:1035
msgid "Job Completed"
msgstr "Trabajo completado"
+#: cgi-bin/ipp-var.c:1033
msgid "Job Created"
msgstr "Trabajo creado"
+#: cgi-bin/ipp-var.c:1039
msgid "Job Options Changed"
msgstr "Opciones de trabajo cambiadas"
+#: cgi-bin/ipp-var.c:1037
msgid "Job Stopped"
msgstr "Trabajo detenido"
+#: scheduler/ipp.c:9975
msgid "Job is completed and cannot be changed."
msgstr "El trabajo está terminado y no puede ser cambiado."
+#: cgi-bin/jobs.c:192
msgid "Job operation failed"
msgstr "La operación del trabajo ha fallado"
+#: scheduler/ipp.c:10011 scheduler/ipp.c:10028 scheduler/ipp.c:10039
msgid "Job state cannot be changed."
msgstr "No se puede cambiar el estado del trabajo."
+#: scheduler/ipp.c:8802
msgid "Job subscriptions cannot be renewed."
msgstr "Las suscripciones de trabajos no han podido ser renovadas."
+#: cgi-bin/jobs.c:97 cgi-bin/jobs.c:108 cgi-bin/jobs.c:189
msgid "Jobs"
msgstr "Trabajos"
+#: backend/lpd.c:177
msgid "LPD/LPR Host or Printer"
msgstr "Equipo o impresora LPD/LPR"
+#: ppdc/sample.c:230
msgid "Label Printer"
msgstr "Impresora de etiquetas"
+#: ppdc/sample.c:441
msgid "Label Top"
msgstr "Parte superior de la etiqueta"
+#: scheduler/ipp.c:2061 scheduler/ipp.c:5489
#, c-format
msgid "Language \"%s\" not supported."
msgstr "No se admite el uso del idioma \"%s\"."
+#: ppdc/sample.c:164
msgid "Large Address"
msgstr "Dirección grande"
+#: ppdc/sample.c:286
msgid "LaserJet Series PCL 4/5"
msgstr "LaserJet Series PCL 4/5"
+#: ppdc/sample.c:43
msgid "Letter Oversize"
msgstr "Carta Extragrande"
+#: ppdc/sample.c:44
msgid "Letter Oversize Long Edge"
msgstr "Carta Extragrande lado largo"
+#: ppdc/sample.c:236
msgid "Light"
msgstr "Ligero"
+#: cups/ppd.c:310
msgid "Line longer than the maximum allowed (255 characters)"
msgstr "Línea más larga que el máximo permitido (255 caracteres)"
+#: cgi-bin/admin.c:2373
msgid "List Available Printers"
msgstr "Listar impresoras disponibles"
+#: cups/localize.c:291
+msgid "Load paper."
+msgstr "Cargar papel."
+
+#: ppdc/sample.c:264
msgid "Long-Edge (Portrait)"
msgstr "Lado largo (retrato)"
+#: cups/http-support.c:1725
msgid "Looking for printer."
msgstr "Buscando impresora."
+#: ppdc/sample.c:260
msgid "Manual Feed"
msgstr "Alimentación manual"
+#: cups/ppd.c:747 cups/ppd.c:1313
msgid "Media Size"
msgstr "Tamaño de papel"
+#: cups/ppd.c:751 cups/ppd.c:1317 ppdc/sample.c:254
msgid "Media Source"
msgstr "Fuente del papel"
+#: ppdc/sample.c:359
msgid "Media Tracking"
msgstr "Seguimiento del medio"
+#: cups/ppd.c:749 cups/ppd.c:1315 ppdc/sample.c:280
msgid "Media Type"
msgstr "Tipo de papel"
+#: ppdc/sample.c:237
msgid "Medium"
msgstr "Media"
+#: cups/ppd.c:299
msgid "Memory allocation error"
msgstr "Error de reserva de memoria"
+#: cups/ppd.c:319
msgid "Missing CloseGroup"
msgstr "Falta CloseGroup"
+#: cups/ppd.c:300
msgid "Missing PPD-Adobe-4.x header"
msgstr "Falta cabecera PPD-Adobe-4.x"
+#: cups/ppd.c:309
msgid "Missing asterisk in column 1"
msgstr "Falta un asterisco en la columna 1"
+#: scheduler/ipp.c:5971
msgid "Missing document-number attribute."
msgstr "Falta el atributo document-number."
+#: cups/adminutil.c:262
#, c-format
msgid "Missing double quote on line %d."
msgstr "Faltan dobles comillas en línea %d."
+#: 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 "Falta una variable de formulario"
+#: scheduler/ipp.c:9328
msgid "Missing last-document attribute in request."
msgstr "Falta el atributo last-document en la petición."
+#: cups/pwg-media.c:555
msgid "Missing media or media-col."
msgstr "Falta media o media-col."
+#: cups/pwg-media.c:474
msgid "Missing media-size in media-col."
msgstr "Falta media-size en media-col."
+#: scheduler/ipp.c:6574
msgid "Missing notify-subscription-ids attribute."
msgstr "Falta el atributo notify-subscription-ids."
+#: cups/ppd.c:317
msgid "Missing option keyword"
msgstr "Falta cadena de clave de opción"
+#: scheduler/ipp.c:3140 scheduler/ipp.c:3165
msgid "Missing requesting-user-name attribute."
msgstr "Falta el atributo requesting-user-name."
+#: scheduler/ipp.c:388
msgid "Missing required attributes."
msgstr "Faltan atributos necesarios."
+#: cups/http-support.c:1486
+msgid "Missing resource in URI"
+msgstr "Falta recurso en URI"
+
+#: cups/http-support.c:1480
+msgid "Missing scheme in URI"
+msgstr "Falta esquema en URI"
+
+#: cups/adminutil.c:243
#, c-format
msgid "Missing value on line %d."
msgstr "Falta un valor en la línea %d."
+#: cups/ppd.c:301
msgid "Missing value string"
msgstr "Falta cadena de valores"
+#: cups/pwg-media.c:462
msgid "Missing x-dimension in media-size."
msgstr "Falta x-dimension en media-size."
+#: cups/pwg-media.c:468
msgid "Missing y-dimension in media-size."
msgstr "Falta y-dimension en media-size."
+#: systemv/lpinfo.c:470
#, c-format
msgid ""
"Model: name = %s\n"
@@ -3629,572 +4926,754 @@ msgstr ""
" make-and-model = %s\n"
" device-id = %s"
+#: test/ippfind.c:2786
msgid "Modifiers:"
-msgstr ""
+msgstr "Modificadores:"
+#: cgi-bin/admin.c:548
msgid "Modify Class"
msgstr "Modificar clase"
+#: cgi-bin/admin.c:860
msgid "Modify Printer"
msgstr "Modificar impresora"
+#: cgi-bin/ipp-var.c:410 cgi-bin/ipp-var.c:501
msgid "Move All Jobs"
msgstr "Mover todos los trabajos"
+#: cgi-bin/ipp-var.c:349 cgi-bin/ipp-var.c:408 cgi-bin/ipp-var.c:499
msgid "Move Job"
msgstr "Mover trabajo"
+#: cups/http-support.c:1353
msgid "Moved Permanently"
msgstr "Movido permanentemente"
+#: cups/ppd.c:298
msgid "NULL PPD file pointer"
msgstr "Puntero de archivo PPD NULO"
+#: cups/snmp.c:1005
msgid "Name OID uses indefinite length"
msgstr "Nombre OID usa una longitud indefinida"
+#: scheduler/ipp.c:1054
msgid "Nested classes are not allowed."
msgstr "No se permiten clases anidadas."
+#: ppdc/sample.c:425
msgid "Never"
msgstr "Nunca"
-msgid "New Stylus Color Series"
-msgstr "Nueva Stylus Color Series"
-
-msgid "New Stylus Photo Series"
-msgstr "Nueva Stylus Photo Series"
-
+#: cups/ppd.c:1904
msgid "No"
msgstr "No"
+#: cups/http-support.c:1350
msgid "No Content"
msgstr "No hay contenido"
+#: cups/util.c:1123
msgid "No PPD name"
msgstr "No hay nombre de PPD"
+#: cups/snmp.c:999
msgid "No VarBind SEQUENCE"
msgstr "No hay Varbind SEQUENCE"
+#: cups/adminutil.c:777
msgid "No Windows printer drivers are installed."
msgstr "No está instalado ningún controlador de impresora de Windows."
+#: cups/request.c:570 cups/request.c:933
msgid "No active connection"
msgstr "No hay conexión activa"
+#: cups/request.c:350
msgid "No active connection."
-msgstr ""
+msgstr "No hay conexión activa."
+#: scheduler/ipp.c:3418
#, c-format
msgid "No active jobs on %s."
msgstr "No hay trabajos activos en %s."
+#: scheduler/ipp.c:216
msgid "No attributes in request."
msgstr "No hay atributos en la solicitud."
+#: scheduler/ipp.c:3041
msgid "No authentication information provided."
msgstr "No se ha proporcionado información de autentificación."
+#: cups/snmp.c:956
msgid "No community name"
msgstr "No hay nombre de comunidad"
+#: scheduler/ipp.c:5771
msgid "No default printer."
msgstr "No hay impresora predeterminada."
+#: cgi-bin/ipp-var.c:421 scheduler/ipp.c:7149
msgid "No destinations added."
msgstr "No se han añadido destinos."
+#: backend/usb.c:200
msgid "No device URI found in argv[0] or in DEVICE_URI environment variable."
msgstr ""
"No se ha encontrado el URI del dispositivo en argv[0] o en la variable de "
"entorno DEVICE_URI."
+#: cups/snmp.c:986
msgid "No error-index"
msgstr "No hay error-index"
+#: cups/snmp.c:978
msgid "No error-status"
msgstr "No hay error-status"
+#: scheduler/ipp.c:8091 scheduler/ipp.c:9342
msgid "No file in print request."
-msgstr "No hay ningún archivo en la petición de impresión."
+msgstr "No hay ningún archivo en la solicitud de impresión."
+#: cups/util.c:817
msgid "No modification time"
msgstr "No hay tiempo de modificación"
+#: cups/snmp.c:1003
msgid "No name OID"
msgstr "No hay nombre OID"
+#: filter/rastertoepson.c:1132 filter/rastertohp.c:865
+#: filter/rastertolabel.c:1288
msgid "No pages were found."
msgstr "No se han encontrado páginas."
+#: cups/util.c:811
msgid "No printer name"
msgstr "No hay nombre de impresora"
+#: cups/util.c:1647
msgid "No printer-uri found"
msgstr "No se encontró printer-uri"
+#: cups/util.c:1631
msgid "No printer-uri found for class"
msgstr "No se encontró printer-uri para la clase"
+#: scheduler/ipp.c:6179
msgid "No printer-uri in request."
-msgstr "No hay printer-uri en la petición."
+msgstr "No hay printer-uri en la solicitud."
+
+#: cups/http.c:2260
+msgid "No request URI."
+msgstr "No se ha solicitado URI."
+#: cups/http.c:2277
+msgid "No request protocol version."
+msgstr "No se ha solicitado versión del protocolo."
+
+#: cups/request.c:358
msgid "No request sent."
-msgstr ""
+msgstr "No se ha enviado solicitud."
+#: cups/snmp.c:970
msgid "No request-id"
msgstr "No hay request-id"
+#: scheduler/ipp.c:5374
msgid "No subscription attributes in request."
msgstr "No hay atributos de subscripción en la solicitud."
+#: scheduler/ipp.c:7476
msgid "No subscriptions found."
msgstr "No se han encontrado subscripciones."
+#: cups/snmp.c:994
msgid "No variable-bindings SEQUENCE"
msgstr "No hay variable-bindings SEQUENCE"
+#: cups/snmp.c:949
msgid "No version number"
msgstr "No hay número de versión"
+#: ppdc/sample.c:362
msgid "Non-continuous (Mark sensing)"
msgstr "No continuo (sensible a señal)"
+#: ppdc/sample.c:361
msgid "Non-continuous (Web sensing)"
msgstr "No continuo (sensible a web)"
+#: ppdc/sample.c:238
msgid "Normal"
msgstr "Normal"
+#: cups/http-support.c:1372
msgid "Not Found"
msgstr "No encontrado"
+#: cups/http-support.c:1384
msgid "Not Implemented"
msgstr "No implementado"
+#: ppdc/sample.c:268
msgid "Not Installed"
msgstr "No instalado"
+#: cups/http-support.c:1359
msgid "Not Modified"
msgstr "No modificado"
+#: cups/http-support.c:1387
msgid "Not Supported"
-msgstr "No permitido"
+msgstr "No implementado"
+#: scheduler/ipp.c:1490 scheduler/ipp.c:10572
msgid "Not allowed to print."
msgstr "No se permite imprimir."
+#: ppdc/sample.c:146
msgid "Note"
msgstr "Nota"
+#: systemv/cupstestdsc.c:433
msgid ""
"Note: this program only validates the DSC comments, not the PostScript "
"itself."
msgstr ""
"Nota: este programa sólo valida los comentarios DSC, no los PostScript."
+#: cups/http-support.c:1341 cups/http-support.c:1477 cups/ppd.c:296
msgid "OK"
msgstr "OK"
+#: ppdc/sample.c:263
msgid "Off (1-Sided)"
msgstr "Desactivado (1 cara)"
+#: ppdc/sample.c:356
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 "Ayuda en línea"
+#: cups/adminutil.c:944
#, c-format
msgid "Open of %s failed: %s"
msgstr "La apertura de %s ha fallado: %s"
+#: cups/ppd.c:304
msgid "OpenGroup without a CloseGroup first"
msgstr "OpenGroup sin un CloseGroup previo"
+#: cups/ppd.c:306
msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first"
msgstr "OpenUI/JCLOpenUI sin un CloseUI/JCLCloseUI previo"
+#: cgi-bin/admin.c:3611
msgid "Operation Policy"
msgstr "Directiva de operación"
+#: filter/pstops.c:2177
#, c-format
msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
msgstr "La opción \"%s\" no puede incluirse via %%%%IncludeFeature."
+#: cgi-bin/admin.c:3261 cgi-bin/admin.c:3345
msgid "Options Installed"
msgstr "Opciones instaladas"
+#: scheduler/cupsfilter.c:1482 scheduler/main.c:2146 systemv/cupsaddsmb.c:284
+#: systemv/cupsctl.c:203 systemv/cupstestdsc.c:429 systemv/cupstestppd.c:3817
+#: test/ippfind.c:2745 test/ipptool.c:4805 ppdc/ppdc.cxx:432
+#: ppdc/ppdhtml.cxx:174 ppdc/ppdi.cxx:130 ppdc/ppdmerge.cxx:363
+#: ppdc/ppdpo.cxx:254
msgid "Options:"
-msgstr "Opciones: "
+msgstr "Opciones:"
+#: cups/ppd-cache.c:125
msgid "Out of date PPD cache file."
msgstr "Archivo de caché PPD obsoleto."
+#: cups/ppd-cache.c:1410
msgid "Out of memory."
msgstr "Sin memoria."
+#: cups/ppd.c:753 cups/ppd.c:1319
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"
+#: cups/localize.c:316
+msgid "Output bin is almost full."
+msgstr "El recipiente de salida está casi lleno."
-#, c-format
-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"
+#: cups/localize.c:318
+msgid "Output bin is full."
+msgstr "El recipiente de salida está lleno."
-#, 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"
-
-#, c-format
-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"
+#: cups/localize.c:314
+msgid "Output bin is missing."
+msgstr "No se encuentra el recipiente de salida."
+#: systemv/cupstestdsc.c:399
msgid "PASS"
msgstr "PASA"
+#: ppdc/sample.c:252
msgid "PCL Laser Printer"
msgstr "Impresora Laser PCL"
+#: ppdc/sample.c:149
msgid "PRC16K"
msgstr "PRC16K"
+#: ppdc/sample.c:150
msgid "PRC16K Long Edge"
msgstr "PRC16K lado largo"
+#: ppdc/sample.c:151
msgid "PRC32K"
msgstr "PRC32K"
+#: ppdc/sample.c:154
msgid "PRC32K Long Edge"
msgstr "PRC32K lado largo"
+#: ppdc/sample.c:152
msgid "PRC32K Oversize"
msgstr "PRC32K Extragrande"
+#: ppdc/sample.c:153
msgid "PRC32K Oversize Long Edge"
msgstr "PRC32K Extragrande lado largo"
+#: cups/snmp.c:966
msgid "Packet does not contain a Get-Response-PDU"
msgstr "El paquete no contiene un Get-Response-PDU"
+#: cups/snmp.c:945
msgid "Packet does not start with SEQUENCE"
msgstr "El paquete no empieza por SEQUENCE"
+#: cups/localize.c:293
+msgid "Paper jam."
+msgstr "Atasco de papel."
+
+#: cups/localize.c:310
+msgid "Paper tray is almost empty."
+msgstr "La bandeja de papel está casi vacía."
+
+#: cups/localize.c:312
+msgid "Paper tray is empty."
+msgstr "La bandeja de papel está vacía."
+
+#: cups/localize.c:308
+msgid "Paper tray is missing."
+msgstr "No se encuentra la bandeja de papel."
+
+#: ppdc/sample.c:355
msgid "ParamCustominCutInterval"
msgstr "ParamCustominCutInterval"
+#: ppdc/sample.c:353
msgid "ParamCustominTearInterval"
msgstr "ParamCustominTearInterval"
+#: cups/auth.c:195 cups/auth.c:362
#, c-format
msgid "Password for %s on %s? "
msgstr "¿Contraseña de %s en %s? "
+#: systemv/cupsaddsmb.c:252
#, c-format
msgid "Password for %s required to access %s via SAMBA: "
msgstr "Se requiere la contraseña de %s para acceder a %s vía SAMBA: "
+#: cgi-bin/classes.c:159
msgid "Pause Class"
msgstr "Pausar clase"
+#: cgi-bin/printers.c:162
msgid "Pause Printer"
msgstr "Pausar impresora"
+#: ppdc/sample.c:443
msgid "Peel-Off"
msgstr "Despegar"
+#: ppdc/sample.c:160
msgid "Photo"
msgstr "Foto"
+#: ppdc/sample.c:161
msgid "Photo Labels"
msgstr "Foto pequeña"
+#: ppdc/sample.c:281
msgid "Plain Paper"
msgstr "Papel normal"
+#: cgi-bin/admin.c:3279 cgi-bin/admin.c:3560
msgid "Policies"
msgstr "Reglas"
+#: cgi-bin/admin.c:3286 cgi-bin/admin.c:3629 cgi-bin/admin.c:3642
msgid "Port Monitor"
msgstr "Monitor de puerto"
+#: ppdc/sample.c:270
msgid "PostScript Printer"
msgstr "Impresora PostScript"
+#: ppdc/sample.c:147
msgid "Postcard"
msgstr "Postal"
+#: ppdc/sample.c:71
msgid "Postcard Double "
-msgstr "Postal doble"
+msgstr "Postal doble "
+#: ppdc/sample.c:72
msgid "Postcard Double Long Edge"
msgstr "Postal doble lado largo"
+#: ppdc/sample.c:148
msgid "Postcard Long Edge"
msgstr "Postal lado largo"
+#: backend/ipp.c:961 backend/ipp.c:969
msgid "Preparing to print."
-msgstr ""
+msgstr "Preparando la impresión."
+#: ppdc/sample.c:290
msgid "Print Density"
msgstr "Densidad de impresión"
+#: cups/notify.c:82
msgid "Print Job:"
msgstr "Imprimir trabajo:"
+#: ppdc/sample.c:335
msgid "Print Mode"
msgstr "Modo de impresión"
+#: ppdc/sample.c:378
msgid "Print Rate"
msgstr "Tasa de impresión"
+#: cgi-bin/printers.c:171
msgid "Print Self-Test Page"
msgstr "Imprimir página de auto-prueba"
+#: ppdc/sample.c:322
msgid "Print Speed"
msgstr "Velocidad de impresión"
+#: cgi-bin/ipp-var.c:777
msgid "Print Test Page"
msgstr "Imprimir página de prueba"
+#: ppdc/sample.c:351
msgid "Print and Cut"
msgstr "Imprimir y cortar"
+#: ppdc/sample.c:339
msgid "Print and Tear"
msgstr "Imprimir y romper"
+#: backend/socket.c:429 backend/usb-unix.c:184
msgid "Print file sent."
msgstr "Archivo de impresión enviado."
+#: backend/ipp.c:2172
msgid "Print job canceled at printer."
msgstr "Trabajo de impresión cancelado en la impresora."
+#: backend/ipp.c:2164
msgid "Print job too large."
msgstr "Trabajo de impresión demasiado grande."
+#: backend/ipp.c:1642
msgid "Print job was not accepted."
-msgstr ""
+msgstr "No se acepta el trabajo de impresión."
+#: cgi-bin/ipp-var.c:1027
msgid "Printer Added"
msgstr "Impresora añadida"
+#: ppdc/sample.c:255
msgid "Printer Default"
msgstr "Predeterminado de la impresora"
+#: cgi-bin/ipp-var.c:1031
msgid "Printer Deleted"
msgstr "Impresora borrada"
+#: cgi-bin/ipp-var.c:1029
msgid "Printer Modified"
msgstr "Impresora modificada"
+#: cgi-bin/ipp-var.c:1025
msgid "Printer Paused"
msgstr "Impresora en pausa"
+#: ppdc/sample.c:289
msgid "Printer Settings"
msgstr "Configuración de la impresora"
+#: backend/ipp.c:2167
msgid "Printer cannot print supplied content."
msgstr "La impresora no puede imprimir el contenido suministrado."
+#: backend/ipp.c:2170
msgid "Printer cannot print with supplied options."
-msgstr ""
+msgstr "La impresora no puede imprimir con las opciones suministradas."
+#: cups/notify.c:126
msgid "Printer:"
msgstr "Impresora:"
+#: cgi-bin/printers.c:196 cgi-bin/printers.c:324
msgid "Printers"
msgstr "Impresoras"
+#: filter/rastertoepson.c:1078 filter/rastertohp.c:806
+#: filter/rastertolabel.c:1235
#, 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 "Imprimiendo página %d, %u%% completado."
+#: ppdc/sample.c:155
msgid "Quarto"
msgstr "Quarto"
+#: scheduler/ipp.c:1485 scheduler/ipp.c:10567
msgid "Quota limit reached."
msgstr "Se ha alcanzado el límite de cuota."
+#: berkeley/lpq.c:490
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"
-
+#: cgi-bin/classes.c:163 cgi-bin/printers.c:166
msgid "Reject Jobs"
msgstr "Rechazar trabajos"
+#: backend/lpd.c:1024 backend/lpd.c:1156
#, c-format
msgid "Remote host did not accept control file (%d)."
-msgstr "El ordenador remoto no ha aceptado el archivo de control (%d)."
+msgstr "El equipo remoto no ha aceptado el archivo de control (%d)."
+#: backend/lpd.c:1109
#, c-format
msgid "Remote host did not accept data file (%d)."
-msgstr "El ordenador remoto no ha aceptado el archivo de datos (%d)."
+msgstr "El equipo remoto no ha aceptado el archivo de datos (%d)."
+#: ppdc/sample.c:423
msgid "Reprint After Error"
msgstr "Volver a imprimir tras un error"
+#: cups/http-support.c:1375
msgid "Request Entity Too Large"
msgstr "La entidad requerida es demasiado larga"
+#: cups/ppd.c:755 cups/ppd.c:1321 ppdc/sample.c:231
msgid "Resolution"
msgstr "Resolución"
+#: cgi-bin/classes.c:157
msgid "Resume Class"
msgstr "Reanudar clase"
+#: cgi-bin/printers.c:159
msgid "Resume Printer"
msgstr "Reanudar impresora"
+#: ppdc/sample.c:165
msgid "Return Address"
msgstr "Remite"
+#: ppdc/sample.c:444
msgid "Rewind"
msgstr "Rebobinar"
+#: cups/adminutil.c:2041
#, c-format
msgid "Running command: %s %s -N -A %s -c '%s'"
msgstr "Ejecutando comando: %s %s -N -A %s -c '%s'"
+#: cups/snmp.c:947
msgid "SEQUENCE uses indefinite length"
msgstr "SEQUENCE usa una longitud indefinida"
+#: cups/http-support.c:1399
msgid "SSL/TLS Negotiation Error"
msgstr "Error en negociación SSL/TLS"
+#: cups/http-support.c:1356
msgid "See Other"
msgstr "Ver otros"
+#: backend/usb-darwin.c:552 backend/usb-libusb.c:346
msgid "Sending data to printer."
msgstr "Enviando datos a la impresora."
+#: cgi-bin/ipp-var.c:1041
msgid "Server Restarted"
msgstr "Servidor reiniciado"
+#: cgi-bin/ipp-var.c:1047
msgid "Server Security Auditing"
msgstr "Auditoría de seguridad del servidor"
+#: cgi-bin/ipp-var.c:1043
msgid "Server Started"
msgstr "Servidor iniciado"
+#: cgi-bin/ipp-var.c:1045
msgid "Server Stopped"
msgstr "Servidor parado"
+#: cups/tls-darwin.c:1008 cups/tls-gnutls.c:1024
+msgid "Server credentials not set."
+msgstr "Credenciales del servidor no establecidas."
+
+#: cups/http-support.c:1393
msgid "Service Unavailable"
msgstr "Servicio no disponible"
+#: 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 "Establecer usuarios permitidos"
+#: cgi-bin/admin.c:3015
msgid "Set As Server Default"
msgstr "Establecer como predeterminada del servidor"
+#: cgi-bin/admin.c:3115
msgid "Set Class Options"
msgstr "Cambiar opciones clase"
+#: cgi-bin/admin.c:3115 cgi-bin/admin.c:3289 cgi-bin/admin.c:3671
msgid "Set Printer Options"
msgstr "Cambiar opciones impresora"
+#: cgi-bin/admin.c:3841 cgi-bin/admin.c:3885 cgi-bin/admin.c:3903
msgid "Set Publishing"
msgstr "Hacer pública"
+#: ppdc/sample.c:166
msgid "Shipping Address"
msgstr "Dirección de envío"
+#: ppdc/sample.c:265
msgid "Short-Edge (Landscape)"
msgstr "Lado corto (apaisado)"
+#: ppdc/sample.c:283
msgid "Special Paper"
msgstr "Papel especial"
+#: backend/lpd.c:1065
#, c-format
msgid "Spooling job, %.0f%% complete."
msgstr "Guardando trabajo en cola, %.0f%% completado."
+#: ppdc/sample.c:336
msgid "Standard"
msgstr "Estándar"
#. TRANSLATORS: Banner/cover sheet before the print job.
+#: cgi-bin/admin.c:3532
msgid "Starting Banner"
msgstr "Rótulo inicial"
+#: filter/rastertoepson.c:1054 filter/rastertohp.c:782
+#: filter/rastertolabel.c:1211
#, c-format
msgid "Starting page %d."
msgstr "Iniciando página %d."
+#: ppdc/sample.c:156
msgid "Statement"
msgstr "Declaración"
-msgid "Stylus Color Series"
-msgstr "Stylus Color Series"
-
-msgid "Stylus Photo Series"
-msgstr "Stylus Photo Series"
-
+#: scheduler/ipp.c:3564 scheduler/ipp.c:6590 scheduler/ipp.c:7289
+#: scheduler/ipp.c:8790
#, c-format
msgid "Subscription #%d does not exist."
msgstr "Subscripción #%d no existe."
+#: test/ippfind.c:2798
msgid "Substitutions:"
-msgstr ""
+msgstr "Substituciones:"
+#: ppdc/sample.c:157
msgid "Super A"
msgstr "Super A"
+#: ppdc/sample.c:158
msgid "Super B"
msgstr "Super B (13 x 19 pulg.)"
+#: ppdc/sample.c:162
msgid "Super B/A3"
msgstr "Super B/A3"
+#: cups/http-support.c:1338
msgid "Switching Protocols"
msgstr "Protocolos de conexión"
+#: ppdc/sample.c:159
msgid "Tabloid"
msgstr "Tabloide"
+#: ppdc/sample.c:45
msgid "Tabloid Oversize"
msgstr "Tabloide Extragrande"
+#: ppdc/sample.c:46
msgid "Tabloid Oversize Long Edge"
msgstr "Tabloide Extragrande lado largo"
+#: ppdc/sample.c:337
msgid "Tear"
msgstr "Pestaña"
+#: ppdc/sample.c:442
msgid "Tear-Off"
msgstr "Pestaña desprendible"
+#: ppdc/sample.c:383
msgid "Tear-Off Adjust Position"
msgstr "Ajuste de posición de la pestaña desprendible"
+#: scheduler/ipp.c:1321
#, c-format
msgid "The \"%s\" attribute is required for print jobs."
-msgstr ""
+msgstr "Se necesita el atributo \"%s\" para los trabajos de impresión."
+#: scheduler/ipp.c:6250 scheduler/ipp.c:6330 scheduler/ipp.c:6343
+#: scheduler/ipp.c:6355 scheduler/ipp.c:6370
#, c-format
msgid "The %s attribute cannot be provided with job-ids."
msgstr "El atributo %s no puede ser usado con jobs-ids."
+#: scheduler/ipp.c:1297
#, c-format
msgid ""
"The '%s' Job Description attribute cannot be supplied in a job creation "
"request."
msgstr ""
+"El atributo de descripción de trabajo '%s' no puede ser suministrado en una "
+"solicitud de creación de trabajo."
+#: scheduler/ipp.c:5183
#, c-format
msgid ""
"The '%s' operation attribute cannot be supplied in a Create-Job request."
@@ -4202,17 +5681,22 @@ msgstr ""
"El atributo de operación '%s' no puede ser suministrado en una petición "
"Create-Job."
+#: scheduler/ipp.c:6820
#, c-format
msgid "The PPD file \"%s\" could not be found."
msgstr "No se ha podido encontrar el archivo PPD \"%s\"."
+#: scheduler/ipp.c:6807
#, c-format
msgid "The PPD file \"%s\" could not be opened: %s"
msgstr "No se ha podido abrir el archivo PPD \"%s\": %s"
+#: filter/rastertoepson.c:1023 filter/rastertohp.c:753
+#: filter/rastertolabel.c:1175
msgid "The PPD file could not be opened."
msgstr "No se ha podido abrir el archivo PPD."
+#: 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 (#)."
@@ -4220,97 +5704,103 @@ msgstr ""
"El nombre de la clase sólo puede contener hasta 127 caracteres imprimibles y "
"no puede contener espacios, barras (/), o la almohadilla (#)."
+#: cups/localize.c:338
msgid "The developer unit needs to be replaced."
-msgstr "La unidad de revelado debe ser reemplazada"
+msgstr "La unidad de revelado debe ser reemplazada."
+#: cups/localize.c:336
msgid "The developer unit will need to be replaced soon."
msgstr "La unidad de revelado necesitará ser cambiada pronto."
+#: cups/localize.c:328
msgid "The fuser's temperature is high."
-msgstr "Temperatura del fusor alta"
+msgstr "Temperatura del fusor alta."
+#: cups/localize.c:330
msgid "The fuser's temperature is low."
-msgstr "Temperatura del fusor baja"
+msgstr "Temperatura del fusor baja."
+#: scheduler/ipp.c:2088
msgid ""
"The notify-lease-duration attribute cannot be used with job subscriptions."
msgstr ""
"El atributo notify-lease-duration no puede ser usado con subscripciones de "
"trabajos."
+#: scheduler/ipp.c:2071 scheduler/ipp.c:5499
#, c-format
msgid "The notify-user-data value is too large (%d > 63 octets)."
msgstr "El valor notify-user-data es demasiado grande (%d > 63 octetos)."
+#: cups/localize.c:334
msgid "The optical photoconductor needs to be replaced."
msgstr "El fotoconductor óptico necesita ser cambiado."
+#: cups/localize.c:332
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."
-
+#: backend/ipp.c:981
msgid "The printer configuration is incorrect or the printer no longer exists."
msgstr ""
+"La configuración de la impresora es incorrecta o la impresora ya no existe."
+#: backend/lpd.c:627 backend/lpd.c:1017 backend/lpd.c:1099 backend/lpd.c:1149
msgid "The printer did not respond."
msgstr "La impresora no respondió."
+#: backend/ipp.c:825 backend/ipp.c:944 backend/ipp.c:1058 backend/ipp.c:1449
+#: backend/ipp.c:1614 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 "La impresora está en uso."
+#: cups/localize.c:320
+msgid "The printer is low on ink."
+msgstr "La impresora tiene poca tinta."
+
+#: cups/localize.c:298
+msgid "The printer is low on toner."
+msgstr "La impresora tiene poco toner."
+
+#: backend/runloop.c:243 backend/runloop.c:363 cups/localize.c:296
msgid "The printer is not connected."
msgstr "La impresora no está conectada."
+#: backend/ipp.c:803 backend/ipp.c:836 backend/ipp.c:940 backend/lpd.c:815
+#: backend/lpd.c:856 backend/socket.c:358 backend/socket.c:391
msgid "The printer is not responding."
msgstr "La impresora no responde."
+#: backend/runloop.c:385
msgid "The printer is now connected."
msgstr "La impresora está ahora conectada."
+#: backend/usb-darwin.c:1300
msgid "The printer is now online."
msgstr "La impresora está ahora en línea."
+#: backend/usb-darwin.c:1321
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."
-
+#: backend/ipp.c:818 backend/lpd.c:829 backend/socket.c:372
msgid "The printer is unreachable at this time."
msgstr "La impresora es inalcanzable en este momento."
+#: cups/localize.c:322
msgid "The printer may be out of ink."
msgstr "La impresora puede que no tenga tinta."
+#: cups/localize.c:300
msgid "The printer may be out of toner."
msgstr "La impresora puede que esté sin toner."
+#: backend/ipp.c:812 backend/lpd.c:823 backend/socket.c:366
msgid "The printer may not exist or is unavailable at this time."
msgstr "La impresora puede no existir o no estar disponible en este momento."
+#: 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 (#)."
@@ -4318,46 +5808,65 @@ msgstr ""
"El nombre de la impresora sólo puede contener hasta 127 caracteres "
"imprimibles y no puede contener espacios, barras (/), o la almohadilla (#)."
+#: scheduler/ipp.c:788 scheduler/ipp.c:1048 scheduler/ipp.c:3205
+#: scheduler/ipp.c:3384 scheduler/ipp.c:5166 scheduler/ipp.c:5333
+#: scheduler/ipp.c:5647 scheduler/ipp.c:6216 scheduler/ipp.c:7025
+#: scheduler/ipp.c:7081 scheduler/ipp.c:7395 scheduler/ipp.c:7661
+#: scheduler/ipp.c:7750 scheduler/ipp.c:7783 scheduler/ipp.c:8106
+#: scheduler/ipp.c:8500 scheduler/ipp.c:8582 scheduler/ipp.c:9747
+#: scheduler/ipp.c:10199 scheduler/ipp.c:10530 scheduler/ipp.c:10612
+#: scheduler/ipp.c:10987
msgid "The printer or class does not exist."
msgstr "La impresora o clase no existe."
+#: scheduler/ipp.c:1234
msgid "The printer or class is not shared."
msgstr "La impresora o clase no está compartida."
+#: cups/localize.c:302
msgid "The printer's cover is open."
msgstr "La tapa de la impresora está abierta."
+#: cups/localize.c:306
msgid "The printer's door is open."
msgstr "La puerta de la impresora está abierta."
+#: cups/localize.c:304
msgid "The printer's interlock is open."
msgstr "El dispositivo de seguridad de la impresora está abierto."
+#: cups/localize.c:324
msgid "The printer's waste bin is almost full."
msgstr "Recipiente de residuos de la impresora está casi lleno."
+#: cups/localize.c:326
msgid "The printer's waste bin is full."
msgstr "Recipiente de residuos de la impresora está lleno."
+#: scheduler/ipp.c:894 scheduler/ipp.c:2252
#, c-format
msgid "The printer-uri \"%s\" contains invalid characters."
msgstr "El printer-uri \"%s\" contiene caracteres no válidos."
+#: scheduler/ipp.c:3182
msgid "The printer-uri attribute is required."
msgstr "Se necesita el atributo printer-uri."
+#: scheduler/ipp.c:878
msgid ""
"The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
msgstr ""
-"El printer-uri debe ser de la forma \"ipp://NOMBRE_ORDENADOR/classes/"
+"El printer-uri debe ser de la forma \"ipp://NOMBRE_EQUIPO/classes/"
"NOMBRE_CLASE\"."
+#: scheduler/ipp.c:2236
msgid ""
"The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
msgstr ""
-"El printer-uri debe ser de la forma \"ipp://NOMBRE_ORDENADOR/printers/"
+"El printer-uri debe ser de la forma \"ipp://NOMBRE_EQUIPO/printers/"
"NOMBRE_IMPRESORA\"."
+#: cgi-bin/admin.c:452
msgid ""
"The subscription name may not contain spaces, slashes (/), question marks "
"(?), or the pound sign (#)."
@@ -4365,6 +5874,7 @@ msgstr ""
"El nombre de la subscripción no puede contener espacios, barras (/), signos "
"de interrogación (?), o la almohadilla (#)."
+#: scheduler/client.c:2232
msgid ""
"The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to "
"enable it."
@@ -4372,500 +5882,665 @@ msgstr ""
"La interfaz web está desactivada en este momento. Ejecute \"cupsctl "
"WebInterface=yes\" para activarla."
+#: scheduler/ipp.c:6314
#, c-format
msgid "The which-jobs value \"%s\" is not supported."
msgstr "No se admite el uso del valor which-jobs \"%s\"."
+#: scheduler/ipp.c:5577
msgid "There are too many subscriptions."
msgstr "Hay demasiadas subscripciones."
-msgid "There is a paper jam."
-msgstr "Hay un atasco de papel."
-
+#: backend/usb-darwin.c:386 backend/usb-darwin.c:445 backend/usb-darwin.c:514
+#: backend/usb-darwin.c:535 backend/usb-libusb.c:271 backend/usb-libusb.c:325
msgid "There was an unrecoverable USB error."
msgstr "Ha habido un error USB irrecuperable."
+#: ppdc/sample.c:430
msgid "Thermal Transfer Media"
msgstr "Soporte de transferencia térmica"
+#: scheduler/ipp.c:1479
msgid "Too many active jobs."
msgstr "Demasiados trabajos activos."
+#: scheduler/ipp.c:1373
#, c-format
msgid "Too many job-sheets values (%d > 2)."
msgstr "Demasiados valores de job-sheets (%d > 2)."
+#: scheduler/ipp.c:2537
#, c-format
msgid "Too many printer-state-reasons values (%d > %d)."
msgstr "Demasiados valores printer-state-reasons (%d > %d)."
+#: ppdc/sample.c:284
msgid "Transparency"
msgstr "Transparencia"
+#: ppdc/sample.c:279
msgid "Tray"
msgstr "Bandeja"
+#: ppdc/sample.c:256
msgid "Tray 1"
msgstr "Bandeja 1"
+#: ppdc/sample.c:257
msgid "Tray 2"
msgstr "Bandeja 2"
+#: ppdc/sample.c:258
msgid "Tray 3"
msgstr "Bandeja 3"
+#: ppdc/sample.c:259
msgid "Tray 4"
msgstr "Bandeja 4"
+#: cups/http-support.c:1378
msgid "URI Too Long"
msgstr "URI demasiado largo"
+#: cups/http-support.c:1453
+msgid "URI too large"
+msgstr "URI demasiado grande"
+
+#: ppdc/sample.c:138
msgid "US Ledger"
msgstr "Libro Mayor, 17 x 11 pulg."
+#: ppdc/sample.c:139
msgid "US Legal"
msgstr "Legal EE.UU."
+#: ppdc/sample.c:140
msgid "US Legal Oversize"
msgstr "Legal EE.UU. Extragrande"
+#: ppdc/sample.c:141
msgid "US Letter"
msgstr "Carta EE.UU."
+#: ppdc/sample.c:142
msgid "US Letter Long Edge"
msgstr "Carta EE.UU. lado largo"
+#: ppdc/sample.c:143
msgid "US Letter Oversize"
msgstr "Carta EE.UU. Extragrande"
+#: ppdc/sample.c:144
msgid "US Letter Oversize Long Edge"
msgstr "Carta EE.UU. Extragrande lado largo"
+#: ppdc/sample.c:145
msgid "US Letter Small"
msgstr "Carta EE.UU. Pequeña"
+#: cgi-bin/admin.c:1939 cgi-bin/admin.c:1952 cgi-bin/admin.c:1976
msgid "Unable to access cupsd.conf file"
msgstr "No se ha podido acceder al archivo cupsd.conf"
+#: cgi-bin/help.c:133
msgid "Unable to access help file."
msgstr "No se ha podido acceder al archivo de ayuda."
+#: cgi-bin/admin.c:504
msgid "Unable to add RSS subscription"
msgstr "No se ha podido añadir la subscripción RSS"
+#: cgi-bin/admin.c:792
msgid "Unable to add class"
msgstr "No se ha podido añadir la clase"
+#: backend/ipp.c:1796
msgid "Unable to add document to print job."
msgstr "No se ha podido añadir el documento al trabajo de impresión."
+#: scheduler/ipp.c:1537
#, c-format
msgid "Unable to add job for destination \"%s\"."
msgstr "No se ha podido añadir el trabajo para el destino \"%s\"."
+#: cgi-bin/admin.c:1037 cgi-bin/admin.c:1399
msgid "Unable to add printer"
msgstr "No se ha podido añadir la impresora"
+#: scheduler/ipp.c:1164
msgid "Unable to allocate memory for file types."
msgstr "No se ha podido reservar memoria para tipos de archivo."
+#: filter/pstops.c:418
msgid "Unable to allocate memory for page info"
msgstr "No se ha podido reservar memoria para la información de página."
+#: filter/pstops.c:412
msgid "Unable to allocate memory for pages array"
msgstr "No se ha podido reservar memoria para la secuencia de páginas"
+#: cgi-bin/admin.c:1505
msgid "Unable to cancel RSS subscription"
msgstr "No se ha podido cancelar la subscripción RSS"
+#: backend/ipp.c:2077 backend/ipp.c:2512
msgid "Unable to cancel print job."
msgstr "No se ha podido cancelar el trabajo de impresión."
+#: cgi-bin/admin.c:2970
msgid "Unable to change printer"
msgstr "No se ha podido cambiar la impresora"
+#: cgi-bin/admin.c:3886
msgid "Unable to change printer-is-shared attribute"
msgstr "No se ha podido cambiar el atributo printer-is-shared"
+#: cgi-bin/admin.c:1637 cgi-bin/admin.c:1779
msgid "Unable to change server settings"
msgstr "No se ha podido cambiar la configuración del servidor"
+#: cups/ipp.c:5389
#, c-format
msgid "Unable to compile mimeMediaType regular expression: %s."
-msgstr ""
+msgstr "No se ha podido compilar la expresión regular mimeMediaType: %s."
+#: cups/ipp.c:5335
#, c-format
msgid "Unable to compile naturalLanguage regular expression: %s."
-msgstr ""
+msgstr "No se ha podido compilar la expresión regular naturalLanguage: %s."
+#: filter/commandtops.c:407
msgid "Unable to configure printer options."
msgstr "No se han podido configurar las opciones de impresión."
+#: cups/adminutil.c:900 cups/request.c:1066
msgid "Unable to connect to host."
-msgstr "No se ha podido conectar al servidor."
+msgstr "No se ha podido conectar al equipo."
+#: backend/ipp.c:781 backend/ipp.c:1254 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 ""
"No se ha podido contactar con la impresora; poniendo en cola en la siguiente "
"impresora de la clase."
+#: cups/adminutil.c:715
#, c-format
msgid "Unable to copy 64-bit CUPS printer driver files (%d)."
msgstr ""
"No se han podido copiar los archivos del controlador de impresora de 64-bit "
"de CUPS (%d)."
+#: cups/adminutil.c:680
#, c-format
msgid "Unable to copy 64-bit Windows printer driver files (%d)."
msgstr ""
"No se han podido copiar los archivos del controlador de impresora de 64-bit "
"de Windows (%d)."
+#: cups/adminutil.c:511
#, c-format
msgid "Unable to copy CUPS printer driver files (%d)."
msgstr ""
"No se han podido copiar los archivos del controlador de impresora de CUPS "
"(%d)."
+#: scheduler/ipp.c:2657
#, c-format
msgid "Unable to copy PPD file - %s"
msgstr "No se ha podido copiar el archivo PPD - %s"
+#: scheduler/ipp.c:2712
msgid "Unable to copy PPD file."
msgstr "No se ha podido copiar el archivo PPD."
+#: cups/adminutil.c:476
#, c-format
msgid "Unable to copy Windows 2000 printer driver files (%d)."
msgstr ""
"No se han podido copiar los archivos del controlador de impresora de Windows "
"2000 (%d)."
+#: cups/adminutil.c:599
#, c-format
msgid "Unable to copy Windows 9x printer driver files (%d)."
msgstr ""
"No se han podido copiar los archivos del controlador de impresora de Windows "
"9x (%d)."
+#: scheduler/ipp.c:2634
#, c-format
msgid "Unable to copy interface script - %s"
msgstr "No se ha podido copiar el script de interfaz - %s"
+#: cups/util.c:496 cups/util.c:1479
msgid "Unable to create printer-uri"
msgstr "No se ha podido crear printer-uri"
+#: cups/tls-darwin.c:1116 cups/tls-gnutls.c:1157
+msgid "Unable to create server credentials."
+msgstr "No se han podido crear las credenciales del servidor."
+
+#: cgi-bin/admin.c:1830 cgi-bin/admin.c:1842 scheduler/cupsfilter.c:1290
msgid "Unable to create temporary file"
msgstr "No se ha podido crear el archivo temporal"
+#: cgi-bin/admin.c:2133
msgid "Unable to delete class"
msgstr "No se ha podido borrar la clase"
+#: cgi-bin/admin.c:2218
msgid "Unable to delete printer"
msgstr "No se ha podido borrar la impresora"
+#: cgi-bin/classes.c:252 cgi-bin/printers.c:261
msgid "Unable to do maintenance command"
msgstr "No se ha podido realizar el comando de mantenimiento"
+#: cgi-bin/admin.c:1954
msgid "Unable to edit cupsd.conf files larger than 1MB"
msgstr "No se pueden editar archivos cupsd.conf mayores de 1MB"
+#: cups/tls-darwin.c:1284
msgid ""
"Unable to establish a secure connection to host (certificate chain invalid)."
msgstr ""
-"No se ha podido establecer una conexión segura con el servidor (cadena "
+"No se ha podido establecer una conexión segura con el equipo (cadena "
"certificado incorrecta)."
+#: cups/tls-darwin.c:1274
msgid ""
"Unable to establish a secure connection to host (certificate not yet valid)."
msgstr ""
-"No se ha podido establecer una conexión segura con el servidor (el "
-"certificado aún no es válido)."
+"No se ha podido establecer una conexión segura con el equipo (el certificado "
+"aún no es válido)."
+#: cups/tls-darwin.c:1269
msgid "Unable to establish a secure connection to host (expired certificate)."
msgstr ""
-"No se ha podido establecer una conexión segura con el servidor (certificado "
+"No se ha podido establecer una conexión segura con el equipo (certificado "
"caducado)."
+#: cups/tls-darwin.c:1279
msgid "Unable to establish a secure connection to host (host name mismatch)."
msgstr ""
-"No se ha podido establecer una conexión segura con el servidor (el nombre de "
-"ordenador no coincide)."
+"No se ha podido establecer una conexión segura con el equipo (el nombre de "
+"equipo no coincide)."
+#: cups/tls-darwin.c:1289
msgid ""
"Unable to establish a secure connection to host (peer dropped connection "
"before responding)."
msgstr ""
-"No se ha podido establecer una conexión segura con el servidor (el par cortó "
+"No se ha podido establecer una conexión segura con el equipo (el par cortó "
"la conexión antes de responder)."
+#: cups/tls-darwin.c:1264
msgid ""
"Unable to establish a secure connection to host (self-signed certificate)."
msgstr ""
-"No se ha podido establecer una conexión segura con el servidor (certificado "
+"No se ha podido establecer una conexión segura con el equipo (certificado "
"auto-firmado)."
+#: cups/tls-darwin.c:1259
msgid ""
"Unable to establish a secure connection to host (untrusted certificate)."
msgstr ""
-"No se ha podido establecer una conexión segura con el servidor (certificado "
-"no seguro)."
+"No se ha podido establecer una conexión segura con el equipo (certificado no "
+"seguro)."
+#: cups/tls-darwin.c:1316 cups/tls-sspi.c:1247 cups/tls-sspi.c:1264
msgid "Unable to establish a secure connection to host."
-msgstr "No se ha podido establecer una conexión segura al servidor."
+msgstr "No se ha podido establecer una conexión segura al equipo."
+#: cgi-bin/ipp-var.c:350
msgid "Unable to find destination for job"
msgstr "No se ha podido encontrar destino para el trabajo"
+#: cups/http-support.c:1949
msgid "Unable to find printer."
msgstr "No se ha podido encontrar la impresora."
+#: cups/tls-darwin.c:1130
+msgid "Unable to find server credentials."
+msgstr "No se han podido encontrar las credenciales del servidor."
+
+#: backend/ipp.c:3493
msgid "Unable to get backend exit status."
-msgstr "No se ha podido obtener el estado de salida del programa backend"
+msgstr "No se ha podido obtener el estado de salida del programa backend."
+#: cgi-bin/classes.c:442
msgid "Unable to get class list"
msgstr "No se ha podido obtener la lista de clases"
+#: cgi-bin/classes.c:541
msgid "Unable to get class status"
msgstr "No se ha podido obtener el estado de la clase"
+#: cgi-bin/admin.c:1300
msgid "Unable to get list of printer drivers"
msgstr "No se ha podido obtener la lista de controladores de impresora"
+#: cgi-bin/admin.c:2820
msgid "Unable to get printer attributes"
msgstr "No se han podido obtener los atributos de la impresora"
+#: cgi-bin/printers.c:459
msgid "Unable to get printer list"
msgstr "No se ha podido obtener la lista de impresoras"
+#: cgi-bin/printers.c:561
msgid "Unable to get printer status"
msgstr "No se ha podido obtener el estado de la impresora"
+#: backend/ipp.c:1005
msgid "Unable to get printer status."
msgstr "No se ha podido obtener el estado de la impresora."
+#: cups/adminutil.c:554 cups/adminutil.c:758
#, c-format
msgid "Unable to install Windows 2000 printer driver files (%d)."
msgstr ""
"No se han podido instalar los archivos del controlador de impresora de "
"Windows 2000 (%d)."
+#: cups/adminutil.c:628
#, c-format
msgid "Unable to install Windows 9x printer driver files (%d)."
msgstr ""
"No se han podido instalar los archivos del controlador de impresora de "
"Windows 9x (%d)."
+#: cgi-bin/help.c:92
msgid "Unable to load help index."
msgstr "No se ha podido cargar el índice de ayuda."
+#: backend/ipp.c:668 backend/lpd.c:426 backend/socket.c:277
#, c-format
msgid "Unable to locate printer \"%s\"."
msgstr "No se ha podido localizar la impresora \"%s\"."
+#: backend/dnssd.c:787 backend/ipp.c:336 backend/lpd.c:196
+#: backend/socket.c:163
msgid "Unable to locate printer."
msgstr "No se ha podido localizar la impresora."
+#: cgi-bin/admin.c:791
msgid "Unable to modify class"
msgstr "No se ha podido modificar la clase"
+#: cgi-bin/admin.c:1036 cgi-bin/admin.c:1398
msgid "Unable to modify printer"
msgstr "No se ha podido modificar la impresora"
+#: cgi-bin/ipp-var.c:417 cgi-bin/ipp-var.c:506
msgid "Unable to move job"
msgstr "No se ha podido mover el trabajo"
+#: cgi-bin/ipp-var.c:419 cgi-bin/ipp-var.c:508
msgid "Unable to move jobs"
msgstr "No se han podido mover los trabajos"
+#: cgi-bin/admin.c:3166 cups/ppd.c:297
msgid "Unable to open PPD file"
msgstr "No se ha podido abrir el archivo PPD"
+#: cgi-bin/admin.c:2588
msgid "Unable to open cupsd.conf file:"
msgstr "No se ha podido abrir el archivo cupsd.conf:"
+#: backend/usb-unix.c:134
msgid "Unable to open device file"
msgstr "No se ha podido abrir el archivo de dispositivo"
+#: scheduler/ipp.c:5992
#, c-format
msgid "Unable to open document #%d in job #%d."
msgstr "No se ha podido abrir el documento #%d del trabajo #%d."
+#: cgi-bin/help.c:364
msgid "Unable to open help file."
msgstr "No se ha podido abrir el archivo de ayuda."
+#: backend/ipp.c:378 backend/ipp.c:1543 backend/ipp.c:1751 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 "No se ha podido abrir el archivo de impresión"
+#: filter/rastertoepson.c:983 filter/rastertohp.c:713
+#: filter/rastertolabel.c:1133
msgid "Unable to open raster file"
msgstr "No se ha podido abrir el archivo de trama de datos (raster)"
+#: cgi-bin/ipp-var.c:780
msgid "Unable to print test page"
msgstr "No se ha podido imprimir la página de prueba"
+#: 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 "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."
+#: cups/dest.c:3445
+msgid "Unable to resolve printer-uri."
+msgstr "No se ha podido resolver printer-uri."
+#: cups/adminutil.c:2077
#, c-format
msgid "Unable to run \"%s\": %s"
msgstr "No se ha podido ejecutar \"%s\": %s"
+#: filter/pstops.c:530
msgid "Unable to see in file"
msgstr "No se ha podido mirar en el archivo"
+#: cgi-bin/ipp-var.c:583 cgi-bin/ipp-var.c:603
msgid "Unable to send command to printer driver"
msgstr "No se ha podido enviar un comando al controlador de la impresora"
+#: backend/usb-darwin.c:744 backend/usb-libusb.c:527
msgid "Unable to send data to printer."
msgstr "No se han podido enviar datos a la impresora."
+#: cups/adminutil.c:810
#, c-format
msgid "Unable to set Windows printer driver (%d)."
msgstr ""
"No se ha podido configurar el controlador de impresora de Windows (%d)."
+#: cgi-bin/admin.c:3787
msgid "Unable to set options"
msgstr "No se han podido cambiar las opciones"
+#: cgi-bin/admin.c:3057
msgid "Unable to set server default"
msgstr "No se ha podido establecer el servidor predeterminado"
+#: backend/ipp.c:3352 backend/ipp.c:3429 backend/ipp.c:3437
msgid "Unable to start backend process."
msgstr "No se ha podido iniciar el proceso backend."
+#: cgi-bin/admin.c:1892
msgid "Unable to upload cupsd.conf file"
msgstr "No se ha podido enviar el archivo cupsd.conf"
+#: backend/usb-darwin.c:2016 backend/usb-darwin.c:2040
msgid "Unable to use legacy USB class driver."
msgstr ""
"No se ha podido usar el controlador de dispositivo de clase USB obsoleto."
+#: backend/runloop.c:114 backend/runloop.c:369
msgid "Unable to write print data"
msgstr "No se han podido escribir los datos de impresión"
+#: filter/gziptoany.c:86
#, c-format
msgid "Unable to write uncompressed print data: %s"
msgstr "No se han podido escribir los datos de impresión sin comprimir: %s"
+#: cups/http-support.c:1366
msgid "Unauthorized"
msgstr "No autorizado"
+#: cgi-bin/admin.c:3483
msgid "Units"
msgstr "Unidades"
+#: cups/http-support.c:1406 cups/http-support.c:1490 cups/ppd.c:324
msgid "Unknown"
msgstr "Desconocido"
+#: filter/pstops.c:2185
#, c-format
msgid "Unknown choice \"%s\" for option \"%s\"."
msgstr "Preferencia \"%s\" desconocida para la opción \"%s\"."
+#: backend/ipp.c:520
#, c-format
msgid "Unknown encryption option value: \"%s\"."
msgstr "Valor de opción de cifrado \"%s\" desconocida."
+#: backend/lpd.c:342
#, c-format
msgid "Unknown file order: \"%s\"."
msgstr "Orden de archivos \"%s\" desconocido."
+#: backend/lpd.c:313
#, c-format
msgid "Unknown format character: \"%c\"."
msgstr "Carácter de formato \"%c\" desconocido."
+#: cups/dest-options.c:964
msgid "Unknown media size name."
msgstr "Nombre de tamaño de papel desconocido."
+#: backend/ipp.c:584
#, c-format
msgid "Unknown option \"%s\" with value \"%s\"."
msgstr "Opción \"%s\" con valor \"%s\" desconocida."
+#: filter/pstops.c:2168
#, c-format
msgid "Unknown option \"%s\"."
-msgstr "Opción \"%s\" desconocida"
+msgstr "Opción \"%s\" desconocida."
+#: backend/lpd.c:328
#, c-format
msgid "Unknown print mode: \"%s\"."
msgstr "Modo de impresión \"%s\" desconocido."
+#: scheduler/ipp.c:10401
#, c-format
msgid "Unknown printer-error-policy \"%s\"."
msgstr "printer-error-policy \"%s\" incorrecto."
+#: scheduler/ipp.c:10384
#, c-format
msgid "Unknown printer-op-policy \"%s\"."
msgstr "printer-op-policy \"%s\" incorrecto."
+#: cups/http.c:2309
+msgid "Unknown request method."
+msgstr "Método de solicitud desconocido."
+
+#: cups/http.c:2329
+msgid "Unknown request version."
+msgstr "Versión de solicitud desconocida."
+
+#: cups/http-support.c:1483
+msgid "Unknown scheme in URI"
+msgstr "Esquema en URI desconocido"
+
+#: cups/http-addrlist.c:737
msgid "Unknown service name."
msgstr "Nombre de servicio desconocido."
+#: backend/ipp.c:549
#, c-format
msgid "Unknown version option value: \"%s\"."
msgstr "Valor de opción de versión \"%s\" desconocida."
+#: scheduler/ipp.c:10858
#, c-format
msgid "Unsupported 'compression' value \"%s\"."
-msgstr ""
+msgstr "Valor 'compression' \"%s\" no implementado."
+#: scheduler/ipp.c:10888
#, c-format
msgid "Unsupported 'document-format' value \"%s\"."
-msgstr ""
+msgstr "Valor 'document-format' \"%s\" no implementado."
+#: scheduler/ipp.c:10963
msgid "Unsupported 'job-name' value."
-msgstr ""
+msgstr "Valor 'job-name' no implementado."
+#: scheduler/ipp.c:329
#, c-format
msgid "Unsupported character set \"%s\"."
-msgstr "Juego de caracteres \"%s\" no permitido."
+msgstr "Juego de caracteres \"%s\" no implementado."
+#: scheduler/ipp.c:8072 scheduler/ipp.c:9307
#, c-format
msgid "Unsupported compression \"%s\"."
-msgstr "Compresión \"%s\" no permitida."
+msgstr "Compresión \"%s\" no implementada."
+#: scheduler/ipp.c:8206 scheduler/ipp.c:9457
#, c-format
msgid "Unsupported document-format \"%s\"."
-msgstr "document-format \"%s\" no permitido."
+msgstr "document-format \"%s\" no implementado."
+#: scheduler/ipp.c:9440
#, c-format
msgid "Unsupported document-format \"%s/%s\"."
-msgstr "document-format \"%s/%s\" no permitido."
+msgstr "document-format \"%s/%s\" no implementado."
+#: scheduler/ipp.c:1339
#, c-format
msgid "Unsupported format \"%s\"."
-msgstr "Formato \"%s\" no permitido."
+msgstr "Formato \"%s\" no implementado."
+#: scheduler/ipp.c:1437
msgid "Unsupported margins."
-msgstr "Márgenes no permitidos."
+msgstr "Márgenes no implementados."
+#: cups/pwg-media.c:549
msgid "Unsupported media value."
-msgstr "Valor del medio no permitido."
+msgstr "Valor del medio no implementado."
+#: filter/pstops.c:2450
#, c-format
msgid "Unsupported number-up value %d, using number-up=1."
msgstr ""
-"Valor de number-up (páginas por hoja) %d no permitido; usando number-up=1."
+"Valor de number-up (páginas por hoja) %d no implementado; usando number-up=1."
+#: filter/pstops.c:2484
#, c-format
msgid "Unsupported number-up-layout value %s, using number-up-layout=lrtb."
msgstr ""
-"Valor de number-up-layout (disposición de páginas por hoja) %s no permitido; "
-"usando number-up-layout=lrtb."
+"Valor de number-up-layout (disposición de páginas por hoja) %s no "
+"implementado; usando number-up-layout=lrtb."
+#: filter/pstops.c:2535
#, c-format
msgid "Unsupported page-border value %s, using page-border=none."
msgstr ""
-"Valor de page-border (borde de página) %s no permitido; usando page-"
+"Valor de page-border (borde de página) %s no implementado; usando page-"
"border=none (ninguno)."
+#: filter/rastertopwg.c:139 filter/rastertopwg.c:147 filter/rastertopwg.c:156
msgid "Unsupported raster data."
-msgstr "Trama de datos no permitidos."
+msgstr "Trama de datos no implementados."
+#: cups/snmp.c:1064
msgid "Unsupported value type"
-msgstr "Tipo de valor no permitido"
+msgstr "Tipo de valor no implementado"
+#: cups/http-support.c:1381
msgid "Upgrade Required"
msgstr "Se requiere actualización"
+#: systemv/lpadmin.c:654
msgid ""
"Usage:\n"
"\n"
@@ -4885,51 +6560,74 @@ msgstr ""
" [-P archivo_ppd] [-o nombre=valor]\n"
" [-u allow:usuario,usuario] [-u deny:usuario,usuario]"
+#: 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 "Uso: %s job-id usuario título copias opciones [archivo]"
+#: systemv/cupsaddsmb.c:281
msgid "Usage: cupsaddsmb [options] printer1 ... printerN"
msgstr "Uso: cupsaddsmb [opciones] impresora1 ... impresoraN"
+#: systemv/cupsctl.c:200
msgid "Usage: cupsctl [options] [param=value ... paramN=valueN]"
msgstr "Uso: cupsctl [opciones] [param=valor ... paramN=valorN]"
+#: scheduler/main.c:2145
msgid "Usage: cupsd [options]"
-msgstr "Uso: cupsd [opciones)"
+msgstr "Uso: cupsd [opciones]"
-msgid "Usage: cupsfilter [ options ] filename"
-msgstr "Uso: cupsfilter ( opciones ) archivo"
+#: scheduler/cupsfilter.c:1481
+msgid "Usage: cupsfilter [ options ] [ -- ] filename"
+msgstr "Uso: cupsfilter [ opciones ] [ -- ] nombre_archivo"
+#: systemv/cupstestdsc.c:425
msgid "Usage: cupstestdsc [options] filename.ps [... filename.ps]"
msgstr "Uso: cupstestdsc [opciones] nombre_archivo.ps [... nombre_archivo.ps]"
+#: systemv/cupstestppd.c:3813
msgid ""
"Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]"
msgstr ""
-"Uso: cupstestppd [opciones] nombre_archivo1.ppd[.gz] [... nombre_archivoN.ppd"
-"[.gz]]"
+"Uso: cupstestppd [opciones] nombre_archivo1.ppd[.gz] [... nombre_archivoN."
+"ppd[.gz]]"
+#: test/ippdiscover.c:814
msgid ""
"Usage: ippdiscover [options] -a\n"
" ippdiscover [options] \"service name\"\n"
"\n"
"Options:"
msgstr ""
+"Uso: ippdiscover [opciones] -a\n"
+" ippdiscover [opciones] \"nombre servicio\"\n"
+"\n"
+"Opciones:"
+#: test/ippfind.c:2738
msgid ""
"Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n"
" ippfind [options] name[.regtype[.domain.]] ... [expression]\n"
" ippfind --help\n"
" ippfind --version"
msgstr ""
+"Uso: ippfind [opciones] regtipo[,subtipo][.dominio.] ... [expresión]\n"
+" ippfind [opciones] nombre[.regtipo[.dominio.]] ... [expresión]\n"
+" ippfind --help\n"
+" ippfind --version"
+#: test/ipptool.c:4803
msgid "Usage: ipptool [options] URI filename [ ... filenameN ]"
msgstr "Uso: ipptool [opciones] URI nombre_archivo [ ... nombre_archivoN ]"
+#: systemv/lpmove.c:125
msgid "Usage: lpmove job/src dest"
msgstr "Uso: lpmove trabajo/fuente destino"
+#: systemv/lpoptions.c:539
msgid ""
"Usage: lpoptions [-h server] [-E] -d printer\n"
" lpoptions [-h server] [-E] [-p printer] -l\n"
@@ -4941,75 +6639,80 @@ 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]"
-
+#: berkeley/lpq.c:637
msgid ""
"Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
msgstr ""
-"Uso: lpq (-P dest) (-U nombre_usuario) (-h nombre_ordenador(:puerto)) (-l) "
-"(+intervalo)"
+"Uso: lpq [-P dest] [-U nombre_usuario] [-h nombre_equipo[:puerto]] [-l] "
+"[+intervalo]"
+#: ppdc/ppdc.cxx:430
msgid "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]"
msgstr "Uso: ppdc [opciones] nombre_archivo.drv [ ... nombre_archivoN.drv ]"
+#: ppdc/ppdhtml.cxx:172
msgid "Usage: ppdhtml [options] filename.drv >filename.html"
msgstr "Uso: ppdhtml [opciones] nombre_archivo.drv >nombre_archivo.html"
+#: ppdc/ppdi.cxx:128
msgid "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]"
msgstr "Uso: ppdi [opciones] nombre_archivo.ppd [ ... nombre_archivoN.ppd ]"
+#: ppdc/ppdmerge.cxx:361
msgid "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]"
msgstr ""
"Uso: ppdmerge [opciones] nombre_archivo.ppd [ ... nombre_archivoN.ppd ]"
+#: ppdc/ppdpo.cxx:252
msgid ""
"Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]"
msgstr ""
"Uso: ppdpo [opciones] -o nombre_archivo.po nombre_archivo.drv [ ... "
"nombre_archivoN.drv ]"
+#: backend/snmp.c:192
msgid "Usage: snmp [host-or-ip-address]"
-msgstr "Uso: snmp [ordenador-o-dirección-ip]"
+msgstr "Uso: snmp [equipo-o-dirección-ip]"
+#: cups/snmp.c:1016
msgid "Value uses indefinite length"
msgstr "Valor usa una longitud indefinida"
+#: cups/snmp.c:1001
msgid "VarBind uses indefinite length"
msgstr "VarBind usa una longitud indefinida"
+#: cups/snmp.c:951
msgid "Version uses indefinite length"
msgstr "Versión usa una longitud indefinida"
+#: backend/ipp.c:1913
msgid "Waiting for job to complete."
msgstr "Esperando a que finalice el trabajo."
+#: backend/usb-darwin.c:469 backend/usb-libusb.c:223
msgid "Waiting for printer to become available."
msgstr "Esperando a que la impresora esté disponible."
+#: backend/socket.c:440
msgid "Waiting for printer to finish."
msgstr "Esperando a que finalice la impresora."
+#: cups/adminutil.c:782
msgid "Warning, no Windows 2000 printer drivers are installed."
msgstr ""
"Advertencia, no está instalado ningún controlador de impresora de Windows "
"2000."
+#: cups/http-support.c:1402
msgid "Web Interface is Disabled"
msgstr "La interfaz web está desactivada."
+#: cups/ppd.c:1902
msgid "Yes"
msgstr "Si"
+#: scheduler/client.c:2219
#, c-format
msgid ""
"You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://"
@@ -5018,306 +6721,389 @@ msgstr ""
"Debe acceder a esta página usando el URL <A HREF=\"https://%s:%d%s\">https://"
"%s:%d%s</A>."
-msgid ""
-"Your password must be at least 6 characters long, cannot contain your "
-"username, and must contain at least one letter and number."
-msgstr ""
-"Su contraseña debe tener al menos 6 caracteres, no puede contener su nombre "
-"de usuario, y debe tener al menos una letra y un número."
-
+#: ppdc/sample.c:434
msgid "ZPL Label Printer"
msgstr "Impresora de etiquetas ZPL"
+#: ppdc/sample.c:357
msgid "Zebra"
msgstr "Zebra"
+#: cups/notify.c:102
msgid "aborted"
msgstr "cancelado"
+#: cups/notify.c:99
msgid "canceled"
msgstr "cancelado"
+#: cups/notify.c:105
msgid "completed"
msgstr "completado"
+#: scheduler/ipp.c:5864
msgid "cups-deviced failed to execute."
msgstr "Ha fallado al ejecutarse cups-deviced."
+#: scheduler/ipp.c:6743 scheduler/ipp.c:6992
msgid "cups-driverd failed to execute."
msgstr "Ha fallado al ejecutarse cups-driverd."
+#: systemv/cupsaddsmb.c:233
#, c-format
msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s"
msgstr "cupsaddsmb: No hay archivo PPD para la impresora \"%s\" - %s"
+#: systemv/cupsctl.c:141
msgid "cupsctl: Cannot set Listen or Port directly."
msgstr "cupsctl: No se puede establecer Listen o Port directamente."
+#: systemv/cupsctl.c:152
#, c-format
msgid "cupsctl: Unable to connect to server: %s"
msgstr "cupsctl: No se ha podido conectar al servidor: %s"
+#: systemv/cupsctl.c:195
#, c-format
msgid "cupsctl: Unknown option \"%s\""
msgstr "cupsctl: Opción \"%s\" desconocida"
+#: systemv/cupsctl.c:197
#, c-format
msgid "cupsctl: Unknown option \"-%c\""
msgstr "cupsctl: Opción \"-%c\" desconocida"
+#: scheduler/main.c:171
msgid "cupsd: Expected config filename after \"-c\" option."
msgstr ""
"cupsd: Se esperaba un nombre de archivo de configuración tras la opción \"-c"
"\"."
+#: scheduler/main.c:258
msgid "cupsd: Expected cups-files.conf filename after \"-s\" option."
msgstr ""
+"cupsd: Se esperaba el nombre de archivo cups-files.conf tras la opción \"-s"
+"\"."
-msgid "cupsd: Relative cups-files.conf filename not allowed."
+#: scheduler/main.c:236
+msgid "cupsd: On-demand support not compiled in, running in normal mode."
msgstr ""
+"cupsd: El uso bajo-demanda no está compilado. Funcionando en modo normal."
+
+#: scheduler/main.c:269
+msgid "cupsd: Relative cups-files.conf filename not allowed."
+msgstr "cupsd: No se permite nombre de archivo cups-files.conf relativo."
+#: scheduler/main.c:202 scheduler/main.c:209
msgid "cupsd: Unable to get current directory."
msgstr "cupsd: No se ha podido obtener el directorio actual."
+#: scheduler/main.c:316 scheduler/main.c:325
msgid "cupsd: Unable to get path to cups-files.conf file."
-msgstr ""
+msgstr "cupsd: No se ha podido obtener la ruta al archivo cups-files.conf."
+#: scheduler/main.c:298
#, c-format
msgid "cupsd: Unknown argument \"%s\" - aborting."
msgstr "cupsd: Argumento \"%s\" desconocido - cancelando."
+#: scheduler/main.c:291
#, c-format
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."
-
+#: scheduler/cupsfilter.c:1263
#, c-format
msgid "cupsfilter: Invalid document number %d."
msgstr "cupsfilter: Número de documento %d no válido."
+#: scheduler/cupsfilter.c:1257
#, c-format
msgid "cupsfilter: Invalid job ID %d."
msgstr "cupsfilter: ID de trabajo %d no válida."
+#: scheduler/cupsfilter.c:348
msgid "cupsfilter: Only one filename can be specified."
msgstr "cupsfilter: Solo se puede especificar un nombre de archivo."
+#: scheduler/cupsfilter.c:1305
#, c-format
msgid "cupsfilter: Unable to get job file - %s"
msgstr "cupsfilter: No se ha podido obtener el archivo del trabajo - %s"
+#: systemv/cupstestppd.c:261
msgid "cupstestppd: The -q option is incompatible with the -v option."
msgstr "cupstestppd: La opción -q es incompatible con la opción -v."
+#: systemv/cupstestppd.c:277
msgid "cupstestppd: The -v option is incompatible with the -q option."
msgstr "cupstestppd: La opción -v es incompatible con la opción -q."
+#: systemv/lpstat.c:1232 systemv/lpstat.c:1235 systemv/lpstat.c:1238
#, c-format
msgid "device for %s/%s: %s"
msgstr "dispositivo para %s/%s: %s"
+#: systemv/lpstat.c:1218 systemv/lpstat.c:1221 systemv/lpstat.c:1224
#, c-format
msgid "device for %s: %s"
msgstr "dispositivo para %s: %s"
+#: cups/snmp.c:988
msgid "error-index uses indefinite length"
msgstr "error-index usa una longitud indefinida"
+#: cups/snmp.c:980
msgid "error-status uses indefinite length"
msgstr "error-status usa una longitud indefinida"
+#: cups/notify.c:90
msgid "held"
msgstr "retenido"
+#: berkeley/lpc.c:201
msgid "help\t\tGet help on commands."
msgstr "help\t\tProporciona ayuda sobre los comandos."
+#: cups/notify.c:131
msgid "idle"
msgstr "inactiva"
+#: test/ippfind.c:2465
#, c-format
msgid "ippfind: Bad regular expression: %s"
-msgstr ""
+msgstr "ippfind: Expresión regular incorrecta: %s"
+#: test/ippfind.c:328
msgid "ippfind: Cannot use --and after --or."
-msgstr ""
+msgstr "ippfind: No se puede usar --and tras --or."
+#: test/ippfind.c:601
#, c-format
msgid "ippfind: Expected key name after %s."
-msgstr ""
+msgstr "ippfind: Se esperaba un nombre de clave tras %s."
+#: test/ippfind.c:551 test/ippfind.c:734
#, c-format
msgid "ippfind: Expected port range after %s."
-msgstr ""
+msgstr "ippfind: Se esperaba un intervalo de puertos tras %s."
+#: test/ippfind.c:361
#, c-format
msgid "ippfind: Expected program after %s."
-msgstr ""
+msgstr "ippfind: Se esperaba un programa tras %s."
+#: test/ippfind.c:378
#, c-format
msgid "ippfind: Expected semi-colon after %s."
-msgstr ""
+msgstr "ippfind: Se esperaba un punto y coma tras %s."
+#: test/ippfind.c:1965
msgid "ippfind: Missing close brace in substitution."
-msgstr ""
+msgstr "ippfind: Falta la llave de cierre en la substitución."
+#: test/ippfind.c:1053
msgid "ippfind: Missing close parenthesis."
-msgstr ""
+msgstr "ippfind: Falta el paréntesis de cierre."
+#: test/ippfind.c:335
msgid "ippfind: Missing expression before \"--and\"."
-msgstr ""
+msgstr "ippfind: Falta una expresión antes de \"--and\"."
+#: test/ippfind.c:448
msgid "ippfind: Missing expression before \"--or\"."
-msgstr ""
+msgstr "ippfind: Falta una expresión antes de \"--or\"."
+#: test/ippfind.c:871
#, c-format
msgid "ippfind: Missing key name after %s."
-msgstr ""
+msgstr "ippfind: Falta un nombre de clave tras %s."
+#: test/ippfind.c:1024
msgid "ippfind: Missing open parenthesis."
-msgstr ""
+msgstr "ippfind: Falta el paréntesis de apertura."
+#: test/ippfind.c:901
#, c-format
msgid "ippfind: Missing program after %s."
-msgstr ""
+msgstr "ippfind: Falta un programa tras %s."
+#: test/ippfind.c:347 test/ippfind.c:401 test/ippfind.c:430 test/ippfind.c:536
+#: test/ippfind.c:618 test/ippfind.c:633 test/ippfind.c:788 test/ippfind.c:803
+#: test/ippfind.c:826 test/ippfind.c:886
#, c-format
msgid "ippfind: Missing regular expression after %s."
-msgstr ""
+msgstr "ippfind: Falta una expresión regular tras %s."
+#: test/ippfind.c:919
#, c-format
msgid "ippfind: Missing semi-colon after %s."
-msgstr ""
+msgstr "ippfind: Falta un punto y coma tras %s."
+#: test/ippfind.c:1912 test/ippfind.c:1937
msgid "ippfind: Out of memory."
-msgstr ""
+msgstr "ippfind: Sin memoria."
+#: test/ippfind.c:997
msgid "ippfind: Too many parenthesis."
-msgstr ""
+msgstr "ippfind: Demasiados paréntesis."
+#: test/ippfind.c:1266 test/ippfind.c:1402 test/ippfind.c:2557
#, c-format
msgid "ippfind: Unable to browse or resolve: %s"
-msgstr ""
+msgstr "ippfind: No se ha podido examinar o resolver: %s"
+#: test/ippfind.c:2035 test/ippfind.c:2062
#, c-format
msgid "ippfind: Unable to execute \"%s\": %s"
-msgstr ""
+msgstr "ippfind: No se ha podido ejecutar \"%s\": %s"
+#: test/ippfind.c:1143 test/ippfind.c:1151 test/ippfind.c:1162
#, c-format
msgid "ippfind: Unable to use Bonjour: %s"
-msgstr ""
+msgstr "ippfind: No se ha podido usar Bonjour: %s"
+#: test/ippfind.c:1994
#, c-format
msgid "ippfind: Unknown variable \"{%s}\"."
-msgstr ""
+msgstr "ippfind: Variable desconocida \"{%s}\"."
-msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
-msgstr "ipptool: \"-i\" y \"-n\" son incompatibles with -X\"."
+#: test/ipptool.c:326 test/ipptool.c:389 test/ipptool.c:544 test/ipptool.c:567
+msgid "ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"."
+msgstr "ipptool: \"-i\" y \"-n\" no son compatibles con \"-P\" y \"-X\"."
+#: test/ipptool.c:623
#, c-format
msgid "ipptool: Bad URI - %s."
msgstr "ipptool: URI - %s incorrecto."
+#: test/ipptool.c:537
msgid "ipptool: Invalid seconds for \"-i\"."
msgstr "ipptool: Número de segundos no válido para \"-i\"."
+#: test/ipptool.c:604
msgid "ipptool: May only specify a single URI."
msgstr "ipptool: Sólo se puede especificar un URI."
+#: test/ipptool.c:559
msgid "ipptool: Missing count for \"-n\"."
msgstr "ipptool: Falta el contador para \"-n\"."
+#: test/ipptool.c:423
msgid "ipptool: Missing filename for \"-f\"."
msgstr "ipptool: Falta el nombre del archivo para \"-f\"."
+#: test/ipptool.c:404
msgid "ipptool: Missing name=value for \"-d\"."
msgstr "ipptool: Falta un nombre=valor para \"-d\"."
+#: test/ipptool.c:527
msgid "ipptool: Missing seconds for \"-i\"."
msgstr "ipptool: Falta el número de segundos para \"-i\"."
+#: test/ipptool.c:649
msgid "ipptool: URI required before test file."
msgstr "ipptool: Se requiere un URI antes del archivo de prueba."
+#: test/ipptool.c:585
#, c-format
msgid "ipptool: Unknown option \"-%c\"."
msgstr "ipptool: Opción \"-%c\" desconocida."
+#: scheduler/ipp.c:7739
msgid "job-printer-uri attribute missing."
msgstr "Falta el atributo job-printer-uri."
+#: systemv/lpadmin.c:117 systemv/lpadmin.c:361
msgid "lpadmin: Class name can only contain printable characters."
msgstr ""
"lpadmin: El nombre de la clase sólo puede contener caracteres imprimibles."
+#: systemv/lpadmin.c:600
msgid "lpadmin: Expected PPD after \"-P\" option."
msgstr "lpadmin: Se esperaba un PPD tras la opción \"-P\"."
+#: systemv/lpadmin.c:443
msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
msgstr "lpadmin: Se esperaba allow/deny:lista_usuarios tras la opción \"-u\"."
+#: systemv/lpadmin.c:350
msgid "lpadmin: Expected class after \"-r\" option."
msgstr "lpadmin: Se esperaba una clase tras la opción \"-r\"."
+#: systemv/lpadmin.c:106
msgid "lpadmin: Expected class name after \"-c\" option."
msgstr "lpadmin: Se esperaba un nombre de clase tras la opción \"-c\"."
+#: systemv/lpadmin.c:544
msgid "lpadmin: Expected description after \"-D\" option."
msgstr "lpadmin: Se esperaba una descripción tras la opción \"-D\"."
+#: systemv/lpadmin.c:477
msgid "lpadmin: Expected device URI after \"-v\" option."
msgstr "lpadmin: Se esperaba un URI de dispositivo tras la opción \"-v\"."
+#: systemv/lpadmin.c:560
msgid "lpadmin: Expected file type(s) after \"-I\" option."
msgstr "lpadmin: Se esperaba(n) tipo(s) de archivo(s) tras la opción \"-l\"."
+#: systemv/lpadmin.c:188
msgid "lpadmin: Expected hostname after \"-h\" option."
-msgstr "lpadmin: Se esperaba un nombre de ordenador tras la opción \"-h\"."
+msgstr "lpadmin: Se esperaba un nombre de equipo tras la opción \"-h\"."
+#: systemv/lpadmin.c:207
msgid "lpadmin: Expected interface after \"-i\" option."
msgstr "lpadmin: Se esperaba una interfaz tras la opción \"-i\"."
+#: systemv/lpadmin.c:580
msgid "lpadmin: Expected location after \"-L\" option."
msgstr "lpadmin: Se esperaba una ubicación tras la opción \"-L\"."
+#: systemv/lpadmin.c:260
msgid "lpadmin: Expected model after \"-m\" option."
msgstr "lpadmin: Se esperaba un modelo tras la opción \"-m\"."
+#: systemv/lpadmin.c:403
msgid "lpadmin: Expected name after \"-R\" option."
msgstr "lpadmin: Se esperaba un nombre tras la opción \"-R\"."
+#: systemv/lpadmin.c:280
msgid "lpadmin: Expected name=value after \"-o\" option."
msgstr "lpadmin: Se esperaba un nombre=valor tras la opción \"-o\"."
+#: systemv/lpadmin.c:299
msgid "lpadmin: Expected printer after \"-p\" option."
msgstr "lpadmin: Se esperaba una impresora tras la opción \"-p\"."
+#: systemv/lpadmin.c:150
msgid "lpadmin: Expected printer name after \"-d\" option."
msgstr "lpadmin: Se esperaba un nombre de impresora tras la opción \"-d\"."
+#: systemv/lpadmin.c:511
msgid "lpadmin: Expected printer or class after \"-x\" option."
msgstr "lpadmin: Se esperaba una impresora o clase tras la opción \"-x\"."
+#: systemv/lpadmin.c:961
msgid "lpadmin: No member names were seen."
-msgstr "lpadmin: No se han visto nombres de miembros"
+msgstr "lpadmin: No se han visto nombres de miembros."
+#: systemv/lpadmin.c:748
#, c-format
msgid "lpadmin: Printer %s is already a member of class %s."
msgstr "lpadmin: La impresora %s ya es miembro de la clase %s."
+#: systemv/lpadmin.c:975
#, c-format
msgid "lpadmin: Printer %s is not a member of class %s."
msgstr "lpadmin: La impresora %s no es miembro de la clase %s."
+#: systemv/lpadmin.c:161 systemv/lpadmin.c:310 systemv/lpadmin.c:522
msgid "lpadmin: Printer name can only contain printable characters."
msgstr ""
"lpadmin: El nombre de la impresora sólo puede contener caracteres "
"imprimibles."
+#: systemv/lpadmin.c:91
msgid ""
"lpadmin: Unable to add a printer to the class:\n"
" You must specify a printer name first."
@@ -5325,13 +7111,18 @@ msgstr ""
"lpadmin: No se ha podido añadir una impresora a la clase:\n"
" Debe especificar un nombre de impresora primero."
+#: 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 "lpadmin: No se ha podido conectar al servidor: %s"
+#: systemv/lpadmin.c:1314
msgid "lpadmin: Unable to create temporary file"
msgstr "lpadmin: No se ha podido crear el archivo temporal"
+#: systemv/lpadmin.c:388
msgid ""
"lpadmin: Unable to delete option:\n"
" You must specify a printer name first."
@@ -5339,10 +7130,12 @@ msgstr ""
"lpadmin: No se ha podido borrar la opción:\n"
" Primero debe especificar un nombre de impresora."
+#: systemv/lpadmin.c:1324
#, c-format
msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
msgstr "lpadmin: No se ha podido abrir el archivo PPD \"%s\" - %s"
+#: systemv/lpadmin.c:334
msgid ""
"lpadmin: Unable to remove a printer from the class:\n"
" You must specify a printer name first."
@@ -5350,6 +7143,7 @@ msgstr ""
"lpadmin: No se ha podido quitar una impresora de la clase:\n"
" Primero debe especificar un nombre de impresora."
+#: systemv/lpadmin.c:642
msgid ""
"lpadmin: Unable to set the printer options:\n"
" You must specify a printer name first."
@@ -5357,132 +7151,112 @@ msgstr ""
"lpadmin: No se han podido establecer las opciones de impresora:\n"
" Primero debe especificar un nombre de impresora."
+#: systemv/lpadmin.c:460
#, c-format
msgid "lpadmin: Unknown allow/deny option \"%s\"."
msgstr "lpadmin: Opción allow/deny desconocida \"%s\"."
+#: systemv/lpadmin.c:615
#, c-format
msgid "lpadmin: Unknown argument \"%s\"."
msgstr "lpadmin: Argumento \"%s\" desconocido."
+#: systemv/lpadmin.c:610
#, c-format
msgid "lpadmin: Unknown option \"%c\"."
msgstr "lpadmin: Opción \"%c\" desconocida."
+#: systemv/lpadmin.c:566
msgid "lpadmin: Warning - content type list ignored."
msgstr "lpadmin: Advertencia - lista de tipo de contenido no tenida en cuenta."
+#: berkeley/lpc.c:68 berkeley/lpc.c:96 berkeley/lpc.c:132
msgid "lpc> "
msgstr "lpc> "
+#: systemv/lpinfo.c:137
msgid "lpinfo: Expected 1284 device ID string after \"--device-id\"."
msgstr ""
"lpinfo: Se esperaba una cadena ID de dispositivo 1284 tras \"--device-id\"."
+#: systemv/lpinfo.c:190
msgid "lpinfo: Expected language after \"--language\"."
msgstr "lpinfo: Se esperaba un idioma tras \"--language\"."
+#: systemv/lpinfo.c:207
msgid "lpinfo: Expected make and model after \"--make-and-model\"."
msgstr "lpinfo: Se esperaba marca y modelo tras \"--make-and-model\"."
+#: systemv/lpinfo.c:224
msgid "lpinfo: Expected product string after \"--product\"."
msgstr "lpinfo: Se esperaba una cadena de producto tras \"--product\"."
+#: systemv/lpinfo.c:155
msgid "lpinfo: Expected scheme list after \"--exclude-schemes\"."
msgstr "lpinfo: Se esperaba una lista de esquemas tras \"--exclude-schemes\"."
+#: systemv/lpinfo.c:173
msgid "lpinfo: Expected scheme list after \"--include-schemes\"."
msgstr "lpinfo: Se esperaba una lista de esquemas tras \"--include-schemes\"."
+#: systemv/lpinfo.c:241
msgid "lpinfo: Expected timeout after \"--timeout\"."
msgstr "lpinfo: Se esperaba un tiempo de espera tras \"--timeout\"."
+#: systemv/lpinfo.c:265
#, c-format
msgid "lpinfo: Unknown argument \"%s\"."
msgstr "lpinfo: Argumento \"%s\" desconocido."
+#: systemv/lpinfo.c:259
#, c-format
msgid "lpinfo: Unknown option \"%c\"."
msgstr "lpinfo: Opción \"%c\" desconocida."
+#: systemv/lpinfo.c:252
#, c-format
msgid "lpinfo: Unknown option \"%s\"."
msgstr "lpinfo: Opción \"%s\" desconocida."
+#: systemv/lpmove.c:133
#, c-format
msgid "lpmove: Unable to connect to server: %s"
msgstr "lpmove: No se ha podido conectar al servidor: %s"
+#: systemv/lpmove.c:119
#, c-format
msgid "lpmove: Unknown argument \"%s\"."
msgstr "lpmove: Argumento \"%s\" desconocido."
+#: systemv/lpmove.c:97
#, c-format
msgid "lpmove: Unknown option \"%c\"."
msgstr "lpmove: Opción \"%c\" desconocida."
+#: systemv/lpoptions.c:143 systemv/lpoptions.c:161 systemv/lpoptions.c:237
msgid "lpoptions: No printers."
msgstr "lpoptions: No hay impresoras."
+#: systemv/lpoptions.c:212
#, c-format
msgid "lpoptions: Unable to add printer or instance: %s"
msgstr "lpoptions: No se ha podido añadir la impresora o la instancia: %s"
+#: systemv/lpoptions.c:507
#, c-format
msgid "lpoptions: Unable to get PPD file for %s: %s"
msgstr "lpoptions: No se ha podido obtener el archivo PPD para %s: %s"
+#: systemv/lpoptions.c:515
#, c-format
msgid "lpoptions: Unable to open PPD file for %s."
msgstr "lpoptions: No se ha podido abrir el archivo PPD para %s."
+#: systemv/lpoptions.c:92
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."
-
+#: systemv/lpstat.c:1074
#, c-format
msgid ""
"lpstat: error - %s environment variable names non-existent destination \"%s"
@@ -5491,110 +7265,137 @@ msgstr ""
"lpstat: error - Los nombre de variable de entorno %s no existen en el "
"destino \"%s\"."
+#: systemv/lpstat.c:1010
#, c-format
msgid "members of class %s:"
msgstr "miembros de la clase %s:"
+#: berkeley/lpq.c:549
msgid "no entries"
msgstr "no hay entradas"
+#: systemv/lpstat.c:1078
msgid "no system default destination"
msgstr "no hay un destino predeterminado del sistema"
+#: scheduler/ipp.c:5548
msgid "notify-events not specified."
msgstr "notify-events no especificado."
+#: scheduler/ipp.c:2025 scheduler/ipp.c:5453
#, c-format
msgid "notify-recipient-uri URI \"%s\" is already used."
msgstr "El URI notify-recipient-uri \"%s\" ya está usado."
+#: scheduler/ipp.c:2015 scheduler/ipp.c:5443
#, c-format
msgid "notify-recipient-uri URI \"%s\" uses unknown scheme."
msgstr "El URI notify-recipient-uri \"%s\" usa un esquema desconocido."
+#: cups/notify.c:87
msgid "pending"
msgstr "pendiente"
+#: ppdc/ppdc.cxx:108 ppdc/ppdpo.cxx:93
#, c-format
msgid "ppdc: Adding include directory \"%s\"."
msgstr "ppdc: Añadiendo directorio include \"%s\"."
+#: ppdc/ppdpo.cxx:134
#, c-format
msgid "ppdc: Adding/updating UI text from %s."
msgstr "ppdc: Añadiendo/actualizando texto UI desde %s."
+#: ppdc/ppdc-source.cxx:367
#, c-format
msgid "ppdc: Bad boolean value (%s) on line %d of %s."
msgstr "ppdc: Valor lógico (%s) incorrecto en línea %d de %s."
+#: ppdc/ppdc-import.cxx:264
#, c-format
msgid "ppdc: Bad font attribute: %s"
-msgstr "ppdc: Atributo de fuente: %s incorrecto"
+msgstr "ppdc: Atributo de fuente incorrecto: %s"
+#: ppdc/ppdc-source.cxx:1753
#, c-format
msgid "ppdc: Bad resolution name \"%s\" on line %d of %s."
msgstr "ppdc: Resolución de nombre \"%s\" incorrecta en línea %d de %s."
+#: ppdc/ppdc-source.cxx:1070
#, c-format
msgid "ppdc: Bad status keyword %s on line %d of %s."
msgstr "ppdc: Clave de estado %s incorrecta en línea %d de %s."
+#: ppdc/ppdc-source.cxx:1990
#, c-format
msgid "ppdc: Bad variable substitution ($%c) on line %d of %s."
msgstr "ppdc: Sustitución de variable ($%c) errónea en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:2675
#, c-format
msgid "ppdc: Choice found on line %d of %s with no Option."
msgstr "ppdc: Selección encontrada en línea %d de %s sin opciones."
+#: ppdc/ppdc-source.cxx:1655
#, c-format
msgid "ppdc: Duplicate #po for locale %s on line %d of %s."
msgstr "ppdc: #po duplicado para código regional %s en línea %d de %s."
+#: ppdc/ppdc-source.cxx:889
#, c-format
msgid "ppdc: Expected a filter definition on line %d of %s."
msgstr "ppdc: Se esperaba una definición de filtro en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:912
#, c-format
msgid "ppdc: Expected a program name on line %d of %s."
msgstr "ppdc: Se esperaba un nombre de programa en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:351
#, c-format
msgid "ppdc: Expected boolean value on line %d of %s."
msgstr "ppdc: Se esperaba un valor lógico en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:1050
#, c-format
msgid "ppdc: Expected charset after Font on line %d of %s."
msgstr ""
"ppdc: Se esperaba un juego de caracteres tras Font en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:404
#, c-format
msgid "ppdc: Expected choice code on line %d of %s."
msgstr "ppdc: Se esperaba un código apropiado en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:392
#, c-format
msgid "ppdc: Expected choice name/text on line %d of %s."
msgstr "ppdc: Se esperaba un nombre/texto apropiado en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:460
#, c-format
msgid "ppdc: Expected color order for ColorModel on line %d of %s."
msgstr ""
"ppdc: Se esperaba un orden de color para ColorModel en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:449
#, c-format
msgid "ppdc: Expected colorspace for ColorModel on line %d of %s."
msgstr "ppdc: Se esperaba colorspace para ColorModel en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:471
#, c-format
msgid "ppdc: Expected compression for ColorModel on line %d of %s."
msgstr "ppdc: Se esperaba compresión para ColorModel en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:652
#, c-format
msgid "ppdc: Expected constraints string for UIConstraints on line %d of %s."
msgstr ""
"ppdc: Se esperaba una cadena de restricciones para UIConstraints en la línea "
"%d de %s."
+#: ppdc/ppdc-source.cxx:2861
#, c-format
msgid ""
"ppdc: Expected driver type keyword following DriverType on line %d of %s."
@@ -5602,108 +7403,133 @@ msgstr ""
"ppdc: Se esperaba una clave de tipo de controlador tras DriverType en la "
"línea %d de %s."
+#: ppdc/ppdc-source.cxx:783
#, c-format
msgid "ppdc: Expected duplex type after Duplex on line %d of %s."
msgstr "ppdc: Se esperaba un tipo dúplex tras Duplex en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:1034
#, c-format
msgid "ppdc: Expected encoding after Font on line %d of %s."
msgstr "ppdc: Se esperaba una codificación tras Font en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:1646
#, c-format
msgid "ppdc: Expected filename after #po %s on line %d of %s."
msgstr ""
"ppdc: Se esperaba un nombre de archivo tras #po %s en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:1162
#, c-format
msgid "ppdc: Expected group name/text on line %d of %s."
msgstr "ppdc: Se esperaba un nombre/texto de grupo en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:2575
#, c-format
msgid "ppdc: Expected include filename on line %d of %s."
msgstr "ppdc: Se esperaba un nombre de archivo include en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:1459
#, c-format
msgid "ppdc: Expected integer on line %d of %s."
msgstr "ppdc: Se esperaba un número entero en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:1638
#, c-format
msgid "ppdc: Expected locale after #po on line %d of %s."
msgstr "ppdc: Se esperaba un código regional tras #po en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:310
#, c-format
msgid "ppdc: Expected name after %s on line %d of %s."
msgstr "ppdc: Se esperaba un nombre tras %s en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:3233
#, c-format
msgid "ppdc: Expected name after FileName on line %d of %s."
msgstr "ppdc: Se esperaba un nombre tras FileName en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:1015
#, c-format
msgid "ppdc: Expected name after Font on line %d of %s."
msgstr "ppdc: Se esperaba un nombre tras Font en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:3064
#, c-format
msgid "ppdc: Expected name after Manufacturer on line %d of %s."
msgstr "ppdc: Se esperaba un nombre tras Manufacturer en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:3097
#, c-format
msgid "ppdc: Expected name after MediaSize on line %d of %s."
msgstr "ppdc: Se esperaba un nombre tras MediaSize en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:3187
#, c-format
msgid "ppdc: Expected name after ModelName on line %d of %s."
msgstr "ppdc: Se esperaba un nombre tras ModelName en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:3250
#, c-format
msgid "ppdc: Expected name after PCFileName on line %d of %s."
msgstr "ppdc: Se esperaba un nombre tras PCFileName en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:1113
#, c-format
msgid "ppdc: Expected name/text after %s on line %d of %s."
msgstr "ppdc: Se esperaba un nombre/texto tras %s en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:1202
#, c-format
msgid "ppdc: Expected name/text after Installable on line %d of %s."
msgstr ""
"ppdc: Se esperaba un nombre/texto tras Installable en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:1739
#, c-format
msgid "ppdc: Expected name/text after Resolution on line %d of %s."
msgstr ""
"ppdc: Se esperaba un nombre/texto tras Resolution en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:436
#, c-format
msgid "ppdc: Expected name/text combination for ColorModel on line %d of %s."
msgstr ""
"ppdc: Se esperaba una combinación nombre/texto para ColorModel en la línea "
"%d de %s."
+#: ppdc/ppdc-source.cxx:1531
#, c-format
msgid "ppdc: Expected option name/text on line %d of %s."
msgstr "ppdc: Se esperaba una opción de nombre/texto en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:1565
#, c-format
msgid "ppdc: Expected option section on line %d of %s."
msgstr "ppdc: Se esperaba una sección de opciones en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:1543
#, c-format
msgid "ppdc: Expected option type on line %d of %s."
msgstr "ppdc: Se esperaba un tipo de opción en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:1722
#, c-format
msgid "ppdc: Expected override field after Resolution on line %d of %s."
msgstr ""
"ppdc: Se esperaba un campo de anulación tras Resolution en la línea %d de %s."
+#: ppdc/ppdc-catalog.cxx:389 ppdc/ppdc-catalog.cxx:401
#, c-format
msgid "ppdc: Expected quoted string on line %d of %s."
msgstr "ppdc: Se esperaba una cadena entrecomillada en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:961
#, c-format
msgid "ppdc: Expected real number on line %d of %s."
msgstr "ppdc: Se esperaba un número real en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:529
#, c-format
msgid ""
"ppdc: Expected resolution/mediatype following ColorProfile on line %d of %s."
@@ -5711,6 +7537,7 @@ msgstr ""
"ppdc: Se esperaba resolución/tipo de soporte tras ColorProfile en la línea "
"%d de %s."
+#: ppdc/ppdc-source.cxx:1820
#, c-format
msgid ""
"ppdc: Expected resolution/mediatype following SimpleColorProfile on line %d "
@@ -5719,80 +7546,100 @@ msgstr ""
"ppdc: Se esperaba resolución/tipo de soporte tras SimpleColorProfile en la "
"línea %d de %s."
+#: ppdc/ppdc-source.cxx:318
#, c-format
msgid "ppdc: Expected selector after %s on line %d of %s."
msgstr "ppdc: Se esperaba un selector tras %s en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:1058
#, c-format
msgid "ppdc: Expected status after Font on line %d of %s."
msgstr "ppdc: Se esperaba un estado tras Font en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:2750
#, c-format
msgid "ppdc: Expected string after Copyright on line %d of %s."
msgstr "ppdc: Se esperaba una cadena tras Copyright en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:3353
#, c-format
msgid "ppdc: Expected string after Version on line %d of %s."
msgstr "ppdc: Se esperaba una cadena tras Version en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:685
#, c-format
msgid "ppdc: Expected two option names on line %d of %s."
msgstr "ppdc: Se esperaban dos nombres de opciones en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:329
#, c-format
msgid "ppdc: Expected value after %s on line %d of %s."
msgstr "ppdc: Se esperaba un valor tras %s en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:1042
#, c-format
msgid "ppdc: Expected version after Font on line %d of %s."
msgstr "ppdc: Se esperaba una versión tras Font en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:184
#, c-format
msgid "ppdc: Invalid #include/#po filename \"%s\"."
msgstr "ppdc: Nombre de archivo #include/#po incorrecto \"%s\"."
+#: ppdc/ppdc-source.cxx:929
#, c-format
msgid "ppdc: Invalid cost for filter on line %d of %s."
msgstr "ppdc: Coste incorrecto para el filtro en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:921
#, c-format
msgid "ppdc: Invalid empty MIME type for filter on line %d of %s."
msgstr "ppdc: Tipo MIME vacío incorrecto para el filtro en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:937
#, c-format
msgid "ppdc: Invalid empty program name for filter on line %d of %s."
msgstr ""
"ppdc: Nombre de programa vacío incorrecto para el filtro en la línea %d de "
"%s."
+#: ppdc/ppdc-source.cxx:1585
#, c-format
msgid "ppdc: Invalid option section \"%s\" on line %d of %s."
msgstr "ppdc: Sección de opción incorrecta \"%s\" en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:1557
#, c-format
msgid "ppdc: Invalid option type \"%s\" on line %d of %s."
msgstr "ppdc: Tipo de opción incorrecta \"%s\" en la línea %d de %s."
+#: ppdc/ppdc.cxx:246 ppdc/ppdpo.cxx:123
#, c-format
msgid "ppdc: Loading driver information file \"%s\"."
msgstr "ppdc: Cargando archivo de información de controlador \"%s\"."
+#: ppdc/ppdc.cxx:182
#, c-format
msgid "ppdc: Loading messages for locale \"%s\"."
msgstr "ppdc: Cargando mensajes del idioma \"%s\"."
+#: ppdc/ppdc.cxx:121
#, c-format
msgid "ppdc: Loading messages from \"%s\"."
msgstr "ppdc: Cargando mensajes desde \"%s\"."
+#: ppdc/ppdc-source.cxx:2368 ppdc/ppdc-source.cxx:2600
#, c-format
msgid "ppdc: Missing #endif at end of \"%s\"."
msgstr "ppdc: Falta un #endif al final de \"%s\"."
+#: 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: Falta un #if en la línea %d de %s."
+#: ppdc/ppdc-catalog.cxx:466
#, c-format
msgid ""
"ppdc: Need a msgid line before any translation strings on line %d of %s."
@@ -5800,94 +7647,118 @@ msgstr ""
"ppdc: Se necesita una línea msgid antes de cualquier cadena de traducción en "
"línea %d de %s."
+#: ppdc/ppdc-driver.cxx:712
#, c-format
msgid "ppdc: No message catalog provided for locale %s."
msgstr "ppdc: No se ha proporcionado catálogo de mensajes para el idioma %s."
+#: 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: Opción %s definida en dos diferentes grupos en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:1601
#, c-format
msgid "ppdc: Option %s redefined with a different type on line %d of %s."
msgstr "ppdc: Opción %s redefinida con un tipo diferente en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:662
#, c-format
msgid "ppdc: Option constraint must *name on line %d of %s."
msgstr "ppdc: Opción de restricción debe *name en línea %d de %s."
+#: ppdc/ppdc-source.cxx:2451
#, c-format
msgid "ppdc: Too many nested #if's on line %d of %s."
msgstr "ppdc: Demasiados #if anidados en la línea %d de %s."
+#: ppdc/ppdc.cxx:369
#, c-format
msgid "ppdc: Unable to create PPD file \"%s\" - %s."
msgstr "ppdc: No se ha podido crear el archivo PPD \"%s\" - %s."
+#: ppdc/ppdc.cxx:261
#, c-format
msgid "ppdc: Unable to create output directory %s: %s"
msgstr "ppdc: No se ha podido crear el directorio de salida %s: %s"
+#: ppdc/ppdc.cxx:282
#, c-format
msgid "ppdc: Unable to create output pipes: %s"
msgstr "ppdc: No se han podido crear canales (pipes) de salida: %s"
+#: ppdc/ppdc.cxx:298 ppdc/ppdc.cxx:304
#, c-format
msgid "ppdc: Unable to execute cupstestppd: %s"
msgstr "ppdc: No se ha podido ejecutar cupstestppd: %s"
+#: ppdc/ppdc-source.cxx:1687
#, c-format
msgid "ppdc: Unable to find #po file %s on line %d of %s."
msgstr ""
"ppdc: No se ha podido encontrar el archivo #po %s en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:2607
#, c-format
msgid "ppdc: Unable to find include file \"%s\" on line %d of %s."
msgstr ""
"ppdc: No se ha podido encontrar el archivo include \"%s\" en la línea %d de "
"%s."
+#: ppdc/ppdc.cxx:193
#, c-format
msgid "ppdc: Unable to find localization for \"%s\" - %s"
msgstr "ppdc: No se ha podido encontrar localización para \"%s\" - %s"
+#: ppdc/ppdc.cxx:130
#, c-format
msgid "ppdc: Unable to load localization file \"%s\" - %s"
msgstr "ppdc: No se ha podido cargar el archivo de localización \"%s\" - %s"
+#: ppdc/ppdc-file.cxx:50
#, c-format
msgid "ppdc: Unable to open %s: %s"
msgstr "ppdc: No se pudo abrir %s: %s"
+#: ppdc/ppdc-source.cxx:2011
#, c-format
msgid "ppdc: Undefined variable (%s) on line %d of %s."
msgstr "ppdc: Variable no definida (%s) en la línea %d de %s."
+#: ppdc/ppdc-catalog.cxx:483
#, c-format
msgid "ppdc: Unexpected text on line %d of %s."
msgstr "ppdc: Texto inesperado en la línea %d del %s."
+#: ppdc/ppdc-source.cxx:2880
#, c-format
msgid "ppdc: Unknown driver type %s on line %d of %s."
msgstr "ppdc: Tipo de controlador desconocido %s en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:863
#, c-format
msgid "ppdc: Unknown duplex type \"%s\" on line %d of %s."
msgstr "ppdc: Tipo dúplex desconocido \"%s\" en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:3110
#, c-format
msgid "ppdc: Unknown media size \"%s\" on line %d of %s."
msgstr "ppdc: Tamaño de papel desconocido \"%s\" en la línea %d de %s."
+#: ppdc/ppdc-catalog.cxx:511
#, c-format
msgid "ppdc: Unknown message catalog format for \"%s\"."
msgstr "ppdc: Formato del catálogo de mensajes para \"%s\" desconocido."
+#: ppdc/ppdc-source.cxx:3364
#, c-format
msgid "ppdc: Unknown token \"%s\" seen on line %d of %s."
msgstr "ppdc: Elemento desconocido \"%s\" visto en la línea %d de %s."
+#: ppdc/ppdc-source.cxx:971
#, c-format
msgid ""
"ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s."
@@ -5895,133 +7766,128 @@ msgstr ""
"ppdc: Caracteres finales desconocidos en el número real \"%s\" en la línea "
"%d de %s."
+#: ppdc/ppdc-source.cxx:2121
#, c-format
msgid "ppdc: Unterminated string starting with %c on line %d of %s."
msgstr "ppdc: Cadena que comienza por %c sin terminar en la línea %d de %s."
+#: ppdc/ppdc.cxx:360
#, c-format
msgid "ppdc: Warning - overlapping filename \"%s\"."
msgstr "ppdc: Advertencia - nombre de archivo superpuesto \"%s\"."
+#: ppdc/ppdc.cxx:375
#, c-format
msgid "ppdc: Writing %s."
msgstr "ppdc: Escribiendo %s."
+#: ppdc/ppdc.cxx:143
#, c-format
msgid "ppdc: Writing PPD files to directory \"%s\"."
msgstr "ppdc: Escribiendo archivos PPD al directorio \"%s\"."
+#: ppdc/ppdmerge.cxx:130
#, c-format
msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s."
msgstr "ppdmerge: LanguageVersion \"%s\" incorrecto en %s."
+#: ppdc/ppdmerge.cxx:170
#, c-format
msgid "ppdmerge: Ignoring PPD file %s."
msgstr "ppdmerge: Ignorando archivo PPD %s."
+#: ppdc/ppdmerge.cxx:154
#, c-format
msgid "ppdmerge: Unable to backup %s to %s - %s"
-msgstr "ppdmerge: No se ha podido hacer copia de seguridad de %s a %s- %s"
+msgstr "ppdmerge: No se ha podido hacer copia de respaldo de %s a %s - %s"
+#: systemv/lpstat.c:1777
#, c-format
msgid "printer %s disabled since %s -"
msgstr "la impresora %s está deshabilitada desde %s -"
+#: systemv/lpstat.c:1766
#, c-format
msgid "printer %s is idle. enabled since %s"
msgstr "la impresora %s está inactiva. activada desde %s"
+#: systemv/lpstat.c:1771
#, c-format
msgid "printer %s now printing %s-%d. enabled since %s"
msgstr "la impresora %s está imprimiendo %s-%d. activada desde %s"
+#: systemv/lpstat.c:1900
#, c-format
msgid "printer %s/%s disabled since %s -"
msgstr "la impresora %s/%s está desactivada desde %s -"
+#: systemv/lpstat.c:1886
#, c-format
msgid "printer %s/%s is idle. enabled since %s"
msgstr "la impresora %s/%s está inactiva. activada desde %s"
+#: systemv/lpstat.c:1893
#, c-format
msgid "printer %s/%s now printing %s-%d. enabled since %s"
msgstr "la impresora %s/%s está imprimiendo %s-%d. activada desde %s"
+#: cups/notify.c:93 cups/notify.c:134
msgid "processing"
msgstr "en proceso"
+#: systemv/lp.c:662
#, c-format
msgid "request id is %s-%d (%d file(s))"
msgstr "la id solicitada es %s-%d (%d archivo(s))"
+#: cups/snmp.c:972
msgid "request-id uses indefinite length"
msgstr "request-id usa una longitud indefinida"
+#: systemv/lpstat.c:2032
msgid "scheduler is not running"
msgstr "el planificador de tareas no se está ejecutando"
+#: systemv/lpstat.c:2028
msgid "scheduler is running"
msgstr "el planificador de tareas se está ejecutando"
+#: cups/adminutil.c:2148
#, c-format
msgid "stat of %s failed: %s"
msgstr "estado de %s ha fallado: %s"
+#: berkeley/lpc.c:203
msgid "status\t\tShow status of daemon and queue."
msgstr "status\t\tMuestra el estado del demonio (daemon) y la cola."
+#: cups/notify.c:96 cups/notify.c:137
msgid "stopped"
msgstr "parada"
+#: systemv/lpstat.c:1052
#, c-format
msgid "system default destination: %s"
msgstr "destino predeterminado del sistema: %s"
+#: systemv/lpstat.c:1049
#, c-format
msgid "system default destination: %s/%s"
msgstr "destino predeterminado del sistema: %s/%s"
+#: cups/notify.c:108 cups/notify.c:140
msgid "unknown"
msgstr "desconocido"
+#: cups/notify.c:117
msgid "untitled"
msgstr "sin título"
+#: cups/snmp.c:997
msgid "variable-bindings uses indefinite length"
msgstr "variable-bindings usa una longitud indefinida"
-#~ msgid "%s: Error - expected destination after \"-b\" option."
-#~ msgstr "%s: Error - se esperaba un destino tras la opción \"-b\"."
-
-#~ msgid "Print file accepted - job ID %d."
-#~ msgstr "Archivo de impresión aceptado: ID de trabajo %d."
-
-#~ msgid "Print file accepted - job ID unknown."
-#~ msgstr "Archivo de impresión aceptado: ID de trabajo desconocido."
-
-#~ msgid "Print file was not accepted."
-#~ msgstr "No se ha aceptado el archivo de impresión."
-
-#~ 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 "Unable to create compressed print file"
-#~ msgstr "No se ha podido crear el archivo de impresión comprimido"
-
-#~ msgid "Unable to generate compressed print file"
-#~ msgstr "No se ha podido crear el archivo de impresión comprimido"
-
-#~ msgid "Unable to open compressed print file"
-#~ msgstr "No se ha podido abrir el archivo de impresión comprimido"
-
-#~ msgid "ipptool: Bad version %s for \"-V\"."
-#~ msgstr "ipptool: Versión %s para \"-V\" incorrecta."
-
-#~ msgid "ipptool: Missing timeout for \"-T\"."
-#~ msgstr "ipptool: Falta un tiempo de espera para \"-T\"."
-
-#~ msgid "ipptool: Missing version for \"-V\"."
-#~ msgstr "ipptool: Falta la versión para \"-V\"."
+#
+# End of "$Id$".
+#
diff --git a/locale/cups_fr.po b/locale/cups_fr.po
index 7735eeac0..98433845b 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-08-29 22:25-0400\n"
"PO-Revision-Date: 2012-12-12 11:12+0100\n"
"Last-Translator: denis meramdjougoma <dcmeram@libertysurf.fr>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -826,6 +826,9 @@ msgstr ""
msgid " --false Always false."
msgstr ""
+msgid " --help Show help."
+msgstr ""
+
msgid " --help Show this help."
msgstr ""
@@ -835,6 +838,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 ""
@@ -865,6 +871,11 @@ msgstr ""
msgid " --remote True if service is remote."
msgstr ""
+msgid ""
+" --stop-after-include-error\n"
+" Stop tests after a failed INCLUDE."
+msgstr ""
+
msgid " --true Always true."
msgstr ""
@@ -880,6 +891,9 @@ msgstr ""
msgid " --version Show program version."
msgstr ""
+msgid " --version Show version."
+msgstr ""
+
msgid " -4 Connect using IPv4."
msgstr ""
@@ -920,6 +934,11 @@ msgstr ""
msgid " -L Send requests using content-length."
msgstr ""
+msgid ""
+" -P filename.plist Produce XML plist to a file and test report to "
+"standard output."
+msgstr ""
+
msgid " -P filename.ppd Set PPD file."
msgstr ""
@@ -958,6 +977,9 @@ msgstr ""
msgid " -a Export all printers."
msgstr ""
+msgid " -c Produce CSV output."
+msgstr ""
+
msgid " -c catalog.po Load the specified message catalog."
msgstr ""
@@ -1015,7 +1037,10 @@ msgstr ""
msgid " -l List attributes."
msgstr ""
-msgid " -l Run cupsd from launchd(8)."
+msgid " -l Produce plain text output."
+msgstr ""
+
+msgid " -l Run cupsd on demand."
msgstr ""
msgid " -l lang[,lang,...] Specify the output language(s) (locale)."
@@ -1346,11 +1371,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
@@ -1578,6 +1627,10 @@ 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 ""
@@ -1614,6 +1667,10 @@ 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 ""
@@ -2199,9 +2256,6 @@ msgstr ""
msgid "70"
msgstr "70"
-msgid "720dpi"
-msgstr "720 ppp"
-
msgid "75"
msgstr "75"
@@ -2486,6 +2540,9 @@ msgstr ""
msgid "Bad UIConstraints"
msgstr ""
+msgid "Bad arguments to function"
+msgstr ""
+
#, c-format
msgid "Bad copies value %d."
msgstr ""
@@ -2512,6 +2569,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 +2616,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 +2638,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 +2675,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 +2837,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 +2847,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 +3413,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 +3483,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 ""
@@ -3459,12 +3540,6 @@ msgstr ""
msgid "Never"
msgstr "Jamais"
-msgid "New Stylus Color Series"
-msgstr "Nouvelles série Stylus Color"
-
-msgid "New Stylus Photo Series"
-msgstr "Nouvelles série Stylus Photo"
-
msgid "No"
msgstr "Non"
@@ -3538,6 +3613,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 +3716,13 @@ msgstr ""
msgid "Output Mode"
msgstr "Mode de sortie"
-#, 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"
+msgid "Output bin is full."
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"
+msgid "Output bin is missing."
msgstr ""
msgid "PASS"
@@ -3681,6 +3755,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 +3893,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 +3905,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 +3965,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"
@@ -3932,12 +4013,6 @@ msgstr ""
msgid "Statement"
msgstr "Déclaration"
-msgid "Stylus Color Series"
-msgstr "Série Stylus Color"
-
-msgid "Stylus Photo Series"
-msgstr "Série Stylus Photo"
-
#, c-format
msgid "Subscription #%d does not exist."
msgstr ""
@@ -4040,34 +4115,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 +4145,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 +4223,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 +4261,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 +4385,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 +4439,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 +4524,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 +4614,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 +4712,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 +4749,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 +4807,6 @@ msgstr ""
"Vous devez accéder à cette page par l’URL <A HREF=\"https://%s:%d%s"
"\">https://%s:%d%s</A>."
-msgid ""
-"Your password must be at least 6 characters long, cannot contain your "
-"username, and must contain at least one letter and number."
-msgstr ""
-
msgid "ZPL Label Printer"
msgstr "Imprimante pour étiquettes ZPL"
@@ -4798,6 +4853,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 +4873,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 +4993,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 +5205,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 +5683,30 @@ msgstr "sans titre"
msgid "variable-bindings uses indefinite length"
msgstr ""
+
+#~ msgid "720dpi"
+#~ msgstr "720 ppp"
+
+#~ 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 "New Stylus Color Series"
+#~ msgstr "Nouvelles série Stylus Color"
+
+#~ msgid "New Stylus Photo Series"
+#~ msgstr "Nouvelles série Stylus Photo"
+
+#~ msgid "Purge Jobs"
+#~ msgstr "Purger les tâches"
+
+#~ msgid "Stylus Color Series"
+#~ msgstr "Série Stylus Color"
+
+#~ msgid "Stylus Photo Series"
+#~ msgstr "Série Stylus Photo"
diff --git a/locale/cups_it.po b/locale/cups_it.po
index 7b015fb67..ad8133239 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-08-29 22:25-0400\n"
"PO-Revision-Date: 2013-07-14 12:00+0200\n"
"Last-Translator: Giovanni Scafora <giovanni@archlinux.org>\n"
"Language-Team: Arch Linux Italian Team <giovanni@archlinux.org>\n"
@@ -974,6 +974,9 @@ msgstr ""
msgid " --false Always false."
msgstr " --false Sempre falso."
+msgid " --help Show help."
+msgstr ""
+
msgid " --help Show this help."
msgstr " --help Mostra questo aiuto."
@@ -985,6 +988,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."
@@ -1023,6 +1029,11 @@ msgstr ""
msgid " --remote True if service is remote."
msgstr " --remote Vero se il servizio è remoto."
+msgid ""
+" --stop-after-include-error\n"
+" Stop tests after a failed INCLUDE."
+msgstr ""
+
msgid " --true Always true."
msgstr " --true Sempre vero."
@@ -1041,6 +1052,9 @@ msgstr ""
msgid " --version Show program version."
msgstr " --version Mostra la versione del programma."
+msgid " --version Show version."
+msgstr ""
+
msgid " -4 Connect using IPv4."
msgstr " -4 Connetti utilizzando IPv4."
@@ -1086,6 +1100,11 @@ msgstr " -I {file,filtri,nessuno,profili}"
msgid " -L Send requests using content-length."
msgstr " -L Invia richieste utilizzando content-length."
+msgid ""
+" -P filename.plist Produce XML plist to a file and test report to "
+"standard output."
+msgstr ""
+
msgid " -P filename.ppd Set PPD file."
msgstr " -P filename.ppd Imposta il file PPD."
@@ -1131,6 +1150,9 @@ msgstr " -a Mostra tutti i servizi."
msgid " -a Export all printers."
msgstr " -a Esporta tutte le stampanti."
+msgid " -c Produce CSV output."
+msgstr ""
+
msgid " -c catalog.po Load the specified message catalog."
msgstr ""
" -c catalog.po Carica il catalogo del messaggio specificato."
@@ -1199,8 +1221,11 @@ 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 Produce plain text output."
+msgstr ""
+
+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."
@@ -1598,14 +1623,38 @@ msgstr ""
"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"
@@ -1840,6 +1889,10 @@ 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\"."
@@ -1877,6 +1930,10 @@ 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"
@@ -2465,9 +2522,6 @@ msgstr "7 x 9"
msgid "70"
msgstr "70"
-msgid "720dpi"
-msgstr "720dpi"
-
msgid "75"
msgstr "75"
@@ -2754,6 +2808,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 +2837,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 +2884,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 +2906,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 +2943,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 +3115,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 +3125,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 +3696,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 +3766,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."
@@ -3746,12 +3827,6 @@ msgstr "Le classi nidificate non sono consentite."
msgid "Never"
msgstr "Mai"
-msgid "New Stylus Color Series"
-msgstr "Nuova Stylus Color Series"
-
-msgid "New Stylus Photo Series"
-msgstr "Nuova Stylus Photo Series"
-
msgid "No"
msgstr "No"
@@ -3827,6 +3902,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 +4007,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 +4046,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 +4184,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 +4196,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 +4256,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"
@@ -4226,12 +4304,6 @@ msgstr "Pagina iniziale %d."
msgid "Statement"
msgstr "Rapporto"
-msgid "Stylus Color Series"
-msgstr "Stylus Color Series"
-
-msgid "Stylus Photo Series"
-msgstr "Stylus Photo Series"
-
#, c-format
msgid "Subscription #%d does not exist."
msgstr "La sottoscrizione #%d non esiste."
@@ -4338,27 +4410,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 +4421,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 +4442,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 +4524,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 +4562,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 +4690,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 +4758,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 +4845,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 +4935,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 +5044,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 +5093,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 +5153,6 @@ msgstr ""
"Bisogna accedere a questa pagina, usando l'URL <A HREF=\"https://%s:%d%s"
"\">https://%s:%d%s</A>."
-msgid ""
-"Your password must be at least 6 characters long, cannot contain your "
-"username, and must contain at least one letter and number."
-msgstr ""
-"La password deve contenere almeno 6 caratteri, non può contenere l'username "
-"e deve contenere almeno una lettera ed un numero."
-
msgid "ZPL Label Printer"
msgstr "ZPL Label Printer"
@@ -5152,6 +5199,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 +5219,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 +5339,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 +5561,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 +6066,163 @@ 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 "720dpi"
+#~ msgstr "720dpi"
+
+#~ 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 "New Stylus Color Series"
+#~ msgstr "Nuova Stylus Color Series"
+
+#~ msgid "New Stylus Photo Series"
+#~ msgstr "Nuova Stylus Photo Series"
+
+#~ 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 "Stylus Color Series"
+#~ msgstr "Stylus Color Series"
+
+#~ msgid "Stylus Photo Series"
+#~ msgstr "Stylus Photo Series"
+
+#~ 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..d4b9f1b48 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-08-29 22:25-0400\n"
"PO-Revision-Date: 2013-08-19 11:51+0900\n"
"Last-Translator: OPFC TRANSCUPS <opfc-transcups@sourceforge.jp>\n"
"Language-Team: OPFC TRANSCUPS <opfc-transcups@sourceforge.jp>\n"
@@ -972,6 +972,9 @@ msgstr ""
msgid " --false Always false."
msgstr " --false 常ã«å¤±æ•—。"
+msgid " --help Show help."
+msgstr ""
+
msgid " --help Show this help."
msgstr " --help ã“ã®ãƒ˜ãƒ«ãƒ—を表示ã™ã‚‹ã€‚"
@@ -981,6 +984,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 サービスãŒãƒ­ãƒ¼ã‚«ãƒ«ãªã‚‰çœŸã€‚"
@@ -1013,6 +1019,11 @@ msgstr ""
msgid " --remote True if service is remote."
msgstr " --remote サービスãŒãƒªãƒ¢ãƒ¼ãƒˆãªã‚‰çœŸã€‚"
+msgid ""
+" --stop-after-include-error\n"
+" Stop tests after a failed INCLUDE."
+msgstr ""
+
msgid " --true Always true."
msgstr " --true 常ã«çœŸã€‚"
@@ -1029,6 +1040,9 @@ msgstr " --uri <æ­£è¦è¡¨ç¾> URI ãŒæ­£è¦è¡¨ç¾ã¨ãƒžãƒƒãƒã™ã‚‹ã‹ã€
msgid " --version Show program version."
msgstr " --version プログラムã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’表示。"
+msgid " --version Show version."
+msgstr ""
+
msgid " -4 Connect using IPv4."
msgstr " -4 IPv4 ã§æŽ¥ç¶šã™ã‚‹ã€‚"
@@ -1075,6 +1089,11 @@ msgstr " -I {filename,filters,none,profiles}"
msgid " -L Send requests using content-length."
msgstr " -L content-length を用ã„ã¦ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’é€ã‚‹ã€‚"
+msgid ""
+" -P filename.plist Produce XML plist to a file and test report to "
+"standard output."
+msgstr ""
+
msgid " -P filename.ppd Set PPD file."
msgstr " -P filename.ppd PPD ファイルを指定ã™ã‚‹ã€‚"
@@ -1116,6 +1135,9 @@ msgstr " -a ã™ã¹ã¦ã®ã‚µãƒ¼ãƒ“スをブラウズã™ã‚‹ã
msgid " -a Export all printers."
msgstr " -a ã™ã¹ã¦ã®ãƒ—リンターをエクスãƒãƒ¼ãƒˆã™ã‚‹ã€‚"
+msgid " -c Produce CSV output."
+msgstr ""
+
msgid " -c catalog.po Load the specified message catalog."
msgstr " -c catalog.po 指定ã—ãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚«ã‚¿ãƒ­ã‚°ã‚’ロードã™ã‚‹ã€‚"
@@ -1180,8 +1202,11 @@ msgstr ""
msgid " -l List attributes."
msgstr " -l 属性ã®ä¸€è¦§ã‚’表示ã™ã‚‹ã€‚"
-msgid " -l Run cupsd from launchd(8)."
-msgstr " -l launchd(8) ã‹ã‚‰ cupsd を実行ã™ã‚‹ã€‚"
+msgid " -l Produce plain text output."
+msgstr ""
+
+msgid " -l Run cupsd on demand."
+msgstr ""
msgid " -l lang[,lang,...] Specify the output language(s) (locale)."
msgstr " -l lang[,lang,...] 出力言語を指定ã™ã‚‹ã€‚(複数å¯èƒ½)"
@@ -1558,14 +1583,38 @@ msgid ""
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 ã‹ã‚‰ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’å—ã‘付ã‘ã¦ã„ã¾ã™"
@@ -1795,6 +1844,10 @@ 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\" オプションã«ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。"
@@ -1831,6 +1884,10 @@ 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"
@@ -2419,9 +2476,6 @@ msgstr "7 x 9 インãƒ"
msgid "70"
msgstr "70"
-msgid "720dpi"
-msgstr "720dpi"
-
msgid "75"
msgstr "75"
@@ -2708,6 +2762,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 +2791,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 +2838,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 +2860,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 +2897,9 @@ msgstr "CMYK"
msgid "CPCL Label Printer"
msgstr "CPCL ラベルプリンター"
+msgid "Cancel Jobs"
+msgstr ""
+
msgid "Cancel RSS Subscription"
msgstr "RSS 購読をキャンセル"
@@ -2993,6 +3071,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 +3081,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 +3654,9 @@ msgstr "1 è¡ŒãŒæœ€å¤§å€¤ (255 文字) を超ãˆã¦ã„ã¾ã™"
msgid "List Available Printers"
msgstr "使用å¯èƒ½ãªãƒ—リンターをリスト化"
+msgid "Load paper."
+msgstr ""
+
msgid "Long-Edge (Portrait)"
msgstr "長辺給紙 (縦å‘ã)"
@@ -3649,6 +3724,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 è¡Œã«å€¤ãŒã‚ã‚Šã¾ã›ã‚“。"
@@ -3704,12 +3785,6 @@ msgstr "入れå­ã«ãªã£ãŸã‚¯ãƒ©ã‚¹ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“。"
msgid "Never"
msgstr "Never"
-msgid "New Stylus Color Series"
-msgstr "New Stylus Color シリーズ"
-
-msgid "New Stylus Photo Series"
-msgstr "New Stylus Photo シリーズ"
-
msgid "No"
msgstr "ã„ã„ãˆ"
@@ -3783,6 +3858,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 +3963,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 +4002,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 +4140,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 +4152,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 +4212,9 @@ msgstr "開始ã•ã‚ŒãŸã‚µãƒ¼ãƒãƒ¼"
msgid "Server Stopped"
msgstr "åœæ­¢ã•ã‚ŒãŸã‚µãƒ¼ãƒãƒ¼"
+msgid "Server credentials not set."
+msgstr ""
+
msgid "Service Unavailable"
msgstr "利用ã§ããªã„サービス"
@@ -4180,12 +4260,6 @@ msgstr "ページ %d を開始ã—ã¦ã„ã¾ã™ã€‚"
msgid "Statement"
msgstr "記述"
-msgid "Stylus Color Series"
-msgstr "Stylus Color シリーズ"
-
-msgid "Stylus Photo Series"
-msgstr "Stylus Photo シリーズ"
-
#, c-format
msgid "Subscription #%d does not exist."
msgstr "ã‚µãƒ–ã‚¹ã‚¯ãƒªãƒ—ã‚·ãƒ§ãƒ³ç•ªå· %d ã¯å­˜åœ¨ã—ã¾ã›ã‚“。"
@@ -4288,27 +4362,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 +4371,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 +4392,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 +4472,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 +4510,9 @@ msgstr "トレイ 4"
msgid "URI Too Long"
msgstr "URI ãŒé•·ã™ãŽã¾ã™"
+msgid "URI too large"
+msgstr ""
+
msgid "US Ledger"
msgstr "US レジャー"
@@ -4583,6 +4636,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 +4691,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 +4779,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 +4869,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 +4980,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 +5031,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 +5092,6 @@ msgstr ""
"ã“ã®ãƒšãƒ¼ã‚¸ã«ã¯ URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A> を使ã£ã¦ã‚¢"
"クセスã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
-msgid ""
-"Your password must be at least 6 characters long, cannot contain your "
-"username, and must contain at least one letter and number."
-msgstr ""
-"パスワードã¯å°‘ãªãã¨ã‚‚ 6 文字以上ã§ã€ã‚ãªãŸã®ãƒ¦ãƒ¼ã‚¶ãƒ¼åã‚’å«ã‚“ã§ã¯ãªã‚‰ãšã€å°‘ãª"
-"ãã¨ã‚‚ 1 ã¤ã®è‹±å­—ãŠã‚ˆã³æ•°å€¤ã‚’å«ã‚“ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。"
-
msgid "ZPL Label Printer"
msgstr "ZPL ラベルプリンター"
@@ -5090,6 +5139,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 +5159,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 +5279,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 +5510,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 +6043,55 @@ 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 "720dpi"
+#~ msgstr "720dpi"
+
+#~ msgid "Bad printer URI."
+#~ msgstr "ä¸æ­£ãªãƒ—リンター URI ã§ã™ã€‚"
+
+#~ msgid "Enter old password:"
+#~ msgstr "å¤ã„パスワードを入力:"
+
+#~ msgid "Enter password again:"
+#~ msgstr "パスワードをå†åº¦å…¥åŠ›:"
+
+#~ msgid "Enter password:"
+#~ msgstr "パスワードを入力:"
+
+#~ msgid "New Stylus Color Series"
+#~ msgstr "New Stylus Color シリーズ"
+
+#~ msgid "New Stylus Photo Series"
+#~ msgstr "New Stylus Photo シリーズ"
+
+#~ 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 +6101,59 @@ 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 "Stylus Color Series"
+#~ msgstr "Stylus Color シリーズ"
+
+#~ msgid "Stylus Photo Series"
+#~ msgstr "Stylus Photo シリーズ"
+
+#~ 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 +6163,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 +6204,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 <rafael.f.f1@gmail.com>\n"
-"Language-Team: Brazilian Portuguese <traducao-cups-pt-br@googlegroups.com>\n"
-"Language: pt_BR\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.6.5\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-msgid "\t\t(all)"
-msgstr "\t\t(todos)"
-
-msgid "\t\t(none)"
-msgstr "\t\t(nenhum)"
-
-#, c-format
-msgid "\t%d entries"
-msgstr "\t%d registros"
-
-#, c-format
-msgid "\t%s"
-msgstr "\t%s"
-
-msgid "\tAfter fault: continue"
-msgstr "\tApós a falha: continuar"
-
-#, c-format
-msgid "\tAlerts: %s"
-msgstr "\tAlertas: %s"
-
-msgid "\tBanner required"
-msgstr "\tBanner é necessário"
-
-msgid "\tCharset sets:"
-msgstr "\tDefinições de conjunto de caracteres:"
-
-msgid "\tConnection: direct"
-msgstr "\tConexão: direta"
-
-msgid "\tConnection: remote"
-msgstr "\tConexão: remota"
-
-msgid "\tContent types: any"
-msgstr "\tTipos de conteúdos: qualquer"
-
-msgid "\tDefault page size:"
-msgstr "\tTamanho de página padrão:"
-
-msgid "\tDefault pitch:"
-msgstr "\tPitch padrão:"
-
-msgid "\tDefault port settings:"
-msgstr "\tConfiguração de porta padrão:"
-
-#, c-format
-msgid "\tDescription: %s"
-msgstr "\tDescrição: %s"
-
-msgid "\tForm mounted:"
-msgstr "\tFormulário montado:"
-
-msgid "\tForms allowed:"
-msgstr "\tFormulários permitidos:"
-
-#, c-format
-msgid "\tInterface: %s.ppd"
-msgstr "\tInterface: %s.ppd"
-
-#, c-format
-msgid "\tInterface: %s/interfaces/%s"
-msgstr "\tInterface: %s/interfaces/%s"
-
-#, c-format
-msgid "\tInterface: %s/ppd/%s.ppd"
-msgstr "\tInterface: %s/ppd/%s.ppd"
-
-#, c-format
-msgid "\tLocation: %s"
-msgstr "\tLocalização: %s"
-
-msgid "\tOn fault: no alert"
-msgstr "\tCaso de falha: nenhum alerta"
-
-msgid "\tPrinter types: unknown"
-msgstr "\tTipos de impressoras: desconhecido"
-
-#, c-format
-msgid "\tStatus: %s"
-msgstr "\tEstado: %s"
-
-msgid "\tUsers allowed:"
-msgstr "\tUsuários permitidos:"
-
-msgid "\tUsers denied:"
-msgstr "\tUsuários proibidos:"
-
-msgid "\tdaemon present"
-msgstr "\tdaemon presente"
-
-msgid "\tno entries"
-msgstr "\tnenhum registro"
-
-#, c-format
-msgid "\tprinter is on device '%s' speed -1"
-msgstr "\timpressora está na velocidade -1 do dispositivo \"%s\""
-
-msgid "\tprinting is disabled"
-msgstr "\timpressão está desabilitada"
-
-msgid "\tprinting is enabled"
-msgstr "\timpressão está habilitada"
-
-#, c-format
-msgid "\tqueued for %s"
-msgstr "\tna fila de %s"
-
-msgid "\tqueuing is disabled"
-msgstr "\tenfileiramento está desabilitado"
-
-msgid "\tqueuing is enabled"
-msgstr "\tenfileiramento está habilitado"
-
-msgid "\treason unknown"
-msgstr "\tmotivo desconhecido"
-
-msgid ""
-"\n"
-" DETAILED CONFORMANCE TEST RESULTS"
-msgstr ""
-"\n"
-" RESULTADOS DETALHADOS DE TESTE DE CONFORMIDADE"
-
-msgid " Ignore specific warnings."
-msgstr " Ignora aviso específicos."
-
-msgid " Issue warnings instead of errors."
-msgstr " Emite avisos ao invés de erros."
-
-msgid " REF: Page 15, section 3.1."
-msgstr " REF: Página 15, seção 3.1."
-
-msgid " REF: Page 15, section 3.2."
-msgstr " REF: Página 15, seção 3.2."
-
-msgid " REF: Page 19, section 3.3."
-msgstr " REF: Página 19, seção 3.3."
-
-msgid " REF: Page 20, section 3.4."
-msgstr " REF: Página 20, seção 3.4."
-
-msgid " REF: Page 27, section 3.5."
-msgstr " REF: Página 27, seção 3.5."
-
-msgid " REF: Page 42, section 5.2."
-msgstr " REF: Página 42, seção 5.2."
-
-msgid " REF: Pages 16-17, section 3.2."
-msgstr " REF: Página 16-17, seção 3.2."
-
-msgid " REF: Pages 42-45, section 5.2."
-msgstr " REF: Página 42-45, seção 5.2."
-
-msgid " REF: Pages 45-46, section 5.2."
-msgstr " REF: Página 45-46, seção 5.2."
-
-msgid " REF: Pages 48-49, section 5.2."
-msgstr " REF: Página 48-49, seção 5.2."
-
-msgid " REF: Pages 52-54, section 5.2."
-msgstr " REF: Página 52-54, seção 5.2."
-
-#, c-format
-msgid " %-39.39s %.0f bytes"
-msgstr " %-39.39s %.0f bytes"
-
-#, c-format
-msgid " PASS Default%s"
-msgstr " PASSOU Default%s"
-
-msgid " PASS DefaultImageableArea"
-msgstr " PASSOU DefaultImageableArea"
-
-msgid " PASS DefaultPaperDimension"
-msgstr " PASSOU DefaultPaperDimension"
-
-msgid " PASS FileVersion"
-msgstr " PASSOU FileVersion"
-
-msgid " PASS FormatVersion"
-msgstr " PASSOU FormatVersion"
-
-msgid " PASS LanguageEncoding"
-msgstr " PASSOU LanguageEncoding"
-
-msgid " PASS LanguageVersion"
-msgstr " PASSOU LanguageVersion"
-
-msgid " PASS Manufacturer"
-msgstr " PASSOU Manufacturer"
-
-msgid " PASS ModelName"
-msgstr " PASSOU ModelName"
-
-msgid " PASS NickName"
-msgstr " PASSOU NickName"
-
-msgid " PASS PCFileName"
-msgstr " PASSOU PCFileName"
-
-msgid " PASS PSVersion"
-msgstr " PASSOU PSVersion"
-
-msgid " PASS PageRegion"
-msgstr " PASSOU PageRegion"
-
-msgid " PASS PageSize"
-msgstr " PASSOU PageSize"
-
-msgid " PASS Product"
-msgstr " PASSOU Product"
-
-msgid " PASS ShortNickName"
-msgstr " PASSOU ShortNickName"
-
-#, c-format
-msgid " WARN %s has no corresponding options."
-msgstr " AVISO %s não possui opções correspondentes."
-
-#, c-format
-msgid ""
-" WARN %s shares a common prefix with %s\n"
-" REF: Page 15, section 3.2."
-msgstr ""
-" AVISO %s compartilha um prefixo comum com %s\n"
-" REF: Página 15, seção 3.2."
-
-#, c-format
-msgid ""
-" WARN Duplex option keyword %s may not work as expected and should "
-"be named Duplex.\n"
-" REF: Page 122, section 5.17"
-msgstr ""
-" AVISO A opção Duplex de palavra-chave %s pode não funcionar como "
-"esperado e deve ser renomeada para Duplex.\n"
-" REF: Página 122, seção 5.17"
-
-msgid " WARN File contains a mix of CR, LF, and CR LF line endings."
-msgstr ""
-" AVISO Arquivo contém fim das linhas com uma mistura de CR, LF e CR "
-"LF."
-
-msgid ""
-" WARN LanguageEncoding required by PPD 4.3 spec.\n"
-" REF: Pages 56-57, section 5.3."
-msgstr ""
-" AVISO LanguageEncoding é necessário pela especificação PPD 4.3.\n"
-" REF: Páginas 56-57, seção 5.3."
-
-#, c-format
-msgid " WARN Line %d only contains whitespace."
-msgstr " AVISO Linha %d contém somente espaço em branco."
-
-msgid ""
-" WARN Manufacturer required by PPD 4.3 spec.\n"
-" REF: Pages 58-59, section 5.3."
-msgstr ""
-" AVISO Fabricante é necessário pela especificação PPD 4.3.\n"
-" REF: Páginas 58-59, seção 5.3."
-
-msgid ""
-" WARN Non-Windows PPD files should use lines ending with only LF, "
-"not CR LF."
-msgstr ""
-" AVISO Arquivos PPD de sistemas não-Windows deveriam usar fim de "
-"linhas somente com LR, e não CR LF."
-
-#, c-format
-msgid ""
-" WARN Obsolete PPD version %.1f.\n"
-" REF: Page 42, section 5.2."
-msgstr ""
-" AVISO PPD versão %.1f está obsoleto.\n"
-" REF: Página 42, seção 5.2."
-
-msgid ""
-" WARN PCFileName longer than 8.3 in violation of PPD spec.\n"
-" REF: Pages 61-62, section 5.3."
-msgstr ""
-" AVISO PCFileName maior que 8.3 em violação com especificação PPD.\n"
-" REF: Páginas 61-62, seção 5.3."
-
-msgid ""
-" WARN PCFileName should contain a unique filename.\n"
-" REF: Pages 61-62, section 5.3."
-msgstr ""
-" AVISO PCFileName deveria conter um nome de arquivo único.\n"
-" REF: Páginas 61-62, seção 5.3."
-
-msgid ""
-" WARN Protocols contains PJL but JCL attributes are not set.\n"
-" REF: Pages 78-79, section 5.7."
-msgstr ""
-" AVISO Protocolos contêm PJL, mas atributos de JCL não estão "
-"definidos.\n"
-" REF: Páginas 78-79, seção 5.7."
-
-msgid ""
-" WARN Protocols contains both PJL and BCP; expected TBCP.\n"
-" REF: Pages 78-79, section 5.7."
-msgstr ""
-" AVISO Protocolos contêm ambos PJL e BCP; esperava-se TBCP.\n"
-" REF: Páginas 78-79, seção 5.7."
-
-msgid ""
-" WARN ShortNickName required by PPD 4.3 spec.\n"
-" REF: Pages 64-65, section 5.3."
-msgstr ""
-" AVISO ShortNickName é necessário pela especificação PPD 4.3.\n"
-" REF: Páginas 64-65, seção 5.3."
-
-msgid " cupsaddsmb [options] -a"
-msgstr " cupsaddsmb [opções] -a"
-
-msgid " cupstestdsc [options] -"
-msgstr " cupstestdsc [opções] -"
-
-msgid " program | cupstestppd [options] -"
-msgstr " programa | cupstestppd [opções] -"
-
-#, c-format
-msgid ""
-" %s \"%s %s\" conflicts with \"%s %s\"\n"
-" (constraint=\"%s %s %s %s\")."
-msgstr ""
-" %s \"%s %s\" conflita com \"%s %s\"\n"
-" (restrição=\"%s %s %s %s\")."
-
-#, c-format
-msgid " %s %s %s does not exist."
-msgstr " %s %s %s não existe."
-
-#, c-format
-msgid " %s %s file \"%s\" has the wrong capitalization."
-msgstr " %s Arquivo de %s \"%s\" possui letra maiúscula incorreta."
-
-#, c-format
-msgid ""
-" %s Bad %s choice %s.\n"
-" REF: Page 122, section 5.17"
-msgstr ""
-" %s Escolha %s inválida para %s.\n"
-" REF: Página 122, seção 5.17"
-
-#, c-format
-msgid " %s Bad UTF-8 \"%s\" translation string for option %s, choice %s."
-msgstr ""
-" %s Má string de tradução de \"%s\" em UTF-8 para a opção %s, escolha "
-"%s."
-
-#, c-format
-msgid " %s Bad UTF-8 \"%s\" translation string for option %s."
-msgstr " %s Má string de tradução de \"%s\" em UTF-8 para a opção %s."
-
-#, c-format
-msgid " %s Bad cupsFilter value \"%s\"."
-msgstr " %s Valor \"%s\" inválido para cupsFilter."
-
-#, c-format
-msgid " %s Bad cupsFilter2 value \"%s\"."
-msgstr " %s Valor \"%s\" inválido para cupsFilter2."
-
-#, c-format
-msgid " %s Bad cupsICCProfile %s."
-msgstr " %s cupsICCProfile %s inválido."
-
-#, c-format
-msgid " %s Bad cupsPreFilter value \"%s\"."
-msgstr " %s Valor \"%s\" inválido para cupsPreFilter."
-
-#, c-format
-msgid " %s Bad cupsUIConstraints %s: \"%s\""
-msgstr " %s cupsUIConstraints %s inválido: \"%s\""
-
-#, c-format
-msgid " %s Bad language \"%s\"."
-msgstr " %s Idioma \"%s\" inválido."
-
-#, c-format
-msgid " %s Bad permissions on %s file \"%s\"."
-msgstr " %s Permissões inválidas no arquivo %s \"%s\"."
-
-#, c-format
-msgid " %s Bad spelling of %s - should be %s."
-msgstr " %s Pronúncia incorreta de %s - deveria ser %s."
-
-#, c-format
-msgid " %s Cannot provide both APScanAppPath and APScanAppBundleID."
-msgstr ""
-" %s Não é possível fornecer ambos APScanAppPath e APScanAppBundleID."
-
-#, c-format
-msgid " %s Default choices conflicting."
-msgstr " %s Escolhas padrão conflitando."
-
-#, c-format
-msgid " %s Empty cupsUIConstraints %s"
-msgstr " %s cupsUIConstraints %s vazia"
-
-#, c-format
-msgid " %s Missing \"%s\" translation string for option %s, choice %s."
-msgstr ""
-" %s Faltando string de tradução de \"%s\" para a opção %s, escolha %s."
-
-#, c-format
-msgid " %s Missing \"%s\" translation string for option %s."
-msgstr " %s Faltando string de tradução de \"%s\" para a opção %s."
-
-#, c-format
-msgid " %s Missing %s file \"%s\"."
-msgstr " %s Faltando %s arquivo \"%s\"."
-
-#, c-format
-msgid ""
-" %s Missing REQUIRED PageRegion option.\n"
-" REF: Page 100, section 5.14."
-msgstr ""
-" %s Faltando opção NECESSÃRIA PageRegion.\n"
-" REF: Página 100, seção 5.14."
-
-#, c-format
-msgid ""
-" %s Missing REQUIRED PageSize option.\n"
-" REF: Page 99, section 5.14."
-msgstr ""
-" %s Faltando opção NECESSÃRIA PageSize.\n"
-" REF: Página 99, seção 5.14."
-
-#, c-format
-msgid " %s Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"."
-msgstr ""
-" %s Faltando escolha de *%s %s em UIConstraints \"*%s %s *%s %s\"."
-
-#, c-format
-msgid " %s Missing choice *%s %s in cupsUIConstraints %s: \"%s\""
-msgstr " %s Faltando escolha *%s %s em cupsUIConstraints %s: \"%s\""
-
-#, c-format
-msgid " %s Missing cupsUIResolver %s"
-msgstr " %s Faltando cupsUIResolver %s"
-
-#, c-format
-msgid " %s Missing option %s in UIConstraints \"*%s %s *%s %s\"."
-msgstr " %s Faltando a opção %s em UIConstraints \"*%s %s *%s %s\"."
-
-#, c-format
-msgid " %s Missing option %s in cupsUIConstraints %s: \"%s\""
-msgstr " %s Faltando a opção %s em cupsUIConstraints %s: \"%s\""
-
-#, c-format
-msgid " %s No base translation \"%s\" is included in file."
-msgstr " %s Nenhuma tradução base de \"%s\" está inclusa no arquivo."
-
-#, c-format
-msgid ""
-" %s REQUIRED %s does not define choice None.\n"
-" REF: Page 122, section 5.17"
-msgstr ""
-" %s %s NECESSÃRIO não define a escolha None.\n"
-" REF: Página 122, seção 5.17"
-
-#, c-format
-msgid " %s Size \"%s\" defined for %s but not for %s."
-msgstr " %s Tamanho \"%s\" definido para %s, mas não para %s."
-
-#, c-format
-msgid " %s Size \"%s\" has unexpected dimensions (%gx%g)."
-msgstr " %s Tamanho \"%s\" tem dimensões inesperadas (%gx%g)."
-
-#, c-format
-msgid " %s Size \"%s\" should be \"%s\"."
-msgstr " %s Tamanho \"%s\" deveria ser \"%s\"."
-
-#, c-format
-msgid " %s Size \"%s\" should be the Adobe standard name \"%s\"."
-msgstr ""
-" %s Tamanho \"%s\" deveria ser no padrão do Adobo chamado \"%s\"."
-
-#, c-format
-msgid " %s cupsICCProfile %s hash value collides with %s."
-msgstr " %s Valor de hash de cupsICCProfile %s colide com %s."
-
-#, c-format
-msgid " %s cupsUIResolver %s causes a loop."
-msgstr " %s cupsUIResolver %s causa um loop."
-
-#, c-format
-msgid ""
-" %s cupsUIResolver %s does not list at least two different options."
-msgstr ""
-" %s cupsUIResolver %s não lista pelo menos duas opções diferentes."
-
-#, c-format
-msgid ""
-" **FAIL** %s must be 1284DeviceID\n"
-" REF: Page 72, section 5.5"
-msgstr ""
-" **FALHA** %s deve ser 1284DeviceID\n"
-" REF: Página 72, seção 5.5"
-
-#, c-format
-msgid ""
-" **FAIL** Bad Default%s %s\n"
-" REF: Page 40, section 4.5."
-msgstr ""
-" **FALHA** Default%s inválido %s\n"
-" REF: Página 40, seção 4.5."
-
-#, c-format
-msgid ""
-" **FAIL** Bad DefaultImageableArea %s\n"
-" REF: Page 102, section 5.15."
-msgstr ""
-" **FALHA** DefaultImageableArea inválido %s\n"
-" REF: Página 102, seção 5.15."
-
-#, c-format
-msgid ""
-" **FAIL** Bad DefaultPaperDimension %s\n"
-" REF: Page 103, section 5.15."
-msgstr ""
-" **FALHA** DefaultPaperDimension inválido %s\n"
-" REF: Página 103, seção 5.15."
-
-#, c-format
-msgid ""
-" **FAIL** Bad FileVersion \"%s\"\n"
-" REF: Page 56, section 5.3."
-msgstr ""
-" **FALHA** FileVersion inválido \"%s\"\n"
-" REF: Página 56, seção 5.3."
-
-#, c-format
-msgid ""
-" **FAIL** Bad FormatVersion \"%s\"\n"
-" REF: Page 56, section 5.3."
-msgstr ""
-" **FALHA** FormatVersion inválido \"%s\"\n"
-" REF: Página 56, seção 5.3."
-
-msgid ""
-" **FAIL** Bad JobPatchFile attribute in file\n"
-" REF: Page 24, section 3.4."
-msgstr ""
-" **FALHA** Atributo inválido de JobPatchFile no arquivo\n"
-" REF: Página 24, seção 3.4."
-
-#, c-format
-msgid " **FAIL** Bad LanguageEncoding %s - must be ISOLatin1."
-msgstr " **FALHA** LanguageEncoding inválido %s - tem que ser ISOLatin1."
-
-#, c-format
-msgid " **FAIL** Bad LanguageVersion %s - must be English."
-msgstr " **FALHA** LanguageVersion inválido %s - deve ser Inglês."
-
-#, c-format
-msgid ""
-" **FAIL** Bad Manufacturer (should be \"%s\")\n"
-" REF: Page 211, table D.1."
-msgstr ""
-" **FALHA** Manufacturer inválido (deveria ser \"%s\")\n"
-" REF: Página 211, tabela D.1."
-
-#, c-format
-msgid ""
-" **FAIL** Bad ModelName - \"%c\" not allowed in string.\n"
-" REF: Pages 59-60, section 5.3."
-msgstr ""
-" **FALHA** ModelName inválido - \"%c\" não permitido na string.\n"
-" REF: Páginas 59-60, seção 5.3."
-
-msgid ""
-" **FAIL** Bad PSVersion - not \"(string) int\".\n"
-" REF: Pages 62-64, section 5.3."
-msgstr ""
-" **FALHA** PSVersion inválida - não \"(string) int\".\n"
-" REF: Páginas 62-64, seção 5.3."
-
-msgid ""
-" **FAIL** Bad Product - not \"(string)\".\n"
-" REF: Page 62, section 5.3."
-msgstr ""
-" **FALHA** Product inválido - não \"(string)\".\n"
-" REF: Página 62, seção 5.3."
-
-msgid ""
-" **FAIL** Bad ShortNickName - longer than 31 chars.\n"
-" REF: Pages 64-65, section 5.3."
-msgstr ""
-" **FALHA** ShortNickName inválido - maior do que 31 caracteres.\n"
-" REF: Páginas 64-65, seção 5.3."
-
-#, c-format
-msgid ""
-" **FAIL** Bad option %s choice %s\n"
-" REF: Page 84, section 5.9"
-msgstr ""
-" **FALHA** Opção inválido %s escolha %s\n"
-" REF: Página 84, seção 5.9"
-
-#, c-format
-msgid " **FAIL** Default option code cannot be interpreted: %s"
-msgstr " **FALHA** Código de opção padrão não pode ser interpretado: %s"
-
-#, c-format
-msgid ""
-" **FAIL** Default translation string for option %s choice %s contains "
-"8-bit characters."
-msgstr ""
-" **FALHA** String de tradução padrão para opção %s escolha %s contém "
-"caracteres de 8-bit."
-
-#, c-format
-msgid ""
-" **FAIL** Default translation string for option %s contains 8-bit "
-"characters."
-msgstr ""
-" **FALHA** String de tradução padrão para opção %s contém caracteres de "
-"8-bit."
-
-#, c-format
-msgid " **FAIL** Group names %s and %s differ only by case."
-msgstr ""
-" **FALHA** Nomes dos grupos %s e %s se diferem somente por maiúsculo/"
-"minúsculo."
-
-#, c-format
-msgid " **FAIL** Multiple occurrences of option %s choice name %s."
-msgstr " **FALHA** Múltiplas ocorrências da opção %s escolha de nome %s."
-
-#, c-format
-msgid " **FAIL** Option %s choice names %s and %s differ only by case."
-msgstr ""
-" **FALHA** Opção %s escolha de nomes %s e %s se diferem somente por "
-"maiúsculo/minúsculo."
-
-#, c-format
-msgid " **FAIL** Option names %s and %s differ only by case."
-msgstr ""
-" **FALHA** Os nomes de opção %s e %s se diferem somente por maiúsculo/"
-"minúsculo."
-
-#, c-format
-msgid ""
-" **FAIL** REQUIRED Default%s\n"
-" REF: Page 40, section 4.5."
-msgstr ""
-" **FALHA** NECESSÃRIO Default%s\n"
-" REF: Página 40, seção 4.5."
-
-msgid ""
-" **FAIL** REQUIRED DefaultImageableArea\n"
-" REF: Page 102, section 5.15."
-msgstr ""
-" **FALHA** NECESSÃRIO DefaultImageableArea\n"
-" REF: Página 102, seção 5.15."
-
-msgid ""
-" **FAIL** REQUIRED DefaultPaperDimension\n"
-" REF: Page 103, section 5.15."
-msgstr ""
-" **FALHA** NECESSÃRIO DefaultPaperDimension\n"
-" REF: Página 103, seção 5.15."
-
-msgid ""
-" **FAIL** REQUIRED FileVersion\n"
-" REF: Page 56, section 5.3."
-msgstr ""
-" **FALHA** NECESSÃRIO FileVersion\n"
-" REF: Página 56, seção 5.3."
-
-msgid ""
-" **FAIL** REQUIRED FormatVersion\n"
-" REF: Page 56, section 5.3."
-msgstr ""
-" **FALHA** NECESSÃRIO FormatVersion\n"
-" REF: Página 56, seção 5.3."
-
-#, c-format
-msgid ""
-" **FAIL** REQUIRED ImageableArea for PageSize %s\n"
-" REF: Page 41, section 5.\n"
-" REF: Page 102, section 5.15."
-msgstr ""
-" **FALHA** NECESSÃRIO ImageableArea para PageSize %s\n"
-" REF: Página 41, seção 5.\n"
-" REF: Página 102, seção 5.15."
-
-msgid ""
-" **FAIL** REQUIRED LanguageEncoding\n"
-" REF: Pages 56-57, section 5.3."
-msgstr ""
-" **FALHA** NECESSÃRIO LanguageEncoding\n"
-" REF: Páginas 56-57, seção 5.3."
-
-msgid ""
-" **FAIL** REQUIRED LanguageVersion\n"
-" REF: Pages 57-58, section 5.3."
-msgstr ""
-" **FALHA** NECESSÃRIO LanguageVersion\n"
-" REF: Páginas 57-58, seção 5.3."
-
-msgid ""
-" **FAIL** REQUIRED Manufacturer\n"
-" REF: Pages 58-59, section 5.3."
-msgstr ""
-" **FALHA** NECESSÃRIO Manufacturer\n"
-" REF: Páginas 58-59, seção 5.3."
-
-msgid ""
-" **FAIL** REQUIRED ModelName\n"
-" REF: Pages 59-60, section 5.3."
-msgstr ""
-" **FALHA** NECESSÃRIO ModelName\n"
-" REF: Páginas 59-60, seção 5.3."
-
-msgid ""
-" **FAIL** REQUIRED NickName\n"
-" REF: Page 60, section 5.3."
-msgstr ""
-" **FALHA** NECESSÃRIO NickName\n"
-" REF: Página 60, seção 5.3."
-
-msgid ""
-" **FAIL** REQUIRED PCFileName\n"
-" REF: Pages 61-62, section 5.3."
-msgstr ""
-" **FALHA** NECESSÃRIO PCFileName\n"
-" REF: Páginas 61-62, seção 5.3."
-
-msgid ""
-" **FAIL** REQUIRED PSVersion\n"
-" REF: Pages 62-64, section 5.3."
-msgstr ""
-" **FALHA** NECESSÃRIO PSVersion\n"
-" REF: Páginas 62-64, seção 5.3."
-
-msgid ""
-" **FAIL** REQUIRED PageRegion\n"
-" REF: Page 100, section 5.14."
-msgstr ""
-" **FALHA** NECESSÃRIO PageRegion\n"
-" REF: Página 100, seção 5.14."
-
-msgid ""
-" **FAIL** REQUIRED PageSize\n"
-" REF: Page 41, section 5.\n"
-" REF: Page 99, section 5.14."
-msgstr ""
-" **FALHA** NECESSÃRIO PageSize\n"
-" REF: Página 41, seção 5.\n"
-" REF: Página 99, seção 5.14."
-
-msgid ""
-" **FAIL** REQUIRED PageSize\n"
-" REF: Pages 99-100, section 5.14."
-msgstr ""
-" **FALHA** NECESSÃRIO PageSize\n"
-" REF: Páginas 99-100, seção 5.14."
-
-#, c-format
-msgid ""
-" **FAIL** REQUIRED PaperDimension for PageSize %s\n"
-" REF: Page 41, section 5.\n"
-" REF: Page 103, section 5.15."
-msgstr ""
-" **FALHA** NECESSÃRIO PaperDimension para PageSize %s\n"
-" REF: Página 41, seção 5.\n"
-" REF: Página 103, seção 5.15."
-
-msgid ""
-" **FAIL** REQUIRED Product\n"
-" REF: Page 62, section 5.3."
-msgstr ""
-" **FALHA** NECESSÃRIO Product\n"
-" REF: Página 62, seção 5.3."
-
-msgid ""
-" **FAIL** REQUIRED ShortNickName\n"
-" REF: Page 64-65, section 5.3."
-msgstr ""
-" **FALHA** NECESSÃRIO ShortNickName\n"
-" REF: Página 64-65, seção 5.3."
-
-#, c-format
-msgid " **FAIL** Unable to open PPD file - %s on line %d."
-msgstr " **FALHA** Não foi possível abrir o arquivo PPD - %s na linha %d."
-
-#, c-format
-msgid " %d ERRORS FOUND"
-msgstr " %d ERROS ENCONTRADOS"
-
-msgid " -h Show program usage"
-msgstr " -h Mostra formas de uso do programa"
-
-#, c-format
-msgid ""
-" Bad %%%%BoundingBox: on line %d.\n"
-" REF: Page 39, %%%%BoundingBox:"
-msgstr ""
-" %%%%BoundingBox inválida: na linha %d.\n"
-" REF: Página 39, %%%%BoundingBox:"
-
-#, c-format
-msgid ""
-" Bad %%%%Page: on line %d.\n"
-" REF: Page 53, %%%%Page:"
-msgstr ""
-" %%%%Page inválida: na linha %d.\n"
-" REF: Página 53, %%%%Page:"
-
-#, c-format
-msgid ""
-" Bad %%%%Pages: on line %d.\n"
-" REF: Page 43, %%%%Pages:"
-msgstr ""
-" %%%%Pages inválida: na linha %d.\n"
-" REF: Página 43, %%%%Pages:"
-
-#, c-format
-msgid ""
-" Line %d is longer than 255 characters (%d).\n"
-" REF: Page 25, Line Length"
-msgstr ""
-" Linha %d é maior do que 255 caracteres (%d).\n"
-" REF: Página 25, Line Length"
-
-msgid ""
-" Missing %!PS-Adobe-3.0 on first line.\n"
-" REF: Page 17, 3.1 Conforming Documents"
-msgstr ""
-" Faltando %!PS-Adobe-3.0 na primeira linha.\n"
-" REF: Página 17, 3.1 Conforming Documents"
-
-#, c-format
-msgid " Missing %%EndComments comment. REF: Page 41, %%EndComments"
-msgstr ""
-" Faltando comentário de %%EndComments. REF: Página 41, "
-"%%EndComments"
-
-#, c-format
-msgid ""
-" Missing or bad %%BoundingBox: comment.\n"
-" REF: Page 39, %%BoundingBox:"
-msgstr ""
-" Faltando %%BoundingBox ou é inválido: comentário.\n"
-" REF: Página 39, %%BoundingBox:"
-
-#, c-format
-msgid ""
-" Missing or bad %%Page: comments.\n"
-" REF: Page 53, %%Page:"
-msgstr ""
-" Faltando %%Page ou inválido: comentários.\n"
-" REF: Página 53, %%Page:"
-
-#, c-format
-msgid ""
-" Missing or bad %%Pages: comment.\n"
-" REF: Page 43, %%Pages:"
-msgstr ""
-" Faltando %%Pages ou inválido: comentário.\n"
-" REF: Página 43, %%Pages:"
-
-msgid " NO ERRORS FOUND"
-msgstr " NENHUM ERRO ENCONTRADO"
-
-#, c-format
-msgid " Saw %d lines that exceeded 255 characters."
-msgstr " Cortadas %d linhas que excederam a 255 caracteres."
-
-#, c-format
-msgid " Too many %%BeginDocument comments."
-msgstr " Número excessivo de comentários de %%BeginDocument."
-
-#, c-format
-msgid " Too many %%EndDocument comments."
-msgstr " Número excessivo de comentários de %%EndDocument."
-
-msgid " Warning: file contains binary data."
-msgstr " Aviso: arquivo contém dados binários."
-
-#, c-format
-msgid " Warning: no %%EndComments comment in file."
-msgstr " Aviso: nenhum comentário de %%EndComments no arquivo."
-
-#, c-format
-msgid " Warning: obsolete DSC version %.1f in file."
-msgstr " Aviso: versão %.1f obsoleta de DSC no arquivo."
-
-msgid " ! expression Unary NOT of expression."
-msgstr " ! expressão Unário NÃO de expressão."
-
-msgid " ( expressions ) Group expressions."
-msgstr " ( expressões ) Grupo de expressões."
-
-msgid " --[no-]debug-logging Turn debug logging on/off."
-msgstr " --[no-]debug-logging Habilita ou desabilita depuração dos logs."
-
-msgid " --[no-]remote-admin Turn remote administration on/off."
-msgstr " --[no-]remote-admin Habilita ou desabilita administração remota."
-
-msgid " --[no-]remote-any Allow/prevent access from the Internet."
-msgstr " --[no-]remote-any Permite/proíbe acesso por meio da Internet."
-
-msgid " --[no-]share-printers Turn printer sharing on/off."
-msgstr ""
-" --[no-]share-printers Habilita ou desabilita compartilhamento de "
-"impressora."
-
-msgid " --[no-]user-cancel-any Allow/prevent users to cancel any job."
-msgstr ""
-" --[no-]user-cancel-any Permite/proíbe os usuários cancelar qualquer "
-"trabalho."
-
-msgid " --cr End lines with CR (Mac OS 9)."
-msgstr " --cr Fim de linhas com CR (Mac OS 9)."
-
-msgid " --crlf End lines with CR + LF (Windows)."
-msgstr " --crlf Fim de linhas com CR + LF (Windows)."
-
-msgid " --domain regex Match domain to regular expression."
-msgstr " --domain regex Corresponde o domínio à expressão regular."
-
-msgid ""
-" --exec utility [argument ...] ;\n"
-" Execute program if true."
-msgstr ""
-" --exec utilitário [argumento ...] ;\n"
-" Executa o programa se verdadeiro."
-
-msgid " --false Always false."
-msgstr " --false Sempre falso."
-
-msgid " --help Show this help."
-msgstr " --help Mostra esta ajuda."
-
-msgid " --host regex Match hostname to regular expression."
-msgstr ""
-" --host regex Corresponde o nome da máquina à expressão regular."
-
-msgid " --lf End lines with LF (UNIX/Linux/OS X)."
-msgstr " --lf Fim de linhas com LF (UNIX/Linux/OS X)."
-
-msgid " --local True if service is local."
-msgstr " --local Verdadeiro se o serviço for local."
-
-msgid " --ls List attributes."
-msgstr " --ls Lista os atributos."
-
-msgid " --name regex Match service name to regular expression."
-msgstr ""
-" --name regex Corresponde o nome do serviço à expressão regular."
-
-msgid " --not expression Unary NOT of expression."
-msgstr " --not expressão Unário NÃO da expressão."
-
-msgid " --path regex Match resource path to regular expression."
-msgstr ""
-" --path regex Corresponde o caminho do recurso à expressão "
-"regular."
-
-msgid " --port number[-number] Match port to number or range."
-msgstr " --port número[-número] Corresponde a porta ao número ou faixa."
-
-msgid " --print Print URI if true."
-msgstr " --print Exibe a URI se verdadeiro."
-
-msgid " --print-name Print service name if true."
-msgstr " --print-name Exibe o nome do serviço se verdadeiro."
-
-msgid " --quiet Quietly report match via exit code."
-msgstr ""
-" --quiet Relata silenciosamente correspondências via "
-"código de saída."
-
-msgid " --remote True if service is remote."
-msgstr " --remote Verdeiro se o serviço for remoto."
-
-msgid " --true Always true."
-msgstr " --true Sempre verdadeiro."
-
-msgid " --txt key True if the TXT record contains the key."
-msgstr ""
-" --txt chave Verdadeiro se o registro TXT contiver a chave."
-
-msgid " --txt-* regex Match TXT record key to regular expression."
-msgstr ""
-" --txt-* regex Corresponde a chave de registro TXT à expressão "
-"regular."
-
-msgid " --uri regex Match URI to regular expression."
-msgstr " --uri regex Corresponde a URI à expressão regular."
-
-msgid " --version Show program version."
-msgstr " --version Mostra a versão do programa."
-
-msgid " -4 Connect using IPv4."
-msgstr " -4 Conecta usando IPv4."
-
-msgid " -6 Connect using IPv6."
-msgstr " -6 Conecta usando IPv6."
-
-msgid " -C Send requests using chunking (default)."
-msgstr " -C Envia requisições usando chunking (padrão)."
-
-msgid " -D Remove the input file when finished."
-msgstr " -D Remove o arquivo de entrada ao finalizar."
-
-msgid " -D name=value Set named variable to value."
-msgstr " -D nome=valor Define a variável \"nome\" com \"valor\"."
-
-msgid " -E Encrypt the connection."
-msgstr " -E Criptografa a conexão."
-
-msgid " -E Test with HTTP Upgrade to TLS."
-msgstr " -E Testa com HTTP Upgrade para TLS."
-
-msgid ""
-" -F Run in the foreground but detach from console."
-msgstr ""
-" -F Executa em primeiro plano, mas desanexa do console."
-
-msgid " -H samba-server Use the named SAMBA server."
-msgstr ""
-" -H servidor-samba Usa o servidor SAMBA chamado \"servidor-samba\"."
-
-msgid " -I Ignore errors."
-msgstr " -I Ignora erros."
-
-msgid " -I include-dir Add include directory to search path."
-msgstr ""
-" -I dir-include Adiciona diretório de include ao caminho de "
-"pesquisa."
-
-msgid " -I {filename,filters,none,profiles}"
-msgstr " -I {filename,filters,none,profiles}"
-
-msgid " -L Send requests using content-length."
-msgstr " -L Envia requisições usando limite de conteúdo."
-
-msgid " -P filename.ppd Set PPD file."
-msgstr " -P arquivo.ppd Define arquivo PPD."
-
-msgid " -P number[-number] Match port to number or range."
-msgstr " -P número[-número] Corresponde a porta ao número ou faixa."
-
-msgid " -R root-directory Set alternate root."
-msgstr " -R diretório-raiz Define diretório-raiz alternativo."
-
-msgid " -S Test with SSL encryption."
-msgstr " -S Testa com criptografia SSL."
-
-msgid " -T seconds Set the browse timeout in seconds."
-msgstr ""
-" -T segundos Define o tempo limite de navegação em segundos."
-
-msgid " -T seconds Set the receive/send timeout in seconds."
-msgstr ""
-" -T segundos Define o limite de tempo de recebimento/envio "
-"em segundos."
-
-msgid " -U username Specify username."
-msgstr " -U usuário Especifica nome do usuário."
-
-msgid " -V version Set default IPP version."
-msgstr " -V versão Define versão padrão de IPP."
-
-msgid ""
-" -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,"
-"translations}"
-msgstr ""
-" -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,"
-"translations}"
-
-msgid " -X Produce XML plist instead of plain text."
-msgstr " -X Produz plist XML ao invés de texto normal."
-
-msgid " -a Browse for all services."
-msgstr " -a Navega por todos os serviços."
-
-msgid " -a Export all printers."
-msgstr " -a Exporta todas as impressoras."
-
-msgid " -c catalog.po Load the specified message catalog."
-msgstr ""
-" -c catálogo.po Carrega o catálogo de mensagens especificado."
-
-msgid " -c cups-files.conf Set cups-files.conf file to use."
-msgstr ""
-" -c cups-files.conf Define o arquivo cups-files.conf para ser usado."
-
-msgid " -c cupsd.conf Set cupsd.conf file to use."
-msgstr " -c cupsd.conf Define o arquivo cupsd.conf a ser usado."
-
-msgid " -d domain Browse/resolve in specified domain."
-msgstr " -d domínio Navega/resolve no domínio especificado."
-
-msgid " -d name=value Set named variable to value."
-msgstr " -d nome=valor Define a variável \"nome\" com \"valor\"."
-
-msgid " -d output-dir Specify the output directory."
-msgstr " -d dir-saída Especifica o diretório de saída."
-
-msgid " -d printer Use the named printer."
-msgstr " -d impressora Usa a impressora informada."
-
-msgid " -d regex Match domain to regular expression."
-msgstr " -d regex Corresponde o domínio à expressão regular."
-
-msgid " -e Use every filter from the PPD file."
-msgstr " -e Usa todos os filtros do arquivo PPD."
-
-msgid " -f Run in the foreground."
-msgstr " -f Executa em primeiro plano."
-
-msgid " -f filename Set default request filename."
-msgstr ""
-" -f arquivo Define o nome de arquivo de requisição padrão."
-
-msgid " -h Show this usage message."
-msgstr " -h Exibe esta mensagem de uso."
-
-msgid " -h regex Match hostname to regular expression."
-msgstr ""
-" -h regex Corresponde o nome da máquina à expressão regular."
-
-msgid " -h server[:port] Specify server address."
-msgstr " -h servidor[:porta] Especifica o endereço do servidor."
-
-msgid " -i mime/type Set input MIME type (otherwise auto-typed)."
-msgstr ""
-" -i tipo-mime Define o tipo MIME de entrada (caso "
-"contrário, tipo automático)."
-
-msgid ""
-" -i seconds Repeat the last file with the given time interval."
-msgstr ""
-" -i segundos Repete o último arquivo com o tempo de intervalo "
-"dado."
-
-msgid ""
-" -j job-id[,N] Filter file N from the specified job (default is "
-"file 1)."
-msgstr ""
-" -j job-id[,N] Filtra o arquivo N do trabalho especificado "
-"(o padrão é o arquivo 1)."
-
-msgid " -l List attributes."
-msgstr " -l Lista os atributos."
-
-msgid " -l Run cupsd from launchd(8)."
-msgstr " -l Executa cupsd a partir do launchd(8)."
-
-msgid " -l lang[,lang,...] Specify the output language(s) (locale)."
-msgstr " -l idioma[,idioma,...] Especifica o(s) idioma(s) de saída (locale)."
-
-msgid " -m Use the ModelName value as the filename."
-msgstr ""
-" -m Usa o valor de ModelName como o nome de arquivo."
-
-msgid ""
-" -m mime/type Set output MIME type (otherwise application/pdf)."
-msgstr ""
-" -m tipo-mime Define o tipo MIME de saída (caso "
-"contrário, aplicação/pdf)."
-
-msgid " -n copies Set number of copies."
-msgstr " -n cópias Define número de cópias."
-
-msgid ""
-" -n count Repeat the last file the given number of times."
-msgstr ""
-" -n contagem Repete o último arquivo o número de vezes dado."
-
-msgid " -n regex Match service name to regular expression."
-msgstr ""
-" -n regex Corresponde o nome do serviço à expressão regular."
-
-msgid ""
-" -o filename.drv Set driver information file (otherwise ppdi.drv)."
-msgstr ""
-" -o arquivo.drv Define o arquivo de informações do "
-"driver (caso contrário, ppdi.drv)."
-
-msgid " -o filename.ppd[.gz] Set output file (otherwise stdout)."
-msgstr ""
-" -o arquivo.ppd[.gz] Define arquivo de saída (caso contrário, stdout)."
-
-msgid " -o name=value Set option(s)."
-msgstr " -o nome=valor Define opção/opções."
-
-msgid " -p Print URI if true."
-msgstr " -p Exibe a URI se verdadeiro."
-
-msgid " -p filename.ppd Set PPD file."
-msgstr " -p arquivo.ppd Define arquivo PPD."
-
-msgid " -p program Run specified program for each service."
-msgstr ""
-" -p programa Executa o programa especificado para cada serviço."
-
-msgid " -q Quietly report match via exit code."
-msgstr ""
-" -q Relata silenciosamente correspondências via "
-"código de saída."
-
-msgid " -q Run silently."
-msgstr " -q Executa silenciosamente."
-
-msgid " -r True if service is remote."
-msgstr " -r Verdadeiro se o serviço for remoto."
-
-msgid " -r Use 'relaxed' open mode."
-msgstr " -r Usa modo aberto \"relaxado\"."
-
-msgid " -s Print service name if true."
-msgstr " -s Exibe o nome do serviço se verdadeiro."
-
-msgid " -t Produce a test report."
-msgstr " -t Produz um relatório de teste."
-
-msgid " -t Test PPDs instead of generating them."
-msgstr " -t Testa PPDs ao invés de criá-los."
-
-msgid " -t Test the configuration file."
-msgstr " -t Testa o arquivo de configuração."
-
-msgid " -t key True if the TXT record contains the key."
-msgstr ""
-" -t chave Verdadeiro se o registro TXT contiver a chave."
-
-msgid " -t title Set title."
-msgstr " -t título Define um título."
-
-msgid " -t type Browse/resolve with specified type."
-msgstr " -t tipo Navega/resolve com o tipo especificado."
-
-msgid " -u Remove the PPD file when finished."
-msgstr " -u Remove o arquivo PPD ao final."
-
-msgid " -u regex Match URI to regular expression."
-msgstr " -u regex Corresponde a URI à expressão regular."
-
-msgid " -v Be verbose."
-msgstr " -v Modo detalhado."
-
-msgid " -vv Be very verbose."
-msgstr " -vv Modo muito detalhado."
-
-msgid ""
-" -x utility [argument ...] ;\n"
-" Execute program if true."
-msgstr ""
-" -x utilitário [argumento ...] ;\n"
-" Executa o programa se verdadeiro."
-
-msgid " -z Compress PPD files using GNU zip."
-msgstr " -z Compacta arquivos PPD usando GNU zip."
-
-msgid " IPPFIND_SERVICE_DOMAIN Domain name"
-msgstr " IPPFIND_SERVICE_DOMAIN Nome do domínio"
-
-msgid ""
-" IPPFIND_SERVICE_HOSTNAME\n"
-" Fully-qualified domain name"
-msgstr ""
-" IPPFIND_SERVICE_HOSTNAME\n"
-" Nome completo do domínio (FQDN)"
-
-msgid " IPPFIND_SERVICE_NAME Service instance name"
-msgstr " IPPFIND_SERVICE_NAME Nome da instância do serviço"
-
-msgid " IPPFIND_SERVICE_PORT Port number"
-msgstr " IPPFIND_SERVICE_PORT Número da porta"
-
-msgid " IPPFIND_SERVICE_REGTYPE DNS-SD registration type"
-msgstr " IPPFIND_SERVICE_REGTYPE Tipo de registro DNS-SD"
-
-msgid " IPPFIND_SERVICE_SCHEME URI scheme"
-msgstr " IPPFIND_SERVICE_SCHEME Esquema URI"
-
-msgid " IPPFIND_SERVICE_URI URI"
-msgstr " IPPFIND_SERVICE_URI URI"
-
-msgid " IPPFIND_TXT_* Value of TXT record key"
-msgstr " IPPFIND_TXT_* Valor da chave de registro TXT"
-
-msgid ""
-" expression --and expression\n"
-" Logical AND."
-msgstr ""
-" expressão --and expressão\n"
-" AND lógico."
-
-msgid ""
-" expression --or expression\n"
-" Logical OR."
-msgstr ""
-" expressão --or expressão\n"
-" OR lógico."
-
-msgid " expression expression Logical AND."
-msgstr " expressão expressão AND lógico."
-
-msgid " {service_domain} Domain name"
-msgstr " {service_domain} Nome do domínio"
-
-msgid " {service_hostname} Fully-qualified domain name"
-msgstr " {service_hostname} Nome completo do domínio (FQDN)"
-
-msgid " {service_name} Service instance name"
-msgstr " {service_name} Nome da instância do serviço"
-
-msgid " {service_port} Port number"
-msgstr " {service_port} Número da porta"
-
-msgid " {service_regtype} DNS-SD registration type"
-msgstr " {service_regtype} Tipo de registro DNS-SD"
-
-msgid " {service_scheme} URI scheme"
-msgstr " {service_scheme} Esquema URI"
-
-msgid " {service_uri} URI"
-msgstr " {service_uri} URI"
-
-msgid " {txt_*} Value of TXT record key"
-msgstr " {txt_*} Valor da chave de registro TXT"
-
-msgid " {} URI"
-msgstr " {} URI"
-
-msgid " FAIL"
-msgstr " FALHA"
-
-msgid " PASS"
-msgstr " PASSOU"
-
-#, c-format
-msgid "\"%s\": Bad URI value \"%s\" - %s (RFC 2911 section 4.1.5)."
-msgstr "\"%s\": Valor inválido de URI \"%s\" - %s (RFC 2911 seção 4.1.5)."
-
-#, c-format
-msgid "\"%s\": Bad URI value \"%s\" - bad length %d (RFC 2911 section 4.1.5)."
-msgstr ""
-"\"%s\": Valor inválido de URI \"%s\" - comprimento inválido %d (RFC 2911 "
-"seção 4.1.5)."
-
-#, c-format
-msgid "\"%s\": Bad attribute name - bad length %d (RFC 2911 section 4.1.3)."
-msgstr ""
-"\"%s\": Nome de atributo inválido - comprimento inválido %d (RFC 2911 seção "
-"4.1.3)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad attribute name - invalid character (RFC 2911 section 4.1.3)."
-msgstr ""
-"\"%s\": Nome de atributo inválido - caractere inválido (RFC 2911 seção "
-"4.1.3)."
-
-#, c-format
-msgid "\"%s\": Bad boolen value %d (RFC 2911 section 4.1.11)."
-msgstr "\"%s\": Valor booleano inválido %d (RFC 2911 seção 4.1.11)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad charset value \"%s\" - bad characters (RFC 2911 section 4.1.7)."
-msgstr ""
-"\"%s\": Valor de conjunto de caracteres inválido \"%s\" - caracteres "
-"inválido (RFC 2911 seção 4.1.7)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad charset value \"%s\" - bad length %d (RFC 2911 section 4.1.7)."
-msgstr ""
-"\"%s\": Valor de conjunto de caracteres inválido \"%s\" - comprimento "
-"inválido %d (RFC 2911 seção 4.1.7)."
-
-#, c-format
-msgid "\"%s\": Bad dateTime UTC hours %u (RFC 2911 section 4.1.14)."
-msgstr "\"%s\": Horas de UTC dateTime inválidas %u (RFC 2911 seção 4.1.14)."
-
-#, c-format
-msgid "\"%s\": Bad dateTime UTC minutes %u (RFC 2911 section 4.1.14)."
-msgstr "\"%s\": Minutos de UTC dateTime inválidos %u (RFC 2911 seção 4.1.14)."
-
-#, c-format
-msgid "\"%s\": Bad dateTime UTC sign '%c' (RFC 2911 section 4.1.14)."
-msgstr "\"%s\": Sinal de UTC dateTime inválido \"%c\" (RFC 2911 seção 4.1.14)."
-
-#, c-format
-msgid "\"%s\": Bad dateTime day %u (RFC 2911 section 4.1.14)."
-msgstr "\"%s\": Dia de dateTime inválido %u (RFC 2911 seção 4.1.14)."
-
-#, c-format
-msgid "\"%s\": Bad dateTime deciseconds %u (RFC 2911 section 4.1.14)."
-msgstr ""
-"\"%s\": Décimos de segundos de dateTime inválidos %u (RFC 2911 seção 4.1.14)."
-
-#, c-format
-msgid "\"%s\": Bad dateTime hours %u (RFC 2911 section 4.1.14)."
-msgstr "\"%s\": Horas de dateTime inválidas %u (RFC 2911 seção 4.1.14)."
-
-#, c-format
-msgid "\"%s\": Bad dateTime minutes %u (RFC 2911 section 4.1.14)."
-msgstr "\"%s\": Minutos de dateTime inválidos %u (RFC 2911 seção 4.1.14)."
-
-#, c-format
-msgid "\"%s\": Bad dateTime month %u (RFC 2911 section 4.1.14)."
-msgstr "\"%s\": Mês de dateTime inválido %u (RFC 2911 seção 4.1.14)."
-
-#, c-format
-msgid "\"%s\": Bad dateTime seconds %u (RFC 2911 section 4.1.14)."
-msgstr "\"%s\": Segundos de dateTime inválidos %u (RFC 2911 seção 4.1.14)."
-
-#, c-format
-msgid "\"%s\": Bad enum value %d - out of range (RFC 2911 section 4.1.4)."
-msgstr ""
-"\"%s\": Valor de enum inválido %d - fora da faixa (RFC 2911 seção 4.1.4)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad keyword value \"%s\" - bad length %d (RFC 2911 section 4.1.3)."
-msgstr ""
-"\"%s\": Valor de keyword inválido \"%s\" - comprimento inválido %d (RFC 2911 "
-"seção 4.1.3)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad keyword value \"%s\" - invalid character (RFC 2911 section "
-"4.1.3)."
-msgstr ""
-"\"%s\": Valor de keyword inválido \"%s\" - caractere inválido (RFC 2911 "
-"seção 4.1.3)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad mimeMediaType value \"%s\" - bad characters (RFC 2911 section "
-"4.1.9)."
-msgstr ""
-"\"%s\": Valor de mimeMediaType inválido \"%s\" - caracteres inválidos (RFC "
-"2911 seção 4.1.9)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad mimeMediaType value \"%s\" - bad length %d (RFC 2911 section "
-"4.1.9)."
-msgstr ""
-"\"%s\": Valor de mimeMediaType inválido \"%s\" - comprimento inválido %d "
-"(RFC 2911 seção 4.1.9)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad name value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.2)."
-msgstr ""
-"\"%s\": Valor de name inválido \"%s\" - sequência UTF-8 inválida (RFC 2911 "
-"seção 4.1.2)."
-
-#, c-format
-msgid "\"%s\": Bad name value \"%s\" - bad length %d (RFC 2911 section 4.1.2)."
-msgstr ""
-"\"%s\": Valor de name inválido \"%s\" - comprimento inválido %d (RFC 2911 "
-"seção 4.1.2)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad naturalLanguage value \"%s\" - bad characters (RFC 2911 section "
-"4.1.8)."
-msgstr ""
-"\"%s\": Valor de naturalLanguage inválido \"%s\" - caracteres inválidos (RFC "
-"2911 seção 4.1.8)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad naturalLanguage value \"%s\" - bad length %d (RFC 2911 section "
-"4.1.8)."
-msgstr ""
-"\"%s\": Valor de naturalLanguage inválido \"%s\" - comprimento inválido %d "
-"(RFC 2911 seção 4.1.8)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad octetString value - bad length %d (RFC 2911 section 4.1.10)."
-msgstr ""
-"\"%s\": Valor de octetString inválido - comprimento inválido %d (RFC 2911 "
-"seção 4.1.10)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad rangeOfInteger value %d-%d - lower greater than upper (RFC 2911 "
-"section 4.1.13)."
-msgstr ""
-"\"%s\": Valor de rangeOfInteger inválido %d-%d - inferior maior do que o "
-"superior (RFC 2911 seção 4.1.13)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad resolution value %dx%d%s - bad units value (RFC 2911 section "
-"4.1.15)."
-msgstr ""
-"\"%s\": Valor de resolução inválido %dx%d%s - valor de unidades inválido "
-"(RFC 2911 seção 4.1.15)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad resolution value %dx%d%s - cross feed resolution must be "
-"positive (RFC 2911 section 4.1.15)."
-msgstr ""
-"\"%s\": Valor de resolução inválido %dx%d%s - resolução de cross-feed deve "
-"ser positiva (RFC 2911 seção 4.1.15)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad resolution value %dx%d%s - feed resolution must be positive (RFC "
-"2911 section 4.1.15)."
-msgstr ""
-"\"%s\": Valor de resolução inválido %dx%d%s - resolução de feed deve ser "
-"positiva (RFC 2911 seção 4.1.15)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad text value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.1)."
-msgstr ""
-"\"%s\": Valor de texto inválido \"%s\" - sequência UTF-8 inválida (RFC 2911 "
-"seção 4.1.1)."
-
-#, c-format
-msgid "\"%s\": Bad text value \"%s\" - bad length %d (RFC 2911 section 4.1.1)."
-msgstr ""
-"\"%s\": Valor de texto inválido \"%s\" - comprimento inválido %d (RFC 2911 "
-"seção 4.1.1)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad uriScheme value \"%s\" - bad characters (RFC 2911 section 4.1.6)."
-msgstr ""
-"\"%s\": Valor de uriScheme inválido \"%s\" - caracteres inválidos (RFC 2911 "
-"seção 4.1.6)."
-
-#, c-format
-msgid ""
-"\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 2911 section 4.1.6)."
-msgstr ""
-"\"%s\": Valor de uriScheme inválido \"%s\" - comprimento inválido %d (RFC "
-"2911 seção 4.1.6)."
-
-#, c-format
-msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
-msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
-
-#, c-format
-msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
-msgstr "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
-
-#, c-format
-msgid "%s accepting requests since %s"
-msgstr "%s está aceitando requisições desde %s"
-
-#, c-format
-msgid "%s cannot be changed."
-msgstr "%s não pode ser alterada."
-
-#, c-format
-msgid "%s is not implemented by the CUPS version of lpc."
-msgstr "%s não está implementada pela versão CUPS do lpc."
-
-#, c-format
-msgid "%s is not ready"
-msgstr "%s não está pronta"
-
-#, c-format
-msgid "%s is ready"
-msgstr "%s está pronta"
-
-#, c-format
-msgid "%s is ready and printing"
-msgstr "%s está pronta e imprimindo"
-
-#, c-format
-msgid "%s job-id user title copies options [file]"
-msgstr "%s job-id usuário título cópia opções [arquivo]"
-
-#, c-format
-msgid "%s not accepting requests since %s -"
-msgstr "%s não está aceitando requisições desde %s -"
-
-#, c-format
-msgid "%s not supported."
-msgstr "%s não é suportada."
-
-#, c-format
-msgid "%s/%s accepting requests since %s"
-msgstr "%s/%s está aceitando requisições desde %s"
-
-#, c-format
-msgid "%s/%s not accepting requests since %s -"
-msgstr "%s/%s não está aceitando requisições desde %s -"
-
-#, c-format
-msgid "%s: %-33.33s [job %d localhost]"
-msgstr "%s: %-33.33s [trabalho %d localhost]"
-
-#. TRANSLATORS: Message is "subject: error"
-#, c-format
-msgid "%s: %s"
-msgstr "%s: %s"
-
-#, c-format
-msgid "%s: %s failed: %s"
-msgstr "%s: %s falhou: %s"
-
-#, c-format
-msgid "%s: Bad version %s for \"-V\"."
-msgstr "%s: Versão inválida %s para \"-V\"."
-
-#, c-format
-msgid "%s: Don't know what to do."
-msgstr "%s: Não sei o que fazer."
-
-#, c-format
-msgid ""
-"%s: Error - %s environment variable names non-existent destination \"%s\"."
-msgstr ""
-"%s: Erro - A variável de ambiente %s contém destino inexistente \"%s\"."
-
-#, c-format
-msgid "%s: Error - add '/version=1.1' to server name."
-msgstr "%s: Erro - adicione '/version=1.1' ao nome do servidor."
-
-#, c-format
-msgid "%s: Error - bad job ID."
-msgstr "%s: Erro - ID de trabalho inválido."
-
-#, c-format
-msgid "%s: Error - cannot print files and alter jobs simultaneously."
-msgstr ""
-"%s: Erro - não é possível imprimir arquivos e alterar trabalhos "
-"simultaneamente."
-
-#, c-format
-msgid "%s: Error - cannot print from stdin if files or a job ID are provided."
-msgstr ""
-"%s: Erro - não é possível imprimir de stdin se os arquivos ou um ID de "
-"trabalho forem fornecidos."
-
-#, c-format
-msgid "%s: Error - expected character set after \"-S\" option."
-msgstr "%s: Erro - esperava uma codificação de caracteres após a opção \"-S\"."
-
-#, c-format
-msgid "%s: Error - expected content type after \"-T\" option."
-msgstr "%s: Erro - esperava um tipo de conteúdo após a opção \"-T\"."
-
-#, c-format
-msgid "%s: Error - expected copies after \"-#\" option."
-msgstr "%s: Erro - esperava cópias após a opção \"-#\"."
-
-#, c-format
-msgid "%s: Error - expected copies after \"-n\" option."
-msgstr "%s: Erro - esperava cópias após a opção \"-n\"."
-
-#, c-format
-msgid "%s: Error - expected destination after \"-P\" option."
-msgstr "%s: Erro - esperava um destino após a opção \"-P\"."
-
-#, c-format
-msgid "%s: Error - expected destination after \"-d\" option."
-msgstr "%s: Erro - esperava um destino após a opção \"-d\"."
-
-#, c-format
-msgid "%s: Error - expected form after \"-f\" option."
-msgstr "%s: Erro - esperava um formulário após a opção \"-f\"."
-
-#, c-format
-msgid "%s: Error - expected hold name after \"-H\" option."
-msgstr "%s: Erro - esperava um nome para segurar após a opção \"-H\"."
-
-#, c-format
-msgid "%s: Error - expected hostname after \"-H\" option."
-msgstr "%s: Erro - esperava o nome da máquina após a opção \"-H\"."
-
-#, c-format
-msgid "%s: Error - expected hostname after \"-h\" option."
-msgstr "%s: Erro - esperava o nome da máquina após a opção \"-h\"."
-
-#, c-format
-msgid "%s: Error - expected mode list after \"-y\" option."
-msgstr "%s: Erro - esperava uma lista de modos após a opção \"-y\"."
-
-#, c-format
-msgid "%s: Error - expected name after \"-%c\" option."
-msgstr "%s: Erro - esperava um nome após a opção \"-%c\"."
-
-#, c-format
-msgid "%s: Error - expected option=value after \"-o\" option."
-msgstr "%s: Erro - esperava opção=valor após a opção \"-o\"."
-
-#, c-format
-msgid "%s: Error - expected page list after \"-P\" option."
-msgstr "%s: Erro - esperava uma lista de página após a opção \"-P\"."
-
-#, c-format
-msgid "%s: Error - expected priority after \"-%c\" option."
-msgstr "%s: Erro - esperava uma prioridade após a opção \"-%c\"."
-
-#, c-format
-msgid "%s: Error - expected reason text after \"-r\" option."
-msgstr "%s: Erro - esperava um texto com motivo após a opção \"-r\"."
-
-#, c-format
-msgid "%s: Error - expected title after \"-t\" option."
-msgstr "%s: Erro - esperava um título após a opção \"-t\"."
-
-#, c-format
-msgid "%s: Error - expected username after \"-U\" option."
-msgstr "%s: Erro - esperava um nome de usuário após a opção \"-U\"."
-
-#, c-format
-msgid "%s: Error - expected username after \"-u\" option."
-msgstr "%s: Erro - esperava um nome de usuário após a opção \"-u\"."
-
-#, c-format
-msgid "%s: Error - expected value after \"-%c\" option."
-msgstr "%s: Erro - esperava um valor após a opção \"-%c\"."
-
-#, c-format
-msgid ""
-"%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" "
-"option."
-msgstr ""
-"%s: Erro - precisa de \"completed\", \"not-completed\" ou \"all\" após a "
-"opção \"-W\"."
-
-#, c-format
-msgid "%s: Error - no default destination available."
-msgstr "%s: Erro - nenhum destino padrão disponível."
-
-#, c-format
-msgid "%s: Error - priority must be between 1 and 100."
-msgstr "%s: Erro - prioridade deve estar entre 1 e 100."
-
-#, c-format
-msgid "%s: Error - scheduler not responding."
-msgstr "%s: Erro - agendador não está respondendo."
-
-#, c-format
-msgid "%s: Error - too many files - \"%s\"."
-msgstr "%s: Erro - arquivos demais - \"%s\"."
-
-#, c-format
-msgid "%s: Error - unable to access \"%s\" - %s"
-msgstr "%s: Erro - não foi possível acessar \"%s\" - %s"
-
-#, c-format
-msgid "%s: Error - unable to queue from stdin - %s."
-msgstr "%s: Erro - não foi possível enfilerar de stdin - %s."
-
-#, c-format
-msgid "%s: Error - unknown destination \"%s\"."
-msgstr "%s: Erro - destino desconhecido \"%s\"."
-
-#, c-format
-msgid "%s: Error - unknown destination \"%s/%s\"."
-msgstr "%s: Erro - destino desconhecido \"%s/%s\"."
-
-#, c-format
-msgid "%s: Error - unknown option \"%c\"."
-msgstr "%s: Erro - opção desconhecida \"%c\"."
-
-#, c-format
-msgid "%s: Error - unknown option \"%s\"."
-msgstr "%s: Erro - opção desconhecida \"%s\"."
-
-#, c-format
-msgid "%s: Expected job ID after \"-i\" option."
-msgstr "%s: Esperava ID do trabalho após a \"-i\"."
-
-#, c-format
-msgid "%s: Invalid destination name in list \"%s\"."
-msgstr "%s: Nome de destino inválido na lista \"%s\"."
-
-#, c-format
-msgid "%s: Invalid filter string \"%s\"."
-msgstr "%s: String de filtro inválida \"%s\"."
-
-#, c-format
-msgid "%s: Missing timeout for \"-T\"."
-msgstr "%s: Faltando tempo de espera para \"-T\"."
-
-#, c-format
-msgid "%s: Missing version for \"-V\"."
-msgstr "%s: Faltando versão para \"-V\"."
-
-#, c-format
-msgid "%s: Need job ID (\"-i jobid\") before \"-H restart\"."
-msgstr "%s: Precisa de ID de trabalho (\"-i jobid\") antes de \"-H restart\"."
-
-#, c-format
-msgid "%s: No filter to convert from %s/%s to %s/%s."
-msgstr "%s: Nenhum filtro para converter de %s/%s para %s/%s."
-
-#, c-format
-msgid "%s: Operation failed: %s"
-msgstr "%s: Operação falhou: %s"
-
-#, c-format
-msgid "%s: Sorry, no encryption support."
-msgstr "%s: Desculpa, não há suporte a criptografia."
-
-#, c-format
-msgid "%s: Unable to connect to server."
-msgstr "%s: Não foi possível conectar ao servidor."
-
-#, c-format
-msgid "%s: Unable to contact server."
-msgstr "%s: Não foi possível contactar o servidor."
-
-#, c-format
-msgid "%s: Unable to determine MIME type of \"%s\"."
-msgstr "%s: Não foi possível determinar o tipo MIME de \"%s\"."
-
-#, c-format
-msgid "%s: Unable to open %s: %s"
-msgstr "%s: Não foi possível abrir %s: %s"
-
-#, c-format
-msgid "%s: Unable to open PPD file: %s on line %d."
-msgstr "%s: Não foi possível abrir o arquivo PPD: %s na linha %d."
-
-#, c-format
-msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"."
-msgstr "%s: Não foi possível ler o banco de dados MIME de \"%s\" ou \"%s\"."
-
-#, c-format
-msgid "%s: Unknown destination \"%s\"."
-msgstr "%s: Destino desconhecido \"%s\"."
-
-#, c-format
-msgid "%s: Unknown destination MIME type %s/%s."
-msgstr "%s: Tipo de MIME de destino desconhecido %s/%s."
-
-#, c-format
-msgid "%s: Unknown option \"%c\"."
-msgstr "%s: Opção desconhecida \"%c\"."
-
-#, c-format
-msgid "%s: Unknown option \"%s\"."
-msgstr "%s: Opção desconhecida \"%s\"."
-
-#, c-format
-msgid "%s: Unknown option \"-%c\"."
-msgstr "%s: Opção desconhecida \"-%c\"."
-
-#, c-format
-msgid "%s: Unknown source MIME type %s/%s."
-msgstr "%s: Tipo MIME de origem desconhecida %s/%s."
-
-#, c-format
-msgid ""
-"%s: Warning - \"%c\" format modifier not supported - output may not be "
-"correct."
-msgstr ""
-"%s: Aviso - modificador de formato \"%c\" não é suportado - a saída pode não "
-"ficar correta."
-
-#, c-format
-msgid "%s: Warning - character set option ignored."
-msgstr "%s: Aviso - opção de conjunto de caracteres ignorada."
-
-#, c-format
-msgid "%s: Warning - content type option ignored."
-msgstr "%s: Aviso - opção de tipo de conteúdo ignorada."
-
-#, c-format
-msgid "%s: Warning - form option ignored."
-msgstr "%s: Aviso - opção de formulário ignorada."
-
-#, c-format
-msgid "%s: Warning - mode option ignored."
-msgstr "%s: Aviso - opção modo ignorada."
-
-msgid "-1"
-msgstr "-1"
-
-msgid "-10"
-msgstr "-10"
-
-msgid "-100"
-msgstr "-100"
-
-msgid "-105"
-msgstr "-105"
-
-msgid "-11"
-msgstr "-11"
-
-msgid "-110"
-msgstr "-110"
-
-msgid "-115"
-msgstr "-115"
-
-msgid "-12"
-msgstr "-12"
-
-msgid "-120"
-msgstr "-120"
-
-msgid "-13"
-msgstr "-13"
-
-msgid "-14"
-msgstr "-14"
-
-msgid "-15"
-msgstr "-15"
-
-msgid "-2"
-msgstr "-2"
-
-msgid "-20"
-msgstr "-20"
-
-msgid "-25"
-msgstr "-25"
-
-msgid "-3"
-msgstr "-3"
-
-msgid "-30"
-msgstr "-30"
-
-msgid "-35"
-msgstr "-35"
-
-msgid "-4"
-msgstr "-4"
-
-msgid "-40"
-msgstr "-40"
-
-msgid "-45"
-msgstr "-45"
-
-msgid "-5"
-msgstr "-5"
-
-msgid "-50"
-msgstr "-50"
-
-msgid "-55"
-msgstr "-55"
-
-msgid "-6"
-msgstr "-6"
-
-msgid "-60"
-msgstr "-60"
-
-msgid "-65"
-msgstr "-65"
-
-msgid "-7"
-msgstr "-7"
-
-msgid "-70"
-msgstr "-70"
-
-msgid "-75"
-msgstr "-75"
-
-msgid "-8"
-msgstr "-8"
-
-msgid "-80"
-msgstr "-80"
-
-msgid "-85"
-msgstr "-85"
-
-msgid "-9"
-msgstr "-9"
-
-msgid "-90"
-msgstr "-90"
-
-msgid "-95"
-msgstr "-95"
-
-msgid "0"
-msgstr "0"
-
-msgid "1"
-msgstr "1"
-
-msgid "1 inch/sec."
-msgstr "1 pol/seg."
-
-msgid "1.25x0.25\""
-msgstr "1.25x0.25\""
-
-msgid "1.25x2.25\""
-msgstr "1.25x2.25\""
-
-msgid "1.5 inch/sec."
-msgstr "1.5 pol/seg."
-
-msgid "1.50x0.25\""
-msgstr "1.50x0.25\""
-
-msgid "1.50x0.50\""
-msgstr "1.50x0.50\""
-
-msgid "1.50x1.00\""
-msgstr "1.50x1.00\""
-
-msgid "1.50x2.00\""
-msgstr "1.50x2.00\""
-
-msgid "10"
-msgstr "10"
-
-msgid "10 inches/sec."
-msgstr "10 pol/seg."
-
-msgid "10 x 11"
-msgstr "10 x 11"
-
-msgid "10 x 13"
-msgstr "10 x 13"
-
-msgid "10 x 14"
-msgstr "10 x 14"
-
-msgid "100"
-msgstr "100"
-
-msgid "100 mm/sec."
-msgstr "100 mm/s"
-
-msgid "105"
-msgstr "105"
-
-msgid "11"
-msgstr "11"
-
-msgid "11 inches/sec."
-msgstr "11 pol/s"
-
-msgid "110"
-msgstr "110"
-
-msgid "115"
-msgstr "115"
-
-msgid "12"
-msgstr "12"
-
-msgid "12 inches/sec."
-msgstr "12 pol/s"
-
-msgid "12 x 11"
-msgstr "12 x 11"
-
-msgid "120"
-msgstr "120"
-
-msgid "120 mm/sec."
-msgstr "120 mm/s"
-
-msgid "120x60dpi"
-msgstr "120x60dpi"
-
-msgid "120x72dpi"
-msgstr "120x72dpi"
-
-msgid "13"
-msgstr "13"
-
-msgid "136dpi"
-msgstr "136dpi"
-
-msgid "14"
-msgstr "14"
-
-msgid "15"
-msgstr "15"
-
-msgid "15 mm/sec."
-msgstr "15 mm/s"
-
-msgid "15 x 11"
-msgstr "15 x 11"
-
-msgid "150 mm/sec."
-msgstr "150 mm/s"
-
-msgid "150dpi"
-msgstr "150dpi"
-
-msgid "16"
-msgstr "16"
-
-msgid "17"
-msgstr "17"
-
-msgid "18"
-msgstr "18"
-
-msgid "180dpi"
-msgstr "180dpi"
-
-msgid "19"
-msgstr "19"
-
-msgid "2"
-msgstr "2"
-
-msgid "2 inches/sec."
-msgstr "2 pol/s"
-
-msgid "2-Sided Printing"
-msgstr "Frente e Verso"
-
-msgid "2.00x0.37\""
-msgstr "2.00x0.37\""
-
-msgid "2.00x0.50\""
-msgstr "2.00x0.50\""
-
-msgid "2.00x1.00\""
-msgstr "2.00x1.00\""
-
-msgid "2.00x1.25\""
-msgstr "2.00x1.25\""
-
-msgid "2.00x2.00\""
-msgstr "2.00x2.00\""
-
-msgid "2.00x3.00\""
-msgstr "2.00x3.00\""
-
-msgid "2.00x4.00\""
-msgstr "2.00x4.00\""
-
-msgid "2.00x5.50\""
-msgstr "2.00x5.50\""
-
-msgid "2.25x0.50\""
-msgstr "2.25x0.50\""
-
-msgid "2.25x1.25\""
-msgstr "2.25x1.25\""
-
-msgid "2.25x4.00\""
-msgstr "2.25x4.00\""
-
-msgid "2.25x5.50\""
-msgstr "2.25x5.50\""
-
-msgid "2.38x5.50\""
-msgstr "2.38x5.50\""
-
-msgid "2.5 inches/sec."
-msgstr "2.5 pol/s"
-
-msgid "2.50x1.00\""
-msgstr "2.50x1.00\""
-
-msgid "2.50x2.00\""
-msgstr "2.50x2.00\""
-
-msgid "2.75x1.25\""
-msgstr "2.75x1.25\""
-
-msgid "2.9 x 1\""
-msgstr "2.9 x 1\""
-
-msgid "20"
-msgstr "20"
-
-msgid "20 mm/sec."
-msgstr "20 mm/s"
-
-msgid "200 mm/sec."
-msgstr "200 mm/s"
-
-msgid "203dpi"
-msgstr "203dpi"
-
-msgid "21"
-msgstr "21"
-
-msgid "22"
-msgstr "22"
-
-msgid "23"
-msgstr "23"
-
-msgid "24"
-msgstr "24"
-
-msgid "24-Pin Series"
-msgstr "Séries de 24 agulhas"
-
-msgid "240x72dpi"
-msgstr "240x72dpi"
-
-msgid "25"
-msgstr "25"
-
-msgid "250 mm/sec."
-msgstr "250 mm/s"
-
-msgid "26"
-msgstr "26"
-
-msgid "27"
-msgstr "27"
-
-msgid "28"
-msgstr "28"
-
-msgid "29"
-msgstr "29"
-
-msgid "3"
-msgstr "3"
-
-msgid "3 inches/sec."
-msgstr "3 pol/s"
-
-msgid "3 x 5"
-msgstr "3 x 5"
-
-msgid "3.00x1.00\""
-msgstr "3.00x1.00\""
-
-msgid "3.00x1.25\""
-msgstr "3.00x1.25\""
-
-msgid "3.00x2.00\""
-msgstr "3.00x2.00\""
-
-msgid "3.00x3.00\""
-msgstr "3.00x3.00\""
-
-msgid "3.00x5.00\""
-msgstr "3.00x5.00\""
-
-msgid "3.25x2.00\""
-msgstr "3.25x2.00\""
-
-msgid "3.25x5.00\""
-msgstr "3.25x5.00\""
-
-msgid "3.25x5.50\""
-msgstr "3.25x5.50\""
-
-msgid "3.25x5.83\""
-msgstr "3.25x5.83\""
-
-msgid "3.25x7.83\""
-msgstr "3.25x7.83\""
-
-msgid "3.5 x 5"
-msgstr "3.5 x 5"
-
-msgid "3.5\" Disk"
-msgstr "Disco de 3.5\""
-
-msgid "3.50x1.00\""
-msgstr "3.50x1.00\""
-
-msgid "30"
-msgstr "30"
-
-msgid "30 mm/sec."
-msgstr "30 mm/s"
-
-msgid "300 mm/sec."
-msgstr "300 mm/s"
-
-msgid "300dpi"
-msgstr "300dpi"
-
-msgid "35"
-msgstr "35"
-
-msgid "360dpi"
-msgstr "360dpi"
-
-msgid "360x180dpi"
-msgstr "360x180dpi"
-
-msgid "4"
-msgstr "4"
-
-msgid "4 inches/sec."
-msgstr "4 pol/s"
-
-msgid "4.00x1.00\""
-msgstr "4.00x1.00\""
-
-msgid "4.00x13.00\""
-msgstr "4.00x13.00\""
-
-msgid "4.00x2.00\""
-msgstr "4.00x2.00\""
-
-msgid "4.00x2.50\""
-msgstr "4.00x2.50\""
-
-msgid "4.00x3.00\""
-msgstr "4.00x3.00\""
-
-msgid "4.00x4.00\""
-msgstr "4.00x4.00\""
-
-msgid "4.00x5.00\""
-msgstr "4.00x5.00\""
-
-msgid "4.00x6.00\""
-msgstr "4.00x6.00\""
-
-msgid "4.00x6.50\""
-msgstr "4.00x6.50\""
-
-msgid "40"
-msgstr "40"
-
-msgid "40 mm/sec."
-msgstr "40 mm/s"
-
-msgid "45"
-msgstr "45"
-
-msgid "5"
-msgstr "5"
-
-msgid "5 inches/sec."
-msgstr "5 pol/s"
-
-msgid "5 x 7"
-msgstr "5 x 7"
-
-msgid "50"
-msgstr "50"
-
-msgid "55"
-msgstr "55"
-
-msgid "6"
-msgstr "6"
-
-msgid "6 inches/sec."
-msgstr "6 pol/s"
-
-msgid "6.00x1.00\""
-msgstr "6.00x1.00\""
-
-msgid "6.00x2.00\""
-msgstr "6.00x2.00\""
-
-msgid "6.00x3.00\""
-msgstr "6.00x3.00\""
-
-msgid "6.00x4.00\""
-msgstr "6.00x4.00\""
-
-msgid "6.00x5.00\""
-msgstr "6.00x5.00\""
-
-msgid "6.00x6.00\""
-msgstr "6.00x6.00\""
-
-msgid "6.00x6.50\""
-msgstr "6.00x6.50\""
-
-msgid "60"
-msgstr "60"
-
-msgid "60 mm/sec."
-msgstr "60 mm/s"
-
-msgid "600dpi"
-msgstr "600dpi"
-
-msgid "60dpi"
-msgstr "60dpi"
-
-msgid "60x72dpi"
-msgstr "60x72dpi"
-
-msgid "65"
-msgstr "65"
-
-msgid "7"
-msgstr "7"
-
-msgid "7 inches/sec."
-msgstr "7 pol/s"
-
-msgid "7 x 9"
-msgstr "7 x 9"
-
-msgid "70"
-msgstr "70"
-
-msgid "720dpi"
-msgstr "720dpi"
-
-msgid "75"
-msgstr "75"
-
-msgid "8"
-msgstr "8"
-
-msgid "8 inches/sec."
-msgstr "8 pol/s"
-
-msgid "8 x 10"
-msgstr "8 x 10"
-
-msgid "8.00x1.00\""
-msgstr "8.00x1.00\""
-
-msgid "8.00x2.00\""
-msgstr "8.00x2.00\""
-
-msgid "8.00x3.00\""
-msgstr "8.00x3.00\""
-
-msgid "8.00x4.00\""
-msgstr "8.00x4.00\""
-
-msgid "8.00x5.00\""
-msgstr "8.00x5.00\""
-
-msgid "8.00x6.00\""
-msgstr "8.00x6.00\""
-
-msgid "8.00x6.50\""
-msgstr "8.00x6.50\""
-
-msgid "80"
-msgstr "80"
-
-msgid "80 mm/sec."
-msgstr "80 mm/s"
-
-msgid "85"
-msgstr "85"
-
-msgid "9"
-msgstr "9"
-
-msgid "9 inches/sec."
-msgstr "9 pol/s"
-
-msgid "9 x 11"
-msgstr "9 x 11"
-
-msgid "9 x 12"
-msgstr "9 x 12"
-
-msgid "9-Pin Series"
-msgstr "Série de 9 agulhas"
-
-msgid "90"
-msgstr "90"
-
-msgid "95"
-msgstr "95"
-
-msgid "?Invalid help command unknown."
-msgstr "?Comando de ajuda inválido desconhecido."
-
-msgid "A Samba password is required to export printer drivers"
-msgstr "Uma senha do Samba é necessária para exportar drivers de impressora"
-
-msgid "A Samba username is required to export printer drivers"
-msgstr ""
-"Um nome de usuário do Samba é necessário para exportar drivers de impressora"
-
-#, c-format
-msgid "A class named \"%s\" already exists."
-msgstr "Uma classe chamada \"%s\" já existe."
-
-#, c-format
-msgid "A printer named \"%s\" already exists."
-msgstr "Uma impressora chamada \"%s\" já existe."
-
-msgid "A0"
-msgstr "A0"
-
-msgid "A0 Long Edge"
-msgstr "A0 borda maior"
-
-msgid "A1"
-msgstr "A1"
-
-msgid "A1 Long Edge"
-msgstr "A1 borda maior"
-
-msgid "A10"
-msgstr "A10"
-
-msgid "A2"
-msgstr "A2"
-
-msgid "A2 Long Edge"
-msgstr "A2 borda maior"
-
-msgid "A3"
-msgstr "A3"
-
-msgid "A3 Long Edge"
-msgstr "A3 borda maior"
-
-msgid "A3 Oversize"
-msgstr "A3 grande"
-
-msgid "A3 Oversize Long Edge"
-msgstr "A3 borda muito maior"
-
-msgid "A4"
-msgstr "A4"
-
-msgid "A4 Long Edge"
-msgstr "A4 borda maior"
-
-msgid "A4 Oversize"
-msgstr "A4 grande"
-
-msgid "A4 Small"
-msgstr "A4 pequeno"
-
-msgid "A5"
-msgstr "A5"
-
-msgid "A5 Long Edge"
-msgstr "A5 borda maior"
-
-msgid "A5 Oversize"
-msgstr "A5 grande"
-
-msgid "A6"
-msgstr "A6"
-
-msgid "A6 Long Edge"
-msgstr "A6 borda maior"
-
-msgid "A7"
-msgstr "A7"
-
-msgid "A8"
-msgstr "A8"
-
-msgid "A9"
-msgstr "A9"
-
-msgid "ANSI A"
-msgstr "ANSI A"
-
-msgid "ANSI B"
-msgstr "ANSI B"
-
-msgid "ANSI C"
-msgstr "ANSI C"
-
-msgid "ANSI D"
-msgstr "ANSI D"
-
-msgid "ANSI E"
-msgstr "ANSI E"
-
-msgid "ARCH C"
-msgstr "ARCH C"
-
-msgid "ARCH C Long Edge"
-msgstr "ARCH C borda maior"
-
-msgid "ARCH D"
-msgstr "ARCH D"
-
-msgid "ARCH D Long Edge"
-msgstr "ARCH D borda maior"
-
-msgid "ARCH E"
-msgstr "ARCH E"
-
-msgid "ARCH E Long Edge"
-msgstr "ARCH E borda maior"
-
-msgid "Accept Jobs"
-msgstr "Aceitando trabalhos"
-
-msgid "Accepted"
-msgstr "Aceitou"
-
-msgid "Add Class"
-msgstr "Adicionar classe"
-
-msgid "Add Printer"
-msgstr "Adicionar impressora"
-
-msgid "Add RSS Subscription"
-msgstr "Adicionar inscrição RSS"
-
-msgid "Address"
-msgstr "Endereço"
-
-msgid "Administration"
-msgstr "Administração"
-
-msgid "Always"
-msgstr "Sempre"
-
-msgid "AppSocket/HP JetDirect"
-msgstr "AppSocket/HP JetDirect"
-
-msgid "Applicator"
-msgstr "Aplicador"
-
-#, c-format
-msgid "Attempt to set %s printer-state to bad value %d."
-msgstr ""
-"Tentativa de definir o estado da impressora %s para o valor inválido %d."
-
-#, c-format
-msgid "Attribute groups are out of order (%x < %x)."
-msgstr "Grupos de atributos estão fora de ordem (%x < %x)."
-
-msgid "B0"
-msgstr "B0"
-
-msgid "B1"
-msgstr "B1"
-
-msgid "B10"
-msgstr "B10"
-
-msgid "B2"
-msgstr "B2"
-
-msgid "B3"
-msgstr "B3"
-
-msgid "B4"
-msgstr "B4"
-
-msgid "B5"
-msgstr "B5"
-
-msgid "B5 Oversize"
-msgstr "B5 grande"
-
-msgid "B6"
-msgstr "B6"
-
-msgid "B7"
-msgstr "B7"
-
-msgid "B8"
-msgstr "B8"
-
-msgid "B9"
-msgstr "B9"
-
-#, c-format
-msgid "Bad 'document-format' value \"%s\"."
-msgstr "Valor de \"document-format\" inválido \"%s\"."
-
-msgid "Bad NULL dests pointer"
-msgstr "Ponteiro de destinatário NULO inválido"
-
-msgid "Bad OpenGroup"
-msgstr "OpenGroup inválido"
-
-msgid "Bad OpenUI/JCLOpenUI"
-msgstr "OpenUI/JCLOpenUI inválido"
-
-msgid "Bad OrderDependency"
-msgstr "OrderDependency inválido"
-
-msgid "Bad PPD cache file."
-msgstr "Arquivo de cache de PPD inválido."
-
-msgid "Bad Request"
-msgstr "Requisição inválida"
-
-msgid "Bad SNMP version number"
-msgstr "Número de versão SNMP inválido"
-
-msgid "Bad UIConstraints"
-msgstr "UIConstraints inválido"
-
-#, c-format
-msgid "Bad copies value %d."
-msgstr "Valor de cópias inválido %d."
-
-msgid "Bad custom parameter"
-msgstr "Parâmetro personalizado inválido"
-
-#, c-format
-msgid "Bad device-uri \"%s\"."
-msgstr "device-uri inválido \"%s\"."
-
-#, c-format
-msgid "Bad device-uri scheme \"%s\"."
-msgstr "Esquema device-uri inválido \"%s\"."
-
-#, c-format
-msgid "Bad document-format \"%s\"."
-msgstr "document-format inválido \"%s\"."
-
-#, c-format
-msgid "Bad document-format-default \"%s\"."
-msgstr "document-format-default inválido \"%s\"."
-
-msgid "Bad filename buffer"
-msgstr "Buffer de nome de arquivo inválido"
-
-#, c-format
-msgid "Bad job-name value: %s"
-msgstr "Valor de job-name inválido: %s"
-
-msgid "Bad job-name value: Wrong type or count."
-msgstr "Valor de job-name inválido: Quantidade ou tipo inválido."
-
-msgid "Bad job-priority value."
-msgstr "Valor job-priority inválido."
-
-#, c-format
-msgid "Bad job-sheets value \"%s\"."
-msgstr "Valor de job-sheets inválido \"%s\"."
-
-msgid "Bad job-sheets value type."
-msgstr "Tipo de valor de job-sheets inválido."
-
-msgid "Bad job-state value."
-msgstr "Valor de job-state inválido."
-
-#, c-format
-msgid "Bad job-uri \"%s\"."
-msgstr "job-uri inválido \"%s\"."
-
-#, c-format
-msgid "Bad notify-pull-method \"%s\"."
-msgstr "notify-pull-method inválido \"%s\"."
-
-#, c-format
-msgid "Bad notify-recipient-uri \"%s\"."
-msgstr "notify-recipient-uri inválido \"%s\"."
-
-#, c-format
-msgid "Bad number-up value %d."
-msgstr "Valor de number-up inválido %d."
-
-#, c-format
-msgid "Bad option + choice on line %d."
-msgstr "Opção + escolha inválidas na linha %d."
-
-#, c-format
-msgid "Bad page-ranges values %d-%d."
-msgstr "Valor de page-ranges inválido %d-%d."
-
-#, c-format
-msgid "Bad port-monitor \"%s\"."
-msgstr "port-monitor inválido \"%s\"."
-
-msgid "Bad printer URI."
-msgstr "URI de impressora inválido."
-
-#, c-format
-msgid "Bad printer-state value %d."
-msgstr "Valor de printer-state inválido %d."
-
-#, c-format
-msgid "Bad request ID %d."
-msgstr "ID da requisição inválido %d."
-
-#, c-format
-msgid "Bad request version number %d.%d."
-msgstr "Número da versão de requisição inválido %d.%d."
-
-msgid "Bad subscription ID"
-msgstr "ID de inscrição inválido"
-
-msgid "Bad value string"
-msgstr "String de valor inválido"
-
-msgid "Banners"
-msgstr "Banners"
-
-msgid "Bond Paper"
-msgstr "Papel autocolante"
-
-#, c-format
-msgid "Boolean expected for waiteof option \"%s\"."
-msgstr "Esperava booleano para opção waiteof \"%s\"."
-
-msgid "Buffer overflow detected, aborting."
-msgstr "Estouro de pilha do buffer detectado, abortando."
-
-msgid "CMYK"
-msgstr "CMYK"
-
-msgid "CPCL Label Printer"
-msgstr "Impressora de etiqueta CPCL"
-
-msgid "Cancel RSS Subscription"
-msgstr "Cancelar inscrição RSS"
-
-msgid "Canceling print job."
-msgstr "Cancelando trabalho de impressão."
-
-msgid "Cannot share a remote Kerberized printer."
-msgstr "Não foi possível compartilhar uma impressora remota via Kerberos."
-
-msgid "Cassette"
-msgstr "Cassette"
-
-msgid "Change Settings"
-msgstr "Alterar configurações"
-
-#, c-format
-msgid "Character set \"%s\" not supported."
-msgstr "Conjunto de caracteres \"%s\" não é suportado."
-
-msgid "Classes"
-msgstr "Classes"
-
-msgid "Clean Print Heads"
-msgstr "Limpar cabeça de impressão"
-
-msgid "Close-Job doesn't support the job-uri attribute."
-msgstr "Close-Job não suporta o atributo job-uri."
-
-msgid "Color"
-msgstr "Cor"
-
-msgid "Color Mode"
-msgstr "Modo colorido"
-
-msgid ""
-"Commands may be abbreviated. Commands are:\n"
-"\n"
-"exit help quit status ?"
-msgstr ""
-"Comandos podem ser abreviados. Os comandos são:\n"
-"\n"
-"exit help quit status ?"
-
-msgid "Community name uses indefinite length"
-msgstr "Nome da comunidade usa comprimento indefinido"
-
-msgid "Connected to printer."
-msgstr "Conectado à impressora."
-
-msgid "Connecting to printer."
-msgstr "Conectando à impressora."
-
-msgid "Continue"
-msgstr "Continuar"
-
-msgid "Continuous"
-msgstr "Contínuo"
-
-msgid "Control file sent successfully."
-msgstr "Arquivo de controle enviado com sucesso."
-
-msgid "Copying print data."
-msgstr "Copiando dados de impressão."
-
-msgid "Created"
-msgstr "Criada"
-
-msgid "Custom"
-msgstr "Personalizar"
-
-msgid "CustominCutInterval"
-msgstr "CustominCutInterval"
-
-msgid "CustominTearInterval"
-msgstr "CustominTearInterval"
-
-msgid "Cut"
-msgstr "Cortar"
-
-msgid "Cutter"
-msgstr "Cortador"
-
-msgid "Dark"
-msgstr "Escuro"
-
-msgid "Darkness"
-msgstr "Escuridão"
-
-msgid "Data file sent successfully."
-msgstr "Arquivo de dados enviado com sucesso."
-
-msgid "Delete Class"
-msgstr "Excluir classe"
-
-msgid "Delete Printer"
-msgstr "Excluir impressora"
-
-msgid "DeskJet Series"
-msgstr "DeskJet Séries"
-
-#, c-format
-msgid "Destination \"%s\" is not accepting jobs."
-msgstr "Destino \"%s\" não está aceitando trabalhos."
-
-#, c-format
-msgid ""
-"Device: uri = %s\n"
-" class = %s\n"
-" info = %s\n"
-" make-and-model = %s\n"
-" device-id = %s\n"
-" location = %s"
-msgstr ""
-"Dispositivo: uri = %s\n"
-" classe = %s\n"
-" info = %s\n"
-" marca-e-modelo = %s\n"
-" dispo-id = %s\n"
-" localização = %s"
-
-msgid "Direct Thermal Media"
-msgstr "Mídia Térmica Direta"
-
-#, c-format
-msgid "Directory \"%s\" contains a relative path."
-msgstr "Diretório \"%s\" contém um caminho relativo."
-
-#, c-format
-msgid "Directory \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
-msgstr "Diretório \"%s\" contém permissões inseguras (0%o/uid=%d/gid=%d)."
-
-#, c-format
-msgid "Directory \"%s\" is a file."
-msgstr "Diretório \"%s\" é um arquivo."
-
-#, c-format
-msgid "Directory \"%s\" not available: %s"
-msgstr "Diretório \"%s\" não está disponível: %s"
-
-#, c-format
-msgid "Directory \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
-msgstr "Permissões do diretório \"%s\" estão OK (0%o/uid=%d/gid=%d)."
-
-msgid "Disabled"
-msgstr "Desabilitado"
-
-#, c-format
-msgid "Document #%d does not exist in job #%d."
-msgstr "Documento #%d não existe no trabalho #%d."
-
-msgid "Duplexer"
-msgstr "Duplexador"
-
-msgid "Dymo"
-msgstr "Dymo"
-
-msgid "EPL1 Label Printer"
-msgstr "Impressora de etiqueta EPL1"
-
-msgid "EPL2 Label Printer"
-msgstr "Impressora de etiqueta EPL2"
-
-msgid "Edit Configuration File"
-msgstr "Editar arquivo de configuração"
-
-msgid "Empty PPD file."
-msgstr "Arquivo PPD vazio."
-
-#. TRANSLATORS: Banner/cover sheet after the print job.
-msgid "Ending Banner"
-msgstr "Banner ao final"
-
-msgid "English"
-msgstr "Inglês"
-
-msgid "Enter old password:"
-msgstr "Digite a senha antiga:"
-
-msgid "Enter password again:"
-msgstr "Digite sua senha novamente:"
-
-msgid "Enter password:"
-msgstr "Digite a senha:"
-
-msgid ""
-"Enter your username and password or the root username and password to access "
-"this page. If you are using Kerberos authentication, make sure you have a "
-"valid Kerberos ticket."
-msgstr ""
-"Digite seu nome de usuário e senha, ou do usuário root, para acessar esta "
-"página. Se você estiver usando autenticação Kerberos, certifique-se de que "
-"você tem um ticket Kerberos válido."
-
-msgid "Envelope #10 "
-msgstr "Envelope #10 "
-
-msgid "Envelope #11"
-msgstr "Envelope #11"
-
-msgid "Envelope #12"
-msgstr "Envelope #12"
-
-msgid "Envelope #14"
-msgstr "Envelope #14"
-
-msgid "Envelope #9"
-msgstr "Envelope #9"
-
-msgid "Envelope B4"
-msgstr "Envelope B4"
-
-msgid "Envelope B5"
-msgstr "Envelope B5"
-
-msgid "Envelope B6"
-msgstr "Envelope B6"
-
-msgid "Envelope C0"
-msgstr "Envelope C0"
-
-msgid "Envelope C1"
-msgstr "Envelope C1"
-
-msgid "Envelope C2"
-msgstr "Envelope C2"
-
-msgid "Envelope C3"
-msgstr "Envelope C3"
-
-msgid "Envelope C4"
-msgstr "Envelope C4"
-
-msgid "Envelope C5"
-msgstr "Envelope C5"
-
-msgid "Envelope C6"
-msgstr "Envelope C6"
-
-msgid "Envelope C65"
-msgstr "Envelope C65"
-
-msgid "Envelope C7"
-msgstr "Envelope C7"
-
-msgid "Envelope Choukei 3"
-msgstr "Envelope Choukei 3"
-
-msgid "Envelope Choukei 3 Long Edge"
-msgstr "Envelope Choukei 3 borda maior"
-
-msgid "Envelope Choukei 4"
-msgstr "Envelope Choukei 4"
-
-msgid "Envelope Choukei 4 Long Edge"
-msgstr "Envelope Choukei 4 borda maior"
-
-msgid "Envelope DL"
-msgstr "Envelope DL"
-
-msgid "Envelope Feed"
-msgstr "Alimentação de Envelope"
-
-msgid "Envelope Invite"
-msgstr "Envelope Convite"
-
-msgid "Envelope Italian"
-msgstr "Envelope Italiano"
-
-msgid "Envelope Kaku2"
-msgstr "Envelope Kaku2"
-
-msgid "Envelope Kaku2 Long Edge"
-msgstr "Envelope Kaku2 borda maior"
-
-msgid "Envelope Kaku3"
-msgstr "Envelope Kaku3"
-
-msgid "Envelope Kaku3 Long Edge"
-msgstr "Envelope Kaku3 borda maior"
-
-msgid "Envelope Monarch"
-msgstr "Envelope Monarch"
-
-msgid "Envelope PRC1 "
-msgstr "Envelope PRC1 "
-
-msgid "Envelope PRC1 Long Edge"
-msgstr "Envelope PRC1 borda maior"
-
-msgid "Envelope PRC10"
-msgstr "Envelope PRC10"
-
-msgid "Envelope PRC10 Long Edge"
-msgstr "Envelope PRC10 borda maior"
-
-msgid "Envelope PRC2"
-msgstr "Envelope PRC2"
-
-msgid "Envelope PRC2 Long Edge"
-msgstr "Envelope PRC2 borda maior"
-
-msgid "Envelope PRC3"
-msgstr "Envelope PRC3"
-
-msgid "Envelope PRC3 Long Edge"
-msgstr "Envelope PRC3 borda maior"
-
-msgid "Envelope PRC4"
-msgstr "Envelope PRC4"
-
-msgid "Envelope PRC4 Long Edge"
-msgstr "Envelope PRC4 borda maior"
-
-msgid "Envelope PRC5 Long Edge"
-msgstr "Envelope PRC5 borda maior"
-
-msgid "Envelope PRC5PRC5"
-msgstr "Envelope PRC5"
-
-msgid "Envelope PRC6"
-msgstr "Envelope PRC6"
-
-msgid "Envelope PRC6 Long Edge"
-msgstr "Envelope PRC6 borda maior"
-
-msgid "Envelope PRC7"
-msgstr "Envelope PRC7"
-
-msgid "Envelope PRC7 Long Edge"
-msgstr "Envelope PRC7 borda maior"
-
-msgid "Envelope PRC8"
-msgstr "Envelope PRC8"
-
-msgid "Envelope PRC8 Long Edge"
-msgstr "Envelope PRC8 borda maior"
-
-msgid "Envelope PRC9"
-msgstr "Envelope PRC9"
-
-msgid "Envelope PRC9 Long Edge"
-msgstr "Envelope PRC9 borda maior"
-
-msgid "Envelope Personal"
-msgstr "Envelope Pessoal"
-
-msgid "Envelope You4"
-msgstr "Envelope You4"
-
-msgid "Envelope You4 Long Edge"
-msgstr "Envelope You4 borda maior"
-
-msgid "Environment Variables:"
-msgstr "Variáveis de ambiente:"
-
-msgid "Epson"
-msgstr "Epson"
-
-msgid "Error Policy"
-msgstr "Política de erro"
-
-msgid "Error sending raster data."
-msgstr "Erro ao enviar dados de rasterização."
-
-msgid "Error: need hostname after \"-h\" option."
-msgstr "Erro: precisa de nome da máquina após a opção \"-h\"."
-
-msgid "Every 10 Labels"
-msgstr "A cada 10 etiquetas"
-
-msgid "Every 2 Labels"
-msgstr "A cada 2 etiquetas"
-
-msgid "Every 3 Labels"
-msgstr "A cada 3 etiquetas"
-
-msgid "Every 4 Labels"
-msgstr "A cada 4 etiquetas"
-
-msgid "Every 5 Labels"
-msgstr "A cada 5 etiquetas"
-
-msgid "Every 6 Labels"
-msgstr "A cada 6 etiquetas"
-
-msgid "Every 7 Labels"
-msgstr "A cada 7 etiquetas"
-
-msgid "Every 8 Labels"
-msgstr "A cada 8 etiquetas"
-
-msgid "Every 9 Labels"
-msgstr "A cada 9 etiquetas"
-
-msgid "Every Label"
-msgstr "A cada etiqueta"
-
-msgid "Executive"
-msgstr "Executivo"
-
-msgid "Expectation Failed"
-msgstr "Falhou a expectativa"
-
-msgid "Export Printers to Samba"
-msgstr "Exportar impressoras para o Samba"
-
-msgid "Expressions:"
-msgstr "Expressões:"
-
-msgid "FAIL"
-msgstr "FALHA"
-
-msgid "FanFold German"
-msgstr "FanFold German"
-
-msgid "FanFold Legal German"
-msgstr "FanFold Legal German"
-
-msgid "Fanfold US"
-msgstr "Fanfold US"
-
-#, c-format
-msgid "File \"%s\" contains a relative path."
-msgstr "Arquivo \"%s\" contém um caminho relativo."
-
-#, c-format
-msgid "File \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
-msgstr "Arquivo \"%s\" tem permissões inseguras (0%o/uid=%d/gid=%d)."
-
-#, c-format
-msgid "File \"%s\" is a directory."
-msgstr "Arquivo \"%s\" é um diretório."
-
-#, c-format
-msgid "File \"%s\" not available: %s"
-msgstr "Arquivo \"%s\" não está disponível: %s"
-
-#, c-format
-msgid "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
-msgstr "Permissões do arquivo \"%s\" estão OK (0%o/uid=%d/gid=%d)."
-
-msgid "File Folder "
-msgstr "Pasta do arquivo "
-
-#, c-format
-msgid ""
-"File device URIs have been disabled. To enable, see the FileDevice directive "
-"in \"%s/cups-files.conf\"."
-msgstr ""
-"URIs de arquivos de dispositivo foram desabilitadas. Para habilitar, veja a "
-"diretiva FileDevice em \"%s/cups-files.conf\"."
-
-#, c-format
-msgid "Finished page %d."
-msgstr "Terminou página %d."
-
-msgid "Folio"
-msgstr "Fólio"
-
-msgid "Forbidden"
-msgstr "Proibido"
-
-msgid "General"
-msgstr "Geral"
-
-msgid "Generic"
-msgstr "Genérico"
-
-msgid "Get-Response-PDU uses indefinite length"
-msgstr "Get-Response-PDU usa comprimento indefinido"
-
-msgid "Glossy Paper"
-msgstr "Papel brilhante"
-
-msgid "Got a printer-uri attribute but no job-id."
-msgstr "Atributo printer-ui obtido, mas nenhum job-id."
-
-msgid "Grayscale"
-msgstr "Escalas de cinza"
-
-msgid "HP"
-msgstr "HP"
-
-msgid "Hanging Folder"
-msgstr "Pasta suspensa"
-
-msgid "Help file not in index."
-msgstr "Arquivo de ajuda não está no índice."
-
-msgid "IPP 1setOf attribute with incompatible value tags."
-msgstr "Atributo 1setOf de IPP com tags de valor incompatível."
-
-msgid "IPP attribute has no name."
-msgstr "Atributo de IPP não tem nome."
-
-msgid "IPP attribute is not a member of the message."
-msgstr "Atributo de IPP não é um membro da mensagem."
-
-msgid "IPP begCollection value not 0 bytes."
-msgstr "Valor begCollection de IPP não contém 0 bytes."
-
-msgid "IPP boolean value not 1 byte."
-msgstr "Valor booleano de IPP não contém 1 byte."
-
-msgid "IPP date value not 11 bytes."
-msgstr "Valor de data de IPP não contém 11 bytes."
-
-msgid "IPP endCollection value not 0 bytes."
-msgstr "Valor endCollection IPP não contém 0 bytes."
-
-msgid "IPP enum value not 4 bytes."
-msgstr "Valor enum de IPP não contém 4 bytes."
-
-msgid "IPP extension tag larger than 0x7FFFFFFF."
-msgstr "Tag de extensão de IPP maior do que 0x7FFFFFFF."
-
-msgid "IPP integer value not 4 bytes."
-msgstr "Valor inteiro de IPP não contém 4 bytes."
-
-msgid "IPP language length overflows value."
-msgstr "Comprimento do idioma de IPP excede o valor."
-
-msgid "IPP language length too large."
-msgstr "Comprimento do idioma de IPP muito grande."
-
-msgid "IPP member name is not empty."
-msgstr "Nome de membro de IPP não está vazio."
-
-msgid "IPP memberName value is empty."
-msgstr "Valor de memberName de IPP está vazio."
-
-msgid "IPP memberName with no attribute."
-msgstr "memberName de IPP sem atributo algum."
-
-msgid "IPP name larger than 32767 bytes."
-msgstr "Nome de IPP maior do que 32767 bytes."
-
-msgid "IPP nameWithLanguage value less than minimum 4 bytes."
-msgstr "Valor de nameWithLanguage de IPP menor do que o mínimo de 4 bytes."
-
-msgid "IPP octetString length too large."
-msgstr "Comprimento de octetString de IPP muito grande."
-
-msgid "IPP rangeOfInteger value not 8 bytes."
-msgstr "Valor de rangeOfInteger de IPP não contém 8 bytes."
-
-msgid "IPP resolution value not 9 bytes."
-msgstr "Valor de resolução de IPP não contém 9 bytes."
-
-msgid "IPP string length overflows value."
-msgstr "Comprimento da string de IPP excede o valor."
-
-msgid "IPP textWithLanguage value less than minimum 4 bytes."
-msgstr "Valor de textWithLanguage de IPP menor do que o mínimo de 4 bytes."
-
-msgid "IPP value larger than 32767 bytes."
-msgstr "Valor de IPP maior do que 32767 bytes."
-
-msgid "ISOLatin1"
-msgstr "ISOLatin1"
-
-msgid "Illegal control character"
-msgstr "Caractere de controle é ilegal"
-
-msgid "Illegal main keyword string"
-msgstr "String ilegal de palavra-chave principal"
-
-msgid "Illegal option keyword string"
-msgstr "String ilegal de palavra-chave de opção"
-
-msgid "Illegal translation string"
-msgstr "String ilegal de tradução"
-
-msgid "Illegal whitespace character"
-msgstr "Caractere ilegal de espaço em branco"
-
-msgid "Installable Options"
-msgstr "Opções instaláveis"
-
-msgid "Installed"
-msgstr "Instalada"
-
-msgid "IntelliBar Label Printer"
-msgstr "Impressora de etiqueta IntelliBar"
-
-msgid "Intellitech"
-msgstr "Intellitech"
-
-msgid "Internal Server Error"
-msgstr "Erro interno de servidor"
-
-msgid "Internal error"
-msgstr "Erro interno"
-
-msgid "Internet Postage 2-Part"
-msgstr "Internet Postage Parte-2"
-
-msgid "Internet Postage 3-Part"
-msgstr "Internet Postage Parte-3"
-
-msgid "Internet Printing Protocol"
-msgstr "Protocolo de Impressão para Internet"
-
-msgid "Invalid media name arguments."
-msgstr "Argumentos de nome de mídia inválidos."
-
-msgid "Invalid media size."
-msgstr "Tamanho de mídia inválido."
-
-#, c-format
-msgid "Invalid printer command \"%s\"."
-msgstr "Comando de impressora \"%s\" inválido."
-
-msgid "JCL"
-msgstr "JCL"
-
-msgid "JIS B0"
-msgstr "JIS B0"
-
-msgid "JIS B1"
-msgstr "JIS B1"
-
-msgid "JIS B10"
-msgstr "JIS B10"
-
-msgid "JIS B2"
-msgstr "JIS B2"
-
-msgid "JIS B3"
-msgstr "JIS B3"
-
-msgid "JIS B4"
-msgstr "JIS B4"
-
-msgid "JIS B4 Long Edge"
-msgstr "JIS B4 borda maior"
-
-msgid "JIS B5"
-msgstr "JIS B5"
-
-msgid "JIS B5 Long Edge"
-msgstr "JIS B5 borda maior"
-
-msgid "JIS B6"
-msgstr "JIS B6"
-
-msgid "JIS B6 Long Edge"
-msgstr "JIS B6 borda maior"
-
-msgid "JIS B7"
-msgstr "JIS B7"
-
-msgid "JIS B8"
-msgstr "JIS B8"
-
-msgid "JIS B9"
-msgstr "JIS B9"
-
-#, c-format
-msgid "Job #%d cannot be restarted - no files."
-msgstr "O trabalho #%d não pode ser reiniciado - nenhum arquivo."
-
-#, c-format
-msgid "Job #%d does not exist."
-msgstr "Trabalho #%d não existe."
-
-#, c-format
-msgid "Job #%d is already aborted - can't cancel."
-msgstr "Trabalho #%d já foi abortado - não é possível cancelar."
-
-#, c-format
-msgid "Job #%d is already canceled - can't cancel."
-msgstr "Trabalho #%d já foi cancelado - não é possível cancelar."
-
-#, c-format
-msgid "Job #%d is already completed - can't cancel."
-msgstr "Trabalho #%d já concluiu - não é possível cancelar."
-
-#, c-format
-msgid "Job #%d is finished and cannot be altered."
-msgstr "Trabalho #%d já finalizou e não pode ser alterado."
-
-#, c-format
-msgid "Job #%d is not complete."
-msgstr "Trabalho #%d não concluiu."
-
-#, c-format
-msgid "Job #%d is not held for authentication."
-msgstr "Trabalho #%d não está agarrado para autenticação."
-
-#, c-format
-msgid "Job #%d is not held."
-msgstr "Trabalho #%d não está agarrado."
-
-msgid "Job Completed"
-msgstr "Trabalho concluiu"
-
-msgid "Job Created"
-msgstr "Trabalho criado"
-
-msgid "Job Options Changed"
-msgstr "Opções do trabalho alteradas"
-
-msgid "Job Stopped"
-msgstr "Trabalho parou"
-
-msgid "Job is completed and cannot be changed."
-msgstr "Trabalho está concluído e não pode ser alterado."
-
-msgid "Job operation failed"
-msgstr "Operação do trabalho falhou"
-
-msgid "Job state cannot be changed."
-msgstr "Estado do trabalho não pode ser alterado."
-
-msgid "Job subscriptions cannot be renewed."
-msgstr "Inscrições de trabalho não podem ser renovadas."
-
-msgid "Jobs"
-msgstr "Trabalhos"
-
-msgid "LPD/LPR Host or Printer"
-msgstr "Impressora ou máquina LPD/LPR"
-
-msgid "Label Printer"
-msgstr "Impressora de etiqueta"
-
-msgid "Label Top"
-msgstr "Parte superior da etiqueta"
-
-#, c-format
-msgid "Language \"%s\" not supported."
-msgstr "Idioma \"%s\" não suportado."
-
-msgid "Large Address"
-msgstr "Endereço grande"
-
-msgid "LaserJet Series PCL 4/5"
-msgstr "LaserJet Series PCL 4/5"
-
-msgid "Letter Oversize"
-msgstr "Carta grande"
-
-msgid "Letter Oversize Long Edge"
-msgstr "Carta borda muito maior"
-
-msgid "Light"
-msgstr "Leve"
-
-msgid "Line longer than the maximum allowed (255 characters)"
-msgstr "Linha maior do que o máximo permitido (255 caracteres)"
-
-msgid "List Available Printers"
-msgstr "Lista de impressoras disponíveis"
-
-msgid "Long-Edge (Portrait)"
-msgstr "Borda maior (retrato)"
-
-msgid "Looking for printer."
-msgstr "Procurando impressoras."
-
-msgid "Manual Feed"
-msgstr "Alimentação manual"
-
-msgid "Media Size"
-msgstr "Tamanho de mídia"
-
-msgid "Media Source"
-msgstr "Fonte de mídia"
-
-msgid "Media Tracking"
-msgstr "Rastreamento de mídia"
-
-msgid "Media Type"
-msgstr "Tipo de mídia"
-
-msgid "Medium"
-msgstr "Médio"
-
-msgid "Memory allocation error"
-msgstr "Erro de alocação de memória"
-
-msgid "Missing CloseGroup"
-msgstr "Faltando CloseGroup"
-
-msgid "Missing PPD-Adobe-4.x header"
-msgstr "Faltando cabeçalho PPD-Adobe-4.x"
-
-msgid "Missing asterisk in column 1"
-msgstr "Faltando asterisco na coluna 1"
-
-msgid "Missing document-number attribute."
-msgstr "Faltando atributo document-number."
-
-#, c-format
-msgid "Missing double quote on line %d."
-msgstr "Faltando aspas duplas na linha %d."
-
-msgid "Missing form variable"
-msgstr "Faltando variável de formulário"
-
-msgid "Missing last-document attribute in request."
-msgstr "Faltando atributo last-document na requisição."
-
-msgid "Missing media or media-col."
-msgstr "Faltando media ou media-col."
-
-msgid "Missing media-size in media-col."
-msgstr "Faltando media-size em media-col."
-
-msgid "Missing notify-subscription-ids attribute."
-msgstr "Faltando atributo notify-subscription-ids."
-
-msgid "Missing option keyword"
-msgstr "Faltando palavra-chave de opção"
-
-msgid "Missing requesting-user-name attribute."
-msgstr "Faltando atributo requesting-user-name."
-
-msgid "Missing required attributes."
-msgstr "Faltando atributos necessários."
-
-#, c-format
-msgid "Missing value on line %d."
-msgstr "Faltando valor na linha %d."
-
-msgid "Missing value string"
-msgstr "Faltando string de valor"
-
-msgid "Missing x-dimension in media-size."
-msgstr "Faltando dimensão-x em media-size."
-
-msgid "Missing y-dimension in media-size."
-msgstr "Faltando dimensão-y em media-size."
-
-#, c-format
-msgid ""
-"Model: name = %s\n"
-" natural_language = %s\n"
-" make-and-model = %s\n"
-" device-id = %s"
-msgstr ""
-"Modelo: nome = %s\n"
-" idioma_natural = %s\n"
-" marca-e-modelo = %s\n"
-" id-dispositivo = %s"
-
-msgid "Modifiers:"
-msgstr "Modificadores:"
-
-msgid "Modify Class"
-msgstr "Modificar classe"
-
-msgid "Modify Printer"
-msgstr "Modificar impressora"
-
-msgid "Move All Jobs"
-msgstr "Mover todos trabalhos"
-
-msgid "Move Job"
-msgstr "Mover trabalho"
-
-msgid "Moved Permanently"
-msgstr "Mover permanentemente"
-
-msgid "NULL PPD file pointer"
-msgstr "Ponteiro NULO para arquivo PPD"
-
-msgid "Name OID uses indefinite length"
-msgstr "OID de nome usa comprimento indefinido"
-
-msgid "Nested classes are not allowed."
-msgstr "Classes aninhadas não são permitidas."
-
-msgid "Never"
-msgstr "Nunca"
-
-msgid "New Stylus Color Series"
-msgstr "Nova Stylus Color Séries"
-
-msgid "New Stylus Photo Series"
-msgstr "Nova Stylus Photos Séries"
-
-msgid "No"
-msgstr "Não"
-
-msgid "No Content"
-msgstr "Nenhum conteúdo"
-
-msgid "No PPD name"
-msgstr "Nenhum nome PPD"
-
-msgid "No VarBind SEQUENCE"
-msgstr "Nenhuma SEQUENCE de VarBind"
-
-msgid "No Windows printer drivers are installed."
-msgstr "Nenhum driver de impressora Windows está instalado."
-
-msgid "No active connection"
-msgstr "Nenhuma conexão ativa"
-
-msgid "No active connection."
-msgstr "Nenhuma conexão ativa."
-
-#, c-format
-msgid "No active jobs on %s."
-msgstr "Nenhum trabalho ativo em %s"
-
-msgid "No attributes in request."
-msgstr "Nenhum atributo na requisição."
-
-msgid "No authentication information provided."
-msgstr "Nenhuma informação de autenticação foi fornecida."
-
-msgid "No community name"
-msgstr "Nenhum nome de comunidade"
-
-msgid "No default printer."
-msgstr "Nenhuma impressora padrão."
-
-msgid "No destinations added."
-msgstr "Nenhuma destinação foi adicionada."
-
-msgid "No device URI found in argv[0] or in DEVICE_URI environment variable."
-msgstr ""
-"Nenhum URI de dispositivo encontrado em argv[0] ou na variável de ambiente "
-"DEVICE_URI."
-
-msgid "No error-index"
-msgstr "Nenhum error-index"
-
-msgid "No error-status"
-msgstr "Nenhum error-status"
-
-msgid "No file in print request."
-msgstr "Nenhum arquivo na requisição de impressão."
-
-msgid "No modification time"
-msgstr "Nenhum horário de modificação"
-
-msgid "No name OID"
-msgstr "Nenhum OID de nome"
-
-msgid "No pages were found."
-msgstr "Nenhuma página foi encontrada."
-
-msgid "No printer name"
-msgstr "Nenhum nome de impressora"
-
-msgid "No printer-uri found"
-msgstr "Nenhum printer-uri foi encontrado"
-
-msgid "No printer-uri found for class"
-msgstr "Nenhum printer-uri foi encontrado para classe"
-
-msgid "No printer-uri in request."
-msgstr "Nenhum printer-uri na requisição."
-
-msgid "No request sent."
-msgstr "Nenhuma requisição enviada."
-
-msgid "No request-id"
-msgstr "Nenhum request-id"
-
-msgid "No subscription attributes in request."
-msgstr "Nenhum atributo de inscrição na requisição."
-
-msgid "No subscriptions found."
-msgstr "Nenhuma inscrição encontrada."
-
-msgid "No variable-bindings SEQUENCE"
-msgstr "Nenhum SEQUENCE em variable-bindings"
-
-msgid "No version number"
-msgstr "Nenhum número de versão"
-
-msgid "Non-continuous (Mark sensing)"
-msgstr "Não-contíguo (Mark sensing)"
-
-msgid "Non-continuous (Web sensing)"
-msgstr "Não-contíguo (Web sensing)"
-
-msgid "Normal"
-msgstr "Normal"
-
-msgid "Not Found"
-msgstr "Não encontrado"
-
-msgid "Not Implemented"
-msgstr "Não implementado"
-
-msgid "Not Installed"
-msgstr "Não instalado"
-
-msgid "Not Modified"
-msgstr "Não modificado"
-
-msgid "Not Supported"
-msgstr "Não suportado"
-
-msgid "Not allowed to print."
-msgstr "Sem permissão para imprimir."
-
-msgid "Note"
-msgstr "Nota"
-
-msgid ""
-"Note: this program only validates the DSC comments, not the PostScript "
-"itself."
-msgstr ""
-"Nota: esse programa só valida os comentários DSC, e não o próprio PostScript."
-
-msgid "OK"
-msgstr "OK"
-
-msgid "Off (1-Sided)"
-msgstr "Off (1 lado)"
-
-msgid "Oki"
-msgstr "Oki"
-
-msgid "Online Help"
-msgstr "Ajuda online"
-
-#, c-format
-msgid "Open of %s failed: %s"
-msgstr "Abertura de %s falhou: %s"
-
-msgid "OpenGroup without a CloseGroup first"
-msgstr "OpenGroup sem um CloseGroup primeiro"
-
-msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first"
-msgstr "OpenUI/JCLOpenUI sem um CloseUI/JCLCloseUI primeiro"
-
-msgid "Operation Policy"
-msgstr "Política de operação"
-
-#, c-format
-msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
-msgstr "Opção \"%s\" não pode ser incluída via %%%%IncludeFeature."
-
-msgid "Options Installed"
-msgstr "Opções instaladas"
-
-msgid "Options:"
-msgstr "Opções:"
-
-msgid "Out of date PPD cache file."
-msgstr "Cache de arquivo PPD está desatualizado."
-
-msgid "Out of memory."
-msgstr "Memória insuficiente."
-
-msgid "Output Mode"
-msgstr "Mode de saída"
-
-#, c-format
-msgid "Output for printer %s is sent to %s"
-msgstr "Saída da impressora %s é enviada para %s"
-
-#, c-format
-msgid "Output for printer %s is sent to remote printer %s on %s"
-msgstr "Saída da impressora %s é enviada para a impressora remota %s em %s"
-
-#, c-format
-msgid "Output for printer %s/%s is sent to %s"
-msgstr "Saída da impressora %s/%s é enviada para %s"
-
-#, c-format
-msgid "Output for printer %s/%s is sent to remote printer %s on %s"
-msgstr "Saída da impressora %s/%s é enviada para impressora remota %s em %s"
-
-msgid "PASS"
-msgstr "PASSOU"
-
-msgid "PCL Laser Printer"
-msgstr "Impressora Laser PCL"
-
-msgid "PRC16K"
-msgstr "PRC16K"
-
-msgid "PRC16K Long Edge"
-msgstr "PRC16K borda maior"
-
-msgid "PRC32K"
-msgstr "PRC32K"
-
-msgid "PRC32K Long Edge"
-msgstr "PRC32K borda maior"
-
-msgid "PRC32K Oversize"
-msgstr "PRC32K grande"
-
-msgid "PRC32K Oversize Long Edge"
-msgstr "PRC32K borda muito maior"
-
-msgid "Packet does not contain a Get-Response-PDU"
-msgstr "Pacote não contém um Get-Response-PDU"
-
-msgid "Packet does not start with SEQUENCE"
-msgstr "Pacote não inicia com SEQUENCE"
-
-msgid "ParamCustominCutInterval"
-msgstr "ParamCustominCutInterval"
-
-msgid "ParamCustominTearInterval"
-msgstr "ParamCustominTearInterval"
-
-#, c-format
-msgid "Password for %s on %s? "
-msgstr "Senha para %s em %s? "
-
-#, c-format
-msgid "Password for %s required to access %s via SAMBA: "
-msgstr "Senha para %s é necessária para acessar %s via SAMBA: "
-
-msgid "Pause Class"
-msgstr "Pausar classe"
-
-msgid "Pause Printer"
-msgstr "Pausar impressora"
-
-# peel-off seria descolar etiqueta do papel?
-msgid "Peel-Off"
-msgstr "Descolar"
-
-msgid "Photo"
-msgstr "Foto"
-
-msgid "Photo Labels"
-msgstr "Foto pequena"
-
-msgid "Plain Paper"
-msgstr "Papel normal"
-
-msgid "Policies"
-msgstr "Políticas"
-
-msgid "Port Monitor"
-msgstr "Monitor de porta"
-
-msgid "PostScript Printer"
-msgstr "Impressora PostScript"
-
-msgid "Postcard"
-msgstr "Postal"
-
-msgid "Postcard Double "
-msgstr "Postal duplo"
-
-msgid "Postcard Double Long Edge"
-msgstr "Postal duplo borda maior"
-
-msgid "Postcard Long Edge"
-msgstr "Postal borda maior"
-
-msgid "Preparing to print."
-msgstr "Preparando para imprimir."
-
-msgid "Print Density"
-msgstr "Densidade de impressão"
-
-msgid "Print Job:"
-msgstr "Trabalho de impressão:"
-
-msgid "Print Mode"
-msgstr "Modo de impressão"
-
-msgid "Print Rate"
-msgstr "Taxa de impressão"
-
-msgid "Print Self-Test Page"
-msgstr "Imprimir página de auto-teste"
-
-msgid "Print Speed"
-msgstr "Velocidade de impressão"
-
-msgid "Print Test Page"
-msgstr "Imprimir página de teste"
-
-msgid "Print and Cut"
-msgstr "Imprimir e cortar"
-
-msgid "Print and Tear"
-msgstr "Imprimir e rasgar"
-
-msgid "Print file sent."
-msgstr "Arquivo de impressão enviado."
-
-msgid "Print job canceled at printer."
-msgstr "Trabalho de impressão cancelado na impressora."
-
-msgid "Print job too large."
-msgstr "Trabalho de impressão muito grande."
-
-msgid "Print job was not accepted."
-msgstr "Trabalho de impressão não foi aceito."
-
-msgid "Printer Added"
-msgstr "Impressora adicionada"
-
-msgid "Printer Default"
-msgstr "Impressora padrão"
-
-msgid "Printer Deleted"
-msgstr "Impressora excluída"
-
-msgid "Printer Modified"
-msgstr "Impressora modificada"
-
-msgid "Printer Paused"
-msgstr "Impressora pausada"
-
-msgid "Printer Settings"
-msgstr "Configurações de impressora"
-
-msgid "Printer cannot print supplied content."
-msgstr "Impressora não consegue imprimir o conteúdo fornecido."
-
-msgid "Printer cannot print with supplied options."
-msgstr "Impressora não consegue imprimir os opções fornecidas."
-
-msgid "Printer:"
-msgstr "Impressora:"
-
-msgid "Printers"
-msgstr "Impressoras"
-
-#, c-format
-msgid "Printing page %d, %d%% complete."
-msgstr "Imprimindo página %d, %d%% completo."
-
-msgid "Purge Jobs"
-msgstr "Apagar trabalhos"
-
-msgid "Quarto"
-msgstr "Quarto"
-
-msgid "Quota limit reached."
-msgstr "Limite de quota alcançado."
-
-msgid "Rank Owner Job File(s) Total Size"
-msgstr "Ordem Dono Trab Arquivo(s) Tamanho total"
-
-#. TRANSLATORS: Pri is job priority.
-msgid ""
-"Rank Owner Pri Job Files Total Size"
-msgstr ""
-"Ordem Dono Pri Trab Arquivos Tamanho total"
-
-msgid "Reject Jobs"
-msgstr "Rejeitar trabalhos"
-
-#, c-format
-msgid "Remote host did not accept control file (%d)."
-msgstr "Máquina remota não aceitou arquivo de controle (%d)."
-
-#, c-format
-msgid "Remote host did not accept data file (%d)."
-msgstr "Máquina remota não aceitou arquivo de dados (%d)."
-
-msgid "Reprint After Error"
-msgstr "Erro após reimpressão"
-
-msgid "Request Entity Too Large"
-msgstr "Entidade de requisição muito grande"
-
-msgid "Resolution"
-msgstr "Resolução"
-
-msgid "Resume Class"
-msgstr "Resumir classe"
-
-msgid "Resume Printer"
-msgstr "Resumir impressora"
-
-msgid "Return Address"
-msgstr "Retornar endereço"
-
-msgid "Rewind"
-msgstr "Rebobinar"
-
-#, c-format
-msgid "Running command: %s %s -N -A %s -c '%s'"
-msgstr "Executando comando: %s %s -N -A %s -c '%s'"
-
-msgid "SEQUENCE uses indefinite length"
-msgstr "SEQUENCE usa comprimento indefinido"
-
-msgid "SSL/TLS Negotiation Error"
-msgstr "Erro de negociação SSL/TLS"
-
-msgid "See Other"
-msgstr "Veja outro"
-
-msgid "Sending data to printer."
-msgstr "Enviando dados à impressora."
-
-msgid "Server Restarted"
-msgstr "Servidor reiniciado"
-
-msgid "Server Security Auditing"
-msgstr "Auditoria de segurança de servidor"
-
-msgid "Server Started"
-msgstr "Servidor iniciou"
-
-msgid "Server Stopped"
-msgstr "Servidor parou"
-
-msgid "Service Unavailable"
-msgstr "Serviço indisponível"
-
-msgid "Set Allowed Users"
-msgstr "Definir usuários permitidos"
-
-msgid "Set As Server Default"
-msgstr "Definir como servidor padrão"
-
-msgid "Set Class Options"
-msgstr "Definir opções de classe"
-
-msgid "Set Printer Options"
-msgstr "Definir opções de impressora"
-
-msgid "Set Publishing"
-msgstr "Definir publicação"
-
-msgid "Shipping Address"
-msgstr "Endereço de entrega"
-
-msgid "Short-Edge (Landscape)"
-msgstr "Borda menor (paisagem)"
-
-msgid "Special Paper"
-msgstr "Papel especial"
-
-#, c-format
-msgid "Spooling job, %.0f%% complete."
-msgstr "Trabalho de impressão, %.0f%% completo."
-
-msgid "Standard"
-msgstr "Padrão"
-
-#. TRANSLATORS: Banner/cover sheet before the print job.
-msgid "Starting Banner"
-msgstr "Iniciando banner"
-
-#, c-format
-msgid "Starting page %d."
-msgstr "Iniciando página %d."
-
-msgid "Statement"
-msgstr "Declaração"
-
-msgid "Stylus Color Series"
-msgstr "Stylus Color Séries"
-
-msgid "Stylus Photo Series"
-msgstr "Stylus Photo Séries"
-
-#, c-format
-msgid "Subscription #%d does not exist."
-msgstr "Inscrição #%d não existe."
-
-msgid "Substitutions:"
-msgstr "Substituições:"
-
-msgid "Super A"
-msgstr "Super A"
-
-msgid "Super B"
-msgstr "Super B"
-
-msgid "Super B/A3"
-msgstr "Super B/A3"
-
-msgid "Switching Protocols"
-msgstr "Alternando protocolos"
-
-msgid "Tabloid"
-msgstr "Tabloide"
-
-msgid "Tabloid Oversize"
-msgstr "Tabloide grande"
-
-msgid "Tabloid Oversize Long Edge"
-msgstr "Tabloide borda muito maior"
-
-msgid "Tear"
-msgstr "Destacar"
-
-msgid "Tear-Off"
-msgstr "Destacar"
-
-msgid "Tear-Off Adjust Position"
-msgstr "Ajuste da posição de destaque"
-
-#, c-format
-msgid "The \"%s\" attribute is required for print jobs."
-msgstr "O atributo \"%s\" é necessário para imprimir os trabalhos."
-
-#, c-format
-msgid "The %s attribute cannot be provided with job-ids."
-msgstr "O atributo %s não pode ser fornecido com job-ids."
-
-#, c-format
-msgid ""
-"The '%s' Job Description attribute cannot be supplied in a job creation "
-"request."
-msgstr ""
-"O atributo Job Description \"%s\" não pode ser fornecido em uma requisição "
-"de criação de trabalho."
-
-#, c-format
-msgid ""
-"The '%s' operation attribute cannot be supplied in a Create-Job request."
-msgstr ""
-"O atributo de operação '%s' não pode ser fornecido em uma requisição de "
-"criação de trabalho."
-
-#, c-format
-msgid "The PPD file \"%s\" could not be found."
-msgstr "O arquivo PPD \"%s\" não pôde ser encontrado."
-
-#, c-format
-msgid "The PPD file \"%s\" could not be opened: %s"
-msgstr "O arquivo PPD \"%s\" não pôde ser aberto: %s"
-
-msgid "The PPD file could not be opened."
-msgstr "O arquivo PPD não pôde ser aberto."
-
-msgid ""
-"The class name may only contain up to 127 printable characters and may not "
-"contain spaces, slashes (/), or the pound sign (#)."
-msgstr ""
-"O nome da classe pode conter somente até 127 caracteres imprimíveis e não "
-"pode conter espaços, barras (/), ou sinal de tralha (#)."
-
-msgid "The developer unit needs to be replaced."
-msgstr "A unidade de desenvolvedor precisa ser substituído."
-
-msgid "The developer unit will need to be replaced soon."
-msgstr "A unidade de desenvolvedor precisará ser substituído em breve."
-
-msgid "The fuser's temperature is high."
-msgstr "A temperatura do fusor está alta."
-
-msgid "The fuser's temperature is low."
-msgstr "A temperatura do fusor está baixa."
-
-msgid ""
-"The notify-lease-duration attribute cannot be used with job subscriptions."
-msgstr ""
-"O atributo notify-lease-duration não pode ser usado para inscrições de "
-"trabalhos."
-
-#, c-format
-msgid "The notify-user-data value is too large (%d > 63 octets)."
-msgstr "O valor de notify-user-data está muito grande (%d > 63 octetos)."
-
-msgid "The optical photoconductor needs to be replaced."
-msgstr "O fotocondutor óptico precisa ser substituído."
-
-msgid "The optical photoconductor will need to be replaced soon."
-msgstr "O fotocondutor óptico precisará ser substituído em breve."
-
-msgid "The output bin is almost full."
-msgstr "O tabuleiro de saída está quase completo."
-
-msgid "The output bin is full."
-msgstr "O tabuleiro de saída está completo."
-
-msgid "The output bin is missing."
-msgstr "O tabuleiro de saída não foi encontrado."
-
-msgid "The paper tray is almost empty."
-msgstr "O bandeja de papel está quase vazia."
-
-msgid "The paper tray is empty."
-msgstr "O bandeja de papel está vazia."
-
-msgid "The paper tray is missing."
-msgstr "O bandeja de papel não foi encontrada."
-
-msgid "The paper tray needs to be filled."
-msgstr "O bandeja de papel precisa ser recarregada."
-
-msgid "The printer configuration is incorrect or the printer no longer exists."
-msgstr ""
-"A configuração da impressora está incorreta ou a impressora não existe mais."
-
-msgid "The printer did not respond."
-msgstr "A impressora não respondeu."
-
-msgid "The printer is in use."
-msgstr "A impressora está em uso."
-
-msgid "The printer is not connected."
-msgstr "A impressora não está conectada."
-
-msgid "The printer is not responding."
-msgstr "A impressora não está respondendo."
-
-msgid "The printer is now connected."
-msgstr "A impressora está agora conectada."
-
-msgid "The printer is now online."
-msgstr "A impressora está agora online."
-
-msgid "The printer is offline."
-msgstr "A impressora está offline."
-
-msgid "The printer is running low on ink."
-msgstr "A impressora está ficando sem tinta."
-
-msgid "The printer is running low on toner."
-msgstr "A impressora está ficando sem toner."
-
-msgid "The printer is unreachable at this time."
-msgstr "A impressora está inacessível neste momento."
-
-msgid "The printer may be out of ink."
-msgstr "A impressora pode estar sem tinta."
-
-msgid "The printer may be out of toner."
-msgstr "A impressora pode estar sem toner."
-
-msgid "The printer may not exist or is unavailable at this time."
-msgstr "A impressora pode não existir ou está indisponível neste momento."
-
-msgid ""
-"The printer name may only contain up to 127 printable characters and may not "
-"contain spaces, slashes (/), or the pound sign (#)."
-msgstr ""
-"O nome da impressora pode conter somente até 127 caracteres imprimíveis e "
-"não pode conter espaços, barras (/), ou sinal de tralha (#)."
-
-msgid "The printer or class does not exist."
-msgstr "A impressora ou classe não existe."
-
-msgid "The printer or class is not shared."
-msgstr "A impressora ou classe não está compartilhada."
-
-msgid "The printer's cover is open."
-msgstr "A tampa superior da impressora está aberta."
-
-msgid "The printer's door is open."
-msgstr "A tampa da impressora está aberta."
-
-msgid "The printer's interlock is open."
-msgstr "A interlock da impressora está aberta."
-
-msgid "The printer's waste bin is almost full."
-msgstr "A lixeira da impressora está quase completa."
-
-msgid "The printer's waste bin is full."
-msgstr "A lixeira da impressora está completa."
-
-#, c-format
-msgid "The printer-uri \"%s\" contains invalid characters."
-msgstr "O printer-uri \"%s\" contém caracteres inválidos."
-
-msgid "The printer-uri attribute is required."
-msgstr "O atributo printer-uri é necessário."
-
-msgid ""
-"The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
-msgstr ""
-"O printer-uri deve estar no formato \"ipp://MAQUINA/classes/NOMECLASSE\"."
-
-msgid ""
-"The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
-msgstr ""
-"O printer-uri deve estar no formato \"ipp://MAQUINA/printers/NOMEIMPRESSORA"
-"\"."
-
-msgid ""
-"The subscription name may not contain spaces, slashes (/), question marks "
-"(?), or the pound sign (#)."
-msgstr ""
-"O nome da inscrição não pode conter espaços, barras (/), sinais de "
-"interrogação (?), ou sinal de tralha (#)."
-
-msgid ""
-"The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to "
-"enable it."
-msgstr ""
-"A interface web está desabilitada no momento. Execute \"cupsctl "
-"WebInterface=yes\" para habilitá-la."
-
-#, c-format
-msgid "The which-jobs value \"%s\" is not supported."
-msgstr "O valor de which-jobs \"%s\" não é suportado."
-
-msgid "There are too many subscriptions."
-msgstr "Há inscrições demais."
-
-msgid "There is a paper jam."
-msgstr "Ocorreu um atolamento de papel."
-
-msgid "There was an unrecoverable USB error."
-msgstr "Ocorreu um erro de USB irrecuperável."
-
-msgid "Thermal Transfer Media"
-msgstr "Mídia de transferência térmica"
-
-msgid "Too many active jobs."
-msgstr "Há trabalhos demais ativos."
-
-#, c-format
-msgid "Too many job-sheets values (%d > 2)."
-msgstr "Há valores de job-sheets demais (%d > 2)."
-
-#, c-format
-msgid "Too many printer-state-reasons values (%d > %d)."
-msgstr "Há valores de printer-state-reasons demais (%d >%d)."
-
-msgid "Transparency"
-msgstr "Transparência"
-
-msgid "Tray"
-msgstr "Bandeja"
-
-msgid "Tray 1"
-msgstr "Bandeja 1"
-
-msgid "Tray 2"
-msgstr "Bandeja 2"
-
-msgid "Tray 3"
-msgstr "Bandeja 3"
-
-msgid "Tray 4"
-msgstr "Bandeja 4"
-
-msgid "URI Too Long"
-msgstr "URI muito longa"
-
-msgid "US Ledger"
-msgstr "US Ledger"
-
-msgid "US Legal"
-msgstr "US Legal"
-
-msgid "US Legal Oversize"
-msgstr "US Legal grande"
-
-msgid "US Letter"
-msgstr "US Letter"
-
-msgid "US Letter Long Edge"
-msgstr "US Letter borda maior"
-
-msgid "US Letter Oversize"
-msgstr "US Letter grande"
-
-msgid "US Letter Oversize Long Edge"
-msgstr "US Letter borda muito maior"
-
-msgid "US Letter Small"
-msgstr "US Letter pequena"
-
-msgid "Unable to access cupsd.conf file"
-msgstr "Não foi possível acessar o arquivo cupsd.conf"
-
-msgid "Unable to access help file."
-msgstr "Não foi possível acessar o arquivo de ajuda."
-
-msgid "Unable to add RSS subscription"
-msgstr "Não foi possível adicionar inscrição RSS"
-
-msgid "Unable to add class"
-msgstr "Não foi possível adicionar classe"
-
-msgid "Unable to add document to print job."
-msgstr "Não foi possível adicionar o documento ao trabalho de impressão."
-
-#, c-format
-msgid "Unable to add job for destination \"%s\"."
-msgstr "Não foi possível adicionar trabalho para destino \"%s\"."
-
-msgid "Unable to add printer"
-msgstr "Não foi possível adicionar impressora"
-
-msgid "Unable to allocate memory for file types."
-msgstr "Não foi possível alocar memória para os tipos de arquivos."
-
-msgid "Unable to allocate memory for page info"
-msgstr "Não foi possível alocar memória para informação de página"
-
-msgid "Unable to allocate memory for pages array"
-msgstr "Não foi possível alocar memória para vetor de páginas"
-
-msgid "Unable to cancel RSS subscription"
-msgstr "Não foi possível cancelar inscrição RSS"
-
-msgid "Unable to cancel print job."
-msgstr "Não foi possível cancelar trabalho de impressão."
-
-msgid "Unable to change printer"
-msgstr "Não foi possível alterar a impressora"
-
-msgid "Unable to change printer-is-shared attribute"
-msgstr "Não foi possível alterar o atributo printer-is-shared"
-
-msgid "Unable to change server settings"
-msgstr "Não foi possível alterar as configurações do servidor"
-
-#, c-format
-msgid "Unable to compile mimeMediaType regular expression: %s."
-msgstr "Não foi possível compilar a expressão regular de mimeMediaType: %s."
-
-#, c-format
-msgid "Unable to compile naturalLanguage regular expression: %s."
-msgstr "Não foi possível compilar a expressão regular de naturalLanguage: %s."
-
-msgid "Unable to configure printer options."
-msgstr "Não foi possível configurar opções de impressora."
-
-msgid "Unable to connect to host."
-msgstr "Não foi possível conectar à máquina."
-
-msgid "Unable to contact printer, queuing on next printer in class."
-msgstr ""
-"Não foi possível contactar a impressora, enfileirando na próxima impressora "
-"na classe."
-
-#, c-format
-msgid "Unable to copy 64-bit CUPS printer driver files (%d)."
-msgstr ""
-"Não foi possível copiar arquivos de driver de impressora CUPS 64-bit (%d)."
-
-#, c-format
-msgid "Unable to copy 64-bit Windows printer driver files (%d)."
-msgstr ""
-"Não foi possível copiar arquivos de driver de impressora (%d) de Windows 64-"
-"bit."
-
-#, c-format
-msgid "Unable to copy CUPS printer driver files (%d)."
-msgstr "Não foi possível copiar arquivos de driver de impressora (%d) de CUPS."
-
-#, c-format
-msgid "Unable to copy PPD file - %s"
-msgstr "Não foi possível copiar arquivo PPD - %s"
-
-msgid "Unable to copy PPD file."
-msgstr "Não foi possível copiar arquivo PPD."
-
-#, c-format
-msgid "Unable to copy Windows 2000 printer driver files (%d)."
-msgstr ""
-"Não foi possível copiar arquivos de driver de impressora (%d) de Windows "
-"2000."
-
-#, c-format
-msgid "Unable to copy Windows 9x printer driver files (%d)."
-msgstr ""
-"Não foi possível copiar arquivos de driver de impressora (%d) de Windows 9x."
-
-#, c-format
-msgid "Unable to copy interface script - %s"
-msgstr "Não foi possível copiar script de interface - %s"
-
-msgid "Unable to create printer-uri"
-msgstr "Não foi possível criar uri de impressora"
-
-msgid "Unable to create temporary file"
-msgstr "Não foi possível criar arquivo temporário"
-
-msgid "Unable to delete class"
-msgstr "Não foi possível excluir classe"
-
-msgid "Unable to delete printer"
-msgstr "Não foi possível excluir impressora"
-
-msgid "Unable to do maintenance command"
-msgstr "Não foi possível executar comando de manutenção"
-
-msgid "Unable to edit cupsd.conf files larger than 1MB"
-msgstr "Não foi possível editar arquivos de cupsd.conf maiores que 1MB"
-
-msgid ""
-"Unable to establish a secure connection to host (certificate chain invalid)."
-msgstr ""
-"Não foi possível estabelecer uma conexão segura com a máquina (cadeia de "
-"certificação inválida)."
-
-msgid ""
-"Unable to establish a secure connection to host (certificate not yet valid)."
-msgstr ""
-"Não foi possível estabelecer uma conexão segura com a máquina (certificado "
-"inválido no momento)."
-
-msgid "Unable to establish a secure connection to host (expired certificate)."
-msgstr ""
-"Não foi possível estabelecer uma conexão segura com a máquina (certificado "
-"expirou)."
-
-msgid "Unable to establish a secure connection to host (host name mismatch)."
-msgstr ""
-"Não foi possível estabelecer uma conexão segura com a máquina (nome da "
-"máquina incorreto)."
-
-msgid ""
-"Unable to establish a secure connection to host (peer dropped connection "
-"before responding)."
-msgstr ""
-"Não foi possível estabelecer uma conexão segura com a máquina (terminou a "
-"conexão sem a resposta)."
-
-msgid ""
-"Unable to establish a secure connection to host (self-signed certificate)."
-msgstr ""
-"Não foi possível estabelecer uma conexão segura com a máquina (certificado "
-"auto-assinado)."
-
-msgid ""
-"Unable to establish a secure connection to host (untrusted certificate)."
-msgstr ""
-"Não foi possível estabelecer uma conexão segura com a máquina (certificado "
-"não confiado)."
-
-msgid "Unable to establish a secure connection to host."
-msgstr "Não foi possível estabelecer uma conexão segura com a máquina."
-
-msgid "Unable to find destination for job"
-msgstr "Não foi possível encontrar o destino do trabalho"
-
-msgid "Unable to find printer."
-msgstr "Não foi possível encontrar a impressora."
-
-msgid "Unable to get backend exit status."
-msgstr "Não foi possível obter o estado de saída do backend."
-
-msgid "Unable to get class list"
-msgstr "Não foi possível obter lista de classes"
-
-msgid "Unable to get class status"
-msgstr "Não foi possível obter o estado da classe"
-
-msgid "Unable to get list of printer drivers"
-msgstr "Não foi possível obter lista de drivers de impressoras"
-
-msgid "Unable to get printer attributes"
-msgstr "Não foi possível obter atributos de impressora"
-
-msgid "Unable to get printer list"
-msgstr "Não foi possível obter lista de impressora"
-
-msgid "Unable to get printer status"
-msgstr "Não foi possível obter status de impressora"
-
-msgid "Unable to get printer status."
-msgstr "Não foi possível obter o estado de impressora."
-
-#, c-format
-msgid "Unable to install Windows 2000 printer driver files (%d)."
-msgstr ""
-"Não foi possível instalar arquivos de driver de impressora Windows 2000 (%d)."
-
-#, c-format
-msgid "Unable to install Windows 9x printer driver files (%d)."
-msgstr ""
-"Não foi possível instalar arquivos de driver de impressora Windows 9x (%d)."
-
-msgid "Unable to load help index."
-msgstr "Não foi possível carregar índice de ajuda."
-
-#, c-format
-msgid "Unable to locate printer \"%s\"."
-msgstr "Não foi possível localizar a impressora \"%s\"."
-
-msgid "Unable to locate printer."
-msgstr "Não foi possível localizar a impressora."
-
-msgid "Unable to modify class"
-msgstr "Não foi possível modificar classe"
-
-msgid "Unable to modify printer"
-msgstr "Não foi possível modificar impressora"
-
-msgid "Unable to move job"
-msgstr "Não foi possível mover trabalho"
-
-msgid "Unable to move jobs"
-msgstr "Não foi possível mover trabalhos"
-
-msgid "Unable to open PPD file"
-msgstr "Não foi possível abrir arquivo PPD"
-
-msgid "Unable to open cupsd.conf file:"
-msgstr "Não foi possível abrir arquivo cupsd.conf:"
-
-msgid "Unable to open device file"
-msgstr "Não foi possível abrir arquivo dispositivo"
-
-#, c-format
-msgid "Unable to open document #%d in job #%d."
-msgstr "Não foi possível abrir documento #%d no trabalho #%d."
-
-msgid "Unable to open help file."
-msgstr "Não foi possível abrir arquivo de ajuda."
-
-msgid "Unable to open print file"
-msgstr "Não foi possível abrir arquivo de impressão"
-
-msgid "Unable to open raster file"
-msgstr "Não foi possível arquivo de rasterização"
-
-msgid "Unable to print test page"
-msgstr "Não foi possível imprimir página teste"
-
-msgid "Unable to read print data."
-msgstr "Não foi possível ler dados de impressão."
-
-msgid "Unable to resolve printer URI."
-msgstr "Não foi possível resolver URI da impressora."
-
-#, c-format
-msgid "Unable to run \"%s\": %s"
-msgstr "Não foi possível executar \"%s\": %s"
-
-msgid "Unable to see in file"
-msgstr "Não foi possível ler o arquivo"
-
-msgid "Unable to send command to printer driver"
-msgstr "Não foi possível enviar comando ao driver da impressora"
-
-msgid "Unable to send data to printer."
-msgstr "Não foi possível enviar dados à impressora."
-
-#, c-format
-msgid "Unable to set Windows printer driver (%d)."
-msgstr "Não foi possível definir driver de impressora Windows (%d)."
-
-msgid "Unable to set options"
-msgstr "Não foi possível definir opções"
-
-msgid "Unable to set server default"
-msgstr "Não foi possível definir servidor padrão"
-
-msgid "Unable to start backend process."
-msgstr "Não foi possível iniciar processo de backend."
-
-msgid "Unable to upload cupsd.conf file"
-msgstr "Não foi possível atualizar o arquivo cupsd.conf"
-
-msgid "Unable to use legacy USB class driver."
-msgstr "Não foi possível usar driver de classe USB legado."
-
-msgid "Unable to write print data"
-msgstr "Não foi possível escrever dados de impressão"
-
-#, c-format
-msgid "Unable to write uncompressed print data: %s"
-msgstr "Não foi possível escrever dados descompactados de impressão: %s"
-
-msgid "Unauthorized"
-msgstr "Não autorizado"
-
-msgid "Units"
-msgstr "Unidades"
-
-msgid "Unknown"
-msgstr "Desconhecido"
-
-#, c-format
-msgid "Unknown choice \"%s\" for option \"%s\"."
-msgstr "Escolha desconhecida \"%s\" para opção \"%s\"."
-
-#, c-format
-msgid "Unknown encryption option value: \"%s\"."
-msgstr "Valor da opção de criptografia desconhecido: \"%s\"."
-
-#, c-format
-msgid "Unknown file order: \"%s\"."
-msgstr "Ordem de arquivo desconhecida: \"%s\"."
-
-#, c-format
-msgid "Unknown format character: \"%c\"."
-msgstr "Caractere de formato desconhecido: \"%c\"."
-
-msgid "Unknown media size name."
-msgstr "Nome de tamanho de mídia desconhecido."
-
-#, c-format
-msgid "Unknown option \"%s\" with value \"%s\"."
-msgstr "Opção \"%s\" desconhecida com valor \"%s\"."
-
-#, c-format
-msgid "Unknown option \"%s\"."
-msgstr "Opção \"%s\" desconhecida."
-
-#, c-format
-msgid "Unknown print mode: \"%s\"."
-msgstr "Modo de impressão desconhecido: \"%s\"."
-
-#, c-format
-msgid "Unknown printer-error-policy \"%s\"."
-msgstr "printer-error-policy \"%s\" desconhecido."
-
-#, c-format
-msgid "Unknown printer-op-policy \"%s\"."
-msgstr "printer-op-policy \"%s\" desconhecido."
-
-msgid "Unknown service name."
-msgstr "Nome de serviço desconhecido."
-
-#, c-format
-msgid "Unknown version option value: \"%s\"."
-msgstr "Valor de opção de versão desconhecido: \"%s\"."
-
-#, c-format
-msgid "Unsupported 'compression' value \"%s\"."
-msgstr "Valor de \"compression\" sem suporte \"%s\"."
-
-#, c-format
-msgid "Unsupported 'document-format' value \"%s\"."
-msgstr "Valor de \"document-format\" sem suporte \"%s\"."
-
-msgid "Unsupported 'job-name' value."
-msgstr "Valor de \"job-name\" sem suporte."
-
-#, c-format
-msgid "Unsupported character set \"%s\"."
-msgstr "Conjunto de caracteres \"%s\" sem suporte."
-
-#, c-format
-msgid "Unsupported compression \"%s\"."
-msgstr "Compressão \"%s\" sem suporte."
-
-#, c-format
-msgid "Unsupported document-format \"%s\"."
-msgstr "document-format \"%s\" sem suporte."
-
-#, c-format
-msgid "Unsupported document-format \"%s/%s\"."
-msgstr "document-format \"%s/%s\" sem suporte."
-
-#, c-format
-msgid "Unsupported format \"%s\"."
-msgstr "Formato \"%s\" sem suporte."
-
-msgid "Unsupported margins."
-msgstr "Margens sem suporte."
-
-msgid "Unsupported media value."
-msgstr "Valor de mídia sem suporte."
-
-#, c-format
-msgid "Unsupported number-up value %d, using number-up=1."
-msgstr "Valor de number-up %d sem suporte; usando number-up=1."
-
-#, c-format
-msgid "Unsupported number-up-layout value %s, using number-up-layout=lrtb."
-msgstr ""
-"Valor de number-up-layout %s sem suporte; usando number-up-layout=lrtb."
-
-#, c-format
-msgid "Unsupported page-border value %s, using page-border=none."
-msgstr "Valor de page-border %s sem suporte; usando page-border=none."
-
-msgid "Unsupported raster data."
-msgstr "Dados de rasterização sem suporte."
-
-msgid "Unsupported value type"
-msgstr "Tipo de valor sem suporte"
-
-msgid "Upgrade Required"
-msgstr "Atualização necessária"
-
-msgid ""
-"Usage:\n"
-"\n"
-" lpadmin [-h server] -d destination\n"
-" lpadmin [-h server] -x destination\n"
-" lpadmin [-h server] -p printer [-c add-class] [-i interface] [-m model]\n"
-" [-r remove-class] [-v device] [-D description]\n"
-" [-P ppd-file] [-o name=value]\n"
-" [-u allow:user,user] [-u deny:user,user]"
-msgstr ""
-"Uso:\n"
-"\n"
-" lpadmin [-h servidor] -d destino\n"
-" lpadmin [-h servidor] -x destino\n"
-" lpadmin [-h servidor] -p impressora [-c add-classe] [-i interface]\n"
-" [-m modelo] [-r remove-classe] [-v dispositivo]\n"
-" [-D descrição] [-P arquivo-ppd] [-o nome=valor]\n"
-" [-u allow:usuário,usuário] [-u deny:usuário,usuário]"
-
-#, c-format
-msgid "Usage: %s job-id user title copies options [file]"
-msgstr "Uso: %s job-id usuário título cópias opções [arquivo]"
-
-msgid "Usage: cupsaddsmb [options] printer1 ... printerN"
-msgstr "Uso: cupsaddsmb [opções] impressora1 ... impressoraN"
-
-msgid "Usage: cupsctl [options] [param=value ... paramN=valueN]"
-msgstr "Uso: cupsctl [opções] [param=valor ... paramN=valorN]"
-
-msgid "Usage: cupsd [options]"
-msgstr "Uso: cupsd [opções]"
-
-msgid "Usage: cupsfilter [ options ] filename"
-msgstr "Uso: cupsfilter [ opções ] arquivo"
-
-msgid "Usage: cupstestdsc [options] filename.ps [... filename.ps]"
-msgstr "Uso: cupstestdsc [opções] arquivo.ps [... arquivo.ps]"
-
-msgid ""
-"Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]"
-msgstr "Uso: cupstestppd [opções] arquivo1.ppd[.gz] [... arquivoN.ppd[.gz]]"
-
-msgid ""
-"Usage: ippdiscover [options] -a\n"
-" ippdiscover [options] \"service name\"\n"
-"\n"
-"Options:"
-msgstr ""
-"Uso: ippdiscover [opções] -a\n"
-" ippdiscover [opções] \"nome do serviço\"\n"
-"\n"
-"Opções:"
-
-msgid ""
-"Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n"
-" ippfind [options] name[.regtype[.domain.]] ... [expression]\n"
-" ippfind --help\n"
-" ippfind --version"
-msgstr ""
-"Uso: ippfind [opções] tiporeg[,tiposub][.domínio.] ... [expressões]\n"
-" ippfind [opções] nome[.tiporeg[.domínio.]] ... [expressões]\n"
-" ippfind --help\n"
-" ippfind --version"
-
-msgid "Usage: ipptool [options] URI filename [ ... filenameN ]"
-msgstr "Uso: ipptool [opções] URI arquivo [ ... arquivoN ]"
-
-msgid "Usage: lpmove job/src dest"
-msgstr "Uso: lpmove trabalho/fonte dest"
-
-msgid ""
-"Usage: lpoptions [-h server] [-E] -d printer\n"
-" lpoptions [-h server] [-E] [-p printer] -l\n"
-" lpoptions [-h server] [-E] -p printer -o option[=value] ...\n"
-" lpoptions [-h server] [-E] -x printer"
-msgstr ""
-"Uso: lpoptions [-h servidor] [-E] -d impressora\n"
-" lpoptions [-h servidor] [-E] [-p impressora] -l\n"
-" lpoptions [-h servidor] [-E] -p impressora -o opção[=valor] ...\n"
-" lpoptions [-h servidor] [-E] -x impressora"
-
-msgid "Usage: lppasswd [-g groupname]"
-msgstr "Uso: lppasswd [-g grupo]"
-
-msgid ""
-"Usage: lppasswd [-g groupname] [username]\n"
-" lppasswd [-g groupname] -a [username]\n"
-" lppasswd [-g groupname] -x [username]"
-msgstr ""
-"Uso: lppasswd [-g grupo] [usuário]\n"
-" lppasswd [-g grupo] -a [usuário]\n"
-" lppasswd [-g grupo] -x [usuário]"
-
-msgid ""
-"Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
-msgstr "Uso: lpq [-P dest] [-U usuário] [-h máquina[:porta]] [-l] [+intervalo]"
-
-msgid "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]"
-msgstr "Uso: ppdc [opções] arquivo.drv [ ... arquivoN.drv ]"
-
-msgid "Usage: ppdhtml [options] filename.drv >filename.html"
-msgstr "Uso: ppdhtml [opções] arquivo.drv >arquivo.html"
-
-msgid "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]"
-msgstr "Uso: ppdi [opções] arquivo.ppd [ ... arquivoN.ppd ]"
-
-msgid "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]"
-msgstr "Uso: ppdmerge [opções] arquivo.ppd [ ... arquivoN.ppd ]"
-
-msgid ""
-"Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]"
-msgstr "Uso: ppdpo [opções] -o arquivo.po arquivo.drv [ ... arquivoN.drv ]"
-
-msgid "Usage: snmp [host-or-ip-address]"
-msgstr "Uso: snmp [máquina-ou-endereço-ip]"
-
-msgid "Value uses indefinite length"
-msgstr "Valor usa comprimento indefinido"
-
-msgid "VarBind uses indefinite length"
-msgstr "VarBind usa comprimento indefinido"
-
-msgid "Version uses indefinite length"
-msgstr "Version usa comprimento indefinido"
-
-msgid "Waiting for job to complete."
-msgstr "Esperando o trabalho completar."
-
-msgid "Waiting for printer to become available."
-msgstr "Esperando a impressora ficar disponível."
-
-msgid "Waiting for printer to finish."
-msgstr "Esperando a impressora finalizar."
-
-msgid "Warning, no Windows 2000 printer drivers are installed."
-msgstr "Aviso, nenhum driver de impressora Windows 2000 está instalado."
-
-msgid "Web Interface is Disabled"
-msgstr "Interface web está desabilitada"
-
-msgid "Yes"
-msgstr "Sim"
-
-#, c-format
-msgid ""
-"You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://"
-"%s:%d%s</A>."
-msgstr ""
-"Você tem que acessar esta página usando a URL <A HREF=\"https://%s:%d%s"
-"\">https://%s:%d%s</A>."
-
-msgid ""
-"Your password must be at least 6 characters long, cannot contain your "
-"username, and must contain at least one letter and number."
-msgstr ""
-"Sua senha deve ser pelo menos de 6 caracteres, não pode conter o seu nome de "
-"usuário, e deve conter pelo menos uma letra e um número."
-
-msgid "ZPL Label Printer"
-msgstr "Impressora de etiqueta ZPL"
-
-msgid "Zebra"
-msgstr "Zebra"
-
-msgid "aborted"
-msgstr "abortado"
-
-msgid "canceled"
-msgstr "cancelado"
-
-msgid "completed"
-msgstr "completou"
-
-msgid "cups-deviced failed to execute."
-msgstr "cups-deviced falhou na execução."
-
-msgid "cups-driverd failed to execute."
-msgstr "cups-driverd falhou na execução."
-
-#, c-format
-msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s"
-msgstr "cupsaddsmb: Nenhum arquivo PPD para a impressora \"%s\" - %s"
-
-msgid "cupsctl: Cannot set Listen or Port directly."
-msgstr "cupsctl: Não foi possível definir diretamente Porta ou Listen."
-
-#, c-format
-msgid "cupsctl: Unable to connect to server: %s"
-msgstr "cupsctl: Não foi possível conectar o servidor: %s"
-
-#, c-format
-msgid "cupsctl: Unknown option \"%s\""
-msgstr "cupsctl: Opção desconhecida \"%s\""
-
-#, c-format
-msgid "cupsctl: Unknown option \"-%c\""
-msgstr "cupsctl: Opção desconhecida \"-%c\""
-
-msgid "cupsd: Expected config filename after \"-c\" option."
-msgstr "cupsd: Esperava nome de arquivo de configuração após a opção \"-c\"."
-
-msgid "cupsd: Expected cups-files.conf filename after \"-s\" option."
-msgstr ""
-"cupsd: Esperava nome de arquivo de cups-files.conf após a opção \"-s\"."
-
-msgid "cupsd: Relative cups-files.conf filename not allowed."
-msgstr "cupsd: Nome de arquivo relativo para cups-files.conf não é permitido."
-
-msgid "cupsd: Unable to get current directory."
-msgstr "cupsd: Não é possível obter diretório atual."
-
-msgid "cupsd: Unable to get path to cups-files.conf file."
-msgstr ""
-"cupsd: Não foi possível obter o caminho para o arquivo cups-files.conf."
-
-#, c-format
-msgid "cupsd: Unknown argument \"%s\" - aborting."
-msgstr "cupsd: Argumento desconhecido \"%s\" - abortando."
-
-#, c-format
-msgid "cupsd: Unknown option \"%c\" - aborting."
-msgstr "cupsd: Opção desconhecida \"%c\" - abortando."
-
-msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
-msgstr ""
-"cupsd: Compilado sem suporte a launchd(8) e, portanto, executando no modo "
-"normal."
-
-#, c-format
-msgid "cupsfilter: Invalid document number %d."
-msgstr "cupsfilter: Número de documento inválido %d."
-
-#, c-format
-msgid "cupsfilter: Invalid job ID %d."
-msgstr "cupsfilter: ID de trabalho inválido %d."
-
-msgid "cupsfilter: Only one filename can be specified."
-msgstr "cupsfilter: Somente um nome de arquivo pode ser especificado."
-
-#, c-format
-msgid "cupsfilter: Unable to get job file - %s"
-msgstr "cupsfilter: Não é possível obter o arquivo do trabalho - %s"
-
-msgid "cupstestppd: The -q option is incompatible with the -v option."
-msgstr "cupstestppd: A opção -q é incompatível com a opção -v."
-
-msgid "cupstestppd: The -v option is incompatible with the -q option."
-msgstr "cupstestppd: A opção -v é incompatível com a opção -q."
-
-#, c-format
-msgid "device for %s/%s: %s"
-msgstr "dispositivo de %s/%s: %s"
-
-#, c-format
-msgid "device for %s: %s"
-msgstr "dispositivo de %s: %s"
-
-msgid "error-index uses indefinite length"
-msgstr "error-index usa comprimento indefinido"
-
-msgid "error-status uses indefinite length"
-msgstr "error-status usa comprimento indefinido"
-
-msgid "held"
-msgstr "retido"
-
-msgid "help\t\tGet help on commands."
-msgstr "help\t\tObtém ajuda sobre os comandos."
-
-msgid "idle"
-msgstr "inativo"
-
-#, c-format
-msgid "ippfind: Bad regular expression: %s"
-msgstr "ippfind: Expressão regular inválida: %s"
-
-msgid "ippfind: Cannot use --and after --or."
-msgstr "ippfind: Não é possível usar --and após --or."
-
-#, c-format
-msgid "ippfind: Expected key name after %s."
-msgstr "ippfind: Esperava nome da chave após %s."
-
-#, c-format
-msgid "ippfind: Expected port range after %s."
-msgstr "ippfind: Esperava faixa de portas após %s."
-
-#, c-format
-msgid "ippfind: Expected program after %s."
-msgstr "ippfind: Esperava o programa após %s."
-
-#, c-format
-msgid "ippfind: Expected semi-colon after %s."
-msgstr "ippfind: Esperava ponto-e-vírgula após %s."
-
-msgid "ippfind: Missing close brace in substitution."
-msgstr "ippfind: Faltando chave de fechamento na substituição."
-
-msgid "ippfind: Missing close parenthesis."
-msgstr "ippfind: Faltando parênteses de fechamento."
-
-msgid "ippfind: Missing expression before \"--and\"."
-msgstr "ippfind: Faltando expressão antes de \"--and\"."
-
-msgid "ippfind: Missing expression before \"--or\"."
-msgstr "ippfind: Faltando expressão antes de \"--or\"."
-
-#, c-format
-msgid "ippfind: Missing key name after %s."
-msgstr "ippfind: Faltando nome da chave após %s."
-
-msgid "ippfind: Missing open parenthesis."
-msgstr "ippfind: Faltando parênteses de abertura."
-
-#, c-format
-msgid "ippfind: Missing program after %s."
-msgstr "ippfind: Faltando programa após %s."
-
-#, c-format
-msgid "ippfind: Missing regular expression after %s."
-msgstr "ippfind: Faltando expressão regular após %s."
-
-#, c-format
-msgid "ippfind: Missing semi-colon after %s."
-msgstr "ippfind: Faltando dois-pontos após %s."
-
-msgid "ippfind: Out of memory."
-msgstr "ippfind: Memória insuficiente."
-
-msgid "ippfind: Too many parenthesis."
-msgstr "ippfind: Número excessivo de parênteses."
-
-#, c-format
-msgid "ippfind: Unable to browse or resolve: %s"
-msgstr "ippfind: Não foi possível navegar ou resolver: %s"
-
-#, c-format
-msgid "ippfind: Unable to execute \"%s\": %s"
-msgstr "ippfind: Não foi possível executar \"%s\": %s"
-
-#, c-format
-msgid "ippfind: Unable to use Bonjour: %s"
-msgstr "ippfind: Não foi possível usar Bonjour: %s"
-
-#, c-format
-msgid "ippfind: Unknown variable \"{%s}\"."
-msgstr "ippfind: Argumento desconhecido \"{%s}\"."
-
-msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
-msgstr "ipptool: \"-i\" e \"-n\" são incompatíveis com \"-X\"."
-
-#, c-format
-msgid "ipptool: Bad URI - %s."
-msgstr "ipptool: URI inválida - %s."
-
-msgid "ipptool: Invalid seconds for \"-i\"."
-msgstr "ipptool: Segundos inválidos para \"-i\"."
-
-msgid "ipptool: May only specify a single URI."
-msgstr "ipptool: Só é possível especificar uma única URI."
-
-msgid "ipptool: Missing count for \"-n\"."
-msgstr "ipptool: Contagem faltando para \"-n\"."
-
-msgid "ipptool: Missing filename for \"-f\"."
-msgstr "ipptool: Faltando nome de arquivo para \"-f\"."
-
-msgid "ipptool: Missing name=value for \"-d\"."
-msgstr "ipptool: Faltando nome=valor para\"-d\"."
-
-msgid "ipptool: Missing seconds for \"-i\"."
-msgstr "ipptool: Faltando segundos para \"-i\"."
-
-msgid "ipptool: URI required before test file."
-msgstr "ipptool: URI necessária antes do arquivo de teste."
-
-#, c-format
-msgid "ipptool: Unknown option \"-%c\"."
-msgstr "ipptool: Opção desconhecida \"-%c\"."
-
-msgid "job-printer-uri attribute missing."
-msgstr "Faltando atributo de job-printer-uri."
-
-msgid "lpadmin: Class name can only contain printable characters."
-msgstr "lpadmin: Nome da classe só pode conter caracteres imprimíveis."
-
-msgid "lpadmin: Expected PPD after \"-P\" option."
-msgstr "lpadmin: Esperava PPD após a opção \"-P\"."
-
-msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
-msgstr ""
-"lpadmin: Esperava permitir/negar lista de usuários após a opção \"-u\"."
-
-msgid "lpadmin: Expected class after \"-r\" option."
-msgstr "lpadmin: Esperava a classe após a opção \"-r\"."
-
-msgid "lpadmin: Expected class name after \"-c\" option."
-msgstr "lpadmin: Esperava nome de classe após a opção \"-c\"."
-
-msgid "lpadmin: Expected description after \"-D\" option."
-msgstr "lpadmin: Esperava descrição após a opção \"-D\"."
-
-msgid "lpadmin: Expected device URI after \"-v\" option."
-msgstr "lpadmin: Esperava URI de dispositivo após a opção \"-v\"."
-
-msgid "lpadmin: Expected file type(s) after \"-I\" option."
-msgstr "lpadmin: Esperava tipo(s) de arquivo(s) após a opção \"-I\"."
-
-msgid "lpadmin: Expected hostname after \"-h\" option."
-msgstr "lpadmin: Esperava nome do máquina após a opção \"-h\"."
-
-msgid "lpadmin: Expected interface after \"-i\" option."
-msgstr "lpadmin: Esperava interface após a opção \"-i\"."
-
-msgid "lpadmin: Expected location after \"-L\" option."
-msgstr "lpadmin: Esperava localização após a opção \"-L\"."
-
-msgid "lpadmin: Expected model after \"-m\" option."
-msgstr "lpadmin: Esperava modelo após a opção \"-m\"."
-
-msgid "lpadmin: Expected name after \"-R\" option."
-msgstr "lpadmin: Esperava nome após a opção \"-R\"."
-
-msgid "lpadmin: Expected name=value after \"-o\" option."
-msgstr "lpadmin: Esperava nome=valor após a opção \"-o\"."
-
-msgid "lpadmin: Expected printer after \"-p\" option."
-msgstr "lpadmin: Esperava impressora após a opção \"-p\"."
-
-msgid "lpadmin: Expected printer name after \"-d\" option."
-msgstr "lpadmin: Esperava nome da impressora após a opção \"-d\"."
-
-msgid "lpadmin: Expected printer or class after \"-x\" option."
-msgstr "lpadmin: Esperava impressora ou classe após a opção \"-x\"."
-
-msgid "lpadmin: No member names were seen."
-msgstr "lpadmin: Nenhum nome de membros foi encontrado."
-
-#, c-format
-msgid "lpadmin: Printer %s is already a member of class %s."
-msgstr "lpadmin: Impressora %s já é um membro da classe %s."
-
-#, c-format
-msgid "lpadmin: Printer %s is not a member of class %s."
-msgstr "lpadmin: Impressora %s não é membro da classe %s."
-
-msgid "lpadmin: Printer name can only contain printable characters."
-msgstr "lpadmin: Nome da impressora só pode conter caracteres imprimíveis."
-
-msgid ""
-"lpadmin: Unable to add a printer to the class:\n"
-" You must specify a printer name first."
-msgstr ""
-"lpadmin: Não é possível adicionar impressora à classe\n"
-" Você deve primeiro especificar o nome da impressora."
-
-#, c-format
-msgid "lpadmin: Unable to connect to server: %s"
-msgstr "lpadmin: Não foi possível conectar ao servidor: %s"
-
-msgid "lpadmin: Unable to create temporary file"
-msgstr "lpadmin: Não foi possível criar arquivo temporário"
-
-msgid ""
-"lpadmin: Unable to delete option:\n"
-" You must specify a printer name first."
-msgstr ""
-"lpadmin: Não foi possível excluir opção:\n"
-" Você deve primeiro especificar o nome da impressora."
-
-#, c-format
-msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
-msgstr "lpadmin: Não foi possível abrir o arquivo PPD \"%s\" - %s"
-
-msgid ""
-"lpadmin: Unable to remove a printer from the class:\n"
-" You must specify a printer name first."
-msgstr ""
-"lpadmin: Não foi possível excluir impressora da classe:\n"
-" Você deve primeiro especificar o nome da impressora."
-
-msgid ""
-"lpadmin: Unable to set the printer options:\n"
-" You must specify a printer name first."
-msgstr ""
-"lpadmin: Não foi possível definir as opções da impressora:\n"
-" Você deve primeiro especificar o nome da impressora."
-
-#, c-format
-msgid "lpadmin: Unknown allow/deny option \"%s\"."
-msgstr "lpadmin: Opção de permitir/negar desconhecida \"%s\"."
-
-#, c-format
-msgid "lpadmin: Unknown argument \"%s\"."
-msgstr "lpadmin: Argumento desconhecido \"%s\"."
-
-#, c-format
-msgid "lpadmin: Unknown option \"%c\"."
-msgstr "lpadmin: Opção desconhecida \"%c\"."
-
-msgid "lpadmin: Warning - content type list ignored."
-msgstr "lpadmin: Aviso - lista de tipos de conteúdos ignorada."
-
-msgid "lpc> "
-msgstr "lpc> "
-
-msgid "lpinfo: Expected 1284 device ID string after \"--device-id\"."
-msgstr ""
-"lpinfo: Esperava string de ID de dispositivo 1284 após \"--device-id\"."
-
-msgid "lpinfo: Expected language after \"--language\"."
-msgstr "lpinfo: Esperava idioma após \"--language\"."
-
-msgid "lpinfo: Expected make and model after \"--make-and-model\"."
-msgstr "lpinfo: Esperava marca e modelo após \"--make-and-model\"."
-
-msgid "lpinfo: Expected product string after \"--product\"."
-msgstr "lpinfo: Esperava string de produto após \"--product\"."
-
-msgid "lpinfo: Expected scheme list after \"--exclude-schemes\"."
-msgstr "lpinfo: Esperava lista de esquemas após \"--exclude-schemes\"."
-
-msgid "lpinfo: Expected scheme list after \"--include-schemes\"."
-msgstr "lpinfo: Esperava lista de esquemas após \"--include-schemes\"."
-
-msgid "lpinfo: Expected timeout after \"--timeout\"."
-msgstr "lpinfo: Esperava tempo de espera após \"--timeout\"."
-
-#, c-format
-msgid "lpinfo: Unknown argument \"%s\"."
-msgstr "lpinfo: Argumento desconhecido \"%s\"."
-
-#, c-format
-msgid "lpinfo: Unknown option \"%c\"."
-msgstr "lpinfo: Opção desconhecida \"%c\"."
-
-#, c-format
-msgid "lpinfo: Unknown option \"%s\"."
-msgstr "lpinfo: Opção desconhecida \"%s\"."
-
-#, c-format
-msgid "lpmove: Unable to connect to server: %s"
-msgstr "lpmove: Não foi possível conectar ao servidor: %s"
-
-#, c-format
-msgid "lpmove: Unknown argument \"%s\"."
-msgstr "lpmove: Argumento desconhecido \"%s\"."
-
-#, c-format
-msgid "lpmove: Unknown option \"%c\"."
-msgstr "lpmove: Opção desconhecida \"%c\"."
-
-msgid "lpoptions: No printers."
-msgstr "lpoptions: Nenhuma impressora."
-
-#, c-format
-msgid "lpoptions: Unable to add printer or instance: %s"
-msgstr "lpoptions: Não foi possível adicionar impressora ou instância: %s"
-
-#, c-format
-msgid "lpoptions: Unable to get PPD file for %s: %s"
-msgstr "lpoptions: Não foi possível obter o arquivo PPD para %s: %s"
-
-#, c-format
-msgid "lpoptions: Unable to open PPD file for %s."
-msgstr "lpoptions: Não foi possível abrir o arquivo PPD para %s."
-
-msgid "lpoptions: Unknown printer or class."
-msgstr "lpoptions: Impressora ou classe desconhecida."
-
-msgid "lppasswd: Only root can add or delete passwords."
-msgstr "lppasswd: Somente o root pode adicionar ou excluir senhas."
-
-msgid "lppasswd: Password file busy."
-msgstr "lppasswd: Arquivo de senhas ocupado."
-
-msgid "lppasswd: Password file not updated."
-msgstr "lppasswd: Arquivo de senhas não atualizado."
-
-msgid "lppasswd: Sorry, password doesn't match."
-msgstr "lppasswd: Desculpe, senha não corresponde."
-
-msgid "lppasswd: Sorry, password rejected."
-msgstr "lppasswd: Desculpe, senha rejeitada."
-
-msgid "lppasswd: Sorry, passwords don't match."
-msgstr "lppasswd: Desculpe, senhas não correspondem."
-
-#, c-format
-msgid "lppasswd: Unable to copy password string: %s"
-msgstr "lppasswd: Não foi possível copiar string de senha: %s"
-
-#, c-format
-msgid "lppasswd: Unable to open password file: %s"
-msgstr "lppasswd: Não foi possível abrir arquivo de senhas: %s"
-
-#, c-format
-msgid "lppasswd: Unable to write to password file: %s"
-msgstr "lppasswd: Não foi possível gravar no arquivo de senha: %s"
-
-#, c-format
-msgid "lppasswd: failed to backup old password file: %s"
-msgstr "lppasswd: Falha ao fazer backup do arquivo de senhas antigo: %s"
-
-#, c-format
-msgid "lppasswd: failed to rename password file: %s"
-msgstr "lppasswd: Falha ao renomear arquivo de senhas: %s"
-
-#, c-format
-msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
-msgstr "lppasswd: Usuário \"%s\" e grupo \"%s\" não existem."
-
-#, c-format
-msgid ""
-"lpstat: error - %s environment variable names non-existent destination \"%s"
-"\"."
-msgstr ""
-"lpstat: Erro - variável de ambiente %s contém destino inexistente \"%s\"."
-
-#, c-format
-msgid "members of class %s:"
-msgstr "membros da classe %s:"
-
-msgid "no entries"
-msgstr "nenhum registro"
-
-msgid "no system default destination"
-msgstr "nenhum destino padrão de sistema"
-
-msgid "notify-events not specified."
-msgstr "notify-events não especificado."
-
-#, c-format
-msgid "notify-recipient-uri URI \"%s\" is already used."
-msgstr "URI de notify-recipient-uri \"%s\" já está sendo usada."
-
-#, c-format
-msgid "notify-recipient-uri URI \"%s\" uses unknown scheme."
-msgstr "URI de notify-recipient-uri \"%s\" usa um esquema desconhecido."
-
-msgid "pending"
-msgstr "pendente"
-
-#, c-format
-msgid "ppdc: Adding include directory \"%s\"."
-msgstr "ppdc: Adicionando diretório de include \"%s\"."
-
-#, c-format
-msgid "ppdc: Adding/updating UI text from %s."
-msgstr "ppdc: Adicionando/atualizando texto de UI de %s."
-
-#, c-format
-msgid "ppdc: Bad boolean value (%s) on line %d of %s."
-msgstr "ppdc: Valor booleano inválido (%s) na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Bad font attribute: %s"
-msgstr "ppdc: Atributo de fonte inválido: %s"
-
-#, c-format
-msgid "ppdc: Bad resolution name \"%s\" on line %d of %s."
-msgstr "ppdc: Nome de resolução inválido \"%s\" na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Bad status keyword %s on line %d of %s."
-msgstr "ppdc: palavra-chave de estado inválida %s na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Bad variable substitution ($%c) on line %d of %s."
-msgstr "ppdc: Substituição de variável inválida ($%c) na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Choice found on line %d of %s with no Option."
-msgstr "ppdc: Escolha encontrada na linha %d de %s com nenhuma opção."
-
-#, c-format
-msgid "ppdc: Duplicate #po for locale %s on line %d of %s."
-msgstr "ppdc: Duplicata de #po para o local %s na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected a filter definition on line %d of %s."
-msgstr "ppdc: Esperava a definição de um filtro na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected a program name on line %d of %s."
-msgstr "ppdc: Esperava o nome de um programa na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected boolean value on line %d of %s."
-msgstr "ppdc: Esperava um valor booleano na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected charset after Font on line %d of %s."
-msgstr "ppdc: Esperava conjunto de caracteres após Font na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected choice code on line %d of %s."
-msgstr "ppdc: Esperava código de escolha na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected choice name/text on line %d of %s."
-msgstr "ppdc: Esperava texto/nome de escolha na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected color order for ColorModel on line %d of %s."
-msgstr "ppdc: Esperava ordem de cores para ColorModel na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected colorspace for ColorModel on line %d of %s."
-msgstr "ppdc: Esperava espaço de cores para ColorModel na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected compression for ColorModel on line %d of %s."
-msgstr "ppdc: Esperava compressão para ColorModel na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected constraints string for UIConstraints on line %d of %s."
-msgstr ""
-"ppdc: Esperava string de restrições para UIConstraints na linha %d de %s."
-
-#, c-format
-msgid ""
-"ppdc: Expected driver type keyword following DriverType on line %d of %s."
-msgstr ""
-"ppdc: Esperava palavra-chave de tipo de driver seguindo DriverType na linha "
-"%d de %s."
-
-#, c-format
-msgid "ppdc: Expected duplex type after Duplex on line %d of %s."
-msgstr "ppdc: Esperava tipo Duplex após Duplex na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected encoding after Font on line %d of %s."
-msgstr "ppdc: Esperava codificação após Font na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected filename after #po %s on line %d of %s."
-msgstr "ppdc: Esperava nome de arquivo após #po %s na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected group name/text on line %d of %s."
-msgstr "ppdc: Esperava text/nome de grupo na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected include filename on line %d of %s."
-msgstr "ppdc: Esperava inclusão de nome de arquivo na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected integer on line %d of %s."
-msgstr "ppdc: Esperava número inteiro na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected locale after #po on line %d of %s."
-msgstr "ppdc: Esperava local após #po na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name after %s on line %d of %s."
-msgstr "ppdc: Esperava nome após %s na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name after FileName on line %d of %s."
-msgstr "ppdc: Esperava nome após FileName na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name after Font on line %d of %s."
-msgstr "ppdc: Esperava nome após Font na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name after Manufacturer on line %d of %s."
-msgstr "ppdc: Esperava nome após Manufacturer na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name after MediaSize on line %d of %s."
-msgstr "ppdc: Esperava nome após MediaSize na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name after ModelName on line %d of %s."
-msgstr "ppdc: Esperava nome após ModelName na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name after PCFileName on line %d of %s."
-msgstr "ppdc: Esperava nome após PCFileName na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name/text after %s on line %d of %s."
-msgstr "ppdc: Esperava nome/texto após %s na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name/text after Installable on line %d of %s."
-msgstr "ppdc: Esperava nome/texto após Installable na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name/text after Resolution on line %d of %s."
-msgstr "ppdc: Esperava nome/texto após Resolution na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected name/text combination for ColorModel on line %d of %s."
-msgstr ""
-"ppdc: Esperava combinação de nome/texto para ColorModel na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected option name/text on line %d of %s."
-msgstr "ppdc: Esperava opção de nome/texto na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected option section on line %d of %s."
-msgstr "ppdc: Esperava opção de seção na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected option type on line %d of %s."
-msgstr "ppdc: Esperava tipo da opção na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected override field after Resolution on line %d of %s."
-msgstr ""
-"ppdc: Esperava um campo de substituição após Resolution na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected quoted string on line %d of %s."
-msgstr "ppdc: Esperava string em aspas na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected real number on line %d of %s."
-msgstr "ppdc: Esperava número real na linha %d de %s."
-
-#, c-format
-msgid ""
-"ppdc: Expected resolution/mediatype following ColorProfile on line %d of %s."
-msgstr ""
-"ppdc: Esperava resolução/tipo de mídia seguindo ColorProfile na linha %d de "
-"%s."
-
-#, c-format
-msgid ""
-"ppdc: Expected resolution/mediatype following SimpleColorProfile on line %d "
-"of %s."
-msgstr ""
-"ppdc: Esperava resolução/tipo de mídia seguindo SimpleColorProfile na linha "
-"%d de %s."
-
-#, c-format
-msgid "ppdc: Expected selector after %s on line %d of %s."
-msgstr "ppdc: Esperava seletor após %s na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected status after Font on line %d of %s."
-msgstr "ppdc: Esperava estado após Font na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected string after Copyright on line %d of %s."
-msgstr "ppdc: Esperava string após Copyright na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected string after Version on line %d of %s."
-msgstr "ppdc: Esperava string após Version na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected two option names on line %d of %s."
-msgstr "ppdc: Esperava nomes de duas opções na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected value after %s on line %d of %s."
-msgstr "ppdc: Esperava valor após %s na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Expected version after Font on line %d of %s."
-msgstr "ppdc: Esperava versão após Font na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Invalid #include/#po filename \"%s\"."
-msgstr "ppdc: Nome de arquivo \"%s\" de #include/#po inválido. "
-
-#, c-format
-msgid "ppdc: Invalid cost for filter on line %d of %s."
-msgstr "ppdc: Custo inválido para filtro na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Invalid empty MIME type for filter on line %d of %s."
-msgstr "ppdc: Tipo MIME vazio inválido para filtro na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Invalid empty program name for filter on line %d of %s."
-msgstr "ppdc: Nome de programa vazio inválido na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Invalid option section \"%s\" on line %d of %s."
-msgstr "ppdc: Seção \"%s\" inválida de opção na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Invalid option type \"%s\" on line %d of %s."
-msgstr "ppdc: Tipo \"%s\" inválido de opção na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Loading driver information file \"%s\"."
-msgstr "ppdc: Carregando arquivo \"%s\" de informações de driver."
-
-#, c-format
-msgid "ppdc: Loading messages for locale \"%s\"."
-msgstr "ppdc: Carregando mensagens para locale \"%s\" ."
-
-#, c-format
-msgid "ppdc: Loading messages from \"%s\"."
-msgstr "ppdc: Carregando mensagens de \"%s\"."
-
-#, c-format
-msgid "ppdc: Missing #endif at end of \"%s\"."
-msgstr "ppdc: Faltando #endif ao final de \"%s\"."
-
-#, c-format
-msgid "ppdc: Missing #if on line %d of %s."
-msgstr "ppdc: Faltando #if na linha %d de %s."
-
-#, c-format
-msgid ""
-"ppdc: Need a msgid line before any translation strings on line %d of %s."
-msgstr ""
-"ppdc: Precisa de uma linha de msgid antes de qualquer string de tradução na "
-"linha %d de %s."
-
-#, c-format
-msgid "ppdc: No message catalog provided for locale %s."
-msgstr "ppdc: Nenhum catálogo de mensagens fornecido para o locale %s."
-
-#, c-format
-msgid "ppdc: Option %s defined in two different groups on line %d of %s."
-msgstr "ppdc: Opção %s definida em dois grupos diferentes na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Option %s redefined with a different type on line %d of %s."
-msgstr "ppdc: Opção %s redefinida com um tipo diferente na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Option constraint must *name on line %d of %s."
-msgstr "ppdc: Restrição da opção deve *name na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Too many nested #if's on line %d of %s."
-msgstr "ppdc: Muitos #if aninhados demais na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Unable to create PPD file \"%s\" - %s."
-msgstr "ppdc: Não foi possível criar o arquivo PPD \"%s\" - %s."
-
-#, c-format
-msgid "ppdc: Unable to create output directory %s: %s"
-msgstr "ppdc: Não foi possível criar diretório de saída %s: %s"
-
-#, c-format
-msgid "ppdc: Unable to create output pipes: %s"
-msgstr "ppdc: Não foi possível criar redirecionamento de saída: %s"
-
-#, c-format
-msgid "ppdc: Unable to execute cupstestppd: %s"
-msgstr "ppdc: Não foi possível executar cupstestppd: %s"
-
-#, c-format
-msgid "ppdc: Unable to find #po file %s on line %d of %s."
-msgstr "ppdc: Não foi possível encontrar arquivo #po %s na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Unable to find include file \"%s\" on line %d of %s."
-msgstr ""
-"ppdc: Não foi possível encontrar o arquivo include \"%s\" na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Unable to find localization for \"%s\" - %s"
-msgstr "ppdc: Não foi possível encontrar localização para \"%s\" - %s"
-
-#, c-format
-msgid "ppdc: Unable to load localization file \"%s\" - %s"
-msgstr "ppdc: Não foi possível carregar arquivo de localização \"%s\" - %s"
-
-#, c-format
-msgid "ppdc: Unable to open %s: %s"
-msgstr "ppdc: Não foi possível abrir %s: %s"
-
-#, c-format
-msgid "ppdc: Undefined variable (%s) on line %d of %s."
-msgstr "ppdc: Variável indefinida (%s) na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Unexpected text on line %d of %s."
-msgstr "ppdc: Texto inesperado na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Unknown driver type %s on line %d of %s."
-msgstr "ppdc: Tipo de driver %s desconhecido na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Unknown duplex type \"%s\" on line %d of %s."
-msgstr "ppdc: Tipo de duplex desconhecido \"%s\" na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Unknown media size \"%s\" on line %d of %s."
-msgstr "ppdc: Tamanho de mídia desconhecido \"%s\" na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Unknown message catalog format for \"%s\"."
-msgstr "ppdc: Formato de catálogo de mensagens desconhecido para \"%s\"."
-
-#, c-format
-msgid "ppdc: Unknown token \"%s\" seen on line %d of %s."
-msgstr "ppdc: Token desconhecido \"%s\" visto na linha %d de %s."
-
-#, c-format
-msgid ""
-"ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s."
-msgstr ""
-"ppdc: Caractere final desconhecido em número real \"%s\" na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Unterminated string starting with %c on line %d of %s."
-msgstr "ppdc: Início de string não terminada com %c na linha %d de %s."
-
-#, c-format
-msgid "ppdc: Warning - overlapping filename \"%s\"."
-msgstr "ppdc: Aviso - nome de arquivo em sobreposição \"%s\"."
-
-#, c-format
-msgid "ppdc: Writing %s."
-msgstr "ppdc: Gravando %s."
-
-#, c-format
-msgid "ppdc: Writing PPD files to directory \"%s\"."
-msgstr "ppdc: Gravando arquivos PPD para a pasta \"%s\"."
-
-#, c-format
-msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s."
-msgstr "ppdmerge: LanguageVersion incorreto \"%s\" em %s."
-
-#, c-format
-msgid "ppdmerge: Ignoring PPD file %s."
-msgstr "ppdmerge: Ignorando o arquivo PPD %s."
-
-#, c-format
-msgid "ppdmerge: Unable to backup %s to %s - %s"
-msgstr "ppdmerge: Não é possível fazer backup de %s para %s - %s"
-
-#, c-format
-msgid "printer %s disabled since %s -"
-msgstr "impressora %s desabilitada desde %s -"
-
-#, c-format
-msgid "printer %s is idle. enabled since %s"
-msgstr "impressora %s está inativa; habilitada desde %s"
-
-#, c-format
-msgid "printer %s now printing %s-%d. enabled since %s"
-msgstr "impressora %s está imprimindo %s-%d; habilitada desde %s"
-
-#, c-format
-msgid "printer %s/%s disabled since %s -"
-msgstr "impressora %s/%s desabilitada desde %s -"
-
-#, c-format
-msgid "printer %s/%s is idle. enabled since %s"
-msgstr "impressora %s/%s está inativa; habilitada desde %s"
-
-#, c-format
-msgid "printer %s/%s now printing %s-%d. enabled since %s"
-msgstr "impressora %s/%s está imprimindo %s-%d; habilitada desde %s"
-
-msgid "processing"
-msgstr "processando"
-
-#, c-format
-msgid "request id is %s-%d (%d file(s))"
-msgstr "id de requisição é %s-%d (%d arquivo(s))"
-
-msgid "request-id uses indefinite length"
-msgstr "request-id usa comprimento indefinido"
-
-msgid "scheduler is not running"
-msgstr "Agendador não está em execução"
-
-msgid "scheduler is running"
-msgstr "Agendador está em execução"
-
-#, c-format
-msgid "stat of %s failed: %s"
-msgstr "falhou o estado de %s: %s"
-
-msgid "status\t\tShow status of daemon and queue."
-msgstr "status\t\tMostra estado do daemon e da fila."
-
-msgid "stopped"
-msgstr "parou"
-
-#, c-format
-msgid "system default destination: %s"
-msgstr "destino padrão do sistema: %s"
-
-#, c-format
-msgid "system default destination: %s/%s"
-msgstr "destino padrão do sistema: %s/%s"
-
-msgid "unknown"
-msgstr "desconhecido"
-
-msgid "untitled"
-msgstr "sem título"
-
-msgid "variable-bindings uses indefinite length"
-msgstr "variable-bindings usa comprimento indefinido"
diff --git a/locale/cups_ru.po b/locale/cups_ru.po
index 4fd839713..afd0a8fff 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-08-29 22:25-0400\n"
"PO-Revision-Date: 2009-02-16 12:00-0800\n"
"Last-Translator: Apple Inc.\n"
"Language-Team: Apple Inc.\n"
@@ -799,6 +799,9 @@ msgstr ""
msgid " --false Always false."
msgstr ""
+msgid " --help Show help."
+msgstr ""
+
msgid " --help Show this help."
msgstr ""
@@ -808,6 +811,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 ""
@@ -838,6 +844,11 @@ msgstr ""
msgid " --remote True if service is remote."
msgstr ""
+msgid ""
+" --stop-after-include-error\n"
+" Stop tests after a failed INCLUDE."
+msgstr ""
+
msgid " --true Always true."
msgstr ""
@@ -853,6 +864,9 @@ msgstr ""
msgid " --version Show program version."
msgstr ""
+msgid " --version Show version."
+msgstr ""
+
msgid " -4 Connect using IPv4."
msgstr ""
@@ -893,6 +907,11 @@ msgstr ""
msgid " -L Send requests using content-length."
msgstr ""
+msgid ""
+" -P filename.plist Produce XML plist to a file and test report to "
+"standard output."
+msgstr ""
+
msgid " -P filename.ppd Set PPD file."
msgstr ""
@@ -931,6 +950,9 @@ msgstr ""
msgid " -a Export all printers."
msgstr ""
+msgid " -c Produce CSV output."
+msgstr ""
+
msgid " -c catalog.po Load the specified message catalog."
msgstr ""
@@ -988,7 +1010,10 @@ msgstr ""
msgid " -l List attributes."
msgstr ""
-msgid " -l Run cupsd from launchd(8)."
+msgid " -l Produce plain text output."
+msgstr ""
+
+msgid " -l Run cupsd on demand."
msgstr ""
msgid " -l lang[,lang,...] Specify the output language(s) (locale)."
@@ -1319,11 +1344,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
@@ -1551,6 +1600,10 @@ 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 ""
@@ -1587,6 +1640,10 @@ 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 ""
@@ -2172,9 +2229,6 @@ msgstr ""
msgid "70"
msgstr "70"
-msgid "720dpi"
-msgstr "720dpi"
-
msgid "75"
msgstr "75"
@@ -2459,6 +2513,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 +2542,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 +2589,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 +2611,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 +2648,9 @@ msgstr "CMYK"
msgid "CPCL Label Printer"
msgstr "Принтер Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸ Ñтикеток CPCL"
+msgid "Cancel Jobs"
+msgstr ""
+
msgid "Cancel RSS Subscription"
msgstr "Отменить подпиÑку на RSS"
@@ -2732,6 +2810,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 +2820,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 +3389,9 @@ msgstr "Строка длиннее разрешенного предела (255
msgid "List Available Printers"
msgstr "СпиÑок доÑтупных принтеров"
+msgid "Load paper."
+msgstr ""
+
msgid "Long-Edge (Portrait)"
msgstr "По длинной Ñтороне (книжнаÑ)"
@@ -3384,6 +3459,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 ""
@@ -3435,12 +3516,6 @@ msgstr ""
msgid "Never"
msgstr "Ðикогда"
-msgid "New Stylus Color Series"
-msgstr "Ð¡ÐµÑ€Ð¸Ñ Stylus Color нового поколениÑ"
-
-msgid "New Stylus Photo Series"
-msgstr "Ð¡ÐµÑ€Ð¸Ñ Stylus Photo нового поколениÑ"
-
msgid "No"
msgstr "Ðет"
@@ -3514,6 +3589,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 +3692,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"
+msgid "Output bin is full."
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"
+msgid "Output bin is missing."
msgstr ""
msgid "PASS"
@@ -3657,6 +3731,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 +3869,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 +3881,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 +3941,9 @@ msgstr "Сервер загружен"
msgid "Server Stopped"
msgstr "Сервер оÑтановлен"
+msgid "Server credentials not set."
+msgstr ""
+
msgid "Service Unavailable"
msgstr "Служба недоÑтупна"
@@ -3908,12 +3989,6 @@ msgstr ""
msgid "Statement"
msgstr "Оператор"
-msgid "Stylus Color Series"
-msgstr "Ð¡ÐµÑ€Ð¸Ñ Stylus Color"
-
-msgid "Stylus Photo Series"
-msgstr "Ð¡ÐµÑ€Ð¸Ñ Stylus Photo"
-
#, c-format
msgid "Subscription #%d does not exist."
msgstr ""
@@ -4016,27 +4091,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 +4100,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 +4121,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 +4195,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 +4233,9 @@ msgstr "Лоток 4"
msgid "URI Too Long"
msgstr "Слишком длинный Ð°Ð´Ñ€ÐµÑ URI"
+msgid "URI too large"
+msgstr ""
+
msgid "US Ledger"
msgstr "US Ledger"
@@ -4303,6 +4357,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 +4411,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 +4496,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 +4586,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 +4684,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 +4721,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 +4779,6 @@ msgstr ""
"Ð’Ñ‹ должны получить доÑтуп к Ñтой Ñтранице Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ URL <A HREF=«https://%s:"
"%d%s»>https://%s:%d%s</A>."
-msgid ""
-"Your password must be at least 6 characters long, cannot contain your "
-"username, and must contain at least one letter and number."
-msgstr ""
-
msgid "ZPL Label Printer"
msgstr "Принтер Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸ Ñтикеток ZPL"
@@ -4770,6 +4825,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 +4845,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 +4965,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 +5177,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"
@@ -7270,6 +7283,9 @@ msgstr "Ð”Ð»Ñ variable-bindings длина не уÑтановлена"
#~ msgid "7 x 9\""
#~ msgstr "7 x 9\""
+#~ msgid "720dpi"
+#~ msgstr "720dpi"
+
#~ msgid "8 x 10\""
#~ msgstr "8 x 10\""
@@ -8131,6 +8147,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"
@@ -8547,6 +8572,12 @@ msgstr "Ð”Ð»Ñ variable-bindings длина не уÑтановлена"
#~ msgid "Nested classes are not allowed"
#~ msgstr "Вложенные группы не допуÑкаютÑÑ"
+#~ msgid "New Stylus Color Series"
+#~ msgstr "Ð¡ÐµÑ€Ð¸Ñ Stylus Color нового поколениÑ"
+
+#~ msgid "New Stylus Photo Series"
+#~ msgstr "Ð¡ÐµÑ€Ð¸Ñ Stylus Photo нового поколениÑ"
+
#~ msgid "No PPD name!"
#~ msgstr "Ðет имени PPD!"
@@ -8694,6 +8725,9 @@ msgstr "Ð”Ð»Ñ variable-bindings длина не уÑтановлена"
#~ msgid "Printer offline."
#~ msgstr "Принтер в режиме не подключен к Ñети."
+#~ msgid "Purge Jobs"
+#~ msgstr "Удалить заданиÑ"
+
#~ msgid "Rank Owner Job File(s) Total Size\n"
#~ msgstr ""
#~ "Ранг Владелец Задание Файл(ы) Общий "
@@ -8720,6 +8754,12 @@ msgstr "Ð”Ð»Ñ variable-bindings длина не уÑтановлена"
#~ msgid "Shipping Address - 2 5/16 x 4\""
#~ msgstr "ÐÐ´Ñ€ÐµÑ Ð´Ð¾Ñтавки - 2 5/16 x 4\""
+#~ msgid "Stylus Color Series"
+#~ msgstr "Ð¡ÐµÑ€Ð¸Ñ Stylus Color"
+
+#~ msgid "Stylus Photo Series"
+#~ msgstr "Ð¡ÐµÑ€Ð¸Ñ Stylus Photo"
+
#~ msgid "Tabloid (Oversize)"
#~ msgstr "Tabloid (раÑширенный)"
@@ -8729,12 +8769,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 +8814,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 <cups/cups-private.h>
@@ -71,7 +67,7 @@ main(int argc, /* I - Number of command-line args */
*temp, /* New string */
*msgid, /* msgid string */
*msgstr; /* msgstr string */
- int length; /* Length of combined strings */
+ size_t length; /* Length of combined strings */
int use_msgid; /* Use msgid strings for msgstr? */
@@ -215,7 +211,7 @@ main(int argc, /* I - Number of command-line args */
size_t ptrlen = strlen(ptr); /* Length of string */
- length = (int)strlen(msgstr ? msgstr : msgid);
+ length = strlen(msgstr ? msgstr : msgid);
if ((temp = realloc(msgstr ? msgstr : msgid,
length + ptrlen + 1)) == NULL)
@@ -292,5 +288,5 @@ main(int argc, /* I - Number of command-line args */
/*
- * End of "$Id: po2strings.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: po2strings.c 11558 2014-02-06 18:33:34Z msweet $".
*/
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 <stdio.h>
@@ -116,7 +118,7 @@ read_strings(FILE *strings, /* I - .strings file */
char *bufptr; /* Pointer into buffer */
- while (fgets(buffer, bufsize, strings))
+ while (fgets(buffer, (int)bufsize, strings))
{
if (buffer[0] != '\"')
continue;
@@ -171,5 +173,5 @@ write_po(FILE *po, /* I - .po file */
/*
- * End of "$Id: strings2po.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: strings2po.c 11558 2014-02-06 18:33:34Z msweet $".
*/
diff --git a/locale/translate.c b/locale/translate.c
deleted file mode 100644
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 <cups/cups-private.h>
-#include <unistd.h>
-
-
-/*
- * Local functions...
- */
-
-int save_messages(cups_array_t *cat, const char *filename);
-int translate_messages(cups_array_t *cat, const char *lang);
-int write_string(cups_file_t *fp, const char *s);
-
-
-/*
- * 'main()' - Main entry.
- */
-
-int /* O - Exit status */
-main(int argc, /* I - Number of command-line arguments */
- char *argv[]) /* I - Command-line arguments */
-{
- cups_array_t *cat; /* Message catalog */
-
-
- if (argc != 3)
- {
- fputs("Usage: translate cups_language.po language\n", stderr);
- return (1);
- }
-
- if (access(argv[1], 0))
- cat = _cupsMessageLoad("cups.pot", 1);
- else
- cat = _cupsMessageLoad(argv[1], 1);
-
- if (!cat)
- {
- puts("Unable to load message catalog.");
- return (1);
- }
-
- if (!translate_messages(cat, argv[2]))
- {
- puts("Unable to translate message catalog.");
- return (1);
- }
-
- if (!save_messages(cat, argv[1]))
- {
- puts("Unable to save message catalog.");
- return (1);
- }
-
- return (0);
-}
-
-
-/*
- * 'save_messages()' - Save messages to a .po file.
- */
-
-int /* O - 1 on success, 0 on error */
-save_messages(cups_array_t *cat, /* I - Message catalog */
- const char *filename) /* I - File to save to */
-{
- _cups_message_t *m; /* Current message */
- cups_file_t *fp; /* File pointer */
-
-
- /*
- * Open the message catalog...
- */
-
- if ((fp = cupsFileOpen(filename, "w")) == NULL)
- return (0);
-
- /*
- * Save the messages to a file...
- */
-
- for (m = (_cups_message_t *)cupsArrayFirst(cat);
- m;
- m = (_cups_message_t *)cupsArrayNext(cat))
- {
- if (cupsFilePuts(fp, "msgid \"") < 0)
- break;
-
- if (!write_string(fp, m->id))
- break;
-
- if (cupsFilePuts(fp, "\"\nmsgstr \"") < 0)
- break;
-
- if (m->str)
- {
- if (!write_string(fp, m->str))
- break;
- }
-
- if (cupsFilePuts(fp, "\"\n") < 0)
- break;
- }
-
- cupsFileClose(fp);
-
- return (!m);
-}
-
-
-/*
- * 'translate_messages()' - Translate messages using Google.
- */
-
-int /* O - 1 on success, 0 on error */
-translate_messages(cups_array_t *cat, /* I - Message catalog */
- const char *lang) /* I - Output language... */
-{
- /*
- * Google provides a simple translation/language tool for translating
- * from one language to another. It is far from perfect, however it
- * can be used to get a basic translation done or update an existing
- * translation when no other resources are available.
- *
- * Translation requests are sent as HTTP POSTs to
- * "http://translate.google.com/translate_t" with the following form
- * variables:
- *
- * Name Description Value
- * -------- ---------------------------------- ----------------
- * hl Help language? "en"
- * ie Input encoding "UTF8"
- * langpair Language pair "en|" + language
- * oe Output encoding "UTF8"
- * text Text to translate translation string
- */
-
- int ret; /* Return value */
- _cups_message_t *m; /* Current message */
- int tries; /* Number of tries... */
- http_t *http; /* HTTP connection */
- http_status_t status; /* Status of POST request */
- char *idptr, /* Pointer into msgid */
- buffer[65536], /* Input/output buffer */
- *bufptr, /* Pointer into buffer */
- *bufend, /* Pointer to end of buffer */
- length[16]; /* Content length */
- int bytes; /* Number of bytes read */
-
-
- /*
- * Connect to translate.google.com...
- */
-
- puts("Connecting to translate.google.com...");
-
- if ((http = httpConnect("translate.google.com", 80)) == NULL)
- {
- perror("Unable to connect to translate.google.com");
- return (0);
- }
-
- /*
- * Scan the current messages, requesting a translation of any untranslated
- * messages...
- */
-
- for (m = (_cups_message_t *)cupsArrayFirst(cat), ret = 1;
- m;
- m = (_cups_message_t *)cupsArrayNext(cat))
- {
- /*
- * Skip messages that are already translated...
- */
-
- if (m->str && m->str[0])
- continue;
-
- /*
- * Encode the form data into the buffer...
- */
-
- snprintf(buffer, sizeof(buffer),
- "hl=en&ie=UTF8&langpair=en|%s&oe=UTF8&text=", lang);
- bufptr = buffer + strlen(buffer);
- bufend = buffer + sizeof(buffer) - 5;
-
- for (idptr = m->id; *idptr && bufptr < bufend; idptr ++)
- if (*idptr == ' ')
- *bufptr++ = '+';
- else if (*idptr < ' ' || *idptr == '%')
- {
- sprintf(bufptr, "%%%02X", *idptr & 255);
- bufptr += 3;
- }
- else if (*idptr != '&')
- *bufptr++ = *idptr;
-
- *bufptr++ = '&';
- *bufptr = '\0';
-
- sprintf(length, "%d", (int)(bufptr - buffer));
-
- /*
- * Send the request...
- */
-
- printf("\"%s\" = ", m->id);
- fflush(stdout);
-
- tries = 0;
-
- do
- {
- httpClearFields(http);
- httpSetField(http, HTTP_FIELD_CONTENT_TYPE,
- "application/x-www-form-urlencoded");
- httpSetField(http, HTTP_FIELD_CONTENT_LENGTH, length);
-
- if (httpPost(http, "/translate_t"))
- {
- httpReconnect(http);
- httpPost(http, "/translate_t");
- }
-
- httpWrite2(http, buffer, bufptr - buffer);
-
- while ((status = httpUpdate(http)) == HTTP_CONTINUE);
-
- if (status != HTTP_OK && status != HTTP_ERROR)
- httpFlush(http);
-
- tries ++;
- }
- while (status == HTTP_ERROR && tries < 10);
-
- if (status == HTTP_OK)
- {
- /*
- * OK, read the translation back...
- */
-
- bufptr = buffer;
- bufend = buffer + sizeof(buffer) - 1;
-
- while ((bytes = httpRead2(http, bufptr, bufend - bufptr)) > 0)
- bufptr += bytes;
-
- if (bytes < 0)
- {
- /*
- * Read error, abort!
- */
-
- puts("READ ERROR!");
- ret = 0;
- break;
- }
-
- *bufptr = '\0';
-
- /*
- * Find the div containing translation
- */
-
- if ((bufptr = strstr(buffer, "<div id=result_box")) == NULL)
- {
- /*
- * No textarea, abort!
- */
-
- puts("NO div id=result_box!");
- ret = 0;
- break;
- }
-
- if ((bufptr = strchr(bufptr, '>')) == NULL)
- {
- /*
- * textarea doesn't end, abort!
- */
-
- puts("DIV SHORT DATA!");
- ret = 0;
- break;
- }
-
- bufptr ++;
-
- if ((bufend = strstr(bufptr, "</div>")) == NULL)
- {
- /*
- * textarea doesn't close, abort!
- */
-
- puts("/DIV SHORT DATA!");
- ret = 0;
- break;
- }
-
- *bufend = '\0';
-
- /*
- * Copy the translation...
- */
-
- m->str = strdup(bufptr);
-
- /*
- * Convert character entities to regular chars...
- */
-
- for (bufptr = strchr(m->str, '&');
- bufptr;
- bufptr = strchr(bufptr + 1, '&'))
- {
- if (!strncmp(bufptr, "&lt;", 4))
- {
- *bufptr = '<';
- _cups_strcpy(bufptr + 1, bufptr + 4);
- }
- else if (!strncmp(bufptr, "&gt;", 4))
- {
- *bufptr = '>';
- _cups_strcpy(bufptr + 1, bufptr + 4);
- }
- else if (!strncmp(bufptr, "&amp;", 5))
- _cups_strcpy(bufptr + 1, bufptr + 5);
- }
-
- printf("\"%s\"\n", m->str);
- }
- else if (status == HTTP_ERROR)
- {
- printf("NETWORK ERROR (%s)!\n", strerror(httpError(http)));
- ret = 0;
- break;
- }
- else
- {
- printf("HTTP ERROR %d!\n", status);
- ret = 0;
- break;
- }
- }
-
- httpClose(http);
-
- return (ret);
-}
-
-
-/*
- * 'write_string()' - Write a quoted string to a file.
- */
-
-int /* O - 1 on success, 0 on failure */
-write_string(cups_file_t *fp, /* I - File to write to */
- const char *s) /* I - String */
-{
- while (*s)
- {
- switch (*s)
- {
- case '\n' :
- if (cupsFilePuts(fp, "\\n") < 0)
- return (0);
- break;
-
- case '\r' :
- if (cupsFilePuts(fp, "\\r") < 0)
- return (0);
- break;
-
- case '\t' :
- if (cupsFilePuts(fp, "\\t") < 0)
- return (0);
- break;
-
- case '\\' :
- if (cupsFilePuts(fp, "\\\\") < 0)
- return (0);
- break;
-
- case '\"' :
- if (cupsFilePuts(fp, "\\\"") < 0)
- return (0);
- break;
-
- default :
- if ((*s & 255) < ' ')
- {
- if (cupsFilePrintf(fp, "\\%o", *s) < 0)
- return (0);
- }
- else if (cupsFilePutChar(fp, *s) < 0)
- return (0);
- break;
- }
-
- s ++;
- }
-
- return (1);
-}
-
-
-/*
- * End of "$Id: translate.c 10996 2013-05-29 11:51:34Z msweet $".
- */
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 <cups/cups.h>\fR
+
+\fBconst char *cupsBackendDeviceURI\fR(\fBchar **\fIargv\fR);
+
+\fBvoid cupsBackendReport\fR(\fBconst char *\fIdevice_scheme\fR,
+ \fBconst char *\fIdevice_uri\fR,
+ \fBconst char *\fIdevice_make_and_model\fR,
+ \fBconst char *\fIdevice_info\fR,
+ \fBconst char *\fIdevice_id\fR,
+ \fBconst char *\fIdevice_location\fR);
+
+\fBssize_t cupsBackChannelWrite\fR(\fBconst char *\fIbuffer\fR,
+ \fBsize_t \fIbytes\fR, \fBdouble \fItimeout\fR);
+
+\fBint cupsSideChannelRead\fR(\fBcups_sc_command_t *\fIcommand\fR,
+ \fBcups_sc_status_t *\fIstatus\fR, \fBchar *\fIdata\fR,
+ \fBint *\fIdatalen\fR, \fBdouble \fItimeout\fR);
+
+\fBint cupsSideChannelWrite\fR(\fBcups_sc_command_t \fIcommand\fR,
+ \fBcups_sc_status_t \fIstatus\fR, \fBconst char *\fIdata\fR,
+ \fBint \fIdatalen\fR, \fBdouble \fItimeout\fR);
+.fi
.SH DESCRIPTION
-Backends are a special type of \fIfilter(7)\fR which is used to send print data
-to and discover different devices on the system.
+Backends are a special type of
+.BR filter (7)
+which is used to send print data to and discover different devices on the system.
.LP
-Like filters, backends must be capable of reading from a filename on the
-command-line or from the standard input, copying the standard input to a
-temporary file as required by the physical interface.
+Like filters, backends must be capable of reading from a filename on the command-line or from the standard input, copying the standard input to a temporary file as required by the physical interface.
.LP
-The command name (argv[0]) is set to the device URI of the destination printer.
-Starting with CUPS 1.1.22, any authentication information in argv[0] is removed,
-so backend developers are urged to use the DEVICE_URI environment variable
-whenever authentication information is required. The CUPS API includes a
-\fIcupsBackendDeviceURI\fR function for retrieving the correct device URI.
+The command name (\fIargv[0]\fR) is set to the device URI of the destination printer. Authentication information in
+.I argv[0]
+is removed, so backend developers are urged to use the
+.B DEVICE_URI
+environment variable whenever authentication information is required. The
+.BR cupsBackendDeviceURI ()
+function may be used to retrieve the correct device URI.
.LP
-Back-channel data from the device should be relayed to the job
-filters by writing to file descriptor 3. The CUPS API includes
-the \fIcupsBackChannelWrite\fR function for this purpose.
-.SH WARNING
-CUPS backends are not generally design to be run directly by the user. Aside
-from the device URI issue (argv[0] and DEVICE_URI environment variable contain
-the device URI), CUPS backends also expect specific environment variables and
-file descriptors, and typically run in a user session that (on OS X) has
-additional restrictions that affect how it runs. Backends can also be installed
-with restricted permissions (0500 or 0700) that tell the scheduler to run them
-as the "root" user instead of an unprivileged user (typically "lp") on the
-system.
+Back-channel data from the device should be relayed to the job filters using the \fIcupsBackChannelWrite\fR function.
.LP
-Unless you are a developer and know what you are doing, please do not run
-backends directly. Instead, use the \fIlp(1)\fR or \fIlpr(1)\fR programs to send
-a print job or \fIlpinfo(8)\fR program to query for available printers using the
-backend. The one exception is the SNMP backend - see \fIsnmpbackend(8)\fR for
-more information.
-.SH DEVICE DISCOVERY
-When run with no arguments, the backend should list the devices and schemes it
-supports or is advertising to stdout. The output consists of zero or more lines
-consisting of any of the following forms:
-
+Backends are responsible for reading side-channel requests using the
+.BR cupsSideChannelRead ()
+function and responding with the
+.BR cupsSideChannelWrite()
+function. The
+.B CUPS_SC_FD
+constant defines the file descriptor that should be monitored for incoming requests.
+.SS DEVICE DISCOVERY
+When run with no arguments, the backend should list the devices and schemes it supports or is advertising to the standard output. The output consists of zero or more lines consisting of any of the following forms:
.nf
+
device-class scheme "Unknown" "device-info"
device-class device-uri "device-make-and-model" "device-info"
device-class device-uri "device-make-and-model" "device-info" "device-id"
device-class device-uri "device-make-and-model" "device-info" "device-id" "device-location"
.fi
.LP
-The \fIdevice-class\fR field is one of the following values:
+The
+.BR cupsBackendReport ()
+function can be used to generate these lines and handle any necessary escaping of characters in the various strings.
+.LP
+The
+.I device-class
+field is one of the following values:
.TP 5
-direct
-.br
-The device-uri refers to a specific direct-access device with no options, such
-as a parallel, USB, or SCSI device.
+.B direct
+The device-uri refers to a specific direct-access device with no options, such as a parallel, USB, or SCSI device.
.TP 5
-file
-.br
+.B file
The device-uri refers to a file on disk.
.TP 5
-network
-.br
+.B network
The device-uri refers to a networked device and conforms to the general form for
network URIs.
.TP 5
-serial
-.br
-The device-uri refers to a serial device with configurable baud rate and other
-options. If the device-uri contains a baud value, it represents the maximum baud
-rate supported by the device.
+.B serial
+The device-uri refers to a serial device with configurable baud rate and other options. If the device-uri contains a baud value, it represents the maximum baud rate supported by the device.
.LP
-The \fIscheme\fR field provides the URI scheme that is supported by the backend.
-Backends should use this form only when the backend supports any URI using that
-scheme. The \fIdevice-uri\fR field specifies the full URI to use when
-communicating with the device.
+The
+.I scheme
+field provides the URI scheme that is supported by the backend. Backends should use this form only when the backend supports any URI using that scheme. The
+.I device-uri
+field specifies the full URI to use when communicating with the device.
.LP
-The \fIdevice-make-and-model\fR field specifies the make and model of the
-device, e.g. "Example Foojet 2000". If the make and model is not known, you must
-report "Unknown".
+The
+.I device-make-and-model
+field specifies the make and model of the device, e.g. "Example Foojet 2000". If the make and model is not known, you must report "Unknown".
.LP
-The \fIdevice-info\fR field specifies additional information about the device.
-Typically this includes the make and model along with the port number or network
-address, e.g. "Example Foojet 2000 USB #1".
+The
+.I device-info
+field specifies additional information about the device. Typically this includes the make and model along with the port number or network address, e.g. "Example Foojet 2000 USB #1".
.LP
-The optional \fIdevice-id\fR field specifies the IEEE-1284 device ID string for
-the device, which is used to select a matching driver.
+The optional
+.I device-id
+field specifies the IEEE-1284 device ID string for the device, which is used to select a matching driver.
.LP
-The optional \fIdevice-location\fR field specifies the physical location of
-the device, which is often used to pre-populate the printer-location attribute
-when adding a printer.
-.SH PERMISSIONS
-Backends without world execute permissions are run as the root user. Otherwise,
-the backend is run using an unprivileged user account, typically "lp".
-.SH EXIT CODES
-The following exit codes are defined for backends; C API constants defined in
-the <cups/backend.h> header file are defined in parenthesis:
+The optional
+.I device-location
+field specifies the physical location of the device, which is often used to pre-populate the printer-location attribute when adding a printer.
+.SS PERMISSIONS
+Backends without world read and execute permissions are run as the root user. Otherwise, the backend is run using an unprivileged user account, typically "lp".
+.SH EXIT STATUS
+The following exit codes are defined for backends:
.TP 5
-0 (CUPS_BACKEND_OK)
-.br
+.B CUPS_BACKEND_OK
The print file was successfully transmitted to the device or remote server.
.TP 5
-1 (CUPS_BACKEND_FAILED)
+.B CUPS_BACKEND_FAILED
.br
-The print file was not successfully transmitted to the device or remote server.
-The scheduler will respond to this by canceling the job, retrying the job, or
-stopping the queue depending on the state of the error-policy attribute.
-.TP 5
-2 (CUPS_BACKEND_AUTH_REQUIRED)
-.br
-The print file was not successfully transmitted because valid authentication
-information is required. The scheduler will respond to this by holding the job
-and adding the "cups-held-for-authentication" keyword to the "job-reasons"
+The print file was not successfully transmitted to the device or remote server. The scheduler will respond to this by canceling the job, retrying the job, or stopping the queue depending on the state of the
+.I printer-error-policy
attribute.
.TP 5
-3 (CUPS_BACKEND_HOLD)
-.br
-The print file was not successfully transmitted because it cannot be printed at
-this time. The scheduler will respond to this by holding the job.
+.B CUPS_BACKEND_AUTH_REQUIRED
+The print file was not successfully transmitted because valid authentication information is required. The scheduler will respond to this by holding the job and adding the 'cups-held-for-authentication' keyword to the "job-reasons" Job Description attribute.
.TP 5
-4 (CUPS_BACKEND_STOP)
-.br
-The print file was not successfully transmitted because it cannot be printed at
-this time. The scheduler will respond to this by stopping the queue.
+.B CUPS_BACKEND_HOLD
+The print file was not successfully transmitted because it cannot be printed at this time. The scheduler will respond to this by holding the job.
.TP 5
-5 (CUPS_BACKEND_CANCEL)
-.br
-The print file was not successfully transmitted because one or more attributes
-are not supported or the job was canceled at the printer. The scheduler will
-respond to this by canceling the job.
+.B CUPS_BACKEND_STOP
+The print file was not successfully transmitted because it cannot be printed at this time. The scheduler will respond to this by stopping the queue.
.TP 5
-6 (CUPS_BACKEND_RETRY)
-.br
-The print file was not successfully transmitted because of a temporary issue.
-The scheduler will retry the job at a future time - other jobs may print before
-this one.
+.B CUPS_BACKEND_CANCEL
+The print file was not successfully transmitted because one or more attributes are not supported or the job was canceled at the printer. The scheduler will respond to this by canceling the job.
.TP 5
-7 (CUPS_BACKEND_RETRY_CURRENT)
-.br
-The print file was not successfully transmitted because of a temporary issue.
-The scheduler will retry the job immediately without allowing intervening jobs.
+.B CUPS_BACKEND_RETRY
+The print file was not successfully transmitted because of a temporary issue. The scheduler will retry the job at a future time - other jobs may print before this one.
+.TP 5
+.B CUPS_BACKEND_RETRY_CURRENT
+The print file was not successfully transmitted because of a temporary issue. The scheduler will retry the job immediately without allowing intervening jobs.
.PP
All other exit code values are reserved.
+.SH ENVIRONMENT
+In addition to the environment variables listed in
+.BR cups (1)
+and
+.BR filter (7),
+CUPS backends can expect the following environment variable:
+.TP 5
+.B DEVICE_URI
+The device URI associated with the printer.
+.SH FILES
+.I /etc/cups/cups-files.conf
+.SH NOTES
+CUPS backends are not generally design to be run directly by the user. Aside from the device URI issue (
+.I argv[0]
+and
+.B DEVICE_URI
+environment variable contain the device URI), CUPS backends also expect specific environment variables and file descriptors, and typically run in a user session that (on OS X) has additional restrictions that affect how it runs. Backends can also be installed with restricted permissions (0500 or 0700) that tell the scheduler to run them as the "root" user instead of an unprivileged user (typically "lp") on the system.
+.LP
+Unless you are a developer and know what you are doing, please do not run backends directly. Instead, use the
+.BR lp (1)
+or
+.BR lpr (1)
+programs to send print jobs or
+.BR lpinfo (8)
+to query for available printers using the backend. The one exception is the SNMP backend - see
+.BR cups-snmp (8)
+for more information.
.SH SEE ALSO
-\fIcups-snmp(8)\fR, \fIcupsd(8)\fR, \fIcupsd.conf(5)\fR, \fIfilter(7)\fR,
-\fIlpinfo(8)\fR,
+.IR cups (1),
+.IR cups-files.conf (5),
+.IR cups-snmp (8),
+.IR cupsd (8),
+.IR filter (7),
+.IR lp (1),
+.IR lpinfo (8),
+.IR lpr (1),
.br
-http://localhost:631/help
+CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
.\"
-.\" End of "$Id: backend.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: backend.man 11793 2014-04-04 19:02:20Z msweet $".
.\"
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
-<Class name> ... </Class>
-.br
-Defines a specific printer class.
-.TP 5
-<DefaultClass name> ... </Class>
-.br
-Defines a default printer class.
-.TP 5
-Accepting Yes
-.TP 5
-Accepting No
-.br
-Specifies whether the printer is accepting new jobs.
-.TP 5
-AllowUser [ user @group ... ]
-.br
-Allows specific users and groups to print to the printer.
-.TP 5
-DenyUser [ user @group ... ]
-.br
-Prevents specific users and groups from printing to the printer.
-.TP 5
-Info text
-.br
-Specifies human-readable text describing the printer.
-.TP 5
-JobSheets banner banner
-.br
-Specifies the banner pages to use for the printer.
-.TP 5
-KLimit number
-.br
-Specifies the job-k-limit value for the printer.
-.TP 5
-Location text
-.br
-Specifies human-readable text describing the location of the printer.
-.TP 5
-OpPolicy name
-.br
-Specifies the operation policy for the printer.
-.TP 5
-PageLimit number
-.br
-Specifies the job-page-limit value for the printer.
-.TP 5
-Printer
-.br
-Specifies a printer that is a member of the printer class.
-.TP 5
-QuotaPeriod seconds
-.br
-Specifies the job-quota-period value for the printer.
-.TP 5
-Shared Yes
-.TP 5
-Shared No
-.br
-Specifies whether the printer is shared.
-.TP 5
-State idle
-.TP 5
-State stopped
-.br
-Specifies the initial state of the printer (Idle or Stopped)
-.TP 5
-StateMessage text
-.br
-Specifies the message associated with the state.
-.TP 5
-StateTime seconds
-.br
-Specifies the date/time associated with the state.
+The \fBclasses.conf\fR file defines the local printer classes that are available. It is normally located in the \fI/etc/cups\fR directory and is maintained by the
+.BR cupsd (8)
+program. This file is not intended to be edited or managed manually.
+.SH NOTES
+The name, location, and format of this file are an implementation detail that will change in future releases of CUPS.
.SH SEE ALSO
-\fIcupsd(8)\fR, \fIcupsd.conf(5)\fR, \fImime.convs(5)\fR,
-\fImime.types(5)\fR, \fIprinters.conf(5)\fR,
-.br
-http://localhost:631/help
+.BR cupsd (8),
+.BR cupsd.conf (5),
+.BR mime.convs (5),
+.BR mime.types (5),
+.BR printers.conf (5),
+.BR subscriptions.conf (5),
+CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
.\"
-.\" End of "$Id: classes.conf.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: classes.conf.man 11817 2014-04-15 16:31:11Z msweet $".
.\"
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<Limit \fIoperation \fR...\fB> \fR... \fB</Limit>\fR
+Specifies the IPP operations that are being limited inside a Policy section. IPP operation names are listed below in the section "IPP OPERATIONS".
.TP 5
-DefaultPolicy policy-name
-.br
-Specifies the default access policy to use.
+\fB<Limit \fImethod \fR...\fB> \fR... \fB</Limit>\fR
.TP 5
-DefaultShared Yes
+\fB<LimitExcept \fImethod \fR...\fB> \fR... \fB</LimitExcept>\fR
+Specifies the HTTP methods that are being limited inside a Location section. HTTP method names are listed below in the section "HTTP METHODS".
.TP 5
-DefaultShared No
-.br
-Specifies whether local printers are shared by default.
+\fBLimitRequestBody \fIsize\fR
+Specifies the maximum size of print files, IPP requests, and HTML form data.
+The default is "0" which disables the limit check.
.TP 5
-Deny all
+\fBListen \fIipv4-address\fB:\fIport\fR
.TP 5
-Deny none
+\fBListen [\fIipv6-address\fB]:\fIport\fR
.TP 5
-Deny host.domain.com
+\fBListen *:\fIport\fR
.TP 5
-Deny *.domain.com
+\fBListen \fI/path/to/domain/socket\fR
+Listens to the specified address and port or domain socket path for connections.
+Multiple Listen directives can be provided to listen on multiple addresses.
+The Listen directive is similar to the Port directive but allows you to restrict access to specific interfaces or networks.
.TP 5
-Deny ip-address
+\fBListenBackLog \fInumber\fR
+Specifies the number of pending connections that will be allowed.
+This normally only affects very busy servers that have reached the MaxClients limit, but can also be triggered by large numbers of simultaneous connections.
+When the limit is reached, the operating system will refuse additional connections until the scheduler can accept the pending ones.
+The default is the OS-defined default limit, typically either "5" for older operating systems or "128" for newer operating systems.
.TP 5
-Deny ip-address/netmask
+\fB<Location \fI/path\fB> \fR... \fB</Location>\fR
+Specifies access control for the named location.
+Paths are documented below in the section "LOCATION PATHS".
.TP 5
-Deny ip-address/mm
+\fBLogDebugHistory \fInumber\fR
+Specifies the number of debugging messages that are retained for logging if an error occurs in a print job. Debug messages are logged regardless of the LogLevel setting.
.TP 5
-Deny @IF(name)
+\fBLogLevel \fRnone
.TP 5
-Deny @LOCAL
-.br
-Denies access to the named host or address.
+\fBLogLevel \fRemerg
.TP 5
-DirtyCleanInterval seconds
-.br
-Specifies the delay for updating of configuration and state files. A value of 0
-causes the update to happen as soon as possible, typically within a few
-milliseconds.
+\fBLogLevel \fRalert
.TP 5
-Encryption IfRequested
+\fBLogLevel \fRcrit
.TP 5
-Encryption Never
+\fBLogLevel \fRerror
.TP 5
-Encryption Required
-.br
-Specifies the level of encryption that is required for a particular
-location.
+\fBLogLevel \fRwarn
.TP 5
-ErrorPolicy abort-job
-Specifies that a failed print job should be aborted (discarded) unless otherwise specified for the printer.
+\fBLogLevel \fRnotice
.TP 5
-ErrorPolicy retry-job
-Specifies that a failed print job should be retried at a later time unless otherwise specified for the printer.
+\fBLogLevel \fRinfo
.TP 5
-ErrorPolicy retry-this-job
-Specifies that a failed print job should be retried immediately unless otherwise specified for the printer.
+\fBLogLevel \fRdebug
.TP 5
-ErrorPolicy stop-printer
-Specifies that a failed print job should stop the printer unless otherwise specified for the printer. The 'stop-printer' error policy is the default.
+\fBLogLevel \fRdebug2
+Specifies the level of logging for the ErrorLog file.
+The value "none" stops all logging while "debug2" logs everything.
+The default is "warn".
.TP 5
-FilterLimit limit
-.br
-Specifies the maximum cost of filters that are run concurrently.
+\fBLogTimeFormat \fRstandard
.TP 5
-FilterNice nice-value
-.br
-Specifies the scheduling priority ("nice" value) of filters that
-are run to print a job.
+\fBLogTimeFormat \fRusecs
+Specifies the format of the date and time in the log files.
+The value "standard" is the default and logs whole seconds while "usecs" logs microseconds.
.TP 5
-GSSServiceName name
-.br
-Specifies the service name when using Kerberos authentication. The default
-service name is "http".
+\fBMaxClients \fInumber\fR
+Specifies the maximum number of simultaneous clients that are allowed by the scheduler.
+The default is "100".
.TP 5
-HostNameLookups On
+\fBMaxClientsPerHost \fInumber\fR
+Specifies the maximum number of simultaneous clients that are allowed from a
+single address.
+The default is the MaxClients value.
.TP 5
-HostNameLookups Off
+\fBMaxCopies \fInumber\fR
+Specifies the maximum number of copies that a user can print of each job.
+The default is "9999".
+.TP 5
+\fBMaxHoldTime \fIseconds\fR
+Specifies the maximum time a job may remain in the "indefinite" hold state before it is canceled.
+The default is "0" which disables cancellation of held jobs.
+.TP 5
+\fBMaxJobs \fInumber\fR
+Specifies the maximum number of simultaneous jobs that are allowed.
+Set to "0" to allow an unlimited number of jobs.
+The default is "500".
+.TP 5
+\fBMaxJobsPerPrinter \fInumber\fR
+Specifies the maximum number of simultaneous jobs that are allowed per printer.
+The default is "0" which allows up to MaxJobs jobs per printer.
+.TP 5
+\fBMaxJobsPerUser \fInumber\fR
+Specifies the maximum number of simultaneous jobs that are allowed per user.
+The default is "0" which allows up to MaxJobs jobs per user.
+.TP 5
+\fBMaxJobTime \fIseconds\fR
+Specifies the maximum time a job may take to print before it is canceled.
+Set to "0" to disable cancellation of "stuck" jobs.
+The default is "10800" (3 hours).
+.TP 5
+\fBMaxLogSize \fIsize\fR
+Specifies the maximum size of the log files before they are rotated.
+The value "0" disables log rotation.
+The default is "1048576" (1MB).
+.TP 5
+\fBMultipleOperationTimeout \fIseconds\fR
+Specifies the maximum amount of time to allow between files in a multiple file print job.
+The default is "300" (5 minutes).
+.TP 5
+\fBPageLogFormat \fIformat-string\fR
+Specifies the format of PageLog lines.
+Sequences beginning with percent (%) characters are replaced with the corresponding information, while all other characters are copied literally.
+The following percent sequences are recognized:
+.nf
+
+ "%%" inserts a single percent character.
+ "%{name}" inserts the value of the specified IPP attribute.
+ "%C" inserts the number of copies for the current page.
+ "%P" inserts the current page number.
+ "%T" inserts the current date and time in common log format.
+ "%j" inserts the job ID.
+ "%p" inserts the printer name.
+ "%u" inserts the username.
+
+.fi
+The default is "%p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}".
+.TP 5
+\fBPassEnv \fIvariable \fR[ ... \fIvariable \fR]
+Passes the specified environment variable(s) to child processes.
.TP 5
-HostNameLookups Double
-.br
-Specifies whether or not to do reverse lookups on client addresses.
+\fB<Policy \fIname\fB> \fR... \fB</Policy>\fR
+Specifies access control for the named policy.
.TP 5
-Include filename
-.br
-Includes the named file.
+\fBPort \fInumber\fR
+Listens to the specified port number for connections.
.TP 5
-JobKillDelay seconds
-.br
-Specifies the number of seconds to wait before killing the filters and backend
-associated with a canceled or held job.
+\fBPreserveJobFiles Yes\fR
.TP 5
-JobPrivateAccess all
+\fBPreserveJobFiles No\fR
.TP 5
-JobPrivateAccess default
+\fBPreserveJobFiles \fIseconds\fR
+Specifies whether job files (documents) are preserved after a job is printed.
+If a numeric value is specified, job files are preserved for the indicated number of seconds after printing.
+The default is "86400" (preserve 1 day).
.TP 5
-JobPrivateAccess {user|@group|@ACL|@OWNER|@SYSTEM}+
-.br
-Specifies an access list for a job's private values. The "default" access list
-is "@OWNER @SYSTEM". "@ACL" maps to the printer's requesting-user-name-allowed
-or requesting-user-name-denied values.
+\fBPreserveJobHistory Yes\fR
.TP 5
-JobPrivateValues all
+\fBPreserveJobHistory No\fR
.TP 5
-JobPrivateValues default
+\fBPreserveJobHistory \fIseconds\fR
+Specifies whether the job history is preserved after a job is printed.
+If a numeric value is specified, the job history is preserved for the indicated number of seconds after printing.
+If "Yes", the job history is preserved until the MaxJobs limit is reached.
+The default is "Yes".
.TP 5
-JobPrivateValues none
+\fBReloadTimeout \fIseconds\fR
+Specifies the amount of time to wait for job completion before restarting the scheduler.
+The default is "30".
.TP 5
-JobPrivateValues attribute-name-1 [ ... attribute-name-N ]
-Specifies the list of job values to make private. The "default" values are
-"job-name", "job-originating-host-name", and "job-originating-user-name".
+\fBRIPCache \fIsize\fR
+Specifies the maximum amount of memory to use when converting documents into bitmaps for a printer.
+The default is "128m".
.TP 5
-JobRetryInterval seconds
-.br
-Specifies the interval between retries of jobs in seconds.
+\fBServerAdmin \fIemail-address\fR
+Specifies the email address of the server administrator.
+The default value is "root@ServerName".
.TP 5
-JobRetryLimit count
-.br
-Specifies the number of retries that are done for jobs.
+\fBServerAlias \fIhostname \fR[ ... \fIhostname \fR]
.TP 5
-KeepAlive Yes
+\fBServerAlias *\fR
+The ServerAlias directive is used for HTTP Host header validation when clients connect to the scheduler from external interfaces.
+Using the special name "*" can expose your system to known browser-based DNS rebinding attacks, even when accessing sites through a firewall.
+If the auto-discovery of alternate names does not work, we recommend listing each alternate name with a ServerAlias directive instead of using "*".
.TP 5
-KeepAlive No
-.br
-Specifies whether to support HTTP keep-alive connections.
+\fBServerName \fIhostname\fR
+Specifies the fully-qualified hostname of the server.
+The default is the value reported by the
+.BR hostname (1)
+command.
.TP 5
-KeepAliveTimeout seconds
-.br
-Specifies the amount of time that connections are kept alive.
+\fBServerTokens None\fR
.TP 5
-<Limit operations> ... </Limit>
-.br
-Specifies the IPP operations that are being limited inside a policy.
+\fBServerTokens ProductOnly\fR
.TP 5
-<Limit methods> ... </Limit>
+\fBServerTokens Major\fR
.TP 5
-<LimitExcept methods> ... </LimitExcept>
-.br
-Specifies the HTTP methods that are being limited inside a location.
+\fBServerTokens Minor\fR
.TP 5
-LimitRequestBody
-.br
-Specifies the maximum size of any print job request.
+\fBServerTokens Minimal\fR
.TP 5
-Listen ip-address:port
+\fBServerTokens OS\fR
.TP 5
-Listen *:port
+\fBServerTokens Full\fR
+Specifies what information is included in the Server header of HTTP responses.
+"None" disables the Server header.
+"ProductOnly" reports "CUPS".
+"Major" reports "CUPS 2".
+"Minor" reports "CUPS 2.0".
+"Minimal" reports "CUPS 2.0.0".
+"OS" reports "CUPS 2.0.0 (UNAME)" where UNAME is the output of the
+.BR uname (1)
+command.
+"Full" reports "CUPS 2.0.0 (UNAME) IPP/2.0".
+The default is "Minimal".
.TP 5
-Listen /path/to/domain/socket
-.br
-Listens to the specified address and port or domain socket path.
+\fBSetEnv \fIvariable value\fR
+Set the specified environment variable to be passed to child processes.
.TP 5
-<Location /path> ... </Location>
-.br
-Specifies access control for the named location.
.TP 5
-LogDebugHistory #-messages
-.br
-Specifies the number of debugging messages that are logged when an error
-occurs in a print job.
+\fBSSLListen \fIipv4-address\fB:\fIport\fR
.TP 5
-LogLevel alert
+\fBSSLListen [\fIipv6-address\fB]:\fIport\fR
.TP 5
-LogLevel crit
+\fBSSLListen *:\fIport\fR
+Listens on the specified address and port for encrypted connections.
.TP 5
-LogLevel debug2
+\fBSSLPort \fIport\fR
+Listens on the specified port for encrypted connections.
.TP 5
-LogLevel debug
+\fBStrictConformance Yes\fR
.TP 5
-LogLevel emerg
+\fBStrictConformance No\fR
+Specifies whether the scheduler requires clients to strictly adhere to the IPP specifications.
+The default is "No".
.TP 5
-LogLevel error
+\fBTimeout \fIseconds\fR
+Specifies the HTTP request timeout.
+The default is "300" (5 minutes).
.TP 5
-LogLevel info
+\fBWebInterface yes\fR
.TP 5
-LogLevel none
+\fBWebInterface no\fR
+Specifies whether the web interface is enabled.
+The default is "No".
+.SS HTTP METHOD NAMES
+The following HTTP methods are supported by
+.BR cupsd (8):
.TP 5
-LogLevel notice
+GET
+Used by a client to download icons and other printer resources and to access the CUPS web interface.
.TP 5
-LogLevel warn
-.br
-Specifies the logging level for the ErrorLog file.
+HEAD
+Used by a client to get the type, size, and modification date of resources.
.TP 5
-LogTimeFormat standard
+OPTIONS
+Used by a client to establish a secure (SSL/TLS) connection.
.TP 5
-LogTimeFormat usecs
-.br
-Specifies the format of the date and time in the log files.
+POST
+Used by a client to submit IPP requests and HTML forms from the CUPS web interface.
.TP 5
-MaxClients number
-.br
-Specifies the maximum number of simultaneous clients to support.
+PUT
+Used by a client to upload configuration files.
+.SS IPP OPERATION NAMES
+The following IPP operations are supported by
+.BR cupsd (8):
.TP 5
-MaxClientsPerHost number
-.br
-Specifies the maximum number of simultaneous clients to support from a
-single address.
+CUPS\-Accept\-Jobs
+Allows a printer to accept new jobs.
.TP 5
-MaxCopies number
-.br
-Specifies the maximum number of copies that a user can print of each job.
+CUPS\-Add\-Modify\-Class
+Adds or modifies a printer class.
.TP 5
-MaxHoldTime seconds
-.br
-Specifies the maximum time a job may remain in the "indefinite" hold state
-before it is canceled. Set to 0 to disable cancellation of held jobs.
+CUPS\-Add\-Modify\-Printer
+Adds or modifies a printer.
.TP 5
-MaxJobs number
-.br
-Specifies the maximum number of simultaneous jobs to support.
+CUPS\-Authenticate\-Job
+Releases a job that is held for authentication.
.TP 5
-MaxJobsPerPrinter number
-.br
-Specifies the maximum number of simultaneous jobs per printer to support.
+CUPS\-Delete\-Class
+Deletes a printer class.
.TP 5
-MaxJobsPerUser number
-.br
-Specifies the maximum number of simultaneous jobs per user to support.
+CUPS\-Delete\-Printer
+Deletes a printer.
.TP 5
-MaxJobTime seconds
-.br
-Specifies the maximum time a job may take to print before it is canceled. The
-default is 10800 seconds (3 hours). Set to 0 to disable cancellation of "stuck"
-jobs.
+CUPS\-Get\-Classes
+Gets a list of printer classes.
.TP 5
-MaxLogSize number-bytes
-.br
-Specifies the maximum size of the log files before they are
-rotated (0 to disable rotation)
+CUPS\-Get\-Default
+Gets the server default printer or printer class.
.TP 5
-MaxRequestSize number-bytes
-.br
-Specifies the maximum request/file size in bytes (0 for no limit)
+CUPS\-Get\-Devices
+Gets a list of devices that are currently available.
.TP 5
-MultipleOperationTimeout seconds
-.br
-Specifies the maximum amount of time to allow between files in a multiple file
-print job.
+CUPS\-Get\-Document
+Gets a document file for a job.
.TP 5
-Order allow,deny
+CUPS\-Get\-PPD
+Gets a PPD file.
.TP 5
-Order deny,allow
-.br
-Specifies the order of HTTP access control (allow,deny or deny,allow)
+CUPS\-Get\-PPDs
+Gets a list of installed PPD files.
.TP 5
-PageLogFormat format string
-.br
-Specifies the format of page log lines.
+CUPS\-Get\-Printers
+Gets a list of printers.
.TP 5
-PassEnv variable [... variable]
-.br
-Passes the specified environment variable(s) to child processes.
+CUPS\-Move\-Job
+Moves a job.
.TP 5
-<Policy name> ... </Policy>
-.br
-Specifies access control for the named policy.
+CUPS\-Reject\-Jobs
+Prevents a printer from accepting new jobs.
.TP 5
-Port number
-.br
-Specifies a port number to listen to for HTTP requests.
+CUPS\-Set\-Default
+Sets the server default printer or printer class.
.TP 5
-PreserveJobFiles Yes
+Cancel\-Job
+Cancels a job.
.TP 5
-PreserveJobFiles No
-.br
-Specifies whether or not to preserve job files after they are printed.
+Cancel\-Jobs
+Cancels one or more jobs.
.TP 5
-PreserveJobHistory Yes
+Cancel\-My\-Jobs
+Cancels one or more jobs creates by a user.
.TP 5
-PreserveJobHistory No
-.br
-Specifies whether or not to preserve the job history after they are
-printed.
+Cancel\-Subscription
+Cancels a subscription.
.TP 5
-PrintcapFormat bsd
+Close\-Job
+Closes a job that is waiting for more documents.
.TP 5
-PrintcapFormat plist
+Create\-Job
+Creates a new job with no documents.
.TP 5
-PrintcapFormat solaris
-.br
-Specifies the format of the printcap file.
+Create\-Job\-Subscriptions
+Creates a subscription for job events.
.TP 5
-ReloadTimeout seconds
-.br
-Specifies the amount of time to wait for job completion before
-restarting the scheduler.
+Create\-Printer\-Subscriptions
+Creates a subscription for printer events.
.TP 5
-Require group group-name-list
+Get\-Job\-Attributes
+Gets information about a job.
.TP 5
-Require user user-name-list
+Get\-Jobs
+Gets a list of jobs.
.TP 5
-Require valid-user
-.br
-Specifies that user or group authentication is required.
+Get\-Notifications
+Gets a list of event notifications for a subscription.
.TP 5
-RIPCache bytes
-.br
-Specifies the maximum amount of memory to use when converting images
-and PostScript files to bitmaps for a printer.
+Get\-Printer\-Attributes
+Gets information about a printer or printer class.
.TP 5
-Satisfy all
+Get\-Subscription\-Attributes
+Gets information about a subscription.
.TP 5
-Satisfy any
-.br
-Specifies whether all or any limits set for a Location must be
-satisfied to allow access.
+Get\-Subscriptions
+Gets a list of subscriptions.
.TP 5
-ServerAdmin user@domain.com
-.br
-Specifies the email address of the server administrator.
+Hold\-Job
+Holds a job from printing.
.TP 5
-ServerAlias hostname [... hostname]
+Hold\-New\-Jobs
+Holds all new jobs from printing.
.TP 5
-ServerAlias *
-.br
-Specifies an alternate name that the server is known by. The special name "*"
-allows any name to be used.
+Pause\-Printer
+Stops processing of jobs by a printer or printer class.
.TP 5
-ServerName hostname-or-ip-address
-.br
-Specifies the fully-qualified hostname of the server.
+Pause\-Printer\-After\-Current\-Job
+Stops processing of jobs by a printer or printer class after the current job is finished.
.TP 5
-ServerTokens Full
+Print\-Job
+Creates a new job with a single document.
.TP 5
-ServerTokens Major
+Purge\-Jobs
+Cancels one or more jobs and deletes the job history.
.TP 5
-ServerTokens Minimal
+Release\-Held\-New\-Jobs
+Allows previously held jobs to print.
.TP 5
-ServerTokens Minor
+Release\-Job
+Allows a job to print.
.TP 5
-ServerTokens None
+Renew\-Subscription
+Renews a subscription.
.TP 5
-ServerTokens OS
+Restart\-Job
+Reprints a job, if possible.
.TP 5
-ServerTokens ProductOnly
-.br
-Specifies what information is included in the Server header of HTTP
-responses.
+Send\-Document
+Adds a document to a job.
.TP 5
-SetEnv variable value
-.br
-Set the specified environment variable to be passed to child processes.
+Set\-Job\-Attributes
+Changes job information.
.TP 5
-SSLListen
-.br
-Listens on the specified address and port for encrypted connections.
+Set\-Printer\-Attributes
+Changes printer or printer class information.
.TP 5
-SSLOptions None
+Validate\-Job
+Validates options for a new job.
+.SS LOCATION PATHS
+The following paths are commonly used when configuring
+.BR cupsd (8):
.TP 5
-SSLOptions NoEmptyFragments
-.br
-Sets SSL/TLS protocol options for encrypted connections.
+/
+The path for all get operations (get-printers, get-jobs, etc.)
.TP 5
-SSLPort
-.br
-Listens on the specified port for encrypted connections.
+/admin
+The path for all administration operations (add-printer, delete-printer, start-printer, etc.)
.TP 5
-StrictConformance Yes
+/admin/conf
+The path for access to the CUPS configuration files (cupsd.conf, client.conf, etc.)
.TP 5
-StrictConformance No
-.br
-Specifies whether the scheduler requires clients to strictly adhere to the IPP
-specifications. The default is No.
+/admin/log
+The path for access to the CUPS log files (access_log, error_log, page_log)
.TP 5
-SubscriptionPrivateAccess all
+/classes
+The path for all printer classes
.TP 5
-SubscriptionPrivateAccess default
+/classes/name
+The resource for the named printer class
.TP 5
-SubscriptionPrivateAccess {user|@group|@ACL|@OWNER|@SYSTEM}+
-.br
-Specifies an access list for a subscription's private values. The "default"
-access list is "@OWNER @SYSTEM". "@ACL" maps to the printer's
-requesting-user-name-allowed or requesting-user-name-denied values.
+/jobs
+The path for all jobs (hold-job, release-job, etc.)
.TP 5
-SubscriptionPrivateValues all
+/jobs/id
+The path for the specified job.
.TP 5
-SubscriptionPrivateValues default
+/printers
+The path for all printers
.TP 5
-SubscriptionPrivateValues none
+/printers/name
+The path for the named printer
.TP 5
-SubscriptionPrivateValues attribute-name-1 [ ... attribute-name-N ]
-Specifies the list of job values to make private. The "default" values are
-"notify-events", "notify-pull-method", "notify-recipient-uri",
-"notify-subscriber-user-name", and "notify-user-data".
+/printers/name.png
+The icon file path for the named printer
.TP 5
-Timeout seconds
-.br
-Specifies the HTTP request timeout in seconds.
+/printers/name.ppd
+The PPD file path for the named printer
+.SS DIRECTIVES VALID WITHIN LOCATION AND LIMIT SECTIONS
+The following directives may be placed inside Location and Limit sections in the \fBcupsd.conf\fR file:
.TP 5
-WebInterface yes
+\fBAllow all\fR
.TP 5
-WebInterface no
-Specifies whether the web interface is enabled.
+\fBAllow none\fR
+.TP 5
+\fBAllow \fIhost.domain.com\fR
+.TP 5
+\fBAllow *.\fIdomain.com\fR
+.TP 5
+\fBAllow \fIipv4-address\fR
+.TP 5
+\fBAllow \fIipv4-address\fB/\fInetmask\fR
+.TP 5
+\fBAllow \fIipv4-address\fB/\fImm\fR
+.TP 5
+\fBAllow [\fIipv6-address\fB]\fR
+.TP 5
+\fBAllow [\fIipv6-address\fB]/\fImm\fR
+.TP 5
+\fBAllow @IF(\fIname\fB)\fR
+.TP 5
+\fBAllow @LOCAL\fR
+Allows access from the named hosts, domains, addresses, or interfaces.
+The Order directive controls whether Allow lines are evaluated before or after Deny lines.
+.TP 5
+\fBAuthType None\fR
+.TP 5
+\fBAuthType Basic\fR
+.TP 5
+\fBAuthType Default\fR
+.TP 5
+\fBAuthType Negotiate\fR
+Specifies the type of authentication required.
+The value "Default" corresponds to the DefaultAuthType value.
+.TP 5
+\fBDeny all\fR
+.TP 5
+\fBDeny none\fR
+.TP 5
+\fBDeny \fIhost.domain.com\fR
+.TP 5
+\fBDeny *.\fIdomain.com\fR
+.TP 5
+\fBDeny \fIipv4-address\fR
+.TP 5
+\fBDeny \fIipv4-address\fB/\fInetmask\fR
+.TP 5
+\fBDeny \fIipv4-address\fB/\fImm\fR
+.TP 5
+\fBDeny [\fIipv6-address\fB]\fR
+.TP 5
+\fBDeny [\fIipv6-address\fB]/\fImm\fR
+.TP 5
+\fBDeny @IF(\fIname\fB)\fR
+.TP 5
+\fBDeny @LOCAL\fR
+Denies access from the named hosts, domains, addresses, or interfaces.
+The Order directive controls whether Deny lines are evaluated before or after Allow lines.
+.TP 5
+\fBEncryption IfRequested\fR
+.TP 5
+\fBEncryption Never\fR
+.TP 5
+\fBEncryption Required\fR
+Specifies the level of encryption that is required for a particular location.
+The default value is "IfRequested".
+.TP 5
+\fBOrder allow,deny\fR
+Specifies that access is denied by default. Allow lines are then processed followed by Deny lines to determine whether a client may access a particular resource.
+.TP 5
+\fBOrder deny,allow\fR
+Specifies that access is allowed by default. Deny lines are then processed followed by Allow lines to determine whether a client may access a particular resource.
+.TP 5
+\fBRequire group \fIgroup-name \fR[ \fIgroup-name \fR... ]
+Specifies that an authenticated user must be a member of one of the named groups.
+.TP 5
+\fBRequire user {\fIuser-name\fR|\fB@\fIgroup-name\fR} ...
+Specifies that an authenticated user must match one of the named users or be a member of one of the named groups.
+The group name "@SYSTEM" corresponds to the list of groups defined by the SystemGroup directive in the
+.BR cups-files.conf (5)
+file.
+The group name "@OWNER" corresponds to the owner of the resource, for example the person that submitted a print job.
+.TP 5
+\fBRequire valid-user\fR
+Specifies that any authenticated user is acceptable.
+.TP 5
+\fBSatisfy all\fR
+Specifies that all Allow, AuthType, Deny, Order, and Require conditions must be satisfied to allow access.
+.TP 5
+\fBSatisfy any\fR
+Specifies that any a client may access a resource if either the authentication (AuthType/Require) or address (Allow/Deny/Order) conditions are satisfied.
+For example, this can be used to require authentication only for remote accesses.
+.SS DIRECTIVES VALID WITHIN POLICY SECTIONS
+The following directives may be placed inside Policy sections in the \fBcupsd.conf\fR file:
+.TP 5
+\fBJobPrivateAccess all\fR
+.TP 5
+\fBJobPrivateAccess default\fR
+.TP 5
+\fBJobPrivateAccess \fR{\fIuser\fR|\fB@\fIgroup\fR|\fB@ACL\fR|\fB@OWNER\fR|\fB@SYSTEM\fR} ...
+Specifies an access list for a job's private values.
+The "default" access list is "@OWNER @SYSTEM".
+"@ACL" maps to the printer's requesting-user-name-allowed or requesting-user-name-denied values.
+"@OWNER" maps to the job's owner.
+"@SYSTEM" maps to the groups listed for the SystemGroup directive in the
+.BR cups-files.conf (5)
+file.
+.TP 5
+\fBJobPrivateValues all\fR
+.TP 5
+\fBJobPrivateValues default\fR
+.TP 5
+\fBJobPrivateValues none\fR
+.TP 5
+\fBJobPrivateValues \fIattribute-name \fR[ ... \fIattribute-name \fR]
+Specifies the list of job values to make private.
+The "default" values are "job-name", "job-originating-host-name", "job-originating-user-name", and "phone".
+.TP 5
+\fBSubscriptionPrivateAccess all\fR
+.TP 5
+\fBSubscriptionPrivateAccess default\fR
+.TP 5
+\fBSubscriptionPrivateAccess \fR{\fIuser\fR|\fB@\fIgroup\fR|\fB@ACL\fR|\fB@OWNER\fR|\fB@SYSTEM\fR} ...
+Specifies an access list for a subscription's private values.
+The "default" access list is "@OWNER @SYSTEM".
+"@ACL" maps to the printer's requesting-user-name-allowed or requesting-user-name-denied values.
+"@OWNER" maps to the job's owner.
+"@SYSTEM" maps to the groups listed for the SystemGroup directive in the
+.BR cups-files.conf (5)
+file.
+.TP 5
+\fBSubscriptionPrivateValues all\fR
+.TP 5
+\fBSubscriptionPrivateValues default\fR
+.TP 5
+\fBSubscriptionPrivateValues none\fR
+.TP 5
+\fBSubscriptionPrivateValues \fIattribute-name \fR[ ... \fIattribute-name \fR]
+Specifies the list of subscription values to make private.
+The "default" values are "notify-events", "notify-pull-method", "notify-recipient-uri", "notify-subscriber-user-name", and "notify-user-data".
+.SH CONFORMING TO
+The \fBcupsd.conf\fR file format is based on the Apache HTTP Server configuration file format.
+.SH EXAMPLES
+Log everything with a maximum log file size of 32 megabytes:
+.nf
+
+ AccessLogLevel all
+ LogLevel debug2
+ MaxLogSize 32m
+
+.fi
+Require authentication for accesses from outside the 10. network:
+.nf
+
+ <Location />
+ Order allow,deny
+ Allow from 10./8
+ AuthType Basic
+ Require valid-user
+ Satisfy any
+ </Location>
+.fi
.SH SEE ALSO
-\fIclasses.conf(5)\fR, \fIcups-files.conf(5)\fR, \fIcupsd(8)\fR,
-\fImime.convs(5)\fR, \fImime.types(5)\fR, \fIprinters.conf(5)\fR,
-\fIsubscriptions.conf(5)\fR,
-.br
-http://localhost:631/help
+.BR classes.conf (5),
+.BR cups-files.conf (5),
+.BR cupsd (8),
+.BR mime.convs (5),
+.BR mime.types (5),
+.BR printers.conf (5),
+.BR subscriptions.conf (5),
+CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
.\"
-.\" End of "$Id: cupsd.conf.man.in 12060 2014-07-28 14:04:41Z msweet $".
+.\" End of "$Id: cupsd.conf.man.in 12059 2014-07-28 14:04:32Z msweet $".
.\"
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 <cups/cups.h>\fR
+
+\fBssize_t cupsBackChannelRead\fR(\fBchar *\fIbuffer\fR, \fBsize_t \fIbytes\fR,
+ \fBdouble \fItimeout\fR);
+
+\fBcups_sc_status_t cupsSideChannelDoRequest\fR(\fBcups_sc_command_t \fIcommand\fR,
+ \fBchar *\fIdata\fR, \fBint *\fIdatalen\fR,
+ \fBdouble \fItimeout\fR);
+
+\fB#include <cups/ppd.h>\fR
+
+\fBconst char *cupsGetOption\fR(\fBconst char *\fIname\fR, \fBint \fInum_options\fR,
+ \fBcups_option_t *\fIoptions\fR);
+
+\fBint cupsMarkOptions\fR(\fBppd_file_t *\fIppd\fR, \fBint \fInum_options\fR,
+ \fBcups_option_t *\fIoptions\fR);
+
+\fBint cupsParseOptions\fR(\fBconst char *\fIarg\fR, \fBint \fInum_options\fR,
+ \fBcups_option_t **\fIoptions\fR);
+
+\fBppd_choice_t *ppdFindMarkedChoice\fR(\fBppd_file_t *\fIppd\fR, \fBconst char *\fIkeyword\fR);
+
+\fBvoid ppdMarkDefaults\fR(\fBppd_file_t *\fIppd\fR);
+
+\fBppd_file_t *ppdOpenFile\fR(\fBconst char *\fIfilename\fR);
+.fi
.SH DESCRIPTION
-The CUPS filter interface provides a standard method for adding support for
-new document types to CUPS. Each filter is capable of converting from one
-or more input formats to another format that can either be printed directly
-or piped into another filter to get it to a printable format.
+The CUPS filter interface provides a standard method for adding support for new document types or printers to CUPS.
+Each filter is capable of converting from one or more input formats to another format that can either be printed directly or piped into another filter to get it to a printable format.
.LP
-Filters \fBmust\fR be capable of reading from a filename on the command-line
-or from the standard input, copying the standard input to a temporary
-file as required by the file format. All output \fBmust\fR be sent to the
-standard output.
+Filters \fBMUST\fR be capable of reading from a filename on the command-line or from the standard input, copying the standard input to a temporary file as required by the file format.
+All output \fBMUST\fR be sent to the standard output.
+Filters \fBMUST NOT\fR attempt to communicate directly with the printer, other processes, or other services.
.LP
-The command name (argv[0]) is set to the name of the destination printer but is
-also available in the PRINTER environment variable.
-.SH WARNING
-CUPS filters are not meant to be run directly by the user. Aside from the legacy
-System V interface issues (argv[0] is the printer name), CUPS filters also
-expect specific environment variables and file descriptors, and typically run in
-a user session that (on OS X) has additional restrictions that affect how it
-runs. Unless you are a developer and know what you are doing, please do not run
-filters directly. Instead, use the \fIcupsfilter(8)\fR program to use the
-appropriate filters to do the conversions you need.
+The command name (\fIargv[0]\fR) is set to the name of the destination printer but is also available in the \fBPRINTER\fI environment variable.
.SH OPTIONS
-Options passed on the command-line typically do not include the default choices
-the printer's PPD file. In addition, some options may be specified in multiple
-ways - "landscape" is a synonym for "orientation-requested=4", "media" is a
-synonym for "PageSize", "PageRegion", "InputSlot", and "MediaType", and "sides"
-is a synonym for the various "Duplex" options. Non-raster filters \fBmust\fR
-support both explicit and implicit specification of PPD options - use the
-ppdMarkDefaults and cupsMarkOptions functions in the CUPS library to use the
-correct mapping, and ppdFindMarkedChoice to get the user-selected choice.
+Options are passed in \fIargv[5]\fR and are encoded from the corresponding IPP attributes used when the job was submitted. Use the
+.BR cupsParseOptions ()
+function to load the options into a \fBcups_option_t\fR array and the
+.BR cupsGetOption ()
+function to get the value of a specific attribute.
+Be careful to look for common aliases of IPP attributes such as "lansdscape" for the IPP "orientation-requested" attribute.
.LP
-Raster filters should use option choices set through the raster page header, as
-those reflect the options in effect for a given page. Options specified on the
-command-line determine the default values for the entire job, which can be
-overridden on a per-page basis.
+Options passed on the command-line typically do not include the default choices the printer's PPD file. Use the
+.BR ppdMarkDefaults ()
+and
+.BR cupsMarkOptions ()
+functions in the CUPS library to apply the options to the PPD defaults and map any IPP attributes to the corresponding PPD options.
+Use
+.BR ppdFindMarkedChoice ()
+to get the user-selected choice for a PPD option. For example, a filter might use the following code to determine the current value of the \fBDuplex\fR PPD option:
+.nf
+
+ ppd_file_t *ppd = ppdOpenFile(getenv("PPD"));
+ cups_option_t *options = NULL;
+ int num_options = cupsParseOptions(argv[5], 0, &options);
+
+ ppdMarkDefaults(ppd);
+ cupsMarkOptions(ppd, num_options, options);
+
+ ppd_choice_t *choice = ppdFindMarkedChoice(ppd, "Duplex");
+.fi
+.LP
+Raster filters should use option choices set through the raster page header, as those reflect the options in effect for a given page.
+Options specified on the command-line determine the default values for the entire job, which can be overridden on a per-page basis.
.SH LOG MESSAGES
-Messages sent to stderr are generally logged to
-printer-state-message attribute and the current \fIErrorLog\fR.
+Messages sent to the standard error are generally stored in the printer's "printer-state-message" attribute and the current \fBErrorLog\fR file.
Each line begins with a standard prefix:
.TP 5
-ALERT: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "alert" log level.
+\fBALERT: \fImessage\fR
+Sets the "printer-state-message" attribute and adds the specified message to the current \fBErrorLog\fR using the "alert" log level.
.TP 5
-ATTR: attribute=value [attribute=value]
-.br
-Sets the named job or printer attribute(s). The following job attributes can be
-set: "job-media-progress". The following printer attributes can be set:
+\fBATTR: \fIattribute=value \fR[ \fI... attribute=value\fR]
+Sets the named job or printer attribute(s). The following job attributes can be set: "job-media-progress". The following printer attributes can be set:
"auth-info-required", "marker-colors", "marker-high-levels", "marker-levels",
"marker-low-levels", "marker-message", "marker-names", "marker-types",
"printer-alert", and "printer-alert-description".
.TP 5
-CRIT: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "critical" log level.
+\fBCRIT: \fImessage\fR
+Sets the "printer-state-message" attribute and adds the specified message to the current \fBErrorLog\fR using the "critical" log level.
.TP 5
-DEBUG: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "debug" log level.
+\fBDEBUG: \fImessage\fR
+Adds the specified message to the current \fBErrorLog\fR using the "debug" log level.
+\fBDEBUG\fR messages are never stored in the "printer-state-message" attribute.
.TP 5
-DEBUG2: message
+\fBDEBUG2: \fImessage\fR
.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "debug2" log level.
+Adds the specified message to the current \fBErrorLog\fR using the "debug2" log level.
+\fBDEBUG2\fR messages are never stored in the "printer-state-message" attribute.
.TP 5
-EMERG: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "emergency" log level.
+\fBEMERG: \fImessage\fR
+Sets the "printer-state-message" attribute and adds the specified message to the current \fBErrorLog\fR using the "emergency" log level.
.TP 5
-ERROR: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "error" log level.
+\fBERROR:\fI message\fR
+Sets the "printer-state-message" attribute and adds the specified message to the current \fBErrorLog\fR using the "error" log level.
.TP 5
-INFO: message
-.br
-Sets the printer-state-message attribute. If the current \fILogLevel\fR
-is set to "debug2", also adds the specified message to the
-current \fIErrorLog\fR using the "info" log level.
+\fBINFO:\fI message\fR
+Sets the "printer-state-message" attribute. If the current \fBLogLevel\fR is set to "debug2", also adds the specified message to the current \fBErrorLog\fR using the "info" log level.
.TP 5
-NOTICE: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "notice" log level.
+\fBNOTICE:\fI message\fR
+Sets the "printer-state-message" attribute and adds the specified message to the current \fBErrorLog\fR using the "notice" log level.
.TP 5
-PAGE: page-number #-copies
+\fBPAGE:\fI page-number #-copies\fR
.TP 5
-PAGE: total #-pages
-.br
-Adds an entry to the current \fIPageLog\fR. The first form adds
-#-copies to the job-media-sheets-completed attribute. The second
-form sets the job-media-sheets-completed attribute to #-pages.
+\fBPAGE:\fI total #-pages\fR
+Adds an entry to the current \fBPageLog\fR. The first form adds \fI#-copies\fR to the "job-media-sheets-completed" attribute. The second form sets the "job-media-sheets-completed" attribute to \fI#-pages\fR.
.TP 5
-PPD: Keyword=Value ... KeywordN=Value
-.br
-Sets the named keywords in the printer's PPD file. This is typically
-used to update default option keywords such as DefaultPageSize and
-the various installable options in the PPD file.
+\fBPPD:\fI Keyword=Value\fR [ \fI... KeywordN=Value\fR ]
+Sets the named keywords in the printer's PPD file. This is typically used to update default option keywords such as \fBDefaultPageSize\fR and the various installable options in the PPD file.
.TP 5
-STATE: printer-state-reason [printer-state-reason ...]
+\fBSTATE:\fI printer-state-reason \fR[ \fI... printer-state-reason\fR ]
.TP 5
-STATE: + printer-state-reason [printer-state-reason ...]
+\fBSTATE: +\fI printer-state-reason \fR[ \fI... printer-state-reason\fR ]
.TP 5
-STATE: - printer-state-reason [printer-state-reason ...]
-.br
-Sets, adds, or removes printer-state-reason keywords to the
-current queue. Typically this is used to indicate media, ink, and
-toner conditions on a printer.
+\fBSTATE: -\fI printer-state-reason \fR[ \fI... printer-state-reason\fR ]
+Sets, adds, or removes "printer-state-reason" keywords for the current queue. Typically this is used to indicate media, ink, and toner conditions on a printer.
.TP 5
-WARNING: message
-.br
-Sets the printer-state-message attribute and adds the specified
-message to the current \fIErrorLog\fR using the "warning" log level.
+\fBWARNING:\fI message\fR
+Sets the "printer-state-message" attribute and adds the specified message to the current \fBErrorLog\fR using the "warning" log level.
.SH ENVIRONMENT VARIABLES
The following environment variables are defined by the CUPS
server when executing the filter:
.TP 5
-CHARSET
-.br
-The default text character set, typically utf-8.
+.B CHARSET
+The default text character set, typically "utf-8".
.TP 5
-CLASS
-.br
-When a job is submitted to a printer class, contains the name of
-the destination printer class. Otherwise this environment
-variable will not be set.
+.B CLASS
+When a job is submitted to a printer class, contains the name of the destination printer class. Otherwise this environment variable will not be set.
.TP 5
-CONTENT_TYPE
-.br
-The MIME type associated with the file (e.g.
-application/postscript).
+.B CONTENT_TYPE
+The MIME media type associated with the submitted job file, for example "application/postscript".
.TP 5
-CUPS_CACHEDIR
-.br
-The directory for semi-persistent cache files can be found.
+.B CUPS_CACHEDIR
+The directory where semi-persistent cache files can be found and stored.
.TP 5
-CUPS_DATADIR
-.br
+.B CUPS_DATADIR
The directory where data files can be found.
.TP 5
-CUPS_FILETYPE
-.br
+.B CUPS_FILETYPE
The type of file being printed: "job-sheet" for a banner page and "document"
for a regular print file.
.TP 5
-CUPS_MAX_MESSAGE
-.br
-The maximum size of a message sent to stderr, including any leading prefix and
-the trailing newline.
+.B CUPS_MAX_MESSAGE
+The maximum size of a message sent to \fIstderr\fR, including any leading prefix and the trailing newline.
.TP 5
-CUPS_SERVERROOT
-.br
+.B CUPS_SERVERROOT
The root directory of the server.
.TP 5
-DEVICE_URI
-.br
-The device-uri associated with the printer.
-.TP 5
-FINAL_CONTENT_TYPE
-.br
-The MIME type associated with the printer (e.g.
-application/vnd.cups-postscript).
+.B FINAL_CONTENT_TYPE
+The MIME media type associated with the output destined for the printer, for example "application/vnd.cups-postscript".
.TP 5
-LANG
-.br
+.B LANG
The default language locale (typically C or en).
.TP 5
-PATH
-.br
-The standard execution path for external programs that may be run by
-the filter.
+.B PATH
+The standard execution path for external programs that may be run by the filter.
.TP 5
-PPD
-.br
-The full pathname of the PostScript Printer Description (PPD)
-file for this printer.
+.B PPD
+The full pathname of the PostScript Printer Description (PPD) file for this printer.
.TP 5
-PRINTER
-.br
+.B PRINTER
The name of the printer.
.TP 5
-RIP_CACHE
-.br
-The recommended amount of memory to use for Raster Image
-Processors (RIPs).
+.B RIP_CACHE
+The recommended amount of memory to use for Raster Image Processors (RIPs).
.TP 5
-SOFTWARE
-.br
-The name and version number of the server (typically CUPS/1.2).
+.B SOFTWARE
+The name and version number of the server (typically CUPS/\fImajor.minor\fR).
.TP 5
-TZ
-.br
+.B TZ
The timezone of the server.
.TP 5
-USER
-.br
-The user executing the filter, typically "lp" or "root"; consult the
-\fIcupsd.conf(5)\fR file for the current setting.
-.SH COMPATIBILITY
+.B USER
+The user executing the filter, typically "lp" or "root"; consult the \fIcups-files.conf\fR file for the current setting.
+.SH CONFORMING TO
While the filter interface is compatible with System V interface
scripts, it will only work with the System V interface script as the
only filter. Typically the interface script will be provided via the
\fIlpadmin(8)\fR command using the \fI-i\fR option.
+.SH NOTES
+CUPS filters are not meant to be run directly by the user.
+Aside from the legacy System V interface issues (\fIargv[0]\fR is the printer name), CUPS filters also expect specific environment variables and file descriptors, and typically run in a user session that (on OS X) has additional restrictions that affect how it runs.
+Unless you are a developer and know what you are doing, please do not run filters directly.
+Instead, use the
+.BR cupsfilter (8)
+program to use the appropriate filters to do the conversions you need.
.SH SEE ALSO
-\fIbackend(7)\fR, \fIcupsd(8)\fR, \fIcupsfilter(8)\fR,
+.BR backend (7),
+.BR cups (1),
+.BR cups-files.conf (5),
+.BR cupsd (8),
+.BR cupsfilter (8),
.br
-http://localhost:631/help
+CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
.\"
-.\" End of "$Id: filter.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: filter.man 11793 2014-04-04 19:02:20Z msweet $".
.\"
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..0b441dd4c 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 12140 2014-08-30 01:51:22Z msweet $"
.\"
.\" ipptool man page for CUPS.
.\"
@@ -11,156 +11,238 @@
.\" which 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" "29 August 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
+.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
--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.
+.BI \-P \ filename.plist
+Specifies that the test results should be written to the named XML (Apple plist) file in addition to the regular test report (\fB\-t\fR).
+This option is incompatible with the \fB\-i\fR (interval) and \fB\-n\fR (repeat\-count) options.
.TP 5
--S
-Forces (dedicated) SSL encryption when connecting to the server.
+.B \-S
+Forces (dedicated) TLS encryption when connecting to the server.
.TP 5
--T seconds
+.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
+.B \-q
+Be quiet and produce no output.
.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 12140 2014-08-30 01:51:22Z 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 <filename>
-Includes another test file. The first form includes a file relative to the
-current test file, while the second form includes a file from the \fIipptool\fR
+\fBINCLUDE <\fIfilename\fB>\fR
+Includes another test file. The first form includes a file relative to the current test file, while the second form includes a file from the
+.BR ipptool (8)
include directory.
.TP 5
-INCLUDE-IF-DEFINED name "filename"
+\fBINCLUDE\-IF\-DEFINED \fIname \fB"\fIfilename\fB"\fR
.TP 5
-INCLUDE-IF-DEFINED name <filename>
-Includes another test file if the named variable is defined. The first form
-includes a file relative to the current test file, while the second form
-includes a file from the \fIipptool\fR include directory.
+\fBINCLUDE\-IF\-DEFINED \fIname \fB<\fIfilename\fB>\fR
+Includes another test file if the named variable is defined. The first form includes a file relative to the current test file, while the second form includes a file from the
+.BR ipptool (8)
+include directory.
.TP 5
-INCLUDE-IF-NOT-DEFINED name "filename"
+\fBINCLUDE\-IF\-NOT\-DEFINED \fIname \fB"\fIfilename\fB"\fR
.TP 5
-INCLUDE-IF-NOT-DEFINED name <filename>
-Includes another test file if the named variable is not defined. The first form
-includes a file relative to the current test file, while the second form
-includes a file from the \fIipptool\fR include directory.
+\fBINCLUDE\-IF\-NOT\-DEFINED \fIname \fB<\fIfilename\fB>\fR
+Includes another test file if the named variable is not defined. The first form includes a file relative to the current test file, while the second form includes a file from the
+.BR ipptool (8)
+include directory.
.TP 5
-SKIP-IF-DEFINED variable-name
+\fBSKIP\-IF\-DEFINED \fIvariable-name\fR
.TP 5
-SKIP-IF-NOT-DEFINED variable-name
-Specifies that the remainder of the test file should be skipped when the
-variable is or is not defined.
+\fBSKIP\-IF\-NOT\-DEFINED \fIvariable-name\fR
+Specifies that the remainder of the test file should be skipped when the variable is or is not defined.
.TP 5
-STOP-AFTER-INCLUDE-ERROR no
+\fBSTOP\-AFTER\-INCLUDE\-ERROR no\fR
.TP 5
-STOP-AFTER-INCLUDE-ERROR yes
+\fBSTOP\-AFTER\-INCLUDE\-ERROR yes\fR
Specifies whether tests will be stopped after an error in an included file.
.TP 5
-TRANSFER auto
-Specifies that tests will, by default, use "Transfer-Encoding: chunked" for
-requests with attached files and "Content-Length:" for requests without attached
-files.
+\fBTRANSFER auto\fR
+Specifies that tests will, by default, use "Transfer-Encoding: chunked" for requests with attached files and "Content-Length:" for requests without attached files.
.TP 5
-TRANSFER chunked
-Specifies that tests will, by default, use the HTTP/1.1 "Transfer-Encoding:
-chunked" header. This is the default and is equivalent to specifying "-c" on the
-\fIipptool\fR command-line. Support for chunked requests is required for
-conformance with all versions of IPP.
+\fBTRANSFER chunked\fR
+Specifies that tests will, by default, use the HTTP/1.1 "Transfer-Encoding: chunked" header. This is the default and is equivalent to specifying \fI\-c\fR on the
+.BR ipptool (8)
+command-line. Support for chunked requests is required for conformance with all versions of IPP.
.TP 5
-TRANSFER length
-Specifies that tests will, by default, use the HTTP/1.0 "Content-Length:"
-header. This is equivalent to specifying "-l" on the \fIipptool\fR command-line.
-Support for content length requests is required for conformance with all
-versions of IPP.
+\fBTRANSFER length\fR
+Specifies that tests will, by default, use the HTTP/1.0 "Content-Length:" header. This is equivalent to specifying \fI\-l\fR on the
+.BR ipptool (8)
+command-line. Support for content length requests is required for conformance with all versions of IPP.
.TP 5
-VERSION 1.0
+\fBVERSION 1.0\fR
.TP 5
-VERSION 1.1
+\fBVERSION 1.1\fR
.TP 5
-VERSION 2.0
+\fBVERSION 2.0\fR
.TP 5
-VERSION 2.1
+\fBVERSION 2.1\fR
.TP 5
-VERSION 2.2
+\fBVERSION 2.2\fR
Specifies the default IPP version number to use for the tests that follow.
-
-.SH TEST DIRECTIVES
-The following directives are understood in a test:
+.SS TEST DIRECTIVES
+The following directives are understood within a \fItest\fR:
.TP 5
-ATTR tag attribute-name value(s)
-Adds an attribute to the test request. Values are separated by the comma (",")
-character - escape commas using the "\" character. Common attributes and values are listed in the IANA IPP registry - see references below.
+\fBATTR \fItag attribute-name value(s)\fR
+Adds an attribute to the test request. Values are separated by the comma (",") character - escape commas using the "\" character. Common attributes and values are listed in the IANA IPP registry - see references below.
.TP 5
-ATTR collection attribute-name { MEMBER tag member-name value(s) ... } [ ... { ... } ]
-Adds a collection attribute to the test request. Member attributes follow the
-same syntax as regular attributes and can themselves be nested collections.
-Multiple collection values can be supplied as needed.
+\fBATTR collection \fIattribute-name \fB{ MEMBER \fItag member-name value(s) ... \fB}\fR [ \fI... \fB,{ \fI... \fB} \fR]
+Adds a collection attribute to the test request. Member attributes follow the same syntax as regular attributes and can themselves be nested collections. Multiple collection values can be supplied as needed, separated by commas.
.TP 5
-COMPRESSION deflate
+\fBCOMPRESSION deflate\fR
.TP 5
-COMPRESSION gzip
+\fBCOMPRESSION gzip\fR
.TP 5
-COMPRESSION none
-.br
-Uses the specified compression on the document data following the attributes in
-a Print-Job or Send-Document request.
+\fBCOMPRESSION none\fR
+Uses the specified compression on the document data following the attributes in a Print-Job or Send-Document request.
.TP 5
-DELAY seconds
+\fBDELAY \fIseconds\fR
Specifies a delay before this test will be run.
.TP 5
-DISPLAY attribute-name
+\fBDISPLAY \fIattribute-name\fR
Specifies that value of the named attribute should be output as part of the
test report.
.TP 5
-EXPECT attribute-name [ predicate(s) ]
+\fBEXPECT \fIattribute-name \fR[ \fIpredicate(s) \fR]
.TP 5
-EXPECT ?attribute-name predicate(s)
+\fBEXPECT ?\fIattribute-name predicate(s)\fR
.TP 5
-EXPECT !attribute-name
-Specifies that the response must/may/must not include the named attribute.
-Additional requirements can be added as predicates - see the "EXPECT PREDICATES"
-section for more information on predicates.
+\fBEXPECT !\fIattribute-name\fR
+Specifies that the response must/may/must not include the named attribute. Additional requirements can be added as predicates - see the "EXPECT PREDICATES" section for more information on predicates. Attribute names can specify member attributes by separating the attribute and member names with the forward slash, for example "media\-col/media\-size/x\-dimension".
.TP 5
-FILE filename
-Specifies a file to include at the end of the request. This is typically used
-when sending a test print file.
+\fBFILE filename\fR
+Specifies a file to include at the end of the request. This is typically used when sending a test print file.
.TP 5
-GROUP tag
+\fBGROUP tag\fR
Specifies the group tag for subsequent attributes in the request.
.TP 5
-IGNORE-ERRORS yes
+\fBIGNORE\-ERRORS yes\fR
.TP 5
-IGNORE-ERRORS no
-Specifies whether \fIipptool\fR will ignore errors and continue with subsequent
-tests.
+\fBIGNORE\-ERRORS no\fR
+Specifies whether
+.BR ipptool (8)
+will ignore errors and continue with subsequent tests.
.TP 5
-NAME "literal string"
+\fBNAME "\fIliteral string\fB"\fR
Specifies the human-readable name of the test.
.TP 5
-OPERATION operation-code
+\fBOPERATION \fIoperation-code\fR
Specifies the operation to be performed.
.TP 5
-REQUEST-ID number
+\fBPAUSE "\fImessage\fB"\fR
+Displays the provided message and waits for the user to press a key to continue.
+.TP 5
+\fBREQUEST\-ID \fInumber\fR\fR
.TP 5
-REQUEST-ID random
-Specifies the request-id value to use in the request, either an integer or the
-word "random" to use a randomly generated value (the default).
+\fBREQUEST\-ID random\fR
+Specifies the request-id value to use in the request, either an integer or the word "random" to use a randomly generated value (the default).
.TP 5
-RESOURCE path
-Specifies an alternate resource path that is used for the HTTP POST request.
-The default is the resource from the URI provided to the \fIipptool\fR program.
+\fBRESOURCE \fIpath\fR
+Specifies an alternate resource path that is used for the HTTP POST request. The default is the resource from the URI provided to the
+.BR ipptool (8)
+program.
.TP 5
-SKIP-IF-DEFINED variable-name
+\fBSKIP\-IF\-DEFINED \fIvariable-name\fR
.TP 5
-SKIP-IF-NOT-DEFINED variable-name
-Specifies that the current test should be skipped when the variable is or is not
-defined.
+\fBSKIP\-IF\-NOT\-DEFINED \fIvariable-name\fR
+Specifies that the current test should be skipped when the variable is or is not defined.
.TP 5
-SKIP-PREVIOUS-ERROR yes
+\fBSKIP\-PREVIOUS\-ERROR yes\fR
.TP 5
-SKIP-PREVIOUS-ERROR no
-Specifies whether \fIipptool\fR will skip the current test if the previous test
-resulted in an error/failure.
+\fBSKIP\-PREVIOUS\-ERROR no\fR
+Specifies whether
+.BR ipptool (8)
+will skip the current test if the previous test resulted in an error/failure.
.TP 5
-STATUS status-code [ predicate ]
-Specifies an expected response status-code value. Additional requirements can be
-added as predicates - see the "STATUS PREDICATES" section for more information
-on predicates.
+\fBSTATUS \fIstatus-code \fR[ \fIpredicate\fR ]
+Specifies an expected response status-code value. Additional requirements can be added as predicates - see the "STATUS PREDICATES" section for more information on predicates.
.TP 5
-TEST-ID "identifier"
+\fBTEST\-ID "\fIidentifier\fR"
Specifies an identifier string for the current test.
.TP 5
-TRANSFER auto
-Specifies that this test will use "Transfer-Encoding: chunked" if it has an
-attached file or "Content-Length:" otherwise.
+\fBTRANSFER auto\fR
+Specifies that this test will use "Transfer-Encoding: chunked" if it has an attached file or "Content-Length:" otherwise.
.TP 5
-TRANSFER chunked
-Specifies that this test will use the HTTP/1.1 "Transfer-Encoding: chunked"
-header.
+\fBTRANSFER chunked\fR
+Specifies that this test will use the HTTP/1.1 "Transfer-Encoding: chunked" header.
.TP 5
-TRANSFER length
+\fBTRANSFER length\fR
Specifies that this test will use the HTTP/1.0 "Content-Length:" header.
.TP 5
-VERSION 1.0
+\fBVERSION 1.0\fR
.TP 5
-VERSION 1.1
+\fBVERSION 1.1\fR
.TP 5
-VERSION 2.0
+\fBVERSION 2.0\fR
.TP 5
-VERSION 2.1
+\fBVERSION 2.1\fR
.TP 5
-VERSION 2.2
+\fBVERSION 2.2\fR
Specifies the IPP version number to use for this test.
-
-.SH EXPECT PREDICATES
-The following predicates are understood following the EXPECT test directive:
+.SS EXPECT PREDICATES
+The following predicates are understood following the \fBEXPECT\fR test directive:
.TP 5
-COUNT number
-Requires the EXPECT attribute to have the specified number of values.
+\fBCOUNT \fInumber\fR
+Requires the \fBEXPECT\fR attribute to have the specified number of values.
.TP 5
-DEFINE-MATCH variable-name
-Defines the variable to "1" when the EXPECT condition matches. A side-effect of
-this predicate is that this EXPECT will never fail a test.
+\fBDEFINE\-MATCH \fIvariable-name\fR
+Defines the variable to "1" when the \fBEXPECT\fR condition matches. A side-effect of this predicate is that this \fBEXPECT\fR will never fail a test.
.TP 5
-DEFINE-NO-MATCH variable-name
-Defines the variable to "1" when the EXPECT condition does not match. A side-
-effect of this predicate is that this EXPECT will never fail a test.
+\fBDEFINE\-NO\-MATCH \fIvariable-name\fR
+Defines the variable to "1" when the \fBEXPECT\fR condition does not match. A side-effect of this predicate is that this \fBEXPECT\fR will never fail a test.
.TP 5
-DEFINE-VALUE variable-name
-Defines the variable to the value of the attribute when the EXPECT condition
-matches. A side-effect of this predicate is that this EXPECT will never fail a test.
+\fBDEFINE\-VALUE \fIvariable-name\fR
+Defines the variable to the value of the attribute when the \fBEXPECT\fR condition matches. A side-effect of this predicate is that this \fBEXPECT\fR will never fail a test.
.TP 5
-IF-DEFINED variable-name
-Makes the EXPECT conditions apply only if the specified variable is defined.
+\fBIF\-DEFINED \fIvariable-name\fR
+Makes the \fBEXPECT\fR conditions apply only if the specified variable is defined.
.TP 5
-IF-NOT-DEFINED variable-name
-Makes the EXPECT conditions apply only if the specified variable is not
-defined.
+\fBIF\-NOT\-DEFINED \fIvariable-name\fR
+Makes the \fBEXPECT\fR conditions apply only if the specified variable is not defined.
.TP 5
-IN-GROUP tag
-Requires the EXPECT attribute to be in the specified group tag.
+\fBIN\-GROUP \fItag\fR
+Requires the \fBEXPECT\fR attribute to be in the specified group tag.
.TP 5
-OF-TYPE tag[,tag,...]
-Requires the EXPECT attribute to use the specified value tag(s).
+\fBOF\-TYPE \fItag[,tag,...]\fR
+Requires the \fBEXPECT\fR attribute to use one of the specified value tag(s).
.TP 5
-REPEAT-LIMIT number
+\fBREPEAT\-LIMIT \fInumber\fR
.br
-Specifies the maximum number of times to repeat. The default value is 1000.
+Specifies the maximum number of times to repeat if the \fBREPEAT-MATCH\fR or \fBREPEAT-NO-MATCH\fR predicate is specified. The default value is 1000.
.TP 5
-REPEAT-MATCH
+\fBREPEAT\-MATCH\fR
.TP 5
-REPEAT-NO-MATCH
-Specifies that the current test should be repeated when the EXPECT condition
-matches or does not match.
+\fBREPEAT\-NO\-MATCH\fR
+Specifies that the current test should be repeated when the \fBEXPECT\fR condition matches or does not match.
.TP 5
-SAME-COUNT-AS attribute-name
-Requires the EXPECT attribute to have the same number of values as the specified
-parallel attribute.
+\fBSAME\-COUNT\-AS \fIattribute-name\fR
+Requires the \fBEXPECT\fR attribute to have the same number of values as the specified parallel attribute.
.TP 5
-WITH-ALL-HOSTNAMES "literal string"
+\fBWITH\-ALL\-HOSTNAMES "\fIliteral string\fB"\fR
.TP 5
-WITH-ALL-HOSTNAMES "/regular expression/"
+\fBWITH\-ALL\-HOSTNAMES "/\fIregular expression\fB/"\fR
Requires that all URI values contain a matching hostname.
.TP 5
-WITH-ALL-RESOURCES "literal string"
+\fBWITH\-ALL\-RESOURCES "\fIliteral string\fB"\fR
.TP 5
-WITH-ALL-RESOURCES "/regular expression/"
+\fBWITH\-ALL\-RESOURCES "/\fIregular expression\fB/"\fR
Requires that all URI values contain a matching resource (including leading /).
.TP 5
-WITH-ALL-SCHEMES "literal string"
+\fBWITH\-ALL\-SCHEMES "\fIliteral string\fB"\fR
.TP 5
-WITH-ALL-SCHEMES "/regular expression/"
+\fBWITH\-ALL-SCHEMES "/\fIregular expression\fB/"\fR
Requires that all URI values contain a matching scheme.
.TP 5
-WITH-ALL-VALUES "literal string"
-Requires that all values of the EXPECT attribute match the literal string. Comparisons are case-sensitive.
+\fBWITH\-ALL\-VALUES "\fIliteral string\fB"\fR
+Requires that all values of the \fBEXPECT\fR attribute match the literal string. Comparisons are case-sensitive.
.TP 5
-WITH-ALL-VALUES <number
+\fBWITH\-ALL\-VALUES <\fInumber\fR
.TP 5
-WITH-ALL-VALUES =number
+\fBWITH\-ALL\-VALUES =\fInumber\fR
.TP 5
-WITH-ALL-VALUES >number
+\fBWITH\-ALL\-VALUES >\fInumber\fR
.TP 5
-WITH-ALL-VALUES number[,number,...]
-Requires that all values of the EXPECT attribute match the number(s) or numeric comparison. When comparing rangeOfInteger values, the "<" and ">" operators only check the upper bound of the range.
+\fBWITH\-ALL\-VALUES \fInumber\fR[\fI,...,number\fR]
+Requires that all values of the \fBEXPECT\fR attribute match the number(s) or numeric comparison. When comparing rangeOfInteger values, the "<" and ">" operators only check the upper bound of the range.
.TP 5
-WITH-ALL-VALUES "false"
+\fBWITH\-ALL\-VALUES "false"\fR
.TP 5
-WITH-ALL-VALUES "true"
-Requires that all values of the EXPECT attribute match the boolean value given.
+\fBWITH\-ALL\-VALUES "true"\fR
+Requires that all values of the \fBEXPECT\fR attribute match the boolean value given.
.TP 5
-WITH-ALL-VALUES "/regular expression/"
-Requires that all values of the EXPECT attribute match the regular expression, which must conform to the POSIX regular expression syntax. Comparisons are case-sensitive.
+\fBWITH\-ALL\-VALUES "/\fIregular expression\fB/"\fR
+Requires that all values of the \fBEXPECT\fR attribute match the regular expression, which must conform to the POSIX regular expression syntax. Comparisons are case-sensitive.
.TP 5
-WITH-HOSTNAME "literal string"
+\fBWITH\-HOSTNAME "\fIliteral string\fB"\fR
.TP 5
-WITH-HOSTNAME "/regular expression/"
+\fBWITH\-HOSTNAME "/\fIregular expression\fB/"\fR
Requires that at least one URI value contains a matching hostname.
.TP 5
-WITH-RESOURCE "literal string"
+\fBWITH\-RESOURCE "\fIliteral string\fB"\fR
.TP 5
-WITH-RESOURCE "/regular expression/"
+\fBWITH\-RESOURCE "/\fIregular expression\fB/"\fR
Requires that at least one URI value contains a matching resource (including leading /).
.TP 5
-WITH-SCHEME "literal string"
+\fBWITH\-SCHEME "\fIliteral string\fB"\fR
.TP 5
-WITH-SCHEME "/regular expression/"
+\fBWITH\-SCHEME "/\fIregular expression\fB/"\fR
Requires that at least one URI value contains a matching scheme.
.TP 5
-WITH-VALUE "literal string"
-Requires that at least one value of the EXPECT attribute matches the literal string. Comparisons are case-sensitive.
+\fBWITH\-VALUE "\fIliteral string\fB"\fR
+Requires that at least one value of the \fBEXPECT\fR attribute matches the literal string. Comparisons are case-sensitive.
.TP 5
-WITH-VALUE <number
+\fBWITH\-VALUE <\fInumber\fR
.TP 5
-WITH-VALUE =number
+\fBWITH\-VALUE =\fInumber\fR
.TP 5
-WITH-VALUE >number
+\fBWITH\-VALUE >\fInumber\fR
.TP 5
-WITH-VALUE number[,number,...]
-Requires that at least one value of the EXPECT attribute matches the number(s) or numeric comparison. When comparing rangeOfInteger values, the "<" and ">" operators only check the upper bound of the range.
+\fBWITH\-VALUE \fInumber\fR[\fI,...,number\fR]
+Requires that at least one value of the \fBEXPECT\fR attribute matches the number(s) or numeric comparison. When comparing rangeOfInteger values, the "<" and ">" operators only check the upper bound of the range.
.TP 5
-WITH-VALUE "false"
+\fBWITH\-VALUE "false"\fR
.TP 5
-WITH-VALUE "true"
-Requires that at least one value of the EXPECT attribute matches the boolean value given.
+\fBWITH\-VALUE "true"\fR
+Requires that at least one value of the \fBEXPECT\fR attribute matches the boolean value given.
.TP 5
-WITH-VALUE "/regular expression/"
-Requires that at least one value of the EXPECT attribute matches the regular expression, which must conform to the POSIX regular expression syntax. Comparisons are case-sensitive.
-
-.SH STATUS PREDICATES
-The following predicates are understood following the STATUS test directive:
+\fBWITH\-VALUE "/\fIregular expression\fB/"\fR
+Requires that at least one value of the \fBEXPECT\fR attribute matches the regular expression, which must conform to the POSIX regular expression syntax. Comparisons are case-sensitive.
+.SS STATUS PREDICATES
+The following predicates are understood following the \fBSTATUS\fR test directive:
.TP 5
-DEFINE-MATCH variable-name
-Defines the variable to "1" when the STATUS matches. A side-effect of this predicate is that this STATUS will never fail a test.
+\fBDEFINE\-MATCH \fIvariable-name\fR
+Defines the variable to "1" when the \fBSTATUS\fR matches. A side-effect of this predicate is that this \fBSTATUS\fR will never fail a test.
.TP 5
-DEFINE-NO-MATCH variable-name
-Defines the variable to "1" when the STATUS does not match. A side-effect of this predicate is that this STATUS will never fail a test.
+\fBDEFINE\-NO\-MATCH \fIvariable-name\fR
+Defines the variable to "1" when the \fBSTATUS\fR does not match. A side-effect of this predicate is that this \fBSTATUS\fR will never fail a test.
.TP 5
-IF-DEFINED variable-name
-Makes the STATUS apply only if the specified variable is defined.
+\fBIF\-DEFINED \fIvariable-name\fR
+Makes the \fBSTATUS\fR apply only if the specified variable is defined.
.TP 5
-IF-NOT-DEFINED variable-name
-Makes the STATUS apply only if the specified variable is not defined.
+\fBIF\-NOT\-DEFINED \fIvariable-name\fR
+Makes the \fBSTATUS\fR apply only if the specified variable is not defined.
.TP 5
-REPEAT-LIMIT number
+\fBREPEAT\-LIMIT \fInumber\fR
.br
Specifies the maximum number of times to repeat. The default value is 1000.
.TP 5
-REPEAT-MATCH
+\fBREPEAT\-MATCH\fR
.TP 5
-REPEAT-NO-MATCH
-Specifies that the current test should be repeated when the response status-code
-matches or does not match the value specified by the STATUS directive.
-
-.SH OPERATION CODES
-Operation codes correspond to the hexadecimal numbers (0xHHHH) and names from
-RFC 2911 and other IPP extension specifications. Here is a complete list:
+\fBREPEAT\-NO\-MATCH\fR
+Specifies that the current test should be repeated when the response status-code matches or does not match the value specified by the STATUS directive.
+.SS OPERATION CODES
+Operation codes correspond to the hexadecimal numbers (0xHHHH) and names from RFC 2911 and other IPP extension specifications. Here is a complete list of names supported by
+.BR ipptool (8):
.nf
- Activate-Printer
- CUPS-Accept-Jobs
- CUPS-Add-Modify-Class
- CUPS-Add-Modify-Printer
- CUPS-Authenticate-Job
- CUPS-Delete-Class
- CUPS-Delete-Printer
- CUPS-Get-Classes
- CUPS-Get-Default
- CUPS-Get-Devices
- CUPS-Get-Document
- CUPS-Get-PPD
- CUPS-Get-PPDs
- CUPS-Get-Printers
- CUPS-Move-Job
- CUPS-Reject-Jobs
- CUPS-Set-Default
- Cancel-Current-Job
- Cancel-Job
- Cancel-Jobs
- Cancel-My-Jobs
- Cancel-Subscription
- Close-Job
- Create-Job
- Create-Job-Subscriptions
- Create-Printer-Subscriptions
- Deactivate-Printer
- Disable-Printer
- Enable-Printer
- Get-Job-Attributes
- Get-Jobs
- Get-Notifications
- Get-Printer-Attributes
- Get-Printer-Support-Files
- Get-Printer-Supported-Values
- Get-Subscription-Attributes
- Get-Subscriptions
- Hold-Job
- Hold-New-Jobs
- Identify-Printer
- Pause-Printer
- Pause-Printer-After-Current-Job
- Print-Job
- Print-URI
- Promote-Job
- Purge-Jobs
- Release-Held-New-Jobs
- Release-Job
- Renew-Subscription
- Reprocess-Job
- Restart-Job
- Restart-Printer
- Resubmit-Job
- Resume-Job
- Resume-Printer
- Schedule-Job-After
- Send-Document
- Send-Hardcopy-Document
- Send-Notifications
- Send-URI
- Set-Job-Attributes
- Set-Printer-Attributes
- Shutdown-Printer
- Startup-Printer
- Suspend-Current-Job
- Validate-Document
- Validate-Job
-.fi
-.SH STATUS CODES
-Status codes correspond to the hexadecimal numbers (0xHHHH) and names from RFC
-2911 and other IPP extension specifications. Here is a complete list:
-.nf
- client-error-attributes-not-settable
- client-error-attributes-or-values-not-supported
- client-error-bad-request
- client-error-charset-not-supported
- client-error-compression-error
- client-error-compression-not-supported
- client-error-conflicting-attributes
- client-error-document-access-error
- client-error-document-format-error
- client-error-document-format-not-supported
- client-error-document-password-error
- client-error-document-permission-error
- client-error-document-security-error
- client-error-document-unprintable-error
- client-error-forbidden
- client-error-gone
- client-error-ignored-all-notifications
- client-error-ignored-all-subscriptions
- client-error-not-authenticated
- client-error-not-authorized
- client-error-not-found
- client-error-not-possible
- client-error-print-support-file-not-found
- client-error-request-entity-too-large
- client-error-request-value-too-long
- client-error-timeout
- client-error-too-many-subscriptions
- client-error-uri-scheme-not-supported
- cups-see-other
- redirection-other-site
- server-error-busy
- server-error-device-error
- server-error-internal-error
- server-error-job-canceled
- server-error-multiple-document-jobs-not-supported
- server-error-not-accepting-jobs
- server-error-operation-not-supported
- server-error-printer-is-deactivated
- server-error-service-unavailable
- server-error-temporary-error
- server-error-version-not-supported
- successful-ok
- successful-ok-but-cancel-subscription
- successful-ok-conflicting-attributes
- successful-ok-events-complete
- successful-ok-ignored-notifications
- successful-ok-ignored-or-substituted-attributes
- successful-ok-ignored-subscriptions
- successful-ok-too-many-events
+ Activate\-Printer
+ CUPS\-Accept\-Jobs
+ CUPS\-Add\-Modify\-Class
+ CUPS\-Add\-Modify\-Printer
+ CUPS\-Authenticate\-Job
+ CUPS\-Delete\-Class
+ CUPS\-Delete\-Printer
+ CUPS\-Get\-Classes
+ CUPS\-Get\-Default
+ CUPS\-Get\-Devices
+ CUPS\-Get\-Document
+ CUPS\-Get\-PPD
+ CUPS\-Get\-PPDs
+ CUPS\-Get\-Printers
+ CUPS\-Move\-Job
+ CUPS\-Reject\-Jobs
+ CUPS\-Set\-Default
+ Cancel\-Current\-Job
+ Cancel\-Job
+ Cancel\-Jobs
+ Cancel\-My\-Jobs
+ Cancel\-Subscription
+ Close\-Job
+ Create\-Job
+ Create\-Job\-Subscriptions
+ Create\-Printer\-Subscriptions
+ Deactivate\-Printer
+ Disable\-Printer
+ Enable\-Printer
+ Get\-Job\-Attributes
+ Get\-Jobs
+ Get\-Notifications
+ Get\-Printer\-Attributes
+ Get\-Printer\-Support\-Files
+ Get\-Printer\-Supported\-Values
+ Get\-Subscription\-Attributes
+ Get\-Subscriptions
+ Hold\-Job
+ Hold\-New\-Jobs
+ Identify\-Printer
+ Pause\-Printer
+ Pause\-Printer\-After\-Current\-Job
+ Print\-Job
+ Print\-URI
+ Promote\-Job
+ Purge\-Jobs
+ Release\-Held\-New\-Jobs
+ Release\-Job
+ Renew\-Subscription
+ Reprocess\-Job
+ Restart\-Job
+ Restart\-Printer
+ Resubmit\-Job
+ Resume\-Job
+ Resume\-Printer
+ Schedule\-Job\-After
+ Send\-Document
+ Send\-Hardcopy\-Document
+ Send\-Notifications
+ Send\-URI
+ Set\-Job\-Attributes
+ Set\-Printer\-Attributes
+ Shutdown\-Printer
+ Startup\-Printer
+ Suspend\-Current\-Job
+ Validate\-Document
+ Validate\-Job
.fi
+.SS STATUS CODES
+Status codes correspond to the hexadecimal numbers (0xHHHH) and names from RFC 2911 and other IPP extension specifications. Here is a complete list of the names supported by
+.BR ipptool (8):
+.nf
-.SH TAGS
-Value and group tags correspond to the names from RFC 2911 and other IPP
-extension specifications. Here are the group tags:
+ client\-error\-account\-authorization\-failed
+ client\-error\-account\-closed
+ client\-error\-account\-info\-needed
+ client\-error\-account\-limit\-reached
+ client\-error\-attributes\-not\-settable
+ client\-error\-attributes\-or\-values\-not\-supported
+ client\-error\-bad\-request
+ client\-error\-charset\-not\-supported
+ client\-error\-compression\-error
+ client\-error\-compression\-not\-supported
+ client\-error\-conflicting\-attributes
+ client\-error\-document\-access\-error
+ client\-error\-document\-format\-error
+ client\-error\-document\-format\-not\-supported
+ client\-error\-document\-password\-error
+ client\-error\-document\-permission\-error
+ client\-error\-document\-security\-error
+ client\-error\-document\-unprintable\-error
+ client\-error\-forbidden
+ client\-error\-gone
+ client\-error\-ignored\-all\-notifications
+ client\-error\-ignored\-all\-subscriptions
+ client\-error\-not\-authenticated
+ client\-error\-not\-authorized
+ client\-error\-not\-found
+ client\-error\-not\-possible
+ client\-error\-print\-support\-file\-not\-found
+ client\-error\-request\-entity\-too\-large
+ client\-error\-request\-value\-too\-long
+ client\-error\-timeout
+ client\-error\-too\-many\-subscriptions
+ client\-error\-uri\-scheme\-not\-supported
+ cups\-error\-account\-authorization\-failed
+ cups\-error\-account\-closed
+ cups\-error\-account\-info\-needed
+ cups\-error\-account\-limit\-reached
+ cups\-see\-other
+ redirection\-other\-site
+ server\-error\-busy
+ server\-error\-device\-error
+ server\-error\-internal\-error
+ server\-error\-job\-canceled
+ server\-error\-multiple\-document\-jobs\-not\-supported
+ server\-error\-not\-accepting\-jobs
+ server\-error\-operation\-not\-supported
+ server\-error\-printer\-is\-deactivated
+ server\-error\-service\-unavailable
+ server\-error\-temporary\-error
+ server\-error\-version\-not\-supported
+ successful\-ok
+ successful\-ok\-but\-cancel\-subscription
+ successful\-ok\-conflicting\-attributes
+ successful\-ok\-events\-complete
+ successful\-ok\-ignored\-notifications
+ successful\-ok\-ignored\-or\-substituted\-attributes
+ successful\-ok\-ignored\-subscriptions
+ successful\-ok\-too\-many\-events
+.fi
+.SS TAGS
+Value and group tags correspond to the names from RFC 2911 and other IPP extension specifications. Here are the group tags:
.nf
- event-notification-attributes-tag
- job-attributes-tag
- operation-attributes-tag
- printer-attributes-tag
- subscription-attributes-tag
- unsupported-attributes-tag
+
+ document\-attributes\-tag
+ event\-notification\-attributes\-tag
+ job\-attributes\-tag
+ operation\-attributes\-tag
+ printer\-attributes\-tag
+ subscription\-attributes\-tag
+ unsupported\-attributes\-tag
.fi
.LP
Here are the value tags:
.nf
- admin-define
+
+ admin\-define
boolean
charset
collection
dateTime
default
- delete-attribute
+ delete\-attribute
enum
integer
keyword
@@ -551,8 +534,8 @@ Here are the value tags:
nameWithLanguage
nameWithoutLanguage
naturalLanguage
- no-value
- not-settable
+ no\-value
+ not\-settable
octetString
rangeOfInteger
resolution
@@ -563,66 +546,71 @@ Here are the value tags:
uri
uriScheme
.fi
-
-.SH VARIABLES
-The \fIipptool\fR program maintains a list of variables that can be used in any
-literal string or attribute value by specifying "$variable-name". Aside from
-variables defined using the "-d" option or "DEFINE" directive, the following
-pre-defined variables are available:
+.SS VARIABLES
+The
+.BR ipptool (8)
+program maintains a list of variables that can be used in any literal string or attribute value by specifying "\fI$variable-name\fR". Aside from variables defined using the \fI-d\fR option or \fBDEFINE\fR directive, the following pre-defined variables are available:
.TP 5
-$$
+\fB$$\fR
Inserts a single "$" character.
.TP 5
-$ENV[name]
-Inserts the value of the named environment variable, or an empty string if the
-environment variable is not defined.
+\fB$ENV[\fIname\fB]\fR
+Inserts the value of the named environment variable, or an empty string if the environment variable is not defined.
.TP 5
-$filename
-Inserts the filename provided to \fIipptool\fR with the "-f" option.
+\fB$filename\fR
+Inserts the filename provided to
+.BR ipptool (8)
+with the \fI-f\fR option.
.TP 5
-$hostname
-Inserts the hostname from the URI provided to \fIipptool\fR.
+\fB$filetype\fR
+Inserts the MIME media type for the filename provided to
+.BR ipptool (8)
+with the \fI-f\fR option.
.TP 5
-$job-id
-Inserts the last job-id value returned in a test response or 0 if no job-id has
-been seen.
+\fB$hostname\fR
+Inserts the hostname from the URI provided to
+.BR ipptool (8).
.TP 5
-$job-uri
-Inserts the last job-uri value returned in a test response or an empty string if
-no job-uri has been seen.
+\fB$job\-id\fR
+Inserts the last "job\-id" attribute value returned in a test response or 0 if no "job\-id" attribute has been seen.
.TP 5
-$scheme
-Inserts the scheme from the URI provided to \fIipptool\fR.
+\fB$job\-uri\fR
+Inserts the last "job\-uri" attribute value returned in a test response or an empty string if no "job\-uri" attribute has been seen.
.TP 5
-$notify-subscription-id
-Inserts the last notify-subscription-id value returned in a test response or 0 if
-no notify-subscription-id has been seen.
+\fB$notify\-subscription\-id\fR
+Inserts the last "notify\-subscription\-id" attribute value returned in a test response or 0 if no "notify\-subscription\-id" attribute has been seen.
.TP 5
-$port
-Inserts the port number from the URI provided to \fIipptool\fR.
+\fB$port\fR
+Inserts the port number from the URI provided to
+.BR ipptool (8).
.TP 5
-$resource
-Inserts the resource path from the URI provided to \fIipptool\fR.
+\fB$resource\fR
+Inserts the resource path from the URI provided to
+.BR ipptool (8).
.TP 5
-$uri
-Inserts the URI provided to \fIipptool\fR.
+\fB$scheme\fR
+Inserts the scheme from the URI provided to
+.BR ipptool (8).
.TP 5
-$user
-Inserts the current user's login name.
+\fB$uri\fR
+Inserts the URI provided to
+.BR ipptool (8).
.TP 5
-$username
-Inserts the username from the URI provided to \fIipptool\fR, if any.
-
+\fB$uriuser\fR
+Inserts the username from the URI provided to
+.BR ipptool (8),
+if any.
+.TP 5
+\fB$user\fR
+Inserts the current user's login name.
.SH SEE ALSO
-\fIipptool(1)\fR, RFC 2911,
-.br
-http://localhost:631/help
-.br
-http://www.iana.org/assignments/ipp-registrations
-.br
-http://www.pwg.org/ipp
+.BR ipptool (1),
+CUPS Online Help (http://localhost:631/help),
+IANA IPP Registry (http://www.iana.org/assignments/ipp-registrations),
+PWG Internet Printing Protocol Workgroup (http://www.pwg.org/ipp),
+RFC 2911 (http://tools.ietf.org/html/rfc3911)
.SH COPYRIGHT
-Copyright 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
.\"
-.\" End of "$Id: ipptoolfile.man 11734 2014-03-25 18:01:47Z msweet $".
+.\" End of "$Id: ipptoolfile.man 11880 2014-05-16 06:14:11Z msweet $".
.\"
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 <cups/string-private.h>
+#include <cups/array-private.h>
#include <unistd.h>
/*
+ * Local globals...
+ */
+
+static const char /* Start/end tags for fonts */
+ * const start_fonts[] = { "", "<b>", "<i>" },
+ * const end_fonts[] = { "", "</b>", "</i>" };
+
+
+/*
* Local functions...
*/
-static void putc_entity(int ch, FILE *fp);
+static void html_alternate(const char *s, const char *first, const char *second, FILE *fp);
+static void html_fputs(const char *s, int *font, FILE *fp);
+static void html_putc(int ch, FILE *fp);
static void strmove(char *d, const char *s);
@@ -47,20 +53,18 @@ main(int argc, /* I - Number of command-line args */
*outfile; /* Output file */
char line[1024], /* Line from file */
*lineptr, /* Pointer into line */
- *endptr, /* Pointer to end of current */
- endchar, /* End character */
- *paren, /* Pointer to parenthesis */
- name[1024]; /* Man page name */
- int section, /* Man page section */
- pre, /* Preformatted */
- font, /* Current font */
- blist, /* In a bullet list? */
- list, /* In a list? */
- linenum; /* Current line number */
- const char *post; /* Text to add after the current line */
- static const char /* Start/end tags for fonts */
- * const start_fonts[] = { "", "<b>", "<i>" },
- * const end_fonts[] = { "", "</b>", "</i>" };
+ name[1024], /* Man page name */
+ ddpost[256]; /* Tagged list post markup */
+ int section = -1, /* Man page section */
+ pre = 0, /* Preformatted */
+ font = 0, /* Current font */
+ linenum = 0; /* Current line number */
+ float list_indent = 0.0f, /* Current list indentation */
+ nested_indent = 0.0f; /* Nested list indentation, if any */
+ const char *list = NULL, /* Current list, if any */
+ *nested = NULL; /* Nested list, if any */
+ const char *post = NULL; /* Text to add after the current line */
+
/*
* Check arguments...
@@ -103,24 +107,20 @@ main(int argc, /* I - Number of command-line args */
* Read from input and write the output...
*/
- fputs("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
- "\"http://www.w3.org/TR/html4/loose.dtd\">\n"
+ fputs("<!DOCTYPE HTML>\n"
"<html>\n"
"<!-- SECTION: Man Pages -->\n"
"<head>\n"
"\t<link rel=\"stylesheet\" type=\"text/css\" "
"href=\"../cups-printable.css\">\n", outfile);
- blist = 0;
- font = 0;
- list = 0;
- linenum = 0;
- pre = 0;
- post = NULL;
- section = -1;
-
while (fgets(line, sizeof(line), infile))
{
+ size_t linelen = strlen(line); /* Length of line */
+
+ if (linelen > 0 && line[linelen - 1] == '\n')
+ line[linelen - 1] = '\0';
+
linenum ++;
if (line[0] == '.')
@@ -163,247 +163,492 @@ main(int argc, /* I - Number of command-line args */
int first = 1;
fputs(end_fonts[font], outfile);
-
- if (blist)
- {
- fputs("</li>\n</ul>\n", outfile);
- blist = 0;
- }
+ font = 0;
if (list)
{
- if (list == 1)
- fputs("</dt>\n", outfile);
- else if (list)
- fputs("</dd>\n", outfile);
-
- fputs("</dl>\n", outfile);
- list = 0;
+ fprintf(outfile, "</%s>\n", list);
+ list = NULL;
}
- line[strlen(line) - 1] = '\0'; /* Strip LF */
-
if (line[2] == 'H')
fputs("<h2 class=\"title\"><a name=\"", outfile);
else
fputs("<h3><a name=\"", outfile);
for (lineptr = line + 4; *lineptr; lineptr ++)
- if (*lineptr == '\"')
+ if (*lineptr == '\"')
continue;
- else if (*lineptr == ' ')
- putc_entity('_', outfile);
+ else if (isalnum(*lineptr & 255))
+ html_putc(*lineptr, outfile);
else
- putc_entity(*lineptr, outfile);
+ html_putc('_', outfile);
fputs("\">", outfile);
for (lineptr = line + 4; *lineptr; lineptr ++)
+ {
if (*lineptr == '\"')
continue;
else if (*lineptr == ' ')
{
- putc_entity(' ', outfile);
+ html_putc(' ', outfile);
first = 1;
}
else
{
if (first)
- putc_entity(*lineptr, outfile);
+ html_putc(*lineptr, outfile);
else
- putc_entity(tolower(*lineptr), outfile);
+ html_putc(tolower(*lineptr & 255), outfile);
first = 0;
}
+ }
if (line[2] == 'H')
- fprintf(outfile, "</a></h2>\n%s", start_fonts[font]);
+ fputs("</a></h2>\n", outfile);
else
- fprintf(outfile, "</a></h3>\n%s", start_fonts[font]);
+ fputs("</a></h3>\n", outfile);
}
- else if (!strncmp(line, ".LP", 3) || !strncmp(line, ".PP", 3))
+ else if (!strncmp(line, ".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("</li>\n</ul>\n", outfile);
- blist = 0;
+ fputs(post, outfile);
+ post = NULL;
}
+ }
+ else if (!strncmp(line, ".I ", 3))
+ {
+ /*
+ * Grab italic text...
+ */
- if (list)
+ fputs(end_fonts[font], outfile);
+ font = 0;
+
+ html_alternate(line + 3, "i", "i", outfile);
+
+ if (post)
{
- if (list == 1)
- fputs("</dt>\n", outfile);
- else if (list)
- fputs("</dd>\n", outfile);
+ fputs(post, outfile);
+ post = NULL;
+ }
+ }
+ else if (!strncmp(line, ".BI ", 4))
+ {
+ /*
+ * Alternating bold and italic text...
+ */
+
+ fputs(end_fonts[font], outfile);
+ font = 0;
+
+ html_alternate(line + 4, "b", "i", outfile);
- fputs("</dl>\n", outfile);
- list = 0;
+ if (post)
+ {
+ fputs(post, outfile);
+ post = NULL;
}
+ }
+ else if (!strncmp(line, ".BR ", 4))
+ {
+ /*
+ * Alternating bold and roman (plain) text...
+ */
- fputs("<p>", outfile);
+ fputs(end_fonts[font], outfile);
font = 0;
+
+ html_alternate(line + 4, "b", NULL, outfile);
+
+ if (post)
+ {
+ fputs(post, outfile);
+ post = NULL;
+ }
}
- else if (!strncmp(line, ".TP ", 4))
+ else if (!strncmp(line, ".IB ", 4))
{
/*
- * Grab list...
- */
+ * Alternating italic and bold text...
+ */
fputs(end_fonts[font], outfile);
+ font = 0;
+
+ html_alternate(line + 4, "i", "b", outfile);
- if (blist)
+ if (post)
{
- fputs("</li>\n</ul>\n", outfile);
- blist = 0;
+ fputs(post, outfile);
+ post = NULL;
}
+ }
+ else if (!strncmp(line, ".IR ", 4))
+ {
+ /*
+ * Alternating italic and roman (plain) text...
+ */
- if (!list)
- fputs("<dl>\n", outfile);
- else if (list == 1)
- fputs("</dt>\n", outfile);
- else if (list)
- fputs("</dd>\n", outfile);
-
- fputs("<dt>", outfile);
- list = 1;
+ fputs(end_fonts[font], outfile);
font = 0;
+
+ html_alternate(line + 4, "i", NULL, outfile);
+
+ if (post)
+ {
+ fputs(post, outfile);
+ post = NULL;
+ }
}
- else if (!strncmp(line, ".br", 3))
+ else if (!strncmp(line, ".RB ", 4))
{
/*
- * Grab line break...
- */
+ * Alternating roman (plain) and bold text...
+ */
- if (list == 1)
+ fputs(end_fonts[font], outfile);
+ font = 0;
+
+ html_alternate(line + 4, NULL, "b", outfile);
+
+ if (post)
{
- fputs("</dt>\n<dd>", outfile);
- list = 2;
+ fputs(post, outfile);
+ post = NULL;
}
- else if (list)
- fputs("</dd>\n<dd>", outfile);
- else
- fputs("<br>\n", outfile);
}
- else if (!strncmp(line, ".de ", 4))
+ else if (!strncmp(line, ".RI ", 4))
{
/*
- * Define macro - ignore...
- */
+ * Alternating roman (plain) and italic text...
+ */
- while (fgets(line, sizeof(line), infile))
+ fputs(end_fonts[font], outfile);
+ font = 0;
+
+ html_alternate(line + 4, NULL, "i", outfile);
+
+ if (post)
{
- linenum ++;
+ fputs(post, outfile);
+ post = NULL;
+ }
+ }
+ else if (!strncmp(line, ".SB ", 4))
+ {
+ /*
+ * Alternating small and bold text...
+ */
- if (!strncmp(line, "..", 2))
- break;
+ fputs(end_fonts[font], outfile);
+ font = 0;
+
+ html_alternate(line + 4, "small", "b", outfile);
+
+ if (post)
+ {
+ fputs(post, outfile);
+ post = NULL;
}
}
- else if (!strncmp(line, ".RS", 3))
+ else if (!strncmp(line, ".SM ", 4))
{
/*
- * Indent...
- */
+ * Small text...
+ */
- fputs("<div style='margin-left: 3em;'>\n", outfile);
+ fputs(end_fonts[font], outfile);
+ font = 0;
+
+ html_alternate(line + 4, "small", "small", outfile);
+
+ if (post)
+ {
+ fputs(post, outfile);
+ post = NULL;
+ }
}
- else if (!strncmp(line, ".RE", 3))
+ else if (!strcmp(line, ".LP") || !strcmp(line, ".PP") || !strcmp(line, ".P"))
{
/*
- * Unindent...
+ * New paragraph...
*/
- fputs("</div>\n", outfile);
+ fputs(end_fonts[font], outfile);
+ font = 0;
+
+ if (list)
+ {
+ fprintf(outfile, "</%s>\n", list);
+ list = NULL;
+ }
+
+ fputs("<p>", outfile);
}
- else if (!strncmp(line, ".ds ", 4) || !strncmp(line, ".rm ", 4) ||
- !strncmp(line, ".tr ", 4) || !strncmp(line, ".hy ", 4) ||
- !strncmp(line, ".IX ", 4) || !strncmp(line, ".PD", 3) ||
- !strncmp(line, ".Sp", 3))
+ else if (!strcmp(line, ".RS") || !strncmp(line, ".RS ", 4))
{
/*
- * Ignore unused commands...
+ * Indent...
*/
+
+ float amount = 3.0; /* Indentation */
+
+ if (line[3])
+ amount = atof(line + 4);
+
+ fputs(end_fonts[font], outfile);
+ font = 0;
+
+ if (list)
+ {
+ nested = list;
+ list = NULL;
+ nested_indent = list_indent;
+ list_indent = 0.0f;
+ }
+
+ fprintf(outfile, "<div style=\"margin-left: %.1fem;\">\n", amount - nested_indent);
}
- else if (!strncmp(line, ".Vb", 3) || !strncmp(line, ".nf", 3))
+ else if (!strcmp(line, ".RE"))
{
/*
- * Start preformatted...
+ * Unindent...
*/
- pre = 1;
- fputs("<pre>\n", outfile);
+ fputs(end_fonts[font], outfile);
+ font = 0;
+
+ fputs("</div>\n", outfile);
+
+ if (nested)
+ {
+ list = nested;
+ nested = NULL;
+
+ list_indent = nested_indent;
+ nested_indent = 0.0f;
+ }
}
- else if (!strncmp(line, ".Ve", 3) || !strncmp(line, ".fi", 3))
+ else if (!strcmp(line, ".HP") || !strncmp(line, ".HP ", 4))
{
/*
- * End preformatted...
+ * Hanging paragraph...
+ *
+ * .HP i
*/
- if (pre)
- {
- pre = 0;
- fputs("</pre>\n", outfile);
- }
+ float amount = 3.0; /* Indentation */
+
+ if (line[3])
+ amount = atof(line + 4);
+
+ fputs(end_fonts[font], outfile);
+ font = 0;
+
+ if (list)
+ {
+ fprintf(outfile, "</%s>\n", list);
+ list = NULL;
+ }
+
+ fprintf(outfile, "<p style=\"margin-left: %.1fem; text-indent: %.1fem\">", amount, -amount);
+
+ if (line[1] == 'T')
+ post = "<br>\n";
}
- else if (!strncmp(line, ".IP \\(bu", 8))
+ else if (!strcmp(line, ".TP") || !strncmp(line, ".TP ", 4))
{
/*
- * Bullet list...
+ * Tagged list...
+ *
+ * .TP i
*/
- if (blist)
- fputs("</li>\n", outfile);
- else
- {
- fputs("<ul>\n", outfile);
- blist = 1;
- }
+ float amount = 3.0; /* Indentation */
+
+ if (line[3])
+ amount = atof(line + 4);
+
+ fputs(end_fonts[font], outfile);
+ font = 0;
+
+ if (list && strcmp(list, "dl"))
+ {
+ fprintf(outfile, "</%s>\n", list);
+ list = NULL;
+ }
- fputs("<li>", outfile);
+ if (!list)
+ {
+ fputs("<dl class=\"man\">\n", outfile);
+ list = "dl";
+ list_indent = amount;
+ }
+
+ fputs("<dt>", outfile);
+ snprintf(ddpost, sizeof(ddpost), "<dd style=\"margin-left: %.1fem\">", amount);
+ post = ddpost;
}
else if (!strncmp(line, ".IP ", 4))
{
/*
* Indented paragraph...
+ *
+ * .IP x i
*/
- if (blist)
+ float amount = 3.0; /* Indentation */
+ const char *newlist = NULL; /* New list style */
+ const char *newtype = NULL; /* New list numbering type */
+
+ fputs(end_fonts[font], outfile);
+ font = 0;
+
+ lineptr = line + 4;
+ while (isspace(*lineptr & 255))
+ lineptr ++;
+
+ if (!strncmp(lineptr, "\\(bu", 4) || !strncmp(lineptr, "\\(em", 4))
{
- fputs("</li>\n</ul>\n", outfile);
- blist = 0;
- }
+ /*
+ * Bullet list...
+ */
- fputs("<p style='margin-left: 3em;'>", outfile);
+ newlist = "ul";
+ }
+ else if (isdigit(*lineptr & 255))
+ {
+ /*
+ * Numbered list...
+ */
- for (lineptr = line + 4; isspace(*lineptr); lineptr ++);
+ newlist = "ol";
+ }
+ else if (islower(*lineptr & 255))
+ {
+ /*
+ * Lowercase alpha list...
+ */
- if (*lineptr == '\"')
+ newlist = "ol";
+ newtype = "a";
+ }
+ else if (isupper(*lineptr & 255))
{
- strmove(line, lineptr + 1);
+ /*
+ * Lowercase alpha list...
+ */
+
+ newlist = "ol";
+ newtype = "A";
+ }
+
+ while (!isspace(*lineptr & 255))
+ lineptr ++;
+ while (isspace(*lineptr & 255))
+ lineptr ++;
- if ((lineptr = strchr(line, '\"')) != NULL)
- *lineptr = '\0';
+ if (isdigit(*lineptr & 255))
+ amount = atof(lineptr);
+
+ if (newlist && list && strcmp(newlist, list))
+ {
+ fprintf(outfile, "</%s>\n", list);
+ list = NULL;
}
- else
- {
- strmove(line, lineptr);
- if ((lineptr = strchr(line, ' ')) != NULL)
- *lineptr = '\0';
+ if (newlist && !list)
+ {
+ if (newtype)
+ fprintf(outfile, "<%s type=\"%s\">\n", newlist, newtype);
+ else
+ fprintf(outfile, "<%s>\n", newlist);
+
+ list = newlist;
}
+ if (list)
+ fprintf(outfile, "<li style=\"margin-left: %.1fem;\">", amount);
+ else
+ fprintf(outfile, "<p style=\"margin-left: %.1fem;\">", amount);
+ }
+ else if (!strncmp(line, ".br", 3))
+ {
/*
- * Process the text as if it was in-line...
+ * Grab line break...
*/
- post = "\n<br>\n<br>";
- goto process_text;
+ fputs("<br>\n", outfile);
+ }
+ else if (!strncmp(line, ".de ", 4))
+ {
+ /*
+ * Define macro - ignore...
+ */
+
+ while (fgets(line, sizeof(line), infile))
+ {
+ linenum ++;
+
+ if (!strncmp(line, "..", 2))
+ break;
+ }
+ }
+ else if (!strncmp(line, ".ds ", 4) || !strncmp(line, ".rm ", 4) ||
+ !strncmp(line, ".tr ", 4) || !strncmp(line, ".hy ", 4) ||
+ !strncmp(line, ".IX ", 4) || !strncmp(line, ".PD", 3) ||
+ !strncmp(line, ".Sp", 3))
+ {
+ /*
+ * Ignore unused commands...
+ */
+ }
+ else if (!strncmp(line, ".Vb", 3) || !strncmp(line, ".nf", 3) || !strncmp(line, ".EX", 3))
+ {
+ /*
+ * Start preformatted...
+ */
+
+ fputs(end_fonts[font], outfile);
+ font = 0;
+
+// if (list)
+// {
+// fprintf(outfile, "</%s>\n", list);
+// list = NULL;
+// }
+
+ pre = 1;
+ fputs("<pre class=\"man\">\n", outfile);
+ }
+ else if (!strncmp(line, ".Ve", 3) || !strncmp(line, ".fi", 3) || !strncmp(line, ".EE", 3))
+ {
+ /*
+ * End preformatted...
+ */
+
+ fputs(end_fonts[font], outfile);
+ font = 0;
+
+ if (pre)
+ {
+ pre = 0;
+ fputs("</pre>\n", outfile);
+ }
}
else if (!strncmp(line, ".\\}", 3))
{
@@ -441,24 +686,6 @@ main(int argc, /* I - Number of command-line args */
*/
}
#endif /* 0 */
- else if (!strncmp(line, ".B ", 3))
- {
- /*
- * Grab bold text...
- */
-
- fprintf(outfile, "%s<b>%s</b>%s", end_fonts[font], line + 3,
- start_fonts[font]);
- }
- else if (!strncmp(line, ".I ", 3))
- {
- /*
- * Grab italic text...
- */
-
- fprintf(outfile, "%s<i>%s</i>%s", end_fonts[font], line + 3,
- start_fonts[font]);
- }
else if (strncmp(line, ".\\\"", 3))
{
/*
@@ -470,15 +697,14 @@ main(int argc, /* I - Number of command-line args */
else if ((lineptr = strchr(line, '\n')) != NULL)
*lineptr = '\0';
- fprintf(stderr, "mantohtml: Unknown man page command \'%s\' on line %d!\n",
- line, linenum);
+ fprintf(stderr, "mantohtml: Unknown man page command \'%s\' on line %d.\n", line, linenum);
}
/*
* Skip continuation lines...
*/
- lineptr = line + strlen(line) - 2;
+ lineptr = line + strlen(line) - 1;
if (lineptr >= line && *lineptr == '\\')
{
while (fgets(line, sizeof(line), infile))
@@ -497,169 +723,24 @@ main(int argc, /* I - Number of command-line args */
* Process man page text...
*/
-process_text:
-
- for (lineptr = line; *lineptr; lineptr ++)
- {
- if (!strncmp(lineptr, "http://", 7))
- {
- /*
- * Embed URL...
- */
-
- for (endptr = lineptr + 7;
- *endptr && !isspace(*endptr & 255);
- endptr ++);
-
- endchar = *endptr;
- *endptr = '\0';
-
- fprintf(outfile, "<a href='%s'>%s</a>", lineptr, lineptr);
- *endptr = endchar;
- lineptr = endptr - 1;
- }
- else if (!strncmp(lineptr, "\\fI", 3) &&
- (endptr = strstr(lineptr, "\\fR")) != NULL &&
- (paren = strchr(lineptr, '(')) != NULL &&
- paren < endptr)
- {
- /*
- * Link to man page?
- */
-
- char manfile[1024], /* Man page filename */
- manurl[1024]; /* Man page URL */
-
-
- /*
- * See if the man file is available locally...
- */
-
- lineptr += 3;
- endchar = *paren;
- *paren = '\0';
-
- snprintf(manfile, sizeof(manfile), "%s.man", lineptr);
- snprintf(manurl, sizeof(manurl), "man-%s.html?TOPIC=Man+Pages",
- lineptr);
-
- *paren = endchar;
- endchar = *endptr;
- *endptr = '\0';
-
- if (access(manfile, 0))
- {
- /*
- * Not a local man page, just do it italic...
- */
-
- fputs("<i>", outfile);
- while (*lineptr)
- putc_entity(*lineptr++, outfile);
- fputs("</i>", outfile);
- }
- else
- {
- /*
- * Local man page, do a link...
- */
-
- fprintf(outfile, "<a href='%s'>", manurl);
- while (*lineptr)
- putc_entity(*lineptr++, outfile);
- fputs("</a>", outfile);
- }
-
- *endptr = endchar;
- lineptr = endptr + 2;
- }
- else if (*lineptr == '\\')
- {
- lineptr ++;
- if (!*lineptr)
- break;
- else if (isdigit(lineptr[0]) && isdigit(lineptr[1]) &&
- isdigit(lineptr[2]))
- {
- fprintf(outfile, "&#%d;", ((lineptr[0] - '0') * 8 +
- lineptr[1] - '0') * 8 +
- lineptr[2] - '0');
- lineptr += 2;
- }
- else if (*lineptr == '&')
- continue;
- else if (*lineptr == 's')
- {
- while (lineptr[1] == '-' || isdigit(lineptr[1]))
- lineptr ++;
- }
- else if (*lineptr == '*')
- {
- lineptr += 2;
- }
- else if (*lineptr != 'f')
- putc_entity(*lineptr, outfile);
- else
- {
- lineptr ++;
- if (!*lineptr)
- break;
- else
- {
- fputs(end_fonts[font], outfile);
-
- switch (*lineptr)
- {
- default : /* Regular */
- font = 0;
- break;
- case 'B' : /* Bold */
- case 'b' :
- font = 1;
- break;
- case 'I' : /* Italic */
- case 'i' :
- font = 2;
- break;
- }
-
- fputs(start_fonts[font], outfile);
- }
- }
- }
- else
- putc_entity(*lineptr, outfile);
- }
+ html_fputs(line, &font, outfile);
+ putc('\n', outfile);
if (post)
{
fputs(post, outfile);
post = NULL;
}
-
- if (list == 1)
- {
- fputs("</dt>\n<dd>", outfile);
- list = 2;
- }
}
}
fprintf(outfile, "%s\n", end_fonts[font]);
-
- if (blist)
- {
- fputs("</li>\n</ul>\n", outfile);
- }
+ font = 0;
if (list)
{
- if (list == 1)
- fputs("</dt>\n", outfile);
- else if (list)
- fputs("</dd>\n", outfile);
-
- fputs("</dl>\n", outfile);
+ fprintf(outfile, "</%s>\n", list);
+ list = NULL;
}
fputs("</body>\n"
@@ -684,12 +765,303 @@ process_text:
/*
- * 'putc_entity()' - Put a single character, using entities as needed.
+ * 'html_alternate()' - Alternate words between two styles of text.
+ */
+
+static void
+html_alternate(const char *s, /* I - String */
+ const char *first, /* I - First style or NULL */
+ const char *second, /* I - Second style of NULL */
+ FILE *fp) /* I - File */
+{
+ int i = 0; /* Which style */
+ int quote = 0; /* Saw quote? */
+ int dolinks, /* Do hyperlinks to other man pages? */
+ link = 0; /* Doing a link now? */
+
+
+ /*
+ * Skip leading whitespace...
+ */
+
+ while (isspace(*s & 255))
+ s ++;
+
+ dolinks = first && !strcmp(first, "b") && !second;
+
+ while (*s)
+ {
+ if (!i && dolinks)
+ {
+ /*
+ * See if we need to make a link to a man page...
+ */
+
+ const char *end; /* End of current word */
+ const char *next; /* Start of next word */
+
+ for (end = s; *end && !isspace(*end & 255); end ++);
+ for (next = end; isspace(*next & 255); next ++);
+
+ if (isalnum(*s & 255) && *next == '(')
+ {
+ /*
+ * See if the man file is available locally...
+ */
+
+ char name[1024], /* Name */
+ manfile[1024], /* Man page filename */
+ manurl[1024]; /* Man page URL */
+
+ strlcpy(name, s, sizeof(name));
+ if ((size_t)(end - s) < sizeof(name))
+ name[end - s] = '\0';
+
+ snprintf(manfile, sizeof(manfile), "%s.man", name);
+ snprintf(manurl, sizeof(manurl), "man-%s.html?TOPIC=Man+Pages", name);
+
+ if (!access(manfile, 0))
+ {
+ /*
+ * Local man page, do a link...
+ */
+
+ fprintf(fp, "<a href=\"%s\">", manurl);
+ link = 1;
+ }
+ }
+ }
+
+ if (!i && first)
+ fprintf(fp, "<%s>", first);
+ else if (i && second)
+ fprintf(fp, "<%s>", second);
+
+ while ((!isspace(*s & 255) || quote) && *s)
+ {
+ if (*s == '\"')
+ quote = !quote;
+ else if (*s == '\\' && s[1])
+ {
+ s ++;
+ html_putc(*s++, fp);
+ }
+ else
+ html_putc(*s++, fp);
+ }
+
+ if (!i && first)
+ fprintf(fp, "</%s>", first);
+ else if (i && second)
+ fprintf(fp, "</%s>", second);
+
+ if (i && link)
+ {
+ fputs("</a>", fp);
+ link = 0;
+ }
+
+ i = 1 - i;
+
+ /*
+ * Skip trailing whitespace...
+ */
+
+ while (isspace(*s & 255))
+ s ++;
+ }
+
+ putc('\n', fp);
+}
+
+/*
+ * 'html_fputs()' - Output a string, quoting as needed HTML entities.
+ */
+
+static void
+html_fputs(const char *s, /* I - String */
+ int *font, /* IO - Font */
+ FILE *fp) /* I - File */
+{
+ while (*s)
+ {
+ if (*s == '\\')
+ {
+ s ++;
+ if (!*s)
+ break;
+
+ if (*s == 'f')
+ {
+ int newfont; /* New font */
+
+ s ++;
+ if (!*s)
+ break;
+
+ if (!font)
+ {
+ s ++;
+ continue;
+ }
+
+ switch (*s++)
+ {
+ case 'R' :
+ case 'P' :
+ newfont = 0;
+ break;
+
+ case 'b' :
+ case 'B' :
+ newfont = 1;
+ break;
+
+ case 'i' :
+ case 'I' :
+ newfont = 2;
+ break;
+
+ default :
+ fprintf(stderr, "mantohtml: Unknown font \"\\f%c\" ignored.\n", s[-1]);
+ newfont = *font;
+ break;
+ }
+
+ if (newfont != *font)
+ {
+ fputs(end_fonts[*font], fp);
+ *font = newfont;
+ fputs(start_fonts[*font], fp);
+ }
+ }
+ else if (*s == '*')
+ {
+ /*
+ * Substitute macro...
+ */
+
+ s ++;
+ if (!*s)
+ break;
+
+ switch (*s++)
+ {
+ case 'R' :
+ fputs("&reg;", fp);
+ break;
+
+ case '(' :
+ if (!strncmp(s, "lq", 2))
+ fputs("&ldquo;", fp);
+ else if (!strncmp(s, "rq", 2))
+ fputs("&rdquo;", fp);
+ else if (!strncmp(s, "Tm", 2))
+ fputs("<sup>TM</sup>", fp);
+ else
+ fprintf(stderr, "mantohtml: Unknown macro \"\\*(%2s\" ignored.\n", s);
+
+ if (*s)
+ s ++;
+ if (*s)
+ s ++;
+ break;
+
+ default :
+ fprintf(stderr, "mantohtml: Unknown macro \"\\*%c\" ignored.\n", s[-1]);
+ break;
+ }
+ }
+ else if (*s == '(')
+ {
+ if (!strncmp(s, "(em", 3))
+ {
+ fputs("&mdash;", fp);
+ s += 3;
+ }
+ else if (!strncmp(s, "(en", 3))
+ {
+ fputs("&ndash;", fp);
+ s += 3;
+ }
+ else
+ {
+ putc(*s, fp);
+ s ++;
+ }
+ }
+ else if (*s == '[')
+ {
+ /*
+ * Substitute escaped character...
+ */
+
+ s ++;
+ if (!strncmp(s, "co]", 3))
+ fputs("&copy;", fp);
+ else if (!strncmp(s, "de]", 3))
+ fputs("&deg;", fp);
+ else if (!strncmp(s, "rg]", 3))
+ fputs("&reg;", fp);
+ else if (!strncmp(s, "tm]", 3))
+ fputs("<sup>TM</sup>", fp);
+
+ if (*s)
+ s ++;
+ if (*s)
+ s ++;
+ if (*s)
+ s ++;
+ }
+ else if (isdigit(s[0]) && isdigit(s[1]) &&
+ isdigit(s[2]))
+ {
+ fprintf(fp, "&#%d;", ((s[0] - '0') * 8 + s[1] - '0') * 8 + s[2] - '0');
+ s += 3;
+ }
+ else
+ {
+ if (*s != '\\' && *s == '\"' && *s == '\'' && *s == '-')
+ fprintf(stderr, "mantohtml: Unrecognized escape \"\\%c\" ignored.\n", *s);
+
+ html_putc(*s++, fp);
+ }
+ }
+ else if (!strncmp(s, "http://", 7) || !strncmp(s, "https://", 8) || !strncmp(s, "ftp://", 6))
+ {
+ /*
+ * Embed URL...
+ */
+
+ char temp[1024]; /* Temporary string */
+ const char *end = s + 6; /* End of URL */
+
+ while (*end && !isspace(*end & 255))
+ end ++;
+
+ if (end[-1] == ',' || end[-1] == '.' || end[-1] == ')')
+ end --;
+
+ strlcpy(temp, s, sizeof(temp));
+ if ((size_t)(end -s) < sizeof(temp))
+ temp[end - s] = '\0';
+
+ fprintf(fp, "<a href=\"%s\">%s</a>", temp, temp);
+ s = end;
+ }
+ else
+ html_putc(*s++ & 255, fp);
+ }
+}
+
+
+/*
+ * 'html_putc()' - Put a single character, using entities as needed.
*/
static void
-putc_entity(int ch, /* I - Character */
- FILE *fp) /* I - File */
+html_putc(int ch, /* I - Character */
+ FILE *fp) /* I - File */
{
if (ch == '&')
fputs("&amp;", fp);
@@ -716,5 +1088,5 @@ strmove(char *d, /* I - Destination */
/*
- * End of "$Id: mantohtml.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: mantohtml.c 11818 2014-04-15 20:56:19Z msweet $".
*/
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 <filename>
+\fB#include <\fIfilename\fB>\fR
.TP 5
-\fB#include\fR "filename"
+\fB#include "\fIfilename\fB"\fR
.TP 5
-\fB#media\fR name width length
+\fB#media \fIname width length\fR
.TP 5
-\fB#media\fR "name/text" width length
+\fB#media "\fIname\fB/\fItext\fB" \fIwidth length\fR
.TP 5
-\fB#po\fR locale "filename.po"
+\fB#po \fIlocale \fB"\fIfilename\fB"\fR
.TP 5
-\fBAttribute\fR name "" value
+\fBAttribute \fIname \fB"" \fIvalue\fR
.TP 5
-\fBAttribute\fR name keyword value
+\fBAttribute \fIname keyword value\fR
.TP 5
-\fBAttribute\fR name "keyword/text" value
+\fBAttribute \fIname \fB"\fIkeyword\fB/\fItext\fB" \fIvalue\fR
.TP 5
-\fBChoice\fR name "code"
+\fBChoice \fIname \fB"\fIcode\fB"\fR
.TP 5
-\fBChoice\fR "name/text" "code"
+\fBChoice \fB"\fIname\fB/\fItext\fB" "\fIcode\fB"\fR
.TP 5
-\fBColorDevice\fR boolean-value
+\fBColorDevice \fIboolean-value\fR
.TP 5
-\fBColorModel\fR name colorspace colororder compression
+\fBColorModel \fIname colorspace colororder compression\fR
.TP 5
-\fBColorModel\fR "name/text" colorspace colororder compression
+\fBColorModel "\fIname\fB/\fItext\fB" \fIcolorspace colororder compression\fR
.TP 5
-\fBColorProfile\fR resolution/mediatype gamma density matrix
+\fBColorProfile \fIresolution\fB/\fImediatype gamma density matrix\fR
.TP 5
-\fBCopyright\fR "text"
+\fBCopyright "\fItext\fR"
.TP 5
-\fBCustomMedia\fR name width length left bottom right top "size-code" "region-code"
+\fBCustomMedia \fIname width length left bottom right top \fB"\fIsize-code\fB" "\fIregion-code\fB"\fR
.TP 5
-\fBCustomMedia\fR "name/text" width length left bottom right top "size-code" "region-code"
+\fBCustomMedia "\fIname\fB/\fItext\fB" \fIwidth length left bottom right top \fB"\fIsize-code\fB" "\fIregion-code\fB"\fR
.TP 5
-\fBCutter\fR boolean-value
+\fBCutter \fIboolean-value\fR
.TP 5
-\fBDarkness\fR temperature name
+\fBDarkness \fItemperature name\fR
.TP 5
-\fBDarkness\fR temperature "name/text"
+\fBDarkness \fItemperature \fB"\fIname\fB/\fItext\fB"\fR
.TP 5
-\fBDriverType\fR type
+\fBDriverType \fItype\fR
.TP 5
-\fBDuplex\fR type
+\fBDuplex \fItype\fR
.TP 5
-\fBFilter\fR mime-type cost program
+\fBFilter \Imime-type cost program\fR
.TP 5
-\fBFinishing\fR name
+\fBFinishing \fIname\fR
.TP 5
-\fBFinishing\fR "name/text"
+\fBFinishing "\fIname\fB/\fItext\fB"\fR
.TP 5
-\fBFont\fR *
+\fBFont *\fR
.TP 5
-\fBFont\fR name encoding "version" charset status
+\fBFont \fIname encoding \fB"\fIversion\fB" \fIcharset status\fR
.TP 5
-\fBGroup\fR name
+\fBGroup \fIname\fR
.TP 5
-\fBGroup\fR "name/text"
+\fBGroup "\fIname\fB/\fItext\fB"\fR
.TP 5
-\fBHWMargins\fR left bottom right top
+\fBHWMargins \fIleft bottom right top\fR
.TP 5
-\fBInputSlot\fR position name
+\fBInputSlot \fIposition name\fR
.TP 5
-\fBInputSlot\fR position "name/text"
+\fBInputSlot \fIposition \fB"\fIname\fB/\fItext\fB"\fR
.TP 5
-\fBInstallable\fR name
+\fBInstallable \fIname\fR
.TP 5
-\fBInstallable\fR "name/text"
+\fBInstallable "\fIname\fB/\fItext\fB"\fR
.TP 5
-\fBLocAttribute\fR name "keyword/text" value
+\fBLocAttribute \fIname \fB"\fIkeyword\fB/\fItext\fB" \fIvalue\fR
.TP 5
-\fBManualCopies\fR boolean-value
+\fBManualCopies \fIboolean-value\fR
.TP 5
-\fBManufacturer\fR "name"
+\fBManufacturer "\fIname\fB"\fR
.TP 5
-\fBMaxSize\fR width length
+\fBMaxSize \fIwidth length\fR
.TP 5
-\fBMediaSize\fR name
+\fBMediaSize \fIname\fR
.TP 5
-\fBMediaType\fR type name
+\fBMediaType \fItype name\fR
.TP 5
-\fBMediaType\fR type "name/text"
+\fBMediaType \fItype \fB"\fIname\fB/\fItext\fB"\fR
.TP 5
-\fBMinSize\fR width length
+\fBMinSize \fIwidth length\fR
.TP 5
-\fBModelName\fR "name"
+\fBModelName "\fIname\fB"\fR
.TP 5
-\fBModelNumber\fR number
+\fBModelNumber \fInumber\fR
.TP 5
-\fBOption\fR name type section order
+\fBOption \fIname type section order\fR
.TP 5
-\fBOption\fR "name/text" type section order
+\fBOption "\fIname\fB/\fItext\fB" \fItype section order\fR
.TP 5
-\fBPCFileName\fR "filename.ppd"
+\fBPCFileName "\fIfilename.ppd\fB"\fR
.TP 5
-\fBResolution\fR colorspace bits-per-color row-count row-feed row-step name
+\fBResolution \fIcolorspace bits-per-color row-count row-feed row-step name\fR
.TP 5
-\fBResolution\fR colorspace bits-per-color row-count row-feed row-step "name/text"
+\fBResolution \fIcolorspace bits-per-color row-count row-feed row-step \fB"\fIname\fB/\fItext\fB"\fR
.TP 5
-\fBSimpleColorProfile\fR resolution/mediatype density yellow-density red-density gamma red-adjust green-adjust blue-adjust
+\fBSimpleColorProfile \fIresolution\fB/\fImediatype density yellow-density red-density gamma red-adjust green-adjust blue-adjust\fR
.TP 5
-\fBThroughput\fR pages-per-minute
+\fBThroughput \fIpages-per-minute\fR
.TP 5
-\fBUIConstraints\fR "*Option1 *Option2"
+\fBUIConstraints "\fI*Option1 *Option2\fB"\fR
.TP 5
-\fBUIConstraints\fR "*Option1 Choice1 *Option2"
+\fBUIConstraints "\fI*Option1 Choice1 *Option2\fB"\fR
.TP 5
-\fBUIConstraints\fR "*Option1 *Option2 Choice2"
+\fBUIConstraints "\fI*Option1 *Option2 Choice2\fB"\fR
.TP 5
-\fBUIConstraints\fR "*Option1 Choice1 *Option2 Choice2"
+\fBUIConstraints "\fI*Option1 Choice1 *Option2 Choice2\fB"\fR
.TP 5
-\fBVariablePaperSize\fR boolean-value
+\fBVariablePaperSize \fIboolean-value\fR
.TP 5
-\fBVersion\fR number
+\fBVersion \fInumber\fR
.SH SEE ALSO
-ppdc(1), ppdhtml(1), ppdi(1), ppdmerge(1), ppdpo(1)
-.br
-http://localhost:631/help
+.BR ppdc (1),
+.BR ppdhtml (1),
+.BR ppdi (1),
+.BR ppdmerge (1),
+.BR ppdpo (1),
+CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
.\"
-.\" End of "$Id: ppdcfile.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: ppdcfile.man 11925 2014-06-12 19:36:12Z msweet $".
.\"
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
-<Printer name> ... </Printer>
-.br
-Defines a specific printer.
-.TP 5
-<DefaultPrinter name> ... </Printer>
-.br
-Defines a default printer.
-.TP 5
-Accepting Yes
-.TP 5
-Accepting No
-.br
-Specifies whether the printer is accepting new jobs.
-.TP 5
-AllowUser [ user @group ... ]
-.br
-Allows specific users and groups to print to the printer.
-.TP 5
-DenyUser [ user @group ... ]
-.br
-Prevents specific users and groups from printing to the printer.
-.TP 5
-DeviceURI uri
-.br
-Specifies the device URI for a printer.
-.TP 5
-ErrorPolicy abort-job
-.TP 5
-ErrorPolicy retry-current-job
-.TP 5
-ErrorPolicy retry-job
-.TP 5
-ErrorPolicy stop-printer
-.br
-Specifies the error policy for the printer.
-.TP 5
-Info text
-.br
-Specifies human-readable text describing the printer.
-.TP 5
-JobSheets banner banner
-.br
-Specifies the banner pages to use for the printer.
-.TP 5
-KLimit number
-.br
-Specifies the job-k-limit value for the printer.
-.TP 5
-Location text
-.br
-Specifies human-readable text describing the location of the printer.
-.TP 5
-OpPolicy name
-.br
-Specifies the operation policy for the printer.
-.TP 5
-PageLimit number
-.br
-Specifies the job-page-limit value for the printer.
-.TP 5
-PortMonitor monitor
-.br
-Specifies the port monitor for a printer.
-.TP 5
-QuotaPeriod seconds
-.br
-Specifies the job-quota-period value for the printer.
-.TP 5
-Shared Yes
-.TP 5
-Shared No
-.br
-Specifies whether the printer is shared.
-.TP 5
-State idle
-.TP 5
-State stopped
-.br
-Specifies the initial state of the printer (Idle or Stopped)
-.TP 5
-StateMessage text
-.br
-Specifies the message associated with the state.
-.TP 5
-StateTime seconds
-.br
-Specifies the date/time associated with the state.
+The \fBprinters.conf\fR file defines the local printers that are available. It is normally located in the \fI/etc/cups\fR directory and is maintained by the
+.BR cupsd (8)
+program. This file is not intended to be edited or managed manually.
+.SH NOTES
+The name, location, and format of this file are an implementation detail that will change in future releases of CUPS.
.SH SEE ALSO
-\fIclasses.conf(5)\fR, \fIcupsd(8)\fR, \fIcupsd.conf(5)\fR,
-\fImime.convs(5)\fR, \fImime.types(5)\fR,
-.br
-http://localhost:631/help
+.BR classes.conf (5),
+.BR cupsd (8),
+.BR cupsd.conf (5),
+.BR mime.convs (5),
+.BR mime.types (5),
+.BR subscriptions.conf (5),
+CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
.\"
-.\" End of "$Id: printers.conf.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: printers.conf.man 11817 2014-04-15 16:31:11Z msweet $".
.\"
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
-<Subscription NNN> ... </Subscription>
-.br
-Defines a subscription.
-.TP 5
-Events name [ ... name ]
-.br
-Specifies the events that are subscribed.
-.TP 5
-ExpirationTime unix-time
-.br
-Specifies the expiration time of a subscription as a UNIX time
-value in seconds since January 1st, 1970.
-.TP 5
-Interval seconds
-.br
-Specifies the preferred time interval for event notifications in
-seconds.
-.TP 5
-JobId job-id
-.br
-Specifies the job ID associated with the subscription.
-.TP 5
-LeaseDuration seconds
-.br
-Specifies the number of seconds that the subscription is valid
-for. If 0, the subscription does not expire.
-.TP 5
-NextEventId number
-.br
-Specifies the next notify-sequence-number to use for the
-subscription.
-.TP 5
-NextSubscriptionId number
-.br
-Specifies the next subscription-id to use.
-.TP 5
-Owner username
-.br
-Specifies the user that owns the subscription.
-.TP 5
-PrinterName printername
-.br
-Specifies the printer or class associated with the subscription.
-.TP 5
-Recipient uri
-.br
-Specifies the notify-recipient-uri value for push-type notifications.
-.TP 5
-UserData hex-escaped-data
-.br
-Specifies user data to be included in event notifications. This
-is typically the "from" address in mailto: notifications.
+The \fBsubscriptions.conf\fR file defines the local event notification subscriptions that are active. It is normally located in the \fI/etc/cups\fR directory and is maintained by the
+.BR cupsd (8)
+program. This file is not intended to be edited or managed manually.
+.SH NOTES
+The name, location, and format of this file are an implementation detail that will change in future releases of CUPS.
.SH SEE ALSO
-\fIclasses.conf(5)\fR, \fIcupsd(8)\fR, \fIcupsd.conf(5)\fR,
-\fImime.convs(5)\fR, \fImime.types(5)\fR, \fRprinters.conf(5)\fR
-.br
-http://localhost:631/help
+.BR classes.conf (5),
+.BR cupsd (8),
+.BR cupsd.conf (5),
+.BR mime.convs (5),
+.BR mime.types (5),
+.BR printers.conf (5),
+CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright 2007-2013 by Apple Inc.
+Copyright \[co] 2007-2014 by Apple Inc.
.\"
-.\" End of "$Id: subscriptions.conf.man 11022 2013-06-06 22:14:09Z msweet $".
+.\" End of "$Id: subscriptions.conf.man 11817 2014-04-15 16:31:11Z msweet $".
.\"
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/notifier/rss.c b/notifier/rss.c
index 65e577f0b..7f518eca3 100644
--- a/notifier/rss.c
+++ b/notifier/rss.c
@@ -1,27 +1,16 @@
/*
- * "$Id: rss.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: rss.c 12128 2014-08-28 19:23:23Z msweet $"
*
- * RSS notifier for CUPS.
+ * RSS notifier 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/".
- *
- * Contents:
- *
- * main() - Main entry for the test notifier.
- * compare_rss() - Compare two messages.
- * delete_message() - Free all memory used by a message.
- * load_rss() - Load an existing RSS feed file.
- * new_message() - Create a new RSS message.
- * password_cb() - Return the cached password.
- * save_rss() - Save messages to a RSS file.
- * xml_escape() - Copy a string, escaping &, <, and > 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/".
*/
/*
@@ -29,6 +18,7 @@
*/
#include <cups/cups.h>
+#include <sys/stat.h>
#include <cups/language.h>
#include <cups/string-private.h>
#include <cups/array.h>
@@ -629,6 +619,8 @@ save_rss(cups_array_t *rss, /* I - RSS messages */
return (0);
}
+ fchmod(fileno(fp), 0644);
+
fputs("<?xml version=\"1.0\"?>\n", fp);
fputs("<rss version=\"2.0\">\n", fp);
fputs(" <channel>\n", fp);
@@ -737,5 +729,5 @@ xml_escape(const char *s) /* I - String to escape */
/*
- * End of "$Id: rss.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: rss.c 12128 2014-08-28 19:23:23Z 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..0aa786f5a 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.0.0
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.0.0/cups-2.0.0-source.tar.bz2
Url: http://www.cups.org
Packager: Anonymous <anonymous@foo.com>
Vendor: Apple Inc.
@@ -70,6 +69,10 @@ BuildRequires: avahi-devel
BuildRequires: libusb-devel >= 1.0
%endif
+%if %{?_with_systemd:1}%{!?_with_systemd:0}
+BuildRequires: systemd-devel
+%endif
+
# Use buildroot so as not to disturb the version already installed
BuildRoot: /tmp/%{name}-root
@@ -123,6 +126,7 @@ make
rm -rf $RPM_BUILD_ROOT
make BUILDROOT=$RPM_BUILD_ROOT install
+rm -rf $RPM_BUILD_ROOT/usr/share/cups/banners $RPM_BUILD_ROOT/usr/share/cups/data
%post
/sbin/chkconfig --add cups
@@ -174,27 +178,18 @@ rm -rf $RPM_BUILD_ROOT
%dir /etc/pam.d
/etc/pam.d/*
-# RC dirs are a pain under Linux... Uncomment the appropriate ones if you
-# don't use Red Hat or Mandrake...
+%if %{?_with_systemd:1}%{!?_with_systemd:0}
+# SystemD
+/usr/lib/systemd/system/*
+%else
+# Legacy init support on Linux
/etc/init.d/*
/etc/rc0.d/*
/etc/rc2.d/*
/etc/rc3.d/*
/etc/rc5.d/*
-
-# OLD RedHat/Mandrake
-#/etc/rc.d/init.d/*
-#/etc/rc.d/rc0.d/*
-#/etc/rc.d/rc2.d/*
-#/etc/rc.d/rc3.d/*
-#/etc/rc.d/rc5.d/*
-
-#/sbin/rc.d/*
-#/sbin/rc.d/rc0.d/*
-#/sbin/rc.d/rc2.d/*
-#/sbin/rc.d/rc3.d/*
-#/sbin/rc.d/rc5.d/*
+%endif
/usr/bin/cancel
/usr/bin/cupstestdsc
@@ -232,10 +227,6 @@ rm -rf $RPM_BUILD_ROOT
/usr/sbin/*
%dir /usr/share/cups
-%dir /usr/share/cups/banners
-/usr/share/cups/banners/*
-%dir /usr/share/cups/data
-/usr/share/cups/data/*
%dir /usr/share/cups/drv
/usr/share/cups/drv/*
%dir /usr/share/cups/ipptool
@@ -270,35 +261,26 @@ rm -rf $RPM_BUILD_ROOT
/usr/share/doc/cups/help/security.html
/usr/share/doc/cups/help/sharing.html
/usr/share/doc/cups/help/translation.html
-/usr/share/doc/cups/help/whatsnew.html
%dir /usr/share/doc/cups/images
/usr/share/doc/cups/images/*
-%dir /usr/share/doc/cups/ca
-/usr/share/doc/cups/ca/*
-%dir /usr/share/doc/cups/cs
-/usr/share/doc/cups/cs/*
-%dir /usr/share/doc/cups/de
-/usr/share/doc/cups/de/*
-%dir /usr/share/doc/cups/es
-/usr/share/doc/cups/es/*
-%dir /usr/share/doc/cups/fr
-/usr/share/doc/cups/fr/*
-%dir /usr/share/doc/cups/it
-/usr/share/doc/cups/it/*
-%dir /usr/share/doc/cups/ja
-/usr/share/doc/cups/ja/*
-%dir /usr/share/doc/cups/pt_BR
-/usr/share/doc/cups/pt_BR/*
-%dir /usr/share/doc/cups/ru
-/usr/share/doc/cups/ru/*
+#%dir /usr/share/doc/cups/ca
+#/usr/share/doc/cups/ca/*
+#%dir /usr/share/doc/cups/cs
+#/usr/share/doc/cups/cs/*
+#%dir /usr/share/doc/cups/es
+#/usr/share/doc/cups/es/*
+#%dir /usr/share/doc/cups/fr
+#/usr/share/doc/cups/fr/*
+#%dir /usr/share/doc/cups/ja
+#/usr/share/doc/cups/ja/*
+#%dir /usr/share/doc/cups/ru
+#/usr/share/doc/cups/ru/*
%dir /usr/share/locale/ca
/usr/share/locale/ca/cups_ca.po
%dir /usr/share/locale/cs
/usr/share/locale/cs/cups_cs.po
-%dir /usr/share/locale/de
-/usr/share/locale/de/cups_de.po
%dir /usr/share/locale/es
/usr/share/locale/es/cups_es.po
%dir /usr/share/locale/fr
@@ -307,20 +289,18 @@ rm -rf $RPM_BUILD_ROOT
/usr/share/locale/it/cups_it.po
%dir /usr/share/locale/ja
/usr/share/locale/ja/cups_ja.po
-%dir /usr/share/locale/pt_BR
-/usr/share/locale/pt_BR/cups_pt_BR.po
%dir /usr/share/locale/ru
/usr/share/locale/ru/cups_ru.po
%dir /usr/share/man/man1
/usr/share/man/man1/cancel.1.gz
+/usr/share/man/man1/cups.1.gz
/usr/share/man/man1/cupstestdsc.1.gz
/usr/share/man/man1/cupstestppd.1.gz
/usr/share/man/man1/ippfind.1.gz
/usr/share/man/man1/ipptool.1.gz
/usr/share/man/man1/lp.1.gz
/usr/share/man/man1/lpoptions.1.gz
-/usr/share/man/man1/lppasswd.1.gz
/usr/share/man/man1/lpq.1.gz
/usr/share/man/man1/lpr.1.gz
/usr/share/man/man1/lprm.1.gz
@@ -331,17 +311,20 @@ rm -rf $RPM_BUILD_ROOT
/usr/share/man/man5/mime.*.5.gz
%dir /usr/share/man/man8
/usr/share/man/man8/accept.8.gz
+/usr/share/man/man8/cups-deviced.8.gz
+/usr/share/man/man8/cups-driverd.8.gz
+/usr/share/man/man8/cups-exec.8.gz
+/usr/share/man/man8/cups-snmp.8.gz
/usr/share/man/man8/cupsaddsmb.8.gz
/usr/share/man/man8/cupsaccept.8.gz
/usr/share/man/man8/cupsctl.8.gz
/usr/share/man/man8/cupsfilter.8.gz
/usr/share/man/man8/cupsd.8.gz
+/usr/share/man/man8/cupsd-helper.8.gz
+/usr/share/man/man8/cupsd-logs.8.gz
/usr/share/man/man8/cupsdisable.8.gz
/usr/share/man/man8/cupsenable.8.gz
/usr/share/man/man8/cupsreject.8.gz
-/usr/share/man/man8/cups-deviced.8.gz
-/usr/share/man/man8/cups-driverd.8.gz
-/usr/share/man/man8/cups-snmp.8.gz
/usr/share/man/man8/lpadmin.8.gz
/usr/share/man/man8/lpc.8.gz
/usr/share/man/man8/lpinfo.8.gz
@@ -405,5 +388,5 @@ rm -rf $RPM_BUILD_ROOT
#
-# End of "$Id: cups.spec.in 11946 2014-06-24 18:01:58Z msweet $".
+# End of "$Id: cups.spec.in 12074 2014-07-31 01:10:14Z msweet $".
#
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`
@@ -363,17 +360,6 @@ libcupsppdc.1.dylib: $(LIBOBJS) ../cups/$(LIBCUPS)
#
-# 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..4935feb83 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 12105 2014-08-20 15:27:43Z 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
{
@@ -206,90 +217,6 @@ Version "1.5"
*Resolution k 1 8 0 0 120x72dpi
Resolution k 1 8 0 0 240x72dpi
}
-
- // Epson Stylus Color Series
- {
- ModelName "Stylus Color Series"
- Attribute NickName "" "Epson Stylus Color Series"
- PCFileName "stcolor.ppd"
- ModelNumber $EPSON_COLOR
- ColorDevice Yes
-
- HWMargins 8.6 39.6 8.6 25.51
- *MediaSize Letter
- MediaSize Legal
- MediaSize A4
-
- Resolution - 1 0 0 0 180dpi
- *Resolution - 1 0 0 0 360dpi
- Resolution - 1 0 0 0 720dpi
-
- *ColorModel CMYK cmyk banded 1
- ColorModel Gray/Grayscale k chunky 1
- }
-
- // Epson New Stylus Color Series
- {
- ModelName "New Stylus Color Series"
- Attribute NickName "" "Epson New Stylus Color Series"
- PCFileName "stcolor2.ppd"
- ModelNumber $EPSON_ICOLOR
- ColorDevice Yes
-
- HWMargins 8.6 39.6 8.6 25.51
- *MediaSize Letter
- MediaSize Legal
- MediaSize A4
-
- Resolution - 1 0 0 0 180dpi
- *Resolution - 1 0 0 0 360dpi
- Resolution - 1 0 0 0 720dpi
-
- *ColorModel CMYK cmyk banded 1
- ColorModel Gray/Grayscale k chunky 1
- }
-
- // Epson Stylus Color Series
- {
- ModelName "Stylus Photo Series"
- Attribute NickName "" "Epson Stylus Photo Series"
- PCFileName "stphoto.ppd"
- ModelNumber $EPSON_PHOTO
- ColorDevice Yes
-
- HWMargins 8.6 39.6 8.6 25.51
- *MediaSize Letter
- MediaSize Legal
- MediaSize A4
-
- Resolution - 1 0 0 0 180dpi
- *Resolution - 1 0 0 0 360dpi
- Resolution - 1 0 0 0 720dpi
-
- *ColorModel CMYK cmykcm banded 1
- ColorModel Gray/Grayscale k chunky 1
- }
-
- // Epson New Stylus Color Series
- {
- ModelName "New Stylus Photo Series"
- Attribute NickName "" "Epson New Stylus Photo Series"
- PCFileName "stphoto2.ppd"
- ModelNumber $EPSON_IPHOTO
- ColorDevice Yes
-
- HWMargins 8.6 39.6 8.6 25.51
- *MediaSize Letter
- MediaSize Legal
- MediaSize A4
-
- Resolution - 1 0 0 0 180dpi
- *Resolution - 1 0 0 0 360dpi
- Resolution - 1 0 0 0 720dpi
-
- *ColorModel CMYK cmykcm banded 1
- ColorModel Gray/Grayscale k chunky 1
- }
}
// Generic drivers
@@ -1241,5 +1168,5 @@ Version "1.5"
}
//
-// End of "$Id: sample.drv 3891 2012-08-29 00:26:48Z msweet $".
+// End of "$Id: sample.drv 12105 2014-08-20 15:27:43Z 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..c0c54a4b6 100644
--- a/scheduler/Makefile
+++ b/scheduler/Makefile
@@ -1,16 +1,16 @@
#
-# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
+# "$Id: Makefile 12132 2014-08-29 11:27:18Z 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
#
@@ -172,7 +171,7 @@ install-data:
echo Creating $(REQUESTS)/tmp...
$(INSTALL_DIR) -m 1770 -g $(CUPS_GROUP) $(REQUESTS)/tmp
echo Creating $(CACHEDIR)...
- $(INSTALL_DIR) -m 775 -g $(CUPS_GROUP) $(CACHEDIR)
+ $(INSTALL_DIR) -m 770 -g $(CUPS_GROUP) $(CACHEDIR)
if test "x$(INITDIR)" != x; then \
echo Installing init scripts...; \
$(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/init.d; \
@@ -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`
@@ -470,17 +467,6 @@ libcupsmime.1.dylib: $(LIBOBJS) libcupsmime.exp
#
-# 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 12132 2014-08-29 11:27:18Z msweet $".
#
diff --git a/scheduler/auth.c b/scheduler/auth.c
index 35b70f394..4e5ad5b9a 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 12124 2014-08-28 15:37:22Z msweet $"
*
- * Authorization routines for the CUPS scheduler.
+ * Authorization routines for the CUPS scheduler.
*
- * Copyright 2007-2012 by Apple Inc.
- * Copyright 1997-2007 by Easy Software Products, all rights reserved.
+ * Copyright 2007-2014 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
- * This file contains Kerberos support code, copyright 2006 by
- * Jelmer Vernooij.
+ * This file contains Kerberos support code, copyright 2006 by
+ * Jelmer Vernooij.
*
- * These coded instructions, statements, and computer programs are the
- * property of Apple Inc. and are protected by Federal copyright
- * law. Distribution and use rights are outlined in the file "LICENSE.txt"
- * which should have been included with this file. If this file is
- * file is missing or damaged, see the license at "http://www.cups.org/".
- *
- * Contents:
- *
- * cupsdAddIPMask() - Add an IP address authorization mask.
- * cupsdAddLocation() - Add a location for authorization.
- * cupsdAddName() - Add a name to a location...
- * cupsdAddNameMask() - Add a host or interface name authorization
- * mask.
- * cupsdAuthorize() - Validate any authorization credentials.
- * cupsdCheckAccess() - Check whether the given address is allowed to
- * access a location.
- * cupsdCheckAuth() - Check authorization masks.
- * cupsdCheckGroup() - Check for a user's group membership.
- * cupsdCopyLocation() - Make a copy of a location...
- * cupsdDeleteAllLocations() - Free all memory used for location
- * authorization.
- * cupsdFindBest() - Find the location entry that best matches the
- * resource.
- * cupsdFindLocation() - Find the named location.
- * cupsdFreeLocation() - Free all memory used by a location.
- * cupsdIsAuthorized() - Check to see if the user is authorized...
- * cupsdNewLocation() - Create a new location for authorization.
- * check_authref() - Check if an authorization services reference
- * has the supplied right.
- * compare_locations() - Compare two locations.
- * copy_authmask() - Copy function for auth masks.
- * cups_crypt() - Encrypt the password using the DES or MD5
- * algorithms, as needed.
- * free_authmask() - Free function for auth masks.
- * get_md5_password() - Get an MD5 password.
- * pam_func() - PAM conversation function.
- * to64() - Base64-encode an integer value...
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law. Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file. If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
*/
/*
@@ -67,9 +35,6 @@
# include <security/pam_appl.h>
# endif /* HAVE_PAM_PAM_APPL_H */
#endif /* HAVE_LIBPAM */
-#ifdef HAVE_USERSEC_H
-# include <usersec.h>
-#endif /* HAVE_USERSEC_H */
#ifdef HAVE_MEMBERSHIP_H
# include <membership.h>
#endif /* HAVE_MEMBERSHIP_H */
@@ -108,16 +73,14 @@ static int check_authref(cupsd_client_t *con, const char *right);
static int compare_locations(cupsd_location_t *a,
cupsd_location_t *b);
static cupsd_authmask_t *copy_authmask(cupsd_authmask_t *am, void *data);
-#if !HAVE_LIBPAM && !defined(HAVE_USERSEC_H)
+#if !HAVE_LIBPAM
static char *cups_crypt(const char *pw, const char *salt);
-#endif /* !HAVE_LIBPAM && !HAVE_USERSEC_H */
+#endif /* !HAVE_LIBPAM */
static void free_authmask(cupsd_authmask_t *am, void *data);
-static char *get_md5_password(const char *username,
- const char *group, char passwd[33]);
#if HAVE_LIBPAM
static int pam_func(int, const struct pam_message **,
struct pam_response **, void *);
-#elif !defined(HAVE_USERSEC_H)
+#else
static void to64(char *s, unsigned long v, int n);
#endif /* HAVE_LIBPAM */
@@ -136,15 +99,6 @@ typedef struct cupsd_authdata_s /**** Authentication data ****/
/*
- * 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 */
@@ -1543,15 +1340,6 @@ cupsdCheckGroup(
#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.
@@ -2379,23 +2171,23 @@ cups_crypt(const char *pw, /* I - Password string */
* Copy the final sum to the result string and return...
*/
- memcpy(result, salt, salt_end - salt);
+ memcpy(result, salt, (size_t)(salt_end - salt));
ptr = result + (salt_end - salt);
*ptr++ = '$';
for (i = 0; i < 5; i ++, ptr += 4)
{
- n = (((digest[i] << 8) | digest[i + 6]) << 8);
+ n = ((((unsigned)digest[i] << 8) | (unsigned)digest[i + 6]) << 8);
if (i < 4)
- n |= digest[i + 12];
+ n |= (unsigned)digest[i + 12];
else
- n |= digest[5];
+ n |= (unsigned)digest[5];
to64(ptr, n, 4);
}
- to64(ptr, digest[11], 2);
+ to64(ptr, (unsigned)digest[11], 2);
ptr += 2;
*ptr = '\0';
@@ -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 12124 2014-08-28 15:37:22Z 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, "</Class>"))
+ else if (!_cups_strcasecmp(line, "</Class>") || !_cups_strcasecmp(line, "</DefaultClass>"))
{
if (p != NULL)
{
@@ -806,7 +795,10 @@ cupsdSaveAllClasses(void)
cupsFilePutConf(fp, "Option", value);
}
- cupsFilePuts(fp, "</Class>\n");
+ if (pclass == DefaultPrinter)
+ cupsFilePuts(fp, "</DefaultClass>\n");
+ else
+ cupsFilePuts(fp, "</Class>\n");
}
cupsdCloseCreatedConfFile(fp, filename);
@@ -814,5 +806,5 @@ cupsdSaveAllClasses(void)
/*
- * End of "$Id: classes.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: classes.c 11781 2014-03-28 20:57:22Z msweet $".
*/
diff --git a/scheduler/client.c b/scheduler/client.c
index 51a11acb1..949191000 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 12124 2014-08-28 15:37:22Z 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__
@@ -31,39 +33,6 @@
/*
- * 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;
@@ -424,28 +338,13 @@ 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);
@@ -651,21 +537,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);
@@ -816,62 +690,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
#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,45 +904,37 @@ 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;
}
#else
- if (!cupsdSendError(con, HTTP_NOT_IMPLEMENTED, CUPSD_AUTH_NONE))
+ if (!cupsdSendError(con, HTTP_STATUS_NOT_IMPLEMENTED, CUPSD_AUTH_NONE))
{
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;
- }
+ httpClearFields(con->http);
+ httpSetField(con->http, HTTP_FIELD_ALLOW,
+ "GET, HEAD, OPTIONS, POST, PUT");
+ httpSetField(con->http, HTTP_FIELD_CONTENT_LENGTH, "0");
- httpPrintf(HTTP(con), "Allow: GET, HEAD, OPTIONS, POST, PUT\r\n");
- httpPrintf(HTTP(con), "Content-Length: 0\r\n");
- httpPrintf(HTTP(con), "\r\n");
-
- 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,39 +970,30 @@ 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;
}
#else
- if (!cupsdSendError(con, HTTP_NOT_IMPLEMENTED, CUPSD_AUTH_NONE))
+ if (!cupsdSendError(con, HTTP_STATUS_NOT_IMPLEMENTED, CUPSD_AUTH_NONE))
{
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;
- }
-
- if (httpPrintf(HTTP(con), "\r\n") < 0)
- {
- cupsdCloseClient(con);
- return;
- }
+ httpClearFields(con->http);
- if (cupsdFlushHeader(con) < 0)
+ if (!cupsdSendHeader(con, HTTP_STATUS_OK, NULL, CUPSD_AUTH_NONE))
{
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;
- }
-
- if (httpPrintf(HTTP(con), "\r\n") < 0)
- {
- cupsdCloseClient(con);
- return;
- }
+ httpClearFields(con->http);
- if (cupsdFlushHeader(con) < 0)
+ if (!cupsdSendHeader(con, HTTP_STATUS_OK, "text/html", CUPSD_AUTH_NONE))
{
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);
+ cupsdLogRequest(con, HTTP_STATUS_OK);
}
-
- if (httpPrintf(HTTP(con), "\r\n") < 0)
- {
- 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.");
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,44 +1859,43 @@ 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);
- con->bytes += ippLength(con->request);
+ con->bytes += (off_t)ippLength(con->request);
}
}
- 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;
+ httpClearFields(con->http);
- /*
- * 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!
- */
+ if (code >= HTTP_STATUS_BAD_REQUEST && con->type != CUPSD_AUTH_NEGOTIATE)
+ httpSetKeepAlive(con->http, HTTP_KEEPALIVE_OFF);
- if (!cupsdSendHeader(con, code, NULL, auth_type))
- return (0);
-
-#ifdef HAVE_SSL
- if (code == HTTP_UPGRADE_REQUIRED)
- if (httpPrintf(HTTP(con), "Connection: Upgrade\r\n") < 0)
- return (0);
-
- 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 (httpGetVersion(con->http) >= HTTP_VERSION_1_1 &&
+ httpGetKeepAlive(con->http) == HTTP_KEEPALIVE_OFF)
+ httpSetField(con->http, HTTP_FIELD_CONNECTION, "close");
- if (code >= HTTP_BAD_REQUEST)
+ if (code >= HTTP_STATUS_BAD_REQUEST)
{
/*
* Send a human-readable error message.
@@ -2509,13 +2204,13 @@ cupsdSendError(cupsd_client_t *con, /* I - Connection */
redirect[0] = '\0';
- if (code == HTTP_UNAUTHORIZED)
+ if (code == HTTP_STATUS_UNAUTHORIZED)
text = _cupsLangString(con->language,
_("Enter your username and password or the "
"root username and password to access this "
"page. If you are using Kerberos authentication, "
"make sure you have a valid Kerberos ticket."));
- else if (code == HTTP_UPGRADE_REQUIRED)
+ else if (code == HTTP_STATUS_UPGRADE_REQUIRED)
{
text = urltext;
@@ -2532,7 +2227,7 @@ cupsdSendError(cupsd_client_t *con, /* I - Connection */
"CONTENT=\"3;URL=https://%s:%d%s\">\n",
con->servername, con->serverport, con->uri);
}
- else if (code == HTTP_WEBIF_DISABLED)
+ else if (code == HTTP_STATUS_CUPS_WEBIF_DISABLED)
text = _cupsLangString(con->language,
_("The web interface is currently disabled. Run "
"\"cupsctl WebInterface=yes\" to enable it."));
@@ -2556,27 +2251,34 @@ cupsdSendError(cupsd_client_t *con, /* I - Connection */
"<P>%s</P>\n"
"</BODY>\n"
"</HTML>\n",
- httpStatus(code), redirect, httpStatus(code), text);
+ _httpStatus(con->language, code), redirect,
+ _httpStatus(con->language, code), text);
- if (httpPrintf(HTTP(con), "Content-Type: text/html; charset=utf-8\r\n") < 0)
- return (0);
- if (httpPrintf(HTTP(con), "Content-Length: %d\r\n",
- (int)strlen(message)) < 0)
+ /*
+ * Send an error message back to the client. If the error code is a
+ * 400 or 500 series, make sure the message contains some text, too!
+ */
+
+ size_t length = strlen(message); /* Length of message */
+
+ httpSetLength(con->http, length);
+
+ if (!cupsdSendHeader(con, code, "text/html", auth_type))
return (0);
- if (httpPrintf(HTTP(con), "\r\n") < 0)
+
+ if (httpWrite2(con->http, message, length) < 0)
return (0);
- if (httpPrintf(HTTP(con), "%s", message) < 0)
+
+ if (httpFlushWrite(con->http) < 0)
return (0);
}
- else if (httpPrintf(HTTP(con), "\r\n") < 0)
- return (0);
-
- if (cupsdFlushHeader(con) < 0)
- return (0);
-
- con->http.state = HTTP_STATE_WAITING;
+ else
+ {
+ httpSetField(con->http, HTTP_FIELD_CONTENT_LENGTH, "0");
- DEBUG_puts("cupsdSendError: Set state to HTTP_STATE_WAITING.");
+ if (!cupsdSendHeader(con, code, NULL, auth_type))
+ return (0);
+ }
return (1);
}
@@ -2596,54 +2298,29 @@ cupsdSendHeader(
char auth_str[1024]; /* Authorization string */
+ cupsdLogClient(con, CUPSD_LOG_DEBUG, "cupsdSendHeader: code=%d, type=\"%s\", auth_type=%d", code, type, auth_type);
+
/*
* Send the HTTP status header...
*/
- if (code == HTTP_CONTINUE)
- {
- /*
- * 100-continue doesn't send any headers...
- */
-
- return (httpPrintf(HTTP(con), "HTTP/%d.%d 100 Continue\r\n\r\n",
- con->http.version / 100, con->http.version % 100) > 0);
- }
- else if (code == HTTP_WEBIF_DISABLED)
+ if (code == HTTP_STATUS_CUPS_WEBIF_DISABLED)
{
/*
* Treat our special "web interface is disabled" status as "200 OK" for web
* browsers.
*/
- code = HTTP_OK;
+ code = HTTP_STATUS_OK;
}
- httpFlushWrite(HTTP(con));
-
- con->http.data_encoding = HTTP_ENCODING_FIELDS;
-
- if (httpPrintf(HTTP(con), "HTTP/%d.%d %d %s\r\n", con->http.version / 100,
- con->http.version % 100, code, httpStatus(code)) < 0)
- return (0);
- if (httpPrintf(HTTP(con), "Date: %s\r\n", httpGetDateString(time(NULL))) < 0)
- return (0);
if (ServerHeader)
- if (httpPrintf(HTTP(con), "Server: %s\r\n", ServerHeader) < 0)
- return (0);
- if (con->http.keep_alive && con->http.version >= HTTP_1_0)
- {
- if (httpPrintf(HTTP(con), "Connection: Keep-Alive\r\n") < 0)
- return (0);
- if (httpPrintf(HTTP(con), "Keep-Alive: timeout=%d\r\n",
- KeepAliveTimeout) < 0)
- return (0);
- }
- if (code == HTTP_METHOD_NOT_ALLOWED)
- if (httpPrintf(HTTP(con), "Allow: GET, HEAD, OPTIONS, POST, PUT\r\n") < 0)
- return (0);
+ httpSetField(con->http, HTTP_FIELD_SERVER, ServerHeader);
+
+ if (code == HTTP_STATUS_METHOD_NOT_ALLOWED)
+ httpSetField(con->http, HTTP_FIELD_ALLOW, "GET, HEAD, OPTIONS, POST, PUT");
- if (code == HTTP_UNAUTHORIZED)
+ if (code == HTTP_STATUS_UNAUTHORIZED)
{
if (auth_type == CUPSD_AUTH_NONE)
{
@@ -2655,16 +2332,13 @@ cupsdSendHeader(
auth_str[0] = '\0';
- if (auth_type == CUPSD_AUTH_BASIC || auth_type == CUPSD_AUTH_BASICDIGEST)
+ if (auth_type == CUPSD_AUTH_BASIC)
strlcpy(auth_str, "Basic realm=\"CUPS\"", sizeof(auth_str));
- else if (auth_type == CUPSD_AUTH_DIGEST)
- snprintf(auth_str, sizeof(auth_str), "Digest realm=\"CUPS\", nonce=\"%s\"",
- con->http.hostname);
#ifdef HAVE_GSSAPI
else if (auth_type == CUPSD_AUTH_NEGOTIATE)
{
# ifdef AF_LOCAL
- if (_httpAddrFamily(con->http.hostaddr) == AF_LOCAL)
+ if (httpAddrFamily(httpGetAddress(con->http)) == AF_LOCAL)
strlcpy(auth_str, "Basic realm=\"CUPS\"", sizeof(auth_str));
else
# endif /* AF_LOCAL */
@@ -2673,7 +2347,7 @@ cupsdSendHeader(
#endif /* HAVE_GSSAPI */
if (con->best && auth_type != CUPSD_AUTH_NEGOTIATE &&
- !_cups_strcasecmp(con->http.hostname, "localhost"))
+ !_cups_strcasecmp(httpGetHostname(con->http, NULL, 0), "localhost"))
{
/*
* Add a "trc" (try root certification) parameter for local non-Kerberos
@@ -2689,7 +2363,7 @@ cupsdSendHeader(
size_t auth_size; /* Size of remaining buffer */
auth_key = auth_str + strlen(auth_str);
- auth_size = sizeof(auth_str) - (auth_key - auth_str);
+ auth_size = sizeof(auth_str) - (size_t)(auth_key - auth_str);
for (name = (char *)cupsArrayFirst(con->best->names);
name;
@@ -2722,35 +2396,24 @@ cupsdSendHeader(
if (auth_str[0])
{
- cupsdLogMessage(CUPSD_LOG_DEBUG,
- "[Client %d] WWW-Authenticate: %s", con->http.fd,
- auth_str);
+ cupsdLogClient(con, CUPSD_LOG_DEBUG, "WWW-Authenticate: %s", auth_str);
- if (httpPrintf(HTTP(con), "WWW-Authenticate: %s\r\n", auth_str) < 0)
- return (0);
+ httpSetField(con->http, HTTP_FIELD_WWW_AUTHENTICATE, auth_str);
}
}
if (con->language && strcmp(con->language->language, "C"))
- {
- if (httpPrintf(HTTP(con), "Content-Language: %s\r\n",
- con->language->language) < 0)
- return (0);
- }
+ httpSetField(con->http, HTTP_FIELD_CONTENT_LANGUAGE, con->language->language);
if (type)
{
if (!strcmp(type, "text/html"))
- {
- if (httpPrintf(HTTP(con),
- "Content-Type: text/html; charset=utf-8\r\n") < 0)
- return (0);
- }
- else if (httpPrintf(HTTP(con), "Content-Type: %s\r\n", type) < 0)
- return (0);
+ httpSetField(con->http, HTTP_FIELD_CONTENT_TYPE, "text/html; charset=utf-8");
+ else
+ httpSetField(con->http, HTTP_FIELD_CONTENT_TYPE, type);
}
- return (1);
+ return (!httpWriteResponse(con->http, code));
}
@@ -2803,36 +2466,35 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
ipp_state_t ipp_state; /* IPP state value */
- cupsdLogMessage(CUPSD_LOG_DEBUG,
- "[Client %d] cupsdWriteClient "
- "error=%d, "
- "used=%d, "
- "state=%s, "
- "data_encoding=HTTP_ENCODING_%s, "
- "data_remaining=" CUPS_LLFMT ", "
- "response=%p(%s), "
- "pipe_pid=%d, "
- "file=%d",
- con->http.fd, con->http.error, con->http.used,
- http_states[con->http.state + 1],
- con->http.data_encoding == HTTP_ENCODING_CHUNKED ?
- "CHUNKED" : "LENGTH",
- CUPS_LLCAST con->http.data_remaining,
- con->response,
- con->response ? ipp_states[con->response->state] : "",
- con->pipe_pid, con->file);
-
- if (con->http.state != HTTP_STATE_GET_SEND &&
- con->http.state != HTTP_STATE_POST_SEND)
+ cupsdLogClient(con, CUPSD_LOG_DEBUG, "con->http=%p", con->http);
+ cupsdLogClient(con, CUPSD_LOG_DEBUG,
+ "cupsdWriteClient "
+ "error=%d, "
+ "used=%d, "
+ "state=%s, "
+ "data_encoding=HTTP_ENCODING_%s, "
+ "data_remaining=" CUPS_LLFMT ", "
+ "response=%p(%s), "
+ "pipe_pid=%d, "
+ "file=%d",
+ httpError(con->http), (int)httpGetReady(con->http),
+ httpStateString(httpGetState(con->http)),
+ httpIsChunked(con->http) ? "CHUNKED" : "LENGTH",
+ CUPS_LLCAST httpGetLength2(con->http),
+ con->response,
+ con->response ? ippStateString(ippGetState(con->request)) : "",
+ con->pipe_pid, con->file);
+
+ if (httpGetState(con->http) != HTTP_STATE_GET_SEND &&
+ httpGetState(con->http) != HTTP_STATE_POST_SEND)
{
/*
* If we get called in the wrong state, then something went wrong with the
* connection and we need to shut it down...
*/
- cupsdLogMessage(CUPSD_LOG_DEBUG,
- "[Client %d] Closing on unexpected HTTP state %s.",
- con->http.fd, http_states[con->http.state + 1]);
+ cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing on unexpected HTTP write state %s.",
+ httpStateString(httpGetState(con->http)));
cupsdCloseClient(con);
return;
}
@@ -2845,8 +2507,7 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
cupsdAddSelect(con->file, (cupsd_selfunc_t)write_pipe, NULL, con);
- cupsdLogMessage(CUPSD_LOG_DEBUG, "[Client %d] Waiting for CGI data.",
- con->http.fd);
+ cupsdLogClient(con, CUPSD_LOG_DEBUG, "Waiting for CGI data.");
if (!con->file_ready)
{
@@ -2854,7 +2515,7 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
* Try again later when there is CGI output available...
*/
- cupsdRemoveSelect(con->http.fd);
+ cupsdRemoveSelect(httpGetFd(con->http));
return;
}
@@ -2863,18 +2524,18 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
bytes = (ssize_t)(sizeof(con->header) - (size_t)con->header_used);
- if (!con->pipe_pid && bytes > con->http.data_remaining)
+ if (!con->pipe_pid && bytes > (ssize_t)httpGetRemaining(con->http))
{
/*
* Limit GET bytes to original size of file (STR #3265)...
*/
- bytes = (ssize_t)con->http.data_remaining;
+ bytes = (ssize_t)httpGetRemaining(con->http);
}
- if (con->response && con->response->state != IPP_DATA)
+ if (con->response && con->response->state != IPP_STATE_DATA)
{
- int wused = con->http.wused; /* Previous write buffer use */
+ size_t wused = httpGetPending(con->http); /* Previous write buffer use */
do
{
@@ -2882,37 +2543,33 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
* Write a single attribute or the IPP message header...
*/
- ipp_state = ippWrite(HTTP(con), con->response);
+ ipp_state = ippWrite(con->http, con->response);
/*
* If the write buffer has been flushed, stop buffering up attributes...
*/
- if (con->http.wused <= wused)
+ if (httpGetPending(con->http) <= wused)
break;
}
while (ipp_state != IPP_STATE_DATA && ipp_state != IPP_STATE_ERROR);
- cupsdLogMessage(CUPSD_LOG_DEBUG,
- "[Client %d] Writing IPP response, ipp_state=%s, old "
- "wused=%d, new wused=%d", con->http.fd,
- ipp_state == IPP_STATE_ERROR ? "ERROR" :
- ipp_state == IPP_STATE_IDLE ? "IDLE" :
- ipp_state == IPP_STATE_HEADER ? "HEADER" :
- ipp_state == IPP_STATE_ATTRIBUTE ? "ATTRIBUTE" : "DATA",
- wused, con->http.wused);
+ cupsdLogClient(con, CUPSD_LOG_DEBUG,
+ "Writing IPP response, ipp_state=%s, old "
+ "wused=" CUPS_LLFMT ", new wused=" CUPS_LLFMT,
+ ippStateString(ipp_state),
+ CUPS_LLCAST wused, CUPS_LLCAST httpGetPending(con->http));
- if (con->http.wused > 0)
- httpFlushWrite(HTTP(con));
+ if (httpGetPending(con->http) > 0)
+ httpFlushWrite(con->http);
bytes = ipp_state != IPP_STATE_ERROR &&
(con->file >= 0 || ipp_state != IPP_STATE_DATA);
- cupsdLogMessage(CUPSD_LOG_DEBUG,
- "[Client %d] bytes=%d, http_state=%d, "
- "data_remaining=" CUPS_LLFMT,
- con->http.fd, (int)bytes, con->http.state,
- CUPS_LLCAST con->http.data_remaining);
+ cupsdLogClient(con, CUPSD_LOG_DEBUG,
+ "bytes=%d, http_state=%d, data_remaining=" CUPS_LLFMT,
+ (int)bytes, httpGetState(con->http),
+ CUPS_LLCAST httpGetLength2(con->http));
}
else if ((bytes = read(con->file, con->header + con->header_used, (size_t)bytes)) > 0)
{
@@ -2939,7 +2596,7 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
bufptr[-1] = '\0';
*bufptr++ = '\0';
- cupsdLogMessage(CUPSD_LOG_DEBUG, "Script header: %s", con->header);
+ cupsdLogClient(con, CUPSD_LOG_DEBUG, "Script header: %s", con->header);
if (!con->sent_header)
{
@@ -2947,46 +2604,43 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
* Handle redirection and CGI status codes...
*/
- if (!_cups_strncasecmp(con->header, "Location:", 9))
+ http_field_t field; /* HTTP field */
+ char *value = strchr(con->header, ':');
+ /* Value of field */
+
+ if (value)
{
- if (!cupsdSendHeader(con, HTTP_SEE_OTHER, NULL, CUPSD_AUTH_NONE))
- {
- cupsdCloseClient(con);
- return;
- }
+ *value++ = '\0';
+ while (isspace(*value & 255))
+ value ++;
+ }
- con->sent_header = 2;
+ field = httpFieldValue(con->header);
- if (httpPrintf(HTTP(con), "Content-Length: 0\r\n") < 0)
- return;
+ if (field != HTTP_FIELD_UNKNOWN && value)
+ {
+ httpSetField(con->http, field, value);
+
+ if (field == HTTP_FIELD_LOCATION)
+ {
+ con->pipe_status = HTTP_STATUS_SEE_OTHER;
+ con->sent_header = 2;
+ }
+ else
+ con->sent_header = 1;
}
- else if (!_cups_strncasecmp(con->header, "Status:", 7))
+ else if (!_cups_strcasecmp(con->header, "Status") && value)
{
- cupsdSendError(con, (http_status_t)atoi(con->header + 7),
- CUPSD_AUTH_NONE);
+ con->pipe_status = (http_status_t)atoi(value);
con->sent_header = 2;
}
- else
+ else if (!_cups_strcasecmp(con->header, "Set-Cookie") && value)
{
- if (!cupsdSendHeader(con, HTTP_OK, NULL, CUPSD_AUTH_NONE))
- {
- cupsdCloseClient(con);
- return;
- }
-
+ httpSetCookie(con->http, value);
con->sent_header = 1;
-
- if (con->http.version == HTTP_1_1)
- {
- if (httpPrintf(HTTP(con), "Transfer-Encoding: chunked\r\n") < 0)
- return;
- }
- }
+ }
}
- if (_cups_strncasecmp(con->header, "Status:", 7))
- httpPrintf(HTTP(con), "%s\r\n", con->header);
-
/*
* Update buffer...
*/
@@ -2994,7 +2648,7 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
con->header_used -= bufptr - con->header;
if (con->header_used > 0)
- memmove(con->header, bufptr, con->header_used);
+ memmove(con->header, bufptr, (size_t)con->header_used);
bufptr = con->header - 1;
@@ -3006,14 +2660,28 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
{
con->got_fields = 1;
- if (cupsdFlushHeader(con) < 0)
+ if (httpGetVersion(con->http) == HTTP_VERSION_1_1 &&
+ !httpGetField(con->http, HTTP_FIELD_CONTENT_LENGTH)[0])
+ httpSetLength(con->http, 0);
+
+ cupsdLogClient(con, CUPSD_LOG_DEBUG, "Sending status %d for CGI.", con->pipe_status);
+
+ if (con->pipe_status == HTTP_STATUS_OK)
{
- cupsdCloseClient(con);
- return;
+ if (!cupsdSendHeader(con, con->pipe_status, NULL, CUPSD_AUTH_NONE))
+ {
+ cupsdCloseClient(con);
+ return;
+ }
+ }
+ else
+ {
+ if (!cupsdSendError(con, con->pipe_status, CUPSD_AUTH_NONE))
+ {
+ cupsdCloseClient(con);
+ return;
+ }
}
-
- if (con->http.version == HTTP_1_1)
- con->http.data_encoding = HTTP_ENCODING_CHUNKED;
}
else
field_col = 0;
@@ -3023,30 +2691,25 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
}
if (!con->got_fields)
- {
- con->http.activity = time(NULL);
return;
- }
}
if (con->header_used > 0)
{
- if (httpWrite2(HTTP(con), con->header, con->header_used) < 0)
+ if (httpWrite2(con->http, con->header, (size_t)con->header_used) < 0)
{
- cupsdLogMessage(CUPSD_LOG_DEBUG,
- "[Client %d] Closing for error %d (%s)",
- con->http.fd, con->http.error,
- strerror(con->http.error));
+ cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing for error %d (%s)",
+ httpError(con->http), strerror(httpError(con->http)));
cupsdCloseClient(con);
return;
}
- if (con->http.data_encoding == HTTP_ENCODING_CHUNKED)
- httpFlushWrite(HTTP(con));
+ if (httpIsChunked(con->http))
+ httpFlushWrite(con->http);
con->bytes += con->header_used;
- if (con->http.state == HTTP_STATE_WAITING)
+ if (httpGetState(con->http) == HTTP_STATE_WAITING)
bytes = 0;
else
bytes = con->header_used;
@@ -3056,38 +2719,36 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
}
if (bytes <= 0 ||
- (con->http.state != HTTP_STATE_GET_SEND &&
- con->http.state != HTTP_STATE_POST_SEND))
+ (httpGetState(con->http) != HTTP_STATE_GET_SEND &&
+ httpGetState(con->http) != HTTP_STATE_POST_SEND))
{
if (!con->sent_header && con->pipe_pid)
- cupsdSendError(con, HTTP_SERVER_ERROR, CUPSD_AUTH_NONE);
+ cupsdSendError(con, HTTP_STATUS_SERVER_ERROR, CUPSD_AUTH_NONE);
else
{
- cupsdLogRequest(con, HTTP_OK);
-
- httpFlushWrite(HTTP(con));
+ cupsdLogRequest(con, HTTP_STATUS_OK);
- 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,12 +2906,13 @@ 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 */
+ int perm_check = 1; /* Do permissions check? */
/*
@@ -3272,17 +2922,27 @@ get_file(cupsd_client_t *con, /* I - Client connection */
language[0] = '\0';
if (!strncmp(con->uri, "/ppd/", 5) && !strchr(con->uri + 5, '/'))
+ {
snprintf(filename, len, "%s%s", ServerRoot, con->uri);
+
+ perm_check = 0;
+ }
else if (!strncmp(con->uri, "/icons/", 7) && !strchr(con->uri + 7, '/'))
{
snprintf(filename, len, "%s/%s", CacheDir, con->uri + 7);
if (access(filename, F_OK) < 0)
snprintf(filename, len, "%s/images/generic.png", DocumentRoot);
+
+ perm_check = 0;
}
else if (!strncmp(con->uri, "/rss/", 5) && !strchr(con->uri + 5, '/'))
snprintf(filename, len, "%s/rss/%s", CacheDir, con->uri + 5);
- else if (!strncmp(con->uri, "/admin/conf/", 12))
- snprintf(filename, len, "%s%s", ServerRoot, con->uri + 11);
+ else if (!strcmp(con->uri, "/admin/conf/cupsd.conf"))
+ {
+ strlcpy(filename, ConfigurationFile, len);
+
+ perm_check = 0;
+ }
else if (!strncmp(con->uri, "/admin/log/", 11))
{
if (!strncmp(con->uri + 11, "access_log", 10) && AccessLog[0] == '/')
@@ -3293,6 +2953,8 @@ get_file(cupsd_client_t *con, /* I - Client connection */
strlcpy(filename, PageLog, len);
else
return (NULL);
+
+ perm_check = 0;
}
else if (con->language)
{
@@ -3349,7 +3011,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);
}
@@ -3358,9 +3020,9 @@ get_file(cupsd_client_t *con, /* I - Client connection */
* not allow access...
*/
- if (!status && !(filestats->st_mode & S_IROTH))
+ if (!status && perm_check && !(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 +3067,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 +3119,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);
}
@@ -3466,17 +3128,14 @@ get_file(cupsd_client_t *con, /* I - Client connection */
* not allow access...
*/
- if (!status && !(filestats->st_mode & S_IROTH))
+ if (!status && perm_check && !(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 +3164,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 +3176,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 +3187,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 +3199,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 +3209,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 +3229,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 +3262,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 +3282,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 +3302,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 +3323,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 +3344,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 +3365,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 +3483,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 +3562,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 +3592,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 +3643,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 +3658,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 +3696,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 +3744,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 +3755,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 +3838,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 +3852,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 +4004,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 +4042,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 12124 2014-08-28 15:37:22Z 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..454fd240d 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 12178 2014-09-30 18:56:48Z 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 */
/*
@@ -1089,7 +1076,7 @@ cupsdReadConfiguration(void)
if ((cupsdCheckPermissions(RequestRoot, NULL, 0710, RunUser,
Group, 1, 1) < 0 ||
- cupsdCheckPermissions(CacheDir, NULL, 0775, RunUser,
+ cupsdCheckPermissions(CacheDir, NULL, 0770, RunUser,
Group, 1, 1) < 0 ||
cupsdCheckPermissions(temp, NULL, 0775, RunUser,
Group, 1, 1) < 0 ||
@@ -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)
{
@@ -2965,9 +2974,15 @@ read_cupsd_conf(cups_file_t *fp) /* I - File to read from */
if (lis)
{
- httpAddrString(&lis->address, temp, sizeof(temp));
- cupsdLogMessage(CUPSD_LOG_WARN,
- "Duplicate listen address \"%s\" ignored.", temp);
+#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+ if (!lis->on_demand)
+#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+ {
+ httpAddrString(&lis->address, temp, sizeof(temp));
+ cupsdLogMessage(CUPSD_LOG_WARN,
+ "Duplicate listen address \"%s\" ignored.", temp);
+ }
+
continue;
}
@@ -3017,7 +3032,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 +3074,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 +3142,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 +3301,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 +3321,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 +3375,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 +3414,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 +3474,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 +3508,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 +4093,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 12178 2014-09-30 18:56:48Z 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...
@@ -74,14 +82,6 @@ typedef enum
/*
- * 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..782844805 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 12124 2014-08-28 15:37:22Z 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 */
@@ -1349,7 +1321,7 @@ list_ppds(int request_id, /* I - Request ID */
if (device_id_re &&
!regexec(device_id_re, ppd->record.device_id,
- (int)(sizeof(re_matches) / sizeof(re_matches[0])),
+ (size_t)(sizeof(re_matches) / sizeof(re_matches[0])),
re_matches, 0))
{
/*
@@ -1379,13 +1351,13 @@ list_ppds(int request_id, /* I - Request ID */
if (make_and_model_re &&
!regexec(make_and_model_re, ppd->record.make_and_model,
- (int)(sizeof(re_matches) / sizeof(re_matches[0])),
+ (size_t)(sizeof(re_matches) / sizeof(re_matches[0])),
re_matches, 0))
{
// 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 12124 2014-08-28 15:37:22Z 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 <cups/string-private.h>
+#include <cups/file.h>
#include <unistd.h>
+#include <fcntl.h>
+#include <grp.h>
+#include <sys/stat.h>
#ifdef HAVE_SANDBOX_H
# include <sandbox.h>
# ifndef SANDBOX_NAMED_EXTERNAL
@@ -36,6 +36,13 @@
/*
+ * 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..05371e6de 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 12124 2014-08-28 15:37:22Z 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?
@@ -2734,7 +2715,6 @@ add_printer(cupsd_client_t *con, /* I - Client connection */
cupsdLogMessage(CUPSD_LOG_DEBUG,
"Copied PPD file successfully");
- chmod(dstfile, 0644);
}
}
@@ -2856,7 +2836,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 +2862,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 +2934,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 +3113,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 +3348,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 +3548,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 +3654,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 +3877,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 +4081,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 +4126,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 +4181,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 +4328,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 +4373,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 +4441,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 +4508,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;
@@ -4641,7 +4622,7 @@ copy_model(cupsd_client_t *con, /* I - Client connection */
* Open the destination file for a copy...
*/
- if ((dst = cupsFileOpen(to, "wb")) == NULL)
+ if ((dst = cupsdCreateConfFile(to, ConfigFilePerm)) == NULL)
{
cupsFreeOptions(num_defaults, defaults);
cupsFileClose(src);
@@ -4696,7 +4677,7 @@ copy_model(cupsd_client_t *con, /* I - Client connection */
unlink(tempfile);
- return (cupsFileClose(dst));
+ return (cupsdCloseCreatedConfFile(dst, to));
}
@@ -4771,7 +4752,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 +4927,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 +4963,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 +4980,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 +5150,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 +5302,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 +5599,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 +5631,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 +5745,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 +5795,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 +5889,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 +6036,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 +6150,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 +6261,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 +6281,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 +6322,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 +6334,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 +6359,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 +6377,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 +6439,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 +6497,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 +6533,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 +6557,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 +6691,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 +6864,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 +7009,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 +7065,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 +7118,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 +7128,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 +7172,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 +7274,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 +7355,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 +7516,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 +7645,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 +7721,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 +8049,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 +8243,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 +8484,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 +8566,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 +8637,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 +8775,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 +8863,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 +9087,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 +9118,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 +9136,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 +9145,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 +9215,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 +9478,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 +9605,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 +9731,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 +9813,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 +10015,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 +10183,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 +10261,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 +10514,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 +10596,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 +10660,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 +10686,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 +10705,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 */
@@ -10741,8 +10823,10 @@ validate_job(cupsd_client_t *con, /* I - Client connection */
ipp_attribute_t *uri) /* I - Printer URI */
{
http_status_t status; /* Policy status */
- ipp_attribute_t *attr, /* Current attribute */
- *auth_info; /* auth-info attribute */
+ ipp_attribute_t *attr; /* Current attribute */
+#ifdef HAVE_SSL
+ ipp_attribute_t *auth_info; /* auth-info attribute */
+#endif /* HAVE_SSL */
ipp_attribute_t *format, /* Document-format attribute */
*name; /* Job-name attribute */
cups_ptype_t dtype; /* Destination type (printer/class) */
@@ -10754,7 +10838,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
@@ -10908,7 +10992,9 @@ validate_job(cupsd_client_t *con, /* I - Client connection */
* Check policy...
*/
+#ifdef HAVE_SSL
auth_info = ippFindAttribute(con->request, "auth-info", IPP_TAG_TEXT);
+#endif /* HAVE_SSL */
if ((status = cupsdCheckPolicy(printer->op_policy_ptr, con, NULL)) != HTTP_OK)
{
@@ -10923,8 +11009,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 +11064,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 +11096,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 12124 2014-08-28 15:37:22Z msweet $".
*/
diff --git a/scheduler/job.c b/scheduler/job.c
index eaa641b92..b05050b6a 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 12140 2014-08-30 01:51:22Z 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);
@@ -234,10 +235,7 @@ cupsdCheckJobs(void)
curtime = time(NULL);
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdCheckJobs: %d active jobs, sleeping=%d, reload=%d, "
- "curtime=%ld", cupsArrayCount(ActiveJobs), Sleeping,
- NeedReload, (long)curtime);
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCheckJobs: %d active jobs, sleeping=%d, ac-power=%d, reload=%d, curtime=%ld", cupsArrayCount(ActiveJobs), Sleeping, ACPower, NeedReload, (long)curtime);
for (job = (cupsd_job_t *)cupsArrayFirst(ActiveJobs);
job;
@@ -257,7 +255,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 +268,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 +329,7 @@ cupsdCheckJobs(void)
*/
if (job->state_value == IPP_JOB_PENDING && !NeedReload &&
-#ifndef kIOPMAssertionTypeDenySystemSleep
- !Sleeping &&
-#endif /* !kIOPMAssertionTypeDenySystemSleep */
- !DoingShutdown && !job->printer)
+ (!Sleeping || ACPower) && !DoingShutdown && !job->printer)
{
printer = cupsdFindDest(job->dest);
pclass = NULL;
@@ -558,14 +561,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 +867,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 +991,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 +1231,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 +1241,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)
{
@@ -1429,6 +1454,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 +1672,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 +1824,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 +1854,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 +1878,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 +2162,18 @@ cupsdSaveAllJobs(void)
{
cupsFilePrintf(fp, "<Job %d>\n", job->id);
cupsFilePrintf(fp, "State %d\n", job->state_value);
+ cupsFilePrintf(fp, "Created %ld\n", (long)job->creation_time);
+ if (job->completed_time)
+ cupsFilePrintf(fp, "Completed %ld\n", (long)job->completed_time);
cupsFilePrintf(fp, "Priority %d\n", job->priority);
- cupsFilePrintf(fp, "HoldUntil %d\n", (int)job->hold_until);
+ if (job->hold_until)
+ cupsFilePrintf(fp, "HoldUntil %ld\n", (long)job->hold_until);
cupsFilePrintf(fp, "Username %s\n", job->username);
+ if (job->name)
+ cupsFilePutConf(fp, "Name", job->name);
cupsFilePrintf(fp, "Destination %s\n", job->dest);
cupsFilePrintf(fp, "DestType %d\n", job->dtype);
+ cupsFilePrintf(fp, "KOctets %d\n", job->koctets);
cupsFilePrintf(fp, "NumFiles %d\n", job->num_files);
for (i = 0; i < job->num_files; i ++)
cupsFilePrintf(fp, "File %d %s/%s %d\n", i + 1, job->filetypes[i]->super,
@@ -2214,9 +2279,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 +2714,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);
+ }
}
}
@@ -2762,6 +2835,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 +2951,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 +2961,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 +3022,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 +3052,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 +3793,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 +3812,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 +3874,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 +3931,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 +3941,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 +3955,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 +3974,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 +3983,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 +4123,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 +4148,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 +4180,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 +4207,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 +4504,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 +4537,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 +4591,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 +4621,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 +4640,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 +4667,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 +4698,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 +4881,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 +4899,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 +4910,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 +5286,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 12140 2014-08-30 01:51:22Z 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..9fcc63101 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 12178 2014-09-30 18:56:48Z 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/".
*/
/*
@@ -51,10 +43,19 @@ cupsdDeleteAllListeners(void)
for (lis = (cupsd_listener_t *)cupsArrayFirst(Listeners);
lis;
lis = (cupsd_listener_t *)cupsArrayNext(Listeners))
- free(lis);
+#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+ if (!lis->on_demand)
+#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+ {
+ cupsArrayRemove(Listeners, lis);
+ free(lis);
+ }
- cupsArrayDelete(Listeners);
- Listeners = NULL;
+ if (cupsArrayCount(Listeners) == 0)
+ {
+ cupsArrayDelete(Listeners);
+ Listeners = NULL;
+ }
}
@@ -123,9 +124,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 +162,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 +185,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 +221,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 +283,24 @@ cupsdStopListening(void)
lis;
lis = (cupsd_listener_t *)cupsArrayNext(Listeners))
{
- if (lis->fd != -1)
+#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+ if (!lis->on_demand && lis->fd != -1)
{
-#ifdef WIN32
- closesocket(lis->fd);
-#else
- close(lis->fd);
-#endif /* WIN32 */
-
-#ifdef AF_LOCAL
- /*
- * Remove domain sockets...
- */
+ httpAddrClose(&(lis->address), lis->fd);
+ lis->fd = -1;
+ }
-# 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 */
+#else
+ if (lis->fd != -1)
+ {
+ httpAddrClose(&(lis->address), lis->fd);
+ lis->fd = -1;
}
+#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
}
}
/*
- * End of "$Id: listen.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: listen.c 12178 2014-09-30 18:56:48Z 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 */
{
@@ -437,6 +426,61 @@ cupsdLogGSSMessage(
/*
+ * '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..1d3ac1b55 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 12140 2014-08-30 01:51:22Z msweet $"
*
* Main loop for the CUPS scheduler.
*
@@ -28,17 +28,18 @@
# include <libgen.h>
# define CUPS_KEEPALIVE CUPS_CACHEDIR "/org.cups.cupsd"
/* Name of the launchd KeepAlive file */
-# ifndef LAUNCH_JOBKEY_KEEPALIVE
-# define LAUNCH_JOBKEY_KEEPALIVE "KeepAlive"
-# endif /* !LAUNCH_JOBKEY_KEEPALIVE */
-# ifndef LAUNCH_JOBKEY_PATHSTATE
-# define LAUNCH_JOBKEY_PATHSTATE "PathState"
-# endif /* !LAUNCH_JOBKEY_PATHSTATE */
-# ifndef LAUNCH_JOBKEY_SERVICEIPC
-# define LAUNCH_JOBKEY_SERVICEIPC "ServiceIPC"
-# endif /* !LAUNCH_JOBKEY_SERVICEIPC */
+# ifdef HAVE_LAUNCH_ACTIVATE_SOCKET
+/* Update when we have a public header we can include */
+extern int launch_activate_socket(const char *name, int **fds, size_t *cnt);
+# endif /* HAVE_LAUNCH_ACTIVATE_SOCKET */
#endif /* HAVE_LAUNCH_H */
+#ifdef HAVE_SYSTEMD
+# include <systemd/sd-daemon.h>
+# define CUPS_KEEPALIVE CUPS_CACHEDIR "/org.cups.cupsd"
+ /* Name of the systemd path file */
+#endif /* HAVE_SYSTEMD */
+
#if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO)
# include <malloc.h>
#endif /* HAVE_MALLOC_H && HAVE_MALLINFO */
@@ -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));
@@ -118,15 +119,14 @@ main(int argc, /* I - Number of command-line args */
int run_as_child = 0;
/* Needed for background fork/exec */
#ifdef __APPLE__
- int use_sysman = !getuid();
- /* Use system management functions? */
+ int use_sysman = 1; /* Use system management functions? */
#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
@@ -136,7 +136,7 @@ main(int argc, /* I - Number of command-line args */
if (getuid() != geteuid())
{
- fputs("cupsd: Cannot run as a setuid program\n", stderr);
+ fputs("cupsd: Cannot run as a setuid program.\n", stderr);
return (1);
}
#endif /* HAVE_GETEUID */
@@ -150,8 +150,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 +228,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 +247,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 +327,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 +512,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 +540,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 +638,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 +689,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,19 +725,6 @@ main(int argc, /* I - Number of command-line args */
break;
}
-#if HAVE_LAUNCHD
- if (Launchd)
- {
- /*
- * If we were started by launchd, get the listen socket file
- * descriptors...
- */
-
- launchd_checkin();
- launchd_checkout();
- }
-#endif /* HAVE_LAUNCHD */
-
/*
* Startup the server...
*/
@@ -770,23 +754,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 +798,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 +867,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 +881,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 +935,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 +946,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 +1085,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 +1282,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 +1559,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 +1613,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 +1779,359 @@ 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 */
+ }
+
+ free(ld_sockets);
+
+# 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 +2149,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 +2158,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 12140 2014-08-30 01:51:22Z 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 <cups/array.h>
# include <cups/ipp.h>
# include <cups/file.h>
+# include <regex.h>
/*
@@ -58,7 +59,8 @@ typedef enum
MIME_MAGIC_INT, /* Integer/32-bit word matches */
MIME_MAGIC_LOCALE, /* Current locale matches string */
MIME_MAGIC_CONTAINS, /* File contains a string */
- MIME_MAGIC_ISTRING /* Case-insensitive string matches */
+ MIME_MAGIC_ISTRING, /* Case-insensitive string matches */
+ MIME_MAGIC_REGEX /* Regular expression matches */
} mime_op_t;
typedef struct _mime_magic_s /**** MIME Magic Data ****/
@@ -80,6 +82,7 @@ typedef struct _mime_magic_s /**** MIME Magic Data ****/
unsigned char charv; /* Byte value */
unsigned short shortv; /* Short value */
unsigned intv; /* Integer value */
+ regex_t rev; /* Regular expression value */
} value;
} mime_magic_t;
@@ -158,5 +161,5 @@ extern void mimeSetErrorCallback(mime_t *mime, mime_error_cb_t cb,
#endif /* !_CUPS_MIME_H_ */
/*
- * End of "$Id: mime.h 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: mime.h 11272 2013-09-10 19:15:36Z msweet $".
*/
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 @@
<true/>
<key>Label</key>
<string>org.cups.cups-lpd</string>
+ <key>EnableTransactions</key>
+ <false/>
+ <key>EnablePressuredExit</key>
+ <false/>
<key>ProgramArguments</key>
<array>
<string>/usr/libexec/cups/daemon/cups-lpd</string>
diff --git a/scheduler/org.cups.cupsd.path.in b/scheduler/org.cups.cupsd.path.in
new file mode 100644
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 @@
<string>org.cups.cupsd</string>
<key>EnableTransactions</key>
<true/>
+ <key>EnablePressuredExit</key>
+ <true/>
<key>ExitTimeOut</key>
<integer>60</integer>
<key>KeepAlive</key>
@@ -21,8 +23,7 @@
<string>/usr/sbin/cupsd</string>
<string>-l</string>
</array>
- <!-- These environment variables are only used when CUPS is compiled
- with --enable-debug-printfs -->
+ <!-- These environment variables are only used when CUPS is compiled with debug-printfs support -->
<key>EnvironmentVariables</key>
<dict>
<key>CUPS_DEBUG_LOG</key>
@@ -30,10 +31,8 @@
<key>CUPS_DEBUG_LEVEL</key>
<string>3</string>
<key>CUPS_DEBUG_FILTER</key>
- <string>^(http|_http|ipp|_ipp|mime).*</string>
+ <string>^(cupsDo|cupsGet|cupsMake|cupsSet|http|_http|ipp|_ipp|mime).*</string>
</dict>
- <key>ServiceIPC</key>
- <true/>
<key>Sockets</key>
<dict>
<key>Listeners</key>
diff --git a/scheduler/org.cups.cupsd.service.in b/scheduler/org.cups.cupsd.service.in
new file mode 100644
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..07e07c17e 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 12170 2014-09-30 16:12:03Z 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;
@@ -180,54 +180,53 @@ cupsdCreateCommonData(void)
};
static const int ops[] = /* operations-supported values */
{
- IPP_PRINT_JOB,
- IPP_VALIDATE_JOB,
- IPP_CREATE_JOB,
- IPP_SEND_DOCUMENT,
- IPP_CANCEL_JOB,
- IPP_GET_JOB_ATTRIBUTES,
- IPP_GET_JOBS,
- IPP_GET_PRINTER_ATTRIBUTES,
- IPP_HOLD_JOB,
- IPP_RELEASE_JOB,
- IPP_RESTART_JOB,
- IPP_PAUSE_PRINTER,
- IPP_RESUME_PRINTER,
- IPP_PURGE_JOBS,
- IPP_SET_PRINTER_ATTRIBUTES,
- IPP_SET_JOB_ATTRIBUTES,
- IPP_GET_PRINTER_SUPPORTED_VALUES,
- IPP_CREATE_PRINTER_SUBSCRIPTION,
- IPP_CREATE_JOB_SUBSCRIPTION,
- IPP_GET_SUBSCRIPTION_ATTRIBUTES,
- IPP_GET_SUBSCRIPTIONS,
- IPP_RENEW_SUBSCRIPTION,
- IPP_CANCEL_SUBSCRIPTION,
- IPP_GET_NOTIFICATIONS,
- IPP_ENABLE_PRINTER,
- IPP_DISABLE_PRINTER,
- IPP_HOLD_NEW_JOBS,
- IPP_RELEASE_HELD_NEW_JOBS,
- IPP_CANCEL_JOBS,
- IPP_CANCEL_MY_JOBS,
- IPP_CLOSE_JOB,
- CUPS_GET_DEFAULT,
- CUPS_GET_PRINTERS,
- CUPS_ADD_PRINTER,
- CUPS_DELETE_PRINTER,
- CUPS_GET_CLASSES,
- CUPS_ADD_CLASS,
- CUPS_DELETE_CLASS,
- CUPS_ACCEPT_JOBS,
- CUPS_REJECT_JOBS,
- CUPS_SET_DEFAULT,
- CUPS_GET_DEVICES,
- CUPS_GET_PPDS,
- CUPS_MOVE_JOB,
- CUPS_AUTHENTICATE_JOB,
- CUPS_GET_PPD,
- CUPS_GET_DOCUMENT,
- IPP_RESTART_JOB
+ IPP_OP_PRINT_JOB,
+ IPP_OP_VALIDATE_JOB,
+ IPP_OP_CREATE_JOB,
+ IPP_OP_SEND_DOCUMENT,
+ IPP_OP_CANCEL_JOB,
+ IPP_OP_GET_JOB_ATTRIBUTES,
+ IPP_OP_GET_JOBS,
+ IPP_OP_GET_PRINTER_ATTRIBUTES,
+ IPP_OP_HOLD_JOB,
+ IPP_OP_RELEASE_JOB,
+ IPP_OP_PAUSE_PRINTER,
+ IPP_OP_RESUME_PRINTER,
+ IPP_OP_PURGE_JOBS,
+ IPP_OP_SET_PRINTER_ATTRIBUTES,
+ IPP_OP_SET_JOB_ATTRIBUTES,
+ IPP_OP_GET_PRINTER_SUPPORTED_VALUES,
+ IPP_OP_CREATE_PRINTER_SUBSCRIPTIONS,
+ IPP_OP_CREATE_JOB_SUBSCRIPTIONS,
+ IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES,
+ IPP_OP_GET_SUBSCRIPTIONS,
+ IPP_OP_RENEW_SUBSCRIPTION,
+ IPP_OP_CANCEL_SUBSCRIPTION,
+ IPP_OP_GET_NOTIFICATIONS,
+ IPP_OP_ENABLE_PRINTER,
+ IPP_OP_DISABLE_PRINTER,
+ IPP_OP_HOLD_NEW_JOBS,
+ IPP_OP_RELEASE_HELD_NEW_JOBS,
+ IPP_OP_CANCEL_JOBS,
+ IPP_OP_CANCEL_MY_JOBS,
+ IPP_OP_CLOSE_JOB,
+ IPP_OP_CUPS_GET_DEFAULT,
+ IPP_OP_CUPS_GET_PRINTERS,
+ IPP_OP_CUPS_ADD_MODIFY_PRINTER,
+ IPP_OP_CUPS_DELETE_PRINTER,
+ IPP_OP_CUPS_GET_CLASSES,
+ IPP_OP_CUPS_ADD_MODIFY_CLASS,
+ IPP_OP_CUPS_DELETE_CLASS,
+ IPP_OP_CUPS_ACCEPT_JOBS,
+ IPP_OP_CUPS_REJECT_JOBS,
+ IPP_OP_CUPS_SET_DEFAULT,
+ IPP_OP_CUPS_GET_DEVICES,
+ IPP_OP_CUPS_GET_PPDS,
+ IPP_OP_CUPS_MOVE_JOB,
+ IPP_OP_CUPS_AUTHENTICATE_JOB,
+ IPP_OP_CUPS_GET_PPD,
+ IPP_OP_CUPS_GET_DOCUMENT,
+ IPP_OP_RESTART_JOB
};
static const char * const charsets[] =/* charset-supported values */
{
@@ -430,6 +429,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 +884,7 @@ cupsdLoadAllPrinters(void)
cupsdLogMessage(CUPSD_LOG_ERROR,
"Syntax error on line %d of printers.conf.", linenum);
}
- else if (!_cups_strcasecmp(line, "</Printer>"))
+ else if (!_cups_strcasecmp(line, "</Printer>") || !_cups_strcasecmp(line, "</DefaultPrinter>"))
{
if (p != NULL)
{
@@ -1084,7 +1087,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 +1489,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 +1548,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 +1568,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 +1580,10 @@ cupsdSaveAllPrinters(void)
cupsFilePrintf(fp, "Attribute marker-change-time %ld\n",
(long)printer->marker_time);
- cupsFilePuts(fp, "</Printer>\n");
+ if (printer == DefaultPrinter)
+ cupsFilePuts(fp, "</DefaultPrinter>\n");
+ else
+ cupsFilePuts(fp, "</Printer>\n");
}
cupsdCloseCreatedConfFile(fp, filename);
@@ -1683,7 +1686,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 +2056,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 +2066,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 +2148,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 +2174,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 +2463,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 +2504,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 +3141,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 +3190,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 +3297,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 +3710,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 +3742,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 +3761,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 +4611,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 +4915,7 @@ write_xml_string(cups_file_t *fp, /* I - File to write to */
if (*s == '&')
{
if (s > start)
- cupsFileWrite(fp, start, s - start);
+ cupsFileWrite(fp, start, (size_t)(s - start));
cupsFilePuts(fp, "&amp;");
start = s + 1;
@@ -4918,7 +4923,7 @@ write_xml_string(cups_file_t *fp, /* I - File to write to */
else if (*s == '<')
{
if (s > start)
- cupsFileWrite(fp, start, s - start);
+ cupsFileWrite(fp, start, (size_t)(s - start));
cupsFilePuts(fp, "&lt;");
start = s + 1;
@@ -4931,5 +4936,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 12170 2014-09-30 16:12:03Z 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..d23a352c7 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 12102 2014-08-20 15:19:09Z 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 <libgen.h>
#endif /* __APPLE__ */
+#ifdef HAVE_POSIX_SPAWN
+# include <spawn.h>
+extern char **environ;
+#endif /* HAVE_POSIX_SPAWN */
/*
@@ -68,34 +62,37 @@ static char *cupsd_requote(char *dst, const char *src, size_t dstsize);
*/
void * /* O - Profile or NULL on error */
-cupsdCreateProfile(int job_id) /* I - Job ID or 0 for none */
+cupsdCreateProfile(int job_id, /* I - Job ID or 0 for none */
+ int allow_networking)/* I - Allow networking off machine? */
{
#ifdef HAVE_SANDBOX_H
- cups_file_t *fp; /* File pointer */
- char profile[1024], /* File containing the profile */
- cache[1024], /* Quoted CacheDir */
- request[1024], /* Quoted RequestRoot */
- root[1024], /* Quoted ServerRoot */
- temp[1024]; /* Quoted TempDir */
- const char *nodebug; /* " (with no-log)" for no debug */
-
-
- if (!UseProfiles)
+ cups_file_t *fp; /* File pointer */
+ char profile[1024], /* File containing the profile */
+ bin[1024], /* Quoted ServerBin */
+ cache[1024], /* Quoted CacheDir */
+ domain[1024], /* Domain socket, if any */
+ request[1024], /* Quoted RequestRoot */
+ root[1024], /* Quoted ServerRoot */
+ state[1024], /* Quoted StateDir */
+ temp[1024]; /* Quoted TempDir */
+ const char *nodebug; /* " (with no-log)" for no debug */
+ cupsd_listener_t *lis; /* Current listening socket */
+
+
+ if (!UseSandboxing || Sandboxing == CUPSD_SANDBOXING_OFF)
{
/*
* Only use sandbox profiles as root...
*/
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCreateProfile(job_id=%d) = NULL",
- job_id);
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCreateProfile(job_id=%d, allow_networking=%d) = NULL", job_id, allow_networking);
return (NULL);
}
if ((fp = cupsTempFile2(profile, sizeof(profile))) == NULL)
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCreateProfile(job_id=%d) = NULL",
- job_id);
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCreateProfile(job_id=%d, allow_networking=%d) = NULL", job_id, allow_networking);
cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to create security profile: %s",
strerror(errno));
return (NULL);
@@ -104,22 +101,29 @@ cupsdCreateProfile(int job_id) /* I - Job ID or 0 for none */
fchown(cupsFileNumber(fp), RunUser, Group);
fchmod(cupsFileNumber(fp), 0640);
+ cupsd_requote(bin, ServerBin, sizeof(bin));
cupsd_requote(cache, CacheDir, sizeof(cache));
cupsd_requote(request, RequestRoot, sizeof(request));
cupsd_requote(root, ServerRoot, sizeof(root));
+ cupsd_requote(state, StateDir, sizeof(state));
cupsd_requote(temp, TempDir, sizeof(temp));
nodebug = LogLevel < CUPSD_LOG_DEBUG ? " (with no-log)" : "";
cupsFilePuts(fp, "(version 1)\n");
- cupsFilePuts(fp, "(allow default)\n");
- cupsFilePrintf(fp,
- "(deny file-write* file-read-data file-read-metadata\n"
- " (regex"
- " #\"^%s$\"" /* RequestRoot */
- " #\"^%s/\"" /* RequestRoot/... */
- ")%s)\n",
- request, request, nodebug);
+ if (Sandboxing == CUPSD_SANDBOXING_STRICT)
+ cupsFilePuts(fp, "(deny default)\n");
+ else
+ cupsFilePuts(fp, "(allow default)\n");
+ if (LogLevel >= CUPSD_LOG_DEBUG)
+ cupsFilePuts(fp, "(debug deny)\n");
+ cupsFilePuts(fp, "(import \"system.sb\")\n");
+ cupsFilePuts(fp, "(system-network)\n");
+ cupsFilePuts(fp, "(allow mach-per-user-lookup)\n");
+ cupsFilePuts(fp, "(allow ipc-posix-sem)\n");
+ cupsFilePuts(fp, "(allow ipc-posix-shm)\n");
+ cupsFilePuts(fp, "(allow ipc-sysv-shm)\n");
+ cupsFilePuts(fp, "(allow mach-lookup)\n");
if (!RunUser)
cupsFilePrintf(fp,
"(deny file-write* file-read-data file-read-metadata\n"
@@ -142,13 +146,43 @@ cupsdCreateProfile(int job_id) /* I - Job ID or 0 for none */
" #\"^/System/\""
")%s)\n",
root, root, nodebug);
- /* Specifically allow applications to stat RequestRoot */
+ /* Specifically allow applications to stat RequestRoot and some other system folders */
cupsFilePrintf(fp,
"(allow file-read-metadata\n"
" (regex"
+ " #\"^/$\"" /* / */
+ " #\"^/usr$\"" /* /usr */
+ " #\"^/Library$\"" /* /Library */
+ " #\"^/Library/Printers$\"" /* /Library/Printers */
" #\"^%s$\"" /* RequestRoot */
"))\n",
request);
+ /* Read and write TempDir, CacheDir, and other common folders */
+ cupsFilePuts(fp,
+ "(allow file-write* file-read-data file-read-metadata\n"
+ " (regex"
+ " #\"^/private/var/db/\""
+ " #\"^/private/var/folders/\""
+ " #\"^/private/var/lib/\""
+ " #\"^/private/var/log/\""
+ " #\"^/private/var/mysql/\""
+ " #\"^/private/var/run/\""
+ " #\"^/private/var/spool/\""
+ " #\"^/Library/Application Support/\""
+ " #\"^/Library/Caches/\""
+ " #\"^/Library/Logs/\""
+ " #\"^/Library/Preferences/\""
+ " #\"^/Library/WebServer/\""
+ " #\"^/Users/Shared/\""
+ "))\n");
+ cupsFilePrintf(fp,
+ "(deny file-write*\n"
+ " (regex #\"^%s$\")%s)\n",
+ request, nodebug);
+ cupsFilePrintf(fp,
+ "(deny file-write* file-read-data file-read-metadata\n"
+ " (regex #\"^%s/\")%s)\n",
+ request, nodebug);
cupsFilePrintf(fp,
"(allow file-write* file-read-data file-read-metadata\n"
" (regex"
@@ -156,56 +190,157 @@ 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$\""
+ " #\"^/private/var/tmp$\""
+ " #\"^/private/var/tmp/\""
+ " #\"^/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$\"" /* /Library */
+ " #\"^/Library/\"" /* /Library/... */
+ " #\"^/System$\"" /* /System */
+ " #\"^/System/\"" /* /System/... */
" #\"^%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);
+ cupsFilePrintf(fp, "(allow sysctl*)\n");
+ }
+ 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/\" #\"^/private/var/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 +403,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 +431,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 +458,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 +534,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 +657,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 +742,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 +755,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 +786,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 +808,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 +859,7 @@ cupsd_requote(char *dst, /* I - Destination buffer */
if (strchr(".?*()[]^$\\", ch))
*dstptr++ = '\\';
- *dstptr++ = ch;
+ *dstptr++ = (char)ch;
}
*dstptr = '\0';
@@ -655,5 +870,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 12102 2014-08-20 15:19:09Z 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 <sys/time.h>
#elif defined(HAVE_POLL)
# include <poll.h>
-#elif defined(__hpux)
-# include <sys/time.h>
#else
# include <sys/select.h>
#endif /* HAVE_EPOLL */
@@ -532,15 +518,13 @@ cupsdDoSelect(long timeout) /* I - Timeout in seconds */
if (cupsd_pollfds)
- pfd = realloc(cupsd_pollfds, allocfds * sizeof(struct pollfd));
+ pfd = realloc(cupsd_pollfds, (size_t)allocfds * sizeof(struct pollfd));
else
- pfd = malloc(allocfds * sizeof(struct pollfd));
+ pfd = malloc((size_t)allocfds * sizeof(struct pollfd));
if (!pfd)
{
- cupsdLogMessage(CUPSD_LOG_EMERG,
- "Unable to allocate %d bytes for polling!",
- (int)(allocfds * sizeof(struct pollfd)));
+ cupsdLogMessage(CUPSD_LOG_EMERG, "Unable to allocate %d bytes for polling.", (int)((size_t)allocfds * sizeof(struct pollfd)));
return (-1);
}
@@ -569,9 +553,9 @@ cupsdDoSelect(long timeout) /* I - Timeout in seconds */
}
if (timeout >= 0 && timeout < 86400)
- nfds = poll(cupsd_pollfds, count, timeout * 1000);
+ nfds = poll(cupsd_pollfds, (nfds_t)count, timeout * 1000);
else
- nfds = poll(cupsd_pollfds, count, -1);
+ nfds = poll(cupsd_pollfds, (nfds_t)count, -1);
if (nfds > 0)
{
@@ -822,13 +806,13 @@ cupsdStartSelect(void)
#ifdef HAVE_EPOLL
cupsd_epoll_fd = epoll_create(MaxFDs);
- cupsd_epoll_events = calloc(MaxFDs, sizeof(struct epoll_event));
+ cupsd_epoll_events = calloc((size_t)MaxFDs, sizeof(struct epoll_event));
cupsd_update_pollfds = 0;
#elif defined(HAVE_KQUEUE)
cupsd_kqueue_fd = kqueue();
cupsd_kqueue_changes = 0;
- cupsd_kqueue_events = calloc(MaxFDs, sizeof(struct kevent));
+ cupsd_kqueue_events = calloc((size_t)MaxFDs, sizeof(struct kevent));
#elif defined(HAVE_POLL)
cupsd_update_pollfds = 0;
@@ -946,5 +930,5 @@ find_fd(int fd) /* I - File descriptor */
/*
- * End of "$Id: select.c 11142 2013-07-17 01:07:00Z msweet $".
+ * End of "$Id: select.c 11594 2014-02-14 20:09:01Z msweet $".
*/
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..315db7f4d 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 12140 2014-08-30 01:51:22Z 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-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/".
- *
- * 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/".
*/
@@ -37,44 +19,28 @@
*/
#include "cupsd.h"
-#ifdef HAVE_VPROC_TRANSACTION_BEGIN
-# include <vproc.h>
-#endif /* HAVE_VPROC_TRANSACTION_BEGIN */
#ifdef __APPLE__
+# include <vproc.h>
# include <IOKit/pwr_mgt/IOPMLib.h>
-# ifdef HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H
-# include <IOKit/pwr_mgt/IOPMLibPrivate.h>
-# else
-# define kIOPMAssertionTypeDenySystemSleep CFSTR("DenySystemSleep")
-# endif /* HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H */
#endif /* __APPLE__ */
/*
* The system management functions cover disk and power management which
- * are primarily used on portable computers.
+ * are primarily used for portable computers.
*
* Disk management involves delaying the write of certain configuration
* and state files to minimize the number of times the disk has to spin
- * up.
+ * up or flash to be written to.
*
- * 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.
- *
- * Once put to sleep, we invalidate all remote printers since it is common
- * to wake up in a new location/on a new wireless network.
- */
-
-/*
- * Local globals...
+ * printing a job. And on OS X we can also "sleep print" - basically the
+ * system only wakes up long enough to service network requests and process
+ * print jobs.
*/
-#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.
@@ -164,9 +130,10 @@ cupsdSetBusyState(void)
"Active clients and printing jobs",
"Active clients, printing jobs, and dirty files"
};
-#ifdef HAVE_VPROC_TRANSACTION_BEGIN
+#ifdef __APPLE__
static vproc_transaction_t vtran = 0; /* Current busy transaction */
-#endif /* HAVE_VPROC_TRANSACTION_BEGIN */
+ static IOPMAssertionID keep_awake = 0;/* Keep the system awake while printing */
+#endif /* __APPLE__ */
/*
@@ -206,7 +173,7 @@ cupsdSetBusyState(void)
{
busy = newbusy;
-#ifdef HAVE_VPROC_TRANSACTION_BEGIN
+#ifdef __APPLE__
if (busy && !vtran)
vtran = vproc_transaction_begin(NULL);
else if (!busy && vtran)
@@ -214,27 +181,17 @@ cupsdSetBusyState(void)
vproc_transaction_end(NULL, vtran);
vtran = 0;
}
-#endif /* HAVE_VPROC_TRANSACTION_BEGIN */
+#endif /* __APPLE__ */
}
-#if defined(kIOPMAssertionTypeDenySystemSleep) || defined(kIOPMAssertNetworkClientActive)
+#ifdef __APPLE__
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)
{
@@ -242,7 +199,7 @@ cupsdSetBusyState(void)
IOPMAssertionRelease(keep_awake);
keep_awake = 0;
}
-#endif /* kIOPMAssertionTypeDenySystemSleep || kIOPMAssertNetworkClientActive */
+#endif /* __APPLE__ */
}
@@ -257,8 +214,10 @@ cupsdSetBusyState(void)
* Include MacOS-specific headers...
*/
+# include <notify.h>
# include <IOKit/IOKitLib.h>
# include <IOKit/IOMessage.h>
+# include <IOKit/ps/IOPowerSources.h>
# include <IOKit/pwr_mgt/IOPMLib.h>
# include <SystemConfiguration/SystemConfiguration.h>
# include <pthread.h>
@@ -323,6 +282,8 @@ 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? */
+static int PSToken = 0; /* Power source notifications */
/*
@@ -338,6 +299,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 +311,7 @@ cupsdAllowSleep(void)
{
cupsdCleanDirty();
+ cupsdLogMessage(CUPSD_LOG_DEBUG, "Allowing system sleep.");
IOAllowPowerChange(LastSysEvent.powerKernelPort,
LastSysEvent.powerNotificationID);
}
@@ -364,6 +327,8 @@ cupsdStartSystemMonitor(void)
int flags; /* fcntl flags on pipe */
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdStartSystemMonitor()");
+
if (cupsdOpenPipe(SysEventPipes))
{
cupsdLogMessage(CUPSD_LOG_ERROR, "System event monitor pipe() failed - %s!",
@@ -388,6 +353,14 @@ cupsdStartSystemMonitor(void)
pthread_mutex_init(&SysEventThreadMutex, NULL);
pthread_cond_init(&SysEventThreadCond, NULL);
pthread_create(&SysEventThread, NULL, (void *(*)())sysEventThreadEntry, NULL);
+
+ /*
+ * Monitor for power source changes via dispatch queue...
+ */
+
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdStartSystemMonitor: IOPSGetTimeRemainingEstimate=%f", IOPSGetTimeRemainingEstimate());
+ ACPower = IOPSGetTimeRemainingEstimate() == kIOPSTimeRemainingUnlimited;
+ notify_register_dispatch(kIOPSNotifyPowerSource, &PSToken, dispatch_get_main_queue(), ^(int t) { ACPower = IOPSGetTimeRemainingEstimate() == kIOPSTimeRemainingUnlimited; });
}
@@ -401,6 +374,8 @@ cupsdStopSystemMonitor(void)
CFRunLoopRef rl; /* The event handler runloop */
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdStopSystemMonitor()");
+
if (SysEventThread)
{
/*
@@ -431,6 +406,12 @@ cupsdStopSystemMonitor(void)
cupsdRemoveSelect(SysEventPipes[0]);
cupsdClosePipe(SysEventPipes);
}
+
+ if (PSToken != 0)
+ {
+ notify_cancel(PSToken);
+ PSToken = 0;
+ }
}
@@ -671,18 +652,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 +674,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 +857,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 +869,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 +881,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 +896,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 +929,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 +940,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 +958,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 - ignored while "
+ "sleeping.");
+ }
+ else
{
cupsdLogMessage(CUPSD_LOG_DEBUG,
- "Computer name or BTMM domains changed");
+ "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 12140 2014-08-30 01:51:22Z msweet $".
*/
diff --git a/scheduler/sysman.h b/scheduler/sysman.h
index b911feb97..9da386da5 100644
--- a/scheduler/sysman.h
+++ b/scheduler/sysman.h
@@ -1,16 +1,16 @@
/*
- * "$Id: sysman.h 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: sysman.h 12140 2014-08-30 01:51:22Z msweet $"
*
- * System management definitions for the CUPS scheduler.
+ * System management definitions for the CUPS scheduler.
*
- * Copyright 2007-2011 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/".
*/
/*
@@ -35,7 +35,9 @@ VAR int DirtyFiles VALUE(CUPSD_DIRTY_NONE),
/* How often do we write dirty files? */
VAR time_t DirtyCleanTime VALUE(0);
/* When to clean dirty files next */
-VAR int Sleeping VALUE(0);
+VAR int ACPower VALUE(-1),
+ /* Is the system on AC power? */
+ Sleeping VALUE(0);
/* Non-zero if machine is entering or *
* in a sleep state... */
VAR time_t SleepJobs VALUE(0);
@@ -60,5 +62,5 @@ extern void cupsdStopSystemMonitor(void);
/*
- * End of "$Id: sysman.h 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: sysman.h 12140 2014-08-30 01:51:22Z 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
@@ -265,15 +263,6 @@ lpoptions: lpoptions.o ../cups/$(LIBCUPS)
#
-# 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 <cups/cups-private.h>
-#include <cups/md5-private.h>
-#include <fcntl.h>
-#include <grp.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#ifndef WIN32
-# include <unistd.h>
-# include <signal.h>
-#endif /* !WIN32 */
-
-
-/*
- * Operations...
- */
-
-#define ADD 0
-#define CHANGE 1
-#define DELETE 2
-
-
-/*
- * Local functions...
- */
-
-static void usage(FILE *fp) __attribute__((noreturn));
-
-
-/*
- * 'main()' - Add, change, or delete passwords from the MD5 password file.
- */
-
-int /* O - Exit status */
-main(int argc, /* I - Number of command-line arguments */
- char *argv[]) /* I - Command-line arguments */
-{
- int i; /* Looping var */
- char *opt; /* Option pointer */
- const char *username; /* Pointer to username */
- const char *groupname; /* Pointer to group name */
- int op; /* Operation (add, change, delete) */
- const char *passwd; /* Password string */
- FILE *infile, /* Input file */
- *outfile; /* Output file */
- char line[256], /* Line from file */
- userline[17], /* User from line */
- groupline[17], /* Group from line */
- md5line[33], /* MD5-sum from line */
- md5new[33]; /* New MD5 sum */
- char passwdmd5[1024], /* passwd.md5 file */
- passwdold[1024], /* passwd.old file */
- passwdnew[1024]; /* passwd.tmp file */
- char *newpass, /* new password */
- *oldpass; /* old password */
- int flag; /* Password check flags... */
- int fd; /* Password file descriptor */
- int error; /* Write error */
- _cups_globals_t *cg = _cupsGlobals(); /* Global data */
- cups_lang_t *lang; /* Language info */
-#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
- struct sigaction action; /* Signal action */
-#endif /* HAVE_SIGACTION && !HAVE_SIGSET*/
-
-
- _cupsSetLocale(argv);
- lang = cupsLangDefault();
-
- /*
- * Check to see if stdin, stdout, and stderr are still open...
- */
-
- if (fcntl(0, F_GETFD, &i) ||
- fcntl(1, F_GETFD, &i) ||
- fcntl(2, F_GETFD, &i))
- {
- /*
- * No, return exit status 2 and don't try to send any output since
- * someone is trying to bypass the security on the server.
- */
-
- return (2);
- }
-
- /*
- * Find the server directory...
- */
-
- snprintf(passwdmd5, sizeof(passwdmd5), "%s/passwd.md5", cg->cups_serverroot);
- snprintf(passwdold, sizeof(passwdold), "%s/passwd.old", cg->cups_serverroot);
- snprintf(passwdnew, sizeof(passwdnew), "%s/passwd.new", cg->cups_serverroot);
-
- /*
- * Find the default system group...
- */
-
- if (getgrnam(CUPS_DEFAULT_GROUP))
- groupname = CUPS_DEFAULT_GROUP;
- else
- groupname = "unknown";
-
- endgrent();
-
- username = NULL;
- op = CHANGE;
-
- /*
- * Parse command-line options...
- */
-
- for (i = 1; i < argc; i ++)
- if (argv[i][0] == '-')
- for (opt = argv[i] + 1; *opt; opt ++)
- switch (*opt)
- {
- case 'a' : /* Add */
- op = ADD;
- break;
- case 'x' : /* Delete */
- op = DELETE;
- break;
- case 'g' : /* Group */
- i ++;
- if (i >= argc)
- usage(stderr);
-
- groupname = argv[i];
- break;
- case 'h' : /* Help */
- usage(stdout);
- break;
- default : /* Bad option */
- usage(stderr);
- break;
- }
- else if (!username)
- username = argv[i];
- else
- usage(stderr);
-
- /*
- * See if we are trying to add or delete a password when we aren't logged in
- * as root...
- */
-
- if (getuid() && getuid() != geteuid() && (op != CHANGE || username))
- {
- _cupsLangPuts(stderr,
- _("lppasswd: Only root can add or delete passwords."));
- return (1);
- }
-
- /*
- * Fill in missing info...
- */
-
- if (!username)
- username = cupsUser();
-
- oldpass = newpass = NULL;
-
- /*
- * Obtain old and new password _before_ locking the database
- * to keep users from locking the file indefinitely.
- */
-
- if (op == CHANGE && getuid())
- {
- if ((passwd = cupsGetPassword(_("Enter old password:"))) == NULL)
- return (1);
-
- if ((oldpass = strdup(passwd)) == NULL)
- {
- _cupsLangPrintf(stderr,
- _("lppasswd: Unable to copy password string: %s"),
- strerror(errno));
- return (1);
- }
- }
-
- /*
- * Now get the new password, if necessary...
- */
-
- if (op != DELETE)
- {
- if ((passwd = cupsGetPassword(
- _cupsLangString(lang, _("Enter password:")))) == NULL)
- return (1);
-
- if ((newpass = strdup(passwd)) == NULL)
- {
- _cupsLangPrintf(stderr,
- _("lppasswd: Unable to copy password string: %s"),
- strerror(errno));
- return (1);
- }
-
- if ((passwd = cupsGetPassword(
- _cupsLangString(lang, _("Enter password again:")))) == NULL)
- return (1);
-
- if (strcmp(passwd, newpass) != 0)
- {
- _cupsLangPuts(stderr,
- _("lppasswd: Sorry, passwords don't match."));
- return (1);
- }
-
- /*
- * Check that the password contains at least one letter and number.
- */
-
- flag = 0;
-
- for (passwd = newpass; *passwd; passwd ++)
- if (isdigit(*passwd & 255))
- flag |= 1;
- else if (isalpha(*passwd & 255))
- flag |= 2;
-
- /*
- * Only allow passwords that are at least 6 chars, have a letter and
- * a number, and don't contain the username.
- */
-
- if (strlen(newpass) < 6 || strstr(newpass, username) != NULL || flag != 3)
- {
- _cupsLangPuts(stderr, _("lppasswd: Sorry, password rejected."));
- _cupsLangPuts(stderr, _("Your password must be at least 6 characters "
- "long, cannot contain your username, and must "
- "contain at least one letter and number."));
- return (1);
- }
- }
-
- /*
- * Ignore SIGHUP, SIGINT, SIGTERM, and SIGXFSZ (if defined) for the
- * remainder of the time so that we won't end up with bogus password
- * files...
- */
-
-#ifndef WIN32
-# if defined(HAVE_SIGSET)
- sigset(SIGHUP, SIG_IGN);
- sigset(SIGINT, SIG_IGN);
- sigset(SIGTERM, SIG_IGN);
-# ifdef SIGXFSZ
- sigset(SIGXFSZ, SIG_IGN);
-# endif /* SIGXFSZ */
-# elif defined(HAVE_SIGACTION)
- memset(&action, 0, sizeof(action));
- action.sa_handler = SIG_IGN;
-
- sigaction(SIGHUP, &action, NULL);
- sigaction(SIGINT, &action, NULL);
- sigaction(SIGTERM, &action, NULL);
-# ifdef SIGXFSZ
- sigaction(SIGXFSZ, &action, NULL);
-# endif /* SIGXFSZ */
-# else
- signal(SIGHUP, SIG_IGN);
- signal(SIGINT, SIG_IGN);
- signal(SIGTERM, SIG_IGN);
-# ifdef SIGXFSZ
- signal(SIGXFSZ, SIG_IGN);
-# endif /* SIGXFSZ */
-# endif
-#endif /* !WIN32 */
-
- /*
- * Open the output file.
- */
-
- if ((fd = open(passwdnew, O_WRONLY | O_CREAT | O_EXCL, 0400)) < 0)
- {
- if (errno == EEXIST)
- _cupsLangPuts(stderr, _("lppasswd: Password file busy."));
- else
- _cupsLangPrintf(stderr, _("lppasswd: Unable to open password file: %s"),
- strerror(errno));
-
- return (1);
- }
-
- if ((outfile = fdopen(fd, "w")) == NULL)
- {
- _cupsLangPrintf(stderr, _("lppasswd: Unable to open password file: %s"),
- strerror(errno));
-
- unlink(passwdnew);
-
- return (1);
- }
-
- setbuf(outfile, NULL);
-
- /*
- * Open the existing password file and create a new one...
- */
-
- infile = fopen(passwdmd5, "r");
- if (infile == NULL && errno != ENOENT && op != ADD)
- {
- _cupsLangPrintf(stderr, _("lppasswd: Unable to open password file: %s"),
- strerror(errno));
-
- fclose(outfile);
-
- unlink(passwdnew);
-
- return (1);
- }
-
- /*
- * Read lines from the password file; the format is:
- *
- * username:group:MD5-sum
- */
-
- error = 0;
- userline[0] = '\0';
- groupline[0] = '\0';
- md5line[0] = '\0';
-
- if (infile)
- {
- while (fgets(line, sizeof(line), infile) != NULL)
- {
- if (sscanf(line, "%16[^:]:%16[^:]:%32s", userline, groupline, md5line) != 3)
- continue;
-
- if (strcmp(username, userline) == 0 &&
- strcmp(groupname, groupline) == 0)
- break;
-
- if (fputs(line, outfile) == EOF)
- {
- _cupsLangPrintf(stderr,
- _("lppasswd: Unable to write to password file: %s"),
- strerror(errno));
- error = 1;
- break;
- }
- }
-
- if (!error)
- {
- while (fgets(line, sizeof(line), infile) != NULL)
- if (fputs(line, outfile) == EOF)
- {
- _cupsLangPrintf(stderr,
- _("lppasswd: Unable to write to password file: %s"),
- strerror(errno));
- error = 1;
- break;
- }
- }
- }
-
- if (op == CHANGE &&
- (strcmp(username, userline) || strcmp(groupname, groupline)))
- {
- _cupsLangPrintf(stderr,
- _("lppasswd: user \"%s\" and group \"%s\" do not exist."),
- username, groupname);
- error = 1;
- }
- else if (op != DELETE)
- {
- if (oldpass &&
- strcmp(httpMD5(username, "CUPS", oldpass, md5new), md5line) != 0)
- {
- _cupsLangPuts(stderr, _("lppasswd: Sorry, password doesn't match."));
- error = 1;
- }
- else
- {
- snprintf(line, sizeof(line), "%s:%s:%s\n", username, groupname,
- httpMD5(username, "CUPS", newpass, md5new));
- if (fputs(line, outfile) == EOF)
- {
- _cupsLangPrintf(stderr,
- _("lppasswd: Unable to write to password file: %s"),
- strerror(errno));
- error = 1;
- }
- }
- }
-
- /*
- * Close the files...
- */
-
- if (infile)
- fclose(infile);
-
- if (fclose(outfile) == EOF)
- error = 1;
-
- /*
- * Error out gracefully as needed...
- */
-
- if (error)
- {
- _cupsLangPuts(stderr, _("lppasswd: Password file not updated."));
-
- unlink(passwdnew);
-
- return (1);
- }
-
- /*
- * Save old passwd file
- */
-
- unlink(passwdold);
- if (link(passwdmd5, passwdold) && errno != ENOENT)
- {
- _cupsLangPrintf(stderr,
- _("lppasswd: failed to backup old password file: %s"),
- strerror(errno));
- unlink(passwdnew);
- return (1);
- }
-
- /*
- * Install new password file
- */
-
- if (rename(passwdnew, passwdmd5) < 0)
- {
- _cupsLangPrintf(stderr, _("lppasswd: failed to rename password file: %s"),
- strerror(errno));
- unlink(passwdnew);
- return (1);
- }
-
- return (0);
-}
-
-
-/*
- * 'usage()' - Show program usage.
- */
-
-static void
-usage(FILE *fp) /* I - File to send usage to */
-{
- if (getuid())
- _cupsLangPuts(fp, _("Usage: lppasswd [-g groupname]"));
- else
- _cupsLangPuts(fp,
- _("Usage: lppasswd [-g groupname] [username]\n"
- " lppasswd [-g groupname] -a [username]\n"
- " lppasswd [-g groupname] -x [username]"));
-
- exit(1);
-}
-
-
-/*
- * End of "$Id: lppasswd.c 10996 2013-05-29 11:51:34Z msweet $".
- */
diff --git a/systemv/lpstat.c b/systemv/lpstat.c
index 875929545..9c076cb25 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 12124 2014-08-28 15:37:22Z 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)
@@ -1315,8 +1270,8 @@ show_jobs(const char *dests, /* I - Destinations */
*reasons; /* Job state reasons attribute */
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 +1287,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 +1354,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)
@@ -1421,7 +1384,6 @@ show_jobs(const char *dests, /* I - Destinations */
username = NULL;
dest = NULL;
jobtime = 0;
- title = "no title";
message = NULL;
reasons = NULL;
@@ -1433,8 +1395,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)
@@ -1448,9 +1409,6 @@ show_jobs(const char *dests, /* I - Destinations */
else if (!strcmp(attr->name, "job-originating-user-name") &&
attr->value_tag == IPP_TAG_NAME)
username = attr->values[0].string.text;
- else if (!strcmp(attr->name, "job-name") &&
- attr->value_tag == IPP_TAG_NAME)
- title = attr->values[0].string.text;
else if (!strcmp(attr->name, "job-state-reasons") &&
attr->value_tag == IPP_TAG_KEYWORD)
reasons = attr;
@@ -1503,11 +1461,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 +1743,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 +1807,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 +1931,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 +2034,5 @@ show_scheduler(void)
/*
- * End of "$Id: lpstat.c 11890 2014-05-22 13:59:21Z msweet $".
+ * End of "$Id: lpstat.c 12124 2014-08-28 15:37:22Z 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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Add Class</H2>
<FORM METHOD="POST" ACTION="/admin">
@@ -37,4 +35,3 @@
</TABLE>
</FORM>
-</DIV> \ No newline at end of file
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Add Printer</H2>
<FORM METHOD="POST" ACTION="/admin">
@@ -44,4 +42,3 @@ Share This Printer</TD>
</TABLE>
</FORM>
-</DIV> \ No newline at end of file
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 @@
-<TABLE CLASS="indent" SUMMARY="Administration Tasks">
-<TR><TD VALIGN="TOP">
-
-<H2 CLASS="title">Printers</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="SUBMIT" VALUE="Add Printer"></FORM>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="find-new-printers"><INPUT TYPE="SUBMIT" VALUE="Find New Printers"></FORM>
-<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Manage Printers"></FORM>
-{have_samba?<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba"><INPUT TYPE="SUBMIT" VALUE="Export Printers to Samba"></FORM>:}
-</P>
-
-<H2 CLASS="title">Classes</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-class"><INPUT TYPE="SUBMIT" VALUE="Add Class"></FORM>
-<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Manage Classes"></FORM>
-</P>
-
-<H2 CLASS="title">Jobs</H2>
-
-<P>
-<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Manage Jobs"></FORM>
-</P>
-
-</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
-
-<H2 CLASS="title">Server</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server"><INPUT TYPE="SUBMIT" VALUE="Edit Configuration File"></FORM>
-<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="View Access Log"></FORM>
-<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="View Error Log"></FORM>
-<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="View Page Log"></FORM>
-</P>
-
-{SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
-<BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-
-{ADVANCEDSETTINGS?<P><B>Server Settings\:</B></P>
-
-<P><A HREF="/admin/">Advanced <SMALL>&#x25bc;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="HIDDEN" NAME="ADVANCEDSETTINGS" VALUE="YES">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Share printers connected to this system<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Max clients\:
-<INPUT TYPE="TEXT" NAME="MAX_CLIENTS" VALUE="{?max_clients}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Allow printing from the Internet<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Advertise web interface<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Allow remote administration<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Use Kerberos authentication (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Allow users to cancel any job (not just their own)<BR>
-<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Preserve job history<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximum jobs (0 for no limit)\:
-<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retain Metadata\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retain Documents\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Save debugging information for troubleshooting<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Max log file size\:
-<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
-
-:<P><B>Server Settings:</B></P>
-
-<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Advanced <SMALL>&#x25b6;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Share printers connected to this system<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Allow printing from the Internet<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Allow remote administration<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Use Kerberos authentication (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Allow users to cancel any job (not just their own)<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Save debugging information for troubleshooting</P>
-
-}
-<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Change Settings"></P>
-
-</FORM>}
-
-</TD></TR>
-</TABLE>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">RSS Subscriptions</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription"><INPUT TYPE="SUBMIT" VALUE="Add RSS Subscription"></FORM>
-</P>
-
-</DIV>
-
-{notify_subscription_id?<TABLE CLASS="list" SUMMARY="RSS Subscriptions">
-<THEAD><TR><TH>Name</TH><TH>Events</TH><TH>Queue Name</TH></TR></THEAD>
-<TBODY>{[notify_subscription_id]
-<TR><TD><A HREF="{notify_recipient_uri}">{notify_recipient_name}</A><BR>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-subscription"><INPUT TYPE="HIDDEN" NAME="notify_subscription_id" VALUE="{notify_subscription_id}"><INPUT TYPE="SUBMIT" VALUE="Cancel RSS Subscription"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:All Queues}</TD></TR>}
-</TBODY>
-</TABLE>:}
+<div class="row">
+ <div class="halves">
+ <H2 CLASS="title">Printers</H2>
+
+ <P>
+ <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="SUBMIT" VALUE="Add Printer"></FORM>
+ <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="find-new-printers"><INPUT TYPE="SUBMIT" VALUE="Find New Printers"></FORM>
+ <FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Manage Printers"></FORM>
+ {have_samba?<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba"><INPUT TYPE="SUBMIT" VALUE="Export Printers to Samba"></FORM>:}
+ </P>
+
+ <H2 CLASS="title">Classes</H2>
+
+ <P>
+ <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-class"><INPUT TYPE="SUBMIT" VALUE="Add Class"></FORM>
+ <FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Manage Classes"></FORM>
+ </P>
+
+ <H2 CLASS="title">Jobs</H2>
+
+ <P>
+ <FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Manage Jobs"></FORM>
+ </P>
+ </div>
+ <div class="halves">
+ <H2 CLASS="title">Server</H2>
+
+ <P>
+ <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server"><INPUT TYPE="SUBMIT" VALUE="Edit Configuration File"></FORM>
+ <FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="View Access Log"></FORM>
+ <FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="View Error Log"></FORM>
+ <FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="View Page Log"></FORM>
+ </P>
+
+ {SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
+ <BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
+
+ <FORM METHOD="POST" ACTION="/admin">
+ <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+
+ {ADVANCEDSETTINGS?<P><B>Server Settings\:</B></P>
+
+ <P><A HREF="/admin/">Advanced <SMALL>&#x25bc;</SMALL></A><BR>
+ <INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
+ <INPUT TYPE="HIDDEN" NAME="ADVANCEDSETTINGS" VALUE="YES">
+ <INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Share printers connected to this system<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Max clients\:
+ <INPUT TYPE="TEXT" NAME="MAX_CLIENTS" VALUE="{?max_clients}" SIZE="6"><BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Allow printing from the Internet<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Advertise web interface<BR>
+ <INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Allow remote administration<BR>
+ {have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Use Kerberos authentication (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
+ <INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Allow users to cancel any job (not just their own)<BR>
+ <INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Preserve job history<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximum jobs (0 for no limit)\:
+ <INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retain Metadata\:
+ <INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retain Documents\:
+ <INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
+ <INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Save debugging information for troubleshooting<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Max log file size\:
+ <INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
+
+ :<P><B>Server Settings:</B></P>
+
+ <P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Advanced <SMALL>&#x25b6;</SMALL></A><BR>
+ <INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
+ <INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Share printers connected to this system<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Allow printing from the Internet<BR>
+ <INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Allow remote administration<BR>
+ {have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Use Kerberos authentication (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
+ <INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Allow users to cancel any job (not just their own)<BR>
+ <INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Save debugging information for troubleshooting</P>
+
+ }
+ <P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Change Settings"></P>
+
+ </FORM>}
+ </div>
+</div>
+
+<div class="row">
+ <H2 CLASS="title">RSS Subscriptions</H2>
+
+ <P>
+ <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription"><INPUT TYPE="SUBMIT" VALUE="Add RSS Subscription"></FORM>
+ </P>
+
+ {notify_subscription_id?<TABLE CLASS="list" SUMMARY="RSS Subscriptions">
+ <THEAD><TR><TH>Name</TH><TH>Events</TH><TH>Queue Name</TH></TR></THEAD>
+ <TBODY>{[notify_subscription_id]
+ <TR><TD><A HREF="{notify_recipient_uri}">{notify_recipient_name}</A><BR>
+ <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-subscription"><INPUT TYPE="HIDDEN" NAME="notify_subscription_id" VALUE="{notify_subscription_id}"><INPUT TYPE="SUBMIT" VALUE="Cancel RSS Subscription"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:All Queues}</TD></TR>}
+ </TBODY>
+ </TABLE>:}
+</div> \ No newline at end of file
diff --git a/templates/ca/add-class.tmpl b/templates/ca/add-class.tmpl
deleted file mode 100644
index 8af7a7d05..000000000
--- a/templates/ca/add-class.tmpl
+++ /dev/null
@@ -1,40 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Afegeix una classe</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nom:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Pot contenir qualsevol car&agrave;cter excepte &laquo;/&raquo;, &laquo;#&raquo;, i espai)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Descripci&oacute;:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Una descripci&oacute; com ara &laquo;HP LaserJet de doble cara&raquo;)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Ubicaci&oacute;:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Una ubicaci&oacute; com ara &laquo;Laboratori 1&raquo;)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Membres:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Afegeix"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ca/add-printer.tmpl b/templates/ca/add-printer.tmpl
deleted file mode 100644
index f266a0be6..000000000
--- a/templates/ca/add-printer.tmpl
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Afegir una impressora</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
-{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nom:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
-<SMALL>(Pot contenir qualsevol car&agrave;cter excepte &laquo;/&raquo;, &laquo;#&raquo;, i espai)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Descripci&oacute;:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_INFO}"><BR>
-<SMALL>(Una descripci&oacute; com ara &laquo;HP LaserJet de doble cara&raquo;)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Ubicaci&oacute;:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_LOCATION}"><BR>
-<SMALL>(Una ubicaci&oacute; com ara &laquo;Laboratori 1&raquo;)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Connexi&oacute;:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Compartir:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Comparteix aquesta impressora</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ca/add-rss-subscription.tmpl b/templates/ca/add-rss-subscription.tmpl
deleted file mode 100644
index b195ac692..000000000
--- a/templates/ca/add-rss-subscription.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription">
-
-<H2 CLASS="title">Afegir una subscripci&oacute; RSS</H2>
-
-<TABLE SUMMARY="Add RSS Subscription form">
-<TR>
-<TH CLASS="label">Nom:</TH>
-<TD COLSPAN="5"><INPUT TYPE="TEXT" NAME="SUBSCRIPTION_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?SUBSCRIPTION_NAME}"><BR>
-<SMALL>(Pot contenir qualsevol car&agrave;cter excepte espai &laquo;/&raquo;, &laquo;?&raquo; i &laquo;#&raquo;)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Cua:</TH>
-<TD COLSPAN="5"><SELECT NAME="PRINTER_URI" SIZE="10"><OPTION VALUE="#ALL#"{?PRINTER_URI=#ALL#? SELECTED:}>Totes</OPTION>{[printer_name]<OPTION VALUE="{printer_uri_supported}"{?PRINTER_URI={printer_uri_supported}? SELECTED:}>{printer_name}</OPTION>}</SELECT></TD>
-</TR>
-<TR VALIGN="TOP">
-<TH CLASS="label">Esdeveniments:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CREATED" {?EVENT_JOB_CREATED}>Creaci&oacute; de tasca<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_COMPLETED" {?EVENT_JOB_COMPLETED}>Tasca completada<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_STOPPED" {?EVENT_JOB_STOPPED}>Tasca aturada<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>Modificaci&oacute; de les opcions de la tasca</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_STOPPED" {?EVENT_PRINTER_STOPPED}>Cua aturada<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_ADDED" {?EVENT_PRINTER_ADDED}>Cua afegida<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_MODIFIED" {?EVENT_PRINTER_MODIFIED}>Modificaci&oacute; de la cua<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_DELETED" {?EVENT_PRINTER_DELETED}>Eliminaci&oacute; de la cua</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STARTED" {?EVENT_SERVER_STARTED}>Inicialitzaci&oacute; del servidor<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STOPPED" {?EVENT_SERVER_STOPPED}>Aturada del servidor<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_RESTARTED" {?EVENT_SERVER_RESTARTED}>Servidor iniciat de nou<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_AUDIT" {?EVENT_SERVER_AUDIT}>Auditoria de seguretat del servidor</TD>
-</TR>
-<TR>
-<TH CLASS="label">Nombre m&agrave;xims d'esdeveniments al canal:</TH>
-<TD COLSPAN="5"><INPUT TYPE="NUMBER" NAME="MAX_EVENTS" SIZE="4" MAXLENGTH="4" VALUE="{MAX_EVENTS?{MAX_EVENTS}:20}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD COLSPAN="5"><INPUT TYPE="SUBMIT" VALUE="Afegeix"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/ca/admin.tmpl b/templates/ca/admin.tmpl
deleted file mode 100644
index ea3fc1ec0..000000000
--- a/templates/ca/admin.tmpl
+++ /dev/null
@@ -1,102 +0,0 @@
-<TABLE CLASS="indent" SUMMARY="Administration Tasks">
-<TR><TD VALIGN="TOP">
-
-<H2 CLASS="title">Impressores</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="SUBMIT" VALUE="Afegeix una impressora"></FORM>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="find-new-printers"><INPUT TYPE="SUBMIT" VALUE="Busca m&eacute;s impressores"></FORM>
-<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Gestiona les impressores"></FORM>
-{have_samba?<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba"><INPUT TYPE="SUBMIT" VALUE="Exporta les impressores al Samba"></FORM>:}
-</P>
-
-<H2 CLASS="title">Classes</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-class"><INPUT TYPE="SUBMIT" VALUE="Afegeix una classe"></FORM>
-<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Gestiona les classes"></FORM>
-</P>
-
-<H2 CLASS="title">Tasques</H2>
-
-<P>
-<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Gestiona les tasques"></FORM>
-</P>
-
-</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
-
-<H2 CLASS="title">Servidor</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server"><INPUT TYPE="SUBMIT" VALUE="Edita el fitxer de configuraci&oacute;"></FORM>
-<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Mostra el registre d'acc&eacute;s"></FORM>
-<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Mostra el registre d'errors"></FORM>
-<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Mostra la p&agrave;gina de registres"></FORM>
-</P>
-
-{SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
-<BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-
-{ADVANCEDSETTINGS?<P><B>Configuraci&oacute; del servidor\:</B></P>
-
-<P><A HREF="/admin/">Avan&ccedil;at <SMALL>&#x25bc;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="HIDDEN" NAME="ADVANCEDSETTINGS" VALUE="YES">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Comparteix les impressores connectades a aquest sistema<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Nombre m&agrave;xim de clients\:
-<INPUT TYPE="TEXT" NAME="MAX_CLIENTS" VALUE="{?max_clients}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Permet imprimir des d'Internet<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Anuncia la interf&iacute;cie web<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Permet l'administraci&oacute; remota<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Fes servir l'autenticaci&oacute; Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">PMF</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Permet als usuaris cancel&middot;lar qualsevol tasca (no nom&eacute;s les pr&ograve;pies)<BR>
-<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Conserva l'historial de tasques<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Nombre màxim de tasques (0 per ilimitat)\:
-<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Conserva les metadades\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Conserva els documents\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Desa la informaci&oacute; de depuraci&oacute; per la resoluci&oacute; de problemes<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mida m&agrave;xima de fitxer de registre\:
-<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
-
-:<P><B>Configuraci&oacute; del servidor:</B></P>
-
-<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Avan&ccedil;at <SMALL>&#x25b6;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Comparteix les impressores connectades a aquest sistema<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Permet imprimir des d'Internet<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Permet l'administraci&oacute; remota<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Fes servir l'autenticaci&oacute; Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">PMF</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Permet als usuaris cancel&middot;lar qualsevol tasca (no nom&eacute;s les pr&ograve;pies)<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Desa la informaci&oacute; de depuraci&oacute; per la resoluci&oacute; de problemes<BR>
-
-}
-<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Envia els canvis"></P>
-
-</FORM>}
-
-</TD></TR>
-</TABLE>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Subscripcions RSS</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription"><INPUT TYPE="SUBMIT" VALUE="Afegeix una subscripci&oacute; RSS"></FORM>
-</P>
-
-</DIV>
-
-{notify_subscription_id?<TABLE CLASS="list" SUMMARY="RSS Subscriptions">
-<THEAD><TR><TH>Nom</TH><TH>Esdeveniments</TH><TH>Nom de la cua</TH></TR></THEAD>
-<TBODY>{[notify_subscription_id]
-<TR><TD><A HREF="{notify_recipient_uri}">{notify_recipient_name}</A><BR>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-subscription"><INPUT TYPE="HIDDEN" NAME="notify_subscription_id" VALUE="{notify_subscription_id}"><INPUT TYPE="SUBMIT" VALUE="Cancel&middot;la la subscripci&oacute; RSS"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:All Queues}</TD></TR>}
-</TBODY>
-</TABLE>:}
diff --git a/templates/ca/choose-device.tmpl b/templates/ca/choose-device.tmpl
deleted file mode 100644
index a28cc92dd..000000000
--- a/templates/ca/choose-device.tmpl
+++ /dev/null
@@ -1,53 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifica {printer_name}:Add Printer}</H2>
-
-{CUPS_GET_DEVICES_DONE?<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-
-<TABLE>
-{op=add-printer?:<TR>
-<TH CLASS="label">Connexi&oacute; actual\:</TH>
-<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
-{current_device_uri}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Impressores locals\:</TH>
-<TD>
-{[device_uri]{device_class!network?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}}
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Impressores de xarxa descobertes\:</TH>
-<TD>
-{[device_uri]{device_class=network?{device_uri~[a-z]+://?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}:}}
-</TD>
-</TR>
-<TR>
-<TR>
-<TH CLASS="label">Altres impressores de xarxa\:</TH>
-<TD>
-{[device_uri]{device_class=network?{device_uri~[a-z]+://?:<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-}:}}
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-</TABLE>
-
-</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> Buscant impressores...</P>}
-
-</DIV>
diff --git a/templates/ca/choose-make.tmpl b/templates/ca/choose-make.tmpl
deleted file mode 100644
index 01bc6540b..000000000
--- a/templates/ca/choose-make.tmpl
+++ /dev/null
@@ -1,64 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifica {printer_name}:Add Printer}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Nom:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Descripci&oacute;:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Ubicaci&oacute;:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Connecci&oacute;:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Compartida:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?Do Not:{?printer_is_shared=0?Do Not:}} Comparteix aquesta impressora</TD>
-</TR>
-<TR>
-<TH CLASS="label">Fabricant:</TH>
-<TD>
-<SELECT NAME="PPD_MAKE" SIZE="10">
-{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>&nbsp;</TD>
-</TR>
-<TR>
-<TH CLASS="label">O indica un fitxer PPD:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
-TYPE="FILE" NAME="PPD_FILE"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?Add Printer:Modifica la impressora}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ca/choose-model.tmpl b/templates/ca/choose-model.tmpl
deleted file mode 100644
index d2adeb876..000000000
--- a/templates/ca/choose-model.tmpl
+++ /dev/null
@@ -1,60 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifica {printer_name}:Add Printer}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Nom:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Descripci&oacute;:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Ubicaci&oacute;:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Connecci&oacute;:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Compartida:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?Do Not:{?printer_is_shared=0?Do Not:}} Comparteix aquesta impressora</TD>
-</TR>
-<TR>
-<TH CLASS="label">Fabricant:</TH>
-<TD>{PPD_MAKE} <INPUT TYPE="SUBMIT" NAME="SELECT_MAKE" VALUE="Seleccioneu un altre fabricant"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Model:</TH>
-<TD>
-<SELECT NAME="PPD_NAME" SIZE="10">
-{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Current Driver - {current_make_and_model}</OPTION>:}
-{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
-}</SELECT>
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">O indica un fitxer PPD:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
-TYPE="FILE" NAME="PPD_FILE"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?Add Printer:Modifica la impressora}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ca/choose-serial.tmpl b/templates/ca/choose-serial.tmpl
deleted file mode 100644
index e86f5a88a..000000000
--- a/templates/ca/choose-serial.tmpl
+++ /dev/null
@@ -1,52 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifica {printer_name}:Add Printer}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Connexi&oacute;:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Velocitat:</TH>
-<TD><SELECT NAME="BAUDRATE">
-{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Paritat:</TH>
-<TD><SELECT NAME="PARITY">
-<OPTION VALUE="none" {?parity=none?SELECTED:}>Cap
-<OPTION VALUE="even" {?parity=even?SELECTED:}>Parell
-<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Senar
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Bits de dades:</TH>
-<TD><SELECT NAME="BITS">
-<OPTION {?bits=8?SELECTED:}>8
-<OPTION {?bits=7?SELECTED:}>7
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Control de flux:</TH>
-<TD><SELECT NAME="FLOW">
-<OPTION VALUE="none" {?flow=none?SELECTED:}>Cap
-<OPTION VALUE="soft" {?flow=soft?SELECTED:}>XON/XOFF (Programari)
-<OPTION VALUE="hard" {?flow=hard?SELECTED:}>RTS/CTS (Maquinari)
-<OPTION VALUE="dtrdsr" {?flow=dtrdsr?SELECTED:}>DTR/DSR (Maquinari)
-</SELECT></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ca/choose-uri.tmpl b/templates/ca/choose-uri.tmpl
deleted file mode 100644
index 630b1d3d7..000000000
--- a/templates/ca/choose-uri.tmpl
+++ /dev/null
@@ -1,43 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifica {printer_name}:Add Printer}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Connexi&oacute;:</TH>
-<TD><INPUT TYPE="URL" SIZE="60" MAXLENGTH="1023" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>Exemples:
-<PRE>
- http://hostname:631/ipp/
- http://hostname:631/ipp/port1
-
- ipp://hostname/ipp/
- ipp://hostname/ipp/port1
-
- lpd://hostname/queue
-
- socket://hostname
- socket://hostname:9100
-</PRE>
-
-<P>Llegiu <A HREF="/help/network.html" TARGET="_blank">"Impressores de xarxa"</A> per saber quin URI heu de fer servir amb la vostre impressora.</P>
-
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ca/class-added.tmpl b/templates/ca/class-added.tmpl
deleted file mode 100644
index 8e8347cb7..000000000
--- a/templates/ca/class-added.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Afegeix una classe</H2>
-
-<P>La classe <A HREF="/classes/{printer_name}">{printer_name}</A> s'ha afegit correctament.
-
-</DIV>
diff --git a/templates/ca/class-confirm.tmpl b/templates/ca/class-confirm.tmpl
deleted file mode 100644
index 905ac6f06..000000000
--- a/templates/ca/class-confirm.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Esborra la classe {printer_name}</H2>
-
-<P><B>Av&iacute;s:</B> Esteu segur que voleu esborrar la classe
-{printer_name}?</P>
-
-<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="op" VALUE="delete-class"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Esborra la classe"></FORM></P>
-
-</DIV>
diff --git a/templates/ca/class-deleted.tmpl b/templates/ca/class-deleted.tmpl
deleted file mode 100644
index 3f0035f8c..000000000
--- a/templates/ca/class-deleted.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Esborra la classe {printer_name}</H2>
-
-<P>La classe {printer_name} s'ha esborrat correctament.
-
-</DIV>
diff --git a/templates/ca/class-jobs-header.tmpl b/templates/ca/class-jobs-header.tmpl
deleted file mode 100644
index 90e640e44..000000000
--- a/templates/ca/class-jobs-header.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Tasques</H3>
-</DIV>
diff --git a/templates/ca/class-modified.tmpl b/templates/ca/class-modified.tmpl
deleted file mode 100644
index 6152ffa96..000000000
--- a/templates/ca/class-modified.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifica la classe {printer_name}</H2>
-
-<P>La classe <A HREF="/classes/{printer_name}">{printer_name}</A> s'ha modificat correctament.
-
-</DIV>
diff --git a/templates/ca/class.tmpl b/templates/ca/class.tmpl
deleted file mode 100644
index 6b39168b7..000000000
--- a/templates/ca/class.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?Inactiva:{printer_state=4?Processing:Paused}},
-{printer_is_accepting_jobs=0?No accepta tasques:Accepta tasques},
-{server_is_sharing_printers=0?No:{printer_is_shared=0?Not:}} Compartida{default_name={printer_name}?, Servidor per defecte:})</H2>
-
-<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
-<OPTION VALUE="">Manteniment</OPTION>
-<OPTION VALUE="print-test-page">Imprimeix una p&agrave;gina de prova</OPTION>
-{printer_state=5?<OPTION VALUE="start-class">Resume Class</OPTION>:<OPTION VALUE="stop-class">Pausa la classe</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Accepta Tasques</OPTION>:<OPTION VALUE="reject-jobs">No acceptis tasques</OPTION>}
-<OPTION VALUE="move-jobs">Mou totes les tasques</OPTION>
-<OPTION VALUE="purge-jobs">Cancel&middot;a totes les tasques</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
-<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="1">
-<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
-<OPTION VALUE="">Administraci&oacute;</OPTION>
-<OPTION VALUE="modify-class">Modifica la classe</OPTION>
-<OPTION VALUE="delete-class">Esborra la classe</OPTION>
-<OPTION VALUE="set-class-options">Aplica les opcions per defecte</OPTION>
-<OPTION VALUE="set-as-default">Configura com a servidor per defecte</OPTION>
-<OPTION VALUE="set-allowed-users">Gestiona els permisos dels usuaris</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Descripci&oacute;:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Ubicaci&oacute:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Membres:</TH><TD>{?member_uris=?None:{member_uris}}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Per defecte:</TH><TD>plantilles={job_sheets_default}
-mitj&agrave;={media_default?{media_default}:unknown}
-{sides_default?laterals={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
diff --git a/templates/ca/classes-header.tmpl b/templates/ca/classes-header.tmpl
deleted file mode 100644
index 47ad5ce9c..000000000
--- a/templates/ca/classes-header.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?No hi ha cap classe:Es mostr{total=1?a:en} {#printer_name} classe{total=1?:s} de {total}}.</P>
diff --git a/templates/ca/classes.tmpl b/templates/ca/classes.tmpl
deleted file mode 100644
index bb5acf500..000000000
--- a/templates/ca/classes.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-{#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="Class List">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Nom de la cua <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nom de la cua <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Descripci&oacute;</TH><TH>Ubicaci&oacute;</TH><TH>Membres</TH><TH>Estat</TH></TR>
-</THEAD>
-<TBODY>
-{[printer_name]
-<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{?member_uris=?None:{member_uris}}</TD><TD>{printer_state=3?Idle:{printer_state=4?Processing:Paused}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/ca/command.tmpl b/templates/ca/command.tmpl
deleted file mode 100644
index 5cfd89f12..000000000
--- a/templates/ca/command.tmpl
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{title} a {printer_name}</H2>
-
-<P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
-ALIGN="ABSMIDDLE" ALT="Busy Indicator"> }Comanda de tasca de la impressora
-{job_state=3?pendent:{job_state=4?pausat:
-{job_state=5?processant:{job_state=6?aturat:
-{job_state=7?cancel·lat:{job_state=8?abortat:completat}}}}}}{job_state=9?:{job_printer_state_message?,
-<EM>"{job_printer_state_message}"</EM>:}}</P>
-
-</DIV>
diff --git a/templates/ca/edit-config.tmpl b/templates/ca/edit-config.tmpl
deleted file mode 100644
index e6e08f126..000000000
--- a/templates/ca/edit-config.tmpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<SCRIPT TYPE="text/javascript">
-function reset_config()
-{
- document.cups.CUPSDCONF.value = "{?cupsdconf_default}";
-}
-</SCRIPT>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Edita el fitxer de configuraci&oacute;</H2>
-
-<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-
-<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
-
-<P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="Desa els canvis">
-<INPUT TYPE="BUTTON" VALUE="Fes servir el fitxer de configuaci&oacute; per defecte"
-onClick="reset_config();"></P>
-
-</FORM>
-
-</DIV>
diff --git a/templates/ca/error-op.tmpl b/templates/ca/error-op.tmpl
deleted file mode 100644
index 064e8b4c2..000000000
--- a/templates/ca/error-op.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} Error</H2>
-
-<P>Error:</P>
-
-<BLOCKQUOTE>Operaci&oacute; desconeguda "{op}"!</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/ca/error.tmpl b/templates/ca/error.tmpl
deleted file mode 100644
index f04f03afb..000000000
--- a/templates/ca/error.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} Error</H2>
-
-<P>{?message?{message}:Error}</P>
-
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/ca/header.tmpl.in b/templates/ca/header.tmpl.in
deleted file mode 100644
index 02cf58081..000000000
--- a/templates/ca/header.tmpl.in
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>{title} - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
- {refresh_page?<META HTTP-EQUIV="Refresh" CONTENT="{refresh_page}">:}
- <SCRIPT TYPE="text/javascript"><!--
- /* Show an error if cookies are disabled */
- function check_cookies() {
- if (!navigator.cookieEnabled) {
- document.getElementById('body').innerHTML = 'This page uses cookies to prevent common cross-site attacks. Please enable cookies in your browser.';
- }
- }
- --></SCRIPT>
-</HEAD>
-<BODY ONLOAD="check_cookies();">
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="unsel"><A HREF="/">&nbsp;&nbsp;Inici&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;Administraci&oacute;&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=classes?:un}sel"><A HREF="/classes/">&nbsp;&nbsp;Classes&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=help?:un}sel"><A HREF="/help/">&nbsp;&nbsp;Ajuda&nbsp;en&nbsp;l&iacute;nia&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;Tasques&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;Impressores&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-VALUE="{SECTION=help?{?QUERY}:}" AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-<TR><TD COLSPAN="9">&nbsp;</TD></TR>
-</TABLE>
-<DIV ID="body">
diff --git a/templates/ca/help-header.tmpl b/templates/ca/help-header.tmpl
deleted file mode 100644
index 54f2d228b..000000000
--- a/templates/ca/help-header.tmpl
+++ /dev/null
@@ -1,52 +0,0 @@
-<DIV CLASS="indent">
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
-{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
-
-<P ALIGN="CENTER"><B>Cerca a
-{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:tots els documents}}:</B> <INPUT
-TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER=""
-AUTOSAVE="org.cups.help" RESULTS="20">
-<INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="Cerca">
-<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Esborra"></P>
-
-</FORM>
-
-<!-- Bookmarks -->
-<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Contents">
-<TR><TD>
-
-<H3 CLASS="title">Documents d'ajuda en l&iacute;nia</H3>
-
-<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Tots els documents</A></P>
-<HR>
-
-{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
-}
-</TD></TR>
-</TABLE></DIV>
-
-{QUERY?<P>Resultats de la cerca a {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:tots els documents}}\:</P>
-{QTEXT?<UL>
-{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (in <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
-{QTEXT?</UL>:}
-:<P>No s'ha trobat cap coincid&egrave;ncia.</P>}
-<HR NOSHADE>:}
-{HELPTITLE?<H1>{HELPTITLE}</H1>
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Mostra una versi&oacute; per imprimir"></FORM>:
-
-<H1>Ajuda en l&iacute;nia</H1>
-
-<P>Aquesta &eacute;s la interf&iacute;cie d'ajuda en l&iacute;nia de CUPS.
-Introdu&iuml;u les paraules que vulgueu cercar aqu&iacute; dalt o feu clic als
-enlla&ccedil;os de la documentaci&oacute; per mostrar la informaci&oacute; de
-l'ajuda en l&iacute;nia.</P>
-
-<P>Si sou nou a CUPS, llegiu la p&agrave;gina &laquo;<a
-href="/help/overview.html">Descripci&oacute; general de CUPS</a>&raquo;. Els
-usuaris veterans haurien de llegir la p&agrave;gina &laquo;<a
-href="/help/whatsnew.html">Que hi ha de nou a CUPS 1.6</a>&raquo;.</P>
-
-<P>La <A HREF="http://www.cups.org/">p&agrave;gina web de CUPS</A> tamb&eacute;
-dona cont&eacute; molts recursos que inclouen f&ograve;rums, respostes a les preguntes m&eacute;s
-freq&uuml;ents, i un formulari per enviar informes d'errors i demanar noves
-caracter&iacute;stiques.</P>}
diff --git a/templates/ca/help-printable.tmpl b/templates/ca/help-printable.tmpl
deleted file mode 100644
index 2463c1630..000000000
--- a/templates/ca/help-printable.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>{HELPTITLE}</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups-printable.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
-</HEAD>
-<BODY>
diff --git a/templates/ca/help-trailer.tmpl b/templates/ca/help-trailer.tmpl
deleted file mode 100644
index 4c1ebed85..000000000
--- a/templates/ca/help-trailer.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-</DIV>
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 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Cancel&middot;la la tasca {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La tasca {job_id}</A> s'ha cancel&middot;lat.
-
-</DIV>
diff --git a/templates/ca/job-hold.tmpl b/templates/ca/job-hold.tmpl
deleted file mode 100644
index e89b97f4c..000000000
--- a/templates/ca/job-hold.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Pausa la tasca {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La tasca {job_id}</A> s'ha posat en pausa.
-
-</DIV>
diff --git a/templates/ca/job-move.tmpl b/templates/ca/job-move.tmpl
deleted file mode 100644
index 1bca28224..000000000
--- a/templates/ca/job-move.tmpl
+++ /dev/null
@@ -1,27 +0,0 @@
-<DIV CLASS="indent">
-
-<FORM METHOD="POST" ACTION="/{SECTION}/{job_id?:{printer_name}}">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
-
-<H2 CLASS="title">{job_id?Mou la tasca {job_id}:Mou totes les tasques}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nova destinaci&oacute;:</TH>
-<TD>
-<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
-{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{job_id?Mou la tasca:Mou les tasques}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-
-</DIV>
diff --git a/templates/ca/job-moved.tmpl b/templates/ca/job-moved.tmpl
deleted file mode 100644
index 1e538f9a1..000000000
--- a/templates/ca/job-moved.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{job_id?Mou la tasca {job_id}:Mou totes les tasques}</H2>
-
-<P>{job_id?<A HREF="/jobs/{job_id}">La tasca s'ha {job_id}</A>:Totes les tasques s'han} mogut a
-<A HREF="/{is_class?classes:printers}/{job_printer_name}">{job_printer_name}</A>.</P>
-
-</DIV>
diff --git a/templates/ca/job-release.tmpl b/templates/ca/job-release.tmpl
deleted file mode 100644
index db13e1d59..000000000
--- a/templates/ca/job-release.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Allibera la tasca {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La tasca {job_id}</A> s'ha alliberat.
-
-</DIV>
diff --git a/templates/ca/job-restart.tmpl b/templates/ca/job-restart.tmpl
deleted file mode 100644
index d40c1c239..000000000
--- a/templates/ca/job-restart.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Torna a imprimir la tasca {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La tasca {job_id}</A> s'ha tornat a imprimir.
-
-</DIV>
diff --git a/templates/ca/jobs-header.tmpl b/templates/ca/jobs-header.tmpl
deleted file mode 100644
index 3f785d5f5..000000000
--- a/templates/ca/jobs-header.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Mostra les tasques actives"></FORM>}
-{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="Mostra les tasques completades"></FORM>}
-{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Mostra totes les tasques"></FORM>}</DIV>
-
-<P ALIGN="CENTER">{total=0?No hi ha cap tasca:Es mostren {#job_id} tas{total=1?ca:ques} de {total} {?which_jobs=?active:{which_jobs=all?:completed}}}.</P>
diff --git a/templates/ca/jobs.tmpl b/templates/ca/jobs.tmpl
deleted file mode 100644
index 2ec88e126..000000000
--- a/templates/ca/jobs.tmpl
+++ /dev/null
@@ -1,36 +0,0 @@
-{#job_id=0?:
-<TABLE CLASS="list" SUMMARY="Job List">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> ID <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Nom</TH><TH>Usuari</TH><TH>Mida</TH><TH>P&agrave;gines</TH><TH>Estat</TH><TH>Control</TH></TR>
-</THEAD>
-<TBODY>
-{[job_id]
-<TR VALIGN="TOP">
-<TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id}{?phone? ({phone}):}&nbsp;</TD>
-<TD>{?job_name=?Desconegut:{job_name}}&nbsp;</TD>
-<TD>{?job_originating_user_name=?Withheld:{job_originating_user_name}}&nbsp;</TD>
-<TD>{job_k_octets}k&nbsp;</TD>
-<TD>{job_media_sheets_completed=0?Desconegudes:{?job_media_sheets_completed}}&nbsp;</TD>
-<TD>{job_state=3?pendent des de<BR>{time_at_creation}:{job_state=4?pausada des de<BR>{time_at_creation}:
-{job_state=5?processant des de<BR>{time_at_processing}:{job_state=6?aturada:
-{job_state=7?cancel&middot;lada el<BR>{time_at_completed}:{job_state=8?avortada:completada el<BR>{time_at_completed}}}}}}}&nbsp;{job_printer_state_message?<BR>
-<EM>"{job_printer_state_message}"</EM>:}</TD>
-<TD>
-{job_preserved>0?{job_state>5?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="restart-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}"><INPUT TYPE="SUBMIT" VALUE="Torna a imprimir"></FORM>:}:}
-{job_state=4?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="release-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Allibera"></FORM>:}
-{job_state=3?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Pausa"></FORM>:}
-{job_state<7?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Cancel&middot;la"></FORM>
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="move-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="SUBMIT" VALUE="Mou"></FORM>:}
-&nbsp;</TD>
-</TR>
-}
-</TBODY>
-</TABLE>
-}
diff --git a/templates/ca/list-available-printers.tmpl b/templates/ca/list-available-printers.tmpl
deleted file mode 100644
index b771b5b69..000000000
--- a/templates/ca/list-available-printers.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Impressores disponibles</H2>
-
-{#device_uri=0?<P>No s'ha trobat cap impressora.</P>
-:<UL>{[device_uri]
-<LI><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="HIDDEN" NAME="TEMPLATE_NAME" VALUE="{template_name}"><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="Local Printer"><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{device_make_and_model}"><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}"><INPUT TYPE="SUBMIT" VALUE="Afegeix aquesta impressora"></FORM>
-{device_make_and_model} ({device_info})</LI>
-}</UL>}
-
-</DIV>
diff --git a/templates/ca/modify-class.tmpl b/templates/ca/modify-class.tmpl
deleted file mode 100644
index 26a6284b5..000000000
--- a/templates/ca/modify-class.tmpl
+++ /dev/null
@@ -1,34 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifica la classe {printer_name}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Descripci&oacute;:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Ubicaci&oacute;:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Membres:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Modifica la classe"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ca/modify-printer.tmpl b/templates/ca/modify-printer.tmpl
deleted file mode 100644
index 3843016fb..000000000
--- a/templates/ca/modify-printer.tmpl
+++ /dev/null
@@ -1,42 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifica {printer_name}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Descripci&oacute;:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Una descripci&oacute; com ara &laquo;HP LaserJet de doble cara&raquo;)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Ubicaci&oacute;:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Una ubicaci&oacute; com ara &laquo;Laboratori 1&raquo;)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Connexi&oacute;:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Compartir:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Comparteix aquesta impressora</TD>
-</TR>
-<TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ca/norestart.tmpl b/templates/ca/norestart.tmpl
deleted file mode 100644
index 5cdb7c4d5..000000000
--- a/templates/ca/norestart.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Canvis en la configuraci&oacute;</H2>
-
-<P>El servidor no s'ha tornat a iniciar per que no hi ha canvis
-a la configuraci&oacute;...</P>
-
-</DIV>
diff --git a/templates/ca/option-boolean.tmpl b/templates/ca/option-boolean.tmpl
deleted file mode 100644
index e832ee102..000000000
--- a/templates/ca/option-boolean.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD>
-{[choices]<INPUT TYPE="RADIO" NAME="{keyword-1}" {choices={defchoice-1}?CHECKED:} VALUE="{choices}">{text}}
-</TD>
-</TR>
diff --git a/templates/ca/option-conflict.tmpl b/templates/ca/option-conflict.tmpl
deleted file mode 100644
index 59b63e9fc..000000000
--- a/templates/ca/option-conflict.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<P><B>Error:</B> Les seg&uuml;ents opcions entren en conflicte:</P>
-
-<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
-}</UL>
-
-<P>Canvieu algunes de les opcions per resoldre els conflictes.</P>
diff --git a/templates/ca/option-header.tmpl b/templates/ca/option-header.tmpl
deleted file mode 100644
index 464726a50..000000000
--- a/templates/ca/option-header.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="tab" ID="{group_id}">
-
-<H3 ALIGN="CENTER">{group}</H3>
-
-<TABLE WIDTH="100%">
diff --git a/templates/ca/option-pickmany.tmpl b/templates/ca/option-pickmany.tmpl
deleted file mode 100644
index 0da75e5d2..000000000
--- a/templates/ca/option-pickmany.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT></TD>
-</TR>
diff --git a/templates/ca/option-pickone.tmpl b/templates/ca/option-pickone.tmpl
deleted file mode 100644
index 1b3c271cb..000000000
--- a/templates/ca/option-pickone.tmpl
+++ /dev/null
@@ -1,18 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" ID="select-{keyword}" ONCHANGE="update_paramtable('{keyword}')">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT>
-{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
-<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
-<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Punts</OPTION>
-<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Mil&middot;l&iacute;metres</OPTION>
-<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Cent&iacute;metres</OPTION>
-<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Polzades</OPTION>
-<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Peus</OPTION>
-<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Metres</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
-}</TABLE>
-</TD>:}
-</TR>
diff --git a/templates/ca/option-trailer.tmpl b/templates/ca/option-trailer.tmpl
deleted file mode 100644
index 11c401131..000000000
--- a/templates/ca/option-trailer.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-</TABLE>
-
-<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="Configura els par&agrave;metres per defecte"></P>
-
-</DIV>
diff --git a/templates/ca/pager.tmpl b/templates/ca/pager.tmpl
deleted file mode 100644
index ab134f1d4..000000000
--- a/templates/ca/pager.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TABLE CLASS="inset" SUMMARY="Paging Bar">
-<TR>
- <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Anterior"></FORM>:&nbsp;}</TD>
- <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Seg&uuml;ent &#x25b6;"></FORM>:&nbsp;}</TD>
-</TR>
-</TABLE>
diff --git a/templates/ca/printer-accept.tmpl b/templates/ca/printer-accept.tmpl
deleted file mode 100644
index 0bd2a57fc..000000000
--- a/templates/ca/printer-accept.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Accepta tasques a {is_class?la classe: la impressora} {printer_name}</H2>
-
-<P>{is_class?La classe:La impressora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-ara accepta tasques.</P>
-
-</DIV>
diff --git a/templates/ca/printer-added.tmpl b/templates/ca/printer-added.tmpl
deleted file mode 100644
index b5850aa29..000000000
--- a/templates/ca/printer-added.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Afegeix una impressora</H2>
-
-<P>La impressora <A HREF="/printers/{printer_name}">{printer_name}</A> s'ha afegit
-correctament.
-
-</DIV>
diff --git a/templates/ca/printer-configured.tmpl b/templates/ca/printer-configured.tmpl
deleted file mode 100644
index 20880da9a..000000000
--- a/templates/ca/printer-configured.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">S'ha aplicat la configuraci&oacute; per defecte a {printer_name}</H2>
-
-<P>Les opcions per defecte de la {OP=set-class-options?classe <A HREF="/classes/{printer_name}">:impressora <A HREF="/printers/{printer_name}">}{printer_name}</A> s'han establert correctament.
-</DIV>
diff --git a/templates/ca/printer-confirm.tmpl b/templates/ca/printer-confirm.tmpl
deleted file mode 100644
index 916bc309b..000000000
--- a/templates/ca/printer-confirm.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Elimina la impressora {printer_name}</H2>
-
-<P><B>Av&iacute;s:</B> Esteu segur que voleu eliminar la impressora
-{printer_name}?</P>
-
-<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="delete-printer"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Elimina la impressora"></FORM></P>
-
-</DIV>
diff --git a/templates/ca/printer-default.tmpl b/templates/ca/printer-default.tmpl
deleted file mode 100644
index 76f7ddf65..000000000
--- a/templates/ca/printer-default.tmpl
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Estableix {is_class?Class:Printer} {printer_name} com a predeterminada</H2>
-
-<P>{is_class?Class:Printer} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-s'ha establert com a impressora predeterminada.</P>
-
-<BLOCKQUOTE><B>Nota:</B> Qualsevol usuari que hagi estat establert mitjan&ccedil;ant
-la comanda <TT>lpoptions</TT> sobreescriur&agrave; aquesta configuraci&oacute; predeterminada.</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/ca/printer-deleted.tmpl b/templates/ca/printer-deleted.tmpl
deleted file mode 100644
index 695ab6731..000000000
--- a/templates/ca/printer-deleted.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Elimina la impressora {printer_name}</H2>
-
-<P>La impressora {printer_name} s'ha eliminat correctament.
-
-</DIV>
diff --git a/templates/ca/printer-jobs-header.tmpl b/templates/ca/printer-jobs-header.tmpl
deleted file mode 100644
index 90e640e44..000000000
--- a/templates/ca/printer-jobs-header.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Tasques</H3>
-</DIV>
diff --git a/templates/ca/printer-modified.tmpl b/templates/ca/printer-modified.tmpl
deleted file mode 100644
index efbbc3b96..000000000
--- a/templates/ca/printer-modified.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifica la impressora {printer_name}</H2>
-
-<P>La impressora <A HREF="/printers/{printer_name}">{printer_name}</A> s'ha
-modificat correctament.
-
-</DIV>
diff --git a/templates/ca/printer-purge.tmpl b/templates/ca/printer-purge.tmpl
deleted file mode 100644
index 980d883eb..000000000
--- a/templates/ca/printer-purge.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Cancel&middot;la les tasques de {is_class?la classe:la impressora} {printer_name}</H2>
-
-<P>S'han cancel&middot;lat totes les tasques de{is_class?la classe:la impressora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>.</P>
-
-</DIV>
diff --git a/templates/ca/printer-reject.tmpl b/templates/ca/printer-reject.tmpl
deleted file mode 100644
index 6269cf2c4..000000000
--- a/templates/ca/printer-reject.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Refusa les tasques a {is_class?la classe:la impressora} {printer_name}</H2>
-
-<P>{is_class?La classe:la impressora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-no accepta tasques a partir d'ara.</P>
-
-</DIV>
diff --git a/templates/ca/printer-start.tmpl b/templates/ca/printer-start.tmpl
deleted file mode 100644
index 6986fd4ba..000000000
--- a/templates/ca/printer-start.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Repr&egrave;n {is_class?la classe:la impressora} {printer_name}</H2>
-
-<P>{is_class?La classe:La impressora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-ha repr&egrave;s les tasques.</P>
-
-</DIV>
diff --git a/templates/ca/printer-stop.tmpl b/templates/ca/printer-stop.tmpl
deleted file mode 100644
index af89331bc..000000000
--- a/templates/ca/printer-stop.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Pausa {is_class?la classe:la impressora} {printer_name}</H2>
-
-<P>{is_class?La classe:La impressora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-s'ha posat en pausa.</P>
-
-</DIV>
diff --git a/templates/ca/printer.tmpl b/templates/ca/printer.tmpl
deleted file mode 100644
index 7e026cb0d..000000000
--- a/templates/ca/printer.tmpl
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?Inactiva:{printer_state=4?Processant:En pausa}},
-{printer_is_accepting_jobs=0?Refusa les tasques:Accepta tasques},
-{server_is_sharing_printers=0?No:{printer_is_shared=0?No:}} Compartida{default_name={printer_name}?, Servidor per defecte:})</H2>
-
-<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
-<OPTION VALUE="">Manteniment</OPTION>
-<OPTION VALUE="print-test-page">Imprimeix una p&agrave;gina de prova</OPTION>
-{printer_commands~.*Clean.*?<OPTION VALUE="clean-print-heads">Neteja els cap&ccedil;als</OPTION>:}
-{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">Imprimeix la p&agrave;gina de prova pr&ograve;pia</OPTION>:}
-{printer_state=5?<OPTION VALUE="start-printer">Repr&egrave;n la impressora</OPTION>:<OPTION VALUE="stop-printer">Pausa la impressora</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Accepta tasques</OPTION>:<OPTION VALUE="reject-jobs">Refusa les tasques</OPTION>}
-<OPTION VALUE="move-jobs">Mou totes les tasques</OPTION>
-<OPTION VALUE="purge-jobs">Cancel&middot;la totes les tasques</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
-<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
-<OPTION VALUE="">Administraci&oacute;</OPTION>
-<OPTION VALUE="modify-printer">Modifica la impressora</OPTION>
-<OPTION VALUE="delete-printer">Elimina la impressora</OPTION>
-<OPTION VALUE="set-printer-options">Torna a les opcions per defecte</OPTION>
-<OPTION VALUE="set-as-default">Configura com a servidor per defecte</OPTION>
-<OPTION VALUE="set-allowed-users">Configura els permisos dels usuaris</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Descripci&oacute;:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Ubicaci&oacute;:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Controlador:</TH><TD>{printer_make_and_model} ({color_supported=1?color:escala de grisos}{sides_supported?, impressió a doble cara:})<BR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Connexi&oacute;:</TH><TD>{device_uri}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Configuraci&oacute; per defecte:</TH><TD>Fulls de tasques={job_sheets_default}
-safata={media_default?{media_default}:desconeguda}
-{sides_default?cares={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
diff --git a/templates/ca/printers-header.tmpl b/templates/ca/printers-header.tmpl
deleted file mode 100644
index 52eaa2ff4..000000000
--- a/templates/ca/printers-header.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Cap impressora:Es mostr{#printer_name=1?a:en} {#printer_name} de {total} impressor{total=1?a:es}}.</P>
diff --git a/templates/ca/printers.tmpl b/templates/ca/printers.tmpl
deleted file mode 100644
index d978c17bf..000000000
--- a/templates/ca/printers.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-{#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="Printer List">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Nom <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nom <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Descripci&oacute;</TH><TH>Ubicaci&oacute</TH><TH>Marca i model</TH><TH>Estat</TH></TR>
-</THEAD>
-<TBODY>
-{[printer_name]
-<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{printer_make_and_model}</TD><TD>{printer_state=3?Preparada:{printer_state=4?Processant:En pausa}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/ca/restart.tmpl b/templates/ca/restart.tmpl
deleted file mode 100644
index 4e3983f7a..000000000
--- a/templates/ca/restart.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Canvis en la configuraci&oacute;</H2>
-
-<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> Espereu mentre es torna a iniciar el servidor...</P>
-
-</DIV>
diff --git a/templates/ca/samba-export.tmpl b/templates/ca/samba-export.tmpl
deleted file mode 100644
index 2b16e1eef..000000000
--- a/templates/ca/samba-export.tmpl
+++ /dev/null
@@ -1,55 +0,0 @@
-<SCRIPT TYPE="text/javascript"><!--
-function select_printers() {
- var list = document.export_samba.EXPORT_NAME;
- var sel = document.export_samba.EXPORT_ALL.checked;
-
- for (i = 0; i < list.length; i ++) {
- list.options[i].selected = sel;
- }
-}
---></SCRIPT>
-
-<FORM METHOD="POST" ACTION="/admin/" NAME="export_samba">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
-
-<H2 CLASS="title">Exporta les impressores al Samba</H2>
-
-{error?<P>No es pot exportar les impressores al Samba\:</P>
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-<P>Consulteu el fitxer <A HREF="/admin/log/error_log"
-TARGET="_blank">error_log</A> per obtenir m&eacute;s informaci&oacute;.</P>:
-<P>Aquesta p&agrave;gina us permet exportar les impressores al Samba per tal que
-els clients de Windows puguin accedir-hi a trav&eacute;s de les icones <VAR>Xarxa
-ve&iuml;na</VAR> o <VAR>Llocs de la xarxa</VAR> del seu
-escriptori. Abans heu d'instal&middot;lar el controlador d'impressores Windows PostScript
-tal i com s'explica a la p&agrave;gina del manual <A
-HREF="/help/man-cupsaddsmb.html"
-TARGET="_blank">cupsaddsmb(8)</A>.</P>}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Impressores:</TH>
-<TD>
-<SELECT NAME="EXPORT_NAME" SIZE="10" MULTIPLE>
-{[printer_name]<OPTION VALUE="{printer_name}"{export_all? SELECTED:{printer_export? SELECTED:}}>{printer_name}}
-</SELECT><BR>
-<INPUT TYPE="CHECKBOX" NAME="EXPORT_ALL"{export_all? CHECKED:}
-onChange="select_printers()"> Exporta totes les impressores
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Nom de l'usuari del Samba:</TH>
-<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (necessari)</TD>
-</TR>
-<TR>
-<TH CLASS="label">Contrasenya del Samba:</TH>
-<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (necess&agrave;ria)</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Exporta les impressores al Samba"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/ca/samba-exported.tmpl b/templates/ca/samba-exported.tmpl
deleted file mode 100644
index 7ea98570e..000000000
--- a/templates/ca/samba-exported.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P>Les impressores s'han exportat correctament al Samba.</P>
diff --git a/templates/ca/search.tmpl b/templates/ca/search.tmpl
deleted file mode 100644
index b76afaa2f..000000000
--- a/templates/ca/search.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
-{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
-{ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
-
-<P ALIGN="CENTER"><B>Cerca a les
-{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?classes:{SECTION=jobs?tasques:impressores}}}:</B>
-<INPUT TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER="" AUTOSAVE="org.cups.{SECTION}" RESULTS="20"> <INPUT
-TYPE="SUBMIT" VALUE="Cerca"> <INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Neteja"></P>
-
-</FORM>
diff --git a/templates/ca/set-printer-options-header.tmpl b/templates/ca/set-printer-options-header.tmpl
deleted file mode 100644
index b4a4a4e52..000000000
--- a/templates/ca/set-printer-options-header.tmpl
+++ /dev/null
@@ -1,26 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Aplica les opcions per defecte a {printer_name}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{HAVE_AUTOCONFIGURE?<INPUT TYPE="SUBMIT" NAME="AUTOCONFIGURE" VALUE="Demana a la impressora les opcions per defecte">:}
-
-<SCRIPT TYPE="text/javascript"><!--
-function update_paramtable(option)
-{
- var cb = document.getElementById("select-" + option)
- var paramstable = document.getElementById(option + "-params");
- if (cb.value == "Custom")
- paramstable.style.display = "table";
- else
- paramstable.style.display = "none";
-}
---></SCRIPT>
-
-<H3 CLASS="title">{[group_id]
-<A HREF="#{group_id}">{group}</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</H3>
-
-<DIV CLASS="tabs">
diff --git a/templates/ca/set-printer-options-trailer.tmpl b/templates/ca/set-printer-options-trailer.tmpl
deleted file mode 100644
index 11adc7012..000000000
--- a/templates/ca/set-printer-options-trailer.tmpl
+++ /dev/null
@@ -1,16 +0,0 @@
-</DIV>
-
-<SCRIPT TYPE="text/javascript"><!--
-// Hide custom options parameters for browsers that understand Javascript
-var paramtables = document.getElementsByName("paramtable");
-for (var i = 0; i < paramtables.length; i++)
-{
- var opt = paramtables[i].id.substr(0, paramtables[i].id.lastIndexOf("-"));
- var cb = document.getElementById("select-" + opt);
- if (cb.value != "Custom")
- paramtables[i].style.display = "none";
-}
---></SCRIPT>
-</FORM>
-
-</DIV>
diff --git a/templates/ca/subscription-added.tmpl b/templates/ca/subscription-added.tmpl
deleted file mode 100644
index 067132fe5..000000000
--- a/templates/ca/subscription-added.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>La subscripci&oacute; {subscription_name} s'ha afegit correctament.</P>
-
-</DIV>
diff --git a/templates/ca/subscription-canceled.tmpl b/templates/ca/subscription-canceled.tmpl
deleted file mode 100644
index 8a93b4cd5..000000000
--- a/templates/ca/subscription-canceled.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>La subscripci&oacute; #{notify_subscription_id} s'ha cancel&middot;lat.</P>
-
-</DIV>
diff --git a/templates/ca/test-page.tmpl b/templates/ca/test-page.tmpl
deleted file mode 100644
index 2a4b77601..000000000
--- a/templates/ca/test-page.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Imprimeix una p&agrave;gina de prova a {printer_name}</H2>
-
-<P>S'ha enviat la p&agrave;gina de prova; l'ID de la tasca &eacute;s <A HREF="/{SECTION}/{printer_name}">
-{printer_name}-{job_id}</A>.</P>
-
-</DIV>
diff --git a/templates/ca/trailer.tmpl b/templates/ca/trailer.tmpl
deleted file mode 100644
index bbe238ee1..000000000
--- a/templates/ca/trailer.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-</DIV></TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS i el logotip de CUPS s&oacute;n marques registrades per
-<A HREF="http://www.apple.com">Apple Inc.</A> CUPS t&eacute; copyright 2007-2014 Apple
-Inc. Tots els drets reservats.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/templates/ca/users.tmpl b/templates/ca/users.tmpl
deleted file mode 100644
index cceeb0241..000000000
--- a/templates/ca/users.tmpl
+++ /dev/null
@@ -1,30 +0,0 @@
-<DIV CLASS="indent">
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{OP}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-{IS_CLASS?<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="{IS_CLASS}">:}
-
-<H2 CLASS="title">Usuaris amb permisos per {printer_name}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Usuaris:</TH>
-<TD>
-<INPUT TYPE='TEXT' NAME='users' SIZE='60' VALUE='{?requesting_user_name_allowed}{?requesting_user_name_denied}'>
-<BR>
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-allowed' {requesting_user_name_allowed?checked:}>Permet imprimir a aquests usuaris
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>No permetis imprimir a aquests usuaris
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>
-<INPUT TYPE="SUBMIT" VALUE="Aplica els permisos">
-</TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">{op=modify-printer?Modify {printer_name}:Add Printer}</H2>
{CUPS_GET_DEVICES_DONE?<FORM METHOD="POST" ACTION="/admin">
@@ -49,5 +47,3 @@ VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
ALT="Busy Indicator"> Looking for printers...</P>}
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">{op=modify-printer?Modify {printer_name}:Add Printer}</H2>
<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
@@ -61,4 +59,3 @@ TYPE="FILE" NAME="PPD_FILE"></TD>
</TABLE>
</FORM>
-</DIV> \ No newline at end of file
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">{op=modify-printer?Modify {printer_name}:Add Printer}</H2>
<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
@@ -57,4 +55,3 @@ TYPE="FILE" NAME="PPD_FILE"></TD>
</TABLE>
</FORM>
-</DIV> \ No newline at end of file
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">{op=modify-printer?Modify {printer_name}:Add Printer}</H2>
<FORM METHOD="POST" ACTION="/admin">
@@ -49,4 +47,3 @@
</TABLE>
</FORM>
-</DIV> \ No newline at end of file
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">{op=modify-printer?Modify {printer_name}:Add Printer}</H2>
<FORM METHOD="POST" ACTION="/admin">
@@ -41,4 +39,3 @@ Printers"</A> for the correct URI to use with your printer.</P>
</TABLE>
</FORM>
-</DIV> \ No newline at end of file
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Add Class</H2>
<P>Class <A HREF="/classes/{printer_name}">{printer_name}</A> has been added
successfully.
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Delete Class {printer_name}</H2>
<P><B>Warning:</B> Are you sure you want to delete class
{printer_name}?</P>
<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="op" VALUE="delete-class"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Delete Class"></FORM></P>
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Delete Class {printer_name}</H2>
<P>Class {printer_name} has been deleted successfully.
-
-</DIV> \ No newline at end of file
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 @@
-<DIV CLASS="indent">
<H3 CLASS="title">Jobs</H3>
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Modify Class {printer_name}</H2>
<P>Class <A HREF="/classes/{printer_name}">{printer_name}</A> has been
modified successfully.
-
-</DIV> \ No newline at end of file
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 @@
-<DIV CLASS="indent">
<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
({printer_state=3?Idle:{printer_state=4?Processing:Paused}},
{printer_is_accepting_jobs=0?Rejecting Jobs:Accepting Jobs},
@@ -40,5 +39,3 @@
media={media_default?{media_default}:unknown}
{sides_default?sides={sides_default}:}</TD></TR>
</TABLE>
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">{title} On {printer_name}</H2>
<P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
@@ -8,5 +6,3 @@ ALIGN="ABSMIDDLE" ALT="Busy Indicator"> }Printer command job
{job_state=5?processing:{job_state=6?stopped:
{job_state=7?canceled:{job_state=8?aborted:completed}}}}}}{job_state=9?:{job_printer_state_message?,
<EM>"{job_printer_state_message}"</EM>:}}</P>
-
-</DIV>
diff --git a/templates/cs/add-class.tmpl b/templates/cs/add-class.tmpl
deleted file mode 100644
index 06bb9addf..000000000
--- a/templates/cs/add-class.tmpl
+++ /dev/null
@@ -1,40 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Přidat třídu</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Název:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Může obsahovat libovolné tisknutelné znaky kromě "/", "#" a mezery)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Popis:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Srozumitelný popis)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Umístění:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Srozumitelný popis umístění)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Älenové:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Přidat třídu"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/cs/add-printer.tmpl b/templates/cs/add-printer.tmpl
deleted file mode 100644
index 1e557d2e1..000000000
--- a/templates/cs/add-printer.tmpl
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Přidat tiskárnu</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
-{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Název:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
-<SMALL>(Může obsahovat libovolné tisknutelné znaky kromě "/", "#" a mezery)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Popis:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_INFO}"><BR>
-<SMALL>(Srozumitelný popis)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Umístění:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_LOCATION}"><BR>
-<SMALL>(Srozumitelný popis umístění)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Připojení:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Sdílení:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-sdílet tuto tiskárnu</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="PokraÄovat"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/cs/add-rss-subscription.tmpl b/templates/cs/add-rss-subscription.tmpl
deleted file mode 100644
index d1568f7c1..000000000
--- a/templates/cs/add-rss-subscription.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription">
-
-<H2 CLASS="title">Přidat RSS předplatné</H2>
-
-<TABLE SUMMARY="Add RSS Subscription form">
-<TR>
-<TH CLASS="label">Název:</TH>
-<TD COLSPAN="5"><INPUT TYPE="TEXT" NAME="SUBSCRIPTION_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?SUBSCRIPTION_NAME}"><BR>
-<SMALL>(Může obsahovat libovolné tisknutelné znaky s výjimkou mezery, "/", "?" a "#")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Fronta:</TH>
-<TD COLSPAN="5"><SELECT NAME="PRINTER_URI" SIZE="10"><OPTION VALUE="#ALL#"{?PRINTER_URI=#ALL#? SELECTED:}>VÅ¡echny fronty</OPTION>{[printer_name]<OPTION VALUE="{printer_uri_supported}"{?PRINTER_URI={printer_uri_supported}? SELECTED:}>{printer_name}</OPTION>}</SELECT></TD>
-</TR>
-<TR VALIGN="TOP">
-<TH CLASS="label">Události:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CREATED" {?EVENT_JOB_CREATED}>Vytvoření úlohy<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_COMPLETED" {?EVENT_JOB_COMPLETED}>DokonÄení úlohy<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_STOPPED" {?EVENT_JOB_STOPPED}>Zastavení úlohy<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>Změna parametrů úlohy</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_STOPPED" {?EVENT_PRINTER_STOPPED}>Zastavení fronty<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_ADDED" {?EVENT_PRINTER_ADDED}>Přidání fronty<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_MODIFIED" {?EVENT_PRINTER_MODIFIED}>Změna fronty<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_DELETED" {?EVENT_PRINTER_DELETED}>Vymazání fronty</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STARTED" {?EVENT_SERVER_STARTED}>Start serveru<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STOPPED" {?EVENT_SERVER_STOPPED}>Zastavení serveru<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_RESTARTED" {?EVENT_SERVER_RESTARTED}>Restart serveru<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_AUDIT" {?EVENT_SERVER_AUDIT}>Audit bezpeÄnosti serveru</TD>
-</TR>
-<TR>
-<TH CLASS="label">Maximální poÄet zobrazených událostí:</TH>
-<TD COLSPAN="5"><INPUT TYPE="NUMBER" NAME="MAX_EVENTS" SIZE="4" MAXLENGTH="4" VALUE="{MAX_EVENTS?{MAX_EVENTS}:20}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD COLSPAN="5"><INPUT TYPE="SUBMIT" VALUE="Přidat RSS předplatné"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/cs/admin.tmpl b/templates/cs/admin.tmpl
deleted file mode 100644
index 247a10f48..000000000
--- a/templates/cs/admin.tmpl
+++ /dev/null
@@ -1,102 +0,0 @@
-<TABLE CLASS="indent" SUMMARY="Administration Tasks">
-<TR><TD VALIGN="TOP">
-
-<H2 CLASS="title">Tiskárny</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="SUBMIT" VALUE="Přidat tiskárnu"></FORM>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="find-new-printers"><INPUT TYPE="SUBMIT" VALUE="Hledat nové tiskárny"></FORM>
-<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Správa tiskáren"></FORM>
-{have_samba?<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba"><INPUT TYPE="SUBMIT" VALUE="Export tiskáren do Samby"></FORM>:}
-</P>
-
-<H2 CLASS="title">Třídy</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-class"><INPUT TYPE="SUBMIT" VALUE="Přidat třídu"></FORM>
-<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Správa tříd"></FORM>
-</P>
-
-<H2 CLASS="title">Úlohy</H2>
-
-<P>
-<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Správa úloh"></FORM>
-</P>
-
-</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
-
-<H2 CLASS="title">Server</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server"><INPUT TYPE="SUBMIT" VALUE="Úprava konfiguraÄního souboru"></FORM>
-<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Prohlížení Access Log"></FORM>
-<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Prohlížení Error Log"></FORM>
-<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Prohlížení Page Log"></FORM>
-</P>
-
-{SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
-<BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-
-{ADVANCEDSETTINGS?<P><B>Nastavení serveru\:</B></P>
-
-<P><A HREF="/admin/">Skrýt rozšířené nastavení <SMALL>&#x25bc;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="HIDDEN" NAME="ADVANCEDSETTINGS" VALUE="YES">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Sdílet tiskárny připojené k tomuto systému<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximální poÄet klientů\:
-<INPUT TYPE="TEXT" NAME="MAX_CLIENTS" VALUE="{?max_clients}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Povolit tisk z internetu<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Nabízet webové rozhraní<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Povolit vzdálenou správu<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Používat ověřování Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">Äasté dotazy</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Povolit uživatelům zrušit jakoukoliv úlohu (nejen vlastní)<BR>
-<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Zachovat historii úloh<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximální poÄet úloh (0 bez omezení)\:
-<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Zachovat metadata\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Zachovat dokumenty\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Uložit informace o ladění pro řešení problémů<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximální velikost log souboru\:
-<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
-
-:<P><B>Nastavení serveru:</B></P>
-
-<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Zobrazit rozšířené nastavení <SMALL>&#x25b6;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Sdílet tiskárny připojené k tomuto systému<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Povolit tisk z internetu<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Povolit vzdálenou správu<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Používat ověřování Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">Äasté dotazy</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Povolit uživatelům zrušit jakoukoliv úlohu (nejen vlastní)<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Uložit informace o ladění pro řešení problémů</P>
-
-}
-<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Změnit nastavení"></P>
-
-</FORM>}
-
-</TD></TR>
-</TABLE>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">RSS předplatné</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription"><INPUT TYPE="SUBMIT" VALUE="Přidat RSS předplatné"></FORM>
-</P>
-
-</DIV>
-
-{notify_subscription_id?<TABLE CLASS="list" SUMMARY="RSS Subscriptions">
-<THEAD><TR><TH>Název</TH><TH>Události</TH><TH>Název fronty</TH></TR></THEAD>
-<TBODY>{[notify_subscription_id]
-<TR><TD><A HREF="{notify_recipient_uri}">{notify_recipient_name}</A><BR>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-subscription"><INPUT TYPE="HIDDEN" NAME="notify_subscription_id" VALUE="{notify_subscription_id}"><INPUT TYPE="SUBMIT" VALUE="Zrušit RSS předplatné"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:Všechny fronty}</TD></TR>}
-</TBODY>
-</TABLE>:}
diff --git a/templates/cs/choose-device.tmpl b/templates/cs/choose-device.tmpl
deleted file mode 100644
index aa8a649c7..000000000
--- a/templates/cs/choose-device.tmpl
+++ /dev/null
@@ -1,53 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Úprava tiskárny {printer_name}:Přidat tiskárnu}</H2>
-
-{CUPS_GET_DEVICES_DONE?<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-
-<TABLE>
-{op=add-printer?:<TR>
-<TH CLASS="label">Aktuální připojení\:</TH>
-<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
-{current_device_uri}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Místní tiskárny\:</TH>
-<TD>
-{[device_uri]{device_class!network?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}}
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Nalezené síťové tiskárny\:</TH>
-<TD>
-{[device_uri]{device_class=network?{device_uri~[a-z]+://?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}:}}
-</TD>
-</TR>
-<TR>
-<TR>
-<TH CLASS="label">Ostatní síťové tiskárny\:</TH>
-<TD>
-{[device_uri]{device_class=network?{device_uri~[a-z]+://?:<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-}:}}
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="PokraÄovat"></TD>
-</TR>
-</TABLE>
-
-</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> Hledání tiskáren ...</P>}
-
-</DIV>
diff --git a/templates/cs/choose-make.tmpl b/templates/cs/choose-make.tmpl
deleted file mode 100644
index f018f0e3b..000000000
--- a/templates/cs/choose-make.tmpl
+++ /dev/null
@@ -1,64 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Úprava tiskárny {printer_name}:Přidat tiskárnu}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Název:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Popis:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Umístění:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Připojení:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Sdílení:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?ne:{?printer_is_shared=0?ne:}}sdílená</TD>
-</TR>
-<TR>
-<TH CLASS="label">Výrobce:</TH>
-<TD>
-<SELECT NAME="PPD_MAKE" SIZE="10">
-{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="PokraÄovat"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>&nbsp;</TD>
-</TR>
-<TR>
-<TH CLASS="label">Nebo vybrat soubor PPD:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
-TYPE="FILE" NAME="PPD_FILE"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?Přidat tiskárnu:Upravit tiskárnu}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/cs/choose-model.tmpl b/templates/cs/choose-model.tmpl
deleted file mode 100644
index 75fc46f25..000000000
--- a/templates/cs/choose-model.tmpl
+++ /dev/null
@@ -1,60 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Úprava tiskárny {printer_name}:Přidat tiskárnu}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Název:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Popis:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Umístění:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Připojení:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Sdílení:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?ne:{?printer_is_shared=0?ne:}}sdílená</TD>
-</TR>
-<TR>
-<TH CLASS="label">Výrobce:</TH>
-<TD>{PPD_MAKE} <INPUT TYPE="SUBMIT" NAME="SELECT_MAKE" VALUE="Vybrat jiného výrobce"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Model:</TH>
-<TD>
-<SELECT NAME="PPD_NAME" SIZE="10">
-{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Aktuální: {current_make_and_model}</OPTION>:}
-{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
-}</SELECT>
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Nebo vybrat soubor PPD:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
-TYPE="FILE" NAME="PPD_FILE"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?Přidat tiskárnu:Upravit tiskárnu}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/cs/choose-serial.tmpl b/templates/cs/choose-serial.tmpl
deleted file mode 100644
index 593bcdde3..000000000
--- a/templates/cs/choose-serial.tmpl
+++ /dev/null
@@ -1,52 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Úprava tiskárny {printer_name}:Přidat tiskárnu}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Připojení:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Přenosová rychlost:</TH>
-<TD><SELECT NAME="BAUDRATE">
-{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Parita:</TH>
-<TD><SELECT NAME="PARITY">
-<OPTION VALUE="none" {?parity=none?SELECTED:}>Žádná
-<OPTION VALUE="even" {?parity=even?SELECTED:}>Sudá
-<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Lichá
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Datových bitů:</TH>
-<TD><SELECT NAME="BITS">
-<OPTION {?bits=8?SELECTED:}>8
-<OPTION {?bits=7?SELECTED:}>7
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Řízení toku dat:</TH>
-<TD><SELECT NAME="FLOW">
-<OPTION VALUE="none" {?flow=none?SELECTED:}>Žádné
-<OPTION VALUE="soft" {?flow=soft?SELECTED:}>XON/XOFF (software)
-<OPTION VALUE="hard" {?flow=hard?SELECTED:}>RTS/CTS (hardware)
-<OPTION VALUE="dtrdsr" {?flow=dtrdsr?SELECTED:}>DTR/DSR (hardware)
-</SELECT></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="PokraÄovat"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/cs/choose-uri.tmpl b/templates/cs/choose-uri.tmpl
deleted file mode 100644
index ad919b751..000000000
--- a/templates/cs/choose-uri.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Úprava tiskárny {printer_name}:Přidat tiskárnu}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Připojení:</TH>
-<TD><INPUT TYPE="URL" SIZE="60" MAXLENGTH="1023" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>Příklady:
-<PRE>
- http://hostname:631/ipp/
- http://hostname:631/ipp/port1
-
- ipp://hostname/ipp/
- ipp://hostname/ipp/port1
-
- lpd://hostname/queue
-
- socket://hostname
- socket://hostname:9100
-</PRE>
-
-<P>Viz. <A HREF="/help/network.html" TARGET="_blank">"Síťové tiskárny"</A> pro zadání správného URI tiskárny.</P>
-
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="PokraÄovat"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
-
diff --git a/templates/cs/class-added.tmpl b/templates/cs/class-added.tmpl
deleted file mode 100644
index d64430337..000000000
--- a/templates/cs/class-added.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Přidat třídu</H2>
-
-<P>Třída <A HREF="/classes/{printer_name}">{printer_name}</A> byla úspěšně přidána.
-
-</DIV>
diff --git a/templates/cs/class-confirm.tmpl b/templates/cs/class-confirm.tmpl
deleted file mode 100644
index 87c16140f..000000000
--- a/templates/cs/class-confirm.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Výmaz třídy {printer_name}</H2>
-
-<P><B>Varování:</B> Opravdu chcete vymazat třídu
-{printer_name}?</P>
-
-<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="op" VALUE="delete-class"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Vymazat třídu"></FORM></P>
-
-</DIV>
diff --git a/templates/cs/class-deleted.tmpl b/templates/cs/class-deleted.tmpl
deleted file mode 100644
index e2fb7f8f7..000000000
--- a/templates/cs/class-deleted.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Výmaz třídy {printer_name}</H2>
-
-<P>Třída {printer_name} byla úspěšně vymazána.
-
-</DIV> \ No newline at end of file
diff --git a/templates/cs/class-jobs-header.tmpl b/templates/cs/class-jobs-header.tmpl
deleted file mode 100644
index d8142d1cd..000000000
--- a/templates/cs/class-jobs-header.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Úlohy</H3>
-</DIV>
diff --git a/templates/cs/class-modified.tmpl b/templates/cs/class-modified.tmpl
deleted file mode 100644
index 131fd08f3..000000000
--- a/templates/cs/class-modified.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Úprava třídy {printer_name}</H2>
-
-<P>Třída <A HREF="/classes/{printer_name}">{printer_name}</A> byla úspěšně upravena.
-
-</DIV> \ No newline at end of file
diff --git a/templates/cs/class.tmpl b/templates/cs/class.tmpl
deleted file mode 100644
index 39f72bf9f..000000000
--- a/templates/cs/class.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?Äeká:{printer_state=4?tiskne:pauza}},
-{printer_is_accepting_jobs=0?ne:}přijímá úlohy,
-{server_is_sharing_printers=0?není:{printer_is_shared=0?není:}} sdílení{default_name={printer_name}?, výchozí server:})</H2>
-
-<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
-<OPTION VALUE="">Údržba</OPTION>
-<OPTION VALUE="print-test-page">Tisk zkušební stránky</OPTION>
-{printer_state=5?<OPTION VALUE="start-class">Obnovení třídy</OPTION>:<OPTION VALUE="stop-class">Pozastavení třídy</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Příjem úloh</OPTION>:<OPTION VALUE="reject-jobs">Odmítnutí úloh</OPTION>}
-<OPTION VALUE="move-jobs">Přesun všech úloh</OPTION>
-<OPTION VALUE="purge-jobs">Výmaz všech úloh</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
-<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="1">
-<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
-<OPTION VALUE="">Administrace</OPTION>
-<OPTION VALUE="modify-class">Úprava třídy</OPTION>
-<OPTION VALUE="delete-class">Výmaz třídy</OPTION>
-<OPTION VALUE="set-class-options">Nastavení parametrů</OPTION>
-<OPTION VALUE="set-as-default">Nastavení jako výchozí na serveru</OPTION>
-<OPTION VALUE="set-allowed-users">Nastavení přístupu uživatelů</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Popis:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Umístění:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Členové:</TH><TD>{?member_uris=?None:{member_uris}}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Nastavení:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:unknown}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
diff --git a/templates/cs/classes-header.tmpl b/templates/cs/classes-header.tmpl
deleted file mode 100644
index 5bfeeee7f..000000000
--- a/templates/cs/classes-header.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Žádné třídy:Zobrazení {#printer_name} z {total} tříd{total=1?y:}}.</P>
diff --git a/templates/cs/classes.tmpl b/templates/cs/classes.tmpl
deleted file mode 100644
index 02d32a638..000000000
--- a/templates/cs/classes.tmpl
+++ /dev/null
@@ -1,12 +0,0 @@
-{#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="Class List">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Název fromty <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Název fronty <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Popis</TH><TH>Umístění</TH><TH>Členové</TH><TH>Stav</TH></TR>
-</THEAD>
-<TBODY>
-{[printer_name]
-<TR><TD><A
-HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{?member_uris=?Žádný:{member_uris}}</TD><TD>{printer_state=3?Čeká:{printer_state=4?Tiskne:Pauza}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/cs/command.tmpl b/templates/cs/command.tmpl
deleted file mode 100644
index b2a4fd47a..000000000
--- a/templates/cs/command.tmpl
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{title} u {printer_name}</H2>
-
-<P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
-ALIGN="ABSMIDDLE" ALT="Busy Indicator"> }Stav úlohy
-{job_state=3?Äeká:{job_state=4?pozastaveno:
-{job_state=5?zpracováváno:{job_state=6?zastaveno:
-{job_state=7?zruÅ¡eno:{job_state=8?zruÅ¡eno:dokonÄeno}}}}}}{job_state=9?:{job_printer_state_message?,
-<EM>"{job_printer_state_message}"</EM>:}}.</P>
-
-</DIV>
diff --git a/templates/cs/edit-config.tmpl b/templates/cs/edit-config.tmpl
deleted file mode 100644
index ab3bf652f..000000000
--- a/templates/cs/edit-config.tmpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<SCRIPT TYPE="text/javascript">
-function reset_config()
-{
- document.cups.CUPSDCONF.value = "{?cupsdconf_default}";
-}
-</SCRIPT>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Úprava konfiguraÄního souboru</H2>
-
-<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-
-<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
-
-<P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="Uložit změny">
-<INPUT TYPE="BUTTON" VALUE="Použít výchozí konfiguraÄní soubor"
-onClick="reset_config();"></P>
-
-</FORM>
-
-</DIV>
diff --git a/templates/cs/error-op.tmpl b/templates/cs/error-op.tmpl
deleted file mode 100644
index 636edc2d7..000000000
--- a/templates/cs/error-op.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Chyba {?title} u {?printer_name}</H2>
-
-<P>Chyba:</P>
-
-<BLOCKQUOTE>Neznámá operace "{op}"!</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/cs/error.tmpl b/templates/cs/error.tmpl
deleted file mode 100644
index 7ee1926a5..000000000
--- a/templates/cs/error.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Chyba {?title} u {?printer_name}</H2>
-
-<P>{?message?{message}:Chyba}:</P>
-
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/cs/header.tmpl.in b/templates/cs/header.tmpl.in
deleted file mode 100644
index 739e51ddc..000000000
--- a/templates/cs/header.tmpl.in
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//CZ" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>{title} - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
- {refresh_page?<META HTTP-EQUIV="Refresh" CONTENT="{refresh_page}">:}
-</HEAD>
-<BODY>
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="unsel"><A HREF="/">&nbsp;&nbsp;Hlavní strana&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;Administrace&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=classes?:un}sel"><A HREF="/classes/">&nbsp;&nbsp;Třídy tiskáren&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=help?:un}sel"><A HREF="/help/">&nbsp;&nbsp;Nápověda&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;Úlohy&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;Tiskárny&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Hledat"
-VALUE="{SECTION=help?{?QUERY}:}" AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-<TR><TD COLSPAN="9">&nbsp;</TD></TR>
-</TABLE>
diff --git a/templates/cs/help-header.tmpl b/templates/cs/help-header.tmpl
deleted file mode 100644
index fe8dca847..000000000
--- a/templates/cs/help-header.tmpl
+++ /dev/null
@@ -1,48 +0,0 @@
-<DIV CLASS="indent">
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
-{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
-
-<P ALIGN="CENTER"><B>Hledat v{HELPTITLE? {HELPTITLE}:{TOPIC? {TOPIC}:e všech dokumentech}}:</B> <INPUT
-TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER=""
-AUTOSAVE="org.cups.help" RESULTS="20">
-<INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="Hledat">
-<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Smazat"></P>
-
-</FORM>
-
-<!-- Bookmarks -->
-<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Contents">
-<TR><TD>
-
-<H3 CLASS="title">Dokumenty nápovědy</H3>
-
-<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">VÅ¡echny dokumenty</A></P>
-<HR>
-
-{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
-}
-</TD></TR>
-</TABLE></DIV>
-
-{QUERY?<P>Výsledky hledání v{HELPFILE? {HELPTITLE}:{TOPIC? {TOPIC}:e všech dokumentech}}\:</P>
-{QTEXT?<UL>
-{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (v <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
-{QTEXT?</UL>:}
-:<P>Nebyl nalezen záznam.</P>}
-<HR NOSHADE>:}
-{HELPTITLE?<H1>{HELPTITLE}</H1>
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Zobrazit verzi pro tisk"></FORM>:
-
-<H1>Nápověda</H1>
-
-<P>Toto je rozhraní nápovědy CUPS. Zadejte hledané slovo nebo klikněte na
-některý z odkazů dokumentace k zobrazení nápovědy.</P>
-
-<P>Pokud jste nový uživatel programu CUPS, pÅ™eÄtÄ›te si stránku "<a
-href="/help/overview.html">Popis programu CUPS</a>". Zkušení uživatelé by
-si mÄ›li pÅ™eÄíst stránku "<a href="/help/whatsnew.html">Co je nového v CUPS 1.6</a>".</P>
-
-<P><A HREF="http://www.cups.org/">Hlavní strana programu CUPS</A> také
-poskytuje mnoho zdrojů, vÄetnÄ› uživatelského diskuzního fóra, odpovÄ›dí
-na Äasto kladené otázky a formuláře pro odesílání zpráv o chybách a
-požadavky na nové funkce.</P>}
diff --git a/templates/cs/help-printable.tmpl b/templates/cs/help-printable.tmpl
deleted file mode 100644
index 763a98b7c..000000000
--- a/templates/cs/help-printable.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//CS" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>{HELPTITLE}</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups-printable.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
-</HEAD>
-<BODY>
diff --git a/templates/cs/help-trailer.tmpl b/templates/cs/help-trailer.tmpl
deleted file mode 100644
index 4c1ebed85..000000000
--- a/templates/cs/help-trailer.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-</DIV>
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 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Zrušit úlohu {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Úloha {job_id}</A> byla zrušena.
-
-</DIV>
diff --git a/templates/cs/job-hold.tmpl b/templates/cs/job-hold.tmpl
deleted file mode 100644
index f0e7b6310..000000000
--- a/templates/cs/job-hold.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Pozastavení úlohy {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Úloha {job_id}</A> byla pozastavena.
-
-</DIV>
diff --git a/templates/cs/job-move.tmpl b/templates/cs/job-move.tmpl
deleted file mode 100644
index b706ca837..000000000
--- a/templates/cs/job-move.tmpl
+++ /dev/null
@@ -1,27 +0,0 @@
-<DIV CLASS="indent">
-
-<FORM METHOD="POST" ACTION="/{SECTION}/{job_id?:{printer_name}}">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
-
-<H2 CLASS="title">{job_id?Přesun úlohy {job_id}:Přesun všech úloh}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nová tiskárna:</TH>
-<TD>
-<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
-{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Přesunout {job_id?úlohu:úlohy}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-
-</DIV>
diff --git a/templates/cs/job-moved.tmpl b/templates/cs/job-moved.tmpl
deleted file mode 100644
index 40e5eef83..000000000
--- a/templates/cs/job-moved.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{job_id?Přesun úlohy {job_id}:Přesun všech úloh}</H2>
-
-<P>{job_id?<A HREF="/jobs/{job_id}">Úloha přesunuta {job_id}</A>:Všechny úlohy přesunuty} na tiskárnu
-<A HREF="/{is_class?classes:printers}/{job_printer_name}">{job_printer_name}</A>.</P>
-
-</DIV>
diff --git a/templates/cs/job-release.tmpl b/templates/cs/job-release.tmpl
deleted file mode 100644
index 199c7989a..000000000
--- a/templates/cs/job-release.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Uvolnit úlohu {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Úloha {job_id}</A> byla uvolněna k tisku.
-
-</DIV>
diff --git a/templates/cs/job-restart.tmpl b/templates/cs/job-restart.tmpl
deleted file mode 100644
index 56c113a11..000000000
--- a/templates/cs/job-restart.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Opakovaný tisk úlohy {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Úloha {job_id}</A> byla znovu spuštěna.
-
-</DIV>
diff --git a/templates/cs/jobs-header.tmpl b/templates/cs/jobs-header.tmpl
deleted file mode 100644
index 591d4ce1f..000000000
--- a/templates/cs/jobs-header.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Aktivní úlohy"></FORM>}
-{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="DokonÄené úlohy"></FORM>}
-{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Všechny úlohy"></FORM>}</DIV>
-
-<P ALIGN="CENTER">{total=0?Žádné úlohy:Zobrazení {#job_id} z {total} {?which_jobs=?aktivních:{which_jobs=all?:dokonÄených}} {total=1?úloha:úloh}}.</P>
diff --git a/templates/cs/jobs.tmpl b/templates/cs/jobs.tmpl
deleted file mode 100644
index 75b483a6f..000000000
--- a/templates/cs/jobs.tmpl
+++ /dev/null
@@ -1,37 +0,0 @@
-{#job_id=0?:
-<TABLE CLASS="list" SUMMARY="Job List">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> ID <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Jméno</TH><TH>Uživatel</TH><TH>Velikost</TH><TH>PoÄet stran</TH><TH>Stav</TH><TH>Řízení</TH></TR>
-</THEAD>
-<TBODY>
-{[job_id]
-<TR VALIGN="TOP">
-<TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id}{?phone? ({phone}):}&nbsp;</TD>
-<TD>{?job_name=?Neznámý:{job_name}}&nbsp;</TD>
-<TD>{?job_originating_user_name=?Neznámý:{job_originating_user_name}}&nbsp;</TD>
-<TD>{job_k_octets} k&nbsp;</TD>
-<TD>{job_media_sheets_completed=0?Neznámý:{?job_media_sheets_completed}}&nbsp;</TD>
-<TD>{job_state=3?Čeká od<BR>{time_at_creation}:{job_state=4?Pozastaveno od<BR>{time_at_creation}:
-{job_state=5?Zpracováváno od<BR>{time_at_processing}:{job_state=6?Zastaveno:
-{job_state=7?ZruÅ¡eno v<BR>{time_at_completed}:{job_state=8?ZruÅ¡eno:DokonÄeno v<BR>{time_at_completed}}}}}}}&nbsp;{job_printer_state_message?<BR>
-<EM>"{job_printer_state_message}"</EM>:}</TD>
-<TD>
-{job_preserved>0?{job_state>5?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="restart-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}"><INPUT TYPE="SUBMIT"
-VALUE="Opakovat tisk"></FORM>:}:}
-{job_state=4?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="release-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Uvolnit"></FORM>:}
-{job_state=3?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Pozastavit"></FORM>:}
-{job_state<7?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Zrušit"></FORM>
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="move-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="SUBMIT" VALUE="Přesunout"></FORM>:}
-&nbsp;</TD>
-</TR>
-}
-</TBODY>
-</TABLE>
-}
diff --git a/templates/cs/list-available-printers.tmpl b/templates/cs/list-available-printers.tmpl
deleted file mode 100644
index 8c01b27ef..000000000
--- a/templates/cs/list-available-printers.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Dostupné tiskárny</H2>
-
-{#device_uri=0?<P>Žádné tiskárny nenalezeny.</P>
-:<UL>{[device_uri]
-<LI><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="HIDDEN" NAME="TEMPLATE_NAME" VALUE="{template_name}"><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE=""><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{device_make_and_model}"><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}"><INPUT TYPE="SUBMIT" VALUE="Přidat tiskárnu"></FORM>
-{device_make_and_model} ({device_info})</LI>
-}</UL>}
-
-</DIV>
diff --git a/templates/cs/modify-class.tmpl b/templates/cs/modify-class.tmpl
deleted file mode 100644
index 9e4881a22..000000000
--- a/templates/cs/modify-class.tmpl
+++ /dev/null
@@ -1,34 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Úprava třídy {printer_name}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Popis:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Umístění:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Členové:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Upravit třídu"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/cs/modify-printer.tmpl b/templates/cs/modify-printer.tmpl
deleted file mode 100644
index 8fc48ed6f..000000000
--- a/templates/cs/modify-printer.tmpl
+++ /dev/null
@@ -1,42 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Úprava tiskárny {printer_name}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Popis:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Srozumitelný popis)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Location:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Srozumitelný popis umístění)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Připojení:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Sdílení:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-sdílet tuto tiskárnu</TD>
-</TR>
-<TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="PokraÄovat"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/cs/norestart.tmpl b/templates/cs/norestart.tmpl
deleted file mode 100644
index 4f09e8b23..000000000
--- a/templates/cs/norestart.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Změna nastavení</H2>
-
-<P>Server nebyl dosud restartován, protože nebyly provedeny žádné změny v
-konfiguraci ...</P>
-
-</DIV>
diff --git a/templates/cs/option-boolean.tmpl b/templates/cs/option-boolean.tmpl
deleted file mode 100644
index e832ee102..000000000
--- a/templates/cs/option-boolean.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD>
-{[choices]<INPUT TYPE="RADIO" NAME="{keyword-1}" {choices={defchoice-1}?CHECKED:} VALUE="{choices}">{text}}
-</TD>
-</TR>
diff --git a/templates/cs/option-conflict.tmpl b/templates/cs/option-conflict.tmpl
deleted file mode 100644
index 8c6832690..000000000
--- a/templates/cs/option-conflict.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<P><B>Chyba:</B> Následující parametry jsou v rozporu:</P>
-
-<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
-}</UL>
-
-<P>Prosím změňte jeden nebo více parametrů pro vyřešení problému.</P>
diff --git a/templates/cs/option-header.tmpl b/templates/cs/option-header.tmpl
deleted file mode 100644
index 464726a50..000000000
--- a/templates/cs/option-header.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="tab" ID="{group_id}">
-
-<H3 ALIGN="CENTER">{group}</H3>
-
-<TABLE WIDTH="100%">
diff --git a/templates/cs/option-pickmany.tmpl b/templates/cs/option-pickmany.tmpl
deleted file mode 100644
index 0da75e5d2..000000000
--- a/templates/cs/option-pickmany.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT></TD>
-</TR>
diff --git a/templates/cs/option-pickone.tmpl b/templates/cs/option-pickone.tmpl
deleted file mode 100644
index 9c7e2a2b3..000000000
--- a/templates/cs/option-pickone.tmpl
+++ /dev/null
@@ -1,18 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" ID="select-{keyword}" ONCHANGE="update_paramtable('{keyword}')">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT>
-{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
-<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
-<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Body</OPTION>
-<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Millimetry</OPTION>
-<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Centimetry</OPTION>
-<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Palce</OPTION>
-<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Stopy</OPTION>
-<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Metry</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
-}</TABLE>
-</TD>:}
-</TR>
diff --git a/templates/cs/option-trailer.tmpl b/templates/cs/option-trailer.tmpl
deleted file mode 100644
index 916de2fec..000000000
--- a/templates/cs/option-trailer.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-</TABLE>
-
-<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="Nastavit parametry"></P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/cs/pager.tmpl b/templates/cs/pager.tmpl
deleted file mode 100644
index 35a7a9263..000000000
--- a/templates/cs/pager.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TABLE CLASS="inset" SUMMARY="Paging Bar">
-<TR>
- <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Předchozí"></FORM>:&nbsp;}</TD>
- <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Další &#x25b6;"></FORM>:&nbsp;}</TD>
-</TR>
-</TABLE>
diff --git a/templates/cs/printer-accept.tmpl b/templates/cs/printer-accept.tmpl
deleted file mode 100644
index c81faefea..000000000
--- a/templates/cs/printer-accept.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Příjem úloh u {is_class?třídy:tiskárny} {printer_name}</H2>
-
-<P>{is_class?Třída:Tiskárna} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-nyní přijímá úlohy.</P>
-
-</DIV>
diff --git a/templates/cs/printer-added.tmpl b/templates/cs/printer-added.tmpl
deleted file mode 100644
index ac59405ed..000000000
--- a/templates/cs/printer-added.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Přidat tiskárnu</H2>
-
-<P>Tiskárna <A HREF="/printers/{printer_name}">{printer_name}</A> byla úspěšně přidána.
-
-</DIV>
diff --git a/templates/cs/printer-configured.tmpl b/templates/cs/printer-configured.tmpl
deleted file mode 100644
index c002232f2..000000000
--- a/templates/cs/printer-configured.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Nastavení parametrů u {printer_name}</H2>
-
-<P>{OP=set-class-options?Class <A HREF="/classes/{printer_name}">:Tiskárna <A HREF="/printers/{printer_name}">}{printer_name}</A>
-byla úspěšně nastavena.
-
-</DIV>
diff --git a/templates/cs/printer-confirm.tmpl b/templates/cs/printer-confirm.tmpl
deleted file mode 100644
index 5ace8a6c2..000000000
--- a/templates/cs/printer-confirm.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Výmaz tiskárny {printer_name}</H2>
-
-<P><B>Varování:</B> Opravdu chcete vymazat tiskárnu
-{printer_name}?</P>
-
-<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="delete-printer"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Vymazat tiskárnu"></FORM></P>
-
-</DIV>
diff --git a/templates/cs/printer-default.tmpl b/templates/cs/printer-default.tmpl
deleted file mode 100644
index d066cc088..000000000
--- a/templates/cs/printer-default.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Nastavení {is_class?třídy:tiskárny} {printer_name} jako výchozí</H2>
-
-<P>{is_class?Třída:Tiskárna} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-byla nastavena jako výchozí na serveru.</P>
-
-<BLOCKQUOTE><B>Pozn.</B> libovolný uživatel může pomocí příkazu <TT>lpoptions</TT> přepsat toto nastavení.</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/cs/printer-deleted.tmpl b/templates/cs/printer-deleted.tmpl
deleted file mode 100644
index 76c8b22a8..000000000
--- a/templates/cs/printer-deleted.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Výmaz tiskárny {printer_name}</H2>
-
-<P>Tiskárna {printer_name} byla úspěšně vymazána.
-
-</DIV>
diff --git a/templates/cs/printer-jobs-header.tmpl b/templates/cs/printer-jobs-header.tmpl
deleted file mode 100644
index d8142d1cd..000000000
--- a/templates/cs/printer-jobs-header.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Úlohy</H3>
-</DIV>
diff --git a/templates/cs/printer-modified.tmpl b/templates/cs/printer-modified.tmpl
deleted file mode 100644
index 3dd91d255..000000000
--- a/templates/cs/printer-modified.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Úprava tiskárny {printer_name}</H2>
-
-<P>Tiskárna <A HREF="/printers/{printer_name}">{printer_name}</A> byla
-úspěšně upravena.
-
-</DIV> \ No newline at end of file
diff --git a/templates/cs/printer-purge.tmpl b/templates/cs/printer-purge.tmpl
deleted file mode 100644
index b85195fdd..000000000
--- a/templates/cs/printer-purge.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Výmaz úloh u {is_class?třídy:tiskárny} {printer_name}</H2>
-
-<P>U {is_class?třídy:tiskárny} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-byly vymazány všechny úlohy.</P>
-
-</DIV>
-
diff --git a/templates/cs/printer-reject.tmpl b/templates/cs/printer-reject.tmpl
deleted file mode 100644
index 6ce184bc8..000000000
--- a/templates/cs/printer-reject.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Odmítnutí úloh u {is_class?třídy:tiskárny} {printer_name}</H2>
-
-<P>{is_class?Třída:Tiskárna} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-už nepřijímá úlohy.</P>
-
-</DIV>
diff --git a/templates/cs/printer-start.tmpl b/templates/cs/printer-start.tmpl
deleted file mode 100644
index cc9f3ebd7..000000000
--- a/templates/cs/printer-start.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Obnovení {is_class?třídy:tiskárny} {printer_name}</H2>
-
-<P>{is_class?Třída:Tiskárna} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-byla obnovena.</P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/cs/printer-stop.tmpl b/templates/cs/printer-stop.tmpl
deleted file mode 100644
index cfecaa0ad..000000000
--- a/templates/cs/printer-stop.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Pozastavení {is_class?třídy:tiskárny} {printer_name}</H2>
-
-<P>{is_class?Třída:Tiskárna} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-byla pozastavena.</P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/cs/printer.tmpl b/templates/cs/printer.tmpl
deleted file mode 100644
index 7e605c565..000000000
--- a/templates/cs/printer.tmpl
+++ /dev/null
@@ -1,48 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?Äeká:{printer_state=4?tiskne:pauza}},
-{printer_is_accepting_jobs=0?ne:}přijímá úlohy,
-{server_is_sharing_printers=0?není:{printer_is_shared=0?není:}} sdílení{default_name={printer_name}?, výchozí server:})</H2>
-
-<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
-<OPTION VALUE="">Údržba</OPTION>
-<OPTION VALUE="print-test-page">Tisk zkušební stránky</OPTION>
-{printer_commands~.*Clean.*?<OPTION VALUE="clean-print-heads">VyÄiÅ¡tÄ›ní tiskových hlav</OPTION>:}
-{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">Tisk self-test stránky</OPTION>:}
-{printer_state=5?<OPTION VALUE="start-printer">Obnovení tiskárny</OPTION>:<OPTION VALUE="stop-printer">Pozastavení tiskárny</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Příjem úloh</OPTION>:<OPTION VALUE="reject-jobs">Odmítnutí úloh</OPTION>}
-<OPTION VALUE="move-jobs">Přesun všech úloh</OPTION>
-<OPTION VALUE="purge-jobs">Výmaz všech úloh</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
-<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
-<OPTION VALUE="">Administrace</OPTION>
-<OPTION VALUE="modify-printer">Úprava tiskárny</OPTION>
-<OPTION VALUE="delete-printer">Výmaz tiskárny</OPTION>
-<OPTION VALUE="set-printer-options">Nastavení parametrů</OPTION>
-<OPTION VALUE="set-as-default">Nastavení jako výchozí na serveru</OPTION>
-<OPTION VALUE="set-allowed-users">Nastavení přístupu uživatelů</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Popis:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Umístění:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Výrobce a model:</TH><TD>{printer_make_and_model}
-({color_supported=1?barevná:Äernobílá}{sides_supported?, oboustranný tisk:})<BR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Připojení:</TH><TD>{device_uri}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Nastavení:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:unknown}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV> \ No newline at end of file
diff --git a/templates/cs/printers-header.tmpl b/templates/cs/printers-header.tmpl
deleted file mode 100644
index 4755aff38..000000000
--- a/templates/cs/printers-header.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Žádné tiskárny:Zobrazení {#printer_name} z {total} tiskár{total=1?ny:en}}.</P>
diff --git a/templates/cs/printers.tmpl b/templates/cs/printers.tmpl
deleted file mode 100644
index 3861ac339..000000000
--- a/templates/cs/printers.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-{#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="Printers List">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Název fronty <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Název fronty <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Popis</TH><TH>Umístění</TH><TH>Výrobce a model</TH><TH>Stav</TH></TR>
-</THEAD>
-<TBODY>
-{[printer_name]
-<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{printer_make_and_model}</TD><TD>{printer_state=3?Čeká:{printer_state=4?Tiskne:Pauza}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/cs/restart.tmpl b/templates/cs/restart.tmpl
deleted file mode 100644
index 1c68b059b..000000000
--- a/templates/cs/restart.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Změna nastavení</H2>
-
-<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> Prosím Äekejte, probíhá restart serveru ...</P>
-
-</DIV>
diff --git a/templates/cs/samba-export.tmpl b/templates/cs/samba-export.tmpl
deleted file mode 100644
index afc0bea68..000000000
--- a/templates/cs/samba-export.tmpl
+++ /dev/null
@@ -1,55 +0,0 @@
-<SCRIPT TYPE="text/javascript"><!--
-function select_printers() {
- var list = document.export_samba.EXPORT_NAME;
- var sel = document.export_samba.EXPORT_ALL.checked;
-
- for (i = 0; i < list.length; i ++) {
- list.options[i].selected = sel;
- }
-}
---></SCRIPT>
-
-<FORM METHOD="POST" ACTION="/admin/" NAME="export_samba">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
-
-<H2 CLASS="title">Export tiskáren do Samby</H2>
-
-{error?<P>Nelze exportovat tiskárny do Samby\:</P>
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-<P>Nahlédnout do <A HREF="/admin/log/error_log"
-TARGET="_blank">error_log</A> souboru pro více informací.</P>:
-
-<P>Tato stránka umožňuje export tiskáren do Samby, aby k nim klienti
-systému Windows mohli pÅ™istupovat pomocí ikon <VAR>Okolní poÄítaÄe</VAR>
-nebo <VAR>Místa v síti</VAR> na své pracovní ploše. Musíte předem
-nainstalovat ovladaÄe OS Windows pro postScriptové tiskárny, jak je popsáno v
- <A HREF="/help/man-cupsaddsmb.html" TARGET="_blank">cupsaddsmb(8)</A>
-manuálové stránky.</P>}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Tiskárny:</TH>
-<TD>
-<SELECT NAME="EXPORT_NAME" SIZE="10" MULTIPLE>
-{[printer_name]<OPTION VALUE="{printer_name}"{export_all? SELECTED:{printer_export? SELECTED:}}>{printer_name}}
-</SELECT><BR>
-<INPUT TYPE="CHECKBOX" NAME="EXPORT_ALL"{export_all? CHECKED:}
-onChange="select_printers()"> Export všech tiskáren
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Uživatel Samby:</TH>
-<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (povinný údaj)</TD>
-</TR>
-<TR>
-<TH CLASS="label">Heslo uživatele:</TH>
-<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (povinný údaj)</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Export tiskáren"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/cs/samba-exported.tmpl b/templates/cs/samba-exported.tmpl
deleted file mode 100644
index 121fe4883..000000000
--- a/templates/cs/samba-exported.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P>Export tiskáren do Samby byl úspěšně proveden.</P>
diff --git a/templates/cs/search.tmpl b/templates/cs/search.tmpl
deleted file mode 100644
index cad77ca0b..000000000
--- a/templates/cs/search.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
-{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
-{ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
-
-<P ALIGN="CENTER"><B>Hledat v
-{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?třídách:{SECTION=jobs?úlohách:tiskárnách}}}:</B>
-<INPUT TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER="" AUTOSAVE="org.cups.{SECTION}" RESULTS="20"> <INPUT
-TYPE="SUBMIT" VALUE="Hledat"> <INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Smazat"></P>
-
-</FORM>
diff --git a/templates/cs/set-printer-options-header.tmpl b/templates/cs/set-printer-options-header.tmpl
deleted file mode 100644
index 160ae6bc7..000000000
--- a/templates/cs/set-printer-options-header.tmpl
+++ /dev/null
@@ -1,26 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Nastavení parametrů u {printer_name}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{HAVE_AUTOCONFIGURE?<INPUT TYPE="SUBMIT" NAME="AUTOCONFIGURE" VALUE="Nastavit výchozí parametry tiskárny">:}
-
-<SCRIPT TYPE="text/javascript"><!--
-function update_paramtable(option)
-{
- var cb = document.getElementById("select-" + option)
- var paramstable = document.getElementById(option + "-params");
- if (cb.value == "Custom")
- paramstable.style.display = "table";
- else
- paramstable.style.display = "none";
-}
---></SCRIPT>
-
-<H3 CLASS="title">{[group_id]
-<A HREF="#{group_id}">{group}</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</H3>
-
-<DIV CLASS="tabs">
diff --git a/templates/cs/set-printer-options-trailer.tmpl b/templates/cs/set-printer-options-trailer.tmpl
deleted file mode 100644
index 11adc7012..000000000
--- a/templates/cs/set-printer-options-trailer.tmpl
+++ /dev/null
@@ -1,16 +0,0 @@
-</DIV>
-
-<SCRIPT TYPE="text/javascript"><!--
-// Hide custom options parameters for browsers that understand Javascript
-var paramtables = document.getElementsByName("paramtable");
-for (var i = 0; i < paramtables.length; i++)
-{
- var opt = paramtables[i].id.substr(0, paramtables[i].id.lastIndexOf("-"));
- var cb = document.getElementById("select-" + opt);
- if (cb.value != "Custom")
- paramtables[i].style.display = "none";
-}
---></SCRIPT>
-</FORM>
-
-</DIV>
diff --git a/templates/cs/subscription-added.tmpl b/templates/cs/subscription-added.tmpl
deleted file mode 100644
index 926d79692..000000000
--- a/templates/cs/subscription-added.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>Předplatné {subscription_name} bylo úspěšně přidáno.</P>
-
-</DIV>
diff --git a/templates/cs/subscription-canceled.tmpl b/templates/cs/subscription-canceled.tmpl
deleted file mode 100644
index 0e25268b6..000000000
--- a/templates/cs/subscription-canceled.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>Předplatné #{notify_subscription_id} bylo zrušeno.</P>
-
-</DIV>
diff --git a/templates/cs/test-page.tmpl b/templates/cs/test-page.tmpl
deleted file mode 100644
index d1a1d9d80..000000000
--- a/templates/cs/test-page.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Tisk zkušební stránky na {printer_name}</H2>
-
-<P>Zkušební stránka odeslána; ID úlohy je <A HREF="/{SECTION}/{printer_name}">
-{printer_name}-{job_id}</A>.</P>
-
-</DIV>
diff --git a/templates/cs/trailer.tmpl b/templates/cs/trailer.tmpl
deleted file mode 100644
index 5817101f9..000000000
--- a/templates/cs/trailer.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS a logo CUPS jsou ochranné známky spoleÄnosti
-<A HREF="http://www.apple.com">Apple Inc.</A> CUPS je chráněn autorskými
-právy 2007-2014 Apple Inc. Všechna práva vyhrazena.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/templates/cs/users.tmpl b/templates/cs/users.tmpl
deleted file mode 100644
index ff39cc3ce..000000000
--- a/templates/cs/users.tmpl
+++ /dev/null
@@ -1,30 +0,0 @@
-<DIV CLASS="indent">
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{OP}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-{IS_CLASS?<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="{IS_CLASS}">:}
-
-<H2 CLASS="title">Nastavení přístupu uživatelů u {printer_name}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Uživatelé:</TH>
-<TD>
-<INPUT TYPE='TEXT' NAME='users' SIZE='60' VALUE='{?requesting_user_name_allowed}{?requesting_user_name_denied}'>
-<BR>
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-allowed' {requesting_user_name_allowed?checked:}>Povolit uživatelům tisknout
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>Zakázat uživatelům tisknout
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>
-<INPUT TYPE="SUBMIT" VALUE="Nastavení přístupů">
-</TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/de/add-class.tmpl b/templates/de/add-class.tmpl
deleted file mode 100644
index b91be303e..000000000
--- a/templates/de/add-class.tmpl
+++ /dev/null
@@ -1,40 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Klasse hinzufügen</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Name:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Darf alle druckbaren Zeichen au&szlig;er "/", "#", und Leerzeichen enthalten)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Beschreibung:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Für Menschen lesbare Beschreibung wie "HP LaserJet with Duplexer")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Ort:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Für Menschen lesbarer Ort wie "Lab 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Mitglieder:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Klasse hinzufügen"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/de/add-printer.tmpl b/templates/de/add-printer.tmpl
deleted file mode 100644
index 05af41f84..000000000
--- a/templates/de/add-printer.tmpl
+++ /dev/null
@@ -1,52 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Drucker hinzufügen (Schritt 3/5)</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
-{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Name:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
-<SMALL>(Darf alle druckbaren Zeichen au&szlig;er "/", "#", und Leerzeichen enthalten)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Beschreibung:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_INFO}"><BR>
-<SMALL>(Für Menschen lesbare Beschreibung wie "HP LaserJet with Duplexer")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Ort:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_LOCATION}"><BR>
-<SMALL>(Für Menschen lesbarer Ort wie "Lab 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Verbindung:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Freigabe:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Diesen Drucker im Netz freigeben</TD>
-</TR>
-<TR>
-<TH CLASS="label">Farbmanagement:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_COLORMANAGED" {PRINTER_IS_COLORMANAGED=1?CHECKED:}>
-Einschalten</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Weiter"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/de/add-rss-subscription.tmpl b/templates/de/add-rss-subscription.tmpl
deleted file mode 100644
index 16fe5ade7..000000000
--- a/templates/de/add-rss-subscription.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription">
-
-<H2 CLASS="title">RSS Subskription hinzufügen</H2>
-
-<TABLE SUMMARY="Forumlar zum Hinzufügen einer RSS Subskription">
-<TR>
-<TH CLASS="label">Name:</TH>
-<TD COLSPAN="5"><INPUT TYPE="TEXT" NAME="SUBSCRIPTION_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?SUBSCRIPTION_NAME}"><BR>
-<SMALL>(Darf alle druckbaren Zeichen ausser Leerzeichen, "/", "?", und "#" enthalten)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Warteschlange:</TH>
-<TD COLSPAN="5"><SELECT NAME="PRINTER_URI" SIZE="10"><OPTION VALUE="#ALL#"{?PRINTER_URI=#ALL#? SELECTED:}>Alle Warteschlangen</OPTION>{[printer_name]<OPTION VALUE="{printer_uri_supported}"{?PRINTER_URI={printer_uri_supported}? SELECTED:}>{printer_name}</OPTION>}</SELECT></TD>
-</TR>
-<TR VALIGN="TOP">
-<TH CLASS="label">Ereignisse:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CREATED" {?EVENT_JOB_CREATED}>Auftrag Erstellt<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_COMPLETED" {?EVENT_JOB_COMPLETED}>Auftrag Abgeschlossen<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_STOPPED" {?EVENT_JOB_STOPPED}>Auftrag Gestoppt<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>Auftrags Parameter Geändert</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_STOPPED" {?EVENT_PRINTER_STOPPED}>Warteschlange Gestoppt<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_ADDED" {?EVENT_PRINTER_ADDED}>Warteschlange Hinzugefügt<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_MODIFIED" {?EVENT_PRINTER_MODIFIED}>Warteschlange Geändert<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_DELETED" {?EVENT_PRINTER_DELETED}>Warteschlange Gelöscht</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STARTED" {?EVENT_SERVER_STARTED}>Server Gestartet<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STOPPED" {?EVENT_SERVER_STOPPED}>Server Gestoppt<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_RESTARTED" {?EVENT_SERVER_RESTARTED}>Server Neu Gestartet<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_AUDIT" {?EVENT_SERVER_AUDIT}>Server Sicherheits Prüfung</TD>
-</TR>
-<TR>
-<TH CLASS="label">Maximale Ereignisse in Durchführung:</TH>
-<TD COLSPAN="5"><INPUT TYPE="NUMBER" NAME="MAX_EVENTS" SIZE="4" MAXLENGTH="4" VALUE="{MAX_EVENTS?{MAX_EVENTS}:20}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD COLSPAN="5"><INPUT TYPE="SUBMIT" VALUE="RSS Subskription hinzufügen"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/de/admin.tmpl b/templates/de/admin.tmpl
deleted file mode 100644
index 6ed058589..000000000
--- a/templates/de/admin.tmpl
+++ /dev/null
@@ -1,110 +0,0 @@
-<TABLE CLASS="indent" SUMMARY="Administrative Tätigkeiten">
-<TR><TD VALIGN="TOP">
-
-<H2 CLASS="title">Drucker</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="SUBMIT" VALUE="Drucker hinzufügen"></FORM>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="find-new-printers"><INPUT TYPE="SUBMIT" VALUE="Verfügbare Drucker auflisten"></FORM>
-<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Drucker verwalten"></FORM>
-{have_samba?<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba"><INPUT TYPE="SUBMIT" VALUE="Drucker für Samba freigeben"></FORM>:}
-</P>
-
-<H2 CLASS="title">Klassen</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-class"><INPUT TYPE="SUBMIT" VALUE="Klasse hinzufügen"></FORM>
-<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Klassen verwalten"></FORM>
-</P>
-
-<H2 CLASS="title">Druckaufträge</H2>
-
-<P>
-<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Aufträge verwalten"></FORM>
-</P>
-
-</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
-
-<H2 CLASS="title">Server</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server"><INPUT TYPE="SUBMIT" VALUE="Konfigurationsdatei bearbeiten"></FORM>
-<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Zugriffsprotokoll betrachten"></FORM>
-<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Fehlerprotokoll betrachten"></FORM>
-<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Seitenprotokoll betrachten"></FORM>
-</P>
-
-{SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
-<BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-
-{ADVANCEDSETTINGS?<P><B>Erweiterte Servereinstellungen\:</B></P>
-
-<P><A HREF="/admin/">Erweitert <SMALL>&#x25bc;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="HIDDEN" NAME="ADVANCEDSETTINGS" VALUE="YES">
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_PRINTERS" {?remote_printers}> Zeige freigegebene Drucker von anderen Systemen<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Protokolle\:
-<INPUT TYPE="CHECKBOX" NAME="BROWSE_REMOTE_CUPS" {?browse_remote_cups}> CUPS
-{HAVE_LDAP?<INPUT TYPE="CHECKBOX" NAME="BROWSE_REMOTE_LDAP" {?browse_remote_ldap}> LDAP:}
-{HAVE_LIBSLP?<INPUT TYPE="CHECKBOX" NAME="BROWSE_REMOTE_SLP" {?browse_remote_slp}> SLP:}<BR>
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Freigeben von Druckern welche mit diesem System verbunden sind<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Klienten maximal\:
-<INPUT TYPE="TEXT" NAME="MAX_CLIENTS" VALUE="{?max_clients}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Protokolle\:
-<INPUT TYPE="CHECKBOX" NAME="BROWSE_LOCAL_CUPS" {?browse_local_cups}> CUPS
-{HAVE_DNSSD?<INPUT TYPE="CHECKBOX" NAME="BROWSE_LOCAL_DNSSD" {?browse_local_dnssd}> DNS-SD:}
-{HAVE_LDAP?<INPUT TYPE="CHECKBOX" NAME="BROWSE_LOCAL_LDAP" {?browse_local_ldap}> LDAP:}
-{HAVE_LIBSLP?<INPUT TYPE="CHECKBOX" NAME="BROWSE_LOCAL_SLP" {?browse_local_slp}> SLP:}<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Erlaube Drucken vom Internet aus<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Veröffentliche Webinterface<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Erlaube entfernte Verwaltung<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Benutze Kerberos Authentifizierung (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Erlaube Benutzern jeden Auftrag abzubrechen (nicht nur die Eigenen)<BR>
-<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOB_HISTORY" {?preserve_job_history}> Auftragsverlauf aufbewahren<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Anzahl der Aufträge\:
-<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOB_FILES" {?preserve_job_files}> Dateien von Druckaufträgen aufbewahren<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Speichere Fehlerinformationen für Fehlersuche<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximale Grösse der Protokolldatei\:
-<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
-
-:<P><B>Grundlegende Servereinstellungen:</B></P>
-
-<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Erweitert <SMALL>&#x25b6;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_PRINTERS" {?remote_printers}> Zeige freigegebene Drucker von anderen Systemen<BR>
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Freigeben von Druckern welche mit diesem System verbunden sind<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Erlaube Drucken vom Internet aus<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Erlaube entfernte Verwaltung<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Benutze Kerberos Authentifizierung (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Erlaube Benutzern jeden Auftrag abzubrechen (nicht nur die Eigenen)<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Speichere Fehlerinformationen für Fehlersuche</P>
-
-}
-<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Einstellungen ändern"></P>
-
-</FORM>}
-
-</TD></TR>
-</TABLE>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">RSS Subskriptionen</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription"><INPUT TYPE="SUBMIT" VALUE="RSS Subskription hinzufügen"></FORM>
-</P>
-
-</DIV>
-
-{notify_subscription_id?<TABLE CLASS="list" SUMMARY=">RSS Subskriptionen">
-<THEAD><TR><TH>Name</TH><TH>Ereignis</TH><TH>Warteschlange</TH></TR></THEAD>
-<TBODY>{[notify_subscription_id]
-<TR><TD><A HREF="{notify_recipient_uri}">{notify_recipient_name}</A><BR>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-subscription"><INPUT TYPE="HIDDEN" NAME="notify_subscription_id" VALUE="{notify_subscription_id}"><INPUT TYPE="SUBMIT" VALUE="RSS Subskription kündigen"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:Alle Warteschlangen}</TD></TR>}
-</TBODY>
-</TABLE>:}
diff --git a/templates/de/choose-device.tmpl b/templates/de/choose-device.tmpl
deleted file mode 100644
index 7cb9e77c2..000000000
--- a/templates/de/choose-device.tmpl
+++ /dev/null
@@ -1,53 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?{printer_name} ändern:Drucker hinzufügen (Schritt 1/5)}</H2>
-
-{CUPS_GET_DEVICES_DONE?<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-
-<TABLE>
-{op=add-printer?:<TR>
-<TH CLASS="label">Aktuelle Verbindung\:</TH>
-<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
-{current_device_uri}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Lokale Drucker\:</TH>
-<TD>
-{[device_uri]{device_class!network?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unbekannt?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unbekannt?({device_make_and_model}):}<BR>
-:}}
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Entdeckte Netzwerkdrucker\:</TH>
-<TD>
-{[device_uri]{device_class=network?{device_uri~[a-z]+://?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unbekannt?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unbekannt?({device_make_and_model}):}<BR>
-:}:}}
-</TD>
-</TR>
-<TR>
-<TR>
-<TH CLASS="label">Andere Netzwerkdrucker\:</TH>
-<TD>
-{[device_uri]{device_class=network?{device_uri~[a-z]+://?:<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-}:}}
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Weiter"></TD>
-</TR>
-</TABLE>
-
-</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> Suche nach Druckern...</P>}
-</DIV>
-
diff --git a/templates/de/choose-make.tmpl b/templates/de/choose-make.tmpl
deleted file mode 100644
index a7eb0c177..000000000
--- a/templates/de/choose-make.tmpl
+++ /dev/null
@@ -1,68 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?{printer_name} ändern:Drucker hinzufügen (Schritt4/5)}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Name:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Beschreibung:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Ort:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Verbindung:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Freigabe:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-Diesen Drucker {?printer_is_shared=?nicht:{?printer_is_shared=0?nicht:}} im Netz freigeben</TD>
-</TR>
-<TR>
-<TH CLASS="label">Farbmanagement:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_COLORMANAGED" VALUE="{?printer_is_colormanaged}">{?printer_is_colormanaged=?Not:{?printer_is_colormanaged=0?Not:}} Enabled</TD>
-</TR>
-<TR>
-<TH CLASS="label">Marke:</TH>
-<TD>
-<SELECT NAME="PPD_MAKE" SIZE="10">
-{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Weiter"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>&nbsp;</TD>
-</TR>
-<TR>
-<TH CLASS="label">Oder stellen Sie eine PPD Datei bereit:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
-TYPE="FILE" NAME="PPD_FILE"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?Drucker hinzufügen:Drucker ändern}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/de/choose-model.tmpl b/templates/de/choose-model.tmpl
deleted file mode 100644
index 74ddcc5d5..000000000
--- a/templates/de/choose-model.tmpl
+++ /dev/null
@@ -1,65 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?{printer_name} ändern:Drucker hinzufügen (Schritt 5/5)}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Name:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Beschreibung:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Ort:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Verbindung:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Freigabe:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-Dieser Drucker ist {?printer_is_shared=?nicht:{?printer_is_shared=0?nicht:}} im Netz freigeben</TD>
-</TR>
-<TR>
-<TH CLASS="label">Farmbmanagement:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_COLORMANAGED" VALUE="{?printer_is_colormanaged}">
-{?printer_is_colormanaged=?Eingeschaltet:{?printer_is_colormanaged=0?Ausgeschaltet:}} Eingeschaltet</TD>
-</TR>
-<TR>
-<TH CLASS="label">Marke:</TH>
-<TD>{PPD_MAKE} <INPUT TYPE="SUBMIT" NAME="SELECT_MAKE" VALUE="Andere(n) Marke/Hersteller auswählen"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Modell:</TH>
-<TD>
-<SELECT NAME="PPD_NAME" SIZE="10">
-{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Aktueller Treiber - {current_make_and_model}</OPTION>:}
-{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
-}</SELECT>
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Oder stellen Sie eine PPD Datei bereit:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
-TYPE="FILE" NAME="PPD_FILE"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?Drucker hinzufügen:Drucker ändern}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/de/choose-serial.tmpl b/templates/de/choose-serial.tmpl
deleted file mode 100644
index f601f5b20..000000000
--- a/templates/de/choose-serial.tmpl
+++ /dev/null
@@ -1,52 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?{printer_name} ändern:Drucker hinzufügen}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Verbindung:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Baud Rate:</TH>
-<TD><SELECT NAME="BAUDRATE">
-{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Parität:</TH>
-<TD><SELECT NAME="PARITY">
-<OPTION VALUE="none" {?parity=none?SELECTED:}>Keine
-<OPTION VALUE="even" {?parity=even?SELECTED:}>Gerade
-<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Ungerade
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Daten Bits:</TH>
-<TD><SELECT NAME="BITS">
-<OPTION {?bits=8?SELECTED:}>8
-<OPTION {?bits=7?SELECTED:}>7
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Flu&szlig;kontrolle:</TH>
-<TD><SELECT NAME="FLOW">
-<OPTION VALUE="none" {?flow=none?SELECTED:}>None
-<OPTION VALUE="soft" {?flow=soft?SELECTED:}>XON/XOFF (Software)
-<OPTION VALUE="hard" {?flow=hard?SELECTED:}>RTS/CTS (Hardware)
-<OPTION VALUE="dtrdsr" {?flow=dtrdsr?SELECTED:}>DTR/DSR (Hardware)
-</SELECT></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Weiter"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/de/choose-uri.tmpl b/templates/de/choose-uri.tmpl
deleted file mode 100644
index a8a202ac2..000000000
--- a/templates/de/choose-uri.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?{printer_name} ändern:Drucker hinzufügen (Schritt2/5)}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Verbindungs-URI:</TH>
-<TD><INPUT TYPE="URL" SIZE="60" MAXLENGTH="1024" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>Beispiele:
-<PRE>
- http://Hostname:631/ipp/
- http://Hostname:631/ipp/Anschluss1
-
- ipp://Hostname/ipp/
- ipp://Hostname/ipp/Anschluss1
-
- lpd://Hostname/Warteschlange
-
- socket://Hostname
- socket://Hostname:9100
-</PRE>
-
-<P>Bitte lesen Sie <A HREF="/help/network.html" TARGET="_blank">"Netzwerk
-Drucker"</A> um die korrekte URI für Ihren Drucker zu benutzen.</P>
-
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Weiter"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/de/class-added.tmpl b/templates/de/class-added.tmpl
deleted file mode 100644
index 9d619daa9..000000000
--- a/templates/de/class-added.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Klasse hinzufügen</H2>
-
-<P>Die Klasse <A HREF="/classes/{printer_name}">{printer_name}</A> wurde erfolgreich
-hinzugefügt.
-
-</DIV>
diff --git a/templates/de/class-confirm.tmpl b/templates/de/class-confirm.tmpl
deleted file mode 100644
index d4a7777d3..000000000
--- a/templates/de/class-confirm.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Klasse {printer_name} löschen</H2>
-
-<P><B>Warnung:</B> Sind Sie sicher, dass Sie die Klasse
-{printer_name} löschen wollen?</P>
-
-<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="op" VALUE="delete-class"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Klasse löschen"></FORM></P>
-
-</DIV>
diff --git a/templates/de/class-deleted.tmpl b/templates/de/class-deleted.tmpl
deleted file mode 100644
index 7697db27d..000000000
--- a/templates/de/class-deleted.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Klasse {printer_name} löschen</H2>
-
-<P>Die Klasse {printer_name} wurde erfolgreich gelöscht.
-
-</DIV>
diff --git a/templates/de/class-jobs-header.tmpl b/templates/de/class-jobs-header.tmpl
deleted file mode 100644
index b563995f4..000000000
--- a/templates/de/class-jobs-header.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Aufträge</H3>
-</DIV>
diff --git a/templates/de/class-modified.tmpl b/templates/de/class-modified.tmpl
deleted file mode 100644
index d25ba85ac..000000000
--- a/templates/de/class-modified.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Klasse {printer_name} ändern</H2>
-
-<P>Die Klasse <A HREF="/classes/{printer_name}">{printer_name}</A> wurde
-erfolgreich geändert.
-
-</DIV>
diff --git a/templates/de/class.tmpl b/templates/de/class.tmpl
deleted file mode 100644
index f9cb3eac4..000000000
--- a/templates/de/class.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?Im Leerlauf:{printer_state=4?Beschäftigt:Angehalten}},
-{printer_is_accepting_jobs=0?Aufträge werden ablehnt:Aufträge werden akzeptiert},
-{server_is_sharing_printers=0?Keine (Server):{printer_is_shared=0?Keine:}} Netzfreigabe{default_name={printer_name}?, Standarddrucker:})</H2>
-
-<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
-<OPTION VALUE="">Wartung</OPTION>
-<OPTION VALUE="print-test-page">Drucke Testseite</OPTION>
-{printer_state=5?<OPTION VALUE="start-class">Klasse starten</OPTION>:<OPTION VALUE="stop-class">Klasse stoppen</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Aufträge akzeptieren</OPTION>:<OPTION VALUE="reject-jobs">Aufträge ablehnen</OPTION>}
-<OPTION VALUE="move-jobs">Alle Aufträge verschieben</OPTION>
-<OPTION VALUE="purge-jobs">Alle Aufträge abbrechen</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
-<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="1">
-<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
-<OPTION VALUE="">Administration</OPTION>
-<OPTION VALUE="modify-class">Klasse ändern</OPTION>
-<OPTION VALUE="delete-class">Klasse löschen</OPTION>
-<OPTION VALUE="set-class-options">Standardeinstellungen festlegen</OPTION>
-<OPTION VALUE="set-as-default">Als Standard festlegen</OPTION>
-<OPTION VALUE="set-allowed-users">Erlaubte Benutzer festlegen</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Beschreibung:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Ort:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Mitglieder:</TH><TD>{?member_uris=?None:{member_uris}}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Standardeinstellungen:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:unbekannt}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
diff --git a/templates/de/classes-header.tmpl b/templates/de/classes-header.tmpl
deleted file mode 100644
index 5fa4d4ae3..000000000
--- a/templates/de/classes-header.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Keine Klassen:Zeige {#printer_name} von {total} Klasse{total=1?:n}}.</P>
diff --git a/templates/de/classes.tmpl b/templates/de/classes.tmpl
deleted file mode 100644
index c04d02bda..000000000
--- a/templates/de/classes.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-{#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="Class List">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Wartweschlange <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Warteschlange <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Beschreibung</TH><TH>Ort</TH><TH>Mitglieder</TH><TH>Status</TH></TR>
-</THEAD>
-<TBODY>
-{[printer_name]
-<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{?member_uris=?Keine:{member_uris}}</TD><TD>{printer_state=3?Im Leerlauf:{printer_state=4?Beschäftigt:Angehalten}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/de/command.tmpl b/templates/de/command.tmpl
deleted file mode 100644
index 26026992f..000000000
--- a/templates/de/command.tmpl
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{title} auf {printer_name}</H2>
-
-<P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
-ALIGN="ABSMIDDLE" ALT="Busy Indicator"> }Drucker Befehlsauftrag
-{job_state=3?unerledigt:{job_state=4?gehalten:
-{job_state=5?verarbeite:{job_state=6?gestoppt:
-{job_state=7?gelöscht:{job_state=8?abgebrochen:beendet}}}}}}{job_state=9?:{job_printer_state_message?,
-<EM>"{job_printer_state_message}"</EM>:}}</P>
-
-</DIV>
diff --git a/templates/de/edit-config.tmpl b/templates/de/edit-config.tmpl
deleted file mode 100644
index 966034622..000000000
--- a/templates/de/edit-config.tmpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<SCRIPT TYPE="text/javascript">
-function reset_config()
-{
- document.cups.CUPSDCONF.value = "{?cupsdconf_default}";
-}
-</SCRIPT>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Konfigurationsdatei ändern</H2>
-
-<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-
-<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
-
-<P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="Änderungen speichern">
-<INPUT TYPE="BUTTON" VALUE="Standard Konfigurationsdatei verwenden"
-onClick="reset_config();"></P>
-
-</FORM>
-
-</DIV>
diff --git a/templates/de/error-op.tmpl b/templates/de/error-op.tmpl
deleted file mode 100644
index d47e73089..000000000
--- a/templates/de/error-op.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} Error</H2>
-
-<P>Fehler:</P>
-
-<BLOCKQUOTE>Unbekannte Operation "{op}"!</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/de/error.tmpl b/templates/de/error.tmpl
deleted file mode 100644
index 1a7f6503c..000000000
--- a/templates/de/error.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} Error</H2>
-
-<P>{?message?{message}:Fehler:}</P>
-
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/de/header.tmpl.in b/templates/de/header.tmpl.in
deleted file mode 100644
index 7a0ac7806..000000000
--- a/templates/de/header.tmpl.in
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>{title} - @CUPS_VERSION@</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
- {refresh_page?<META HTTP-EQUIV="Refresh" CONTENT="{refresh_page}">:}
- <SCRIPT TYPE="text/javascript"><!--
- /* Show an error if cookies are disabled */
- function check_cookies() {
- if (!navigator.cookieEnabled) {
- document.getElementById('body').innerHTML = 'This page uses cookies to prevent common cross-site attacks. Please enable cookies in your browser.';
- }
- }
- --></SCRIPT>
-</HEAD>
-<BODY ONLOAD="check_cookies();">
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="unsel"><A HREF="/">&nbsp;&nbsp;Startseite&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;Administration&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=classes?:un}sel"><A HREF="/classes/">&nbsp;&nbsp;Klassen&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=help?:un}sel"><A HREF="/help/">&nbsp;&nbsp;Online&nbsp;Hilfe&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;Aufträge&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;Drucker&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Sucher in der Hilfe"
-VALUE="{SECTION=help?{?QUERY}:}" AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-<TR><TD COLSPAN="9">&nbsp;</TD></TR>
-</TABLE>
-<DIV ID="body">
diff --git a/templates/de/help-header.tmpl b/templates/de/help-header.tmpl
deleted file mode 100644
index c9f25a6d6..000000000
--- a/templates/de/help-header.tmpl
+++ /dev/null
@@ -1,51 +0,0 @@
-<DIV CLASS="indent">
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
-{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
-
-<P ALIGN="CENTER"><B>Suche in
-{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:allen Dokumenten}}:</B> <INPUT
-TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER=""
-AUTOSAVE="org.cups.help" RESULTS="20">
-<INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="Suchen">
-<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Leeren"></P>
-
-</FORM>
-
-<!-- Bookmarks -->
-<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Inhalt">
-<TR><TD>
-
-<H3 CLASS="title">Online Hilfe Dokumente</H3>
-
-<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Alle Dokumente</A></P>
-<HR>
-
-{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
-}
-</TD></TR>
-</TABLE></DIV>
-
-{QUERY?<P>Suchergebnisse in {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:allen Dokumenten}}\:</P>
-{QTEXT?<UL>
-{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (in <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
-{QTEXT?</UL>:}
-:<P>Keine Ãœbereinstimmung gefunden.</P>}
-<HR NOSHADE>:}
-{HELPTITLE?<H1>{HELPTITLE}</H1>
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Druckversion anzeigen"></FORM>:
-
-<H1>CUPS Hilfeseiten</H1>
-
-<P>Dies ist das CUPS online Hilfesystem. Geben Sie Ihren Suchbegriff
-oben ein oder klicken Sie auf einen der Dokumentationslinks
-um sich die Online Hilfe Informationen anzeigen zu lassen.</P>
-
-<P>Wenn Sie noch unerfahren im Umgang mit CUPS sind, lesen Sie die "<a
-href="/help/overview.html">CUPS Ãœbersicht</a>".
-Erfahrene Benutzer sollten "<a href="/help/whatsnew.html">Was ist neu in CUPS
-1.7</a>" lesen.</P>
-
-<P>Die <A HREF="http://www.cups.org/">CUPS Webseite</A> bietet
-ebenfalls viele Angebote inklusive Diskussionsforen für Benutzer,
-Antworten auf häufig gestellte Fragen, und ein Formular für
-Fehlerberichte und Wünsche.</P>}
diff --git a/templates/de/help-printable.tmpl b/templates/de/help-printable.tmpl
deleted file mode 100644
index 2463c1630..000000000
--- a/templates/de/help-printable.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>{HELPTITLE}</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups-printable.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
-</HEAD>
-<BODY>
diff --git a/templates/de/help-trailer.tmpl b/templates/de/help-trailer.tmpl
deleted file mode 100644
index 4c1ebed85..000000000
--- a/templates/de/help-trailer.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-</DIV>
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 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Auftrag {job_id} löschen</H2>
-
-<P><A HREF="{job_printer_uri}">Auftrag {job_id}</A> wurde gelöscht.
-
-</DIV>
diff --git a/templates/de/job-hold.tmpl b/templates/de/job-hold.tmpl
deleted file mode 100644
index aaddb20b6..000000000
--- a/templates/de/job-hold.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Auftrag {job_id} anhalten</H2>
-
-<P><A HREF="{job_printer_uri}">Auftrag {job_id}</A> wurde vom Drucken abgehalten.
-
-</DIV>
diff --git a/templates/de/job-move.tmpl b/templates/de/job-move.tmpl
deleted file mode 100644
index 916369fdc..000000000
--- a/templates/de/job-move.tmpl
+++ /dev/null
@@ -1,27 +0,0 @@
-<DIV CLASS="indent">
-
-<FORM METHOD="POST" ACTION="/{SECTION}/{job_id?:{printer_name}}">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
-
-<H2 CLASS="title">{job_id?Auftrag {job_id} verschieben:Alle Aufträge verschieben}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Neues Ziel:</TH>
-<TD>
-<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
-{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{job_id?Auftrag verschieben:Aufträge verschieben}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-
-</DIV>
diff --git a/templates/de/job-moved.tmpl b/templates/de/job-moved.tmpl
deleted file mode 100644
index 6d4a6d54b..000000000
--- a/templates/de/job-moved.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{job_id?Auftrag {job_id} verschieben:Alle Aufträge verschieben}</H2>
-
-<P>{job_id?<A HREF="/jobs/{job_id}">Auftrag {job_id}</A>:Alle Aufträge} nach
-<A HREF="{job_printer_uri}">{job_printer_name}</A> verschoben.</P>
-
-</DIV>
diff --git a/templates/de/job-release.tmpl b/templates/de/job-release.tmpl
deleted file mode 100644
index e1d4227fe..000000000
--- a/templates/de/job-release.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Auftrag {job_id} freigeben</H2>
-
-<P><A HREF="{job_printer_uri}">Auftrag {job_id}</A> wurde zum Drucken freigegeben.
-
-</DIV>
diff --git a/templates/de/job-restart.tmpl b/templates/de/job-restart.tmpl
deleted file mode 100644
index b4876978f..000000000
--- a/templates/de/job-restart.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Auftrag {job_id} neu starten</H2>
-
-<P><A HREF="{job_printer_uri}">Auftrag {job_id}</A> wurde neu gestartet.
-
-</DIV>
diff --git a/templates/de/jobs-header.tmpl b/templates/de/jobs-header.tmpl
deleted file mode 100644
index b2f9e18db..000000000
--- a/templates/de/jobs-header.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Aktive Aufträge anzeigen"></FORM>}
-{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="Fertige Aufträge anzeigen"></FORM>}
-{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Alle Aufträge anzeigen"></FORM>}</DIV>
-
-<P ALIGN="CENTER">{total=0?Keine Aufträge:Zeige {#job_id} von {total} {?which_jobs=?aktiven:{which_jobs=all?:beendeten}} {total=1?Auftrag:Aufträgen}}.</P>
diff --git a/templates/de/jobs.tmpl b/templates/de/jobs.tmpl
deleted file mode 100644
index 29214e028..000000000
--- a/templates/de/jobs.tmpl
+++ /dev/null
@@ -1,37 +0,0 @@
-{#job_id=0?:
-<TABLE CLASS="list" SUMMARY="Auftragsliste">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> ID <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Name</TH><TH>Benutzer</TH><TH>Grösse</TH><TH>Seiten</TH><TH>Status</TH><TH>Kontrolle</TH></TR>
-</THEAD>
-<TBODY>
-{[job_id]
-<TR VALIGN="TOP">
-<TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id}&nbsp;</TD>
-<TD>{?job_name=?Unbekannt:{job_name}}&nbsp;</TD>
-<TD>{job_originating_user_name}&nbsp;</TD>
-<TD>{job_k_octets}k&nbsp;</TD>
-<TD>{job_media_sheets_completed=0?Unbekannt:{?job_media_sheets_completed}}&nbsp;</TD>
-<TD>{job_state=3?unerledigt seit<BR>{time_at_creation}:{job_state=4?angehalten seit<BR>{time_at_creation}:
-{job_state=5?verarbeitet seit<BR>{time_at_processing}:{job_state=6?gestoppt:
-{job_state=7?gelöscht am<BR>{time_at_completed}:{job_state=8?abgebrochen:beendet am<BR>{time_at_completed}}}}}}}&nbsp;{job_printer_state_message?<BR>
-<EM>"{job_printer_state_message}"</EM>:}</TD>
-<TD>
-{job_preserved>0?{job_state>5?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="restart-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Auftrag neu drucken"></FORM>:}:}
-{job_state=4?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="release-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Auftrag freigeben"></FORM>:}
-{job_state=3?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Auftrag anhalten"></FORM>:}
-{job_state<7?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Auftrag löschen"></FORM>
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="move-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="SUBMIT" VALUE="Auftrag verschieben"></FORM>:}
-&nbsp;</TD>
-</TR>
-}
-</TBODY>
-</TABLE>
-}
diff --git a/templates/de/list-available-printers.tmpl b/templates/de/list-available-printers.tmpl
deleted file mode 100644
index a70fdeb9a..000000000
--- a/templates/de/list-available-printers.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Verfügbare Drucker</H2>
-
-{#device_uri=0?<P>Keine Drucker gefunden.</P>
-:<UL>{[device_uri]
-<LI><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="HIDDEN" NAME="TEMPLATE_NAME" VALUE="{template_name}"><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="Local Printer"><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{device_make_and_model}"><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}"><INPUT TYPE="SUBMIT" VALUE="Diesen Drucker hinzufügen"></FORM>
-{device_make_and_model} ({device_info})</LI>
-}</UL>}
-
-</DIV>
diff --git a/templates/de/modify-class.tmpl b/templates/de/modify-class.tmpl
deleted file mode 100644
index 7caee5645..000000000
--- a/templates/de/modify-class.tmpl
+++ /dev/null
@@ -1,34 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Klasse {printer_name} ändern</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Beschreibung:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Ort:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Mitglieder:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Klasse ändern"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/de/modify-printer.tmpl b/templates/de/modify-printer.tmpl
deleted file mode 100644
index 3903bf795..000000000
--- a/templates/de/modify-printer.tmpl
+++ /dev/null
@@ -1,46 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{printer_name} ändern</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Beschreibung:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Für Menschen lesbare Beschreibung wie "HP LaserJet with Duplexer")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Ort:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Für Menschen lesbarer Ort wie "Lab 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Verbindung:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Freigabe:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Diesen Drucker im Netz freigeben</TD>
-</TR>
-<TR>
-<TH CLASS="label">Farbmanagement:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_COLORMANAGED" {PRINTER_IS_COLORMANAGED=1?CHECKED:}>
-Einschalten</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Weiter"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/de/norestart.tmpl b/templates/de/norestart.tmpl
deleted file mode 100644
index ec3c60d3a..000000000
--- a/templates/de/norestart.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Change Settings</H2>
-
-<P>Der Server wurde nicht neu gestartet, da die Konfiguration
-nicht geändert wurde...</P>
-
-</DIV>
diff --git a/templates/de/option-boolean.tmpl b/templates/de/option-boolean.tmpl
deleted file mode 100644
index e832ee102..000000000
--- a/templates/de/option-boolean.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD>
-{[choices]<INPUT TYPE="RADIO" NAME="{keyword-1}" {choices={defchoice-1}?CHECKED:} VALUE="{choices}">{text}}
-</TD>
-</TR>
diff --git a/templates/de/option-conflict.tmpl b/templates/de/option-conflict.tmpl
deleted file mode 100644
index 347908d37..000000000
--- a/templates/de/option-conflict.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<P><B>Error:</B> The following options are conflicting:</P>
-
-<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
-}</UL>
-
-<P>Bitte ändern sie eine oder mehrere Einstellungen um die Konflikte zu lösen.</P>
diff --git a/templates/de/option-header.tmpl b/templates/de/option-header.tmpl
deleted file mode 100644
index 464726a50..000000000
--- a/templates/de/option-header.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="tab" ID="{group_id}">
-
-<H3 ALIGN="CENTER">{group}</H3>
-
-<TABLE WIDTH="100%">
diff --git a/templates/de/option-pickmany.tmpl b/templates/de/option-pickmany.tmpl
deleted file mode 100644
index 0da75e5d2..000000000
--- a/templates/de/option-pickmany.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT></TD>
-</TR>
diff --git a/templates/de/option-pickone.tmpl b/templates/de/option-pickone.tmpl
deleted file mode 100644
index 1467b3601..000000000
--- a/templates/de/option-pickone.tmpl
+++ /dev/null
@@ -1,18 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" ID="select-{keyword}" ONCHANGE="update_paramtable('{keyword}')">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT>
-{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
-<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
-<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Punkte</OPTION>
-<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Millimeter</OPTION>
-<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Zentimeter</OPTION>
-<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Zoll</OPTION>
-<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Fuss</OPTION>
-<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Meter</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
-}</TABLE>
-</TD>:}
-</TR>
diff --git a/templates/de/option-trailer.tmpl b/templates/de/option-trailer.tmpl
deleted file mode 100644
index 87adedb44..000000000
--- a/templates/de/option-trailer.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-</TABLE>
-
-<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="Standardeinstellungen festlegen"></P>
-
-</DIV>
diff --git a/templates/de/pager.tmpl b/templates/de/pager.tmpl
deleted file mode 100644
index 1164045a3..000000000
--- a/templates/de/pager.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TABLE CLASS="inset" SUMMARY="Seitenverwaltung">
-<TR>
- <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Vorherige anzeigen"></FORM>:&nbsp;}</TD>
- <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Nächste anzeigen &#x25b6;"></FORM>:&nbsp;}</TD>
-</TR>
-</TABLE>
diff --git a/templates/de/printer-accept.tmpl b/templates/de/printer-accept.tmpl
deleted file mode 100644
index 3a610c032..000000000
--- a/templates/de/printer-accept.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Aufträge von {is_class?Klasse:Drucker} {printer_name} akzeptieren</H2>
-
-<P>{is_class?Klasse:Drucker} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-aktzeptiert jetzt Aufträge.</P>
-
-</DIV>
diff --git a/templates/de/printer-added.tmpl b/templates/de/printer-added.tmpl
deleted file mode 100644
index e09ce018a..000000000
--- a/templates/de/printer-added.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Drucker hinzufügen</H2>
-
-<P>Drucker <A HREF="/printers/{printer_name}">{printer_name}</A> wurde erfolgreich
-hinzufügt.
-
-</DIV>
diff --git a/templates/de/printer-configured.tmpl b/templates/de/printer-configured.tmpl
deleted file mode 100644
index 8ff9a60fb..000000000
--- a/templates/de/printer-configured.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Standardeinstellungen für {printer_name} festlegen</H2>
-
-<P>Standardeinstellungen für {OP=set-class-options?Klasse <A HREF="/classes/{printer_name}">:Drucker <A HREF="/printers/{printer_name}">}{printer_name}</A>
-wurden erfolgreich gesetzt.
-
-</DIV>
diff --git a/templates/de/printer-confirm.tmpl b/templates/de/printer-confirm.tmpl
deleted file mode 100644
index 2a5890f9b..000000000
--- a/templates/de/printer-confirm.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Drucker {printer_name} löschen</H2>
-
-<P><B>Warnung:</B> Sind Sie sicher, dass Sie den Drucker
-{printer_name} löschen wollen?</P>
-
-<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="delete-printer"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Drucker löschen"></FORM></P>
-
-</DIV>
diff --git a/templates/de/printer-default.tmpl b/templates/de/printer-default.tmpl
deleted file mode 100644
index 6bfd7fc54..000000000
--- a/templates/de/printer-default.tmpl
+++ /dev/null
@@ -1,13 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{is_class?Klasse:Drucker} {printer_name} als Standard festlegen</H2>
-
-<P>{is_class?Klasse:Drucker} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-wurde zum Standarddrucker für diesen Server gemacht.</P>
-
-<BLOCKQUOTE><B>Notiz:</B> Die Einstellungen des Standarddruckers
-welche von Benutzern mittels dem <TT>lpoptions</TT> Befehl gesetzt wurden,
-überschreiben diese Einstellung.</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/de/printer-deleted.tmpl b/templates/de/printer-deleted.tmpl
deleted file mode 100644
index 4e03ae631..000000000
--- a/templates/de/printer-deleted.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Drucker {printer_name} löschen</H2>
-
-<P>Drucker {printer_name} wurde erfolgreich gelöscht.
-
-</DIV>
diff --git a/templates/de/printer-jobs-header.tmpl b/templates/de/printer-jobs-header.tmpl
deleted file mode 100644
index b563995f4..000000000
--- a/templates/de/printer-jobs-header.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Aufträge</H3>
-</DIV>
diff --git a/templates/de/printer-modified.tmpl b/templates/de/printer-modified.tmpl
deleted file mode 100644
index cd9792d41..000000000
--- a/templates/de/printer-modified.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Drucker {printer_name} ändern</H2>
-
-<P>Drucker <A HREF="/printers/{printer_name}">{printer_name}</A> wurde
-erfolgreich geändert.
-
-</DIV>
diff --git a/templates/de/printer-purge.tmpl b/templates/de/printer-purge.tmpl
deleted file mode 100644
index 2cfffce69..000000000
--- a/templates/de/printer-purge.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Aufträge für {is_class?die Klasse:den Drucker} {printer_name} verwerfen</H2>
-
-<P>Aufträge für {is_class?die Klasse:den Drucker} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-wurden verworfen.</P>
-
-</DIV>
diff --git a/templates/de/printer-reject.tmpl b/templates/de/printer-reject.tmpl
deleted file mode 100644
index 867fe40ee..000000000
--- a/templates/de/printer-reject.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Aufträge für {is_class?die Klasse:den Drucker} {printer_name} ablehnen</H2>
-
-<P>{is_class?Die Klasse:Der Drucker} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-akzeptiert keine weiteren Aufträge.</P>
-
-</DIV>
diff --git a/templates/de/printer-start.tmpl b/templates/de/printer-start.tmpl
deleted file mode 100644
index 7a78568e6..000000000
--- a/templates/de/printer-start.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{is_class?Die Klasse:Den Drucker} {printer_name} fortfahren</H2>
-
-<P>{is_class?Die Klassen:Der Drucker} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-wird fortgesetzt.</P>
-
-</DIV>
diff --git a/templates/de/printer-stop.tmpl b/templates/de/printer-stop.tmpl
deleted file mode 100644
index b304bd929..000000000
--- a/templates/de/printer-stop.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{is_class?Die Klasse:Den Drucker} {printer_name} anhalten</H2>
-
-<P>{is_class?Die Klasse:Der Drucker} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-wurde angehalten.</P>
-
-</DIV>
diff --git a/templates/de/printer.tmpl b/templates/de/printer.tmpl
deleted file mode 100644
index 3b702b119..000000000
--- a/templates/de/printer.tmpl
+++ /dev/null
@@ -1,49 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?Im Leerlauf:{printer_state=4?Beschäftigt:Angehalten}},
-{printer_is_accepting_jobs=0?Aufträge werden ablehnt:Aufträge werden akzeptiert},
-{server_is_sharing_printers=0?Keine (Server):{printer_is_shared=0?Keine:}} Netzfreigabe{default_name={printer_name}?, Standarddrucker:}, {printer_is_colormanaged=0?Kein Farbmanagement:Farbmanagement})</H2>
-
-<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
-<OPTION VALUE="">Wartung</OPTION>
-<OPTION VALUE="print-test-page">Testseite drucken</OPTION>
-{printer_commands~.*Clean.*?<OPTION VALUE="clean-print-heads">Druckköpfe reinigen</OPTION>:}
-{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">Selbsttest-Seite drucken</OPTION>:}
-{printer_state=5?<OPTION VALUE="start-printer">Drucker starten</OPTION>:<OPTION VALUE="stop-printer">Drucker stoppen</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Aufträge akzeptieren</OPTION>:<OPTION VALUE="reject-jobs">Aufträge ablehnen</OPTION>}
-<OPTION VALUE="move-jobs">Alle Aufträge verschieben</OPTION>
-<OPTION VALUE="purge-jobs">Alle Aufträge abbrechen</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
-<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
-<OPTION VALUE="">Administration</OPTION>
-<OPTION VALUE="modify-printer">Drucker ändern</OPTION>
-<OPTION VALUE="delete-printer">Drucker löschen</OPTION>
-<OPTION VALUE="set-printer-options">Standardeinstellungen festlegen</OPTION>
-<OPTION VALUE="set-as-default">Als Standard festlegen</OPTION>
-<OPTION VALUE="set-allowed-users">Erlaubte Benutzer festlegen</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Beschreibung:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Ort:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Treiber:</TH><TD>{printer_make_and_model} ({color_supported=1?color:grayscale}{sides_supported?, 2-sided printing:})<BR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Verbindung:</TH><TD>{device_uri}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Einstellungen:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:unknown}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
-
-
diff --git a/templates/de/printers-header.tmpl b/templates/de/printers-header.tmpl
deleted file mode 100644
index 7ee520e0f..000000000
--- a/templates/de/printers-header.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Keine Drucker:Zeige {#printer_name} von {total} Drucker{total=1?:n}}.</P>
diff --git a/templates/de/printers.tmpl b/templates/de/printers.tmpl
deleted file mode 100644
index 360154fec..000000000
--- a/templates/de/printers.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-{#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="Druckerliste">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Queue Name <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Queue Name <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Beschreibung</TH><TH>Ort</TH><TH>Marke und Modell</TH><TH>Status</TH></TR>
-</THEAD>
-<TBODY>
-{[printer_name]
-<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{printer_make_and_model}</TD><TD>{printer_state=3?Im Leerlauf:{printer_state=4?Beschäftigt:Angehalten}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/de/replace-ppd.tmpl b/templates/de/replace-ppd.tmpl
deleted file mode 100644
index 3cb11f207..000000000
--- a/templates/de/replace-ppd.tmpl
+++ /dev/null
@@ -1,40 +0,0 @@
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Ersetze {printer_name} PPD Datei</H2>
-
-<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="/admin">
-
-<INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-<INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">
-<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{?printer_name}">
-<INPUT TYPE="HIDDEN" NAME="PER_QUEUE" VALUE="1">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_IS_COLORMANAGED" VALUE="{?printer_is_colormanaged}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">
-
-<table>
-<tr>
-<TR>
-<TH CLASS="label">Stelle PPD Datei bereit:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
-TYPE="FILE" NAME="PPD_FILE">
-</TR>
-<TR>
-<TD>
-<Input TYPE=SUBMIT VALUE=Upload>
-</TD>
-</TR>
-</table>
-
-</form>
-
-</DIV>
-
-
diff --git a/templates/de/restart.tmpl b/templates/de/restart.tmpl
deleted file mode 100644
index d7efa7bb0..000000000
--- a/templates/de/restart.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Einstellungen ändern</H2>
-
-<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> Bitte warten Sie während der Server neu startet...</P>
-
-</DIV>
diff --git a/templates/de/samba-export.tmpl b/templates/de/samba-export.tmpl
deleted file mode 100644
index e856ff56a..000000000
--- a/templates/de/samba-export.tmpl
+++ /dev/null
@@ -1,55 +0,0 @@
-<SCRIPT TYPE="text/javascript"><!--
-function select_printers() {
- var list = document.export_samba.EXPORT_NAME;
- var sel = document.export_samba.EXPORT_ALL.checked;
-
- for (i = 0; i < list.length; i ++) {
- list.options[i].selected = sel;
- }
-}
---></SCRIPT>
-
-<FORM METHOD="POST" ACTION="/admin/" NAME="export_samba">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
-
-<H2 CLASS="title">Drucker für Samba freigeben</H2>
-
-{error?<P>Kann Drucker nicht für Samba freigeben\:</P>
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-<P>Consult the <A HREF="/admin/log/error_log"
-TARGET="_blank">Fehlerprotokoll</A> Datei um mehr Informationen zu erhalten.</P>:
-<P>Diese Seite erlaubt es Ihnen Drucker für Samba bereitzustellen
-damit auf diese mittels Windows Clients über die Desktopsymbole
-<VAR>Netzwerk Nachbarn</VAR> oder <VAR>Netzwerkumgebung</VAR>
-zugegriffen werden kann. Sie müssen zuerst einen
-Windows PostScript Druckerteiber installieren wie diese in der Hilfe für <A
-HREF="/help/man-cupsaddsmb.html"
-TARGET="_blank">cupsaddsmb(8)</A> beschrieben ist.</P>}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Drucker:</TH>
-<TD>
-<SELECT NAME="EXPORT_NAME" SIZE="10" MULTIPLE>
-{[printer_name]<OPTION VALUE="{printer_name}"{export_all? SELECTED:{printer_export? SELECTED:}}>{printer_name}}
-</SELECT><BR>
-<INPUT TYPE="CHECKBOX" NAME="EXPORT_ALL"{export_all? CHECKED:}
-onChange="select_printers()"> Alle Drucker freigeben
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Samba Benutzername:</TH>
-<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (benötigt)</TD>
-</TR>
-<TR>
-<TH CLASS="label">Samba Passwort:</TH>
-<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (benötigt)</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Drucker für Samba freigeben"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/de/samba-exported.tmpl b/templates/de/samba-exported.tmpl
deleted file mode 100644
index 0e088ed51..000000000
--- a/templates/de/samba-exported.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P>Drucker wurden erfolgreich für Samba freigegeben.</P>
diff --git a/templates/de/search.tmpl b/templates/de/search.tmpl
deleted file mode 100644
index c4e89b8e3..000000000
--- a/templates/de/search.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
-{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
-{ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
-
-<P ALIGN="CENTER"><B>Suche in
-{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?Klassen:{SECTION=jobs?Aufträgen:Drucker}}}:</B>
-<INPUT TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER="" AUTOSAVE="org.cups.{SECTION}" RESULTS="20"> <INPUT
-TYPE="SUBMIT" VALUE="Suchen"> <INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Leeren"></P>
-
-</FORM>
diff --git a/templates/de/set-printer-options-header.tmpl b/templates/de/set-printer-options-header.tmpl
deleted file mode 100644
index 54ddd2555..000000000
--- a/templates/de/set-printer-options-header.tmpl
+++ /dev/null
@@ -1,26 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Standardeinstellungen für {printer_name} festlegen</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{HAVE_AUTOCONFIGURE?<INPUT TYPE="SUBMIT" NAME="AUTOCONFIGURE" VALUE="Drucker nach Standardeinstellungen fragen">:}
-
-<SCRIPT TYPE="text/javascript"><!--
-function update_paramtable(option)
-{
- var cb = document.getElementById("select-" + option)
- var paramstable = document.getElementById(option + "-params");
- if (cb.value == "Custom")
- paramstable.style.display = "table";
- else
- paramstable.style.display = "none";
-}
---></SCRIPT>
-
-<H3 CLASS="title">{[group_id]
-<A HREF="#{group_id}">{group}</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</H3>
-
-<DIV CLASS="tabs">
diff --git a/templates/de/set-printer-options-trailer.tmpl b/templates/de/set-printer-options-trailer.tmpl
deleted file mode 100644
index 11adc7012..000000000
--- a/templates/de/set-printer-options-trailer.tmpl
+++ /dev/null
@@ -1,16 +0,0 @@
-</DIV>
-
-<SCRIPT TYPE="text/javascript"><!--
-// Hide custom options parameters for browsers that understand Javascript
-var paramtables = document.getElementsByName("paramtable");
-for (var i = 0; i < paramtables.length; i++)
-{
- var opt = paramtables[i].id.substr(0, paramtables[i].id.lastIndexOf("-"));
- var cb = document.getElementById("select-" + opt);
- if (cb.value != "Custom")
- paramtables[i].style.display = "none";
-}
---></SCRIPT>
-</FORM>
-
-</DIV>
diff --git a/templates/de/subscription-added.tmpl b/templates/de/subscription-added.tmpl
deleted file mode 100644
index f5fd1ab2e..000000000
--- a/templates/de/subscription-added.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>Subskription {subscription_name} wurde erfolgreich hinzugefügt.</P>
-
-</DIV>
diff --git a/templates/de/subscription-canceled.tmpl b/templates/de/subscription-canceled.tmpl
deleted file mode 100644
index b82a6bd75..000000000
--- a/templates/de/subscription-canceled.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>Subskription #{notify_subscription_id} wurde gekündigt.</P>
-
-</DIV>
diff --git a/templates/de/test-page.tmpl b/templates/de/test-page.tmpl
deleted file mode 100644
index 2a202fe58..000000000
--- a/templates/de/test-page.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Drucker Testseite auf {printer_name}</H2>
-
-<P>Testseite gesendet; Auftrags ID ist <A HREF="/{SECTION}/{printer_name}">
-{printer_name}-{job_id}</A>.</P>
-
-</DIV>
diff --git a/templates/de/trailer.tmpl b/templates/de/trailer.tmpl
deleted file mode 100644
index 7dcde724b..000000000
--- a/templates/de/trailer.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS und das CUPS Logo sind
-eingetragene Warenzeichen der <A HREF="http://www.apple.com">Apple Inc.</A> CUPS
-ist urheberrechtlich geschützt 2007-2014 von Apple Inc, alle Rechte vorbehalten.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/templates/de/users.tmpl b/templates/de/users.tmpl
deleted file mode 100644
index 6def23790..000000000
--- a/templates/de/users.tmpl
+++ /dev/null
@@ -1,30 +0,0 @@
-<DIV CLASS="indent">
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{OP}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-{IS_CLASS?<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="{IS_CLASS}">:}
-
-<H2 CLASS="title">Erlaubte Benutzer für {printer_name}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Benutzer:</TH>
-<TD>
-<INPUT TYPE='TEXT' NAME='users' SIZE='60' VALUE='{?requesting_user_name_allowed}{?requesting_user_name_denied}'>
-<BR>
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-allowed' {requesting_user_name_allowed?checked:}>Erlaube diesen Benutzern zu drucken
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>Verweigere diesen Benutzern zu drucken
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>
-<INPUT TYPE="SUBMIT" VALUE="Erlaubte Benutzer festlegen">
-</TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
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()
}
</SCRIPT>
-<DIV CLASS="indent">
-
<H2 CLASS="title">Edit Configuration File</H2>
<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
@@ -20,5 +18,3 @@ function reset_config()
onClick="reset_config();"></P>
</FORM>
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">{?title} {?printer_name} Error</H2>
<P>Error:</P>
<BLOCKQUOTE>Unknown operation "{op}"!</BLOCKQUOTE>
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">{?title} {?printer_name} Error</H2>
<P>{?message?{message}:Error}:</P>
<BLOCKQUOTE>{error}</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/es/add-class.tmpl b/templates/es/add-class.tmpl
index 6d61ebe35..f163d289b 100644
--- a/templates/es/add-class.tmpl
+++ b/templates/es/add-class.tmpl
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">A&ntilde;adir clase</H2>
<FORM METHOD="POST" ACTION="/admin">
@@ -37,4 +35,3 @@
</TABLE>
</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/es/add-printer.tmpl b/templates/es/add-printer.tmpl
index eedc3db40..6ccd325f3 100644
--- a/templates/es/add-printer.tmpl
+++ b/templates/es/add-printer.tmpl
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">A&ntilde;adir impresora</H2>
<FORM METHOD="POST" ACTION="/admin">
@@ -44,4 +42,3 @@ Compartir esta impresora</TD>
</TABLE>
</FORM>
-</DIV>
diff --git a/templates/es/admin.tmpl b/templates/es/admin.tmpl
index cce1f147a..780dd55a0 100644
--- a/templates/es/admin.tmpl
+++ b/templates/es/admin.tmpl
@@ -1,102 +1,97 @@
-<TABLE CLASS="indent" SUMMARY="Tareas de administraci&oacute;n">
-<TR><TD VALIGN="TOP">
-
-<H2 CLASS="title">Impresoras</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="SUBMIT" VALUE="A&ntilde;adir impresora"></FORM>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="find-new-printers"><INPUT TYPE="SUBMIT" VALUE="Encontrar nuevas impresoras"></FORM>
-<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Administrar impresoras"></FORM>
-{have_samba?<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba"><INPUT TYPE="SUBMIT" VALUE="Exportar impresoras a Samba"></FORM>:}
-</P>
-
-<H2 CLASS="title">Clases</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-class"><INPUT TYPE="SUBMIT" VALUE="A&ntilde;adir clase"></FORM>
-<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Administrar clases"></FORM>
-</P>
-
-<H2 CLASS="title">Trabajos</H2>
-
-<P>
-<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Administrar trabajos"></FORM>
-</P>
-
-</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
-
-<H2 CLASS="title">Servidor</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server"><INPUT TYPE="SUBMIT" VALUE="Editar archivo configuraci&oacute;n"></FORM>
-<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Ver archivo de registro de accesos"></FORM>
-<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Ver archivo de registro de errores"></FORM>
-<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Ver archivo de registro de p&aacute;ginas"></FORM>
-</P>
-
-{SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
-<BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-
-{ADVANCEDSETTINGS?<P><B>Configuraci&oacute;n del servidor\:</B></P>
-
-<P><A HREF="/admin/">Avanzada <SMALL>&#x25bc;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="HIDDEN" NAME="ADVANCEDSETTINGS" VALUE="YES">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Compartir impresoras conectadas a este sistema<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N&uacute;mero m&aacute;ximo de clientes\:
-<INPUT TYPE="TEXT" NAME="MAX_CLIENTS" VALUE="{?max_clients}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Permitir la impresi&oacute;n desde Internet<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Anunciar la interfaz web<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Permitir administraci&oacute;n remota<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Usar autentificaci&oacute;n Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Permitir a los usuarios cancelar cualquier trabajo (no s&oacute;lo los suyos propios)<BR>
-<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Preservar el historial de trabajos<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N&uacute;mero m&aacute;ximo de trabajos (0 sin l&iacute;mite)\:
-<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retener metadatos\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retener documentos\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Guardar informaci&oacute;n de depuraci&oacute;n para b&uacute;squeda de problemas<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tama&ntilde;o m&aacute;ximo del archivo de registro\:
-<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
-
-:<P><B>Configuraci&oacute;n del servidor:</B></P>
-
-<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Avanzada <SMALL>&#x25b6;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Compartir impresoras conectadas a este sistema<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Permitir la impresi&oacute;n desde Internet<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Permitir administraci&oacute;n remota<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Usar autentificaci&oacute;n Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Permitir a los usuarios cancelar cualquier trabajo (no s&oacute;lo los suyos propios)<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Guardar informaci&oacute;n de depuraci&oacute;n para b&uacute;squeda de problemas</P>
-
-}
-<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Cambiar configuraci&oacute;n"></P>
-
-</FORM>}
-
-</TD></TR>
-</TABLE>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Subscripciones RSS</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription"><INPUT TYPE="SUBMIT" VALUE="A&ntilde;adir subscripci&oacute;n RSS"></FORM>
-</P>
-
-</DIV>
-
-{notify_subscription_id?<TABLE CLASS="list" SUMMARY="Subscripciones RSS">
-<THEAD><TR><TH>Nombre</TH><TH>Eventos</TH><TH>Nombre de la cola</TH></TR></THEAD>
-<TBODY>{[notify_subscription_id]
-<TR><TD><A HREF="{notify_recipient_uri}">{notify_recipient_name}</A><BR>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-subscription"><INPUT TYPE="HIDDEN" NAME="notify_subscription_id" VALUE="{notify_subscription_id}"><INPUT TYPE="SUBMIT" VALUE="Cancelar subscripci&oacute;n RSS"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:Todas las colas}</TD></TR>}
-</TBODY>
-</TABLE>:}
+<div class="row">
+ <div class="halves">
+ <H2 CLASS="title">Impresoras</H2>
+
+ <P>
+ <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="SUBMIT" VALUE="A&ntilde;adir impresora"></FORM>
+ <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="find-new-printers"><INPUT TYPE="SUBMIT" VALUE="Encontrar nuevas impresoras"></FORM>
+ <FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Administrar impresoras"></FORM>
+ {have_samba?<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba"><INPUT TYPE="SUBMIT" VALUE="Exportar impresoras a Samba"></FORM>:}
+ </P>
+
+ <H2 CLASS="title">Clases</H2>
+
+ <P>
+ <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-class"><INPUT TYPE="SUBMIT" VALUE="A&ntilde;adir clase"></FORM>
+ <FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Administrar clases"></FORM>
+ </P>
+
+ <H2 CLASS="title">Trabajos</H2>
+
+ <P>
+ <FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Administrar trabajos"></FORM>
+ </P>
+ </div>
+ <div class="halves">
+ <H2 CLASS="title">Servidor</H2>
+
+ <P>
+ <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server"><INPUT TYPE="SUBMIT" VALUE="Editar archivo configuraci&oacute;n"></FORM>
+ <FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Ver archivo de registro de accesos"></FORM>
+ <FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Ver archivo de registro de errores"></FORM>
+ <FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Ver archivo de registro de p&aacute;ginas"></FORM>
+ </P>
+
+ {SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
+ <BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
+
+ <FORM METHOD="POST" ACTION="/admin">
+ <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+
+ {ADVANCEDSETTINGS?<P><B>Configuraci&oacute;n del servidor\:</B></P>
+
+ <P><A HREF="/admin/">Avanzada <SMALL>&#x25bc;</SMALL></A><BR>
+ <INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
+ <INPUT TYPE="HIDDEN" NAME="ADVANCEDSETTINGS" VALUE="YES">
+ <INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Compartir impresoras conectadas a este sistema<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N&uacute;mero m&aacute;ximo de clientes\:
+ <INPUT TYPE="TEXT" NAME="MAX_CLIENTS" VALUE="{?max_clients}" SIZE="6"><BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Permitir la impresi&oacute;n desde Internet<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Anunciar la interfaz web<BR>
+ <INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Permitir administraci&oacute;n remota<BR>
+ {have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Usar autentificaci&oacute;n Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
+ <INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Permitir a los usuarios cancelar cualquier trabajo (no s&oacute;lo los suyos propios)<BR>
+ <INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Preservar el historial de trabajos<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N&uacute;mero m&aacute;ximo de trabajos (0 sin l&iacute;mite)\:
+ <INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retener metadatos\:
+ <INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Retener documentos\:
+ <INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
+ <INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Guardar informaci&oacute;n de depuraci&oacute;n para b&uacute;squeda de problemas<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tama&ntilde;o m&aacute;ximo del archivo de registro\:
+ <INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
+
+ :<P><B>Configuraci&oacute;n del servidor:</B></P>
+
+ <P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Avanzada <SMALL>&#x25b6;</SMALL></A><BR>
+ <INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
+ <INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Compartir impresoras conectadas a este sistema<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Permitir la impresi&oacute;n desde Internet<BR>
+ <INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Permitir administraci&oacute;n remota<BR>
+ {have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Usar autentificaci&oacute;n Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
+ <INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Permitir a los usuarios cancelar cualquier trabajo (no s&oacute;lo los suyos propios)<BR>
+ <INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Guardar informaci&oacute;n de depuraci&oacute;n para b&uacute;squeda de problemas</P>
+
+ }
+ <P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Cambiar configuraci&oacute;n"></P>
+
+ </FORM>}
+ </div>
+</div>
+
+<div class="row">
+ <H2 CLASS="title">Subscripciones RSS</H2>
+
+ <P>
+ <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription"><INPUT TYPE="SUBMIT" VALUE="A&ntilde;adir subscripci&oacute;n RSS"></FORM>
+ </P>
+
+ {notify_subscription_id?<TABLE CLASS="list" SUMMARY="Subscripciones RSS">
+ <THEAD><TR><TH>Nombre</TH><TH>Eventos</TH><TH>Nombre de la cola</TH></TR></THEAD>
+ <TBODY>{[notify_subscription_id]
+ <TR><TD><A HREF="{notify_recipient_uri}">{notify_recipient_name}</A><BR>
+ <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-subscription"><INPUT TYPE="HIDDEN" NAME="notify_subscription_id" VALUE="{notify_subscription_id}"><INPUT TYPE="SUBMIT" VALUE="Cancelar subscripci&oacute;n RSS"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:Todas las colas}</TD></TR>}
+ </TBODY>
+ </TABLE>:}
+</div>
diff --git a/templates/es/choose-device.tmpl b/templates/es/choose-device.tmpl
index 9f314fdf6..8e38af281 100644
--- a/templates/es/choose-device.tmpl
+++ b/templates/es/choose-device.tmpl
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:A&ntilde;adir impresora}</H2>
{CUPS_GET_DEVICES_DONE?:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
@@ -50,5 +48,5 @@ VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
</TR>
</TABLE>
-</FORM>
-</DIV>
+</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
+ALT="Indicador de ocupado"> Buscando impresoras...</P>}
diff --git a/templates/es/choose-make.tmpl b/templates/es/choose-make.tmpl
index c846de4df..93ef2424b 100644
--- a/templates/es/choose-make.tmpl
+++ b/templates/es/choose-make.tmpl
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:A&ntilde;adir impresora}</H2>
<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
@@ -61,4 +59,3 @@ TYPE="FILE" NAME="PPD_FILE"></TD>
</TABLE>
</FORM>
-</DIV>
diff --git a/templates/es/choose-model.tmpl b/templates/es/choose-model.tmpl
index 497d4b1d1..8a5a4ba90 100644
--- a/templates/es/choose-model.tmpl
+++ b/templates/es/choose-model.tmpl
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:A&ntilde;adir impresora}</H2>
<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
@@ -57,4 +55,3 @@ TYPE="FILE" NAME="PPD_FILE"></TD>
</TABLE>
</FORM>
-</DIV>
diff --git a/templates/es/choose-serial.tmpl b/templates/es/choose-serial.tmpl
index 1f734b9cd..0b05302f3 100644
--- a/templates/es/choose-serial.tmpl
+++ b/templates/es/choose-serial.tmpl
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:A&ntilde;adir impresora}</H2>
<FORM METHOD="POST" ACTION="/admin">
@@ -49,4 +47,3 @@
</TABLE>
</FORM>
-</DIV>
diff --git a/templates/es/choose-uri.tmpl b/templates/es/choose-uri.tmpl
index 46ea17b13..3b6e78324 100644
--- a/templates/es/choose-uri.tmpl
+++ b/templates/es/choose-uri.tmpl
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:A&ntilde;adir impresora}</H2>
<FORM METHOD="POST" ACTION="/admin">
@@ -41,4 +39,3 @@ en red"</A> para escoger el URI adecuado a usar con su impresora.</P>
</TABLE>
</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/es/class-added.tmpl b/templates/es/class-added.tmpl
index 867c8d928..0767e80bd 100644
--- a/templates/es/class-added.tmpl
+++ b/templates/es/class-added.tmpl
@@ -1,7 +1,4 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">A&ntilde;adir clase</H2>
<P>Se ha a&ntilde;adido con &eacute;xito la clase <A HREF="/classes/{printer_name}">{printer_name}</A>.
-</DIV>
diff --git a/templates/es/class-confirm.tmpl b/templates/es/class-confirm.tmpl
index a30ff726f..26f62c4d7 100644
--- a/templates/es/class-confirm.tmpl
+++ b/templates/es/class-confirm.tmpl
@@ -1,10 +1,6 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Borrar clase {printer_name}</H2>
<P><B>Advertencia:</B> &iquest;Est&aacute; seguro de querer borrar la clase
{printer_name}?</P>
<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="op" VALUE="delete-class"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Borrar clase"></FORM></P>
-
-</DIV>
diff --git a/templates/es/class-deleted.tmpl b/templates/es/class-deleted.tmpl
index ced78ad70..248a7dedd 100644
--- a/templates/es/class-deleted.tmpl
+++ b/templates/es/class-deleted.tmpl
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Borrar clase {printer_name}</H2>
<P>Se ha borrado con &eacute;xito la clase {printer_name}.
-
-</DIV> \ No newline at end of file
diff --git a/templates/es/class-jobs-header.tmpl b/templates/es/class-jobs-header.tmpl
index f25951b7a..f57181316 100644
--- a/templates/es/class-jobs-header.tmpl
+++ b/templates/es/class-jobs-header.tmpl
@@ -1,3 +1 @@
-<DIV CLASS="indent">
<H3 CLASS="title">Trabajos</H3>
-</DIV>
diff --git a/templates/es/class-modified.tmpl b/templates/es/class-modified.tmpl
index d5ae2a72c..42db8dae7 100644
--- a/templates/es/class-modified.tmpl
+++ b/templates/es/class-modified.tmpl
@@ -1,6 +1,3 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Modificar clase {printer_name}</H2>
<P>Se ha modificado con &eacute;xito la clase <A HREF="/classes/{printer_name}">{printer_name}</A>.
-</DIV> \ No newline at end of file
diff --git a/templates/es/class.tmpl b/templates/es/class.tmpl
index 5eea4f195..78d4bb9da 100644
--- a/templates/es/class.tmpl
+++ b/templates/es/class.tmpl
@@ -1,4 +1,3 @@
-<DIV CLASS="indent">
<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
({printer_state=3?inactiva:{printer_state=4?procesando:en pausa}},
{printer_is_accepting_jobs=0?rechazando trabajos:aceptando trabajos},
@@ -40,5 +39,3 @@
media={media_default?{media_default}:desconocido}
{sides_default?sides={sides_default}:}</TD></TR>
</TABLE>
-
-</DIV>
diff --git a/templates/es/command.tmpl b/templates/es/command.tmpl
index ba50560fa..fa843a7a8 100644
--- a/templates/es/command.tmpl
+++ b/templates/es/command.tmpl
@@ -1,12 +1,8 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">{title} en {printer_name}</H2>
<P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
ALIGN="ABSMIDDLE" ALT="Indicador de ocupado"> }Trabajo de comando de impresora
{job_state=3?pendiente:{job_state=4?retenido:
{job_state=5?procesando:{job_state=6?parado:
-{job_state=7?cancelado:{job_state=8?anulado:completado}}}}}}{job_state=9?:{job_printer_state_message?,
+{job_state=7?cancelado:{job_state=8?interrumpido:completado}}}}}}{job_state=9?:{job_printer_state_message?,
<EM>"{job_printer_state_message}"</EM>:}}</P>
-
-</DIV>
diff --git a/templates/es/edit-config.tmpl b/templates/es/edit-config.tmpl
index a0c663436..817f8cca1 100644
--- a/templates/es/edit-config.tmpl
+++ b/templates/es/edit-config.tmpl
@@ -5,8 +5,6 @@ function reset_config()
}
</SCRIPT>
-<DIV CLASS="indent">
-
<H2 CLASS="title">Editar archivo de configuraci&oacute;n</H2>
<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
@@ -20,5 +18,3 @@ function reset_config()
onClick="reset_config();"></P>
</FORM>
-
-</DIV>
diff --git a/templates/es/error-op.tmpl b/templates/es/error-op.tmpl
index d584108e8..7def5ce84 100644
--- a/templates/es/error-op.tmpl
+++ b/templates/es/error-op.tmpl
@@ -1,9 +1,5 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Error en {?printer_name}: {?title}</H2>
<P>Error:</P>
<BLOCKQUOTE>Operaci&oacute;n desconocida "{op}".</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/es/error.tmpl b/templates/es/error.tmpl
index f652ea2cf..f149a1b57 100644
--- a/templates/es/error.tmpl
+++ b/templates/es/error.tmpl
@@ -1,9 +1,5 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Error en {?printer_name}: {?title}</H2>
<P>{?message?{message}:Error}:</P>
<BLOCKQUOTE>{error}</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/es/header.tmpl.in b/templates/es/header.tmpl.in
index 3e974c802..044966157 100644
--- a/templates/es/header.tmpl.in
+++ b/templates/es/header.tmpl.in
@@ -1,38 +1,35 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>{title} - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
- {refresh_page?<META HTTP-EQUIV="Refresh" CONTENT="{refresh_page}">:}
- <SCRIPT TYPE="text/javascript"><!--
- /* Show an error if cookies are disabled */
- function check_cookies() {
- if (!navigator.cookieEnabled) {
- document.getElementById('body').innerHTML = 'This page uses cookies to prevent common cross-site attacks. Please enable cookies in your browser.';
- }
+<!DOCTYPE HTML>
+<html>
+ <head>
+ <link rel="stylesheet" href="/cups.css" type="text/css">
+ <link rel="shortcut icon" href="/apple-touch-icon.png" type="image/png">
+ <meta charset="utf-8">
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ {refresh_page?<meta http-equiv="refresh" content="{refresh_page}">:}
+ <meta http-equiv="X-UA-Compatible" content="IE=9">
+ <meta name="viewport" content="width=device-width">
+ <script type="text/javascript"><!--
+ /* Show an error if cookies are disabled */
+ function check_cookies() {
+ if (!navigator.cookieEnabled) {
+ document.getElementById('body').innerHTML = 'Esta p&aacute;gina usa cookies para prevenir ataques comunes de sitios. Por favor, active las cookies en su navegador.';
}
- --></SCRIPT>
-</HEAD>
-<BODY ONLOAD="check_cookies();">
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="unsel"><A HREF="/">&nbsp;&nbsp;Inicio&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;Administraci&oacute;n&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=classes?:un}sel"><A HREF="/classes/">&nbsp;&nbsp;Clases&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=help?:un}sel"><A HREF="/help/">&nbsp;&nbsp;Ayuda&nbsp;en&nbsp;l&iacute;nea&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;Trabajos&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;Impresoras&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Buscar en la ayuda"
-VALUE="{SECTION=help?{?QUERY}:}" AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-<TR><TD COLSPAN="9">&nbsp;</TD></TR>
-</TABLE>
-<DIV ID="body">
+ }
+ --></SCRIPT>
+ <title>{title} - CUPS @CUPS_VERSION@@CUPS_REVISION@</title>
+ </head>
+ <body onload="check_cookies();">
+ <div class="header">
+ <ul>
+ <li><a href="http://www.cups.org/" target="_blank">CUPS.org</a></li>
+ <li><a href="/">Inicio</a></li>
+ <li><a {SECTION=admin?class="active" :}href="/admin">Administraci&oacute;n</a></li>
+ <li><a {SECTION=classes?class="active" :}href="/classes/">Clases</a></li>
+ <li><a {SECTION=help?class="active" :}href="/help/">Ayuda</a></li>
+ <li><a {SECTION=jobs?class="active" :}href="/jobs/">Trabajos</a></li>
+ <li><a {SECTION=printers?class="active" :}href="/printers/">Impresoras</a></li>
+ </ul>
+ </div>
+ <div class="body">
+ <div class="row">
+ <h1>{title}</h1>
diff --git a/templates/es/help-header.tmpl b/templates/es/help-header.tmpl
index 3e7fef929..b05b4b1b3 100644
--- a/templates/es/help-header.tmpl
+++ b/templates/es/help-header.tmpl
@@ -1,4 +1,3 @@
-<DIV CLASS="indent">
<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
@@ -31,21 +30,12 @@ AUTOSAVE="org.cups.help" RESULTS="20">
{QTEXT?</UL>:}
:<P>No hay coincidencias.</P>}
<HR NOSHADE>:}
-{HELPTITLE?<H1>{HELPTITLE}</H1>
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Ver versi&oacute;n imprimible"></FORM>:
+{HELPTITLE?<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Ver versi&oacute;n imprimible"></FORM>:
<H1>Ayuda en l&iacute;nea</H1>
-<P>Esta es la interfaz de ayuda en l&iacute;nea de CUPS. Introduzca las palabras
-a buscar aqu&iacute; encima o haga clic en cualquiera de los enlaces de la
-documentaci&oacute;n para visualizar la informaci&oacute;n de ayuda en l&iacute;nea.</P>
+<P>Esta es la interfaz de ayuda en l&iacute;nea de CUPS. Introduzca las palabras a buscar aqu&iacute; encima o haga clic en cualquiera de los enlaces de la documentaci&oacute;n para visualizar la informaci&oacute;n de ayuda en l&iacute;nea.</P>
-<P>Si es nuevo en CUPS, lea la p&aacute;gina "<a
-href="/help/overview.html">Informaci&oacute;n general de CUPS</a>". Los usuarios veteranos
-deber&iacute;an leer la p&aacute;gina "<a href="/help/whatsnew.html">Qu&eacute; hay de nuevo en CUPS
-1.6</a>".</P>
+<P>Si es nuevo en CUPS, lea la p&aacute;gina "<a href="/help/overview.html">Informaci&oacute;n general de CUPS</a>".</P>
-<P>La <A HREF="http://www.cups.org/">p&aacute;gina de inicio de CUPS</A> tambi&eacute;n
-proporciona muchos recursos, incluyendo foros de discusi&oacute;n de usuarios, respuestas
-a preguntas frecuentes, y un formulario para el env&iacute;o de informes de errores y
-peticiones de mejoras.</P>}
+<P>La <A HREF="http://www.cups.org/">p&aacute;gina de inicio de CUPS</A> tambi&eacute;n proporciona muchos recursos, incluyendo foros de discusi&oacute;n de usuarios, respuestas a preguntas frecuentes, y un formulario para el env&iacute;o de informes de errores y peticiones de mejoras.</P>}
diff --git a/templates/es/help-trailer.tmpl b/templates/es/help-trailer.tmpl
index 4c1ebed85..e69de29bb 100644
--- a/templates/es/help-trailer.tmpl
+++ b/templates/es/help-trailer.tmpl
@@ -1 +0,0 @@
-</DIV>
diff --git a/templates/es/job-cancel.tmpl b/templates/es/job-cancel.tmpl
index 6a414274c..e8ef1bb26 100644
--- a/templates/es/job-cancel.tmpl
+++ b/templates/es/job-cancel.tmpl
@@ -1,7 +1,4 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Cancelar trabajo {job_id}</H2>
<P>Se ha cancelado el <A HREF="{job_printer_uri}">Trabajo {job_id}</A>.
-</DIV>
diff --git a/templates/es/job-hold.tmpl b/templates/es/job-hold.tmpl
index 3136f9d8c..74257e63a 100644
--- a/templates/es/job-hold.tmpl
+++ b/templates/es/job-hold.tmpl
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Retener trabajo {job_id}</H2>
<P>Se ha retenido el <A HREF="{job_printer_uri}">Trabajo {job_id}</A>.
-
-</DIV>
diff --git a/templates/es/job-move.tmpl b/templates/es/job-move.tmpl
index e6aac39a5..02639b333 100644
--- a/templates/es/job-move.tmpl
+++ b/templates/es/job-move.tmpl
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
<FORM METHOD="POST" ACTION="/{SECTION}/{job_id?:{printer_name}}">
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
@@ -23,5 +21,3 @@
</TABLE>
</FORM>
-
-</DIV>
diff --git a/templates/es/job-moved.tmpl b/templates/es/job-moved.tmpl
index 8eb7a9816..e2a1911cb 100644
--- a/templates/es/job-moved.tmpl
+++ b/templates/es/job-moved.tmpl
@@ -1,8 +1,4 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">{job_id?Mover trabajo {job_id}:Mover todos los trabajos}</H2>
<P>Se {job_id?ha movido el <A HREF="/jobs/{job_id}">Trabajo {job_id}</A>:han movido todos los trabajos} a
<A HREF="{job_printer_uri}">{job_printer_name}</A>.</P>
-
-</DIV>
diff --git a/templates/es/job-release.tmpl b/templates/es/job-release.tmpl
index d925e5fe5..0b56ba599 100644
--- a/templates/es/job-release.tmpl
+++ b/templates/es/job-release.tmpl
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Liberar trabajo {job_id}</H2>
<P>Se ha liberado el <A HREF="{job_printer_uri}">Trabajo {job_id}</A>.
-
-</DIV>
diff --git a/templates/es/job-restart.tmpl b/templates/es/job-restart.tmpl
index ee6c8e598..6e71de4ab 100644
--- a/templates/es/job-restart.tmpl
+++ b/templates/es/job-restart.tmpl
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Reimprimir trabajo {job_id}</H2>
<P>Se ha reiniciado el <A HREF="{job_printer_uri}">Trabajo {job_id}</A>.
-
-</DIV>
diff --git a/templates/es/jobs-header.tmpl b/templates/es/jobs-header.tmpl
index fe8b51fa8..abb9914b2 100644
--- a/templates/es/jobs-header.tmpl
+++ b/templates/es/jobs-header.tmpl
@@ -1,5 +1,5 @@
-<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Mostrar trabajos activos"></FORM>}
+{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Mostrar trabajos activos"></FORM>}
{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="Mostrar trabajos completados"></FORM>}
-{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Mostrar todos los trabajos"></FORM>}</DIV>
+{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Mostrar todos los trabajos"></FORM>}
<P ALIGN="CENTER">{total=0?No hay trabajos:Mostrando {#job_id} de {total} trabajo{total=1?:s}{?which_jobs=? activo{total=1?:s}:{which_jobs=all?: completado{total=1?:s}}}}.</P>
diff --git a/templates/es/jobs.tmpl b/templates/es/jobs.tmpl
index 1187513c4..65fb6cbb4 100644
--- a/templates/es/jobs.tmpl
+++ b/templates/es/jobs.tmpl
@@ -13,7 +13,7 @@
<TD>{job_media_sheets_completed=0?Desconocido:{?job_media_sheets_completed}}&nbsp;</TD>
<TD>{job_state=3?pendiente desde<BR>{time_at_creation}:{job_state=4?retenido desde<BR>{time_at_creation}:
{job_state=5?en proceso desde<BR>{time_at_processing}:{job_state=6?parado:
-{job_state=7?cancelado el<BR>{time_at_completed}:{job_state=8?anulado:completado el<BR>{time_at_completed}}}}}}}&nbsp;{job_printer_state_message?<BR>
+{job_state=7?cancelado el<BR>{time_at_completed}:{job_state=8?interrumpido:completado el<BR>{time_at_completed}}}}}}}&nbsp;{job_printer_state_message?<BR>
<EM>"{job_printer_state_message}"</EM>:}</TD>
<TD>
{job_preserved>0?{job_state>5?
diff --git a/templates/es/list-available-printers.tmpl b/templates/es/list-available-printers.tmpl
index 51e0eb982..5ae28ce00 100644
--- a/templates/es/list-available-printers.tmpl
+++ b/templates/es/list-available-printers.tmpl
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Impresoras disponibles</H2>
{#device_uri=0?<P>No se encuentran impresoras.</P>
@@ -7,5 +5,3 @@
<LI><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="HIDDEN" NAME="TEMPLATE_NAME" VALUE="{template_name}"><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="Local Printer"><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{device_make_and_model}"><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}"><INPUT TYPE="SUBMIT" VALUE="A&ntilde;adir esta impresora"></FORM>
{device_make_and_model} ({device_info})</LI>
}</UL>}
-
-</DIV>
diff --git a/templates/es/modify-class.tmpl b/templates/es/modify-class.tmpl
index a50b2bb72..2e1da3d2e 100644
--- a/templates/es/modify-class.tmpl
+++ b/templates/es/modify-class.tmpl
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Modificar clase {printer_name}</H2>
<FORM METHOD="POST" ACTION="/admin">
@@ -31,4 +29,3 @@
</TABLE>
</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/es/modify-printer.tmpl b/templates/es/modify-printer.tmpl
index 3c09da09e..d18d51721 100644
--- a/templates/es/modify-printer.tmpl
+++ b/templates/es/modify-printer.tmpl
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Modificar {printer_name}</H2>
<FORM METHOD="POST" ACTION="/admin">
@@ -39,4 +37,3 @@ Compartir esta impresora</TD>
</TABLE>
</FORM>
-</DIV>
diff --git a/templates/es/norestart.tmpl b/templates/es/norestart.tmpl
index ac0f96bab..5923a6778 100644
--- a/templates/es/norestart.tmpl
+++ b/templates/es/norestart.tmpl
@@ -1,8 +1,4 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Cambiar especificaciones</H2>
<p>No se ha reiniciado el servidor debido a que no se han hecho
cambios en la configuraci&oacute;n...</p>
-
-</DIV>
diff --git a/templates/es/printer-accept.tmpl b/templates/es/printer-accept.tmpl
index 63fab1b4c..f9a8efeef 100644
--- a/templates/es/printer-accept.tmpl
+++ b/templates/es/printer-accept.tmpl
@@ -1,9 +1,5 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Aceptar trabajos de la {is_class?clase:impresora} {printer_name}</H2>
<P>La {is_class?clase:impresora} <A
HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
ahora acepta trabajos.</P>
-
-</DIV>
diff --git a/templates/es/printer-added.tmpl b/templates/es/printer-added.tmpl
index 88c565bcf..4661e65e6 100644
--- a/templates/es/printer-added.tmpl
+++ b/templates/es/printer-added.tmpl
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">A&ntilde;adir impresora</H2>
<P>Se ha a&ntilde;adido con &eacute;xito la impresora <A HREF="/printers/{printer_name}">{printer_name}</A>.
-
-</DIV>
diff --git a/templates/es/printer-cancel-jobs.tmpl b/templates/es/printer-cancel-jobs.tmpl
new file mode 100644
index 000000000..35abeb4b7
--- /dev/null
+++ b/templates/es/printer-cancel-jobs.tmpl
@@ -0,0 +1,4 @@
+<H2 CLASS="title">Cancelar trabajos en {is_class?clase:impresora} {printer_name}</H2>
+
+<P>Se han cancelado todos los trabajos de la {is_class?clase:impresora} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>.</P>
diff --git a/templates/es/printer-configured.tmpl b/templates/es/printer-configured.tmpl
index d382264f9..026677fe4 100644
--- a/templates/es/printer-configured.tmpl
+++ b/templates/es/printer-configured.tmpl
@@ -1,8 +1,4 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Cambiar opciones predeterminadas de {printer_name}</H2>
<P>Se han establecido con &eacute;xito las opciones predeterminadas de la
{OP=set-class-options?clase <A HREF="/classes/{printer_name}">:impresora <A HREF="/printers/{printer_name}">}{printer_name}</A>.
-
-</DIV>
diff --git a/templates/es/printer-confirm.tmpl b/templates/es/printer-confirm.tmpl
index 1de104a63..71e479364 100644
--- a/templates/es/printer-confirm.tmpl
+++ b/templates/es/printer-confirm.tmpl
@@ -1,10 +1,6 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Borrar impresora {printer_name}</H2>
<P><B>Advertencia:</B> &iquest;Est&aacute; seguro de querer borrar la impresora
{printer_name}?</P>
<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="delete-printer"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Borrar impresora"></FORM></P>
-
-</DIV>
diff --git a/templates/es/printer-default.tmpl b/templates/es/printer-default.tmpl
index 68b61f267..87a3c3c81 100644
--- a/templates/es/printer-default.tmpl
+++ b/templates/es/printer-default.tmpl
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Poner la {is_class?clase:impresora} {printer_name} como predeterminada</H2>
<P>Se ha puesto como predeterminada en el servidor la {is_class?clase:impresora} <A
@@ -9,5 +7,3 @@ HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>.</P>
que haya sido activada por mediaci&oacute;n del comando
<TT>lpoptions</TT> tiene mayor preferencia que este ajuste
predeterminado.</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/es/printer-deleted.tmpl b/templates/es/printer-deleted.tmpl
index 8bf7db61e..2cda454ad 100644
--- a/templates/es/printer-deleted.tmpl
+++ b/templates/es/printer-deleted.tmpl
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Borrar impresora {printer_name}</H2>
<P>Se ha borrado con &eacute;xito la impresora {printer_name}.
-
-</DIV>
diff --git a/templates/es/printer-jobs-header.tmpl b/templates/es/printer-jobs-header.tmpl
index f25951b7a..f57181316 100644
--- a/templates/es/printer-jobs-header.tmpl
+++ b/templates/es/printer-jobs-header.tmpl
@@ -1,3 +1 @@
-<DIV CLASS="indent">
<H3 CLASS="title">Trabajos</H3>
-</DIV>
diff --git a/templates/es/printer-modified.tmpl b/templates/es/printer-modified.tmpl
index 9035dce4f..328c6eab8 100644
--- a/templates/es/printer-modified.tmpl
+++ b/templates/es/printer-modified.tmpl
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Modificar impresora {printer_name}</H2>
<P>Se ha modificado con &eacute;xito la impresora <A HREF="/printers/{printer_name}">{printer_name}</A>.
-
-</DIV> \ No newline at end of file
diff --git a/templates/es/printer-reject.tmpl b/templates/es/printer-reject.tmpl
index 637e13e00..889093522 100644
--- a/templates/es/printer-reject.tmpl
+++ b/templates/es/printer-reject.tmpl
@@ -1,9 +1,5 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Rechazar trabajos de la {is_class?clase:impresora} {printer_name}</H2>
<P>La {is_class?clase:impresora} <A
HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
ya no acepta trabajos.</P>
-
-</DIV>
diff --git a/templates/es/printer-start.tmpl b/templates/es/printer-start.tmpl
index 117afcdb0..79695f6d7 100644
--- a/templates/es/printer-start.tmpl
+++ b/templates/es/printer-start.tmpl
@@ -1,9 +1,5 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Reanudar la {is_class?clase:impresora} {printer_name}</H2>
<P>La {is_class?clase:impresora} <A
HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
ha sido reanudada.</P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/es/printer-stop.tmpl b/templates/es/printer-stop.tmpl
index af374941e..0e9e267a4 100644
--- a/templates/es/printer-stop.tmpl
+++ b/templates/es/printer-stop.tmpl
@@ -1,9 +1,5 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Pausar la {is_class?clase:impresora} {printer_name}</H2>
<P>La {is_class?clase:impresora} <A
HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
ha sido puesta en pausa.</P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/es/printer.tmpl b/templates/es/printer.tmpl
index 0ea10492f..f9838c4fa 100644
--- a/templates/es/printer.tmpl
+++ b/templates/es/printer.tmpl
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
({printer_state=3?inactiva:{printer_state=4?procesando:en pausa}},
{printer_is_accepting_jobs=0?rechazando trabajos:aceptando trabajos},
@@ -15,7 +13,7 @@
{printer_state=5?<OPTION VALUE="start-printer">Reanudar impresora</OPTION>:<OPTION VALUE="stop-printer">Pausar impresora</OPTION>}
{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Aceptar trabajos</OPTION>:<OPTION VALUE="reject-jobs">Rechazar trabajos</OPTION>}
<OPTION VALUE="move-jobs">Mover todos los trabajos</OPTION>
-<OPTION VALUE="purge-jobs">Cancelar todos los trabajos</OPTION>
+<OPTION VALUE="cancel-jobs">Cancelar todos los trabajos</OPTION>
</SELECT>
<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
</FORM>
@@ -43,5 +41,3 @@
media={media_default?{media_default}:desconocido}
{sides_default?sides={sides_default}:}</TD></TR>
</TABLE>
-
-</DIV>
diff --git a/templates/es/restart.tmpl b/templates/es/restart.tmpl
index 607351d2b..0a20077b4 100644
--- a/templates/es/restart.tmpl
+++ b/templates/es/restart.tmpl
@@ -1,8 +1,4 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Cambiar especificaciones</H2>
-<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
+<P><IMG SRC="data:image/gif;base64,R0lGODlhEAAQAIQAAP///wAAAPDw8IqKiuDg4EZGRnp6egAAAFhYWCQkJKysrL6+vhQUFJycnAQEBDY2NmhoaP///////////////////////////////////////////////////////////yH/C05FVFNDQVBFMi4wAwEAAAAh+QQABQD/ACwAAAAAEAAQAAAFdyAgAgIJIeWoAkRCCMdBkKtIHIngyMKsErPBYbADpkSCwhDmQCBethRB6Vj4kFCkQPG4IlWDgrNRIwnO4UKBXDufzQvDMaoSDBgFb886MiQadgNABAokfCwzBA8LCg0Egl8jAggGAA1kBIA1BAYzlyILczULC2UhACH5BAEFAB8ALAAAAAAQABAAAAV2ICACAmlAZTmOREEIyUEQjLKKxPHADhEvqxlgcGgkGI1DYSVAIAWMx+lwSKkICJ0QsHi9RgKBwnVTiRQQgwF4I4UFDQQEwi6/3YSGWRRmjhEETAJfIgMFCnAKM0KDV4EEEAQLiF18TAYNXDaSe3x6mjidN1s3IQAh+QQBBQAfACwAAAAAEAAQAAAFeCAgAgLZDGU5jgRECEUiCI+yioSDwDJyLKsXoHFQxBSHAoAAFBhqtMJg8DgQBgfrEsJAEAg4YhZIEiwgKtHiMBgtpg3wbUZXGO7kOb1MUKRFMysCChAoggJCIg0GC2aNe4gqQldfL4l/Ag1AXySJgn5LcoE3QXI3IQAh+QQBBQAfACwAAAAAEAAQAAAFdiAgAgLZNGU5joQhCEjxIssqEo8bC9BRjy9Ag7GILQ4QEoE0gBAEBcOpcBA0DoxSK/e8LRIHn+i1cK0IyKdg0VAoljYIg+GgnRrwVS/8IAkICyosBIQpBAMoKy9dImxPhS+GKkFrkX+TigtLlIyKXUF+NjagNiEAIfkEAQUAHwAsAAAAABAAEAAABWwgIAICaRhlOY4EIgjH8R7LKhKHGwsMvb4AAy3WODBIBBKCsYA9TjuhDNDKEVSERezQEL0WrhXucRUQGuik7bFlngzqVW9LMl9XWvLdjFaJtDFqZ1cEZUB0dUgvL3dgP4WJZn4jkomWNpSTIyEAIfkEAQUAHwAsAAAAABAAEAAABX4gIAICuSxlOY6CIgiD8RrEKgqGOwxwUrMlAoSwIzAGpJpgoSDAGifDY5kopBYDlEpAQBwevxfBtRIUGi8xwWkDNBCIwmC9Vq0aiQQDQuK+VgQPDXV9hCJjBwcFYU5pLwwHXQcMKSmNLQcIAExlbH8JBwttaX0ABAcNbWVbKyEAIfkEAQUAHwAsAAAAABAAEAAABXkgIAICSRBlOY7CIghN8zbEKsKoIjdFzZaEgUBHKChMJtRwcWpAWoWnifm6ESAMhO8lQK0EEAV3rFopIBCEcGwDKAqPh4HUrY4ICHH1dSoTFgcHUiZjBhAJB2AHDykpKAwHAwdzf19KkASIPl9cDgcnDkdtNwiMJCshACH5BAEFAB8ALAAAAAAQABAAAAV3ICACAkkQZTmOAiosiyAoxCq+KPxCNVsSMRgBsiClWrLTSWFoIQZHl6pleBh6suxKMIhlvzbAwkBWfFWrBQTxNLq2RG2yhSUkDs2b63AYDAoJXAcFRwADeAkJDX0AQCsEfAQMDAIPBz0rCgcxky0JRWE1AmwpKyEAIfkEAQUAHwAsAAAAABAAEAAABXkgIAICKZzkqJ4nQZxLqZKv4NqNLKK2/Q4Ek4lFXChsg5ypJjs1II3gEDUSRInEGYAw6B6zM4JhrDAtEosVkLUtHA7RHaHAGJQEjsODcEg0FBAFVgkQJQ1pAwcDDw8KcFtSInwJAowCCA6RIwqZAgkPNgVpWndjdyohACH5BAEFAB8ALAAAAAAQABAAAAV5ICACAimc5KieLEuUKvm2xAKLqDCfC2GaO9eL0LABWTiBYmA06W6kHgvCqEJiAIJiu3gcvgUsscHUERm+kaCxyxa+zRPk0SgJEgfIvbAdIAQLCAYlCj4DBw0IBQsMCjIqBAcPAooCBg9pKgsJLwUFOhCZKyQDA3YqIQAh+QQBBQAfACwAAAAAEAAQAAAFdSAgAgIpnOSonmxbqiThCrJKEHFbo8JxDDOZYFFb+A41E4H4OhkOipXwBElYITDAckFEOBgMQ3arkMkUBdxIUGZpEb7kaQBRlASPg0FQQHAbEEMGDSVEAA1QBhAED1E0NgwFAooCDWljaQIQCE5qMHcNhCkjIQAh+QQBBQAfACwAAAAAEAAQAAAFeSAgAgIpnOSoLgxxvqgKLEcCC65KEAByKK8cSpA4DAiHQ/DkKhGKh4ZCtCyZGo6F6iYYPAqFgYy02xkSaLEMV34tELyRYNEsCQyHlvWkGCzsPgMCEAY7Cg04Uk48LAsDhRA8MVQPEF0GAgqYYwSRlycNcWskCkApIyEAOw==" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
ALT="Indicador de ocupado"> Por favor espere mientras se reinicia el servidor...</P>
-
-</DIV>
diff --git a/templates/es/set-printer-options-header.tmpl b/templates/es/set-printer-options-header.tmpl
index 8a2740b3b..91a607432 100644
--- a/templates/es/set-printer-options-header.tmpl
+++ b/templates/es/set-printer-options-header.tmpl
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Establecer opciones predeterminadas de {printer_name}</H2>
<FORM METHOD="POST" ACTION="/admin">
diff --git a/templates/es/set-printer-options-trailer.tmpl b/templates/es/set-printer-options-trailer.tmpl
index 11adc7012..b92988a7f 100644
--- a/templates/es/set-printer-options-trailer.tmpl
+++ b/templates/es/set-printer-options-trailer.tmpl
@@ -12,5 +12,3 @@ for (var i = 0; i < paramtables.length; i++)
}
--></SCRIPT>
</FORM>
-
-</DIV>
diff --git a/templates/es/subscription-added.tmpl b/templates/es/subscription-added.tmpl
index 87ce96ae0..725b8bbc3 100644
--- a/templates/es/subscription-added.tmpl
+++ b/templates/es/subscription-added.tmpl
@@ -1,5 +1 @@
-<DIV CLASS="indent">
-
<P>Se ha a&ntilde;adido con &eacute;xito la subscripci&oacute;n {subscription_name}.</P>
-
-</DIV>
diff --git a/templates/es/subscription-canceled.tmpl b/templates/es/subscription-canceled.tmpl
index d6ac1711b..8a68f543d 100644
--- a/templates/es/subscription-canceled.tmpl
+++ b/templates/es/subscription-canceled.tmpl
@@ -1,5 +1 @@
-<DIV CLASS="indent">
-
<P>La subscripci&oacute;n #{notify_subscription_id} ha sido cancelada.</P>
-
-</DIV>
diff --git a/templates/es/test-page.tmpl b/templates/es/test-page.tmpl
index 763dab556..d4fbffaf3 100644
--- a/templates/es/test-page.tmpl
+++ b/templates/es/test-page.tmpl
@@ -1,8 +1,4 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Imprimir p&aacute;gina de prueba en {printer_name}</H2>
<P>P&aacute;gina de prueba enviada; el n&uacute;mero del trabajo es el <A HREF="/{SECTION}/{printer_name}">
{printer_name}-{job_id}</A>.</P>
-
-</DIV>
diff --git a/templates/es/trailer.tmpl b/templates/es/trailer.tmpl
index 0711c2624..1440da4c0 100644
--- a/templates/es/trailer.tmpl
+++ b/templates/es/trailer.tmpl
@@ -1,8 +1,5 @@
-</DIV></TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS y el logo de CUPS son marcas registradas de
-<A HREF="http://www.apple.com">Apple, Inc.</A> Los derechos de copia de CUPS
-2007-2014 son de Apple Inc. Todos los derechos reservados.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
+ </div>
+ </div>
+ <div class="footer">CUPS y el logo de CUPS son marcas registradas de <a href="http://www.apple.com">Apple Inc.</a> Derechos de autor &copy; 2007-2014 Apple Inc. Todos los derechos reservados.</div>
+ </body>
+</html>
diff --git a/templates/es/users.tmpl b/templates/es/users.tmpl
index a8a645e6f..3d24a5afe 100644
--- a/templates/es/users.tmpl
+++ b/templates/es/users.tmpl
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{OP}">
@@ -27,4 +25,3 @@
</TABLE>
</FORM>
-</DIV>
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 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Ajouter une classe</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nom:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Peux contenir n'importe quel caract&egrave;re sauf "/", "#", et espace)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Description:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Description compr&eacute;hensible comme "HP LaserJet Recto/Verso")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Emplacement:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Emplacement compr&eacute;hensible comme "Lab 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Membres:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Ajouter la classe"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/fr/add-printer.tmpl b/templates/fr/add-printer.tmpl
deleted file mode 100644
index 22dc07b11..000000000
--- a/templates/fr/add-printer.tmpl
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Ajouter une imprimante</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
-{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nom:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
-<SMALL>(Peux contenir n'importe quel caract&egrave;re sauf "/", "#", et espace)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Description:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_INFO}"><BR>
-<SMALL>(Description compr&eacute;hensible comme "HP LaserJet Recto/Verso")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Emplacement:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_LOCATION}"><BR>
-<SMALL>(Emplacement compr&eacute;hensible comme "Lab 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Connexion:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Partage:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Partager cette imprimante</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continuer"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/fr/add-rss-subscription.tmpl b/templates/fr/add-rss-subscription.tmpl
deleted file mode 100644
index e98ee1cce..000000000
--- a/templates/fr/add-rss-subscription.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription">
-
-<H2 CLASS="title">S'abonner &agrave; un flux RSS</H2>
-
-<TABLE SUMMARY="S'abonner &agrave; un flux RSS">
-<TR>
-<TH CLASS="label">Nom:</TH>
-<TD COLSPAN="5"><INPUT TYPE="TEXT" NAME="SUBSCRIPTION_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?SUBSCRIPTION_NAME}"><BR>
-<SMALL>(Peux contenir n'importe quel caract&egrave;re sauf "/", "#", et espace)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">File:</TH>
-<TD COLSPAN="5"><SELECT NAME="PRINTER_URI" SIZE="10"><OPTION VALUE="#ALL#"{?PRINTER_URI=#ALL#? SELECTED:}>Toutes les files</OPTION>{[printer_name]<OPTION VALUE="{printer_uri_supported}"{?PRINTER_URI={printer_uri_supported}? SELECTED:}>{printer_name}</OPTION>}</SELECT></TD>
-</TR>
-<TR VALIGN="TOP">
-<TH CLASS="label">Ev&eacute;nements:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CREATED" {?EVENT_JOB_CREATED}>T&acirc;ches cr&eacute;es<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_COMPLETED" {?EVENT_JOB_COMPLETED}>T&acirc;ches finies<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_STOPPED" {?EVENT_JOB_STOPPED}>T&acirc;ches stopp&eacute;es<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>Options de t&acirc;che modifi&eacute;es</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_STOPPED" {?EVENT_PRINTER_STOPPED}>Files arr&ecirc;t&eacute;es<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_ADDED" {?EVENT_PRINTER_ADDED}>File ajout&eacute;e<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_MODIFIED" {?EVENT_PRINTER_MODIFIED}>File modifi&eacute;e<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_DELETED" {?EVENT_PRINTER_DELETED}>File supprim&eacute;e</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STARTED" {?EVENT_SERVER_STARTED}>Serveur d&eacute;marr&eacute;<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STOPPED" {?EVENT_SERVER_STOPPED}>Serveur arr&ecirc;t&eacute;<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_RESTARTED" {?EVENT_SERVER_RESTARTED}>Serveur red&eacute;marr&eacute;<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_AUDIT" {?EVENT_SERVER_AUDIT}>Audit de s&eacute;curit&eacute; du serveur</TD>
-</TR>
-<TR>
-<TH CLASS="label">Nombre maximum d'&eacute;v&eacute;nements:</TH>
-<TD COLSPAN="5"><INPUT TYPE="NUMBER" NAME="MAX_EVENTS" SIZE="4" MAXLENGTH="4" VALUE="{MAX_EVENTS?{MAX_EVENTS}:20}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD COLSPAN="5"><INPUT TYPE="SUBMIT" VALUE="S'abonner &agrave; un flux RSS"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/fr/admin.tmpl b/templates/fr/admin.tmpl
deleted file mode 100644
index 304e77bb7..000000000
--- a/templates/fr/admin.tmpl
+++ /dev/null
@@ -1,102 +0,0 @@
-<TABLE CLASS="indent" SUMMARY="T&acirc;ches d'Administration">
-<TR><TD VALIGN="TOP">
-
-<H2 CLASS="title">Imprimantes</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="SUBMIT" VALUE="Ajouter une imprimante"></FORM>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="find-new-printers"><INPUT TYPE="SUBMIT" VALUE="Trouver de nouvelles imprimantes"></FORM>
-<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="G&eacute;rer les Imprimantes"></FORM>
-{have_samba?<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba"><INPUT TYPE="SUBMIT" VALUE="Exporter les imprimantes vers Samba"></FORM>:}
-</P>
-
-<H2 CLASS="title">Classes</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-class"><INPUT TYPE="SUBMIT" VALUE="Ajouter une classe"></FORM>
-<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="G&eacute;rer les Classes"></FORM>
-</P>
-
-<H2 CLASS="title">T&acirc;ches</H2>
-
-<P>
-<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="G&eacute;rer les T&acirc;ches"></FORM>
-</P>
-
-</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
-
-<H2 CLASS="title">Serveur</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server"><INPUT TYPE="SUBMIT" VALUE="Editer le Fichier de Configuration"></FORM>
-<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Visualiser Access Log"></FORM>
-<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Visualiser Error Log"></FORM>
-<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Visualiser Page Log"></FORM>
-</P>
-
-{SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
-<BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-
-{ADVANCEDSETTINGS?<P><B>Param&egrave;tres du serveur\:</B></P>
-
-<P><A HREF="/admin/">Avanc&eacute; <SMALL>&#x25bc;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="HIDDEN" NAME="ADVANCEDSETTINGS" VALUE="YES">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Partager les imprimantes connect&eacute;es &agrave; ce syst&egrave;me<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Nombre maximum de clients\:
-<INPUT TYPE="TEXT" NAME="MAX_CLIENTS" VALUE="{?max_clients}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Autoriser l'impression depuis Internet<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Annoncer l'interface Web<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Autoriser l'administration &agrave; distance<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Utiliser l'authentification Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Autoriser les utilisateurs &agrave; annuler n'importe quelle t&acirc;che (Pas seulement les leurs)<BR>
-<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Conserver l'historique des t&acirc;ches<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Nombre de t&acirc;ches\:
-<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Conserver les meta-donn&eacute;es\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Conserver les documents\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Enregistrer les informations de debug pour la r&eacute;solution de probl&egrave;mes<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Taille maximum du fichier de log\:
-<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
-
-:<P><B>Param&egrave;tres du Serveur:</B></P>
-
-<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Avanc&eacute; <SMALL>&#x25b6;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Partager les imprimantes connect&eacute;es &agrave; ce syst&egrave;me<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Autoriser l'impression depuis Internet<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Autoriser l'administration &agrave; distance<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Utiliser l'authentification Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Autoriser les utilisateurs &agrave; annuler n'importe quelle t&acirc;che (Pas seulement les leurs)<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Enregistrer les informations de debug pour la r&eacute;solution de probl&egrave;mes</P>
-
-}
-<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Modifier les param&egrave;tres"></P>
-
-</FORM>}
-
-</TD></TR>
-</TABLE>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Abonnements RSS</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription"><INPUT TYPE="SUBMIT" VALUE="Ajouter un abonnement RSS"></FORM>
-</P>
-
-</DIV>
-
-{notify_subscription_id?<TABLE CLASS="list" SUMMARY="Abonnements RSS">
-<THEAD><TR><TH>Nom</TH><TH>Ev&eacute;nements</TH><TH>Nom de la File</TH></TR></THEAD>
-<TBODY>{[notify_subscription_id]
-<TR><TD><A HREF="{notify_recipient_uri}">{notify_recipient_name}</A><BR>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-subscription"><INPUT TYPE="HIDDEN" NAME="notify_subscription_id" VALUE="{notify_subscription_id}"><INPUT TYPE="SUBMIT" VALUE="Annuler l'abonnement RSS"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:Toutes les Files}</TD></TR>}
-</TBODY>
-</TABLE>:}
diff --git a/templates/fr/choose-device.tmpl b/templates/fr/choose-device.tmpl
deleted file mode 100644
index 2bcb430c2..000000000
--- a/templates/fr/choose-device.tmpl
+++ /dev/null
@@ -1,53 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifier {printer_name}:Ajouter une imprimante}</H2>
-
-{CUPS_GET_DEVICES_DONE?<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-
-<TABLE>
-{op=add-printer?:<TR>
-<TH CLASS="label">Connexion courante\:</TH>
-<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
-{current_device_uri}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Imprimantes locales\:</TH>
-<TD>
-{[device_uri]{device_class!network?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}}
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Imprimantes R&eacute;seaux D&eacute;couvertes\:</TH>
-<TD>
-{[device_uri]{device_class=network?{device_uri~[a-z]+://?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}:}}
-</TD>
-</TR>
-<TR>
-<TR>
-<TH CLASS="label">Autres Imprimantes R&eacute;seaux\:</TH>
-<TD>
-{[device_uri]{device_class=network?{device_uri~[a-z]+://?:<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-}:}}
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continuer"></TD>
-</TR>
-</TABLE>
-
-</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Indicateur d'occupation"> Recherche en cours...</P>}
-
-</DIV>
diff --git a/templates/fr/choose-make.tmpl b/templates/fr/choose-make.tmpl
deleted file mode 100644
index d48dfc10f..000000000
--- a/templates/fr/choose-make.tmpl
+++ /dev/null
@@ -1,64 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifier {printer_name}:Ajouter une imprimante}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Nom:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Description:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Emplacement:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Connexion:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Partage:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?Ne pas:{?printer_is_shared=0?Ne pas:}} Partager cette Imprimante</TD>
-</TR>
-<TR>
-<TH CLASS="label">Marque:</TH>
-<TD>
-<SELECT NAME="PPD_MAKE" SIZE="10">
-{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continuer"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>&nbsp;</TD>
-</TR>
-<TR>
-<TH CLASS="label">Ou donner un fichier PPD:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
-TYPE="FILE" NAME="PPD_FILE"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?Ajouter une imprimante:Modifier l'imprimante}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/fr/choose-model.tmpl b/templates/fr/choose-model.tmpl
deleted file mode 100644
index 5428153da..000000000
--- a/templates/fr/choose-model.tmpl
+++ /dev/null
@@ -1,60 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifier {printer_name}:Ajouter une imprimante}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Nom:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Description:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Emplacement:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Connexion:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Partage:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?Ne pas:{?printer_is_shared=0?Ne pas:}} Partager cette imprimante</TD>
-</TR>
-<TR>
-<TH CLASS="label">Marque:</TH>
-<TD>{PPD_MAKE} <INPUT TYPE="SUBMIT" NAME="SELECT_MAKE" VALUE="Choisir un autre fabriquant"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Mod&egrave;le:</TH>
-<TD>
-<SELECT NAME="PPD_NAME" SIZE="10">
-{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Pilote courrant - {current_make_and_model}</OPTION>:}
-{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
-}</SELECT>
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Ou donner un fichier PPD:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
-TYPE="FILE" NAME="PPD_FILE"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?Ajouter une imprimante:Modifier une imprimante}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/fr/choose-serial.tmpl b/templates/fr/choose-serial.tmpl
deleted file mode 100644
index a1c72045d..000000000
--- a/templates/fr/choose-serial.tmpl
+++ /dev/null
@@ -1,52 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifier {printer_name}:Ajouter une imprimante}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Connexion:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Baud/s:</TH>
-<TD><SELECT NAME="BAUDRATE">
-{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Parit&eacute;:</TH>
-<TD><SELECT NAME="PARITY">
-<OPTION VALUE="none" {?parity=none?SELECTED:}>Aucune
-<OPTION VALUE="even" {?parity=even?SELECTED:}>Paire
-<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Impaire
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Bits de donn&eacute;es:</TH>
-<TD><SELECT NAME="BITS">
-<OPTION {?bits=8?SELECTED:}>8
-<OPTION {?bits=7?SELECTED:}>7
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Contr&ocirc;le de flux:</TH>
-<TD><SELECT NAME="FLOW">
-<OPTION VALUE="none" {?flow=none?SELECTED:}>Aucun
-<OPTION VALUE="soft" {?flow=soft?SELECTED:}>XON/XOFF (Logiciel)
-<OPTION VALUE="hard" {?flow=hard?SELECTED:}>RTS/CTS (Mat&egrave;riel)
-<OPTION VALUE="dtrdsr" {?flow=dtrdsr?SELECTED:}>DTR/DSR (Mat&egrave;riel)
-</SELECT></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continuer"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/fr/choose-uri.tmpl b/templates/fr/choose-uri.tmpl
deleted file mode 100644
index 72b4a5ee9..000000000
--- a/templates/fr/choose-uri.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifier {printer_name}:Ajouter une imprimante}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Connexion:</TH>
-<TD><INPUT TYPE="URL" SIZE="60" MAXLENGTH="1023" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>Exemples:
-<PRE>
- http://hostname:631/ipp/
- http://hostname:631/ipp/port1
-
- ipp://hostname/ipp/
- ipp://hostname/ipp/port1
-
- lpd://hostname/queue
-
- socket://hostname
- socket://hostname:9100
-</PRE>
-
-<P>Cf. <A HREF="/help/network.html" TARGET="_blank">"Imprimantes
-R&eacute;seaux"</A> pour construire l'URI &agrave; employ&eacute;e avec votre imprimante.</P>
-
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continuer"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/fr/class-added.tmpl b/templates/fr/class-added.tmpl
deleted file mode 100644
index 7ed164831..000000000
--- a/templates/fr/class-added.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Ajouter une Classe</H2>
-
-<P>La classe <A HREF="/classes/{printer_name}">{printer_name}</A> a &eacute;t&eacute; ajout&eacute;e
-avec succ&egrave;s.
-
-</DIV>
diff --git a/templates/fr/class-confirm.tmpl b/templates/fr/class-confirm.tmpl
deleted file mode 100644
index 276ec34f5..000000000
--- a/templates/fr/class-confirm.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Supprimer la classe {printer_name}</H2>
-
-<P><B>Attention:</B> Etes-vous sur(e) de vouloir supprimer la classe
-{printer_name}?</P>
-
-<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="op" VALUE="delete-class"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Supprimer la classe"></FORM></P>
-
-</DIV>
diff --git a/templates/fr/class-deleted.tmpl b/templates/fr/class-deleted.tmpl
deleted file mode 100644
index 6f8aefaf3..000000000
--- a/templates/fr/class-deleted.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Supprimer la classe {printer_name}</H2>
-
-<P>La classe {printer_name} a &eacute;t&eacute; supprim&eacute;e avec succ&egrave;s.
-
-</DIV> \ No newline at end of file
diff --git a/templates/fr/class-jobs-header.tmpl b/templates/fr/class-jobs-header.tmpl
deleted file mode 100644
index 551f47e47..000000000
--- a/templates/fr/class-jobs-header.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">T&acirc;ches</H3>
-</DIV>
diff --git a/templates/fr/class-modified.tmpl b/templates/fr/class-modified.tmpl
deleted file mode 100644
index e4b8b5a81..000000000
--- a/templates/fr/class-modified.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifier la Classe {printer_name}</H2>
-
-<P>La classe <A HREF="/classes/{printer_name}">{printer_name}</A> a &eacute;t&eacute;
-modifi&eacute;e avec succ&egrave;s.
-
-</DIV> \ No newline at end of file
diff --git a/templates/fr/class.tmpl b/templates/fr/class.tmpl
deleted file mode 100644
index 0d6d891fb..000000000
--- a/templates/fr/class.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?En attente:{printer_state=4?En cours d'impression:Arr&ecirc;t&eacute;}},
-{printer_is_accepting_jobs=0?Rejette les t&acirc;ches:Accepte les t&acirc;ches},
-{server_is_sharing_printers=0?Non:{printer_is_shared=0?Non:}} Partag&eacute;e{default_name={printer_name}?, Imprimante par d&eacute;faut:})</H2>
-
-<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
-<OPTION VALUE="">Maintenance</OPTION>
-<OPTION VALUE="print-test-page">Imprimer une page de test</OPTION>
-{printer_state=5?<OPTION VALUE="start-class">D&eacute;marrer la classe</OPTION>:<OPTION VALUE="stop-class">Arr&ecirc;ter la classe</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Accepter les t&acirc;ches</OPTION>:<OPTION VALUE="reject-jobs">Rejeter les t&acirc;ches</OPTION>}
-<OPTION VALUE="move-jobs">Transf&eacute;rer toutes les t&acirc;ches</OPTION>
-<OPTION VALUE="purge-jobs">Annuler toutes les t&acirc;ches</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
-<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="1">
-<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
-<OPTION VALUE="">Administration</OPTION>
-<OPTION VALUE="modify-class">Modifier la classe</OPTION>
-<OPTION VALUE="delete-class">Supprimer la classe</OPTION>
-<OPTION VALUE="set-class-options">R&eacute;initialiser les options</OPTION>
-<OPTION VALUE="set-as-default">D&eacute;finir par d&eacute;faut</OPTION>
-<OPTION VALUE="set-allowed-users">D&eacute;finir les autorisations</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Description:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Emplacement:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Membres:</TH><TD>{?member_uris=?None:{member_uris}}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">D&eacute;fauts:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:inconnu}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
diff --git a/templates/fr/classes-header.tmpl b/templates/fr/classes-header.tmpl
deleted file mode 100644
index 3c4d1ba58..000000000
--- a/templates/fr/classes-header.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Pas de classes:Affichage de {#printer_name} classe{total=1?:s}} sur {total}.</P>
diff --git a/templates/fr/classes.tmpl b/templates/fr/classes.tmpl
deleted file mode 100644
index 0a04ebe5f..000000000
--- a/templates/fr/classes.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-{#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="Liste des Classes">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Nom de la file <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nom de la file <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Description</TH><TH>Emplacement</TH><TH>Membres</TH><TH>&Eacute;tat</TH></TR>
-</THEAD>
-<TBODY>
-{[printer_name]
-<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{?member_uris=?Aucun:{member_uris}}</TD><TD>{printer_state=3?Inoccup&eacute;:{printer_state=4?En cours d'impression:En pause}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/fr/command.tmpl b/templates/fr/command.tmpl
deleted file mode 100644
index bcd0f9056..000000000
--- a/templates/fr/command.tmpl
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{title} sur {printer_name}</H2>
-
-<P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
-ALIGN="ABSMIDDLE" ALT="Busy Indicator"> }Commandes de t&acirc;che d'impression
-{job_state=3?en attente:{job_state=4?retenu:
-{job_state=5?en cours d'impression:{job_state=6?arr&ecirc;t&eacute;:
-{job_state=7?annul&eacute;:{job_state=8?annul&eacute;:termin&eacute;}}}}}}{job_state=9?:{job_printer_state_message?,
-<EM>"{job_printer_state_message}"</EM>:}}</P>
-
-</DIV>
diff --git a/templates/fr/edit-config.tmpl b/templates/fr/edit-config.tmpl
deleted file mode 100644
index 62d1414a9..000000000
--- a/templates/fr/edit-config.tmpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<SCRIPT TYPE="text/javascript">
-function reset_config()
-{
- document.cups.CUPSDCONF.value = "{?cupsdconf_default}";
-}
-</SCRIPT>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Edition du Fichier de Configuration</H2>
-
-<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-
-<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
-
-<P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="Enregistrer les modifications">
-<INPUT TYPE="BUTTON" VALUE="Utiliser le fichier de configuration par d&eacute;faut"
-onClick="reset_config();"></P>
-
-</FORM>
-
-</DIV>
diff --git a/templates/fr/error-op.tmpl b/templates/fr/error-op.tmpl
deleted file mode 100644
index ba5c91cd7..000000000
--- a/templates/fr/error-op.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} Erreur</H2>
-
-<P>Erreur:</P>
-
-<BLOCKQUOTE>Op&eacute;ration inconnue "{op}"!</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/fr/error.tmpl b/templates/fr/error.tmpl
deleted file mode 100644
index 2ce2451bb..000000000
--- a/templates/fr/error.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} Erreur</H2>
-
-<P>{?message?{message}:Erreur}:</P>
-
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/fr/header.tmpl.in b/templates/fr/header.tmpl.in
deleted file mode 100644
index d7f00c1b9..000000000
--- a/templates/fr/header.tmpl.in
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>{title} - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
- {refresh_page?<META HTTP-EQUIV="Refresh" CONTENT="{refresh_page}">:}
-</HEAD>
-<BODY>
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="unsel"><A HREF="/">&nbsp;&nbsp;Accueil&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;Administration&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=classes?:un}sel"><A HREF="/classes/">&nbsp;&nbsp;Classes&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=help?:un}sel"><A HREF="/help/">&nbsp;&nbsp;Aide&nbsp;En&nbsp;Ligne&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;T&acirc;ches&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;Imprimantes&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-VALUE="{SECTION=help?{?QUERY}:}" AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-<TR><TD COLSPAN="9">&nbsp;</TD></TR>
-</TABLE>
diff --git a/templates/fr/help-header.tmpl b/templates/fr/help-header.tmpl
deleted file mode 100644
index 751136d42..000000000
--- a/templates/fr/help-header.tmpl
+++ /dev/null
@@ -1,51 +0,0 @@
-<DIV CLASS="indent">
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
-{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
-
-<P ALIGN="CENTER"><B>Rechercher dans
-{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:tous les documents}}:</B> <INPUT
-TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER=""
-AUTOSAVE="org.cups.help" RESULTS="20">
-<INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="Rechercher">
-<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Vider"></P>
-
-</FORM>
-
-<!-- Bookmarks -->
-<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Contenus">
-<TR><TD>
-
-<H3 CLASS="title">Documents d'aide en ligne</H3>
-
-<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Tous les documents</A></P>
-<HR>
-
-{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
-}
-</TD></TR>
-</TABLE></DIV>
-
-{QUERY?<P>R&eacute;sultats de la recherche dans {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:tous les documents}}\:</P>
-{QTEXT?<UL>
-{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (in <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
-{QTEXT?</UL>:}
-:<P>Aucun r&eacute;sultat trouv&eacute;.</P>}
-<HR NOSHADE>:}
-{HELPTITLE?<H1>{HELPTITLE}</H1>
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Voir la version imprimable"></FORM>:
-
-<H1>Aide en ligne</H1>
-
-<P>Voici l'interface d'aide en ligne de CUPS. Entrez ci-dessus les mots &agrave; rechercher
-ou cliquez sur un lien ci-contre pour afficher
-l'aide en ligne du document.</P>
-
-<P>Si vous &ecirc;tes un nouvel utilisateur de CUPS, lisez la page "<a
-href="/help/overview.html">Pr&eacute;sentation de CUPS</a>". Il est conseill&eacute; aux utilisateurs habitu&eacute;s
-de lire la page "<a href="/help/whatsnew.html">Quoi de neuf dans CUPS
-1.6</a>".</P>
-
-<P>La <A HREF="http://www.cups.org/">page d'accueil de CUPS</A> donne aussi
-acc&egrave;s &agrave; de nombreuses ressources, comme des forums de discussion pour les
-utilisateurs, des r&eacute;ponses aux questions fr&eacute;quentes, et un formulaire pour
-soumettre des rapports de bug ou des demandes pour de nouvelles fonctionnalit&eacute;s.</P>}
diff --git a/templates/fr/help-printable.tmpl b/templates/fr/help-printable.tmpl
deleted file mode 100644
index 2463c1630..000000000
--- a/templates/fr/help-printable.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>{HELPTITLE}</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups-printable.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
-</HEAD>
-<BODY>
diff --git a/templates/fr/help-trailer.tmpl b/templates/fr/help-trailer.tmpl
deleted file mode 100644
index 4c1ebed85..000000000
--- a/templates/fr/help-trailer.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-</DIV>
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 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Annuler la T&acirc;che {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La t&acirc;che {job_id}</A> a &eacute;t&eacute; annul&eacute;e.
-
-</DIV>
diff --git a/templates/fr/job-hold.tmpl b/templates/fr/job-hold.tmpl
deleted file mode 100644
index 7c85916bb..000000000
--- a/templates/fr/job-hold.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Retenir la t&acirc;che {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La t&acirc;che {job_id}</A> a &eacute;t&eacute; retenue.
-
-</DIV>
diff --git a/templates/fr/job-move.tmpl b/templates/fr/job-move.tmpl
deleted file mode 100644
index 4cca760b7..000000000
--- a/templates/fr/job-move.tmpl
+++ /dev/null
@@ -1,27 +0,0 @@
-<DIV CLASS="indent">
-
-<FORM METHOD="POST" ACTION="/{SECTION}/{job_id?:{printer_name}}">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
-
-<H2 CLASS="title">{job_id?Transf&eacute;rer la t&acirc;che {job_id}:Transf&eacute;rer toutes les t&acirc;ches}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nouvelle destination:</TH>
-<TD>
-<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
-{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{job_id?Transf&eacute;rer la t&acirc;che:Transf&eacute;rer les t&acirc;ches}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-
-</DIV>
diff --git a/templates/fr/job-moved.tmpl b/templates/fr/job-moved.tmpl
deleted file mode 100644
index ba28d3345..000000000
--- a/templates/fr/job-moved.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{job_id?Transf&eacute;rer la t&acirc;che {job_id}:Transf&eacute;rer toutes les t&acirc;ches}</H2>
-
-<P>{job_id?<A HREF="/jobs/{job_id}">Job {job_id}</A>:Toutes les t&acirc;ches} transf&eacute;r&eacute;e(s) vers
-<A HREF="/{is_class?classes:printers}/{job_printer_name}">{job_printer_name}</A>.</P>
-
-</DIV>
diff --git a/templates/fr/job-release.tmpl b/templates/fr/job-release.tmpl
deleted file mode 100644
index 4bfc1b915..000000000
--- a/templates/fr/job-release.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Lib&eacute;rer la T&acirc;che {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La t&acirc;che {job_id}</A> a &eacute;t&eacute; lib&eacute;r&eacute;e.
-
-</DIV>
diff --git a/templates/fr/job-restart.tmpl b/templates/fr/job-restart.tmpl
deleted file mode 100644
index 085884025..000000000
--- a/templates/fr/job-restart.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">R&eacute;imprimer la T&acirc;che {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La t&acirc;che {job_id}</A> a &eacute;t&eacute; relanc&eacute;e.
-
-</DIV>
diff --git a/templates/fr/jobs-header.tmpl b/templates/fr/jobs-header.tmpl
deleted file mode 100644
index c86300599..000000000
--- a/templates/fr/jobs-header.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Affichage des t&acirc;ches actives"></FORM>}
-{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="Affichage des t&acirc;ches termin&eacute;es"></FORM>}
-{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Affichage de toutes les t&acirc;ches"></FORM>}</DIV>
-
-<P ALIGN="CENTER">{total=0?Pas de t&acirc;che:Affichage de {#job_id} t&acirc;che{total>1?s:}} {?which_jobs=?active{total>1?s:}:{which_jobs=all?:termin&eacute;e{total>1?s:}}} {total=0?:sur {total}} .</P>
diff --git a/templates/fr/jobs.tmpl b/templates/fr/jobs.tmpl
deleted file mode 100644
index c760d76d6..000000000
--- a/templates/fr/jobs.tmpl
+++ /dev/null
@@ -1,36 +0,0 @@
-{#job_id=0?:
-<TABLE CLASS="list" SUMMARY="Listes des t&acirc;ches">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> ID <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Nom</TH><TH>Utilisateur</TH><TH>Taille</TH><TH>Pages</TH><TH>&Eacute;tat</TH><TH>Contr&ocirc;le</TH></TR>
-</THEAD>
-<TBODY>
-{[job_id]
-<TR VALIGN="TOP">
-<TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id}{?phone? ({phone}):}&nbsp;</TD>
-<TD>{?job_name=?Inconnu:{job_name}}&nbsp;</TD>
-<TD>{?job_originating_user_name=?Withheld:{job_originating_user_name}}&nbsp;</TD>
-<TD>{job_k_octets}k&nbsp;</TD>
-<TD>{job_media_sheets_completed=0?Inconnu:{?job_media_sheets_completed}}&nbsp;</TD>
-<TD>{job_state=3?en attente depuis<BR>{time_at_creation}:{job_state=4?retenu depuis<BR>{time_at_creation}:
-{job_state=5?en cours d'impression depuis<BR>{time_at_processing}:{job_state=6?arr&ecirc;t&eacute;:
-{job_state=7?annul&eacute; &acirc;<BR>{time_at_completed}:{job_state=8?annul&eacute;:termin&eacute; &agrave;<BR>{time_at_completed}}}}}}}&nbsp;{job_printer_state_message?<BR>
-<EM>"{job_printer_state_message}"</EM>:}</TD>
-<TD>
-{job_preserved>0?{job_state>5?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="restart-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}"><INPUT TYPE="SUBMIT" VALUE="R&eacute;imprimer la t&acirc;che"></FORM>:}:}
-{job_state=4?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="release-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Lib&eacute;rer la t&acirc;che"></FORM>:}
-{job_state=3?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Retenir la t&acirc;che"></FORM>:}
-{job_state<7?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Annuler la t&acirc;che"></FORM>
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="move-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="SUBMIT" VALUE="Transf&eacute;rer la t&acirc;che"></FORM>:}
-&nbsp;</TD>
-</TR>
-}
-</TBODY>
-</TABLE>
-}
diff --git a/templates/fr/list-available-printers.tmpl b/templates/fr/list-available-printers.tmpl
deleted file mode 100644
index dcc9937b9..000000000
--- a/templates/fr/list-available-printers.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Imprimantes Disponibles</H2>
-
-{#device_uri=0?<P>Aucune imprimante trouv&eacute;e.</P>
-:<UL>{[device_uri]
-<LI><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="HIDDEN" NAME="TEMPLATE_NAME" VALUE="{template_name}"><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="Local Printer"><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{device_make_and_model}"><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}"><INPUT TYPE="SUBMIT" VALUE="Ajouter cette imprimante"></FORM>
-{device_make_and_model} ({device_info})</LI>
-}</UL>}
-
-</DIV>
diff --git a/templates/fr/modify-class.tmpl b/templates/fr/modify-class.tmpl
deleted file mode 100644
index 791c56041..000000000
--- a/templates/fr/modify-class.tmpl
+++ /dev/null
@@ -1,34 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifier la Classe {printer_name}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Description:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Emplacement:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Membres:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Modifier la classe"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/fr/modify-printer.tmpl b/templates/fr/modify-printer.tmpl
deleted file mode 100644
index 03e1b66d7..000000000
--- a/templates/fr/modify-printer.tmpl
+++ /dev/null
@@ -1,42 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifier {printer_name}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Description:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Description compr&eacute;hensible comme "HP LaserJet Recto/Verso")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Emplacement:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Emplacement compr&eacute;hensible comme "Lab 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Connexion:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Partage:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Partager cette imprimante</TD>
-</TR>
-<TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continuer"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/fr/norestart.tmpl b/templates/fr/norestart.tmpl
deleted file mode 100644
index 95965c6fb..000000000
--- a/templates/fr/norestart.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifier les Param&egrave;tres</H2>
-
-<P>Le serveur n'a pas &eacute;t&eacute; red&eacute;marr&eacute; car la configuration
-n'a pas &eacute;t&eacute; modifi&eacute;e...</P>
-
-</DIV>
diff --git a/templates/fr/option-boolean.tmpl b/templates/fr/option-boolean.tmpl
deleted file mode 100644
index e832ee102..000000000
--- a/templates/fr/option-boolean.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD>
-{[choices]<INPUT TYPE="RADIO" NAME="{keyword-1}" {choices={defchoice-1}?CHECKED:} VALUE="{choices}">{text}}
-</TD>
-</TR>
diff --git a/templates/fr/option-conflict.tmpl b/templates/fr/option-conflict.tmpl
deleted file mode 100644
index 7077aac5d..000000000
--- a/templates/fr/option-conflict.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<P><B>Erreur:</B> Les options suivantes sont incompatibles entre elles:</P>
-
-<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
-}</UL>
-
-<P>Veuillez modifier une ou plusieurs de ces options pour r&eacute;soudre les conflits.</P>
diff --git a/templates/fr/option-header.tmpl b/templates/fr/option-header.tmpl
deleted file mode 100644
index 464726a50..000000000
--- a/templates/fr/option-header.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="tab" ID="{group_id}">
-
-<H3 ALIGN="CENTER">{group}</H3>
-
-<TABLE WIDTH="100%">
diff --git a/templates/fr/option-pickmany.tmpl b/templates/fr/option-pickmany.tmpl
deleted file mode 100644
index 0da75e5d2..000000000
--- a/templates/fr/option-pickmany.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT></TD>
-</TR>
diff --git a/templates/fr/option-pickone.tmpl b/templates/fr/option-pickone.tmpl
deleted file mode 100644
index 3e3deebe9..000000000
--- a/templates/fr/option-pickone.tmpl
+++ /dev/null
@@ -1,18 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" ID="select-{keyword}" ONCHANGE="update_paramtable('{keyword}')">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT>
-{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
-<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
-<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Points</OPTION>
-<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Millim&eagrave;tres</OPTION>
-<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Centim&eagrave;tres</OPTION>
-<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Pouces</OPTION>
-<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Pieds</OPTION>
-<OPTION VALUE="m"{paramvalue=m? SELECTED:}>M&egrave;tres</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
-}</TABLE>
-</TD>:}
-</TR>
diff --git a/templates/fr/option-trailer.tmpl b/templates/fr/option-trailer.tmpl
deleted file mode 100644
index ceff313e8..000000000
--- a/templates/fr/option-trailer.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-</TABLE>
-
-<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="D&eacute;finir les options par d&eacute;faut"></P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/fr/pager.tmpl b/templates/fr/pager.tmpl
deleted file mode 100644
index c4e7ba5b8..000000000
--- a/templates/fr/pager.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TABLE CLASS="inset" SUMMARY="Mise en Page">
-<TR>
- <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Montrer les pr&eacute;c&eacute;dentes"></FORM>:&nbsp;}</TD>
- <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Montrer les suivantes &#x25b6;"></FORM>:&nbsp;}</TD>
-</TR>
-</TABLE>
diff --git a/templates/fr/printer-accept.tmpl b/templates/fr/printer-accept.tmpl
deleted file mode 100644
index cc25a09b3..000000000
--- a/templates/fr/printer-accept.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Accepte les T&acirc;ches sur {is_class?la classe:l'imprimante} {printer_name}</H2>
-
-<P>{is_class?La classe:L'imprimante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-accepte d&eacute;sormais les t&acirc;ches d'impression.</P>
-
-</DIV>
diff --git a/templates/fr/printer-added.tmpl b/templates/fr/printer-added.tmpl
deleted file mode 100644
index ce0a3b406..000000000
--- a/templates/fr/printer-added.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Ajouter une imprimante</H2>
-
-<P>L'imprimante <A HREF="/printers/{printer_name}">{printer_name}</A> a &eacute;t&eacute; ajout&eacute;e
-avec succ&egrave;s.
-
-</DIV>
diff --git a/templates/fr/printer-configured.tmpl b/templates/fr/printer-configured.tmpl
deleted file mode 100644
index 79ccb1572..000000000
--- a/templates/fr/printer-configured.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">D&eacute;finir les options par d&eacute;faut pour {printer_name}</H2>
-
-<P>{OP=set-class-options?Class <A HREF="/classes/{printer_name}">:l'imprimante <A HREF="/printers/{printer_name}">}{printer_name}</A>
- a &eacute;t&eacute; configur&eacute;e avec succ&egrave;s.
-
-</DIV>
diff --git a/templates/fr/printer-confirm.tmpl b/templates/fr/printer-confirm.tmpl
deleted file mode 100644
index 715ddd117..000000000
--- a/templates/fr/printer-confirm.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Supprimer l'imprimante {printer_name}</H2>
-
-<P><B>Warning:</B> Etes-vous s&ucirc;r(e) de vouloir supprimer l'imprimante
-{printer_name}?</P>
-
-<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="delete-printer"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Supprimer l'imprimante"></FORM></P>
-
-</DIV>
diff --git a/templates/fr/printer-default.tmpl b/templates/fr/printer-default.tmpl
deleted file mode 100644
index d7f3703fd..000000000
--- a/templates/fr/printer-default.tmpl
+++ /dev/null
@@ -1,13 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">D&eacute;finir {is_class?la classe:l'imprimante} {printer_name} comme imprimante par d&eacute;faut</H2>
-
-<P>{is_class?La classe:L'imprimante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-a &eacute;t&eacute; d&eacute;finie comme imprimante par d&eacute;faut du serveur.</P>
-
-<BLOCKQUOTE><B>Note:</B> Tout param&egrave;tre utilisateur d&eacute;fini via la commande
-<TT>lpoptions</TT> sera prioritaire sur le param&egrave;tre d&eacute;fini i&ccedil;i.
-</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/fr/printer-deleted.tmpl b/templates/fr/printer-deleted.tmpl
deleted file mode 100644
index 43af955f0..000000000
--- a/templates/fr/printer-deleted.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Supprimer l'imprimante {printer_name}</H2>
-
-<P>L'imprimante {printer_name} a &eacute;t&eacute; supprim&eacute;e avec succ&egrave;s.
-
-</DIV>
diff --git a/templates/fr/printer-jobs-header.tmpl b/templates/fr/printer-jobs-header.tmpl
deleted file mode 100644
index 551f47e47..000000000
--- a/templates/fr/printer-jobs-header.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">T&acirc;ches</H3>
-</DIV>
diff --git a/templates/fr/printer-modified.tmpl b/templates/fr/printer-modified.tmpl
deleted file mode 100644
index db962dc07..000000000
--- a/templates/fr/printer-modified.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifier l'Imprimante {printer_name}</H2>
-
-<P>L'imprimante <A HREF="/printers/{printer_name}">{printer_name}</A> a &eacute;t&eacute;
-modifi&eacute;e avec succ&egrave;s.
-
-</DIV> \ No newline at end of file
diff --git a/templates/fr/printer-purge.tmpl b/templates/fr/printer-purge.tmpl
deleted file mode 100644
index ce167b9d4..000000000
--- a/templates/fr/printer-purge.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Purger les T&acirc;ches sur {is_class?la classe:l'imprimante} {printer_name}</H2>
-
-<P>Toutes les t&acirc;ches de {is_class?la classe:l'imprimante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-ont &eacute;t&eacute; purg&eacute;es.</P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/fr/printer-reject.tmpl b/templates/fr/printer-reject.tmpl
deleted file mode 100644
index 36edcb817..000000000
--- a/templates/fr/printer-reject.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Rejeter les T&acirc;ches sur {is_class?Classe:Imprimante} {printer_name}</H2>
-
-<P>{is_class?La classe:L'imprimante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-n'accepte plus les t&acirc;ches d'impression.</P>
-
-</DIV>
diff --git a/templates/fr/printer-start.tmpl b/templates/fr/printer-start.tmpl
deleted file mode 100644
index f476c6238..000000000
--- a/templates/fr/printer-start.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">D&eacute;marrer {is_class?la classe:l'imprimante} {printer_name}</H2>
-
-<P>{is_class?La classe:L'imprimante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-a &eacute;t&eacute; d&eacute;marr&eacute;e.</P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/fr/printer-stop.tmpl b/templates/fr/printer-stop.tmpl
deleted file mode 100644
index eb36fb588..000000000
--- a/templates/fr/printer-stop.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Arr&ecirc;ter {is_class?la classe:l'imprimante} {printer_name}</H2>
-
-<P>{is_class?La classe:L'imprimante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-a &eacute;t&eacute; arr&ecirc;t&eacute;e.</P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/fr/printer.tmpl b/templates/fr/printer.tmpl
deleted file mode 100644
index ee5088369..000000000
--- a/templates/fr/printer.tmpl
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?Inoccup&eacute;e:{printer_state=4?En cours d'impression:En pause}},
-{printer_is_accepting_jobs=0?Rejette les t&acirc;ches:Accepte les t&acirc;ches},
-{server_is_sharing_printers=0?Non:{printer_is_shared=0?Non:}} Partag&eacute;e{default_name={printer_name}?, Imprimante par d&eacute;faut:})</H2>
-
-<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
-<OPTION VALUE="">Maintenance</OPTION>
-<OPTION VALUE="print-test-page">Imprimer une page de test</OPTION>
-{printer_commands~.*Clean.*?<OPTION VALUE="clean-print-heads">Nettoyer les t&ecirc;tes d'impression</OPTION>:}
-{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">Imprimer la page de test de l'imprimante</OPTION>:}
-{printer_state=5?<OPTION VALUE="start-printer">D&eacute;marrer l'imprimante</OPTION>:<OPTION VALUE="stop-printer">Arr&ecirc;ter l'imprimante</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Accepter les t&acirc;ches</OPTION>:<OPTION VALUE="reject-jobs">Rejeter les t&acirc;ches</OPTION>}
-<OPTION VALUE="move-jobs">Transf&eacute;rer toutes les t&acirc;ches</OPTION>
-<OPTION VALUE="purge-jobs">Purger toutes les t&acirc;ches</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
-<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
-<OPTION VALUE="">Administration</OPTION>
-<OPTION VALUE="modify-printer">Modifier l'imprimante</OPTION>
-<OPTION VALUE="delete-printer">Supprimer l'imprimante</OPTION>
-<OPTION VALUE="set-printer-options">D&eacute;finir les options de l'imprimante</OPTION>
-<OPTION VALUE="set-as-default">D&eacute;finir par d&eacute;faut</OPTION>
-<OPTION VALUE="set-allowed-users">D&eacute;finir les autorisations</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Description:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Emplacement:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Pilote:</TH><TD>{printer_make_and_model} ({color_supported=1?color:grayscale}{sides_supported?, 2-sided printing:})<BR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Connexion:</TH><TD>{device_uri}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">D&eacute;fauts:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:inconnu}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV> \ No newline at end of file
diff --git a/templates/fr/printers-header.tmpl b/templates/fr/printers-header.tmpl
deleted file mode 100644
index fe6753fce..000000000
--- a/templates/fr/printers-header.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Pas d'imprimante:Affichage de {#printer_name} sur {total} imprimante{total>1?s:}}.</P>
diff --git a/templates/fr/printers.tmpl b/templates/fr/printers.tmpl
deleted file mode 100644
index 2abc59c4b..000000000
--- a/templates/fr/printers.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-{#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="Liste des Imprimantes">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Nom de la file <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nom de la file <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Description</TH><TH>Emplacement</TH><TH>Marque et Mod&egrave;le</TH><TH>&Eacute;tat</TH></TR>
-</THEAD>
-<TBODY>
-{[printer_name]
-<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{printer_make_and_model}</TD><TD>{printer_state=3?Inoccup&eacute;e:{printer_state=4?En cours d'impression:En pause}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/fr/restart.tmpl b/templates/fr/restart.tmpl
deleted file mode 100644
index da164b7e2..000000000
--- a/templates/fr/restart.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifier les Param&egrave;tres</H2>
-
-<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> Veuillez patienter pendant que le serveur red&eacute;marre...</P>
-
-</DIV>
diff --git a/templates/fr/samba-export.tmpl b/templates/fr/samba-export.tmpl
deleted file mode 100644
index 94ff4fdcc..000000000
--- a/templates/fr/samba-export.tmpl
+++ /dev/null
@@ -1,54 +0,0 @@
-<SCRIPT TYPE="text/javascript"><!--
-function select_printers() {
- var list = document.export_samba.EXPORT_NAME;
- var sel = document.export_samba.EXPORT_ALL.checked;
-
- for (i = 0; i < list.length; i ++) {
- list.options[i].selected = sel;
- }
-}
---></SCRIPT>
-
-<FORM METHOD="POST" ACTION="/admin/" NAME="export_samba">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
-
-<H2 CLASS="title">Exporter les Imprimantes vers Samba</H2>
-
-{error?<P>Impossible d'exporter les imprimantes vers Samba\:</P>
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-<P>Consulter le fichier <A HREF="/admin/log/error_log"
-TARGET="_blank">error_log</A> pour plus d'informations.</P>:
-<P>Cette page vous permet d'exporter des imprimantes vers Samba de sorte que des
-clients Windows puissent y acc&eacute;der via l'ic&oacirc;ne <VAR>Voisinage r&eacute;seau</VAR> ou
-<VAR>Favoris r&eacute;seau</VAR> du bureau. Vous devez au pr&eacute;alable installer les
-pilotes Windows d'imprimante PostScript : cf. la page <i>man</i> <A
-HREF="/help/man-cupsaddsmb.html"
-TARGET="_blank">cupsaddsmb(8)</A>.</P>}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Imprimantes:</TH>
-<TD>
-<SELECT NAME="EXPORT_NAME" SIZE="10" MULTIPLE>
-{[printer_name]<OPTION VALUE="{printer_name}"{export_all? SELECTED:{printer_export? SELECTED:}}>{printer_name}}
-</SELECT><BR>
-<INPUT TYPE="CHECKBOX" NAME="EXPORT_ALL"{export_all? CHECKED:}
-onChange="select_printers()"> Exporter toutes les imprimantes
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Utilisateur Samba:</TH>
-<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (required)</TD>
-</TR>
-<TR>
-<TH CLASS="label">Mot de passe Samba:</TH>
-<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (required)</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Exporter les imprimantes vers Samba"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/fr/samba-exported.tmpl b/templates/fr/samba-exported.tmpl
deleted file mode 100644
index d4ad778da..000000000
--- a/templates/fr/samba-exported.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P>Les imprimantes ont &eacute;t&eacute; export&eacute;es vers Samba avec succ&egrave;s.</P>
diff --git a/templates/fr/search.tmpl b/templates/fr/search.tmpl
deleted file mode 100644
index 50b1b4e73..000000000
--- a/templates/fr/search.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
-{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
-{ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
-
-<P ALIGN="CENTER"><B>Rechercher dans
-{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?les classes:{SECTION=jobs?les t&acirc;ches:les imprimantes}}}:</B>
-<INPUT TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER="" AUTOSAVE="org.cups.{SECTION}" RESULTS="20"> <INPUT
-TYPE="SUBMIT" VALUE="Rechercher"> <INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Vider"></P>
-
-</FORM>
diff --git a/templates/fr/set-printer-options-header.tmpl b/templates/fr/set-printer-options-header.tmpl
deleted file mode 100644
index 12e0b1d1c..000000000
--- a/templates/fr/set-printer-options-header.tmpl
+++ /dev/null
@@ -1,26 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">D&eacute;finir les Options pour {printer_name}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{HAVE_AUTOCONFIGURE?<INPUT TYPE="SUBMIT" NAME="AUTOCONFIGURE" VALUE="Interroger l'imprimante pour les options par d&eacute;faut">:}
-
-<SCRIPT TYPE="text/javascript"><!--
-function update_paramtable(option)
-{
- var cb = document.getElementById("select-" + option)
- var paramstable = document.getElementById(option + "-params");
- if (cb.value == "Custom")
- paramstable.style.display = "table";
- else
- paramstable.style.display = "none";
-}
---></SCRIPT>
-
-<H3 CLASS="title">{[group_id]
-<A HREF="#{group_id}">{group}</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</H3>
-
-<DIV CLASS="tabs">
diff --git a/templates/fr/set-printer-options-trailer.tmpl b/templates/fr/set-printer-options-trailer.tmpl
deleted file mode 100644
index 11adc7012..000000000
--- a/templates/fr/set-printer-options-trailer.tmpl
+++ /dev/null
@@ -1,16 +0,0 @@
-</DIV>
-
-<SCRIPT TYPE="text/javascript"><!--
-// Hide custom options parameters for browsers that understand Javascript
-var paramtables = document.getElementsByName("paramtable");
-for (var i = 0; i < paramtables.length; i++)
-{
- var opt = paramtables[i].id.substr(0, paramtables[i].id.lastIndexOf("-"));
- var cb = document.getElementById("select-" + opt);
- if (cb.value != "Custom")
- paramtables[i].style.display = "none";
-}
---></SCRIPT>
-</FORM>
-
-</DIV>
diff --git a/templates/fr/subscription-added.tmpl b/templates/fr/subscription-added.tmpl
deleted file mode 100644
index 54ffe8fb0..000000000
--- a/templates/fr/subscription-added.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>L'abonnement au flux RSS {subscription_name} a &eacute;t&eacute; ajout&eacute; avec succ&egrave;s.</P>
-
-</DIV>
diff --git a/templates/fr/subscription-canceled.tmpl b/templates/fr/subscription-canceled.tmpl
deleted file mode 100644
index 54fbcefb2..000000000
--- a/templates/fr/subscription-canceled.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>L'abonnement #{notify_subscription_id} au flux RSS a &eacute;t&eacute; annul&eacute;.</P>
-
-</DIV>
diff --git a/templates/fr/test-page.tmpl b/templates/fr/test-page.tmpl
deleted file mode 100644
index 8be7c6f7c..000000000
--- a/templates/fr/test-page.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Imprimer une Page de Test sur {printer_name}</H2>
-
-<P>La page de test a &eacute;t&eacute; envoy&eacute;e; l'identifiant de la t&acirc;che est <A HREF="/{SECTION}/{printer_name}">
-{printer_name}-{job_id}</A>.</P>
-
-</DIV>
diff --git a/templates/fr/trailer.tmpl b/templates/fr/trailer.tmpl
deleted file mode 100644
index 9b8bac207..000000000
--- a/templates/fr/trailer.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS et le logo CUPS sont des marques d&eacute;pos&eacute;es de
-<A HREF="http://www.apple.com">Apple Inc.</A> CUPS est sous copyright 2007-2014 Apple
-Inc. Tous droits r&eacute;serv&eacute;s.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/templates/fr/users.tmpl b/templates/fr/users.tmpl
deleted file mode 100644
index cb9a0527b..000000000
--- a/templates/fr/users.tmpl
+++ /dev/null
@@ -1,30 +0,0 @@
-<DIV CLASS="indent">
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{OP}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-{IS_CLASS?<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="{IS_CLASS}">:}
-
-<H2 CLASS="title">Utilisateurs autoris&eacute;s &agrave; utiliser {printer_name}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Utilisateurs:</TH>
-<TD>
-<INPUT TYPE='TEXT' NAME='users' SIZE='60' VALUE='{?requesting_user_name_allowed}{?requesting_user_name_denied}'>
-<BR>
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-allowed' {requesting_user_name_allowed?checked:}>Autoriser ces utilisateurs &agrave; imprimer
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>Emp&ecirc;cher ces utilisateurs d'imprimer
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>
-<INPUT TYPE="SUBMIT" VALUE="D&eacute;finir les autorisations">
-</TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
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 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>{title} - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
- {refresh_page?<META HTTP-EQUIV="Refresh" CONTENT="{refresh_page}">:}
- <SCRIPT TYPE="text/javascript"><!--
- /* Show an error if cookies are disabled */
- function check_cookies() {
- if (!navigator.cookieEnabled) {
- document.getElementById('body').innerHTML = 'This page uses cookies to prevent common cross-site attacks. Please enable cookies in your browser.';
- }
+<!DOCTYPE HTML>
+<html>
+ <head>
+ <link rel="stylesheet" href="/cups.css" type="text/css">
+ <link rel="shortcut icon" href="/apple-touch-icon.png" type="image/png">
+ <meta charset="utf-8">
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ {refresh_page?<meta http-equiv="refresh" content="{refresh_page}">:}
+ <meta http-equiv="X-UA-Compatible" content="IE=9">
+ <meta name="viewport" content="width=device-width">
+ <script type="text/javascript"><!--
+ /* Show an error if cookies are disabled */
+ function check_cookies() {
+ if (!navigator.cookieEnabled) {
+ document.getElementById('body').innerHTML = 'This page uses cookies to prevent common cross-site attacks. Please enable cookies in your browser.';
}
- --></SCRIPT>
-</HEAD>
-<BODY ONLOAD="check_cookies();">
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="unsel"><A HREF="/">&nbsp;&nbsp;Home&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;Administration&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=classes?:un}sel"><A HREF="/classes/">&nbsp;&nbsp;Classes&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=help?:un}sel"><A HREF="/help/">&nbsp;&nbsp;Online&nbsp;Help&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;Jobs&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;Printers&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-VALUE="{SECTION=help?{?QUERY}:}" AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-<TR><TD COLSPAN="9">&nbsp;</TD></TR>
-</TABLE>
-<DIV ID="body">
+ }
+ --></SCRIPT>
+ <title>{title} - CUPS @CUPS_VERSION@@CUPS_REVISION@</title>
+ </head>
+ <body onload="check_cookies();">
+ <div class="header">
+ <ul>
+ <li><a href="http://www.cups.org/" target="_blank">CUPS.org</a></li>
+ <li><a href="/">Home</a></li>
+ <li><a {SECTION=admin?class="active" :}href="/admin">Administration</a></li>
+ <li><a {SECTION=classes?class="active" :}href="/classes/">Classes</a></li>
+ <li><a {SECTION=help?class="active" :}href="/help/">Help</a></li>
+ <li><a {SECTION=jobs?class="active" :}href="/jobs/">Jobs</a></li>
+ <li><a {SECTION=printers?class="active" :}href="/printers/">Printers</a></li>
+ </ul>
+ </div>
+ <div class="body">
+ <div class="row">
+ <h1>{title}</h1>
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 @@
-<DIV CLASS="indent">
<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
@@ -31,21 +30,12 @@ AUTOSAVE="org.cups.help" RESULTS="20">
{QTEXT?</UL>:}
:<P>No matches found.</P>}
<HR NOSHADE>:}
-{HELPTITLE?<H1>{HELPTITLE}</H1>
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="View Printable Version"></FORM>:
+{HELPTITLE?<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="View Printable Version"></FORM>:
<H1>Online Help</H1>
-<P>This is the CUPS online help interface. Enter search words
-above or click on any of the documentation links to display
-online help information.</P>
+<P>This is the CUPS online help interface. Enter search words above or click on any of the documentation links to display online help information.</P>
-<P>If you are new to CUPS, read the "<a
-href="/help/overview.html">Overview of CUPS</a>" page. Veteran users
-should read the "<a href="/help/whatsnew.html">What's New in CUPS
-1.6</a>" page.</P>
+<P>If you are new to CUPS, read the "<a href="/help/overview.html">Overview of CUPS</a>" page.</P>
-<P>The <A HREF="http://www.cups.org/">CUPS home page</A> also
-provides many resources including user discussion forums, answers
-to frequently-asked questions, and a form for submitting bug
-reports and feature requests.</P>}
+<P>The <A HREF="http://www.cups.org/">CUPS home page</A> also provides many resources including user discussion forums, answers to frequently-asked questions, and a form for submitting bug reports and feature requests.</P>}
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 @@
-</DIV>
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 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Aggiungi una classe</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nome:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Può contenere qualsiasi carattere stampabile ad eccezione di "/", "#" e spazio)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Descrizione:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Una descrizione esplicativa, ad esempio "HP LaserJet con Duplexer")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Posizione:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Una posizione esplicativa, ad esempio "Lab 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Membri:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Aggiungi una classe"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/it/add-printer.tmpl b/templates/it/add-printer.tmpl
deleted file mode 100644
index 95148c4d0..000000000
--- a/templates/it/add-printer.tmpl
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Aggiungi una stampante</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
-{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nome:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
-<SMALL>(Può contenere qualsiasi carattere stampabile ad eccezione di "/", "#" e spazio)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Descrizione:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_INFO}"><BR>
-<SMALL>(Una descrizione esplicativa, ad esempio "HP LaserJet con Duplexer")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Posizione:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_LOCATION}"><BR>
-<SMALL>(Una posizione esplicativa, ad esempio "Lab 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Connessione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Condivisione:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Condividi questa stampante</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/it/add-rss-subscription.tmpl b/templates/it/add-rss-subscription.tmpl
deleted file mode 100644
index 394881d9e..000000000
--- a/templates/it/add-rss-subscription.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription">
-
-<H2 CLASS="title">Abbonati ad un feed RSS</H2>
-
-<TABLE SUMMARY="Modulo per abbonarsi ad un feed RSS">
-<TR>
-<TH CLASS="label">Nome:</TH>
-<TD COLSPAN="5"><INPUT TYPE="TEXT" NAME="SUBSCRIPTION_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?SUBSCRIPTION_NAME}"><BR>
-<SMALL>(Può contenere qualsiasi carattere stampabile ad eccezione di spazio, "/", "?" e "#")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Coda:</TH>
-<TD COLSPAN="5"><SELECT NAME="PRINTER_URI" SIZE="10"><OPTION VALUE="#ALL#"{?PRINTER_URI=#ALL#? SELECTED:}>Tutte le code</OPTION>{[printer_name]<OPTION VALUE="{printer_uri_supported}"{?PRINTER_URI={printer_uri_supported}? SELECTED:}>{printer_name}</OPTION>}</SELECT></TD>
-</TR>
-<TR VALIGN="TOP">
-<TH CLASS="label">Eventi:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CREATED" {?EVENT_JOB_CREATED}>La stampa è stata creata<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_COMPLETED" {?EVENT_JOB_COMPLETED}>La stampa è stato completata<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_STOPPED" {?EVENT_JOB_STOPPED}>La stampa è stata fermata<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>Le opzioni di stampa sono state modificate</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_STOPPED" {?EVENT_PRINTER_STOPPED}>La coda è stata fermata<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_ADDED" {?EVENT_PRINTER_ADDED}>La coda è stata aggiunta<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_MODIFIED" {?EVENT_PRINTER_MODIFIED}>La coda è stata modificata<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_DELETED" {?EVENT_PRINTER_DELETED}>La coda è stata eliminata</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STARTED" {?EVENT_SERVER_STARTED}>Il server è stato avviato<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STOPPED" {?EVENT_SERVER_STOPPED}>Il server è stato fermato<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_RESTARTED" {?EVENT_SERVER_RESTARTED}>Il server è stato riavviato<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_AUDIT" {?EVENT_SERVER_AUDIT}>Controllo di sicurezza del server</TD>
-</TR>
-<TR>
-<TH CLASS="label">Numero massimo di eventi nel feed:</TH>
-<TD COLSPAN="5"><INPUT TYPE="NUMBER" NAME="MAX_EVENTS" SIZE="4" MAXLENGTH="4" VALUE="{MAX_EVENTS?{MAX_EVENTS}:20}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD COLSPAN="5"><INPUT TYPE="SUBMIT" VALUE="Abbonati ad un feed RSS"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/it/admin.tmpl b/templates/it/admin.tmpl
deleted file mode 100644
index e5c576448..000000000
--- a/templates/it/admin.tmpl
+++ /dev/null
@@ -1,102 +0,0 @@
-<TABLE CLASS="indent" SUMMARY="Operazioni di amministrazione">
-<TR><TD VALIGN="TOP">
-
-<H2 CLASS="title">Stampanti</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="SUBMIT" VALUE="Aggiungi una stampante"></FORM>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="find-new-printers"><INPUT TYPE="SUBMIT" VALUE="Trova nuove stampanti"></FORM>
-<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Gestisci le stampanti"></FORM>
-{have_samba?<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba"><INPUT TYPE="SUBMIT" VALUE="Esporta le stampanti a Samba"></FORM>:}
-</P>
-
-<H2 CLASS="title">Classi</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-class"><INPUT TYPE="SUBMIT" VALUE="Aggiungi una classe"></FORM>
-<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Gestisci le classi"></FORM>
-</P>
-
-<H2 CLASS="title">Stampe</H2>
-
-<P>
-<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Gestisci le stampe"></FORM>
-</P>
-
-</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
-
-<H2 CLASS="title">Server</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server"><INPUT TYPE="SUBMIT" VALUE="Edita il file di configurazione"></FORM>
-<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Visualizza il log degli accessi"></FORM>
-<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Visualizza il log degli errori"></FORM>
-<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Visualizza la pagina dei log"></FORM>
-</P>
-
-{SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
-<BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-
-{ADVANCEDSETTINGS?<P><B>Impostazioni del server\:</B></P>
-
-<P><A HREF="/admin/">Avanzate <SMALL>&#x25bc;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="HIDDEN" NAME="ADVANCEDSETTINGS" VALUE="YES">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Condividi le stampanti connesse a questo sistema<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Numero massimo di client\:
-<INPUT TYPE="TEXT" NAME="MAX_CLIENTS" VALUE="{?max_clients}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Consenti la stampa da internet<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Pubblicizza l'interfaccia web<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Consenti l'amministrazione remota<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Utilizza l'autenticazione Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Consenti agli utenti di eliminare qualsiasi stampa (non solo le proprie)<BR>
-<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Conserva la cronologia delle stampe<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Numero massimo di stampe (0 per nessun limite)\:
-<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Conserva i metadata\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Conserva i documenti\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Salva le informazioni di debug per la risoluzione dei problemi<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dimensione massima del file di log\:
-<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
-
-:<P><B>Impostazioni del server:</B></P>
-
-<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Avanzate <SMALL>&#x25b6;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Condividi le stampanti connesse a questo sistema<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Consenti la stampa da internet<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Consenti l'amministrazione remota<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Utilizza l'autenticazione Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Consenti agli utenti di eliminare qualsiasi stampa (non solo le proprie)<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Salva le informazioni di debug per la risoluzione dei problemi</P>
-
-}
-<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Modifica le impostazioni"></P>
-
-</FORM>}
-
-</TD></TR>
-</TABLE>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Abbonamenti RSS</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription"><INPUT TYPE="SUBMIT" VALUE="Aggiungi un abbonamento RSS"></FORM>
-</P>
-
-</DIV>
-
-{notify_subscription_id?<TABLE CLASS="list" SUMMARY="Abbonamenti RSS">
-<THEAD><TR><TH>Name</TH><TH>Events</TH><TH>Nome della coda</TH></TR></THEAD>
-<TBODY>{[notify_subscription_id]
-<TR><TD><A HREF="{notify_recipient_uri}">{notify_recipient_name}</A><BR>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-subscription"><INPUT TYPE="HIDDEN" NAME="notify_subscription_id" VALUE="{notify_subscription_id}"><INPUT TYPE="SUBMIT" VALUE="Elimina l'abbonamento RSS"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:Tutti i file}</TD></TR>}
-</TBODY>
-</TABLE>:}
diff --git a/templates/it/choose-device.tmpl b/templates/it/choose-device.tmpl
deleted file mode 100644
index e6f3bcb97..000000000
--- a/templates/it/choose-device.tmpl
+++ /dev/null
@@ -1,53 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifica {printer_name}:Aggiungi una stampante}</H2>
-
-{CUPS_GET_DEVICES_DONE?<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-
-<TABLE>
-{op=add-printer?:<TR>
-<TH CLASS="label">Connessione attuale\:</TH>
-<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
-{current_device_uri}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Stampanti locali\:</TH>
-<TD>
-{[device_uri]{device_class!network?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}}
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Stampanti di rete rilevate\:</TH>
-<TD>
-{[device_uri]{device_class=network?{device_uri~[a-z]+://?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}:}}
-</TD>
-</TR>
-<TR>
-<TR>
-<TH CLASS="label">Altre stampanti di rete\:</TH>
-<TD>
-{[device_uri]{device_class=network?{device_uri~[a-z]+://?:<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-}:}}
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-</TABLE>
-
-</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Indicatore di occupato"> Ricerca delle stampanti in corso...</P>}
-
-</DIV>
diff --git a/templates/it/choose-make.tmpl b/templates/it/choose-make.tmpl
deleted file mode 100644
index f2a2730cf..000000000
--- a/templates/it/choose-make.tmpl
+++ /dev/null
@@ -1,64 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifica {printer_name}:Aggiungi una stampante}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Nome:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Descrizione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Posizione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Connessione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Condivisione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?No:{?printer_is_shared=0?No:}} Condividi questa stampante</TD>
-</TR>
-<TR>
-<TH CLASS="label">Make:</TH>
-<TD>
-<SELECT NAME="PPD_MAKE" SIZE="10">
-{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>&nbsp;</TD>
-</TR>
-<TR>
-<TH CLASS="label">Or Provide a PPD File:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
-TYPE="FILE" NAME="PPD_FILE"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?Aggiungi una stampante:Modifica la stampante}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/it/choose-model.tmpl b/templates/it/choose-model.tmpl
deleted file mode 100644
index 85a5b114c..000000000
--- a/templates/it/choose-model.tmpl
+++ /dev/null
@@ -1,60 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifica {printer_name}:Aggiungi una stampante}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Nome:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Descrizione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Posizione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Connessione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Condivisione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?No:{?printer_is_shared=0?No:}} Condividi questa stampante</TD>
-</TR>
-<TR>
-<TH CLASS="label">Marca:</TH>
-<TD>{PPD_MAKE} <INPUT TYPE="SUBMIT" NAME="SELECT_MAKE" VALUE="Seleziona un'altra marca"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Modello:</TH>
-<TD>
-<SELECT NAME="PPD_NAME" SIZE="10">
-{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Current Driver - {current_make_and_model}</OPTION>:}
-{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
-}</SELECT>
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Oppure fornisci un file PPD:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
-TYPE="FILE" NAME="PPD_FILE"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?Aggiungi una stampante:Modifica una stampante}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/it/choose-serial.tmpl b/templates/it/choose-serial.tmpl
deleted file mode 100644
index e228e61f7..000000000
--- a/templates/it/choose-serial.tmpl
+++ /dev/null
@@ -1,52 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifica {printer_name}:Aggiungi una stampante}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Connessione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Velocità di trasmissione:</TH>
-<TD><SELECT NAME="BAUDRATE">
-{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Parità:</TH>
-<TD><SELECT NAME="PARITY">
-<OPTION VALUE="none" {?parity=none?SELECTED:}>Nessuna
-<OPTION VALUE="even" {?parity=even?SELECTED:}>Pari
-<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Dispari
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Bit di dati:</TH>
-<TD><SELECT NAME="BITS">
-<OPTION {?bits=8?SELECTED:}>8
-<OPTION {?bits=7?SELECTED:}>7
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Controllo di flusso:</TH>
-<TD><SELECT NAME="FLOW">
-<OPTION VALUE="none" {?flow=none?SELECTED:}>Nessuno
-<OPTION VALUE="soft" {?flow=soft?SELECTED:}>XON/XOFF (Software)
-<OPTION VALUE="hard" {?flow=hard?SELECTED:}>RTS/CTS (Hardware)
-<OPTION VALUE="dtrdsr" {?flow=dtrdsr?SELECTED:}>DTR/DSR (Hardware)
-</SELECT></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/it/choose-uri.tmpl b/templates/it/choose-uri.tmpl
deleted file mode 100644
index f4a7b5e19..000000000
--- a/templates/it/choose-uri.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modifica {printer_name}:Aggiungi una stampante}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Connessione:</TH>
-<TD><INPUT TYPE="URL" SIZE="60" MAXLENGTH="1023" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>Esempi:
-<PRE>
- http://hostname:631/ipp/
- http://hostname:631/ipp/port1
-
- ipp://hostname/ipp/
- ipp://hostname/ipp/port1
-
- lpd://hostname/queue
-
- socket://hostname
- socket://hostname:9100
-</PRE>
-
-<P>Vedi <A HREF="/help/network.html" TARGET="_blank">"Stampanti
-di rete"</A> per l'URI corretto da utilizzare con la tua stampante.</P>
-
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/it/class-added.tmpl b/templates/it/class-added.tmpl
deleted file mode 100644
index 1f4a37c4e..000000000
--- a/templates/it/class-added.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Aggiungi una classe</H2>
-
-<P>La classe <A HREF="/classes/{printer_name}">{printer_name}</A> è stata aggiunta
-correttamente.
-
-</DIV>
diff --git a/templates/it/class-confirm.tmpl b/templates/it/class-confirm.tmpl
deleted file mode 100644
index da3219d73..000000000
--- a/templates/it/class-confirm.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Elimina una classe {printer_name}</H2>
-
-<P><B>Attenzione:</B> sei sicuro di voler eliminare la classe
-{printer_name}?</P>
-
-<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="op" VALUE="delete-class"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Elimina la classe"></FORM></P>
-
-</DIV>
diff --git a/templates/it/class-deleted.tmpl b/templates/it/class-deleted.tmpl
deleted file mode 100644
index 7283e52d5..000000000
--- a/templates/it/class-deleted.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Elimina una classe {printer_name}</H2>
-
-<P>La classe {printer_name} è stata eliminata correttamente.
-
-</DIV> \ No newline at end of file
diff --git a/templates/it/class-jobs-header.tmpl b/templates/it/class-jobs-header.tmpl
deleted file mode 100644
index 12a936ea9..000000000
--- a/templates/it/class-jobs-header.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Stampe</H3>
-</DIV>
diff --git a/templates/it/class-modified.tmpl b/templates/it/class-modified.tmpl
deleted file mode 100644
index 81c934c7c..000000000
--- a/templates/it/class-modified.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifica una classe {printer_name}</H2>
-
-<P>La classe <A HREF="/classes/{printer_name}">{printer_name}</A> è stata
-modificata correttamente.
-
-</DIV> \ No newline at end of file
diff --git a/templates/it/class.tmpl b/templates/it/class.tmpl
deleted file mode 100644
index 2f23362c2..000000000
--- a/templates/it/class.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?Inattiva:{printer_state=4?Stampa in corso:In pausa}},
-{printer_is_accepting_jobs=0?Rifiuta le stampe:Accetta le stampe},
-{server_is_sharing_printers=0?No:{printer_is_shared=0?No:}} Condivisa{default_name={printer_name}?, Predefinito del server:})</H2>
-
-<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="manutenzione">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
-<OPTION VALUE="">Manutenzione</OPTION>
-<OPTION VALUE="print-test-page">Stampa una pagina di prova</OPTION>
-{printer_state=5?<OPTION VALUE="start-class">Ripristina la classe</OPTION>:<OPTION VALUE="stop-class">Sospendi la classe</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Accetta le stampe</OPTION>:<OPTION VALUE="reject-jobs">Rifiuta le stampe</OPTION>}
-<OPTION VALUE="move-jobs">Sposta tutte le stampe</OPTION>
-<OPTION VALUE="purge-jobs">Elimina tutte le stampe</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Vai" STYLE="display: none;">
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="amministrazione">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
-<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="1">
-<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
-<OPTION VALUE="">Amministrazione</OPTION>
-<OPTION VALUE="modify-class">Modifica una classe</OPTION>
-<OPTION VALUE="delete-class">Elimina una classe</OPTION>
-<OPTION VALUE="set-class-options">Imposta le opzioni predefinite</OPTION>
-<OPTION VALUE="set-as-default">Imposta come predefiniti del server</OPTION>
-<OPTION VALUE="set-allowed-users">Imposta utenti autorizzati</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Vai" STYLE="display: none;">
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Descrizione:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Posizione:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Membri:</TH><TD>{?member_uris=?Nessuno:{member_uris}}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Predefiniti:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:sconosciuto}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
diff --git a/templates/it/classes-header.tmpl b/templates/it/classes-header.tmpl
deleted file mode 100644
index 1fe0f4fa0..000000000
--- a/templates/it/classes-header.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Nessuna classe:Mostrat{total=1?a:e} {#printer_name} di {total} class{total=1?e:i}}.</P>
diff --git a/templates/it/classes.tmpl b/templates/it/classes.tmpl
deleted file mode 100644
index ceff6a907..000000000
--- a/templates/it/classes.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-{#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="Lista delle classi">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Nome della coda <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nome della coda <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Descrizione</TH><TH>Posizione</TH><TH>Membri</TH><TH>Stato</TH></TR>
-</THEAD>
-<TBODY>
-{[printer_name]
-<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{?member_uris=?Nessuno:{member_uris}}</TD><TD>{printer_state=3?Inattiva:{printer_state=4?Stampa in corso:In pausa}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/it/command.tmpl b/templates/it/command.tmpl
deleted file mode 100644
index 4be18063e..000000000
--- a/templates/it/command.tmpl
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{title} su {printer_name}</H2>
-
-<P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
-ALIGN="ABSMIDDLE" ALT="Indicatore di occupato"> }Processo del comando della stampante
-{job_state=3?in attesa:{job_state=4?bloccata:
-{job_state=5?stampa in corso:{job_state=6?fermata:
-{job_state=7?annullata:{job_state=8?annullata:completata}}}}}}{job_state=9?:{job_printer_state_message?,
-<EM>"{job_printer_state_message}"</EM>:}}</P>
-
-</DIV>
diff --git a/templates/it/edit-config.tmpl b/templates/it/edit-config.tmpl
deleted file mode 100644
index 4b0e735f2..000000000
--- a/templates/it/edit-config.tmpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<SCRIPT TYPE="text/javascript">
-function reset_config()
-{
- document.cups.CUPSDCONF.value = "{?cupsdconf_default}";
-}
-</SCRIPT>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Edita il file di configurazione</H2>
-
-<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-
-<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
-
-<P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="Salva le modifiche">
-<INPUT TYPE="BUTTON" VALUE="Utilizza il file di configurazione predefinito"
-onClick="reset_config();"></P>
-
-</FORM>
-
-</DIV>
diff --git a/templates/it/error-op.tmpl b/templates/it/error-op.tmpl
deleted file mode 100644
index c6cdfa80e..000000000
--- a/templates/it/error-op.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} Errore</H2>
-
-<P>Errore:</P>
-
-<BLOCKQUOTE>Operazione sconosciuta "{op}"!</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/it/error.tmpl b/templates/it/error.tmpl
deleted file mode 100644
index 87f3162bb..000000000
--- a/templates/it/error.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} Errore</H2>
-
-<P>{?message?{message}:Errore}:</P>
-
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/it/header.tmpl.in b/templates/it/header.tmpl.in
deleted file mode 100644
index a5896f6d5..000000000
--- a/templates/it/header.tmpl.in
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>{title} - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
- {refresh_page?<META HTTP-EQUIV="Refresh" CONTENT="{refresh_page}">:}
- <SCRIPT TYPE="text/javascript"><!--
- /* Show an error if cookies are disabled */
- function check_cookies() {
- if (!navigator.cookieEnabled) {
- document.getElementById('body').innerHTML = 'Questa pagina utilizza i cookie per prevenire attacchi comuni cross-site. Abilita i cookies nel tuo browser.';
- }
- }
- --></SCRIPT>
-</HEAD>
-<BODY ONLOAD="check_cookies();">
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="unsel"><A HREF="/">&nbsp;&nbsp;Home&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;Amministrazione&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=classes?:un}sel"><A HREF="/classes/">&nbsp;&nbsp;Classi&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=help?:un}sel"><A HREF="/help/">&nbsp;&nbsp;Guida&nbsp;in&nbsp;linea&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;Stampe&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;Stampanti&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-VALUE="{SECTION=help?{?QUERY}:}" AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-<TR><TD COLSPAN="9">&nbsp;</TD></TR>
-</TABLE>
-<DIV ID="body">
diff --git a/templates/it/help-header.tmpl b/templates/it/help-header.tmpl
deleted file mode 100644
index 754c2751d..000000000
--- a/templates/it/help-header.tmpl
+++ /dev/null
@@ -1,51 +0,0 @@
-<DIV CLASS="indent">
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
-{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
-
-<P ALIGN="CENTER"><B>Cerca in
-{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:tutti i documenti}}:</B> <INPUT
-TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER=""
-AUTOSAVE="org.cups.help" RESULTS="20">
-<INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="Cerca">
-<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Cancella"></P>
-
-</FORM>
-
-<!-- Bookmarks -->
-<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Contenuti">
-<TR><TD>
-
-<H3 CLASS="title">Documenti della guida in linea</H3>
-
-<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Tutti i documenti</A></P>
-<HR>
-
-{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
-}
-</TD></TR>
-</TABLE></DIV>
-
-{QUERY?<P>Cerca risultati in {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:tutti i documenti}}\:</P>
-{QTEXT?<UL>
-{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (in <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
-{QTEXT?</UL>:}
-:<P>Nessuna corrispondenza trovata.</P>}
-<HR NOSHADE>:}
-{HELPTITLE?<H1>{HELPTITLE}</H1>
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Visualizza la versione stampabile"></FORM>:
-
-<H1>Guida in linea</H1>
-
-<P>Questa è l'interfaccia della guida in linea di CUPS. Digita in alto
-le parole da ricercare oppure fai clic su uno dei collegamenti della documentazione,
-per visualizzare le informazioni della guida in linea.</P>
-
-<P>Se sei un nuovo utente di CUPS, leggi la pagina "<a
-href="/help/overview.html">Overview of CUPS</a>". Gli utenti esperti
-dovrebbero leggere la pagina "<a href="/help/whatsnew.html">What's New in CUPS
-1.7</a>".</P>
-
-<P>Inoltre, la <A HREF="http://www.cups.org/">pagina principale di CUPS</A>
-fornisce molte risorse, tra le quali: forum di discussione per gli utenti,
-risposte alle domande più frequenti ed un modulo per segnalare bug
-e richiedere nuove funzionalità.</P>}
diff --git a/templates/it/help-printable.tmpl b/templates/it/help-printable.tmpl
deleted file mode 100644
index 2463c1630..000000000
--- a/templates/it/help-printable.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>{HELPTITLE}</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups-printable.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
-</HEAD>
-<BODY>
diff --git a/templates/it/help-trailer.tmpl b/templates/it/help-trailer.tmpl
deleted file mode 100644
index 4c1ebed85..000000000
--- a/templates/it/help-trailer.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-</DIV>
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 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Annulla la stampa {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La stampa {job_id}</A> è stata annullata.
-
-</DIV>
diff --git a/templates/it/job-hold.tmpl b/templates/it/job-hold.tmpl
deleted file mode 100644
index ac2d8199c..000000000
--- a/templates/it/job-hold.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Blocca la stampa {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La stampa {job_id}</A> è stata bloccata.
-
-</DIV>
diff --git a/templates/it/job-move.tmpl b/templates/it/job-move.tmpl
deleted file mode 100644
index ed4934433..000000000
--- a/templates/it/job-move.tmpl
+++ /dev/null
@@ -1,27 +0,0 @@
-<DIV CLASS="indent">
-
-<FORM METHOD="POST" ACTION="/{SECTION}/{job_id?:{printer_name}}">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
-
-<H2 CLASS="title">{job_id?Sposta la stampa {job_id}:Sposta tutte le stampe}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nuova destinazione:</TH>
-<TD>
-<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
-{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{job_id?Sposta la stampa:Sposta le stampe}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-
-</DIV>
diff --git a/templates/it/job-moved.tmpl b/templates/it/job-moved.tmpl
deleted file mode 100644
index 518bceb5f..000000000
--- a/templates/it/job-moved.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{job_id?Sposta la stampa {job_id}:Sposta tutte le stampe}</H2>
-
-<P>{job_id?<A HREF="/jobs/{job_id}">La stampa {job_id}</A>:Tutte le stampe} {job_id?è stata:sono state} spostat{job_id?a:e} su
-<A HREF="/{is_class?classes:printers}/{job_printer_name}">{job_printer_name}</A>.</P>
-
-</DIV>
diff --git a/templates/it/job-release.tmpl b/templates/it/job-release.tmpl
deleted file mode 100644
index c6520fdd5..000000000
--- a/templates/it/job-release.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Rilascia la stampa {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La stampa {job_id}</A> è stata rilasciata.
-
-</DIV>
diff --git a/templates/it/job-restart.tmpl b/templates/it/job-restart.tmpl
deleted file mode 100644
index 59d9aa6b5..000000000
--- a/templates/it/job-restart.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Ripeti la stampa {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">La stampa {job_id}</A> è stata riavviata.
-
-</DIV>
diff --git a/templates/it/jobs-header.tmpl b/templates/it/jobs-header.tmpl
deleted file mode 100644
index e8f295bbc..000000000
--- a/templates/it/jobs-header.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Mostra stampe attive"></FORM>}
-{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="Mostra le stampe completate"></FORM>}
-{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Mostra tutte le stampe"></FORM>}</DIV>
-
-<P ALIGN="CENTER">{total=0?Nessuna stampa:Sto visualizzando {#job_id} di {total} {?which_jobs=?active: stamp{total=1?a:e} {which_jobs=all?:completat{total=1?a:e}}}}.</P>
diff --git a/templates/it/jobs.tmpl b/templates/it/jobs.tmpl
deleted file mode 100644
index b1f80d3e1..000000000
--- a/templates/it/jobs.tmpl
+++ /dev/null
@@ -1,36 +0,0 @@
-{#job_id=0?:
-<TABLE CLASS="list" SUMMARY="Elenco delle stampe">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> ID <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Nome</TH><TH>Utente</TH><TH>Dimensione</TH><TH>Pagine</TH><TH>Stato</TH><TH>Controllo</TH></TR>
-</THEAD>
-<TBODY>
-{[job_id]
-<TR VALIGN="TOP">
-<TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id}{?phone? ({phone}):}&nbsp;</TD>
-<TD>{?job_name=?Sconosciuto:{job_name}}&nbsp;</TD>
-<TD>{?job_originating_user_name=?Withheld:{job_originating_user_name}}&nbsp;</TD>
-<TD>{job_k_octets}k&nbsp;</TD>
-<TD>{job_media_sheets_completed=0?Sconosciuto:{?job_media_sheets_completed}}&nbsp;</TD>
-<TD>{job_state=3?in attesa da<BR>{time_at_creation}:{job_state=4?bloccata da<BR>{time_at_creation}:
-{job_state=5?stampa in corso da<BR>{time_at_processing}:{job_state=6?fermata:
-{job_state=7?eliminata il<BR>{time_at_completed}:{job_state=8?annullata:completata il<BR>{time_at_completed}}}}}}}&nbsp;{job_printer_state_message?<BR>
-<EM>"{job_printer_state_message}"</EM>:}</TD>
-<TD>
-{job_preserved>0?{job_state>5?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="restart-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}"><INPUT TYPE="SUBMIT" VALUE="Ripeti la stampa"></FORM>:}:}
-{job_state=4?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="release-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Sblocca la stampa"></FORM>:}
-{job_state=3?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Blocca la stampa"></FORM>:}
-{job_state<7?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Annulla la stampa"></FORM>
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="move-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="SUBMIT" VALUE="Sposta la stampa"></FORM>:}
-&nbsp;</TD>
-</TR>
-}
-</TBODY>
-</TABLE>
-}
diff --git a/templates/it/list-available-printers.tmpl b/templates/it/list-available-printers.tmpl
deleted file mode 100644
index 15c45c097..000000000
--- a/templates/it/list-available-printers.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Stampanti disponibili</H2>
-
-{#device_uri=0?<P>Nessuna stampante trovata.</P>
-:<UL>{[device_uri]
-<LI><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="HIDDEN" NAME="TEMPLATE_NAME" VALUE="{template_name}"><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="Stampante locale"><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{device_make_and_model}"><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}"><INPUT TYPE="SUBMIT" VALUE="Aggiungi questa stampante"></FORM>
-{device_make_and_model} ({device_info})</LI>
-}</UL>}
-
-</DIV>
diff --git a/templates/it/modify-class.tmpl b/templates/it/modify-class.tmpl
deleted file mode 100644
index 6c71a3719..000000000
--- a/templates/it/modify-class.tmpl
+++ /dev/null
@@ -1,34 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifica la classe {printer_name}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Descrizione:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Posizione:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Membri:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Modifica la classe"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/it/modify-printer.tmpl b/templates/it/modify-printer.tmpl
deleted file mode 100644
index f87ff128d..000000000
--- a/templates/it/modify-printer.tmpl
+++ /dev/null
@@ -1,42 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifica {printer_name}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Descrizione:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Una descrizione esplicativa, ad esempio "HP LaserJet con Duplexer")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Posizione:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Una posizione esplicativa, ad esempio "Lab 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Connessione:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Condivisione:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Condividi questa stampante</TD>
-</TR>
-<TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continua"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/it/norestart.tmpl b/templates/it/norestart.tmpl
deleted file mode 100644
index 9dc7cd4e1..000000000
--- a/templates/it/norestart.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifica le impostazioni</H2>
-
-<P>Il server non è stato riavviato perché non sono state apportate modifiche
-alla configurazione...</P>
-
-</DIV>
diff --git a/templates/it/option-boolean.tmpl b/templates/it/option-boolean.tmpl
deleted file mode 100644
index e832ee102..000000000
--- a/templates/it/option-boolean.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD>
-{[choices]<INPUT TYPE="RADIO" NAME="{keyword-1}" {choices={defchoice-1}?CHECKED:} VALUE="{choices}">{text}}
-</TD>
-</TR>
diff --git a/templates/it/option-conflict.tmpl b/templates/it/option-conflict.tmpl
deleted file mode 100644
index 90b2bc0ec..000000000
--- a/templates/it/option-conflict.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<P><B>Error:</B> Le seguenti opzioni sono in conflitto:</P>
-
-<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
-}</UL>
-
-<P>Modifica una o più di queste opzioni per risolvere i conflitti.</P>
diff --git a/templates/it/option-header.tmpl b/templates/it/option-header.tmpl
deleted file mode 100644
index 464726a50..000000000
--- a/templates/it/option-header.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="tab" ID="{group_id}">
-
-<H3 ALIGN="CENTER">{group}</H3>
-
-<TABLE WIDTH="100%">
diff --git a/templates/it/option-pickmany.tmpl b/templates/it/option-pickmany.tmpl
deleted file mode 100644
index 0da75e5d2..000000000
--- a/templates/it/option-pickmany.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT></TD>
-</TR>
diff --git a/templates/it/option-pickone.tmpl b/templates/it/option-pickone.tmpl
deleted file mode 100644
index c21fc71ba..000000000
--- a/templates/it/option-pickone.tmpl
+++ /dev/null
@@ -1,18 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" ID="select-{keyword}" ONCHANGE="update_paramtable('{keyword}')">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT>
-{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
-<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
-<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Punti</OPTION>
-<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Millimetri</OPTION>
-<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Centimetri</OPTION>
-<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Pollici</OPTION>
-<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Piedi</OPTION>
-<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Metri</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
-}</TABLE>
-</TD>:}
-</TR>
diff --git a/templates/it/option-trailer.tmpl b/templates/it/option-trailer.tmpl
deleted file mode 100644
index 22b06d71e..000000000
--- a/templates/it/option-trailer.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-</TABLE>
-
-<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="Imposta le opzioni predefinite"></P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/it/pager.tmpl b/templates/it/pager.tmpl
deleted file mode 100644
index 019646f95..000000000
--- a/templates/it/pager.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TABLE CLASS="inset" SUMMARY="Barra di paginazione">
-<TR>
- <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Mostra precedente"></FORM>:&nbsp;}</TD>
- <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Mostra successiva &#x25b6;"></FORM>:&nbsp;}</TD>
-</TR>
-</TABLE>
diff --git a/templates/it/printer-accept.tmpl b/templates/it/printer-accept.tmpl
deleted file mode 100644
index 6fa701a2c..000000000
--- a/templates/it/printer-accept.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Accetta le stampe sulla {is_class?classe:stampante} {printer_name}</H2>
-
-<P>{is_class?La classe:La stampante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-adesso accetta le stampe.</P>
-
-</DIV>
diff --git a/templates/it/printer-added.tmpl b/templates/it/printer-added.tmpl
deleted file mode 100644
index e5258451d..000000000
--- a/templates/it/printer-added.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Aggiungi una stampante</H2>
-
-<P>La stampante <A HREF="/printers/{printer_name}">{printer_name}</A> è stata aggiunta
-correttamente.
-
-</DIV>
diff --git a/templates/it/printer-configured.tmpl b/templates/it/printer-configured.tmpl
deleted file mode 100644
index 054c9abec..000000000
--- a/templates/it/printer-configured.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Imposta le opzioni predefinite per {printer_name}</H2>
-
-<P>{OP=set-class-options?Class <A HREF="/classes/{printer_name}">:La stampante <A HREF="/printers/{printer_name}">}{printer_name}</A>
-è stata configurata correttamente con le opzioni predefinite.
-
-</DIV>
diff --git a/templates/it/printer-confirm.tmpl b/templates/it/printer-confirm.tmpl
deleted file mode 100644
index b32a3c67e..000000000
--- a/templates/it/printer-confirm.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Elimina la stampante {printer_name}</H2>
-
-<P><B>Attenzione:</B> sei sicuro di voler eliminare la stampante
-{printer_name}?</P>
-
-<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="delete-printer"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Elimina la stampante"></FORM></P>
-
-</DIV>
diff --git a/templates/it/printer-default.tmpl b/templates/it/printer-default.tmpl
deleted file mode 100644
index 78282e173..000000000
--- a/templates/it/printer-default.tmpl
+++ /dev/null
@@ -1,13 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Imposta {is_class?la classe:la stampante} {printer_name} come predefinita</H2>
-
-<P>{is_class?La classe:La stampante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-è stata impostata come predefinita sul server.</P>
-
-<BLOCKQUOTE><B>Nota:</B> qualsiasi utente predefinito, impostato tramite
-il comando <TT>lpoptions</TT>, sovrascriverà questa impostazione
-predefinita.</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/it/printer-deleted.tmpl b/templates/it/printer-deleted.tmpl
deleted file mode 100644
index 4698805d8..000000000
--- a/templates/it/printer-deleted.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Elimina la stampante {printer_name}</H2>
-
-<P>La stampante {printer_name} è stata eliminata correttamente.
-
-</DIV>
diff --git a/templates/it/printer-jobs-header.tmpl b/templates/it/printer-jobs-header.tmpl
deleted file mode 100644
index 12a936ea9..000000000
--- a/templates/it/printer-jobs-header.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Stampe</H3>
-</DIV>
diff --git a/templates/it/printer-modified.tmpl b/templates/it/printer-modified.tmpl
deleted file mode 100644
index 2a34e89d8..000000000
--- a/templates/it/printer-modified.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifica la stampante {printer_name}</H2>
-
-<P>La stampante <A HREF="/printers/{printer_name}">{printer_name}</A> è stata
-modificata correttamente.
-
-</DIV> \ No newline at end of file
diff --git a/templates/it/printer-purge.tmpl b/templates/it/printer-purge.tmpl
deleted file mode 100644
index 84a8a6f67..000000000
--- a/templates/it/printer-purge.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Elimina le stampe sulla {is_class?classe:stampante} {printer_name}</H2>
-
-<P>{is_class?La classe:La stampante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-è stata liberata da tutte le stampe.</P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/it/printer-reject.tmpl b/templates/it/printer-reject.tmpl
deleted file mode 100644
index 51ed140dc..000000000
--- a/templates/it/printer-reject.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Rifiuta le stampe sulla {is_class?classe:stampante} {printer_name}</H2>
-
-<P>{is_class?La classe:La stampante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-non accetta le stampe.</P>
-
-</DIV>
diff --git a/templates/it/printer-start.tmpl b/templates/it/printer-start.tmpl
deleted file mode 100644
index 61e992ffb..000000000
--- a/templates/it/printer-start.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Ripristina {is_class?la classe:la stampante} {printer_name}</H2>
-
-<P>{is_class?La classe:La stampante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-è stata ripristinata.</P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/it/printer-stop.tmpl b/templates/it/printer-stop.tmpl
deleted file mode 100644
index 1ddc3b9cc..000000000
--- a/templates/it/printer-stop.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Metti in pausa {is_class?la classe:la stampante} {printer_name}</H2>
-
-<P>{is_class?La classe:La stampante} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-è stata messa in pausa.</P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/it/printer.tmpl b/templates/it/printer.tmpl
deleted file mode 100644
index dea4d9cc4..000000000
--- a/templates/it/printer.tmpl
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?inattiva:{printer_state=4?stampa in corso:in pausa}},
-{printer_is_accepting_jobs=0?rifiuta le stampe:accetta le stampe},
-{server_is_sharing_printers=0?non è:{printer_is_shared=0?non è:}} condivisa{default_name={printer_name}?, stampante predefinita:})</H2>
-
-<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
-<OPTION VALUE="">Manutenzione</OPTION>
-<OPTION VALUE="print-test-page">Stampa una pagina di prova</OPTION>
-{printer_commands~.*Clean.*?<OPTION VALUE="clean-print-heads">Pulisci le testine della stampante</OPTION>:}
-{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">Stampa la pagina di prova della stampante</OPTION>:}
-{printer_state=5?<OPTION VALUE="start-printer">Riattiva la stampante</OPTION>:<OPTION VALUE="stop-printer">Metti in pausa la stampante</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Accetta le stampe</OPTION>:<OPTION VALUE="reject-jobs">Rifiuta le stampe</OPTION>}
-<OPTION VALUE="move-jobs">Sposta tutte le stampe</OPTION>
-<OPTION VALUE="purge-jobs">Elimina tutte le stampe</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
-<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
-<OPTION VALUE="">Amministrazione</OPTION>
-<OPTION VALUE="modify-printer">Modifica la stampante</OPTION>
-<OPTION VALUE="delete-printer">Elimina la stampante</OPTION>
-<OPTION VALUE="set-printer-options">Imposta le opzioni predefinite</OPTION>
-<OPTION VALUE="set-as-default">Imposta come predefinita</OPTION>
-<OPTION VALUE="set-allowed-users">Imposta gli utenti autorizzati</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Descrizione:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Posizione:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Driver:</TH><TD>{printer_make_and_model} ({color_supported=1?color:grayscale}{sides_supported?, 2-sided printing:})<BR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Connessione:</TH><TD>{device_uri}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Valori predefiniti:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:sconosciuto}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV> \ No newline at end of file
diff --git a/templates/it/printers-header.tmpl b/templates/it/printers-header.tmpl
deleted file mode 100644
index c17bb2f9b..000000000
--- a/templates/it/printers-header.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Nessuna stampante:Sto visualizzando {#printer_name} di {total} stampant{total=1?e:i}}.</P>
diff --git a/templates/it/printers.tmpl b/templates/it/printers.tmpl
deleted file mode 100644
index 037717e7d..000000000
--- a/templates/it/printers.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-{#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="Elenco delle stampanti">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Nome della coda <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nome della coda <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Descrizione</TH><TH>Posizione</TH><TH>Marca e modello</TH><TH>Stato</TH></TR>
-</THEAD>
-<TBODY>
-{[printer_name]
-<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{printer_make_and_model}</TD><TD>{printer_state=3?Inattiva:{printer_state=4?Stampa in corso:In pausa}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/it/restart.tmpl b/templates/it/restart.tmpl
deleted file mode 100644
index 91d904e6f..000000000
--- a/templates/it/restart.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modifica le impostazioni</H2>
-
-<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Indicatore di occupato"> Attendere che il server si riavvii...</P>
-
-</DIV>
diff --git a/templates/it/samba-export.tmpl b/templates/it/samba-export.tmpl
deleted file mode 100644
index 00bd4424b..000000000
--- a/templates/it/samba-export.tmpl
+++ /dev/null
@@ -1,54 +0,0 @@
-<SCRIPT TYPE="text/javascript"><!--
-function select_printers() {
- var list = document.export_samba.EXPORT_NAME;
- var sel = document.export_samba.EXPORT_ALL.checked;
-
- for (i = 0; i < list.length; i ++) {
- list.options[i].selected = sel;
- }
-}
---></SCRIPT>
-
-<FORM METHOD="POST" ACTION="/admin/" NAME="export_samba">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
-
-<H2 CLASS="title">Esporta le stampanti a Samba</H2>
-
-{error?<P>Non è possibile esportare le stampanti a Samba\:</P>
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-<P>Per maggiori informazioni, consulta il file <A HREF="/admin/log/error_log"
-TARGET="_blank">error_log</A>.</P>:
-<P>Questa pagina ti consente di esportare le stampanti a Samba, in modo che
-i client Windows possano accedervi tramite le icone <VAR>Risorse
-di rete</VAR> dei loro desktop. Innanzitutto, dovete installare i driver delle
-stampanti Windows PostScript, come descritto nella pagina di manuale di <A
-HREF="/help/man-cupsaddsmb.html"
-TARGET="_blank">cupsaddsmb(8)</A>.</P>}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Stampanti:</TH>
-<TD>
-<SELECT NAME="EXPORT_NAME" SIZE="10" MULTIPLE>
-{[printer_name]<OPTION VALUE="{printer_name}"{export_all? SELECTED:{printer_export? SELECTED:}}>{printer_name}}
-</SELECT><BR>
-<INPUT TYPE="CHECKBOX" NAME="EXPORT_ALL"{export_all? CHECKED:}
-onChange="select_printers()"> Esporta tutte le stampanti
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Username di Samba:</TH>
-<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (richiesto)</TD>
-</TR>
-<TR>
-<TH CLASS="label">Password di Samba:</TH>
-<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (richiesto)</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Esporta le stampanti a Samba"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/it/samba-exported.tmpl b/templates/it/samba-exported.tmpl
deleted file mode 100644
index edb65785b..000000000
--- a/templates/it/samba-exported.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P>Le stampanti sono state esportate a Samba correttamente.</P>
diff --git a/templates/it/search.tmpl b/templates/it/search.tmpl
deleted file mode 100644
index 1679a75f8..000000000
--- a/templates/it/search.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
-{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
-{ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
-
-<P ALIGN="CENTER"><B>Cerca in
-{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?classi:{SECTION=jobs?stampe:stampanti}}}:</B>
-<INPUT TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER="" AUTOSAVE="org.cups.{SECTION}" RESULTS="20"> <INPUT
-TYPE="SUBMIT" VALUE="Cerca"> <INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Cancella"></P>
-
-</FORM>
diff --git a/templates/it/set-printer-options-header.tmpl b/templates/it/set-printer-options-header.tmpl
deleted file mode 100644
index d55134829..000000000
--- a/templates/it/set-printer-options-header.tmpl
+++ /dev/null
@@ -1,26 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Imposta le opzioni predefinite per {printer_name}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{HAVE_AUTOCONFIGURE?<INPUT TYPE="SUBMIT" NAME="AUTOCONFIGURE" VALUE="Interroga la stampante per le opzioni predefinite">:}
-
-<SCRIPT TYPE="text/javascript"><!--
-function update_paramtable(option)
-{
- var cb = document.getElementById("select-" + option)
- var paramstable = document.getElementById(option + "-params");
- if (cb.value == "Custom")
- paramstable.style.display = "table";
- else
- paramstable.style.display = "none";
-}
---></SCRIPT>
-
-<H3 CLASS="title">{[group_id]
-<A HREF="#{group_id}">{group}</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</H3>
-
-<DIV CLASS="tabs">
diff --git a/templates/it/set-printer-options-trailer.tmpl b/templates/it/set-printer-options-trailer.tmpl
deleted file mode 100644
index 11adc7012..000000000
--- a/templates/it/set-printer-options-trailer.tmpl
+++ /dev/null
@@ -1,16 +0,0 @@
-</DIV>
-
-<SCRIPT TYPE="text/javascript"><!--
-// Hide custom options parameters for browsers that understand Javascript
-var paramtables = document.getElementsByName("paramtable");
-for (var i = 0; i < paramtables.length; i++)
-{
- var opt = paramtables[i].id.substr(0, paramtables[i].id.lastIndexOf("-"));
- var cb = document.getElementById("select-" + opt);
- if (cb.value != "Custom")
- paramtables[i].style.display = "none";
-}
---></SCRIPT>
-</FORM>
-
-</DIV>
diff --git a/templates/it/subscription-added.tmpl b/templates/it/subscription-added.tmpl
deleted file mode 100644
index 19269d52f..000000000
--- a/templates/it/subscription-added.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>L'abbonamento al feed RSS {subscription_name} è stato aggiunto correttamente.</P>
-
-</DIV>
diff --git a/templates/it/subscription-canceled.tmpl b/templates/it/subscription-canceled.tmpl
deleted file mode 100644
index 4f71ffb0e..000000000
--- a/templates/it/subscription-canceled.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>L'abbonamento al feed RSS #{notify_subscription_id} è stato annullato.</P>
-
-</DIV>
diff --git a/templates/it/test-page.tmpl b/templates/it/test-page.tmpl
deleted file mode 100644
index 3cab6840f..000000000
--- a/templates/it/test-page.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Stampa una pagina di prova su {printer_name}</H2>
-
-<P>La pagina di prova è stata inviata; l'ID della stampa è <A HREF="/{SECTION}/{printer_name}">
-{printer_name}-{job_id}</A>.</P>
-
-</DIV>
diff --git a/templates/it/trailer.tmpl b/templates/it/trailer.tmpl
deleted file mode 100644
index e9dae0a53..000000000
--- a/templates/it/trailer.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-</DIV></TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS e il logo di CUPS sono marchi registrati da
-<A HREF="http://www.apple.com">Apple Inc.</A> Copyright 2007-2014 Apple
-Inc. Tutti i diritti sono riservati.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/templates/it/users.tmpl b/templates/it/users.tmpl
deleted file mode 100644
index 69a1a0f9a..000000000
--- a/templates/it/users.tmpl
+++ /dev/null
@@ -1,30 +0,0 @@
-<DIV CLASS="indent">
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{OP}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-{IS_CLASS?<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="{IS_CLASS}">:}
-
-<H2 CLASS="title">Utenti autorizzati ad utilizzare {printer_name}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Utenti:</TH>
-<TD>
-<INPUT TYPE='TEXT' NAME='users' SIZE='60' VALUE='{?requesting_user_name_allowed}{?requesting_user_name_denied}'>
-<BR>
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-allowed' {requesting_user_name_allowed?checked:}>Consenti a questi utenti di stampare
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>Vieta a questi utenti di stampare
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>
-<INPUT TYPE="SUBMIT" VALUE="Imposta gli utenti autorizzati">
-</TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ja/add-class.tmpl b/templates/ja/add-class.tmpl
deleted file mode 100644
index b4e916687..000000000
--- a/templates/ja/add-class.tmpl
+++ /dev/null
@@ -1,40 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">クラスã®è¿½åŠ </H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">åå‰:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL("/"ã€"#"ã€ã‚¹ãƒšãƒ¼ã‚¹ã‚’除ã表示å¯èƒ½æ–‡å­—ã‚’å«ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã™)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">説明:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>("HP LaserJet with Duplexer" ã®ã‚ˆã†ã«äººãŒèª­ã¿ã‚„ã™ã„説明)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">場所:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>("Lab 1" ã®ã‚ˆã†ã«äººãŒèª­ã¿ã‚„ã™ã„場所)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">メンãƒãƒ¼:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="クラスã®è¿½åŠ "></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/ja/add-printer.tmpl b/templates/ja/add-printer.tmpl
deleted file mode 100644
index 00fab5ca2..000000000
--- a/templates/ja/add-printer.tmpl
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">æ–°ã—ã„プリンターã®è¿½åŠ </H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
-{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">åå‰:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
-<SMALL>("/"ã€"#"ã€ã‚¹ãƒšãƒ¼ã‚¹ã‚’除ã表示å¯èƒ½æ–‡å­—ã‚’å«ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã™)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">説明:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_INFO}"><BR>
-<SMALL>("HP LaserJet with Duplexer" ã®ã‚ˆã†ã«äººãŒèª­ã¿ã‚„ã™ã„説明)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">場所:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_LOCATION}"><BR>
-<SMALL>("Lab 1" ã®ã‚ˆã†ã«äººãŒèª­ã¿ã‚„ã™ã„場所)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">接続:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">共有:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-ã“ã®ãƒ—リンターを共有ã™ã‚‹</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="続ã‘ã‚‹"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/ja/add-rss-subscription.tmpl b/templates/ja/add-rss-subscription.tmpl
deleted file mode 100644
index c5afeb068..000000000
--- a/templates/ja/add-rss-subscription.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription">
-
-<H2 CLASS="title">RSS 購読を追加</H2>
-
-<TABLE SUMMARY="RSS 購読フォームを追加">
-<TR>
-<TH CLASS="label">åå‰:</TH>
-<TD COLSPAN="5"><INPUT TYPE="TEXT" NAME="SUBSCRIPTION_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?SUBSCRIPTION_NAME}"><BR>
-<SMALL>("/"ã€"?"ã€"#"ã€ã‚¹ãƒšãƒ¼ã‚¹ã‚’除ã文字をå«ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã™)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">キュー:</TH>
-<TD COLSPAN="5"><SELECT NAME="PRINTER_URI" SIZE="10"><OPTION VALUE="#ALL#"{?PRINTER_URI=#ALL#? SELECTED:}>ã™ã¹ã¦ã®ã‚­ãƒ¥ãƒ¼</OPTION>{[printer_name]<OPTION VALUE="{printer_uri_supported}"{?PRINTER_URI={printer_uri_supported}? SELECTED:}>{printer_name}</OPTION>}</SELECT></TD>
-</TR>
-<TR VALIGN="TOP">
-<TH CLASS="label">イベント:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CREATED" {?EVENT_JOB_CREATED}>ジョブãŒä½œæˆã•ã‚ŒãŸ<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_COMPLETED" {?EVENT_JOB_COMPLETED}>ジョブãŒå®Œäº†ã—ãŸ<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_STOPPED" {?EVENT_JOB_STOPPED}>ジョブãŒåœæ­¢ã—ãŸ<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>ジョブオプションãŒå¤‰æ›´ã•ã‚ŒãŸ</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_STOPPED" {?EVENT_PRINTER_STOPPED}>キューãŒåœæ­¢ã—ãŸ<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_ADDED" {?EVENT_PRINTER_ADDED}>キューãŒè¿½åŠ ã•ã‚ŒãŸ<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_MODIFIED" {?EVENT_PRINTER_MODIFIED}>キューãŒå¤‰æ›´ã•ã‚ŒãŸ<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_DELETED" {?EVENT_PRINTER_DELETED}>キューãŒå‰Šé™¤ã•ã‚ŒãŸ</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STARTED" {?EVENT_SERVER_STARTED}>サーãƒãƒ¼ãŒé–‹å§‹ã—ãŸ<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STOPPED" {?EVENT_SERVER_STOPPED}>サーãƒãƒ¼ãŒåœæ­¢ã—ãŸ<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_RESTARTED" {?EVENT_SERVER_RESTARTED}>サーãƒãƒ¼ãŒå†èµ·å‹•ã—ãŸ<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_AUDIT" {?EVENT_SERVER_AUDIT}>サーãƒãƒ¼ã®ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ã‚’監査中</TD>
-</TR>
-<TR>
-<TH CLASS="label">フィード内ã®æœ€å¤§ã‚¤ãƒ™ãƒ³ãƒˆæ•°:</TH>
-<TD COLSPAN="5"><INPUT TYPE="NUMBER" NAME="MAX_EVENTS" SIZE="4" MAXLENGTH="4" VALUE="{MAX_EVENTS?{MAX_EVENTS}:20}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD COLSPAN="5"><INPUT TYPE="SUBMIT" VALUE="RSS 購読を追加"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/ja/admin.tmpl b/templates/ja/admin.tmpl
deleted file mode 100644
index 53cb2da52..000000000
--- a/templates/ja/admin.tmpl
+++ /dev/null
@@ -1,102 +0,0 @@
-<TABLE CLASS="indent" SUMMARY="管ç†è€…タスク">
-<TR><TD VALIGN="TOP">
-
-<H2 CLASS="title">プリンター</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="SUBMIT" VALUE="プリンターã®è¿½åŠ "></FORM>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="find-new-printers"><INPUT TYPE="SUBMIT" VALUE="æ–°ã—ã„プリンターã®æ¤œç´¢"></FORM>
-<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="プリンターã®ç®¡ç†"></FORM>
-{have_samba?<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba"><INPUT TYPE="SUBMIT" VALUE="プリンターを Samba ã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ"></FORM>:}
-</P>
-
-<H2 CLASS="title">クラス</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-class"><INPUT TYPE="SUBMIT" VALUE="クラスã®è¿½åŠ "></FORM>
-<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="クラスã®ç®¡ç†"></FORM>
-</P>
-
-<H2 CLASS="title">ジョブ</H2>
-
-<P>
-<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="ジョブã®ç®¡ç†"></FORM>
-</P>
-
-</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
-
-<H2 CLASS="title">サーãƒãƒ¼</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server"><INPUT TYPE="SUBMIT" VALUE="設定ファイルã®ç·¨é›†"></FORM>
-<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="アクセスログã®è¡¨ç¤º"></FORM>
-<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="エラーログã®è¡¨ç¤º"></FORM>
-<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="ページログã®è¡¨ç¤º"></FORM>
-</P>
-
-{SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
-<BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-
-{ADVANCEDSETTINGS?<P><B>サーãƒãƒ¼è¨­å®š\:</B></P>
-
-<P><A HREF="/admin/">詳細 <SMALL>&#x25bc;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="HIDDEN" NAME="ADVANCEDSETTINGS" VALUE="YES">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> ã“ã®ã‚·ã‚¹ãƒ†ãƒ ã«æŽ¥ç¶šã•ã‚Œã¦ã„るプリンターを共有<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最大クライアント数\:
-<INPUT TYPE="TEXT" NAME="MAX_CLIENTS" VALUE="{?max_clients}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> インターãƒãƒƒãƒˆã‹ã‚‰ã®å°åˆ·ã‚’許å¯<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> ウェブインターフェイスを公開<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> リモート管ç†ã‚’許å¯<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Kerberos èªè¨¼ã‚’使用 (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> 所有者以外ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã‚‚ジョブã®ã‚­ãƒ£ãƒ³ã‚»ãƒ«ã‚’許å¯<BR>
-<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> ジョブã®å±¥æ­´ã‚’ä¿å­˜<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最大ジョブ数 (0 ã¯ç„¡åˆ¶é™)\:
-<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;メタデータをä¿æŒ\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ドキュメントをä¿æŒ\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> トラブルシューティングã®ãŸã‚ã«ãƒ‡ãƒãƒƒã‚°æƒ…報をä¿å­˜<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最大ログファイルサイズ\:
-<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
-
-:<P><B>サーãƒãƒ¼è¨­å®š:</B></P>
-
-<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">詳細 <SMALL>&#x25b6;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> ã“ã®ã‚·ã‚¹ãƒ†ãƒ ã«æŽ¥ç¶šã•ã‚Œã¦ã„るプリンターを共有<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> インターãƒãƒƒãƒˆã‹ã‚‰ã®å°åˆ·ã‚’許å¯<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> リモート管ç†ã‚’許å¯<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Kerberos èªè¨¼ã‚’使用 (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> 所有者以外ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã‚‚ジョブã®ã‚­ãƒ£ãƒ³ã‚»ãƒ«ã‚’許å¯<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> トラブルシューティングã®ãŸã‚ã«ãƒ‡ãƒãƒƒã‚°æƒ…報をä¿å­˜</P>
-
-}
-<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="設定ã®å¤‰æ›´"></P>
-
-</FORM>}
-
-</TD></TR>
-</TABLE>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">RSS 購読</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription"><INPUT TYPE="SUBMIT" VALUE="RSS 購読ã®è¿½åŠ "></FORM>
-</P>
-
-</DIV>
-
-{notify_subscription_id?<TABLE CLASS="list" SUMMARY="RSS 購読">
-<THEAD><TR><TH>åå‰</TH><TH>イベント</TH><TH>キューå</TH></TR></THEAD>
-<TBODY>{[notify_subscription_id]
-<TR><TD><A HREF="{notify_recipient_uri}">{notify_recipient_name}</A><BR>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-subscription"><INPUT TYPE="HIDDEN" NAME="notify_subscription_id" VALUE="{notify_subscription_id}"><INPUT TYPE="SUBMIT" VALUE="RSS 購読ã®ã‚­ãƒ£ãƒ³ã‚»ãƒ«"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:ã™ã¹ã¦ã®ã‚­ãƒ¥ãƒ¼}</TD></TR>}
-</TBODY>
-</TABLE>:}
diff --git a/templates/ja/choose-device.tmpl b/templates/ja/choose-device.tmpl
deleted file mode 100644
index 83b1c6a63..000000000
--- a/templates/ja/choose-device.tmpl
+++ /dev/null
@@ -1,53 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?{printer_name} ã®å¤‰æ›´:プリンターã®è¿½åŠ }</H2>
-
-{CUPS_GET_DEVICES_DONE?<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-
-<TABLE>
-{op=add-printer?:<TR>
-<TH CLASS="label">ç¾åœ¨ã®æŽ¥ç¶š\:</TH>
-<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
-{current_device_uri}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">ローカルプリンター\:</TH>
-<TD>
-{[device_uri]{device_class!network?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}}
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">発見ã•ã‚ŒãŸãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ—リンター\:</TH>
-<TD>
-{[device_uri]{device_class=network?{device_uri~[a-z]+://?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}:}}
-</TD>
-</TR>
-<TR>
-<TR>
-<TH CLASS="label">ãã®ä»–ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ—リンター\:</TH>
-<TD>
-{[device_uri]{device_class=network?{device_uri~[a-z]+://?:<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-}:}}
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="続ã‘ã‚‹"></TD>
-</TR>
-</TABLE>
-
-</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> プリンターを探ã—ã¦ã„ã¾ã™...</P>}
-
-</DIV>
diff --git a/templates/ja/choose-make.tmpl b/templates/ja/choose-make.tmpl
deleted file mode 100644
index 7d2d92344..000000000
--- a/templates/ja/choose-make.tmpl
+++ /dev/null
@@ -1,64 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?{printer_name}ã®å¤‰æ›´:プリンターã®è¿½åŠ }</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">åå‰:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">説明:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">場所:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">接続:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">共有:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-ã“ã®ãƒ—リンターを共有{?printer_is_shared=?ã—ãªã„:{?printer_is_shared=0?ã—ãªã„:ã™ã‚‹}}</TD>
-</TR>
-<TR>
-<TH CLASS="label">メーカー:</TH>
-<TD>
-<SELECT NAME="PPD_MAKE" SIZE="10">
-{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="続ã‘ã‚‹"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>&nbsp;</TD>
-</TR>
-<TR>
-<TH CLASS="label">ã¾ãŸã¯ PPD ファイルをæä¾›:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
-TYPE="FILE" NAME="PPD_FILE"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?プリンターã®è¿½åŠ :プリンターã®å¤‰æ›´}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/ja/choose-model.tmpl b/templates/ja/choose-model.tmpl
deleted file mode 100644
index e82cece9b..000000000
--- a/templates/ja/choose-model.tmpl
+++ /dev/null
@@ -1,60 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?{printer_name}ã®å¤‰æ›´:プリンターã®è¿½åŠ }</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">åå‰:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">説明:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">場所:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">接続:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">共有:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-ã“ã®ãƒ—リンターを共有{?printer_is_shared=?ã—ãªã„:{?printer_is_shared=0?ã—ãªã„:ã™ã‚‹}}</TD>
-</TR>
-<TR>
-<TH CLASS="label">メーカー:</TH>
-<TD>{PPD_MAKE} <INPUT TYPE="SUBMIT" NAME="SELECT_MAKE" VALUE="ä»–ã®ãƒ¡ãƒ¼ã‚«ãƒ¼/製造元をé¸æŠž"></TD>
-</TR>
-<TR>
-<TH CLASS="label">モデル:</TH>
-<TD>
-<SELECT NAME="PPD_NAME" SIZE="10">
-{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>ç¾åœ¨ã®ãƒ‰ãƒ©ã‚¤ãƒãƒ¼ - {current_make_and_model}</OPTION>:}
-{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
-}</SELECT>
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">ã¾ãŸã¯ PPD ファイルをæä¾›:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
-TYPE="FILE" NAME="PPD_FILE"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?プリンターã®è¿½åŠ :プリンターã®å¤‰æ›´}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/ja/choose-serial.tmpl b/templates/ja/choose-serial.tmpl
deleted file mode 100644
index 924b84a74..000000000
--- a/templates/ja/choose-serial.tmpl
+++ /dev/null
@@ -1,52 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?{printer_name}ã®å¤‰æ›´:プリンターã®è¿½åŠ }</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">接続:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">ボーレート:</TH>
-<TD><SELECT NAME="BAUDRATE">
-{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">パリティ:</TH>
-<TD><SELECT NAME="PARITY">
-<OPTION VALUE="none" {?parity=none?SELECTED:}>ãªã—
-<OPTION VALUE="even" {?parity=even?SELECTED:}>å¶æ•°
-<OPTION VALUE="odd" {?parity=odd?SELECTED:}>奇数
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">データビット:</TH>
-<TD><SELECT NAME="BITS">
-<OPTION {?bits=8?SELECTED:}>8
-<OPTION {?bits=7?SELECTED:}>7
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">フロー制御:</TH>
-<TD><SELECT NAME="FLOW">
-<OPTION VALUE="none" {?flow=none?SELECTED:}>ãªã—
-<OPTION VALUE="soft" {?flow=soft?SELECTED:}>XON/XOFF (ソフトウェア)
-<OPTION VALUE="hard" {?flow=hard?SELECTED:}>RTS/CTS (ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢)
-<OPTION VALUE="dtrdsr" {?flow=dtrdsr?SELECTED:}>DTR/DSR (ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢)
-</SELECT></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="続ã‘ã‚‹"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/ja/choose-uri.tmpl b/templates/ja/choose-uri.tmpl
deleted file mode 100644
index 2c687beff..000000000
--- a/templates/ja/choose-uri.tmpl
+++ /dev/null
@@ -1,43 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?{printer_name}ã®å¤‰æ›´:プリンターã®è¿½åŠ }</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">接続:</TH>
-<TD><INPUT TYPE="URL" SIZE="60" MAXLENGTH="1023" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>例:
-<PRE>
- http://hostname:631/ipp/
- http://hostname:631/ipp/port1
-
- ipp://hostname/ipp/
- ipp://hostname/ipp/port1
-
- lpd://hostname/queue
-
- socket://hostname
- socket://hostname:9100
-</PRE>
-
-<P>ã‚ãªãŸã®ãƒ—リンターã«ãµã•ã‚ã—ã„ URI ã«ã¤ã„ã¦ã¯ã€<A HREF="/help/network.html" TARGET="_blank">"ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ—リンター"</A>ã‚’å‚ç…§ã—ã¦ãã ã•ã„。</P>
-
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="続ã‘ã‚‹"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/ja/class-added.tmpl b/templates/ja/class-added.tmpl
deleted file mode 100644
index 284aa9fb8..000000000
--- a/templates/ja/class-added.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">クラスã®è¿½åŠ </H2>
-
-<P>クラス <A HREF="/classes/{printer_name}">{printer_name}</A> ã¯æ­£ã—ã追加ã•ã‚Œã¾ã—ãŸã€‚
-
-</DIV>
diff --git a/templates/ja/class-confirm.tmpl b/templates/ja/class-confirm.tmpl
deleted file mode 100644
index 6ab315de3..000000000
--- a/templates/ja/class-confirm.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">クラス {printer_name} ã®å‰Šé™¤</H2>
-
-<P><B>警告:</B> 本当ã«ã‚¯ãƒ©ã‚¹
-{printer_name} を削除ã—ã¦ã‚‚よã„ã§ã™ã‹ï¼Ÿ</P>
-
-<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="op" VALUE="delete-class"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="クラスã®å‰Šé™¤"></FORM></P>
-
-</DIV>
diff --git a/templates/ja/class-deleted.tmpl b/templates/ja/class-deleted.tmpl
deleted file mode 100644
index 694132173..000000000
--- a/templates/ja/class-deleted.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">クラス {printer_name} ã®å‰Šé™¤</H2>
-
-<P>クラス {printer_name} ã¯æ­£ã—ã削除ã•ã‚Œã¾ã—ãŸã€‚
-
-</DIV> \ No newline at end of file
diff --git a/templates/ja/class-jobs-header.tmpl b/templates/ja/class-jobs-header.tmpl
deleted file mode 100644
index 1d5d887cd..000000000
--- a/templates/ja/class-jobs-header.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">ジョブ</H3>
-</DIV>
diff --git a/templates/ja/class-modified.tmpl b/templates/ja/class-modified.tmpl
deleted file mode 100644
index be65f13bf..000000000
--- a/templates/ja/class-modified.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">クラス {printer_name} ã®å¤‰æ›´</H2>
-
-<P>クラス <A HREF="/classes/{printer_name}">{printer_name}</A> ã¯æ­£ã—ã変更ã•ã‚Œã¾ã—ãŸã€‚
-
-</DIV> \ No newline at end of file
diff --git a/templates/ja/class.tmpl b/templates/ja/class.tmpl
deleted file mode 100644
index b71ea7ee5..000000000
--- a/templates/ja/class.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?待機中:{printer_state=4?処ç†ä¸­:åœæ­¢}},
-{printer_is_accepting_jobs=0?ジョブを拒å¦ä¸­:ジョブをå—ã‘付ã‘中},
-{server_is_sharing_printers=0?éž:{printer_is_shared=0?éž:}} 共有{default_name={printer_name}?, サーãƒãƒ¼ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆ:})</H2>
-
-<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
-<OPTION VALUE="">メンテナンス</OPTION>
-<OPTION VALUE="print-test-page">テストページã®å°åˆ·</OPTION>
-{printer_state=5?<OPTION VALUE="start-class">クラスã®å†é–‹</OPTION>:<OPTION VALUE="stop-class">クラスã®åœæ­¢</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">ジョブをå—ã‘付ã‘</OPTION>:<OPTION VALUE="reject-jobs">ジョブを拒å¦</OPTION>}
-<OPTION VALUE="move-jobs">ã™ã¹ã¦ã®ã‚¸ãƒ§ãƒ–ã®ç§»å‹•</OPTION>
-<OPTION VALUE="purge-jobs">ã™ã¹ã¦ã®ã‚¸ãƒ§ãƒ–をキャンセル</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
-<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="1">
-<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
-<OPTION VALUE="">管ç†</OPTION>
-<OPTION VALUE="modify-class">クラスã®å¤‰æ›´</OPTION>
-<OPTION VALUE="delete-class">クラスã®å‰Šé™¤</OPTION>
-<OPTION VALUE="set-class-options">デフォルトオプションã®è¨­å®š</OPTION>
-<OPTION VALUE="set-as-default">サーãƒãƒ¼ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®è¨­å®š</OPTION>
-<OPTION VALUE="set-allowed-users">許å¯ã™ã‚‹ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®è¨­å®š</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="進む" STYLE="display: none;">
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">説明:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">場所:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">メンãƒãƒ¼:</TH><TD>{?member_uris=?ãªã—:{member_uris}}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">デフォルト:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:unknown}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
diff --git a/templates/ja/classes-header.tmpl b/templates/ja/classes-header.tmpl
deleted file mode 100644
index 506603cd5..000000000
--- a/templates/ja/classes-header.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?クラスã¯ã‚ã‚Šã¾ã›ã‚“:{total} 個ã®ã‚¯ãƒ©ã‚¹ã®ã†ã¡ {#printer_name} 個を表示中}。</P>
diff --git a/templates/ja/classes.tmpl b/templates/ja/classes.tmpl
deleted file mode 100644
index 823a832a9..000000000
--- a/templates/ja/classes.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-{#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="クラスã®ä¸€è¦§">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> キューå <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> キューå <SMALL>&#x25bc;</SMALL>}</A></TH><TH>説明</TH><TH>場所</TH><TH>メンãƒãƒ¼</TH><TH>状態</TH></TR>
-</THEAD>
-<TBODY>
-{[printer_name]
-<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{?member_uris=?ãªã—:{member_uris}}</TD><TD>{printer_state=3?待機中:{printer_state=4?処ç†ä¸­:åœæ­¢}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/ja/command.tmpl b/templates/ja/command.tmpl
deleted file mode 100644
index f892335e2..000000000
--- a/templates/ja/command.tmpl
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{printer_name} ã® {title}</H2>
-
-<P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
-ALIGN="ABSMIDDLE" ALT="Busy Indicator"> }プリンターコマンドジョブ
-{job_state=3?ペンディング中:{job_state=4?ホールド中:
-{job_state=5?処ç†ä¸­:{job_state=6?åœæ­¢ä¸­:
-{job_state=7?キャンセル:{job_state=8?破棄:完了}}}}}}{job_state=9?:{job_printer_state_message?,
-<EM>"{job_printer_state_message}"</EM>:}}</P>
-
-</DIV>
diff --git a/templates/ja/edit-config.tmpl b/templates/ja/edit-config.tmpl
deleted file mode 100644
index dfd7dc95b..000000000
--- a/templates/ja/edit-config.tmpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<SCRIPT TYPE="text/javascript">
-function reset_config()
-{
- document.cups.CUPSDCONF.value = "{?cupsdconf_default}";
-}
-</SCRIPT>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">設定ファイルã®è¨­å®š</H2>
-
-<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-
-<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
-
-<P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="変更ã®ä¿å­˜">
-<INPUT TYPE="BUTTON" VALUE="デフォルトã®è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’使用"
-onClick="reset_config();"></P>
-
-</FORM>
-
-</DIV>
diff --git a/templates/ja/error-op.tmpl b/templates/ja/error-op.tmpl
deleted file mode 100644
index 89ffbaeca..000000000
--- a/templates/ja/error-op.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} ã®ã‚¨ãƒ©ãƒ¼</H2>
-
-<P>エラー:</P>
-
-<BLOCKQUOTE>"{op}" ã¯æœªçŸ¥ã®æ“作ã§ã™!</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/ja/error.tmpl b/templates/ja/error.tmpl
deleted file mode 100644
index d67ce3665..000000000
--- a/templates/ja/error.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} ã®ã‚¨ãƒ©ãƒ¼</H2>
-
-<P>{?message?{message}:エラー}:</P>
-
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/ja/header.tmpl.in b/templates/ja/header.tmpl.in
deleted file mode 100644
index 1bf55fdee..000000000
--- a/templates/ja/header.tmpl.in
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>{title} - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
- {refresh_page?<META HTTP-EQUIV="Refresh" CONTENT="{refresh_page}">:}
- <SCRIPT TYPE="text/javascript"><!--
- /* Show an error if cookies are disabled */
- function check_cookies() {
- if (!navigator.cookieEnabled) {
- document.getElementById('body').innerHTML = 'This page uses cookies to prevent common cross-site attacks. Please enable cookies in your browser.';
- }
- }
- --></SCRIPT>
-</HEAD>
-<BODY ONLOAD="check_cookies();">
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="unsel"><A HREF="/">&nbsp;&nbsp;ホーム&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;管ç†&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=classes?:un}sel"><A HREF="/classes/">&nbsp;&nbsp;クラス&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=help?:un}sel"><A HREF="/help/">&nbsp;&nbsp;ヘルプ&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;ジョブ&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;プリンター&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
-VALUE="{SECTION=help?{?QUERY}:}" AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-<TR><TD COLSPAN="9">&nbsp;</TD></TR>
-</TABLE>
-<DIV ID="body">
diff --git a/templates/ja/help-header.tmpl b/templates/ja/help-header.tmpl
deleted file mode 100644
index 4a1f0ffb9..000000000
--- a/templates/ja/help-header.tmpl
+++ /dev/null
@@ -1,51 +0,0 @@
-<DIV CLASS="indent">
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
-{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
-
-<P ALIGN="CENTER"><B>
-{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:ã™ã¹ã¦ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆ}}内を検索:</B> <INPUT
-TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER=""
-AUTOSAVE="org.cups.help" RESULTS="20">
-<INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="検索">
-<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="クリア"></P>
-
-</FORM>
-
-<!-- Bookmarks -->
-<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="目次">
-<TR><TD>
-
-<H3 CLASS="title">オンラインヘルプドキュメント</H3>
-
-<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">ã™ã¹ã¦ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆ</A></P>
-<HR>
-
-{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
-}
-</TD></TR>
-</TABLE></DIV>
-
-{QUERY?<P>{HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:ã™ã¹ã¦ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆ}}ã®æ¤œç´¢çµæžœ\:</P>
-{QTEXT?<UL>
-{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (in <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
-{QTEXT?</UL>:}
-:<P>マッãƒã™ã‚‹ã‚‚ã®ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚</P>}
-<HR NOSHADE>:}
-{HELPTITLE?<H1>{HELPTITLE}</H1>
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="å°åˆ·å¯èƒ½ãªãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®è¡¨ç¤º"></FORM>:
-
-<H1>オンラインヘルプ</H1>
-
-<P>ã“ã‚Œã¯ã€CUPS ã®ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ãƒ˜ãƒ«ãƒ—インターフェイスã§ã™ã€‚
-オンラインヘルプ情報を表示ã™ã‚‹ã«ã¯ã€æ¤œç´¢èªžå¥ã‚’上ã«å…¥åŠ›ã™ã‚‹ã‹ã€
-ドキュメントリンクã®ã„ãšã‚Œã‹ã‚’クリックã—ã¦ãã ã•ã„。</P>
-
-<P>ã‚ãªãŸãŒ CUPS ã«ã¤ã„ã¦åˆå¿ƒè€…ãªã‚‰ã€ "<a
-href="/help/overview.html">CUPS ã®æ¦‚è¦</a>" ページを読んã§ãã ã•ã„。
-上級ユーザーã¯ã€ "<a href="/help/whatsnew.html">CUPS 1.6 ã®æ–°æ©Ÿèƒ½</a>"
-ページを読むã¹ãã§ã™ã€‚</P>
-
-<P><A HREF="http://www.cups.org/">CUPS ホームページ</A> ã§ã‚‚ã€
-ユーザーディスカッションフォーラムã€FAQã€
-ãƒã‚°å ±å‘Šã‚„機能リクエストを申請ã™ã‚‹ãƒ•ã‚©ãƒ¼ãƒ ã¨ã„ã£ãŸã€
-多ãã®ãƒªã‚½ãƒ¼ã‚¹ã‚’æä¾›ã—ã¦ã„ã¾ã™ã€‚</P>}
diff --git a/templates/ja/help-printable.tmpl b/templates/ja/help-printable.tmpl
deleted file mode 100644
index 2463c1630..000000000
--- a/templates/ja/help-printable.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>{HELPTITLE}</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups-printable.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
-</HEAD>
-<BODY>
diff --git a/templates/ja/help-trailer.tmpl b/templates/ja/help-trailer.tmpl
deleted file mode 100644
index 4c1ebed85..000000000
--- a/templates/ja/help-trailer.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-</DIV>
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 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">ジョブ {job_id} ã®ã‚­ãƒ£ãƒ³ã‚»ãƒ«</H2>
-
-<P><A HREF="{job_printer_uri}">ジョブ {job_id}</A> ã¯ã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•ã‚Œã¾ã—ãŸã€‚
-
-</DIV>
diff --git a/templates/ja/job-hold.tmpl b/templates/ja/job-hold.tmpl
deleted file mode 100644
index baae237fa..000000000
--- a/templates/ja/job-hold.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">ジョブ {job_id} ã®ä¿ç•™</H2>
-
-<P><A HREF="{job_printer_uri}">ジョブ {job_id}</A> ã¯å°åˆ·ã‚’ä¿ç•™ã•ã‚Œã¾ã—ãŸã€‚
-
-</DIV>
diff --git a/templates/ja/job-move.tmpl b/templates/ja/job-move.tmpl
deleted file mode 100644
index 54da7e038..000000000
--- a/templates/ja/job-move.tmpl
+++ /dev/null
@@ -1,27 +0,0 @@
-<DIV CLASS="indent">
-
-<FORM METHOD="POST" ACTION="/{SECTION}/{job_id?:{printer_name}}">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
-
-<H2 CLASS="title">{job_id?ジョブ {job_id} ã®ç§»å‹•:ã™ã¹ã¦ã®ã‚¸ãƒ§ãƒ–ã®ç§»å‹•}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">æ–°ã—ã„宛先:</TH>
-<TD>
-<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
-{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{job_id?ジョブã®ç§»å‹•:ジョブã®ç§»å‹•}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-
-</DIV>
diff --git a/templates/ja/job-moved.tmpl b/templates/ja/job-moved.tmpl
deleted file mode 100644
index c41535975..000000000
--- a/templates/ja/job-moved.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{job_id?ジョブ {job_id} ã®ç§»å‹•:ã™ã¹ã¦ã®ã‚¸ãƒ§ãƒ–ã®ç§»å‹•}</H2>
-
-<P>{job_id?<A HREF="/jobs/{job_id}">ジョブ {job_id}</A>:ã™ã¹ã¦ã®ã‚¸ãƒ§ãƒ–} ã¯
-<A HREF="/{is_class?classes:printers}/{job_printer_name}">{job_printer_name}</A> ã«ç§»å‹•ã—ã¾ã—ãŸã€‚</P>
-
-</DIV>
diff --git a/templates/ja/job-release.tmpl b/templates/ja/job-release.tmpl
deleted file mode 100644
index fd9f89dd2..000000000
--- a/templates/ja/job-release.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">ジョブ {job_id} ã®è§£æ”¾</H2>
-
-<P><A HREF="{job_printer_uri}">ジョブ {job_id}</A> ã¯å°åˆ·ã‹ã‚‰è§£æ”¾ã•ã‚Œã¾ã—ãŸã€‚
-
-</DIV>
diff --git a/templates/ja/job-restart.tmpl b/templates/ja/job-restart.tmpl
deleted file mode 100644
index 493a4ace7..000000000
--- a/templates/ja/job-restart.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">ジョブ {job_id} ã®å†å°åˆ·</H2>
-
-<P><A HREF="{job_printer_uri}">ジョブ {job_id}</A> ã¯å†å°åˆ·ã•ã‚Œã¾ã—ãŸã€‚
-
-</DIV>
diff --git a/templates/ja/jobs-header.tmpl b/templates/ja/jobs-header.tmpl
deleted file mode 100644
index 76095b4e6..000000000
--- a/templates/ja/jobs-header.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="アクティブãªã‚¸ãƒ§ãƒ–を表示"></FORM>}
-{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="完了ã—ãŸã‚¸ãƒ§ãƒ–を表示"></FORM>}
-{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="ã™ã¹ã¦ã®ã‚¸ãƒ§ãƒ–を表示"></FORM>}</DIV>
-
-<P ALIGN="CENTER">{total=0?ジョブã¯ã‚ã‚Šã¾ã›ã‚“:{total} 個ã®{?which_jobs=?アクティブãª:{which_jobs=all?:完了ã—ãŸ}}ジョブã®ã†ã¡ {#job_id} 個を表示中}。</P>
diff --git a/templates/ja/jobs.tmpl b/templates/ja/jobs.tmpl
deleted file mode 100644
index 220c950aa..000000000
--- a/templates/ja/jobs.tmpl
+++ /dev/null
@@ -1,36 +0,0 @@
-{#job_id=0?:
-<TABLE CLASS="list" SUMMARY="ジョブã®ä¸€è¦§">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> ID <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>åå‰</TH><TH>ユーザー</TH><TH>サイズ</TH><TH>ページ</TH><TH>状態</TH><TH>制御</TH></TR>
-</THEAD>
-<TBODY>
-{[job_id]
-<TR VALIGN="TOP">
-<TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id}{?phone? ({phone}):}&nbsp;</TD>
-<TD>{?job_name=?未知:{job_name}}&nbsp;</TD>
-<TD>{?job_originating_user_name=?隠匿:{job_originating_user_name}}&nbsp;</TD>
-<TD>{job_k_octets}k&nbsp;</TD>
-<TD>{job_media_sheets_completed=0?ä¸æ˜Ž:{?job_media_sheets_completed}}&nbsp;</TD>
-<TD>{job_state=3?{time_at_creation}<BR>ã‹ã‚‰ä¿ç•™ä¸­:{job_state=4?{time_at_creation}<BR>ã‹ã‚‰ä¿ç•™ä¸­:
-{job_state=5?{time_at_processing}<BR>ã‹ã‚‰å‡¦ç†ä¸­:{job_state=6?ã«åœæ­¢:
-{job_state=7?{time_at_completed}<BR>ã«ã‚­ãƒ£ãƒ³ã‚»ãƒ«:{job_state=8?ã«ä¸­æ–­:{time_at_completed}<BR>ã«å®Œäº†}}}}}}&nbsp;{job_printer_state_message?<BR>
-<EM>"{job_printer_state_message}"</EM>:}</TD>
-<TD>
-{job_preserved>0?{job_state>5?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="restart-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}"><INPUT TYPE="SUBMIT" VALUE="ジョブã®å†å°åˆ·"></FORM>:}:}
-{job_state=4?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="release-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="ジョブを解放"></FORM>:}
-{job_state=3?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="ジョブをä¿ç•™"></FORM>:}
-{job_state<7?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="ジョブをキャンセル"></FORM>
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="move-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="SUBMIT" VALUE="ジョブを移動"></FORM>:}
-&nbsp;</TD>
-</TR>
-}
-</TBODY>
-</TABLE>
-}
diff --git a/templates/ja/list-available-printers.tmpl b/templates/ja/list-available-printers.tmpl
deleted file mode 100644
index f70b5aac0..000000000
--- a/templates/ja/list-available-printers.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">利用å¯èƒ½ãªãƒ—リンター</H2>
-
-{#device_uri=0?<P>プリンターãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。</P>
-:<UL>{[device_uri]
-<LI><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="HIDDEN" NAME="TEMPLATE_NAME" VALUE="{template_name}"><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="Local Printer"><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{device_make_and_model}"><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}"><INPUT TYPE="SUBMIT" VALUE="ã“ã®ãƒ—リンターを追加"></FORM>
-{device_make_and_model} ({device_info})</LI>
-}</UL>}
-
-</DIV>
diff --git a/templates/ja/modify-class.tmpl b/templates/ja/modify-class.tmpl
deleted file mode 100644
index a41010f3f..000000000
--- a/templates/ja/modify-class.tmpl
+++ /dev/null
@@ -1,34 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">クラス {printer_name} ã®å¤‰æ›´</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">説明:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">場所:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">メンãƒãƒ¼:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="クラスã®å¤‰æ›´"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/ja/modify-printer.tmpl b/templates/ja/modify-printer.tmpl
deleted file mode 100644
index 009af6d6a..000000000
--- a/templates/ja/modify-printer.tmpl
+++ /dev/null
@@ -1,42 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{printer_name} ã®å¤‰æ›´</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">説明:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>("HP LaserJet with Duplexer" ã®ã‚ˆã†ã«äººãŒèª­ã¿ã‚„ã™ã„説明)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">場所:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>("Lab 1" ã®ã‚ˆã†ã«äººãŒèª­ã¿ã‚„ã™ã„場所)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">接続:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">共有:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-ã“ã®ãƒ—リンターを共有ã™ã‚‹</TD>
-</TR>
-<TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="続ã‘ã‚‹"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ja/norestart.tmpl b/templates/ja/norestart.tmpl
deleted file mode 100644
index 474043318..000000000
--- a/templates/ja/norestart.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">設定変更</H2>
-
-<P>設定ã«ä½•ã‚‚変更ãŒè¡Œã‚ã‚Œãªã‹ã£ãŸãŸã‚ã€ã‚µãƒ¼ãƒãƒ¼ã¯å†èµ·å‹•ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ...</P>
-
-</DIV>
diff --git a/templates/ja/option-boolean.tmpl b/templates/ja/option-boolean.tmpl
deleted file mode 100644
index e832ee102..000000000
--- a/templates/ja/option-boolean.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD>
-{[choices]<INPUT TYPE="RADIO" NAME="{keyword-1}" {choices={defchoice-1}?CHECKED:} VALUE="{choices}">{text}}
-</TD>
-</TR>
diff --git a/templates/ja/option-conflict.tmpl b/templates/ja/option-conflict.tmpl
deleted file mode 100644
index 4f782ac80..000000000
--- a/templates/ja/option-conflict.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<P><B>エラー:</B> 以下ã®ã‚ªãƒ—ションã¯ç«¶åˆã—ã¾ã™:</P>
-
-<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
-}</UL>
-
-<P>競åˆã‚’解決ã™ã‚‹ãŸã‚ã«ã€1 ã¤ä»¥ä¸Šã®ã‚ªãƒ—ションを変更ã—ã¦ãã ã•ã„。</P>
diff --git a/templates/ja/option-header.tmpl b/templates/ja/option-header.tmpl
deleted file mode 100644
index 464726a50..000000000
--- a/templates/ja/option-header.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="tab" ID="{group_id}">
-
-<H3 ALIGN="CENTER">{group}</H3>
-
-<TABLE WIDTH="100%">
diff --git a/templates/ja/option-pickmany.tmpl b/templates/ja/option-pickmany.tmpl
deleted file mode 100644
index 0da75e5d2..000000000
--- a/templates/ja/option-pickmany.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT></TD>
-</TR>
diff --git a/templates/ja/option-pickone.tmpl b/templates/ja/option-pickone.tmpl
deleted file mode 100644
index 514e2abc2..000000000
--- a/templates/ja/option-pickone.tmpl
+++ /dev/null
@@ -1,18 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" ID="select-{keyword}" ONCHANGE="update_paramtable('{keyword}')">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT>
-{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
-<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
-<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>ãƒã‚¤ãƒ³ãƒˆ</OPTION>
-<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>ミリメートル</OPTION>
-<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>センãƒãƒ¡ãƒ¼ãƒˆãƒ«</OPTION>
-<OPTION VALUE="in"{paramvalue=in? SELECTED:}>インãƒ</OPTION>
-<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>フィート</OPTION>
-<OPTION VALUE="m"{paramvalue=m? SELECTED:}>メートル</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
-}</TABLE>
-</TD>:}
-</TR>
diff --git a/templates/ja/option-trailer.tmpl b/templates/ja/option-trailer.tmpl
deleted file mode 100644
index da2db1e09..000000000
--- a/templates/ja/option-trailer.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-</TABLE>
-
-<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="デフォルトオプションã®è¨­å®š"></P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/ja/pager.tmpl b/templates/ja/pager.tmpl
deleted file mode 100644
index ebba3a004..000000000
--- a/templates/ja/pager.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TABLE CLASS="inset" SUMMARY="Paging Bar">
-<TR>
- <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; å‰ã‚’表示"></FORM>:&nbsp;}</TD>
- <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="次を表示 &#x25b6;"></FORM>:&nbsp;}</TD>
-</TR>
-</TABLE>
diff --git a/templates/ja/printer-accept.tmpl b/templates/ja/printer-accept.tmpl
deleted file mode 100644
index f13c66267..000000000
--- a/templates/ja/printer-accept.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{is_class?クラス:プリンター} {printer_name} ã®ã‚¸ãƒ§ãƒ–ã®å—ã‘付ã‘</H2>
-
-<P>{is_class?クラス:プリンター} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-ã¯ã‚¸ãƒ§ãƒ–ã‚’å—ã‘付ã‘るよã†ã«ãªã‚Šã¾ã—ãŸã€‚</P>
-
-</DIV>
diff --git a/templates/ja/printer-added.tmpl b/templates/ja/printer-added.tmpl
deleted file mode 100644
index c07a832b8..000000000
--- a/templates/ja/printer-added.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">プリンターã®è¿½åŠ </H2>
-
-<P>プリンター <A HREF="/printers/{printer_name}">{printer_name}</A> ã¯æ­£ã—ã追加ã•ã‚Œã¾ã—ãŸã€‚
-</DIV>
diff --git a/templates/ja/printer-configured.tmpl b/templates/ja/printer-configured.tmpl
deleted file mode 100644
index 10459431e..000000000
--- a/templates/ja/printer-configured.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{printer_name} ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã‚ªãƒ—ションã®è¨­å®š</H2>
-
-<P>{OP=set-class-options?クラス <A HREF="/classes/{printer_name}">:プリンター <A HREF="/printers/{printer_name}">}{printer_name}</A>
-ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã‚ªãƒ—ションã¯æ­£ã—ã設定ã•ã‚Œã¾ã—ãŸã€‚
-
-</DIV>
diff --git a/templates/ja/printer-confirm.tmpl b/templates/ja/printer-confirm.tmpl
deleted file mode 100644
index 6fdb52cab..000000000
--- a/templates/ja/printer-confirm.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">プリンター {printer_name} ã®å‰Šé™¤</H2>
-
-<P><B>警告:</B> 本当ã«ãƒ—リンター {printer_name} を削除ã—ã¦ã‚ˆã„ã§ã™ã‹ï¼Ÿ</P>
-
-<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="delete-printer"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="プリンターã®å‰Šé™¤"></FORM></P>
-
-</DIV>
diff --git a/templates/ja/printer-default.tmpl b/templates/ja/printer-default.tmpl
deleted file mode 100644
index fccfc0de4..000000000
--- a/templates/ja/printer-default.tmpl
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{is_class?クラス:プリンター} {printer_name} をデフォルトã«è¨­å®š</H2>
-
-<P>{is_class?クラス:プリンター} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-をサーãƒãƒ¼ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãƒ—リンターã«è¨­å®šã—ã¾ã—ãŸã€‚</P>
-
-<BLOCKQUOTE><B>注æ„:</B> <TT>lpoptions</TT> コマンドã§è¨­å®šã•ã‚ŒãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¯ã€
-ã“ã®ã‚µãƒ¼ãƒãƒ¼ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆè¨­å®šã‚’上書ãã—ã¾ã™ã€‚</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/ja/printer-deleted.tmpl b/templates/ja/printer-deleted.tmpl
deleted file mode 100644
index 2f2759b20..000000000
--- a/templates/ja/printer-deleted.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">プリンター {printer_name} ã®å‰Šé™¤</H2>
-
-<P>プリンター {printer_name} ã¯æ­£ã—ã削除ã•ã‚Œã¾ã—ãŸã€‚
-
-</DIV>
diff --git a/templates/ja/printer-jobs-header.tmpl b/templates/ja/printer-jobs-header.tmpl
deleted file mode 100644
index 1d5d887cd..000000000
--- a/templates/ja/printer-jobs-header.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">ジョブ</H3>
-</DIV>
diff --git a/templates/ja/printer-modified.tmpl b/templates/ja/printer-modified.tmpl
deleted file mode 100644
index a22e7da35..000000000
--- a/templates/ja/printer-modified.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">プリンター {printer_name} ã®å¤‰æ›´</H2>
-
-<P>プリンター <A HREF="/printers/{printer_name}">{printer_name}</A>
-ã¯æ­£ã—ã変更ã•ã‚Œã¾ã—ãŸã€‚
-
-</DIV> \ No newline at end of file
diff --git a/templates/ja/printer-purge.tmpl b/templates/ja/printer-purge.tmpl
deleted file mode 100644
index 4ba6cbcd6..000000000
--- a/templates/ja/printer-purge.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{is_class?クラス:プリンター} {printer_name} ã®ã‚¸ãƒ§ãƒ–ã®å…¨å‰Šé™¤</H2>
-
-<P>{is_class?クラス:プリンター} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-ã‹ã‚‰ã™ã¹ã¦ã®ã‚¸ãƒ§ãƒ–を削除ã—ã¾ã—ãŸã€‚</P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/ja/printer-reject.tmpl b/templates/ja/printer-reject.tmpl
deleted file mode 100644
index ba7cc524c..000000000
--- a/templates/ja/printer-reject.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{is_class?クラス:プリンター} {printer_name} ã®ã‚¸ãƒ§ãƒ–ã®æ‹’å¦</H2>
-
-<P>{is_class?クラス:プリンター} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-ã¯ã‚¸ãƒ§ãƒ–ã‚’å—ã‘付ã‘ãªããªã‚Šã¾ã—ãŸã€‚</P>
-
-</DIV>
diff --git a/templates/ja/printer-start.tmpl b/templates/ja/printer-start.tmpl
deleted file mode 100644
index 138829d0a..000000000
--- a/templates/ja/printer-start.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{is_class?クラス:プリンター} {printer_name} ã®å†é–‹</H2>
-
-<P>{is_class?クラス:プリンター} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-ã¯å†é–‹ã—ã¾ã—ãŸã€‚</P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/ja/printer-stop.tmpl b/templates/ja/printer-stop.tmpl
deleted file mode 100644
index cc74c1b56..000000000
--- a/templates/ja/printer-stop.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{is_class?クラス:プリンター} {printer_name} ã®åœæ­¢</H2>
-
-<P>{is_class?クラス:プリンター} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-ã¯åœæ­¢ã—ã¾ã—ãŸã€‚</P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/ja/printer.tmpl b/templates/ja/printer.tmpl
deleted file mode 100644
index 8d7655052..000000000
--- a/templates/ja/printer.tmpl
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?待機中:{printer_state=4?処ç†ä¸­:一時åœæ­¢ä¸­}},
-{printer_is_accepting_jobs=0?ジョブを拒å¦ä¸­:ジョブをå—ã‘付ã‘中},
-{server_is_sharing_printers=0?éž:{printer_is_shared=0?éž:}} 共有{default_name={printer_name}?, サーãƒãƒ¼ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆ:})</H2>
-
-<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
-<OPTION VALUE="">メンテナンス</OPTION>
-<OPTION VALUE="print-test-page">テストページã®å°åˆ·</OPTION>
-{printer_commands~.*Clean.*?<OPTION VALUE="clean-print-heads">プリンターヘッドã®ã‚¯ãƒªãƒ¼ãƒ‹ãƒ³ã‚°</OPTION>:}
-{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">自己テストページã®å°åˆ·</OPTION>:}
-{printer_state=5?<OPTION VALUE="start-printer">プリンターを開始</OPTION>:<OPTION VALUE="stop-printer">プリンターã®åœæ­¢</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">ジョブをå—ã‘付ã‘</OPTION>:<OPTION VALUE="reject-jobs">ジョブを拒å¦</OPTION>}
-<OPTION VALUE="move-jobs">ã™ã¹ã¦ã®ã‚¸ãƒ§ãƒ–ã®ç§»å‹•</OPTION>
-<OPTION VALUE="purge-jobs">ã™ã¹ã¦ã®ã‚¸ãƒ§ãƒ–をキャンセル</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="進む"></NOSCRIPT>
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
-<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
-<OPTION VALUE="">管ç†</OPTION>
-<OPTION VALUE="modify-printer">プリンターã®å¤‰æ›´</OPTION>
-<OPTION VALUE="delete-printer">プリンターã®å‰Šé™¤</OPTION>
-<OPTION VALUE="set-printer-options">デフォルトオプションã®è¨­å®š</OPTION>
-<OPTION VALUE="set-as-default">サーãƒãƒ¼ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®è¨­å®š</OPTION>
-<OPTION VALUE="set-allowed-users">許å¯ã™ã‚‹ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®è¨­å®š</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="進む"></NOSCRIPT>
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">説明:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">場所:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">プリンタードライãƒãƒ¼:</TH><TD>{printer_make_and_model} ({color_supported=1?カラー:白黒}{sides_supported?, 両é¢å¯:})<BR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">接続:</TH><TD>{device_uri}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">デフォルト設定:</TH><TD>ãƒãƒŠãƒ¼={job_sheets_default}
-用紙サイズ={media_default?{media_default}:unknown}
-{sides_default?両é¢æŒ‡å®š={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV> \ No newline at end of file
diff --git a/templates/ja/printers-header.tmpl b/templates/ja/printers-header.tmpl
deleted file mode 100644
index 1342eff42..000000000
--- a/templates/ja/printers-header.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?プリンターã¯ã‚ã‚Šã¾ã›ã‚“:{total} å°ã®ãƒ—リンターã®ã†ã¡ {#printer_name} å°ã‚’表示中}。</P>
diff --git a/templates/ja/printers.tmpl b/templates/ja/printers.tmpl
deleted file mode 100644
index a8caaffd2..000000000
--- a/templates/ja/printers.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-{#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="プリンターã®ä¸€è¦§">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> キューå <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> キューå <SMALL>&#x25bc;</SMALL>}</A></TH><TH>説明</TH><TH>場所</TH><TH>メーカーã¨ãƒ¢ãƒ‡ãƒ«</TH><TH>状態</TH></TR>
-</THEAD>
-<TBODY>
-{[printer_name]
-<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{printer_make_and_model}</TD><TD>{printer_state=3?待機中:{printer_state=4?処ç†ä¸­:åœæ­¢}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/ja/restart.tmpl b/templates/ja/restart.tmpl
deleted file mode 100644
index d8504efbc..000000000
--- a/templates/ja/restart.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">設定ã®å¤‰æ›´</H2>
-
-<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> サーãƒãƒ¼ãŒå†èµ·å‹•ã™ã‚‹é–“ã—ã°ã‚‰ããŠå¾…ã¡ãã ã•ã„...</P>
-
-</DIV>
diff --git a/templates/ja/samba-export.tmpl b/templates/ja/samba-export.tmpl
deleted file mode 100644
index b1d5050a4..000000000
--- a/templates/ja/samba-export.tmpl
+++ /dev/null
@@ -1,55 +0,0 @@
-<SCRIPT TYPE="text/javascript"><!--
-function select_printers() {
- var list = document.export_samba.EXPORT_NAME;
- var sel = document.export_samba.EXPORT_ALL.checked;
-
- for (i = 0; i < list.length; i ++) {
- list.options[i].selected = sel;
- }
-}
---></SCRIPT>
-
-<FORM METHOD="POST" ACTION="/admin/" NAME="export_samba">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
-
-<H2 CLASS="title">プリンターを Samba ã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ</H2>
-
-{error?<P>プリンターを Samba ã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“\:</P>
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-<P>より詳細ãªæƒ…å ±ã«ã¤ã„ã¦ã¯ <A HREF="/admin/log/error_log"
-TARGET="_blank">error_log</A> ファイルをå‚ç…§ã—ã¦ãã ã•ã„。</P>:
-<P>ã“ã®ãƒšãƒ¼ã‚¸ã¯ã€Windows クライアントãŒãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—上ã®
-<VAR>マイãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯</VAR> ã‚„ <VAR>ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã®å ´æ‰€</VAR>
-アイコン経由ã§ã‚¢ã‚¯ã‚»ã‚¹ã§ãるよã†ã€ãƒ—リンター㮠Samba
-ã¸ã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã‚’許å¯ã—ã¾ã™ã€‚<A
-HREF="/help/man-cupsaddsmb.html"
-TARGET="_blank">cupsaddsmb(8)</A> man ページã«æ›¸ã‹ã‚Œã¦ã„るよã†ã«ã€
-事å‰ã« Windows PostScript ドライãƒãƒ¼ã‚’インストールã—ã¦ãŠãå¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚</P>}
-
-<TABLE>
-<TR>
-<TH CLASS="label">プリンター:</TH>
-<TD>
-<SELECT NAME="EXPORT_NAME" SIZE="10" MULTIPLE>
-{[printer_name]<OPTION VALUE="{printer_name}"{export_all? SELECTED:{printer_export? SELECTED:}}>{printer_name}}
-</SELECT><BR>
-<INPUT TYPE="CHECKBOX" NAME="EXPORT_ALL"{export_all? CHECKED:}
-onChange="select_printers()"> ã™ã¹ã¦ã®ãƒ—リンターをエクスãƒãƒ¼ãƒˆ
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Samba ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼å:</TH>
-<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (å¿…é ˆ)</TD>
-</TR>
-<TR>
-<TH CLASS="label">Samba ã®ãƒ‘スワード:</TH>
-<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (å¿…é ˆ)</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="プリンターを Samba ã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/ja/samba-exported.tmpl b/templates/ja/samba-exported.tmpl
deleted file mode 100644
index f67ddd928..000000000
--- a/templates/ja/samba-exported.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P>プリンター㯠Samba ã«æ­£ã—ãエクスãƒãƒ¼ãƒˆã•ã‚Œã¾ã—ãŸã€‚</P>
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 @@
-<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
-{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
-{ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
-
-<P ALIGN="CENTER"><B>
-{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?クラス:{SECTION=jobs?ジョブ:プリンター}}} 内を検索:</B>
-<INPUT TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER="" AUTOSAVE="org.cups.{SECTION}" RESULTS="20"> <INPUT
-TYPE="SUBMIT" VALUE="検索"> <INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="クリア"></P>
-
-</FORM>
diff --git a/templates/ja/set-printer-options-header.tmpl b/templates/ja/set-printer-options-header.tmpl
deleted file mode 100644
index cd8df9161..000000000
--- a/templates/ja/set-printer-options-header.tmpl
+++ /dev/null
@@ -1,26 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{printer_name} ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã‚ªãƒ—ションã®å¤‰æ›´</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{HAVE_AUTOCONFIGURE?<INPUT TYPE="SUBMIT" NAME="AUTOCONFIGURE" VALUE="プリンターã«ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã‚ªãƒ—ションをå•ã„åˆã‚ã›ã‚‹">:}
-
-<SCRIPT TYPE="text/javascript"><!--
-function update_paramtable(option)
-{
- var cb = document.getElementById("select-" + option)
- var paramstable = document.getElementById(option + "-params");
- if (cb.value == "Custom")
- paramstable.style.display = "table";
- else
- paramstable.style.display = "none";
-}
---></SCRIPT>
-
-<H3 CLASS="title">{[group_id]
-<A HREF="#{group_id}">{group}</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</H3>
-
-<DIV CLASS="tabs">
diff --git a/templates/ja/set-printer-options-trailer.tmpl b/templates/ja/set-printer-options-trailer.tmpl
deleted file mode 100644
index 11adc7012..000000000
--- a/templates/ja/set-printer-options-trailer.tmpl
+++ /dev/null
@@ -1,16 +0,0 @@
-</DIV>
-
-<SCRIPT TYPE="text/javascript"><!--
-// Hide custom options parameters for browsers that understand Javascript
-var paramtables = document.getElementsByName("paramtable");
-for (var i = 0; i < paramtables.length; i++)
-{
- var opt = paramtables[i].id.substr(0, paramtables[i].id.lastIndexOf("-"));
- var cb = document.getElementById("select-" + opt);
- if (cb.value != "Custom")
- paramtables[i].style.display = "none";
-}
---></SCRIPT>
-</FORM>
-
-</DIV>
diff --git a/templates/ja/subscription-added.tmpl b/templates/ja/subscription-added.tmpl
deleted file mode 100644
index e4ab98cf9..000000000
--- a/templates/ja/subscription-added.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>{subscription_name} ã®è³¼èª­ã¯æ­£ã—ã追加ã•ã‚Œã¾ã—ãŸã€‚</P>
-
-</DIV>
diff --git a/templates/ja/subscription-canceled.tmpl b/templates/ja/subscription-canceled.tmpl
deleted file mode 100644
index 8787dad2b..000000000
--- a/templates/ja/subscription-canceled.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>購読 #{notify_subscription_id} ã¯ã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•ã‚Œã¾ã—ãŸã€‚</P>
-
-</DIV>
diff --git a/templates/ja/test-page.tmpl b/templates/ja/test-page.tmpl
deleted file mode 100644
index 6cdaa8751..000000000
--- a/templates/ja/test-page.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{printer_name} ã®ãƒ†ã‚¹ãƒˆãƒšãƒ¼ã‚¸å°åˆ·</H2>
-
-<P>テストページをé€ä¿¡ã—ã¾ã—ãŸ; ジョブ ID 㯠<A HREF="/{SECTION}/{printer_name}">
-{printer_name}-{job_id}</A> ã§ã™ã€‚</P>
-
-</DIV>
diff --git a/templates/ja/trailer.tmpl b/templates/ja/trailer.tmpl
deleted file mode 100644
index 2e99eb75b..000000000
--- a/templates/ja/trailer.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-</DIV></TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS and the CUPS logo are trademarks of
-<A HREF="http://www.apple.com">Apple Inc.</A> CUPS is copyright 2007-2014 Apple
-Inc. All rights reserved.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/templates/ja/users.tmpl b/templates/ja/users.tmpl
deleted file mode 100644
index b998c6b2b..000000000
--- a/templates/ja/users.tmpl
+++ /dev/null
@@ -1,30 +0,0 @@
-<DIV CLASS="indent">
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{OP}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-{IS_CLASS?<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="{IS_CLASS}">:}
-
-<H2 CLASS="title">{printer_name} ã«è¨±å¯ã™ã‚‹ãƒ¦ãƒ¼ã‚¶ãƒ¼</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">ユーザー:</TH>
-<TD>
-<INPUT TYPE='TEXT' NAME='users' SIZE='60' VALUE='{?requesting_user_name_allowed}{?requesting_user_name_denied}'>
-<BR>
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-allowed' {requesting_user_name_allowed?checked:}>ã“れらã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®å°åˆ·ã‚’許å¯
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>ã“れらã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®å°åˆ·ã‚’ç¦æ­¢
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>
-<INPUT TYPE="SUBMIT" VALUE="許å¯ã™ã‚‹ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®è¨­å®š">
-</TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Cancel Job {job_id}</H2>
<P><A HREF="{job_printer_uri}">Job {job_id}</A> has been canceled.
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Hold Job {job_id}</H2>
<P><A HREF="{job_printer_uri}">Job {job_id}</A> has been held from printing.
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<FORM METHOD="POST" ACTION="/{SECTION}/{job_id?:{printer_name}}">
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
@@ -23,5 +21,3 @@
</TABLE>
</FORM>
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">{job_id?Move Job {job_id}:Move All Jobs}</H2>
<P>{job_id?<A HREF="/jobs/{job_id}">Job {job_id}</A>:All jobs} moved to
<A HREF="/{is_class?classes:printers}/{job_printer_name}">{job_printer_name}</A>.</P>
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Release Job {job_id}</H2>
<P><A HREF="{job_printer_uri}">Job {job_id}</A> has been released for printing.
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Reprint Job {job_id}</H2>
<P><A HREF="{job_printer_uri}">Job {job_id}</A> has been restarted.
-
-</DIV>
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 @@
-<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Show Active Jobs"></FORM>}
+{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Show Active Jobs"></FORM>}
{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="Show Completed Jobs"></FORM>}
-{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Show All Jobs"></FORM>}</DIV>
+{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Show All Jobs"></FORM>}
<P ALIGN="CENTER">{total=0?No jobs:Showing {#job_id} of {total} {?which_jobs=?active:{which_jobs=all?:completed}} job{total=1?:s}}.</P>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Available Printers</H2>
{#device_uri=0?<P>No printers found.</P>
@@ -7,5 +5,3 @@
<LI><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="HIDDEN" NAME="TEMPLATE_NAME" VALUE="{template_name}"><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="Local Printer"><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{device_make_and_model}"><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}"><INPUT TYPE="SUBMIT" VALUE="Add This Printer"></FORM>
{device_make_and_model} ({device_info})</LI>
}</UL>}
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Modify Class {printer_name}</H2>
<FORM METHOD="POST" ACTION="/admin">
@@ -31,4 +29,3 @@
</TABLE>
</FORM>
-</DIV> \ No newline at end of file
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Modify {printer_name}</H2>
<FORM METHOD="POST" ACTION="/admin">
@@ -39,4 +37,3 @@ Share This Printer</TD>
</TABLE>
</FORM>
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Change Settings</H2>
<P>The server was not restarted because no changes were made to
the configuration...</P>
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Accept Jobs On {is_class?Class:Printer} {printer_name}</H2>
<P>{is_class?Class:Printer} <A
HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
is now accepting jobs.</P>
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Add Printer</H2>
<P>Printer <A HREF="/printers/{printer_name}">{printer_name}</A> has been added
successfully.
-
-</DIV>
diff --git a/templates/printer-cancel-jobs.tmpl b/templates/printer-cancel-jobs.tmpl
new file mode 100644
index 000000000..4376646a4
--- /dev/null
+++ b/templates/printer-cancel-jobs.tmpl
@@ -0,0 +1,5 @@
+<H2 CLASS="title">Cancel Jobs On {is_class?Class:Printer} {printer_name}</H2>
+
+<P>All jobs on {is_class?class:printer} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+have been canceled.</P>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Set Default Options for {printer_name}</H2>
<P>{OP=set-class-options?Class <A HREF="/classes/{printer_name}">:Printer <A HREF="/printers/{printer_name}">}{printer_name}</A>
default options have been set successfully.
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Delete Printer {printer_name}</H2>
<P><B>Warning:</B> Are you sure you want to delete printer
{printer_name}?</P>
<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="delete-printer"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Delete Printer"></FORM></P>
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Set {is_class?Class:Printer} {printer_name} As Default</H2>
<P>{is_class?Class:Printer} <A
@@ -9,5 +7,3 @@ has been made the default printer on the server.</P>
<BLOCKQUOTE><B>Note:</B> Any user default that has been set via
the <TT>lpoptions</TT> command will override this default
setting.</BLOCKQUOTE>
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Delete Printer {printer_name}</H2>
<P>Printer {printer_name} has been deleted successfully.
-
-</DIV>
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 @@
-<DIV CLASS="indent">
<H3 CLASS="title">Jobs</H3>
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Modify Printer {printer_name}</H2>
<P>Printer <A HREF="/printers/{printer_name}">{printer_name}</A> has been
modified successfully.
-
-</DIV> \ No newline at end of file
diff --git a/templates/printer-purge.tmpl b/templates/printer-purge.tmpl
deleted file mode 100644
index 8cf7c1461..000000000
--- a/templates/printer-purge.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Purge Jobs On {is_class?Class:Printer} {printer_name}</H2>
-
-<P>{is_class?Class:Printer} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-has been purged of all jobs.</P>
-
-</DIV> \ No newline at end of file
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Reject Jobs On {is_class?Class:Printer} {printer_name}</H2>
<P>{is_class?Class:Printer} <A
HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
is no longer accepting jobs.</P>
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Resume {is_class?Class:Printer} {printer_name}</H2>
<P>{is_class?Class:Printer} <A
HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
has been resumed.</P>
-
-</DIV> \ No newline at end of file
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Pause {is_class?Class:Printer} {printer_name}</H2>
<P>{is_class?Class:Printer} <A
HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
has been paused.</P>
-
-</DIV> \ No newline at end of file
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
({printer_state=3?Idle:{printer_state=4?Processing:Paused}},
{printer_is_accepting_jobs=0?Rejecting Jobs:Accepting Jobs},
@@ -15,7 +13,7 @@
{printer_state=5?<OPTION VALUE="start-printer">Resume Printer</OPTION>:<OPTION VALUE="stop-printer">Pause Printer</OPTION>}
{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Accept Jobs</OPTION>:<OPTION VALUE="reject-jobs">Reject Jobs</OPTION>}
<OPTION VALUE="move-jobs">Move All Jobs</OPTION>
-<OPTION VALUE="purge-jobs">Cancel All Jobs</OPTION>
+<OPTION VALUE="cancel-jobs">Cancel All Jobs</OPTION>
</SELECT>
<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
</FORM>
@@ -43,5 +41,3 @@
media={media_default?{media_default}:unknown}
{sides_default?sides={sides_default}:}</TD></TR>
</TABLE>
-
-</DIV> \ No newline at end of file
diff --git a/templates/pt_BR/add-class.tmpl b/templates/pt_BR/add-class.tmpl
deleted file mode 100644
index 4e777b026..000000000
--- a/templates/pt_BR/add-class.tmpl
+++ /dev/null
@@ -1,40 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Adicionar classe</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nome:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Pode conter qualquer caracter imprim&iacute;vel, exceto "/", "#", e espa&ccedil;o em branco)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Descri&ccedil;&atilde;o:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Descri&ccedil;&atilde;o leg&iacute;vel para humanos, tal como "HP LaserJet com Duplexador")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Localiza&ccedil;&atilde;o:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Localiza&ccedil;&atilde;o leg&iacute;vel para humanos, tal como "Laborat&oacute;rio 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Membros:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Adicionar Classe"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/pt_BR/add-printer.tmpl b/templates/pt_BR/add-printer.tmpl
deleted file mode 100644
index acd10ba0e..000000000
--- a/templates/pt_BR/add-printer.tmpl
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Adicionar impressora</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
-{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Nome:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
-<SMALL>(Pode conter qualquer caracter imprimível, exceto "/", "#" e espaço em branco)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Descrição:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_INFO}"><BR>
-<SMALL>(Descrição legível para humanos, tal como "HP LaserJet com Duplexador")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Localização:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_LOCATION}"><BR>
-<SMALL>(Localização legível para humanos, tal como "Laboratório 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Conexão:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Compartilhamento:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Compartilhar essa Impressora</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continue"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/pt_BR/add-rss-subscription.tmpl b/templates/pt_BR/add-rss-subscription.tmpl
deleted file mode 100644
index ee86b2480..000000000
--- a/templates/pt_BR/add-rss-subscription.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription">
-
-<H2 CLASS="title">Adicionar inscrição RSS</H2>
-
-<TABLE SUMMARY="Formulário para adicionar inscrição RSS">
-<TR>
-<TH CLASS="label">Nome:</TH>
-<TD COLSPAN="5"><INPUT TYPE="TEXT" NAME="SUBSCRIPTION_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?SUBSCRIPTION_NAME}"><BR>
-<SMALL>(Pode conter qualquer caracter imprimível, exceto espaço em branco, "/", "?", e "#")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Fila:</TH>
-<TD COLSPAN="5"><SELECT NAME="PRINTER_URI" SIZE="10"><OPTION VALUE="#ALL#"{?PRINTER_URI=#ALL#? SELECTED:}>All Queues</OPTION>{[printer_name]<OPTION VALUE="{printer_uri_supported}"{?PRINTER_URI={printer_uri_supported}? SELECTED:}>{printer_name}</OPTION>}</SELECT></TD>
-</TR>
-<TR VALIGN="TOP">
-<TH CLASS="label">Eventos:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CREATED" {?EVENT_JOB_CREATED}>Trabalho criado<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_COMPLETED" {?EVENT_JOB_COMPLETED}>Trabalho concluído<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_STOPPED" {?EVENT_JOB_STOPPED}>Trabalho parado<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>Opções do Trabalho alteradas</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_STOPPED" {?EVENT_PRINTER_STOPPED}>Fila parada<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_ADDED" {?EVENT_PRINTER_ADDED}>Fila adicionada<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_MODIFIED" {?EVENT_PRINTER_MODIFIED}>Fila modificada<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_DELETED" {?EVENT_PRINTER_DELETED}>Fila apagada</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STARTED" {?EVENT_SERVER_STARTED}>Servidor iniciado<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STOPPED" {?EVENT_SERVER_STOPPED}>Servidor parado<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_RESTARTED" {?EVENT_SERVER_RESTARTED}>Servidor reiniciado<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_AUDIT" {?EVENT_SERVER_AUDIT}>Auditoria de segurança do servidor</TD>
-</TR>
-<TR>
-<TH CLASS="label">Máximo de eventos no Feed:</TH>
-<TD COLSPAN="5"><INPUT TYPE="NUMBER" NAME="MAX_EVENTS" SIZE="4" MAXLENGTH="4" VALUE="{MAX_EVENTS?{MAX_EVENTS}:20}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD COLSPAN="5"><INPUT TYPE="SUBMIT" VALUE="Adicionar inscrição RSS"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/pt_BR/admin.tmpl b/templates/pt_BR/admin.tmpl
deleted file mode 100644
index 5427f4851..000000000
--- a/templates/pt_BR/admin.tmpl
+++ /dev/null
@@ -1,102 +0,0 @@
-<TABLE CLASS="indent" SUMMARY="Tarefas Administrativas">
-<TR><TD VALIGN="TOP">
-
-<H2 CLASS="title">Impressoras</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="SUBMIT" VALUE="Adicionar impressora"></FORM>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="find-new-printers"><INPUT TYPE="SUBMIT" VALUE="Encontrar novas impressoras"></FORM>
-<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Gerenciar impressoras"></FORM>
-{have_samba?<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba"><INPUT TYPE="SUBMIT" VALUE="Exportar impressoras ao Samba"></FORM>:}
-</P>
-
-<H2 CLASS="title">Classes</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-class"><INPUT TYPE="SUBMIT" VALUE="Adicionar classe"></FORM>
-<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Gerenciar classes"></FORM>
-</P>
-
-<H2 CLASS="title">Trabalhos</H2>
-
-<P>
-<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Gerenciar trabalhos"></FORM>
-</P>
-
-</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
-
-<H2 CLASS="title">Servidor</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server"><INPUT TYPE="SUBMIT" VALUE="Editar arquivo de configuração"></FORM>
-<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Ver log de acessos"></FORM>
-<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Ver log de erros"></FORM>
-<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Ver log de páginas"></FORM>
-</P>
-
-{SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
-<BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-
-{ADVANCEDSETTINGS?<P><B>Configurações do servidor\:</B></P>
-
-<P><A HREF="/admin/">Avançadas <SMALL>&#x25bc;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="HIDDEN" NAME="ADVANCEDSETTINGS" VALUE="YES">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Compartilhar impressoras conectadas a este sistema<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Máximo de clientes\:
-<INPUT TYPE="TEXT" NAME="MAX_CLIENTS" VALUE="{?max_clients}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Permitir impressão a partir da Internet<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Anunciar interface web<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Permitir administração remota<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Usar autenticação via Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Permitir aos usuários cancelar qualquer trabalho (não apenas os seus próprios)<BR>
-<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Preservar o histórico de trabalhos<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Máximo de trabalhos (0 para sem limite)\:
-<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reter metadados\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reter documentos\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Salvar informação de depuração para solução de problemas<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tamanho máximo do arquivo de log\:
-<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
-
-:<P><B>Configurações do servidor:</B></P>
-
-<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Avançadas <SMALL>&#x25b6;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Compartilhar impressoras conectadas a este sistema<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Permitir impressão a partir da Internet<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Permitir administração remota<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Usar autenticação via Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Permitir aos usuários cancelar qualquer trabalho (não apenas seus próprios)<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Salvar informações de depuração para solução de problemas</P>
-
-}
-<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Alterar configurações"></P>
-
-</FORM>}
-
-</TD></TR>
-</TABLE>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Inscrições RSS</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription"><INPUT TYPE="SUBMIT" VALUE="Adicionar inscrição RSS"></FORM>
-</P>
-
-</DIV>
-
-{notify_subscription_id?<TABLE CLASS="list" SUMMARY="Inscrições RSS">
-<THEAD><TR><TH>Nome</TH><TH>Eventos</TH><TH>Nome da fila</TH></TR></THEAD>
-<TBODY>{[notify_subscription_id]
-<TR><TD><A HREF="{notify_recipient_uri}">{notify_recipient_name}</A><BR>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-subscription"><INPUT TYPE="HIDDEN" NAME="notify_subscription_id" VALUE="{notify_subscription_id}"><INPUT TYPE="SUBMIT" VALUE="Cancelar Assinatura"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:Todas as filas}</TD></TR>}
-</TBODY>
-</TABLE>:}
diff --git a/templates/pt_BR/choose-device.tmpl b/templates/pt_BR/choose-device.tmpl
deleted file mode 100644
index 78c8727f9..000000000
--- a/templates/pt_BR/choose-device.tmpl
+++ /dev/null
@@ -1,53 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:Adicionar impressora}</H2>
-
-{CUPS_GET_DEVICES_DONE?<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-
-<TABLE>
-{op=add-printer?:<TR>
-<TH CLASS="label">Conexão atual\:</TH>
-<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
-{current_device_uri}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Impressoras locais\:</TH>
-<TD>
-{[device_uri]{device_class!network?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}}
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Impressoras de rede descobertas\:</TH>
-<TD>
-{[device_uri]{device_class=network?{device_uri~[a-z]+://?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}:}}
-</TD>
-</TR>
-<TR>
-<TR>
-<TH CLASS="label">Outras impressoras de rede\:</TH>
-<TD>
-{[device_uri]{device_class=network?{device_uri~[a-z]+://?:<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-}:}}
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continar"></TD>
-</TR>
-</TABLE>
-
-</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Ocupado"> Procurando impressoras...</P>}
-
-</DIV>
diff --git a/templates/pt_BR/choose-make.tmpl b/templates/pt_BR/choose-make.tmpl
deleted file mode 100644
index abef30d8d..000000000
--- a/templates/pt_BR/choose-make.tmpl
+++ /dev/null
@@ -1,64 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:Adicionar impressora}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Nome:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Descrição:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Localização:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Conexão:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Compartilhamento:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?Não compartilhar:{?printer_is_shared=0?Não compartilhar:Compartilhar}} esta impressora</TD>
-</TR>
-<TR>
-<TH CLASS="label">Fabricante:</TH>
-<TD>
-<SELECT NAME="PPD_MAKE" SIZE="10">
-{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continar"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>&nbsp;</TD>
-</TR>
-<TR>
-<TH CLASS="label">Ou forneça um arquivo PPD:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
-TYPE="FILE" NAME="PPD_FILE"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?Adicionar impressora:Modificar impressora}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/pt_BR/choose-model.tmpl b/templates/pt_BR/choose-model.tmpl
deleted file mode 100644
index 12bd92e3d..000000000
--- a/templates/pt_BR/choose-model.tmpl
+++ /dev/null
@@ -1,60 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:Adicionar impressora}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Nome:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Descrição:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Localização:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Conexão:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Compartilhamento:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?Não compartilhar:{?printer_is_shared=0?Não compartilhar:Compartilhar}} esta impressora</TD>
-</TR>
-<TR>
-<TH CLASS="label">Fabricante:</TH>
-<TD>{PPD_MAKE} <INPUT TYPE="SUBMIT" NAME="SELECT_MAKE" VALUE="Selecione outro fabricante"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Modelo:</TH>
-<TD>
-<SELECT NAME="PPD_NAME" SIZE="10">
-{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Driver atual - {current_make_and_model}</OPTION>:}
-{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
-}</SELECT>
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Ou forneça um arquivo PPD:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
-TYPE="FILE" NAME="PPD_FILE"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?Adicionar impressora:Modificar impressora}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/pt_BR/choose-serial.tmpl b/templates/pt_BR/choose-serial.tmpl
deleted file mode 100644
index 517d4e73c..000000000
--- a/templates/pt_BR/choose-serial.tmpl
+++ /dev/null
@@ -1,52 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:Adicionar impressora}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Conexão:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Taxa de dados (Baud Rate):</TH>
-<TD><SELECT NAME="BAUDRATE">
-{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Paridade:</TH>
-<TD><SELECT NAME="PARITY">
-<OPTION VALUE="none" {?parity=none?SELECTED:}>Nenhum
-<OPTION VALUE="even" {?parity=even?SELECTED:}>Par
-<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Ãmpar
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Bits de Dados:</TH>
-<TD><SELECT NAME="BITS">
-<OPTION {?bits=8?SELECTED:}>8
-<OPTION {?bits=7?SELECTED:}>7
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Controle de Fluxo:</TH>
-<TD><SELECT NAME="FLOW">
-<OPTION VALUE="none" {?flow=none?SELECTED:}>Nenhum
-<OPTION VALUE="soft" {?flow=soft?SELECTED:}>XON/XOFF (Software)
-<OPTION VALUE="hard" {?flow=hard?SELECTED:}>RTS/CTS (Hardware)
-<OPTION VALUE="dtrdsr" {?flow=dtrdsr?SELECTED:}>DTR/DSR (Hardware)
-</SELECT></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continar"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/pt_BR/choose-uri.tmpl b/templates/pt_BR/choose-uri.tmpl
deleted file mode 100644
index 1fe6a4e47..000000000
--- a/templates/pt_BR/choose-uri.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modify {printer_name}:Add Printer}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Conexão:</TH>
-<TD><INPUT TYPE="URL" SIZE="60" MAXLENGTH="1023" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>Exemplos:
-<PRE>
- http://hostname:631/ipp/
- http://hostname:631/ipp/port1
-
- ipp://hostname/ipp/
- ipp://hostname/ipp/port1
-
- lpd://hostname/queue
-
- socket://hostname
- socket://hostname:9100
-</PRE>
-
-<P>Veja <A HREF="/help/network.html" TARGET="_blank">"Network
-Printers"</A> para a URI correta a ser usada para sua impressora.</P>
-
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continuar"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/pt_BR/class-added.tmpl b/templates/pt_BR/class-added.tmpl
deleted file mode 100644
index e556d06ea..000000000
--- a/templates/pt_BR/class-added.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Adicionar classe</H2>
-
-<P>Classe <A HREF="/classes/{printer_name}">{printer_name}</A> foi adicionada com sucesso.
-
-</DIV>
diff --git a/templates/pt_BR/class-confirm.tmpl b/templates/pt_BR/class-confirm.tmpl
deleted file mode 100644
index 454d18df4..000000000
--- a/templates/pt_BR/class-confirm.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Excluir classe {printer_name}</H2>
-
-<P><B>Aviso:</B> Você tem certeza que quer excluir a classe {printer_name}?</P>
-
-<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="op" VALUE="delete-class"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Excluir classe"></FORM></P>
-
-</DIV>
diff --git a/templates/pt_BR/class-deleted.tmpl b/templates/pt_BR/class-deleted.tmpl
deleted file mode 100644
index eea279f98..000000000
--- a/templates/pt_BR/class-deleted.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Excluir classe {printer_name}</H2>
-
-<P>A classe {printer_name} foi excluída com sucesso.
-
-</DIV> \ No newline at end of file
diff --git a/templates/pt_BR/class-jobs-header.tmpl b/templates/pt_BR/class-jobs-header.tmpl
deleted file mode 100644
index 05488e2c9..000000000
--- a/templates/pt_BR/class-jobs-header.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Trabalhos</H3>
-</DIV>
diff --git a/templates/pt_BR/class-modified.tmpl b/templates/pt_BR/class-modified.tmpl
deleted file mode 100644
index 2c64e6ccc..000000000
--- a/templates/pt_BR/class-modified.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modificar classe {printer_name}</H2>
-
-<P>A classe <A HREF="/classes/{printer_name}">{printer_name}</A> foi modificada com sucesso.
-
-</DIV> \ No newline at end of file
diff --git a/templates/pt_BR/class.tmpl b/templates/pt_BR/class.tmpl
deleted file mode 100644
index 2b238337c..000000000
--- a/templates/pt_BR/class.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?Inativa:{printer_state=4?Processando:Pausada}},
-{printer_is_accepting_jobs=0?Rejeitando trabalhos:Aceitando trabalhos},
-{server_is_sharing_printers=0?Não compartilhada:{printer_is_shared=0?Não compartilhada:Compartilhada}} {default_name={printer_name}?, Padrão do servidor:})</H2>
-
-<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
-<OPTION VALUE="">Manutenção</OPTION>
-<OPTION VALUE="print-test-page">Imprimir página de teste</OPTION>
-{printer_state=5?<OPTION VALUE="start-class">Resumir classe</OPTION>:<OPTION VALUE="stop-class">Pausar classe</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Aceitar trabalhos</OPTION>:<OPTION VALUE="reject-jobs">Rejeitar trabalhos</OPTION>}
-<OPTION VALUE="move-jobs">Mover todos trabalhos/OPTION>
-<OPTION VALUE="purge-jobs">Cancelar todos trabalhos</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Ir" STYLE="display: none;">
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
-<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="1">
-<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
-<OPTION VALUE="">Administração</OPTION>
-<OPTION VALUE="modify-class">Modificar classe</OPTION>
-<OPTION VALUE="delete-class">Excluir classe</OPTION>
-<OPTION VALUE="set-class-options">Definir opções padrão</OPTION>
-<OPTION VALUE="set-as-default">Definir como servidor padrão</OPTION>
-<OPTION VALUE="set-allowed-users">Definir usuários permitidos</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Ir" STYLE="display: none;">
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Descrição:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Localização:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Membros:</TH><TD>{?member_uris=?None:{member_uris}}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Padrões:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:desconhecido}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
diff --git a/templates/pt_BR/classes-header.tmpl b/templates/pt_BR/classes-header.tmpl
deleted file mode 100644
index acac395fc..000000000
--- a/templates/pt_BR/classes-header.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Nenhuma classe:Mostrando {#printer_name} de {total} classe{total=1?:s}}.</P>
diff --git a/templates/pt_BR/classes.tmpl b/templates/pt_BR/classes.tmpl
deleted file mode 100644
index 18717dc3d..000000000
--- a/templates/pt_BR/classes.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-{#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="Class List">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Nome da fila <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nome da fila <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Descrição</TH><TH>Localização</TH><TH>Membros</TH><TH>Estado</TH></TR>
-</THEAD>
-<TBODY>
-{[printer_name]
-<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{?member_uris=?Nenhum:{member_uris}}</TD><TD>{printer_state=3?Inativa:{printer_state=4?Processando:Pausada}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/pt_BR/command.tmpl b/templates/pt_BR/command.tmpl
deleted file mode 100644
index 7800ac7a1..000000000
--- a/templates/pt_BR/command.tmpl
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{title} em {printer_name}</H2>
-
-<P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
-ALIGN="ABSMIDDLE" ALT="Busy Indicator"> }Trabalho de comando de impressora
-{job_state=3?pendente:{job_state=4?retido:
-{job_state=5?processando:{job_state=6?parada:
-{job_state=7?cancelado:{job_state=8?abortado:completo}}}}}}{job_state=9?:{job_printer_state_message?,
-<EM>"{job_printer_state_message}"</EM>:}}</P>
-
-</DIV>
diff --git a/templates/pt_BR/edit-config.tmpl b/templates/pt_BR/edit-config.tmpl
deleted file mode 100644
index 026a9e52d..000000000
--- a/templates/pt_BR/edit-config.tmpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<SCRIPT TYPE="text/javascript">
-function reset_config()
-{
- document.cups.CUPSDCONF.value = "{?cupsdconf_default}";
-}
-</SCRIPT>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Editar arquivo de configuração</H2>
-
-<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-
-<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
-
-<P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="Salvar alterações">
-<INPUT TYPE="BUTTON" VALUE="Usar arquivo de configuração padrão"
-onClick="reset_config();"></P>
-
-</FORM>
-
-</DIV>
diff --git a/templates/pt_BR/error-op.tmpl b/templates/pt_BR/error-op.tmpl
deleted file mode 100644
index d694519f7..000000000
--- a/templates/pt_BR/error-op.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Erro {?title} {?printer_name}</H2>
-
-<P>Erro:</P>
-
-<BLOCKQUOTE>Operação desconhecida "{op}"!</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/pt_BR/error.tmpl b/templates/pt_BR/error.tmpl
deleted file mode 100644
index 1bfcc8f6a..000000000
--- a/templates/pt_BR/error.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Erro {?title} {?printer_name}</H2>
-
-<P>{?message?{message}:Erro}:</P>
-
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/pt_BR/header.tmpl.in b/templates/pt_BR/header.tmpl.in
deleted file mode 100644
index f2bafb31c..000000000
--- a/templates/pt_BR/header.tmpl.in
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>{title} - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
- {refresh_page?<META HTTP-EQUIV="Refresh" CONTENT="{refresh_page}">:}
- <SCRIPT TYPE="text/javascript"><!--
- /* Show an error if cookies are disabled */
- function check_cookies() {
- if (!navigator.cookieEnabled) {
- document.getElementById('body').innerHTML = 'This page uses cookies to prevent common cross-site attacks. Please enable cookies in your browser.';
- }
- }
- --></SCRIPT>
-</HEAD>
-<BODY ONLOAD="check_cookies();">
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="unsel"><A HREF="/">&nbsp;&nbsp;In&iacute;cio&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;Administra&ccedil;&atilde;o&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=classes?:un}sel"><A HREF="/classes/">&nbsp;&nbsp;Classes&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=help?:un}sel"><A HREF="/help/">&nbsp;&nbsp;Ajuda&nbsp;online&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;Trabalhos&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;Impressoras&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Procurar ajuda"
-VALUE="{SECTION=help?{?QUERY}:}" AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-</TABLE>
-<DIV ID="body">
-
diff --git a/templates/pt_BR/help-header.tmpl b/templates/pt_BR/help-header.tmpl
deleted file mode 100644
index 080b842fe..000000000
--- a/templates/pt_BR/help-header.tmpl
+++ /dev/null
@@ -1,51 +0,0 @@
-<DIV CLASS="indent">
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
-{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
-
-<P ALIGN="CENTER"><B>Pesquisar em
-{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:todos os documentos}}:</B> <INPUT
-TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER=""
-AUTOSAVE="org.cups.help" RESULTS="20">
-<INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="Pesquisar">
-<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Limpar"></P>
-
-</FORM>
-
-<!-- Bookmarks -->
-<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Conteúdo">
-<TR><TD>
-
-<H3 CLASS="title">Documentos de ajuda online</H3>
-
-<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Todos os Documentos</A></P>
-<HR>
-
-{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
-}
-</TD></TR>
-</TABLE></DIV>
-
-{QUERY?<P>Pesquisar resultados em {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:Todos os documentos}}\:</P>
-{QTEXT?<UL>
-{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (em <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
-{QTEXT?</UL>:}
-:<P>Nenhum resultado encontrado.</P>}
-<HR NOSHADE>:}
-{HELPTITLE?<H1>{HELPTITLE}</H1>
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Ver versão imprimível"></FORM>:
-
-<H1>Ajuda online</H1>
-
-<P>Essa é a interface de ajuda online do CUPS. Forneça expressões de pesquisa
-acima ou clique em qualquer um dos links de documentação para mostrar
-a informação de ajuda online.</P>
-
-<P>Se você é novo no CUPS, leia a página "<a
-href="/help/overview.html">Visão geral do CUPS</a>". Usuários veteranos
-devem ler a página "<a href="/help/whatsnew.html">O que Há de Novo no CUPS
-1.6</a>".</P>
-
-<P>A <A HREF="http://www.cups.org/">Página inicial do CUPS</A> também
-fornece muitos recursos incluindo fórums de discussão de usuários, respostas
-a perguntas frequentes e um formulário para enviar registros de erros e
-pedidos de melhorias.</P>}
diff --git a/templates/pt_BR/job-cancel.tmpl b/templates/pt_BR/job-cancel.tmpl
deleted file mode 100644
index c93b43156..000000000
--- a/templates/pt_BR/job-cancel.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Cancelar trabalho {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Trabalho {job_id}</A> foi cancelado.
-
-</DIV>
diff --git a/templates/pt_BR/job-hold.tmpl b/templates/pt_BR/job-hold.tmpl
deleted file mode 100644
index 37aa6259c..000000000
--- a/templates/pt_BR/job-hold.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Reter trabalho {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Trabalho {job_id}</A> foi retido para não ser impresso.
-
-</DIV>
diff --git a/templates/pt_BR/job-move.tmpl b/templates/pt_BR/job-move.tmpl
deleted file mode 100644
index 74b3a8bf8..000000000
--- a/templates/pt_BR/job-move.tmpl
+++ /dev/null
@@ -1,27 +0,0 @@
-<DIV CLASS="indent">
-
-<FORM METHOD="POST" ACTION="/{SECTION}/{job_id?:{printer_name}}">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
-
-<H2 CLASS="title">{job_id?Mover trabalho {job_id}:Mover todos trabalhos}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Novo destino:</TH>
-<TD>
-<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
-{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{job_id?Mover trabalho:Mover trabalhos}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-
-</DIV>
diff --git a/templates/pt_BR/job-moved.tmpl b/templates/pt_BR/job-moved.tmpl
deleted file mode 100644
index 66f7096ff..000000000
--- a/templates/pt_BR/job-moved.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{job_id?Mover trabalho {job_id}:Mover trabalhos}</H2>
-
-<P>{job_id?<A HREF="/jobs/{job_id}">Trabalho {job_id} for movido</A>:Todos trabalhos foram movidos} para
-<A HREF="/{is_class?classes:printers}/{job_printer_name}">{job_printer_name}</A>.</P>
-
-</DIV>
diff --git a/templates/pt_BR/job-release.tmpl b/templates/pt_BR/job-release.tmpl
deleted file mode 100644
index f44ab3644..000000000
--- a/templates/pt_BR/job-release.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Liberar trabalho {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Trabalho {job_id}</A> foi liberado para impressão.
-
-</DIV>
diff --git a/templates/pt_BR/job-restart.tmpl b/templates/pt_BR/job-restart.tmpl
deleted file mode 100644
index cf0807543..000000000
--- a/templates/pt_BR/job-restart.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Reimprimir trabalho {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Trabalho {job_id}</A> foi reiniciado.
-
-</DIV>
diff --git a/templates/pt_BR/jobs-header.tmpl b/templates/pt_BR/jobs-header.tmpl
deleted file mode 100644
index c37736f9e..000000000
--- a/templates/pt_BR/jobs-header.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Mostrar trabalhos ativos"></FORM>}
-{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="Mostrar trabalhos completos"></FORM>}
-{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Mostrar todos trabalhos"></FORM>}</DIV>
-
-<P ALIGN="CENTER">{total=0?Nenhum trabalho:Mostrando {#job_id} de {total} trabalho{total=1?:s}} {?which_jobs=?ativos:{which_jobs=all?:completos}} .</P>
diff --git a/templates/pt_BR/jobs.tmpl b/templates/pt_BR/jobs.tmpl
deleted file mode 100644
index 3ad21081b..000000000
--- a/templates/pt_BR/jobs.tmpl
+++ /dev/null
@@ -1,36 +0,0 @@
-{#job_id=0?:
-<TABLE CLASS="list" SUMMARY="Job List">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> ID <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Nome</TH><TH>Usuário</TH><TH>Tamanho</TH><TH>Páginas</TH><TH>Estado</TH><TH>Controle</TH></TR>
-</THEAD>
-<TBODY>
-{[job_id]
-<TR VALIGN="TOP">
-<TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id}{?phone? ({phone}):}&nbsp;</TD>
-<TD>{?job_name=?Desconhecido:{job_name}}&nbsp;</TD>
-<TD>{?job_originating_user_name=?Oculto:{job_originating_user_name}}&nbsp;</TD>
-<TD>{job_k_octets}k&nbsp;</TD>
-<TD>{job_media_sheets_completed=0?Desconhecido:{?job_media_sheets_completed}}&nbsp;</TD>
-<TD>{job_state=3?pendente desde<BR>{time_at_creation}:{job_state=4?retido desde<BR>{time_at_creation}:
-{job_state=5?processando desde<BR>{time_at_processing}:{job_state=6?parado:
-{job_state=7?cancelado em<BR>{time_at_completed}:{job_state=8?abortado:completou em<BR>{time_at_completed}}}}}}}&nbsp;{job_printer_state_message?<BR>
-<EM>"{job_printer_state_message}"</EM>:}</TD>
-<TD>
-{job_preserved>0?{job_state>5?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="restart-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}"><INPUT TYPE="SUBMIT" VALUE="Reimprimir trabalho"></FORM>:}:}
-{job_state=4?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="release-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Liberar trabalho"></FORM>:}
-{job_state=3?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Reter trabalho"></FORM>:}
-{job_state<7?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Cancelar trabalho"></FORM>
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="move-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="SUBMIT" VALUE="Mover trabalho"></FORM>:}
-&nbsp;</TD>
-</TR>
-}
-</TBODY>
-</TABLE>
-}
diff --git a/templates/pt_BR/list-available-printers.tmpl b/templates/pt_BR/list-available-printers.tmpl
deleted file mode 100644
index bdfe90371..000000000
--- a/templates/pt_BR/list-available-printers.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Impressoras disponíveis</H2>
-
-{#device_uri=0?<P>Nenhuma impressora encontrada.</P>
-:<UL>{[device_uri]
-<LI><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="HIDDEN" NAME="TEMPLATE_NAME" VALUE="{template_name}"><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="Local Printer"><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{device_make_and_model}"><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}"><INPUT TYPE="SUBMIT" VALUE="Adicionar esta impressora"></FORM>
-{device_make_and_model} ({device_info})</LI>
-}</UL>}
-
-</DIV>
diff --git a/templates/pt_BR/modify-class.tmpl b/templates/pt_BR/modify-class.tmpl
deleted file mode 100644
index 606dcfe8b..000000000
--- a/templates/pt_BR/modify-class.tmpl
+++ /dev/null
@@ -1,34 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modificar classe {printer_name}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Descrição:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Localização:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Membros:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Modificar classe"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/pt_BR/modify-printer.tmpl b/templates/pt_BR/modify-printer.tmpl
deleted file mode 100644
index a43313ab1..000000000
--- a/templates/pt_BR/modify-printer.tmpl
+++ /dev/null
@@ -1,42 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modificar {printer_name}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Descrição:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Descrição legível para humanos, tal como "HP LaserJet com Duplexador")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Localização:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Localização legível para humanos, tal como "Laboratório 1")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Conexão:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Compartilhamento:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Compartilhar esta impressora</TD>
-</TR>
-<TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continar"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/pt_BR/norestart.tmpl b/templates/pt_BR/norestart.tmpl
deleted file mode 100644
index e0708cc72..000000000
--- a/templates/pt_BR/norestart.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Alterar configurações</H2>
-
-<P>O servidor não foi reiniciado porque nenhuma alteração foi feita na configuração...</P>
-
-</DIV>
diff --git a/templates/pt_BR/option-boolean.tmpl b/templates/pt_BR/option-boolean.tmpl
deleted file mode 100644
index e832ee102..000000000
--- a/templates/pt_BR/option-boolean.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD>
-{[choices]<INPUT TYPE="RADIO" NAME="{keyword-1}" {choices={defchoice-1}?CHECKED:} VALUE="{choices}">{text}}
-</TD>
-</TR>
diff --git a/templates/pt_BR/option-conflict.tmpl b/templates/pt_BR/option-conflict.tmpl
deleted file mode 100644
index 2874c2de1..000000000
--- a/templates/pt_BR/option-conflict.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<P><B>Erro:</B> As seguintes opções estão conflitando:</P>
-
-<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
-}</UL>
-
-<P>Por favor, altere uma ou mais opções para resolver os conflitos.</P>
diff --git a/templates/pt_BR/option-header.tmpl b/templates/pt_BR/option-header.tmpl
deleted file mode 100644
index 464726a50..000000000
--- a/templates/pt_BR/option-header.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="tab" ID="{group_id}">
-
-<H3 ALIGN="CENTER">{group}</H3>
-
-<TABLE WIDTH="100%">
diff --git a/templates/pt_BR/option-pickmany.tmpl b/templates/pt_BR/option-pickmany.tmpl
deleted file mode 100644
index 0da75e5d2..000000000
--- a/templates/pt_BR/option-pickmany.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT></TD>
-</TR>
diff --git a/templates/pt_BR/option-pickone.tmpl b/templates/pt_BR/option-pickone.tmpl
deleted file mode 100644
index 758b20ad4..000000000
--- a/templates/pt_BR/option-pickone.tmpl
+++ /dev/null
@@ -1,18 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" ID="select-{keyword}" ONCHANGE="update_paramtable('{keyword}')">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT>
-{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
-<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
-<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Pontos</OPTION>
-<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Milímetros</OPTION>
-<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Centímetros</OPTION>
-<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Polegadas</OPTION>
-<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Pés</OPTION>
-<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Metros</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
-}</TABLE>
-</TD>:}
-</TR>
diff --git a/templates/pt_BR/option-trailer.tmpl b/templates/pt_BR/option-trailer.tmpl
deleted file mode 100644
index 882c8b917..000000000
--- a/templates/pt_BR/option-trailer.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-</TABLE>
-
-<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="Definir opções padrão"></P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/pt_BR/pager.tmpl b/templates/pt_BR/pager.tmpl
deleted file mode 100644
index 6ee823a70..000000000
--- a/templates/pt_BR/pager.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TABLE CLASS="inset" SUMMARY="Barra de paginação">
-<TR>
- <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Mostrar anterior"></FORM>:&nbsp;}</TD>
- <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Mostrar próximo &#x25b6;"></FORM>:&nbsp;}</TD>
-</TR>
-</TABLE>
diff --git a/templates/pt_BR/printer-accept.tmpl b/templates/pt_BR/printer-accept.tmpl
deleted file mode 100644
index d19a13f46..000000000
--- a/templates/pt_BR/printer-accept.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Aceitar trabalhos na {is_class?classe:impressora} {printer_name}</H2>
-
-<P>A {is_class?classe:impressora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-agora está aceitando trabalhos.</P>
-
-</DIV>
diff --git a/templates/pt_BR/printer-added.tmpl b/templates/pt_BR/printer-added.tmpl
deleted file mode 100644
index e021f2cf5..000000000
--- a/templates/pt_BR/printer-added.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Adicionar impressora</H2>
-
-<P>A impressora <A HREF="/printers/{printer_name}">{printer_name}</A> foi adicionada
-com sucesso.
-
-</DIV>
diff --git a/templates/pt_BR/printer-configured.tmpl b/templates/pt_BR/printer-configured.tmpl
deleted file mode 100644
index 8cd2aa560..000000000
--- a/templates/pt_BR/printer-configured.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Configurar opções padrão para {printer_name}</H2>
-
-<P>As opções padrão da {OP=set-class-options?classe <A HREF="/classes/{printer_name}">:impressora <A HREF="/printers/{printer_name}">}{printer_name}</A>
-foram configuradas com sucesso.
-
-</DIV>
diff --git a/templates/pt_BR/printer-confirm.tmpl b/templates/pt_BR/printer-confirm.tmpl
deleted file mode 100644
index 08f3a5ac3..000000000
--- a/templates/pt_BR/printer-confirm.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Excluir impressora {printer_name}</H2>
-
-<P><B>Aviso:</B> Tem certeza que deseja excluir a impressora
-{printer_name}?</P>
-
-<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="delete-printer"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Apagar impressora"></FORM></P>
-
-</DIV>
diff --git a/templates/pt_BR/printer-default.tmpl b/templates/pt_BR/printer-default.tmpl
deleted file mode 100644
index 6c5e7deb3..000000000
--- a/templates/pt_BR/printer-default.tmpl
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Definir a {is_class?classe:impressora} {printer_name} como padrão</H2>
-
-<P>A {is_class?classe:impressora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-foi definida como a impressora padrão no servidor.</P>
-
-<BLOCKQUOTE><B>Nota:</B> O padrão de qualquer usuário que tenha sido configurado via
-do comando <TT>lpoptions</TT> vai sobrepor esta configuração padrão.</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/pt_BR/printer-deleted.tmpl b/templates/pt_BR/printer-deleted.tmpl
deleted file mode 100644
index 270eb127c..000000000
--- a/templates/pt_BR/printer-deleted.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Excluir Impressora {printer_name}</H2>
-
-<P>A impressora {printer_name} foi excluída com sucesso.
-
-</DIV>
diff --git a/templates/pt_BR/printer-jobs-header.tmpl b/templates/pt_BR/printer-jobs-header.tmpl
deleted file mode 100644
index 05488e2c9..000000000
--- a/templates/pt_BR/printer-jobs-header.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">Trabalhos</H3>
-</DIV>
diff --git a/templates/pt_BR/printer-modified.tmpl b/templates/pt_BR/printer-modified.tmpl
deleted file mode 100644
index d0d919a01..000000000
--- a/templates/pt_BR/printer-modified.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Modificar impressora {printer_name}</H2>
-
-<P>A impressora <A HREF="/printers/{printer_name}">{printer_name}</A> foi
-modificada com sucesso.
-
-</DIV> \ No newline at end of file
diff --git a/templates/pt_BR/printer-purge.tmpl b/templates/pt_BR/printer-purge.tmpl
deleted file mode 100644
index cb480b41e..000000000
--- a/templates/pt_BR/printer-purge.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Eliminar trabalhos na {is_class?classe:impressora} {printer_name}</H2>
-
-<P>Todos os trabalhos da {is_class?classe:impressora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-foram eliminados.</P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/pt_BR/printer-reject.tmpl b/templates/pt_BR/printer-reject.tmpl
deleted file mode 100644
index 2bcca7b52..000000000
--- a/templates/pt_BR/printer-reject.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Rejeitar trabalhos na {is_class?classe:impressora} {printer_name}</H2>
-
-<P>A {is_class?classe:impressora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-não está mais aceitando trabalhos.</P>
-
-</DIV>
diff --git a/templates/pt_BR/printer-start.tmpl b/templates/pt_BR/printer-start.tmpl
deleted file mode 100644
index 3826f8470..000000000
--- a/templates/pt_BR/printer-start.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Resumir a {is_class?classe:impressora} {printer_name}</H2>
-
-<P>A {is_class?classe:impressora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-foi resumida com sucesso.</P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/pt_BR/printer-stop.tmpl b/templates/pt_BR/printer-stop.tmpl
deleted file mode 100644
index dfd8dce36..000000000
--- a/templates/pt_BR/printer-stop.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Pausar a {is_class?classe:impressora} {printer_name}</H2>
-
-<P>A {is_class?classe:impressora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-foi pausada.</P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/pt_BR/printer.tmpl b/templates/pt_BR/printer.tmpl
deleted file mode 100644
index b5ceb234d..000000000
--- a/templates/pt_BR/printer.tmpl
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?Inativa:{printer_state=4?processando:pausada}},
-{printer_is_accepting_jobs=0?rejeitando trabalhos:aceitando trabalhos},
-{server_is_sharing_printers=0?não compartilhada:{printer_is_shared=0?não compartilhada:compartilhada}} {default_name={printer_name}?, padrão do servidor:})</H2>
-
-<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
-<OPTION VALUE="">Manutenção</OPTION>
-<OPTION VALUE="print-test-page">Imprimir página de teste</OPTION>
-{printer_commands~.*Clean.*?<OPTION VALUE="clean-print-heads">Limpar cabeças de impressão</OPTION>:}
-{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">Imprimir página de auto-teste</OPTION>:}
-{printer_state=5?<OPTION VALUE="start-printer">Pausar impressora</OPTION>:<OPTION VALUE="stop-printer">Pausar impressora</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Aceitar trabalhos</OPTION>:<OPTION VALUE="reject-jobs">Rejeitar trabalhos</OPTION>}
-<OPTION VALUE="move-jobs">Mover todos trabalhos</OPTION>
-<OPTION VALUE="purge-jobs">Cancelar todos trabalhos</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Ir"></NOSCRIPT>
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
-<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
-<OPTION VALUE="">Administração</OPTION>
-<OPTION VALUE="modify-printer">Modificar impressora</OPTION>
-<OPTION VALUE="delete-printer">Excluir impressora</OPTION>
-<OPTION VALUE="set-printer-options">Definir opções padrão</OPTION>
-<OPTION VALUE="set-as-default">Definir com padrão do servidor</OPTION>
-<OPTION VALUE="set-allowed-users">Definir usuários permitidos</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Ir"></NOSCRIPT>
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Descrição:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Localização:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Driver:</TH><TD>{printer_make_and_model} ({color_supported=1?color:grayscale}{sides_supported?, 2-sided printing:})<BR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Conexão:</TH><TD>{device_uri}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Padrões:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:desconhecido}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV> \ No newline at end of file
diff --git a/templates/pt_BR/printers-header.tmpl b/templates/pt_BR/printers-header.tmpl
deleted file mode 100644
index c5d0a74da..000000000
--- a/templates/pt_BR/printers-header.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Nenhuma impressora:Mostrando {#printer_name} de {total} impressora{total=1?:s}}.</P>
diff --git a/templates/pt_BR/printers.tmpl b/templates/pt_BR/printers.tmpl
deleted file mode 100644
index 97ee46219..000000000
--- a/templates/pt_BR/printers.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-{#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="Lista de impressoras">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Nome da fila <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nome da fila <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Descrição</TH><TH>Localização</TH><TH>Marca e modelo</TH><TH>Estado</TH></TR>
-</THEAD>
-<TBODY>
-{[printer_name]
-<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{printer_make_and_model}</TD><TD>{printer_state=3?Ociosa:{printer_state=4?Processando:Pausada}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/pt_BR/restart.tmpl b/templates/pt_BR/restart.tmpl
deleted file mode 100644
index 0a90143c1..000000000
--- a/templates/pt_BR/restart.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Alterar configurações</H2>
-
-<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> Por favor, aguarde enquanto o servidor é reiniciado...</P>
-
-</DIV>
diff --git a/templates/pt_BR/samba-export.tmpl b/templates/pt_BR/samba-export.tmpl
deleted file mode 100644
index 15a6b414e..000000000
--- a/templates/pt_BR/samba-export.tmpl
+++ /dev/null
@@ -1,54 +0,0 @@
-<SCRIPT TYPE="text/javascript"><!--
-function select_printers() {
- var list = document.export_samba.EXPORT_NAME;
- var sel = document.export_samba.EXPORT_ALL.checked;
-
- for (i = 0; i < list.length; i ++) {
- list.options[i].selected = sel;
- }
-}
---></SCRIPT>
-
-<FORM METHOD="POST" ACTION="/admin/" NAME="export_samba">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
-
-<H2 CLASS="title">Exportar impressoras para o Samba</H2>
-
-{error?<P>Não foi possível exportar impressoras para o Samba\:</P>
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-<P>Consulte o arquivo <A HREF="/admin/log/error_log"
-TARGET="_blank">error_log</A> para mais informações.</P>:
-<P>Essa página permite que você exporte impressoras para o Samba
-para que clientes Windows possam acessá-las através do ícone de
-<VAR>Meus locais de rede</VAR> nas suas áreas de trabalho.
-Você deve primeiro instalar os drivers de impressora PostScript
-do Windows como descrito na página de manual do
-<A HREF="/help/man-cupsaddsmb.html" TARGET="_blank">cupsaddsmb(8)</A>.</P>}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Impressoras:</TH>
-<TD>
-<SELECT NAME="EXPORT_NAME" SIZE="10" MULTIPLE>
-{[printer_name]<OPTION VALUE="{printer_name}"{export_all? SELECTED:{printer_export? SELECTED:}}>{printer_name}}
-</SELECT><BR>
-<INPUT TYPE="CHECKBOX" NAME="EXPORT_ALL"{export_all? CHECKED:}
-onChange="select_printers()"> Exportar todas as impressoras
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Nome do usuário do Samba:</TH>
-<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (obrigatório)</TD>
-</TR>
-<TR>
-<TH CLASS="label">Senha do Samba:</TH>
-<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (obrigatório)</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Exportar impressoras para o Samba"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/pt_BR/samba-exported.tmpl b/templates/pt_BR/samba-exported.tmpl
deleted file mode 100644
index c2ec3a576..000000000
--- a/templates/pt_BR/samba-exported.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P>Impressoras exportadas para o samba com sucesso.</P>
diff --git a/templates/pt_BR/search.tmpl b/templates/pt_BR/search.tmpl
deleted file mode 100644
index 1d6cbbaa8..000000000
--- a/templates/pt_BR/search.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
-{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
-{ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
-
-<P ALIGN="CENTER"><B>Pesquisar em
-{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?classes:{SECTION=jobs?Trabalhos:Impressoras}}}:</B>
-<INPUT TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER="" AUTOSAVE="org.cups.{SECTION}" RESULTS="20"> <INPUT
-TYPE="SUBMIT" VALUE="Pesquisar"> <INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Limpar"></P>
-
-</FORM>
diff --git a/templates/pt_BR/set-printer-options-header.tmpl b/templates/pt_BR/set-printer-options-header.tmpl
deleted file mode 100644
index 4c15c0c02..000000000
--- a/templates/pt_BR/set-printer-options-header.tmpl
+++ /dev/null
@@ -1,26 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Definir opções padrão para {printer_name}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{HAVE_AUTOCONFIGURE?<INPUT TYPE="SUBMIT" NAME="AUTOCONFIGURE" VALUE="Consultar impressora por opções padrão">:}
-
-<SCRIPT TYPE="text/javascript"><!--
-function update_paramtable(option)
-{
- var cb = document.getElementById("select-" + option)
- var paramstable = document.getElementById(option + "-params");
- if (cb.value == "Custom")
- paramstable.style.display = "table";
- else
- paramstable.style.display = "none";
-}
---></SCRIPT>
-
-<H3 CLASS="title">{[group_id]
-<A HREF="#{group_id}">{group}</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</H3>
-
-<DIV CLASS="tabs">
diff --git a/templates/pt_BR/set-printer-options-trailer.tmpl b/templates/pt_BR/set-printer-options-trailer.tmpl
deleted file mode 100644
index 11adc7012..000000000
--- a/templates/pt_BR/set-printer-options-trailer.tmpl
+++ /dev/null
@@ -1,16 +0,0 @@
-</DIV>
-
-<SCRIPT TYPE="text/javascript"><!--
-// Hide custom options parameters for browsers that understand Javascript
-var paramtables = document.getElementsByName("paramtable");
-for (var i = 0; i < paramtables.length; i++)
-{
- var opt = paramtables[i].id.substr(0, paramtables[i].id.lastIndexOf("-"));
- var cb = document.getElementById("select-" + opt);
- if (cb.value != "Custom")
- paramtables[i].style.display = "none";
-}
---></SCRIPT>
-</FORM>
-
-</DIV>
diff --git a/templates/pt_BR/subscription-added.tmpl b/templates/pt_BR/subscription-added.tmpl
deleted file mode 100644
index 32cf79a15..000000000
--- a/templates/pt_BR/subscription-added.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>A inscrição {subscription_name} foi adicionada com sucesso.</P>
-
-</DIV>
diff --git a/templates/pt_BR/subscription-canceled.tmpl b/templates/pt_BR/subscription-canceled.tmpl
deleted file mode 100644
index 173230ba2..000000000
--- a/templates/pt_BR/subscription-canceled.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>A inscrição #{notify_subscription_id} foi cancelada.</P>
-
-</DIV>
diff --git a/templates/pt_BR/test-page.tmpl b/templates/pt_BR/test-page.tmpl
deleted file mode 100644
index 6d038affd..000000000
--- a/templates/pt_BR/test-page.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Imprimir página de teste em {printer_name}</H2>
-
-<P>Página de teste enviada; o ID do trabalho é <A HREF="/{SECTION}/{printer_name}">
-{printer_name}-{job_id}</A>.</P>
-
-</DIV>
diff --git a/templates/pt_BR/trailer.tmpl b/templates/pt_BR/trailer.tmpl
deleted file mode 100644
index 167e43fae..000000000
--- a/templates/pt_BR/trailer.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-</DIV></TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS e sua logo são marcas registradas da
-<A HREF="http://www.apple.com">Apple Inc.</A> CUPS é copyright 2007-2014 Apple
-Inc. Todos os direitos reservados.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/templates/pt_BR/users.tmpl b/templates/pt_BR/users.tmpl
deleted file mode 100644
index 76cf19a1e..000000000
--- a/templates/pt_BR/users.tmpl
+++ /dev/null
@@ -1,30 +0,0 @@
-<DIV CLASS="indent">
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{OP}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-{IS_CLASS?<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="{IS_CLASS}">:}
-
-<H2 CLASS="title">Usuários permitidos para {printer_name}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Usuários:</TH>
-<TD>
-<INPUT TYPE='TEXT' NAME='users' SIZE='60' VALUE='{?requesting_user_name_allowed}{?requesting_user_name_denied}'>
-<BR>
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-allowed' {requesting_user_name_allowed?checked:}>Permitir que estes usuários imprimam
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>Impedir que estes usuários imprimam
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>
-<INPUT TYPE="SUBMIT" VALUE="Definir usuários permitidos">
-</TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/restart.tmpl b/templates/restart.tmpl
index bdfca876f..47d39d071 100644
--- a/templates/restart.tmpl
+++ b/templates/restart.tmpl
@@ -1,8 +1,4 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Change Settings</H2>
-<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
+<P><IMG SRC="data:image/gif;base64,R0lGODlhEAAQAIQAAP///wAAAPDw8IqKiuDg4EZGRnp6egAAAFhYWCQkJKysrL6+vhQUFJycnAQEBDY2NmhoaP///////////////////////////////////////////////////////////yH/C05FVFNDQVBFMi4wAwEAAAAh+QQABQD/ACwAAAAAEAAQAAAFdyAgAgIJIeWoAkRCCMdBkKtIHIngyMKsErPBYbADpkSCwhDmQCBethRB6Vj4kFCkQPG4IlWDgrNRIwnO4UKBXDufzQvDMaoSDBgFb886MiQadgNABAokfCwzBA8LCg0Egl8jAggGAA1kBIA1BAYzlyILczULC2UhACH5BAEFAB8ALAAAAAAQABAAAAV2ICACAmlAZTmOREEIyUEQjLKKxPHADhEvqxlgcGgkGI1DYSVAIAWMx+lwSKkICJ0QsHi9RgKBwnVTiRQQgwF4I4UFDQQEwi6/3YSGWRRmjhEETAJfIgMFCnAKM0KDV4EEEAQLiF18TAYNXDaSe3x6mjidN1s3IQAh+QQBBQAfACwAAAAAEAAQAAAFeCAgAgLZDGU5jgRECEUiCI+yioSDwDJyLKsXoHFQxBSHAoAAFBhqtMJg8DgQBgfrEsJAEAg4YhZIEiwgKtHiMBgtpg3wbUZXGO7kOb1MUKRFMysCChAoggJCIg0GC2aNe4gqQldfL4l/Ag1AXySJgn5LcoE3QXI3IQAh+QQBBQAfACwAAAAAEAAQAAAFdiAgAgLZNGU5joQhCEjxIssqEo8bC9BRjy9Ag7GILQ4QEoE0gBAEBcOpcBA0DoxSK/e8LRIHn+i1cK0IyKdg0VAoljYIg+GgnRrwVS/8IAkICyosBIQpBAMoKy9dImxPhS+GKkFrkX+TigtLlIyKXUF+NjagNiEAIfkEAQUAHwAsAAAAABAAEAAABWwgIAICaRhlOY4EIgjH8R7LKhKHGwsMvb4AAy3WODBIBBKCsYA9TjuhDNDKEVSERezQEL0WrhXucRUQGuik7bFlngzqVW9LMl9XWvLdjFaJtDFqZ1cEZUB0dUgvL3dgP4WJZn4jkomWNpSTIyEAIfkEAQUAHwAsAAAAABAAEAAABX4gIAICuSxlOY6CIgiD8RrEKgqGOwxwUrMlAoSwIzAGpJpgoSDAGifDY5kopBYDlEpAQBwevxfBtRIUGi8xwWkDNBCIwmC9Vq0aiQQDQuK+VgQPDXV9hCJjBwcFYU5pLwwHXQcMKSmNLQcIAExlbH8JBwttaX0ABAcNbWVbKyEAIfkEAQUAHwAsAAAAABAAEAAABXkgIAICSRBlOY7CIghN8zbEKsKoIjdFzZaEgUBHKChMJtRwcWpAWoWnifm6ESAMhO8lQK0EEAV3rFopIBCEcGwDKAqPh4HUrY4ICHH1dSoTFgcHUiZjBhAJB2AHDykpKAwHAwdzf19KkASIPl9cDgcnDkdtNwiMJCshACH5BAEFAB8ALAAAAAAQABAAAAV3ICACAkkQZTmOAiosiyAoxCq+KPxCNVsSMRgBsiClWrLTSWFoIQZHl6pleBh6suxKMIhlvzbAwkBWfFWrBQTxNLq2RG2yhSUkDs2b63AYDAoJXAcFRwADeAkJDX0AQCsEfAQMDAIPBz0rCgcxky0JRWE1AmwpKyEAIfkEAQUAHwAsAAAAABAAEAAABXkgIAICKZzkqJ4nQZxLqZKv4NqNLKK2/Q4Ek4lFXChsg5ypJjs1II3gEDUSRInEGYAw6B6zM4JhrDAtEosVkLUtHA7RHaHAGJQEjsODcEg0FBAFVgkQJQ1pAwcDDw8KcFtSInwJAowCCA6RIwqZAgkPNgVpWndjdyohACH5BAEFAB8ALAAAAAAQABAAAAV5ICACAimc5KieLEuUKvm2xAKLqDCfC2GaO9eL0LABWTiBYmA06W6kHgvCqEJiAIJiu3gcvgUsscHUERm+kaCxyxa+zRPk0SgJEgfIvbAdIAQLCAYlCj4DBw0IBQsMCjIqBAcPAooCBg9pKgsJLwUFOhCZKyQDA3YqIQAh+QQBBQAfACwAAAAAEAAQAAAFdSAgAgIpnOSonmxbqiThCrJKEHFbo8JxDDOZYFFb+A41E4H4OhkOipXwBElYITDAckFEOBgMQ3arkMkUBdxIUGZpEb7kaQBRlASPg0FQQHAbEEMGDSVEAA1QBhAED1E0NgwFAooCDWljaQIQCE5qMHcNhCkjIQAh+QQBBQAfACwAAAAAEAAQAAAFeSAgAgIpnOSoLgxxvqgKLEcCC65KEAByKK8cSpA4DAiHQ/DkKhGKh4ZCtCyZGo6F6iYYPAqFgYy02xkSaLEMV34tELyRYNEsCQyHlvWkGCzsPgMCEAY7Cg04Uk48LAsDhRA8MVQPEF0GAgqYYwSRlycNcWskCkApIyEAOw==" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
ALT="Busy Indicator"> Please stand by while the server restarts...</P>
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">ÐÐ¾Ð²Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð°</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Ðазвание:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(может Ñодержать любые Ñимволы, кроме "/", "#" и пробела)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">ОпиÑание:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(РаÑширенное опиÑание группы, например, "ДуплекÑный принтер")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">РаÑположение:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(МеÑтораÑположение группы, например, "Кабинет 55")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">СоÑтав группы:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Добавить группу"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/ru/add-printer.tmpl b/templates/ru/add-printer.tmpl
deleted file mode 100644
index 6690d88ca..000000000
--- a/templates/ru/add-printer.tmpl
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Добавление принтера</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
-{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Ðазвание:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
-<SMALL>(может Ñодержать любые Ñимволы, кроме "/","#" и пробела)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">ОпиÑание:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_INFO}"><BR>
-<SMALL>(раÑширенное опиÑание, например, "HP LaserJet Ñ Ð´ÑƒÐ¿Ð»ÐµÐºÑной печатью")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">РаÑположение:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_LOCATION}"><BR>
-<SMALL>(меÑтораÑположение принтера, например, "Кабинет 55")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Подключение:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">СовмеÑтный доÑтуп:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Разрешить ÑовмеÑтный доÑтуп к Ñтому принтеру</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Продолжить"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/ru/add-rss-subscription.tmpl b/templates/ru/add-rss-subscription.tmpl
deleted file mode 100644
index 4567b9262..000000000
--- a/templates/ru/add-rss-subscription.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription">
-
-<H2 CLASS="title">Добавление подпиÑки по RSS</H2>
-
-<TABLE SUMMARY="Добавление подпиÑки по RSS">
-<TR>
-<TH CLASS="label">Ðазвание:</TH>
-<TD COLSPAN="5"><INPUT TYPE="TEXT" NAME="SUBSCRIPTION_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?SUBSCRIPTION_NAME}"><BR>
-<SMALL>(Может Ñодержать любые Ñимволы, кроме "/", "#", "?" и пробела)</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Очередь:</TH>
-<TD COLSPAN="5"><SELECT NAME="PRINTER_URI" SIZE="10"><OPTION VALUE="#ALL#"{?PRINTER_URI=#ALL#? SELECTED:}>Ð’Ñе очереди</OPTION>{[printer_name]<OPTION VALUE="{printer_uri_supported}"{?PRINTER_URI={printer_uri_supported}? SELECTED:}>{printer_name}</OPTION>}</SELECT></TD>
-</TR>
-<TR VALIGN="TOP">
-<TH CLASS="label">СобытиÑ:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CREATED" {?EVENT_JOB_CREATED}>Ðовое задание<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_COMPLETED" {?EVENT_JOB_COMPLETED}>Задание выполнено<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_STOPPED" {?EVENT_JOB_STOPPED}>Задание оÑтановлено<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>Изменены параметры заданиÑ</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_STOPPED" {?EVENT_PRINTER_STOPPED}>Очередь оÑтановлена<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_ADDED" {?EVENT_PRINTER_ADDED}>Очередь добавлена<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_MODIFIED" {?EVENT_PRINTER_MODIFIED}>Очередь изменена<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_DELETED" {?EVENT_PRINTER_DELETED}>Очередь удалена</TD>
-<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
-<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STARTED" {?EVENT_SERVER_STARTED}>Сервер запущен<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STOPPED" {?EVENT_SERVER_STOPPED}>Сервер оÑтановлен<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_RESTARTED" {?EVENT_SERVER_RESTARTED}>Сервер перезапущен<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_AUDIT" {?EVENT_SERVER_AUDIT}>Проверка безопаÑноÑти Ñервера</TD>
-</TR>
-<TR>
-<TH CLASS="label">КоличеÑтво Ñобытий в ленте:</TH>
-<TD COLSPAN="5"><INPUT TYPE="NUMBER" NAME="MAX_EVENTS" SIZE="4" MAXLENGTH="4" VALUE="{MAX_EVENTS?{MAX_EVENTS}:20}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD COLSPAN="5"><INPUT TYPE="SUBMIT" VALUE="Добавить подпиÑку по RSS"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/ru/admin.tmpl b/templates/ru/admin.tmpl
deleted file mode 100644
index ae2aab2ba..000000000
--- a/templates/ru/admin.tmpl
+++ /dev/null
@@ -1,102 +0,0 @@
-<TABLE CLASS="indent" SUMMARY="ÐдминиÑтрирование">
-<TR><TD VALIGN="TOP">
-
-<H2 CLASS="title">Принтеры</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="SUBMIT" VALUE="Добавить принтер"></FORM>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="find-new-printers"><INPUT TYPE="SUBMIT" VALUE="Ðайти новый принтер"></FORM>
-<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Управление принтерами"></FORM>
-{have_samba?<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba"><INPUT TYPE="SUBMIT" VALUE="ЭкÑпортировать принтер в Samba"></FORM>:}
-</P>
-
-<H2 CLASS="title">Группы</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-class"><INPUT TYPE="SUBMIT" VALUE="Добавить группу"></FORM>
-<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Управление группами"></FORM>
-</P>
-
-<H2 CLASS="title">ЗаданиÑ</H2>
-
-<P>
-<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Управление заданиÑми"></FORM>
-</P>
-
-</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
-
-<H2 CLASS="title">Сервер</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server"><INPUT TYPE="SUBMIT" VALUE="Редактировать конфигурационный файл"></FORM>
-<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Показать журнал заданий"></FORM>
-<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Показать журнал ошибок"></FORM>
-<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Показать журнал Ñтраниц"></FORM>
-</P>
-
-{SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
-<BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-
-{ADVANCEDSETTINGS?<P><B>Параметры Ñервера\:</B></P>
-
-<P><A HREF="/admin/">Дополнительные параметры<SMALL>&#x25bc;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="HIDDEN" NAME="ADVANCEDSETTINGS" VALUE="YES">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Показать принтеры, иÑпользующиеÑÑ Ð² других ÑиÑтемах<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Протоколы\:
-<INPUT TYPE="TEXT" NAME="MAX_CLIENTS" VALUE="{?max_clients}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Разрешить печать из интернета<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> ÐнонÑировать веб-интерфейÑ<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Разрешить удаленное админиÑтрирование<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Разрешить аутентификацию Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Разрешать пользователÑм отменÑÑ‚ÑŒ любое задание(не только их ÑобÑтвенные)<BR>
-<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> ВеÑти журнал заданий<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;КоличеÑтво заданий\:
-<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ЗапиÑывать метаданные(Retain Metadata)\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;СущеÑтвующие документы(Retain Documents)\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> СохранÑÑ‚ÑŒ отладочную информацию в журнале<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;МакÑимальный размер журнала ошибок\:
-<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
-
-:<P><B>Параметры Ñервера:</B></P>
-
-<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Дополнительные параметры <SMALL>&#x25b6;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Разрешить ÑовмеÑтный доÑтуп к принтерам, подключенным к Ñтой ÑиÑтеме<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Разрешить печать из Интернета<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Разрешить удаленное админиÑтрирование<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Разрешить аутентификацию Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Разрешить пользователÑм отменÑÑ‚ÑŒ любое задание(не только их ÑобÑтвенные)<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> СохранÑÑ‚ÑŒ отладочную информацию в журнале</P>
-
-}
-<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Сохранить"></P>
-
-</FORM>}
-
-</TD></TR>
-</TABLE>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">ПодпиÑка по RSS</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription"><INPUT TYPE="SUBMIT" VALUE="Добавить подпиÑку по RSS"></FORM>
-</P>
-
-</DIV>
-
-{notify_subscription_id?<TABLE CLASS="list" SUMMARY="ПодпиÑки по RSS">
-<THEAD><TR><TH>Ðазвание</TH><TH>СобытиÑ</TH><TH>Очередь</TH></TR></THEAD>
-<TBODY>{[notify_subscription_id]
-<TR><TD><A HREF="{notify_recipient_uri}">{notify_recipient_name}</A><BR>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-subscription"><INPUT TYPE="HIDDEN" NAME="notify_subscription_id" VALUE="{notify_subscription_id}"><INPUT TYPE="SUBMIT" VALUE="Отменить подпиÑку по RSS"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:Ð’Ñе очереди}</TD></TR>}
-</TBODY>
-</TABLE>:}
diff --git a/templates/ru/choose-device.tmpl b/templates/ru/choose-device.tmpl
deleted file mode 100644
index 3472f5fa6..000000000
--- a/templates/ru/choose-device.tmpl
+++ /dev/null
@@ -1,53 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Изменение {printer_name}:Добавление принтера}</H2>
-
-{CUPS_GET_DEVICES_DONE?<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-
-<TABLE>
-{op=add-printer?:<TR>
-<TH CLASS="label">Текущее подключение\:</TH>
-<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
-{current_device_uri}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">Локальные принтеры\:</TH>
-<TD>
-{[device_uri]{device_class!network?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}}
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Обнаруженные Ñетевые принтеры\:</TH>
-<TD>
-{[device_uri]{device_class=network?{device_uri~[a-z]+://?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-:}:}}
-</TD>
-</TR>
-<TR>
-<TR>
-<TH CLASS="label">Другие Ñетевые принтеры\:</TH>
-<TD>
-{[device_uri]{device_class=network?{device_uri~[a-z]+://?:<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
-}:}}
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Продолжить"></TD>
-</TR>
-</TABLE>
-
-</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> ПоиÑк принтеров...</P>}
-
-</DIV>
diff --git a/templates/ru/choose-make.tmpl b/templates/ru/choose-make.tmpl
deleted file mode 100644
index 55b91db8c..000000000
--- a/templates/ru/choose-make.tmpl
+++ /dev/null
@@ -1,64 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Изменение {printer_name}:Добавление принтера}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Ðазвание:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">ОпиÑание:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">РаÑположение:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Подключение:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">СовмеÑтный доÑтуп:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?Ðет ÑовмеÑтного доÑтупа:{?printer_is_shared=0?Ðет ÑовмеÑтного доÑтупа:Разрешить ÑовмеÑтный доÑтуп}} к Ñтому принтеру</TD>
-</TR>
-<TR>
-<TH CLASS="label">Создать:</TH>
-<TD>
-<SELECT NAME="PPD_MAKE" SIZE="10">
-{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Продолжить"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>&nbsp;</TD>
-</TR>
-<TR>
-<TH CLASS="label">или иÑпользовать файл PPD:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
-TYPE="FILE" NAME="PPD_FILE"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?Добавить принтер:Сохранить}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/ru/choose-model.tmpl b/templates/ru/choose-model.tmpl
deleted file mode 100644
index b666329e2..000000000
--- a/templates/ru/choose-model.tmpl
+++ /dev/null
@@ -1,60 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Изменение {printer_name}:Добавление принтера}</H2>
-
-<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-<TABLE>
-{op=modify-printer?:<TR>
-<TH CLASS="label">Ðазвание:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
-</TR>}
-<TR>
-<TH CLASS="label">ОпиÑание:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
-</TR>
-<TR>
-<TH CLASS="label">РаÑположение:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
-</TR>
-<TR>
-<TH CLASS="label">Подключение:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">СовмеÑтный доÑтуп:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?Ðет ÑовмеÑтного доÑтупа:{?printer_is_shared=0?Ðет ÑовмеÑтного доÑтупа:Разрешить ÑовмеÑтный доÑтуп}} к Ñтому принтеру</TD>
-</TR>
-<TR>
-<TH CLASS="label">Создать:</TH>
-<TD>{PPD_MAKE} <INPUT TYPE="SUBMIT" NAME="SELECT_MAKE" VALUE="Выбрать другую модель"></TD>
-</TR>
-<TR>
-<TH CLASS="label">Модель:</TH>
-<TD>
-<SELECT NAME="PPD_NAME" SIZE="10">
-{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Текущий драйвер - {current_make_and_model}</OPTION>:}
-{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
-}</SELECT>
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">или иÑпользовать файл PPD:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
-TYPE="FILE" NAME="PPD_FILE"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?Добавить принтер:Сохранить}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/ru/choose-serial.tmpl b/templates/ru/choose-serial.tmpl
deleted file mode 100644
index 5a953a2c1..000000000
--- a/templates/ru/choose-serial.tmpl
+++ /dev/null
@@ -1,52 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Изменение {printer_name}:Добавление принтера}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Подключение:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">СкороÑÑ‚ÑŒ передачи:</TH>
-<TD><SELECT NAME="BAUDRATE">
-{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Печать Ñтраниц:</TH>
-<TD><SELECT NAME="PARITY">
-<OPTION VALUE="none" {?parity=none?SELECTED:}>Ð’Ñе
-<OPTION VALUE="even" {?parity=even?SELECTED:}>Только четные
-<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Только нечетные
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Биты данных:</TH>
-<TD><SELECT NAME="BITS">
-<OPTION {?bits=8?SELECTED:}>8
-<OPTION {?bits=7?SELECTED:}>7
-</SELECT></TD>
-</TR>
-<TR>
-<TH CLASS="label">Управление:</TH>
-<TD><SELECT NAME="FLOW">
-<OPTION VALUE="none" {?flow=none?SELECTED:}>Ðет
-<OPTION VALUE="soft" {?flow=soft?SELECTED:}>XON/XOFF (Программное)
-<OPTION VALUE="hard" {?flow=hard?SELECTED:}>RTS/CTS (Ðппаратное)
-<OPTION VALUE="dtrdsr" {?flow=dtrdsr?SELECTED:}>DTR/DSR (Ðппаратное)
-</SELECT></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Продолжить"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/ru/choose-uri.tmpl b/templates/ru/choose-uri.tmpl
deleted file mode 100644
index 3c843f018..000000000
--- a/templates/ru/choose-uri.tmpl
+++ /dev/null
@@ -1,43 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Изменение {printer_name}:Добавление принтера}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
-<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">Подключение:</TH>
-<TD><INPUT TYPE="URL" SIZE="60" MAXLENGTH="1023" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>Примеры:
-<PRE>
- http://hostname:631/ipp/
- http://hostname:631/ipp/port1
-
- ipp://hostname/ipp/
- ipp://hostname/ipp/port1
-
- lpd://hostname/queue
-
- socket://hostname
- socket://hostname:9100
-</PRE>
-
-<P>Смотрите раздел <A HREF="/help/network.html" TARGET="_blank">"Сетевые принтеры"</A> Ð´Ð»Ñ Ð²Ñ‹ÑÑÐ½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð³Ð¾ адреÑа вашего принтера.</P>
-
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Продолжить"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/ru/class-added.tmpl b/templates/ru/class-added.tmpl
deleted file mode 100644
index 626cfec08..000000000
--- a/templates/ru/class-added.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">ÐÐ¾Ð²Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð°</H2>
-
-<P>Группа <A HREF="/classes/{printer_name}">{printer_name}</A> уÑпешно добавлена.
-
-</DIV>
diff --git a/templates/ru/class-confirm.tmpl b/templates/ru/class-confirm.tmpl
deleted file mode 100644
index 0eb87ef5b..000000000
--- a/templates/ru/class-confirm.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Удаление группы {printer_name}</H2>
-
-<P><B>Предупреждение:</B> Ð’Ñ‹ дейÑтвительно хотите удалить группу
-{printer_name}?</P>
-
-<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="op" VALUE="delete-class"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Удалить группу"></FORM></P>
-
-</DIV>
diff --git a/templates/ru/class-deleted.tmpl b/templates/ru/class-deleted.tmpl
deleted file mode 100644
index 08f59995b..000000000
--- a/templates/ru/class-deleted.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Удаление группы {printer_name}</H2>
-
-<P>Группа {printer_name} уÑпешно удалена.
-
-</DIV> \ No newline at end of file
diff --git a/templates/ru/class-jobs-header.tmpl b/templates/ru/class-jobs-header.tmpl
deleted file mode 100644
index 8487cbbda..000000000
--- a/templates/ru/class-jobs-header.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">ЗаданиÑ</H3>
-</DIV>
diff --git a/templates/ru/class-modified.tmpl b/templates/ru/class-modified.tmpl
deleted file mode 100644
index 986a02b1c..000000000
--- a/templates/ru/class-modified.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Изменение группы {printer_name}</H2>
-
-<P>Группа <A HREF="/classes/{printer_name}">{printer_name}</A> уÑпешно изменена.
-
-</DIV> \ No newline at end of file
diff --git a/templates/ru/class.tmpl b/templates/ru/class.tmpl
deleted file mode 100644
index 643cbae75..000000000
--- a/templates/ru/class.tmpl
+++ /dev/null
@@ -1,44 +0,0 @@
-<DIV CLASS="indent">
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?Idle:{printer_state=4?печать:приоÑтановлен}},
-{printer_is_accepting_jobs=0?Ðе принимает заданиÑ:Принимает заданиÑ},
-{server_is_sharing_printers=0?нет ÑовмеÑтного доÑтупа:{printer_is_shared=0?нет ÑовмеÑтного доÑтупа:разрешен ÑовмеÑтный доÑтуп}} {default_name={printer_name}?, Сервер по умолчанию:})</H2>
-
-<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
-<OPTION VALUE="">ОбÑлуживание</OPTION>
-<OPTION VALUE="print-test-page">Печать пробной Ñтраницы</OPTION>
-{printer_state=5?<OPTION VALUE="start-class">Данные группы</OPTION>:<OPTION VALUE="stop-class">ПриоÑтановить группу</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Принимать заданиÑ</OPTION>:<OPTION VALUE="reject-jobs">Ðе принимать заданиÑ</OPTION>}
-<OPTION VALUE="move-jobs">ПеремеÑтить вÑе заданиÑ</OPTION>
-<OPTION VALUE="purge-jobs">Отменить вÑе заданиÑ</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Сохранить" STYLE="display: none;">
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="ÐдминиÑтрирование">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
-<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="1">
-<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
-<OPTION VALUE="">ÐдминиÑтрирование</OPTION>
-<OPTION VALUE="modify-class">Изменить группу</OPTION>
-<OPTION VALUE="delete-class">Удалить группу</OPTION>
-<OPTION VALUE="set-class-options">УÑтановить параметры по умолчанию</OPTION>
-<OPTION VALUE="set-as-default">УÑтановить как принтер по умолчанию</OPTION>
-<OPTION VALUE="set-allowed-users">СпиÑок разрешенных пользователей</OPTION>
-</SELECT>
-<INPUT TYPE="SUBMIT" VALUE="Сохранить" STYLE="display: none;">
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">ОпиÑание:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">РаÑположение:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">СоÑтав:</TH><TD>{?member_uris=?Ðет принтеров:{member_uris}}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">По умолчанию:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:неизвеÑтный}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV>
diff --git a/templates/ru/classes-header.tmpl b/templates/ru/classes-header.tmpl
deleted file mode 100644
index 51012c500..000000000
--- a/templates/ru/classes-header.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Ðет групп:Показать {#printer_name} из {total} группы{total=1?:es}}.</P>
diff --git a/templates/ru/classes.tmpl b/templates/ru/classes.tmpl
deleted file mode 100644
index 5038bea74..000000000
--- a/templates/ru/classes.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-{#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="СпиÑок групп">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Очередь <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Очередь <SMALL>&#x25bc;</SMALL>}</A></TH><TH>ОпиÑание</TH><TH>РаÑположение</TH><TH>СоÑтав</TH><TH>СтатуÑ</TH></TR>
-</THEAD>
-<TBODY>
-{[printer_name]
-<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{?member_uris=?Ðет принтеров:{member_uris}}</TD><TD>{printer_state=3?Ð’ ожидании:{printer_state=4?Печатает:ПриоÑтановлен}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/ru/command.tmpl b/templates/ru/command.tmpl
deleted file mode 100644
index 4dc7b4e6e..000000000
--- a/templates/ru/command.tmpl
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{title} Ð´Ð»Ñ {printer_name}</H2>
-
-<P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
-ALIGN="ABSMIDDLE" ALT="Индикатор занÑтоÑти"> }Обработка заданиÑ
-{job_state=3?в очереди:{job_state=4?удерживаетÑÑ:
-{job_state=5?обрабатываетÑÑ:{job_state=6?оÑтановлено:
-{job_state=7?отменено:{job_state=8?прервано:завершено}}}}}}{job_state=9?:{job_printer_state_message?,
-<EM>"{job_printer_state_message}"</EM>:}}</P>
-
-</DIV>
diff --git a/templates/ru/edit-config.tmpl b/templates/ru/edit-config.tmpl
deleted file mode 100644
index d194059d8..000000000
--- a/templates/ru/edit-config.tmpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<SCRIPT TYPE="text/javascript">
-function reset_config()
-{
- document.cups.CUPSDCONF.value = "{?cupsdconf_default}";
-}
-</SCRIPT>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Редактирование конфигурационного файла</H2>
-
-<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-
-<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
-
-<P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="Сохранить изменениÑ">
-<INPUT TYPE="BUTTON" VALUE="СброÑить вÑе изменениÑ"
-onClick="reset_config();"></P>
-
-</FORM>
-
-</DIV>
diff --git a/templates/ru/error-op.tmpl b/templates/ru/error-op.tmpl
deleted file mode 100644
index 922976f3d..000000000
--- a/templates/ru/error-op.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} - ошибка </H2>
-
-<P>Ошибка:</P>
-
-<BLOCKQUOTE>ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ "{op}"!</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/ru/error.tmpl b/templates/ru/error.tmpl
deleted file mode 100644
index 4a35c8f13..000000000
--- a/templates/ru/error.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{?title} {?printer_name} - ошибка</H2>
-
-<P>{?message?{message}:Ошибка}:</P>
-
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/ru/header.tmpl.in b/templates/ru/header.tmpl.in
deleted file mode 100644
index 6d16855e5..000000000
--- a/templates/ru/header.tmpl.in
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>{title} - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
- {refresh_page?<META HTTP-EQUIV="Refresh" CONTENT="{refresh_page}">:}
-</HEAD>
-<BODY>
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="unsel"><A HREF="/">&nbsp;&nbsp;Ðачало&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;ÐдминиÑтрирование&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=classes?:un}sel"><A HREF="/classes/">&nbsp;&nbsp;Группы&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=help?:un}sel"><A HREF="/help/">&nbsp;&nbsp;Справка&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;ЗаданиÑ&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;Принтеры&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="ПоиÑк по Ñправке"
-VALUE="{SECTION=help?{?QUERY}:}" AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-<TR><TD COLSPAN="9">&nbsp;</TD></TR>
-</TABLE>
diff --git a/templates/ru/help-header.tmpl b/templates/ru/help-header.tmpl
deleted file mode 100644
index d618a6663..000000000
--- a/templates/ru/help-header.tmpl
+++ /dev/null
@@ -1,45 +0,0 @@
-<DIV CLASS="indent">
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
-{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
-
-<P ALIGN="CENTER"><B>ПоиÑк
-{HELPTITLE?в {HELPTITLE}:{TOPIC?в {TOPIC}:по Ñправке}}:</B> <INPUT
-TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER=""
-AUTOSAVE="org.cups.help" RESULTS="20">
-<INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="ПоиÑк">
-<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="ОчиÑтить"></P>
-
-</FORM>
-
-<!-- Bookmarks -->
-<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Содержание">
-<TR><TD>
-
-<H3 CLASS="title">ДокументациÑ</H3>
-
-<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Ð’Ñе разделы</A></P>
-<HR>
-
-{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
-}
-</TD></TR>
-</TABLE></DIV>
-
-{QUERY?<P>Результаты поиÑка в {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:вÑей Ñправке}}\:</P>
-{QTEXT?<UL>
-{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (in <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
-{QTEXT?</UL>:}
-:<P>Ðе найдено Ñовпадений.</P>}
-<HR NOSHADE>:}
-{HELPTITLE?<H1>{HELPTITLE}</H1>
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Показать верÑию Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸"></FORM>:
-
-<H1>Справка</H1>
-
-<P>Это Ñправка CUPS. Введите выше Ñлова Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка в Ñправке и нажмите "ПоиÑк", чтобы показать результаты поиÑка.</P>
-
-<P>ЕÑли вы пока мало знакомы Ñ CUPS, прочтите раздел "<a
-href="/help/overview.html">Введение в CUPS</a>". Опытные пользователи
-могут обратитьÑÑ Ðº разделу "<a href="/help/whatsnew.html">Что нового в CUPS 1.6</a>".</P>
-
-<P><A HREF="http://www.cups.org/">Веб-Ñайт CUPS</A> так же Ñодержит большое количеÑтво реÑурÑов Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ñ„Ð¾Ñ€ÑƒÐ¼, ответы на чаÑто задаваемые вопроÑÑ‹ и форму Ð´Ð»Ñ Ñ€ÐµÐ³Ð¸Ñтрации ошибок и пожеланий.</P>}
diff --git a/templates/ru/help-printable.tmpl b/templates/ru/help-printable.tmpl
deleted file mode 100644
index 2463c1630..000000000
--- a/templates/ru/help-printable.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
- <TITLE>{HELPTITLE}</TITLE>
- <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups-printable.css">
- <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
-</HEAD>
-<BODY>
diff --git a/templates/ru/help-trailer.tmpl b/templates/ru/help-trailer.tmpl
deleted file mode 100644
index 4c1ebed85..000000000
--- a/templates/ru/help-trailer.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-</DIV>
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 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Отмена Ð·Ð°Ð´Ð°Ð½Ð¸Ñ {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Задание {job_id}</A> отменено.
-
-</DIV>
diff --git a/templates/ru/job-hold.tmpl b/templates/ru/job-hold.tmpl
deleted file mode 100644
index 162e4a46e..000000000
--- a/templates/ru/job-hold.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">ПриоÑтановка Ð·Ð°Ð´Ð°Ð½Ð¸Ñ {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Задание {job_id}</A> приоÑтановлено.
-
-</DIV>
diff --git a/templates/ru/job-move.tmpl b/templates/ru/job-move.tmpl
deleted file mode 100644
index 598e4db74..000000000
--- a/templates/ru/job-move.tmpl
+++ /dev/null
@@ -1,27 +0,0 @@
-<DIV CLASS="indent">
-
-<FORM METHOD="POST" ACTION="/{SECTION}/{job_id?:{printer_name}}">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
-
-<H2 CLASS="title">{job_id?Перемещение Ð·Ð°Ð´Ð°Ð½Ð¸Ñ {job_id}:Перемещение вÑех заданий}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">ПеремеÑтить на принтер:</TH>
-<TD>
-<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
-{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{job_id?ПеремеÑтить задание:ПеремеÑтить вÑе заданиÑ}"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-
-</DIV>
diff --git a/templates/ru/job-moved.tmpl b/templates/ru/job-moved.tmpl
deleted file mode 100644
index e5bd65683..000000000
--- a/templates/ru/job-moved.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{job_id?Перемещение Ð·Ð°Ð´Ð°Ð½Ð¸Ñ {job_id}:Перемещение вÑех заданий}</H2>
-
-<P>{job_id?<A HREF="/jobs/{job_id}">Задание {job_id}</A>:Ð’Ñе заданиÑ} перемещены на
-<A HREF="/{is_class?группы:принтеры}/{job_printer_name}">{job_printer_name}</A>.</P>
-
-</DIV>
diff --git a/templates/ru/job-release.tmpl b/templates/ru/job-release.tmpl
deleted file mode 100644
index 1cad15a63..000000000
--- a/templates/ru/job-release.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Разблокирование Ð·Ð°Ð´Ð°Ð½Ð¸Ñ {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Задание {job_id}</A> разблокировано.
-
-</DIV>
diff --git a/templates/ru/job-restart.tmpl b/templates/ru/job-restart.tmpl
deleted file mode 100644
index 490fc3a37..000000000
--- a/templates/ru/job-restart.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">ПерезапуÑк Ð·Ð°Ð´Ð°Ð½Ð¸Ñ {job_id}</H2>
-
-<P><A HREF="{job_printer_uri}">Задание {job_id}</A> запущено заново.
-
-</DIV>
diff --git a/templates/ru/jobs-header.tmpl b/templates/ru/jobs-header.tmpl
deleted file mode 100644
index 7b645b511..000000000
--- a/templates/ru/jobs-header.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Показать активные заданиÑ"></FORM>}
-{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="Показать завершенные заданиÑ"></FORM>}
-{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Показать вÑе заданиÑ"></FORM>}</DIV>
-
-<P ALIGN="CENTER">{total=0?Ðет заданий:Задание {#job_id} из {total} {?which_jobs=?активных:{which_jobs=all?:завершенных}}}.</P>
diff --git a/templates/ru/jobs.tmpl b/templates/ru/jobs.tmpl
deleted file mode 100644
index ce80fdba2..000000000
--- a/templates/ru/jobs.tmpl
+++ /dev/null
@@ -1,36 +0,0 @@
-{#job_id=0?:
-<TABLE CLASS="list" SUMMARY="ЗаданиÑ">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Ðомер <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Ðазвание</TH><TH>Пользователь</TH><TH>Размер</TH><TH>Страниц</TH><TH>СтатуÑ</TH><TH>Управление</TH></TR>
-</THEAD>
-<TBODY>
-{[job_id]
-<TR VALIGN="TOP">
-<TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id}{?phone? ({phone}):}&nbsp;</TD>
-<TD>{?job_name=?ÐеизвеÑтное:{job_name}}&nbsp;</TD>
-<TD>{?job_originating_user_name=?ПриоÑтановлено пользователем:{job_originating_user_name}}&nbsp;</TD>
-<TD>{job_k_octets}k&nbsp;</TD>
-<TD>{job_media_sheets_completed=0?ÐеизвеÑтно:{?job_media_sheets_completed}}&nbsp;</TD>
-<TD>{job_state=3?Ð’ очереди<BR>{time_at_creation}:{job_state=4?ПриоÑтановлено Ñ<BR>{time_at_creation}:
-{job_state=5?Создано<BR>{time_at_processing}:{job_state=6?ОÑтановлено:
-{job_state=7?Отменено<BR>{time_at_completed}:{job_state=8?Прервано:Завершено<BR>{time_at_completed}}}}}}}&nbsp;{job_printer_state_message?<BR>
-<EM>"{job_printer_state_message}"</EM>:}</TD>
-<TD>
-{job_preserved>0?{job_state>5?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="restart-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}"><INPUT TYPE="SUBMIT" VALUE="ПерезапуÑтить"></FORM>:}:}
-{job_state=4?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="release-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Продолжить"></FORM>:}
-{job_state=3?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="ПриоÑтановить"></FORM>:}
-{job_state<7?
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Отменить"></FORM>
-<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="move-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="SUBMIT" VALUE="ПеремеÑтить"></FORM>:}
-&nbsp;</TD>
-</TR>
-}
-</TBODY>
-</TABLE>
-}
diff --git a/templates/ru/list-available-printers.tmpl b/templates/ru/list-available-printers.tmpl
deleted file mode 100644
index 90d3c949c..000000000
--- a/templates/ru/list-available-printers.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">ДоÑтупные принтеры</H2>
-
-{#device_uri=0?<P>Ðе обнаружено ни одного принтера.</P>
-:<UL>{[device_uri]
-<LI><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="HIDDEN" NAME="TEMPLATE_NAME" VALUE="{template_name}"><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="Локальный принтер"><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{device_make_and_model}"><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}"><INPUT TYPE="SUBMIT" VALUE="Добавить Ñтот принтер"></FORM>
-{device_make_and_model} ({device_info})</LI>
-}</UL>}
-
-</DIV>
diff --git a/templates/ru/modify-class.tmpl b/templates/ru/modify-class.tmpl
deleted file mode 100644
index a85698a52..000000000
--- a/templates/ru/modify-class.tmpl
+++ /dev/null
@@ -1,34 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Изменение группы {printer_name}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">ОпиÑание:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">РаÑположение:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
-</TR>
-<TR>
-<TH CLASS="label">СоÑтав группы:</TH>
-<TD>
-<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
-{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
-</SELECT>
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Изменить группу"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV> \ No newline at end of file
diff --git a/templates/ru/modify-printer.tmpl b/templates/ru/modify-printer.tmpl
deleted file mode 100644
index 8ec523f1f..000000000
--- a/templates/ru/modify-printer.tmpl
+++ /dev/null
@@ -1,42 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Изменение принтера {printer_name}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-
-<TABLE>
-<TR>
-<TH CLASS="label">ОпиÑание:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(раÑширенное опиÑание принтера, например, "HP LaserJet Ñ Ð´ÑƒÐ¿Ð»ÐµÐºÑной печатью")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">РаÑположение:</TH>
-<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(меÑтоположение принтера, например, "Кабинет 55")</SMALL></TD>
-</TR>
-<TR>
-<TH CLASS="label">Подключение:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
-</TR>
-<TR>
-<TH CLASS="label">СовмеÑтный доÑтуп:</TH>
-<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Разрешить ÑовмеÑтный доÑтуп к Ñтому принтеру</TD>
-</TR>
-<TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Продолжить"></TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
diff --git a/templates/ru/norestart.tmpl b/templates/ru/norestart.tmpl
deleted file mode 100644
index a08a467c6..000000000
--- a/templates/ru/norestart.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Применение изменений</H2>
-
-<P>Сервер не был перезапущен,поÑкольку не произошло изменений в конфигурации...</P>
-
-</DIV>
diff --git a/templates/ru/option-boolean.tmpl b/templates/ru/option-boolean.tmpl
deleted file mode 100644
index e832ee102..000000000
--- a/templates/ru/option-boolean.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD>
-{[choices]<INPUT TYPE="RADIO" NAME="{keyword-1}" {choices={defchoice-1}?CHECKED:} VALUE="{choices}">{text}}
-</TD>
-</TR>
diff --git a/templates/ru/option-conflict.tmpl b/templates/ru/option-conflict.tmpl
deleted file mode 100644
index 9497fb777..000000000
--- a/templates/ru/option-conflict.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<P><B>Ошибка:</B> Ñледующие параметры конфликтуют:</P>
-
-<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
-}</UL>
-
-<P>Измените один или неÑколько параметров Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы избежать конфликта.</P>
diff --git a/templates/ru/option-header.tmpl b/templates/ru/option-header.tmpl
deleted file mode 100644
index 464726a50..000000000
--- a/templates/ru/option-header.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="tab" ID="{group_id}">
-
-<H3 ALIGN="CENTER">{group}</H3>
-
-<TABLE WIDTH="100%">
diff --git a/templates/ru/option-pickmany.tmpl b/templates/ru/option-pickmany.tmpl
deleted file mode 100644
index 0da75e5d2..000000000
--- a/templates/ru/option-pickmany.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT></TD>
-</TR>
diff --git a/templates/ru/option-pickone.tmpl b/templates/ru/option-pickone.tmpl
deleted file mode 100644
index 49a9929ae..000000000
--- a/templates/ru/option-pickone.tmpl
+++ /dev/null
@@ -1,18 +0,0 @@
-<TR>
-<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
-<TD><SELECT NAME="{keyword}" ID="select-{keyword}" ONCHANGE="update_paramtable('{keyword}')">
-{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
-</SELECT>
-{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
-<TR><TH CLASS="sublabel">{paramtext}:</TH>
-<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
-<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Пункты</OPTION>
-<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Миллиметры</OPTION>
-<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Сантиметры</OPTION>
-<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Дюймы</OPTION>
-<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Футы</OPTION>
-<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Метры</OPTION>
-</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
-}</TABLE>
-</TD>:}
-</TR>
diff --git a/templates/ru/option-trailer.tmpl b/templates/ru/option-trailer.tmpl
deleted file mode 100644
index f80e946d0..000000000
--- a/templates/ru/option-trailer.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-</TABLE>
-
-<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="Сохранить параметры по умолчанию"></P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/ru/pager.tmpl b/templates/ru/pager.tmpl
deleted file mode 100644
index 3c5dc62b5..000000000
--- a/templates/ru/pager.tmpl
+++ /dev/null
@@ -1,6 +0,0 @@
-<TABLE CLASS="inset" SUMMARY="ПроÑмотр по Ñтраницам">
-<TR>
- <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Предварительный проÑмотр"></FORM>:&nbsp;}</TD>
- <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Показать Ñледующую &#x25b6;"></FORM>:&nbsp;}</TD>
-</TR>
-</TABLE>
diff --git a/templates/ru/printer-accept.tmpl b/templates/ru/printer-accept.tmpl
deleted file mode 100644
index 24d100d48..000000000
--- a/templates/ru/printer-accept.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Прием заданий {is_class?в группу:на принтер} {printer_name}</H2>
-
-<P>{is_class?Группа:Принтер} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-теперь принимает заданиÑ.</P>
-
-</DIV>
diff --git a/templates/ru/printer-added.tmpl b/templates/ru/printer-added.tmpl
deleted file mode 100644
index cc7840753..000000000
--- a/templates/ru/printer-added.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Добавить принтер</H2>
-
-<P>Принтер <A HREF="/printers/{printer_name}">{printer_name}</A> уÑпешно добавлен.
-
-</DIV>
diff --git a/templates/ru/printer-configured.tmpl b/templates/ru/printer-configured.tmpl
deleted file mode 100644
index 33c4c143f..000000000
--- a/templates/ru/printer-configured.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">ÐаÑтройки по умолчанию Ð´Ð»Ñ {printer_name}</H2>
-
-<P>{OP=set-class-options?Группа <A HREF="/classes/{printer_name}">:Принтер <A HREF="/printers/{printer_name}">}{printer_name}</A>
-теперь иÑпользуют параметры по умолчанию.
-
-</DIV>
diff --git a/templates/ru/printer-confirm.tmpl b/templates/ru/printer-confirm.tmpl
deleted file mode 100644
index 86b636091..000000000
--- a/templates/ru/printer-confirm.tmpl
+++ /dev/null
@@ -1,10 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Удаление принтера {printer_name}</H2>
-
-<P><B>Предупреждение:</B> вы дейÑтвительно хотите удалить принтер
-{printer_name}?</P>
-
-<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="delete-printer"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Удалить принтер"></FORM></P>
-
-</DIV>
diff --git a/templates/ru/printer-default.tmpl b/templates/ru/printer-default.tmpl
deleted file mode 100644
index 474f4b834..000000000
--- a/templates/ru/printer-default.tmpl
+++ /dev/null
@@ -1,12 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">УÑтановка {is_class?группы:принтера} {printer_name} по умолчанию</H2>
-
-<P>{is_class?Группа:Принтер} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-уÑтановлены на Ñервере по умолчанию Ð´Ð»Ñ Ð½Ð¾Ð²Ñ‹Ñ… заданий.</P>
-
-<BLOCKQUOTE><B>ПримечаниÑ:</B> вы можете переопределить Ñто поведение Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ команды
-the <TT>lpoptions</TT>.</BLOCKQUOTE>
-
-</DIV>
diff --git a/templates/ru/printer-deleted.tmpl b/templates/ru/printer-deleted.tmpl
deleted file mode 100644
index 43593c744..000000000
--- a/templates/ru/printer-deleted.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Удаление принтера {printer_name}</H2>
-
-<P>Принтер {printer_name} уÑпешно удален.
-
-</DIV>
diff --git a/templates/ru/printer-jobs-header.tmpl b/templates/ru/printer-jobs-header.tmpl
deleted file mode 100644
index 8487cbbda..000000000
--- a/templates/ru/printer-jobs-header.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<DIV CLASS="indent">
-<H3 CLASS="title">ЗаданиÑ</H3>
-</DIV>
diff --git a/templates/ru/printer-modified.tmpl b/templates/ru/printer-modified.tmpl
deleted file mode 100644
index 21c502f60..000000000
--- a/templates/ru/printer-modified.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Изменение принтера {printer_name}</H2>
-
-<P>Параметры принтера <A HREF="/printers/{printer_name}">{printer_name}</A> уÑпешно изменены.
-
-</DIV> \ No newline at end of file
diff --git a/templates/ru/printer-purge.tmpl b/templates/ru/printer-purge.tmpl
deleted file mode 100644
index c2768c81e..000000000
--- a/templates/ru/printer-purge.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">ОчиÑтка вÑех заданий Ð´Ð»Ñ {is_class?группы:принтера} {printer_name}</H2>
-
-<P>Ð’Ñе Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð´Ð»Ñ {is_class?группы:принтера} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-очищены.</P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/ru/printer-reject.tmpl b/templates/ru/printer-reject.tmpl
deleted file mode 100644
index 012e161ff..000000000
--- a/templates/ru/printer-reject.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Отмена заданий Ð´Ð»Ñ {is_class?группы:принтера} {printer_name}</H2>
-
-<P>{is_class?Группа:Принтер} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-больше не принимает заданиÑ.</P>
-
-</DIV>
diff --git a/templates/ru/printer-start.tmpl b/templates/ru/printer-start.tmpl
deleted file mode 100644
index cb02c7980..000000000
--- a/templates/ru/printer-start.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Возобновить работу {is_class?группы:принтера} {printer_name}</H2>
-
-<P>{is_class?Группа:Принтер} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-теперь принимают заданиÑ.</P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/ru/printer-stop.tmpl b/templates/ru/printer-stop.tmpl
deleted file mode 100644
index d9fa7fc51..000000000
--- a/templates/ru/printer-stop.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">ПриоÑтановить {is_class?группу:принтер} {printer_name}</H2>
-
-<P>{is_class?Группа:Принтер} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-{is_class?была приоÑтановлена:был приоÑтановлен}.</P>
-
-</DIV> \ No newline at end of file
diff --git a/templates/ru/printer.tmpl b/templates/ru/printer.tmpl
deleted file mode 100644
index 289a2c68e..000000000
--- a/templates/ru/printer.tmpl
+++ /dev/null
@@ -1,47 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?в ожидании:{printer_state=4?печать:приоÑтановлен}},
-{printer_is_accepting_jobs=0?не принимает заданиÑ:принимает заданиÑ},
-{server_is_sharing_printers=0?нет ÑовмеÑтного доÑтупа:{printer_is_shared=0?нет ÑовмеÑтного доÑтупа:разрешен ÑовмеÑтный доÑтуп}} {default_name={printer_name}?, По умолчанию:})</H2>
-
-<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
-<OPTION VALUE="">ОбÑлуживание</OPTION>
-<OPTION VALUE="print-test-page">Печать пробной Ñтраницы</OPTION>
-{printer_commands~.*Clean.*?<OPTION VALUE="clean-print-heads">ОчиÑтить головки</OPTION>:}
-{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">Печать пробной Ñтраницы принтера</OPTION>:}
-{printer_state=5?<OPTION VALUE="start-printer">ВоÑÑтановить печать</OPTION>:<OPTION VALUE="stop-printer">ПриоÑтановить принтер</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Принимать заданиÑ</OPTION>:<OPTION VALUE="reject-jobs">Ðе принимать заданиÑ</OPTION>}
-<OPTION VALUE="move-jobs">ПеремеÑтить вÑе заданиÑ</OPTION>
-<OPTION VALUE="purge-jobs">Закрыть вÑе заданиÑ</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
-<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
-<OPTION VALUE="">ÐдминиÑтрирование</OPTION>
-<OPTION VALUE="modify-printer">Изменить принтер</OPTION>
-<OPTION VALUE="delete-printer">Удалить принтер</OPTION>
-<OPTION VALUE="set-printer-options">УÑтановить параметры по умолчанию</OPTION>
-<OPTION VALUE="set-as-default">УÑтановить как принтер по умолчанию</OPTION>
-<OPTION VALUE="set-allowed-users">СпиÑок разрешенных пользователей</OPTION>
-</SELECT>
-<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
-</FORM>
-
-<TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">ОпиÑание:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">РаÑположение:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Драйвер:</TH><TD>{printer_make_and_model} ({color_supported=1?цветной:черно-белый}{sides_supported?, дуплекÑÐ½Ð°Ñ Ð¿ÐµÑ‡Ð°Ñ‚ÑŒ:})<BR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Подключение:</TH><TD>{device_uri}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">По умолчанию:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:неизвеÑтный}
-{sides_default?sides={sides_default}:}</TD></TR>
-</TABLE>
-
-</DIV> \ No newline at end of file
diff --git a/templates/ru/printers-header.tmpl b/templates/ru/printers-header.tmpl
deleted file mode 100644
index 6621e067d..000000000
--- a/templates/ru/printers-header.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P ALIGN="CENTER">{total=0?Ðет принтеров:Принтер {#printer_name} из {total}}.</P>
diff --git a/templates/ru/printers.tmpl b/templates/ru/printers.tmpl
deleted file mode 100644
index 79feae58e..000000000
--- a/templates/ru/printers.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-{#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="СпиÑок принтеров">
-<THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Очередь <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Очередь <SMALL>&#x25bc;</SMALL>}</A></TH><TH>ОпиÑание</TH><TH>РаÑположение</TH><TH>Драйвер</TH><TH>СтатуÑ</TH></TR>
-</THEAD>
-<TBODY>
-{[printer_name]
-<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{printer_make_and_model}</TD><TD>{printer_state=3?Idle:{printer_state=4?Печатает:ПриоÑтановлен}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
-}
-</TBODY>
-</TABLE></DIV>}
diff --git a/templates/ru/restart.tmpl b/templates/ru/restart.tmpl
deleted file mode 100644
index c32a5ae11..000000000
--- a/templates/ru/restart.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Применение изменений параметров</H2>
-
-<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Ожидание"> ДождитеÑÑŒ перезагрузки Ñервера...</P>
-
-</DIV>
diff --git a/templates/ru/samba-export.tmpl b/templates/ru/samba-export.tmpl
deleted file mode 100644
index 641ca0b01..000000000
--- a/templates/ru/samba-export.tmpl
+++ /dev/null
@@ -1,53 +0,0 @@
-<SCRIPT TYPE="text/javascript"><!--
-function select_printers() {
- var list = document.export_samba.EXPORT_NAME;
- var sel = document.export_samba.EXPORT_ALL.checked;
-
- for (i = 0; i < list.length; i ++) {
- list.options[i].selected = sel;
- }
-}
---></SCRIPT>
-
-<FORM METHOD="POST" ACTION="/admin/" NAME="export_samba">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
-
-<H2 CLASS="title">ЭкÑпорт принтеров в Samba</H2>
-
-{error?<P>Ðевозможно ÑкÑпортировать принтеры в Samba\:</P>
-<BLOCKQUOTE>{error}</BLOCKQUOTE>
-<P>ПоÑмотрите файл <A HREF="/admin/log/error_log"
-TARGET="_blank">error_log</A> Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ подробной информации.</P>:
-<P>Эта Ñтраница позволÑет добавить принтеры в Samba так, чтобы
-клиенты Windows могли получить доÑтуп к ним через значок <VAR>Сетевое окружение</VAR> или <VAR>Сетевые подключениÑ</VAR> на их рабочем Ñтоле. Ð’Ñ‹ должны уÑтановить на Windows драйвер принтера PostScript
-как опиÑано на Ñтранице руководÑтва <A
-HREF="/help/man-cupsaddsmb.html"
-TARGET="_blank">cupsaddsmb(8)</A>.</P>}
-
-<TABLE>
-<TR>
-<TH CLASS="label">Принтеры:</TH>
-<TD>
-<SELECT NAME="EXPORT_NAME" SIZE="10" MULTIPLE>
-{[printer_name]<OPTION VALUE="{printer_name}"{export_all? SELECTED:{printer_export? SELECTED:}}>{printer_name}}
-</SELECT><BR>
-<INPUT TYPE="CHECKBOX" NAME="EXPORT_ALL"{export_all? CHECKED:}
-onChange="select_printers()"> ЭкÑпортировать вÑе принтеры
-</TD>
-</TR>
-<TR>
-<TH CLASS="label">Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Samba:</TH>
-<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (обÑзательный параметр)</TD>
-</TR>
-<TR>
-<TH CLASS="label">Пароль Samba:</TH>
-<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (обÑзательный параметр)</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="ЭкÑпортировать принтеры в Samba"></TD>
-</TR>
-</TABLE>
-
-</FORM>
diff --git a/templates/ru/samba-exported.tmpl b/templates/ru/samba-exported.tmpl
deleted file mode 100644
index 179b2ad8a..000000000
--- a/templates/ru/samba-exported.tmpl
+++ /dev/null
@@ -1 +0,0 @@
-<P>Принтеры уÑпешно ÑкÑпортированы в Samba.</P>
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 @@
-<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
-{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
-{ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
-
-<P ALIGN="CENTER"><B>ПоиÑк
-{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?группы:{SECTION=jobs?заданиÑ:принтеры}}}:</B>
-<INPUT TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER="" AUTOSAVE="org.cups.{SECTION}" RESULTS="20"> <INPUT
-TYPE="SUBMIT" VALUE="ПоиÑк"> <INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="ОчиÑтить"></P>
-
-</FORM>
diff --git a/templates/ru/set-printer-options-header.tmpl b/templates/ru/set-printer-options-header.tmpl
deleted file mode 100644
index e5c79dd44..000000000
--- a/templates/ru/set-printer-options-header.tmpl
+++ /dev/null
@@ -1,26 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">УÑтановить параметры по умолчанию Ð´Ð»Ñ {printer_name}</H2>
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{HAVE_AUTOCONFIGURE?<INPUT TYPE="SUBMIT" NAME="AUTOCONFIGURE" VALUE="Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ñ€Ð¸Ð½Ñ‚ÐµÑ€Ð° Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð² по умолчанию">:}
-
-<SCRIPT TYPE="text/javascript"><!--
-function update_paramtable(option)
-{
- var cb = document.getElementById("select-" + option)
- var paramstable = document.getElementById(option + "-params");
- if (cb.value == "Custom")
- paramstable.style.display = "table";
- else
- paramstable.style.display = "none";
-}
---></SCRIPT>
-
-<H3 CLASS="title">{[group_id]
-<A HREF="#{group_id}">{group}</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</H3>
-
-<DIV CLASS="tabs">
diff --git a/templates/ru/set-printer-options-trailer.tmpl b/templates/ru/set-printer-options-trailer.tmpl
deleted file mode 100644
index 11adc7012..000000000
--- a/templates/ru/set-printer-options-trailer.tmpl
+++ /dev/null
@@ -1,16 +0,0 @@
-</DIV>
-
-<SCRIPT TYPE="text/javascript"><!--
-// Hide custom options parameters for browsers that understand Javascript
-var paramtables = document.getElementsByName("paramtable");
-for (var i = 0; i < paramtables.length; i++)
-{
- var opt = paramtables[i].id.substr(0, paramtables[i].id.lastIndexOf("-"));
- var cb = document.getElementById("select-" + opt);
- if (cb.value != "Custom")
- paramtables[i].style.display = "none";
-}
---></SCRIPT>
-</FORM>
-
-</DIV>
diff --git a/templates/ru/subscription-added.tmpl b/templates/ru/subscription-added.tmpl
deleted file mode 100644
index f2b464233..000000000
--- a/templates/ru/subscription-added.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>ПодпиÑка {subscription_name} была уÑпешно добавлена.</P>
-
-</DIV>
diff --git a/templates/ru/subscription-canceled.tmpl b/templates/ru/subscription-canceled.tmpl
deleted file mode 100644
index 5daed1f49..000000000
--- a/templates/ru/subscription-canceled.tmpl
+++ /dev/null
@@ -1,5 +0,0 @@
-<DIV CLASS="indent">
-
-<P>ПодпиÑка #{notify_subscription_id} была отменена.</P>
-
-</DIV>
diff --git a/templates/ru/test-page.tmpl b/templates/ru/test-page.tmpl
deleted file mode 100644
index 6dc1ba1b5..000000000
--- a/templates/ru/test-page.tmpl
+++ /dev/null
@@ -1,8 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Печать пробной Ñтраницы на {printer_name}</H2>
-
-<P>ÐŸÑ€Ð¾Ð±Ð½Ð°Ñ Ñтраница отправлена на печать;Ðомер Ð·Ð°Ð´Ð°Ð½Ð¸Ñ <A HREF="/{SECTION}/{printer_name}">
-{printer_name}-{job_id}</A>.</P>
-
-</DIV>
diff --git a/templates/ru/trailer.tmpl b/templates/ru/trailer.tmpl
deleted file mode 100644
index 8c4067e67..000000000
--- a/templates/ru/trailer.tmpl
+++ /dev/null
@@ -1,7 +0,0 @@
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS, а так же логотип CUPS ÑвлÑÑŽÑ‚ÑÑ Ð·Ð°Ñ€ÐµÐ³Ð¸Ñтрированными торговыми марками
-<A HREF="http://www.apple.com">Apple Inc.</A> ÐвторÑкие права на CUPS принадлежат (2007-2014) компании Apple Inc. Ð’Ñе права защищены.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
diff --git a/templates/ru/users.tmpl b/templates/ru/users.tmpl
deleted file mode 100644
index ee718b22f..000000000
--- a/templates/ru/users.tmpl
+++ /dev/null
@@ -1,30 +0,0 @@
-<DIV CLASS="indent">
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{OP}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
-{IS_CLASS?<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="{IS_CLASS}">:}
-
-<H2 CLASS="title">ДоÑтуп пользователей на {printer_name}</H2>
-
-<TABLE>
-<TR>
-<TH CLASS="label">Пользователи:</TH>
-<TD>
-<INPUT TYPE='TEXT' NAME='users' SIZE='60' VALUE='{?requesting_user_name_allowed}{?requesting_user_name_denied}'>
-<BR>
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-allowed' {requesting_user_name_allowed?checked:}>Разрешить Ñтим пользователÑм печатать
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>Запретить Ñтим пользователÑм печатать
-</TD>
-</TR>
-<TR>
-<TD></TD>
-<TD>
-<INPUT TYPE="SUBMIT" VALUE="Сохранить">
-</TD>
-</TR>
-</TABLE>
-
-</FORM>
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Set Default Options for {printer_name}</H2>
<FORM METHOD="POST" ACTION="/admin">
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++)
}
--></SCRIPT>
</FORM>
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<P>Subscription {subscription_name} has been added successfully.</P>
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<P>Subscription #{notify_subscription_id} has been canceled.</P>
-
-</DIV>
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 @@
-<DIV CLASS="indent">
-
<H2 CLASS="title">Print Test Page On {printer_name}</H2>
<P>Test page sent; job ID is <A HREF="/{SECTION}/{printer_name}">
{printer_name}-{job_id}</A>.</P>
-
-</DIV>
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 @@
-</DIV></TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS and the CUPS logo are trademarks of
-<A HREF="http://www.apple.com">Apple Inc.</A> Copyright 2007-2014 Apple
-Inc. All rights reserved.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
+ </div>
+ </div>
+ <div class="footer">CUPS and the CUPS logo are trademarks of <a href="http://www.apple.com">Apple Inc.</a> Copyright &copy; 2007-2014 Apple Inc. All rights reserved.</div>
+ </body>
+</html>
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 @@
-<DIV CLASS="indent">
-
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{OP}">
@@ -27,4 +25,3 @@
</TABLE>
</FORM>
-</DIV>
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..8405117d2 100644
--- a/test/Dependencies
+++ b/test/Dependencies
@@ -1,23 +1,21 @@
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 \
- ../cups/thread-private.h
+ ../cups/language.h ../cups/pwg.h ../config.h ../cups/thread-private.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..504ab824f 100644
--- a/test/get-completed-jobs.test
+++ b/test/get-completed-jobs.test
@@ -1,9 +1,9 @@
#
-# "$Id: get-completed-jobs.test 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: get-completed-jobs.test 12088 2014-08-07 01:09:21Z msweet $"
#
# Get list of completed jobs.
#
-# Copyright 2007-2012 by Apple Inc.
+# 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
@@ -32,7 +32,7 @@
ATTR uri printer-uri $uri
ATTR keyword which-jobs completed
ATTR keyword requested-attributes
- job-id,job-state,job-state-reasons,job-name,job-originating-user-name,job-media-sheets-completed
+ job-id,job-uri,job-state,job-state-reasons,job-name,job-originating-user-name,job-media-sheets-completed
# What statuses are OK?
STATUS successful-ok
@@ -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 12088 2014-08-07 01:09:21Z 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..d8cc5149d 100644
--- a/test/get-jobs.test
+++ b/test/get-jobs.test
@@ -1,9 +1,9 @@
#
-# "$Id: get-jobs.test 11396 2013-11-06 20:09:03Z msweet $"
+# "$Id: get-jobs.test 12088 2014-08-07 01:09:21Z msweet $"
#
# Get list of not-completed jobs.
#
-# Copyright 2007-2012 by Apple Inc.
+# 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
@@ -31,7 +31,7 @@
ATTR language attributes-natural-language en
ATTR uri printer-uri $uri
ATTR keyword requested-attributes
- job-id,job-state,job-state-reasons,job-name,job-originating-user-name,job-media-sheets,job-media-sheets-completed,job-impressions,job-impressions-completed
+ job-id,job-uri,job-state,job-state-reasons,job-name,job-originating-user-name,job-media-sheets,job-media-sheets-completed,job-impressions,job-impressions-completed
# What statuses are OK?
STATUS successful-ok
@@ -49,5 +49,5 @@
#
-# End of "$Id: get-jobs.test 11396 2013-11-06 20:09:03Z msweet $".
+# End of "$Id: get-jobs.test 12088 2014-08-07 01:09:21Z 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/identify-printer.test b/test/identify-printer.test
new file mode 100644
index 000000000..b97bb71dc
--- /dev/null
+++ b/test/identify-printer.test
@@ -0,0 +1,20 @@
+# Make the printer beep
+{
+ # The name of the test...
+ NAME "Identify Printer with Sound"
+
+ # The operation to use
+ OPERATION Identify-Printer
+
+ # Attributes, starting in the operation group...
+ GROUP operation-attributes-tag
+ ATTR charset attributes-charset utf-8
+ ATTR language attributes-natural-language en
+ ATTR uri printer-uri $uri
+ ATTR name requesting-user-name $user
+ ATTR keyword identify-actions sound
+
+ # What statuses are OK?
+ STATUS successful-ok
+ STATUS successful-ok-ignored-or-substituted-attributes
+}
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..758de0c70 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 12139 2014-08-29 17:50:38Z 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.
*/
/*
@@ -265,7 +242,7 @@ main(int argc, /* I - Number of command-line args */
{
int i, /* Looping var */
have_output = 0,/* Have output expression */
- status = IPPFIND_EXIT_TRUE;
+ status = IPPFIND_EXIT_FALSE;
/* Exit status */
const char *opt, /* Option character */
*search; /* Current browse/resolve string */
@@ -330,6 +307,10 @@ main(int argc, /* I - Number of command-line args */
* Parse command-line...
*/
+ if (getenv("IPPFIND_DEBUG"))
+ for (i = 1; i < argc; i ++)
+ fprintf(stderr, "argv[%d]=\"%s\"\n", i, argv[i]);
+
for (i = 1; i < argc; i ++)
{
if (argv[i][0] == '-')
@@ -626,9 +607,9 @@ main(int argc, /* I - Number of command-line args */
NULL)) == NULL)
return (IPPFIND_EXIT_MEMORY);
}
- else if (!strncmp(argv[i], "--txt-", 5))
+ else if (!strncmp(argv[i], "--txt-", 6))
{
- const char *key = argv[i] + 5;/* TXT key */
+ const char *key = argv[i] + 6;/* TXT key */
i ++;
if (i >= argc)
@@ -782,7 +763,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 +928,6 @@ main(int argc, /* I - Number of command-line args */
_cupsLangPrintf(stderr, _("%s: Unknown option \"-%c\"."),
"ippfind", *opt);
show_usage();
- break;
}
if (temp)
@@ -1445,8 +1424,8 @@ main(int argc, /* I - Number of command-line args */
service->ref = NULL;
}
- if (!eval_expr(service, expressions))
- status = IPPFIND_EXIT_FALSE;
+ if (eval_expr(service, expressions))
+ status = IPPFIND_EXIT_TRUE;
service->is_processed = 1;
}
@@ -1490,6 +1469,9 @@ browse_callback(
* Only process "add" data...
*/
+ (void)sdRef;
+ (void)interfaceIndex;
+
if (errorCode != kDNSServiceErr_NoError || !(flags & kDNSServiceFlagsAdd))
return;
@@ -1523,6 +1505,9 @@ browse_local_callback(
* Only process "add" data...
*/
+ (void)sdRef;
+ (void)interfaceIndex;
+
if (errorCode != kDNSServiceErr_NoError || !(flags & kDNSServiceFlagsAdd))
return;
@@ -1822,6 +1807,9 @@ eval_expr(ippfind_srv_t *service, /* I - Service */
result = !regexec(&(expression->re), val, 0, NULL, 0);
else
result = 0;
+
+ if (getenv("IPPFIND_DEBUG"))
+ printf("TXT_REGEX of \"%s\": %d\n", val, result);
break;
case IPPFIND_OP_URI_REGEX :
result = !regexec(&(expression->re), service->uri, 0, NULL, 0);
@@ -1912,14 +1900,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 +1932,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 +1968,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));
+ const char *txt = cupsGetOption(keyword + 4, service->num_txt, service->txt);
+ if (txt)
+ strlcpy(tptr, txt, sizeof(temp) - (size_t)(tptr - temp));
else
*tptr = '\0';
}
@@ -2022,6 +2010,17 @@ exec_program(ippfind_srv_t *service, /* I - Service */
}
#ifdef WIN32
+ if (getenv("IPPFIND_DEBUG"))
+ {
+ printf("\nProgram:\n %s\n", args[0]);
+ puts("\nArguments:");
+ for (i = 0; i < num_args; i ++)
+ printf(" %s\n", myargv[i]);
+ puts("\nEnvironment:");
+ for (i = 0; i < myenvc; i ++)
+ printf(" %s\n", myenvp[i]);
+ }
+
status = _spawnvpe(_P_WAIT, args[0], myargv, myenvp);
#else
@@ -2089,6 +2088,18 @@ exec_program(ippfind_srv_t *service, /* I - Service */
* Return whether the program succeeded or crashed...
*/
+ if (getenv("IPPFIND_DEBUG"))
+ {
+#ifdef WIN32
+ printf("Exit Status: %d\n", status);
+#else
+ if (WIFEXITED(status))
+ printf("Exit Status: %d\n", WEXITSTATUS(status));
+ else
+ printf("Terminating Signal: %d\n", WTERMSIG(status));
+#endif /* WIN32 */
+ }
+
return (status == 0);
}
@@ -2279,7 +2290,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 +2311,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 +2396,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 +2477,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 +2547,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 +2835,5 @@ show_version(void)
/*
- * End of "$Id: ippfind.c 11177 2013-07-24 12:16:37Z msweet $".
+ * End of "$Id: ippfind.c 12139 2014-08-29 17:50:38Z msweet $".
*/
diff --git a/test/ippserver.c b/test/ippserver.c
index 32a7eb1c8..f2055a197 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 12136 2014-08-29 15:19:40Z msweet $"
*
- * Sample IPP/2.0 server for CUPS.
+ * Sample IPP Everywhere 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.
*/
/*
@@ -85,20 +27,37 @@
* Include necessary headers...
*/
-#include <cups/cups.h> /* Public API */
#include <config.h> /* CUPS configuration header */
-#include <cups/string-private.h> /* For string functions */
+#include <cups/cups.h> /* Public API */
+#include <cups/string-private.h> /* CUPS string functions */
#include <cups/thread-private.h> /* For multithreading functions */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <limits.h>
+#include <sys/stat.h>
+
+#ifdef WIN32
+# include <fcntl.h>
+# include <io.h>
+# include <process.h>
+# define WEXITSTATUS(s) (s)
+# include <winsock2.h>
+typedef ULONG nfds_t;
+# define poll WSAPoll
+#else
+extern char **environ;
-#include <sys/wait.h>
+# include <sys/fcntl.h>
+# include <sys/wait.h>
+# include <poll.h>
+#endif /* WIN32 */
#ifdef HAVE_DNSSD
# include <dns_sd.h>
#endif /* HAVE_DNSSD */
-#include <limits.h>
-#include <sys/stat.h>
-#include <sys/fcntl.h>
-#include <poll.h>
#ifdef HAVE_SYS_MOUNT_H
# include <sys/mount.h>
#endif /* HAVE_SYS_MOUNT_H */
@@ -117,33 +76,33 @@
* Constants...
*/
-enum _ipp_preasons_e /* printer-state-reasons bit values */
+enum _ipp_preason_e /* printer-state-reasons bit values */
{
- _IPP_PSTATE_NONE = 0x0000, /* none */
- _IPP_PSTATE_OTHER = 0x0001, /* other */
- _IPP_PSTATE_COVER_OPEN = 0x0002, /* cover-open */
- _IPP_PSTATE_INPUT_TRAY_MISSING = 0x0004,
+ _IPP_PREASON_NONE = 0x0000, /* none */
+ _IPP_PREASON_OTHER = 0x0001, /* other */
+ _IPP_PREASON_COVER_OPEN = 0x0002, /* cover-open */
+ _IPP_PREASON_INPUT_TRAY_MISSING = 0x0004,
/* input-tray-missing */
- _IPP_PSTATE_MARKER_SUPPLY_EMPTY = 0x0008,
+ _IPP_PREASON_MARKER_SUPPLY_EMPTY = 0x0008,
/* marker-supply-empty */
- _IPP_PSTATE_MARKER_SUPPLY_LOW = 0x0010,
- /* marker-suply-low */
- _IPP_PSTATE_MARKER_WASTE_ALMOST_FULL = 0x0020,
+ _IPP_PREASON_MARKER_SUPPLY_LOW = 0x0010,
+ /* marker-supply-low */
+ _IPP_PREASON_MARKER_WASTE_ALMOST_FULL = 0x0020,
/* marker-waste-almost-full */
- _IPP_PSTATE_MARKER_WASTE_FULL = 0x0040,
+ _IPP_PREASON_MARKER_WASTE_FULL = 0x0040,
/* marker-waste-full */
- _IPP_PSTATE_MEDIA_EMPTY = 0x0080, /* media-empty */
- _IPP_PSTATE_MEDIA_JAM = 0x0100, /* media-jam */
- _IPP_PSTATE_MEDIA_LOW = 0x0200, /* media-low */
- _IPP_PSTATE_MEDIA_NEEDED = 0x0400, /* media-needed */
- _IPP_PSTATE_MOVING_TO_PAUSED = 0x0800,
+ _IPP_PREASON_MEDIA_EMPTY = 0x0080, /* media-empty */
+ _IPP_PREASON_MEDIA_JAM = 0x0100, /* media-jam */
+ _IPP_PREASON_MEDIA_LOW = 0x0200, /* media-low */
+ _IPP_PREASON_MEDIA_NEEDED = 0x0400, /* media-needed */
+ _IPP_PREASON_MOVING_TO_PAUSED = 0x0800,
/* moving-to-paused */
- _IPP_PSTATE_PAUSED = 0x1000, /* paused */
- _IPP_PSTATE_SPOOL_AREA_FULL = 0x2000,/* spool-area-full */
- _IPP_PSTATE_TONER_EMPTY = 0x4000, /* toner-empty */
- _IPP_PSTATE_TONER_LOW = 0x8000 /* toner-low */
+ _IPP_PREASON_PAUSED = 0x1000, /* paused */
+ _IPP_PREASON_SPOOL_AREA_FULL = 0x2000,/* spool-area-full */
+ _IPP_PREASON_TONER_EMPTY = 0x4000, /* toner-empty */
+ _IPP_PREASON_TONER_LOW = 0x8000 /* toner-low */
};
-typedef unsigned int _ipp_preasons_t; /* Bitfield for printer-state-reasons */
+typedef unsigned int _ipp_preason_t; /* Bitfield for printer-state-reasons */
typedef enum _ipp_media_class_e
{
@@ -152,6 +111,21 @@ typedef enum _ipp_media_class_e
_IPP_ENV_ONLY /* Envelope-only size */
} _ipp_media_class_t;
+typedef enum _ipp_media_size_e
+{
+ _IPP_MEDIA_SIZE_NONE = -1,
+ _IPP_MEDIA_SIZE_A4,
+ _IPP_MEDIA_SIZE_A5,
+ _IPP_MEDIA_SIZE_A6,
+ _IPP_MEDIA_SIZE_DL,
+ _IPP_MEDIA_SIZE_LEGAL,
+ _IPP_MEDIA_SIZE_LETTER,
+ _IPP_MEDIA_SIZE_COM10,
+ _IPP_MEDIA_SIZE_3x5,
+ _IPP_MEDIA_SIZE_L,
+ _IPP_MEDIA_SIZE_4x6,
+ _IPP_MEDIA_SIZE_5x7
+} _ipp_media_size_t;
static const char * const media_supported[] =
{ /* media-supported values */
"iso_a4_210x297mm", /* A4 */
@@ -180,6 +154,43 @@ static const int media_col_sizes[][3] =
{ 10160, 15240, _IPP_PHOTO_ONLY }, /* 4x6 */
{ 12700, 17780, _IPP_PHOTO_ONLY } /* 5x7 aka 2L */
};
+
+typedef enum _ipp_media_source_e
+{
+ _IPP_MEDIA_SOURCE_NONE = -1,
+ _IPP_MEDIA_SOURCE_AUTO,
+ _IPP_MEDIA_SOURCE_MAIN,
+ _IPP_MEDIA_SOURCE_MANUAL,
+ _IPP_MEDIA_SOURCE_ENVELOPE,
+ _IPP_MEDIA_SOURCE_PHOTO
+} _ipp_media_source_t;
+static const char * const media_source_supported[] =
+ /* media-source-supported values */
+{
+ "auto",
+ "main",
+ "manual",
+ "envelope",
+ "photo"
+};
+
+typedef enum _ipp_media_type_e
+{
+ _IPP_MEDIA_TYPE_NONE = -1,
+ _IPP_MEDIA_TYPE_AUTO,
+ _IPP_MEDIA_TYPE_CARDSTOCK,
+ _IPP_MEDIA_TYPE_ENVELOPE,
+ _IPP_MEDIA_TYPE_LABELS,
+ _IPP_MEDIA_TYPE_OTHER,
+ _IPP_MEDIA_TYPE_GLOSSY,
+ _IPP_MEDIA_TYPE_HIGH_GLOSS,
+ _IPP_MEDIA_TYPE_MATTE,
+ _IPP_MEDIA_TYPE_SATIN,
+ _IPP_MEDIA_TYPE_SEMI_GLOSS,
+ _IPP_MEDIA_TYPE_STATIONERY,
+ _IPP_MEDIA_TYPE_LETTERHEAD,
+ _IPP_MEDIA_TYPE_TRANSPARENCY
+} _ipp_media_type_t;
static const char * const media_type_supported[] =
/* media-type-supported values */
{
@@ -198,11 +209,34 @@ static const char * const media_type_supported[] =
"transparency"
};
+typedef enum _ipp_supply_e
+{
+ _IPP_SUPPLY_CYAN, /* Cyan Toner */
+ _IPP_SUPPLY_MAGENTA, /* Magenta Toner */
+ _IPP_SUPPLY_YELLOW, /* Yellow Toner */
+ _IPP_SUPPLY_BLACK, /* Black Toner */
+ _IPP_SUPPLY_WASTE /* Waste Toner */
+} _ipp_supply_t;
+static const char * const printer_supplies[] =
+{ /* printer-supply-description values */
+ "Cyan Toner",
+ "Magenta Toner",
+ "Yellow Toner",
+ "Black Toner",
+ "Toner Waste"
+};
+
/*
* Structures...
*/
+typedef struct _ipp_filter_s /**** Attribute filter ****/
+{
+ cups_array_t *ra; /* Requested attributes */
+ ipp_tag_t group_tag; /* Group to copy */
+} _ipp_filter_t;
+
typedef struct _ipp_job_s _ipp_job_t;
typedef struct _ipp_printer_s /**** Printer data ****/
@@ -229,12 +263,24 @@ typedef struct _ipp_printer_s /**** Printer data ****/
int port; /* Port */
size_t urilen; /* Length of printer URI */
ipp_t *attrs; /* Static attributes */
+ time_t start_time; /* Startup time */
+ time_t config_time; /* printer-config-change-time */
ipp_pstate_t state; /* printer-state value */
- _ipp_preasons_t state_reasons; /* printer-state-reasons values */
+ _ipp_preason_t state_reasons; /* printer-state-reasons values */
+ time_t state_time; /* printer-state-change-time */
cups_array_t *jobs; /* Jobs */
_ipp_job_t *active_job; /* Current active/pending job */
int next_job_id; /* Next job-id value */
_cups_rwlock_t rwlock; /* Printer lock */
+ _ipp_media_size_t main_size; /* Ready media */
+ _ipp_media_type_t main_type;
+ int main_level;
+ _ipp_media_size_t envelope_size;
+ int envelope_level;
+ _ipp_media_size_t photo_size;
+ _ipp_media_type_t photo_type;
+ int photo_level;
+ int supplies[5]; /* Supply levels (0-100) */
} _ipp_printer_t;
struct _ipp_job_s /**** Job data ****/
@@ -244,8 +290,11 @@ struct _ipp_job_s /**** Job data ****/
*username, /* job-originating-user-name */
*format; /* document-format */
ipp_jstate_t state; /* job-state value */
- time_t processing, /* time-at-processing value */
+ time_t created, /* time-at-creation value */
+ processing, /* time-at-processing value */
completed; /* time-at-completed value */
+ int impressions, /* job-impressions value */
+ impcompleted; /* job-impressions-completed value */
ipp_t *attrs; /* Static attributes */
int cancel; /* Non-zero when job canceled */
char *filename; /* Print file name */
@@ -261,7 +310,8 @@ typedef struct _ipp_client_s /**** Client data ****/
time_t start; /* Request start time */
http_state_t operation; /* Request operation */
ipp_op_t operation_id; /* IPP operation-id */
- char uri[1024]; /* Request URI */
+ char uri[1024], /* Request URI */
+ *options; /* URI options */
http_addr_t addr; /* Client address */
char hostname[256]; /* Client hostname */
_ipp_printer_t *printer; /* Printer */
@@ -281,9 +331,8 @@ static void copy_job_attributes(_ipp_client_t *client,
_ipp_job_t *job, cups_array_t *ra);
static _ipp_client_t *create_client(_ipp_printer_t *printer, int sock);
static _ipp_job_t *create_job(_ipp_client_t *client);
-static int create_listener(int family, int *port);
-static ipp_t *create_media_col(const char *media, const char *type,
- int width, int length, int margins);
+static int create_listener(int family, int port);
+static ipp_t *create_media_col(const char *media, const char *source, const char *type, int width, int length, int margins);
static ipp_t *create_media_size(int width, int length);
static _ipp_printer_t *create_printer(const char *servername,
const char *name, const char *location,
@@ -311,32 +360,34 @@ static void dnssd_callback(DNSServiceRef sdRef,
const char *domain,
_ipp_printer_t *printer);
#endif /* HAVE_DNSSD */
+static int filter_cb(_ipp_filter_t *filter, ipp_t *dst, ipp_attribute_t *attr);
static _ipp_job_t *find_job(_ipp_client_t *client);
static void html_escape(_ipp_client_t *client, const char *s,
size_t slen);
+static void html_footer(_ipp_client_t *client);
+static void html_header(_ipp_client_t *client, const char *title);
static void html_printf(_ipp_client_t *client, const char *format,
...) __attribute__((__format__(__printf__,
2, 3)));
static void ipp_cancel_job(_ipp_client_t *client);
+static void ipp_close_job(_ipp_client_t *client);
static void ipp_create_job(_ipp_client_t *client);
static void ipp_get_job_attributes(_ipp_client_t *client);
static void ipp_get_jobs(_ipp_client_t *client);
static void ipp_get_printer_attributes(_ipp_client_t *client);
+static void ipp_identify_printer(_ipp_client_t *client);
static void ipp_print_job(_ipp_client_t *client);
static void ipp_print_uri(_ipp_client_t *client);
static void ipp_send_document(_ipp_client_t *client);
static void ipp_send_uri(_ipp_client_t *client);
static void ipp_validate_job(_ipp_client_t *client);
+static int parse_options(_ipp_client_t *client, cups_option_t **options);
static void *process_client(_ipp_client_t *client);
static int process_http(_ipp_client_t *client);
static int process_ipp(_ipp_client_t *client);
static void *process_job(_ipp_job_t *job);
#ifdef HAVE_DNSSD
-static int register_printer(_ipp_printer_t *printer,
- const char *location, const char *make,
- const char *model, const char *formats,
- const char *adminurl, int color,
- int duplex, const char *regtype);
+static int register_printer(_ipp_printer_t *printer, const char *location, const char *make, const char *model, const char *formats, const char *adminurl, const char *uuid, int color, int duplex, const char *regtype);
#endif /* HAVE_DNSSD */
static int respond_http(_ipp_client_t *client, http_status_t code,
const char *content_coding,
@@ -347,6 +398,7 @@ static void respond_ipp(_ipp_client_t *client, ipp_status_t status,
static void respond_unsupported(_ipp_client_t *client,
ipp_attribute_t *attr);
static void run_printer(_ipp_printer_t *printer);
+static char *time_string(time_t tv, char *buffer, size_t bufsize);
static void usage(int status) __attribute__((noreturn));
static int valid_doc_attributes(_ipp_client_t *client);
static int valid_job_attributes(_ipp_client_t *client);
@@ -379,15 +431,19 @@ 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 */
- int port = 8631, /* Port number (0 = auto) */
+ int port = 0, /* Port number (0 = auto) */
duplex = 0, /* Duplex mode */
ppm = 10, /* Pages per minute for mono */
ppm_color = 0, /* Pages per minute for color */
pin = 0; /* PIN printing mode? */
- char directory[1024] = ""; /* Spool directory */
+ char directory[1024] = "", /* Spool directory */
+ hostname[1024]; /* Auto-detected hostname */
_ipp_printer_t *printer; /* Printer object */
@@ -399,12 +455,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 +506,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 +570,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)
{
@@ -525,6 +590,30 @@ main(int argc, /* I - Number of command-line args */
* Apply defaults as needed...
*/
+ if (!servername)
+ servername = httpGetHostname(NULL, hostname, sizeof(hostname));
+
+ if (!port)
+ {
+#ifdef WIN32
+ /*
+ * Windows is almost always used as a single user system, so use a default port
+ * number of 8631.
+ */
+
+ port = 8631;
+
+#else
+ /*
+ * Use 8000 + UID mod 1000 for the default port number...
+ */
+
+ port = 8000 + ((int)getuid() % 1000);
+#endif /* WIN32 */
+
+ fprintf(stderr, "Listening on port %d.\n", port);
+ }
+
if (!directory[0])
{
snprintf(directory, sizeof(directory), "/tmp/ippserver.%d", (int)getpid());
@@ -540,6 +629,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...
*/
@@ -622,30 +715,13 @@ copy_attributes(ipp_t *to, /* I - Destination request */
ipp_tag_t group_tag, /* I - Group to copy */
int quickcopy) /* I - Do a quick copy? */
{
- ipp_attribute_t *fromattr; /* Source attribute */
-
-
- if (!to || !from)
- return;
-
- for (fromattr = ippFirstAttribute(from);
- fromattr;
- fromattr = ippNextAttribute(from))
- {
- /*
- * Filter attributes as needed...
- */
+ _ipp_filter_t filter; /* Filter data */
- ipp_tag_t fromgroup = ippGetGroupTag(fromattr);
- const char *fromname = ippGetName(fromattr);
- if ((group_tag != IPP_TAG_ZERO && fromgroup != group_tag &&
- fromgroup != IPP_TAG_ZERO) || !fromname)
- continue;
+ filter.ra = ra;
+ filter.group_tag = group_tag;
- if (!ra || cupsArrayFind(ra, (void *)fromname))
- ippCopyAttribute(to, fromattr, quickcopy);
- }
+ ippCopyAttributes(to, from, quickcopy, (ipp_copycb_t)filter_cb, &filter);
}
@@ -661,71 +737,134 @@ copy_job_attributes(
{
copy_attributes(client->response, job->attrs, ra, IPP_TAG_JOB, 0);
+ if (!ra || cupsArrayFind(ra, "date-time-at-completed"))
+ {
+ if (job->completed)
+ ippAddDate(client->response, IPP_TAG_JOB, "date-time-at-completed", ippTimeToDate(job->completed));
+ else
+ ippAddOutOfBand(client->response, IPP_TAG_JOB, IPP_TAG_NOVALUE, "date-time-at-completed");
+ }
+
+ if (!ra || cupsArrayFind(ra, "date-time-at-processing"))
+ {
+ if (job->processing)
+ ippAddDate(client->response, IPP_TAG_JOB, "date-time-at-processing", ippTimeToDate(job->processing));
+ else
+ ippAddOutOfBand(client->response, IPP_TAG_JOB, IPP_TAG_NOVALUE, "date-time-at-processing");
+ }
+
+ if (!ra || cupsArrayFind(ra, "job-impressions"))
+ ippAddInteger(client->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-impressions", job->impressions);
+
+ if (!ra || cupsArrayFind(ra, "job-impressions-completed"))
+ ippAddInteger(client->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-impressions-completed", job->impcompleted);
+
if (!ra || cupsArrayFind(ra, "job-printer-up-time"))
- ippAddInteger(client->response, IPP_TAG_JOB, IPP_TAG_INTEGER,
- "job-printer-up-time", (int)time(NULL));
+ ippAddInteger(client->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-printer-up-time", (int)(time(NULL) - client->printer->start_time));
if (!ra || cupsArrayFind(ra, "job-state"))
ippAddInteger(client->response, IPP_TAG_JOB, IPP_TAG_ENUM,
"job-state", job->state);
+ if (!ra || cupsArrayFind(ra, "job-state-message"))
+ {
+ switch (job->state)
+ {
+ case IPP_JSTATE_PENDING :
+ ippAddString(client->response, IPP_TAG_JOB, IPP_CONST_TAG(IPP_TAG_TEXT), "job-state-message", NULL, "Job pending.");
+ break;
+
+ case IPP_JSTATE_HELD :
+ if (job->fd >= 0)
+ ippAddString(client->response, IPP_TAG_JOB, IPP_CONST_TAG(IPP_TAG_TEXT), "job-state-message", NULL, "Job incoming.");
+ else if (ippFindAttribute(job->attrs, "job-hold-until", IPP_TAG_ZERO))
+ ippAddString(client->response, IPP_TAG_JOB, IPP_CONST_TAG(IPP_TAG_TEXT), "job-state-message", NULL, "Job held.");
+ else
+ ippAddString(client->response, IPP_TAG_JOB, IPP_CONST_TAG(IPP_TAG_TEXT), "job-state-message", NULL, "Job created.");
+ break;
+
+ case IPP_JSTATE_PROCESSING :
+ if (job->cancel)
+ ippAddString(client->response, IPP_TAG_JOB, IPP_CONST_TAG(IPP_TAG_TEXT), "job-state-message", NULL, "Job canceling.");
+ else
+ ippAddString(client->response, IPP_TAG_JOB, IPP_CONST_TAG(IPP_TAG_TEXT), "job-state-message", NULL, "Job printing.");
+ break;
+
+ case IPP_JSTATE_STOPPED :
+ ippAddString(client->response, IPP_TAG_JOB, IPP_CONST_TAG(IPP_TAG_TEXT), "job-state-message", NULL, "Job stopped.");
+ break;
+
+ case IPP_JSTATE_CANCELED :
+ ippAddString(client->response, IPP_TAG_JOB, IPP_CONST_TAG(IPP_TAG_TEXT), "job-state-message", NULL, "Job canceled.");
+ break;
+
+ case IPP_JSTATE_ABORTED :
+ ippAddString(client->response, IPP_TAG_JOB, IPP_CONST_TAG(IPP_TAG_TEXT), "job-state-message", NULL, "Job aborted.");
+ break;
+
+ case IPP_JSTATE_COMPLETED :
+ ippAddString(client->response, IPP_TAG_JOB, IPP_CONST_TAG(IPP_TAG_TEXT), "job-state-message", NULL, "Job completed.");
+ break;
+ }
+ }
+
if (!ra || cupsArrayFind(ra, "job-state-reasons"))
{
switch (job->state)
{
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 +873,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 - client->printer->start_time));
if (!ra || cupsArrayFind(ra, "time-at-processing"))
ippAddInteger(client->response, IPP_TAG_JOB,
job->processing ? IPP_TAG_INTEGER : IPP_TAG_NOVALUE,
- "time-at-processing", job->processing);
+ "time-at-processing", (int)(job->processing - client->printer->start_time));
}
@@ -795,7 +934,8 @@ create_job(_ipp_client_t *client) /* I - Client */
{
_ipp_job_t *job; /* Job */
ipp_attribute_t *attr; /* Job attribute */
- char uri[1024]; /* job-uri value */
+ char uri[1024], /* job-uri value */
+ uuid[64]; /* job-uuid value */
_cupsRWLockWrite(&(client->printer->rwlock));
@@ -821,44 +961,42 @@ create_job(_ipp_client_t *client) /* I - Client */
}
job->printer = client->printer;
- job->attrs = client->request;
+ job->attrs = ippNew();
job->state = IPP_JSTATE_HELD;
job->fd = -1;
- client->request = NULL;
/*
- * Set all but the first two attributes to the job attributes group...
+ * Copy all of the job attributes...
*/
- for (ippFirstAttribute(job->attrs),
- ippNextAttribute(job->attrs),
- attr = ippNextAttribute(job->attrs);
- attr;
- attr = ippNextAttribute(job->attrs))
- ippSetGroupTag(job->attrs, &attr, IPP_TAG_JOB);
+ copy_attributes(job->attrs, client->request, NULL, IPP_TAG_JOB, 0);
/*
* Get the requesting-user-name, document format, and priority...
*/
- if ((attr = ippFindAttribute(job->attrs, "requesting-user-name",
- IPP_TAG_NAME)) != NULL)
- ippSetName(job->attrs, &attr, "job-originating-user-name");
- else
- attr = ippAddString(job->attrs, IPP_TAG_JOB,
- IPP_TAG_NAME | IPP_TAG_CUPS_CONST,
- "job-originating-user-name", NULL, "anonymous");
-
- if (attr)
+ if ((attr = ippFindAttribute(client->request, "requesting-user-name", IPP_TAG_NAME)) != NULL)
job->username = ippGetString(attr, 0, NULL);
else
job->username = "anonymous";
- if ((attr = ippFindAttribute(job->attrs, "document-format",
- IPP_TAG_MIMETYPE)) != NULL)
- job->format = ippGetString(attr, 0, NULL);
- else
- job->format = "application/octet-stream";
+ ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_NAME, "job-originating-user-name", NULL, job->username);
+
+ if (ippGetOperation(client->request) != IPP_OP_CREATE_JOB)
+ {
+ if ((attr = ippFindAttribute(job->attrs, "document-format-detected", IPP_TAG_MIMETYPE)) != NULL)
+ job->format = ippGetString(attr, 0, NULL);
+ else if ((attr = ippFindAttribute(job->attrs, "document-format-supplied", IPP_TAG_MIMETYPE)) != NULL)
+ job->format = ippGetString(attr, 0, NULL);
+ else
+ job->format = "application/octet-stream";
+ }
+
+ if ((attr = ippFindAttribute(client->request, "job-impressions", IPP_TAG_INTEGER)) != NULL)
+ job->impressions = ippGetInteger(attr, 0);
+
+ if ((attr = ippFindAttribute(client->request, "job-name", IPP_TAG_NAME)) != NULL)
+ job->name = ippGetString(attr, 0, NULL);
/*
* Add job description attributes and add to the jobs array...
@@ -867,13 +1005,14 @@ create_job(_ipp_client_t *client) /* I - Client */
job->id = client->printer->next_job_id ++;
snprintf(uri, sizeof(uri), "%s/%d", client->printer->uri, job->id);
+ httpAssembleUUID(client->printer->hostname, client->printer->port, client->printer->name, job->id, uuid, sizeof(uuid));
+ ippAddDate(job->attrs, IPP_TAG_JOB, "date-time-at-creation", ippTimeToDate(time(&job->created)));
ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-id", job->id);
ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-uri", NULL, uri);
- ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-printer-uri", NULL,
- client->printer->uri);
- ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER, "time-at-creation",
- (int)time(NULL));
+ ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-uuid", NULL, uuid);
+ ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-printer-uri", NULL, client->printer->uri);
+ ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER, "time-at-creation", (int)(job->created - client->printer->start_time));
cupsArrayAdd(client->printer->jobs, job);
client->printer->active_job = job;
@@ -885,29 +1024,84 @@ create_job(_ipp_client_t *client) /* I - Client */
/*
+ * 'create_job_filename()' - Create the filename for a document in a job.
+ */
+
+static void create_job_filename(
+ _ipp_printer_t *printer, /* I - Printer */
+ _ipp_job_t *job, /* I - Job */
+ char *fname, /* I - Filename buffer */
+ size_t fnamesize) /* I - Size of filename buffer */
+{
+ char name[256], /* "Safe" filename */
+ *nameptr; /* Pointer into filename */
+ const char *ext, /* Filename extension */
+ *job_name; /* job-name value */
+ ipp_attribute_t *job_name_attr; /* job-name attribute */
+
+
+ /*
+ * Make a name from the job-name attribute...
+ */
+
+ if ((job_name_attr = ippFindAttribute(job->attrs, "job-name", IPP_TAG_NAME)) != NULL)
+ job_name = ippGetString(job_name_attr, 0, NULL);
+ else
+ job_name = "untitled";
+
+ for (nameptr = name; *job_name && nameptr < (name + sizeof(name) - 1); job_name ++)
+ if (isalnum(*job_name & 255) || *job_name == '-')
+ *nameptr++ = (char)tolower(*job_name & 255);
+ else
+ *nameptr++ = '_';
+
+ *nameptr = '\0';
+
+ /*
+ * Figure out the extension...
+ */
+
+ if (!strcasecmp(job->format, "image/jpeg"))
+ ext = "jpg";
+ else if (!strcasecmp(job->format, "image/png"))
+ ext = "png";
+ else if (!strcasecmp(job->format, "image/pwg-raster"))
+ ext = "ras";
+ else if (!strcasecmp(job->format, "image/urf"))
+ ext = "urf";
+ else if (!strcasecmp(job->format, "application/pdf"))
+ ext = "pdf";
+ else if (!strcasecmp(job->format, "application/postscript"))
+ ext = "ps";
+ else
+ ext = "prn";
+
+ /*
+ * Create a filename with the job-id, job-name, and document-format (extension)...
+ */
+
+ snprintf(fname, fnamesize, "%s/%d-%s.%s", printer->directory, job->id, name, ext);
+}
+
+
+/*
* 'create_listener()' - Create a listener socket.
*/
-static int /* O - Listener socket or -1 on error */
-create_listener(int family, /* I - Address family */
- int *port) /* IO - Port number */
+static int /* O - Listener socket or -1 on error */
+create_listener(int family, /* I - Address family */
+ int port) /* I - Port number */
{
int sock; /* Listener socket */
http_addrlist_t *addrlist; /* Listen address */
char service[255]; /* Service port */
- if (!*port)
- {
- *port = 8000 + (getuid() % 1000);
- fprintf(stderr, "Listening on port %d.\n", *port);
- }
-
- snprintf(service, sizeof(service), "%d", *port);
+ snprintf(service, sizeof(service), "%d", port);
if ((addrlist = httpAddrGetList(NULL, family, service)) == NULL)
return (-1);
- sock = httpAddrListen(&(addrlist->addr), *port);
+ sock = httpAddrListen(&(addrlist->addr), port);
httpAddrFreeList(addrlist);
@@ -921,7 +1115,8 @@ create_listener(int family, /* I - Address family */
static ipp_t * /* O - media-col collection */
create_media_col(const char *media, /* I - Media name */
- const char *type, /* I - Nedua type */
+ const char *source, /* I - Media source */
+ const char *type, /* I - Media type */
int width, /* I - x-dimension in 2540ths */
int length, /* I - y-dimension in 2540ths */
int margins) /* I - Value for margins */
@@ -932,12 +1127,19 @@ create_media_col(const char *media, /* I - Media name */
char media_key[256]; /* media-key value */
- snprintf(media_key, sizeof(media_key), "%s_%s%s", media, type,
- margins == 0 ? "_borderless" : "");
+ if (type && source)
+ snprintf(media_key, sizeof(media_key), "%s_%s_%s%s", media, source, type, margins == 0 ? "_borderless" : "");
+ else if (type)
+ snprintf(media_key, sizeof(media_key), "%s__%s%s", media, type, margins == 0 ? "_borderless" : "");
+ else if (source)
+ snprintf(media_key, sizeof(media_key), "%s_%s%s", media, source, margins == 0 ? "_borderless" : "");
+ else
+ snprintf(media_key, sizeof(media_key), "%s%s", media, margins == 0 ? "_borderless" : "");
ippAddString(media_col, IPP_TAG_PRINTER, IPP_TAG_KEYWORD, "media-key", NULL,
media_key);
ippAddCollection(media_col, IPP_TAG_PRINTER, "media-size", media_size);
+ ippAddString(media_col, IPP_TAG_PRINTER, IPP_TAG_KEYWORD, "media-size-name", NULL, media);
ippAddInteger(media_col, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
"media-bottom-margin", margins);
ippAddInteger(media_col, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
@@ -946,8 +1148,10 @@ create_media_col(const char *media, /* I - Media name */
"media-right-margin", margins);
ippAddInteger(media_col, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
"media-top-margin", margins);
- ippAddString(media_col, IPP_TAG_PRINTER, IPP_TAG_KEYWORD, "media-type",
- NULL, type);
+ if (source)
+ ippAddString(media_col, IPP_TAG_PRINTER, IPP_TAG_KEYWORD, "media-source", NULL, source);
+ if (type)
+ ippAddString(media_col, IPP_TAG_PRINTER, IPP_TAG_KEYWORD, "media-type", NULL, type);
ippDelete(media_size);
@@ -1001,12 +1205,16 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
{
int i, j; /* Looping vars */
_ipp_printer_t *printer; /* Printer */
- char hostname[256], /* Hostname */
- uri[1024], /* Printer URI */
+#ifndef WIN32
+ char path[1024]; /* Full path to command */
+#endif /* !WIN32 */
+ char uri[1024], /* Printer URI */
icons[1024], /* printer-icons URI */
adminurl[1024], /* printer-more-info URI */
+ supplyurl[1024],/* printer-supply-info-uri URI */
device_id[1024],/* printer-device-id */
- make_model[128];/* printer-make-and-model */
+ make_model[128],/* printer-make-and-model */
+ uuid[128]; /* printer-uuid */
int num_formats; /* Number of document-format-supported values */
char *defformat, /* document-format-default value */
*formats[100], /* document-format-supported values */
@@ -1041,6 +1249,10 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
"1.1",
"2.0"
};
+ static const char * const features[] =/* ipp-features-supported values */
+ {
+ "ipp-everywhere"
+ };
static const int ops[] = /* operations-supported values */
{
IPP_OP_PRINT_JOB,
@@ -1052,7 +1264,10 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
IPP_OP_CANCEL_JOB,
IPP_OP_GET_JOB_ATTRIBUTES,
IPP_OP_GET_JOBS,
- IPP_OP_GET_PRINTER_ATTRIBUTES
+ IPP_OP_GET_PRINTER_ATTRIBUTES,
+ IPP_OP_CANCEL_MY_JOBS,
+ IPP_OP_CLOSE_JOB,
+ IPP_OP_IDENTIFY_PRINTER
};
static const char * const charsets[] =/* charset-supported values */
{
@@ -1067,6 +1282,11 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
#endif /* HAVE_LIBZ */
"none"
};
+ static const char * const identify_actions[] =
+ {
+ "display",
+ "sound"
+ };
static const char * const job_creation[] =
{ /* job-creation-attributes-supported values */
"copies",
@@ -1089,6 +1309,7 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
"media-left-margin",
"media-right-margin",
"media-size",
+ "media-source",
"media-top-margin",
"media-type"
};
@@ -1102,6 +1323,17 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
"separate-documents-uncollated-copies",
"separate-documents-collated-copies"
};
+ static const char * const overrides[] =
+ { /* overrides-supported */
+ "document-number",
+ "pages"
+ };
+ static const char * const print_color_mode_supported[] =
+ { /* print-color-mode-supported values */
+ "auto",
+ "color",
+ "monochrome"
+ };
static const int print_quality_supported[] =
{ /* print-quality-supported values */
IPP_QUALITY_DRAFT,
@@ -1137,6 +1369,17 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
"two-sided-long-edge",
"two-sided-short-edge"
};
+ static const char * const urf_supported[] =
+ { /* urf-supported values */
+ "CP1",
+ "IS1-5-7",
+ "MT1-2-3-4-5-6-8-9-10-11-12-13",
+ "RS600",
+ "SRGB24",
+ "V1.4",
+ "W8",
+ "DM1"
+ };
static const char * const which_jobs[] =
{ /* which-jobs-supported values */
"completed",
@@ -1151,13 +1394,41 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
};
+#ifndef WIN32
+ /*
+ * If a command was specified, make sure it exists and is executable...
+ */
+
+ if (command)
+ {
+ if (*command == '/' || !strncmp(command, "./", 2))
+ {
+ if (access(command, X_OK))
+ {
+ fprintf(stderr, "ippserver: Unable to execute command \"%s\": %s\n", command, strerror(errno));
+ return (NULL);
+ }
+ }
+ else
+ {
+ if (!cupsFileFind(command, getenv("PATH"), 1, path, sizeof(path)))
+ {
+ fprintf(stderr, "ippserver: Unable to find command \"%s\".\n", command);
+ return (NULL);
+ }
+
+ command = path;
+ }
+ }
+#endif /* !WIN32 */
+
/*
* Allocate memory for the printer...
*/
if ((printer = calloc(1, sizeof(_ipp_printer_t))) == NULL)
{
- perror("Unable to allocate memory for printer");
+ perror("ippserver: Unable to allocate memory for printer");
return (NULL);
}
@@ -1169,12 +1440,13 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
#endif /* HAVE_DNSSD */
printer->command = command ? strdup(command) : NULL;
printer->directory = strdup(directory);
- printer->hostname = strdup(servername ? servername :
- httpGetHostname(NULL, hostname,
- sizeof(hostname)));
+ printer->hostname = strdup(servername);
printer->port = port;
+ printer->start_time = time(NULL);
+ printer->config_time = printer->start_time;
printer->state = IPP_PSTATE_IDLE;
- printer->state_reasons = _IPP_PSTATE_NONE;
+ printer->state_reasons = _IPP_PREASON_NONE;
+ printer->state_time = printer->start_time;
printer->jobs = cupsArrayNew((cups_array_func_t)compare_jobs, NULL);
printer->next_job_id = 1;
@@ -1186,19 +1458,36 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
if (icon)
printer->icon = strdup(icon);
+ printer->main_size = _IPP_MEDIA_SIZE_A4;
+ printer->main_type = _IPP_MEDIA_TYPE_STATIONERY;
+ printer->main_level = 500;
+
+ printer->envelope_size = _IPP_MEDIA_SIZE_NONE;
+ printer->envelope_level = 0;
+
+ printer->photo_size = _IPP_MEDIA_SIZE_NONE;
+ printer->photo_type = _IPP_MEDIA_TYPE_NONE;
+ printer->photo_level = 0;
+
+ printer->supplies[_IPP_SUPPLY_CYAN] = 100;
+ printer->supplies[_IPP_SUPPLY_MAGENTA] = 100;
+ printer->supplies[_IPP_SUPPLY_YELLOW] = 100;
+ printer->supplies[_IPP_SUPPLY_BLACK] = 100;
+ printer->supplies[_IPP_SUPPLY_WASTE] = 0;
+
_cupsRWInit(&(printer->rwlock));
/*
* Create the listener sockets...
*/
- if ((printer->ipv4 = create_listener(AF_INET, &(printer->port))) < 0)
+ if ((printer->ipv4 = create_listener(AF_INET, printer->port)) < 0)
{
perror("Unable to create IPv4 listener");
goto bad_printer;
}
- if ((printer->ipv6 = create_listener(AF_INET6, &(printer->port))) < 0)
+ if ((printer->ipv6 = create_listener(AF_INET6, printer->port)) < 0)
{
perror("Unable to create IPv6 listener");
goto bad_printer;
@@ -1210,12 +1499,13 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
httpAssembleURI(HTTP_URI_CODING_ALL, icons, sizeof(icons), "http", NULL,
printer->hostname, printer->port, "/icon.png");
- httpAssembleURI(HTTP_URI_CODING_ALL, adminurl, sizeof(adminurl), "http", NULL,
- printer->hostname, printer->port, "/");
+ httpAssembleURI(HTTP_URI_CODING_ALL, adminurl, sizeof(adminurl), "http", NULL, printer->hostname, printer->port, "/");
+ httpAssembleURI(HTTP_URI_CODING_ALL, supplyurl, sizeof(supplyurl), "http", NULL, printer->hostname, printer->port, "/supplies");
if (Verbosity)
{
fprintf(stderr, "printer-more-info=\"%s\"\n", adminurl);
+ fprintf(stderr, "printer-supply-info-uri=\"%s\"\n", supplyurl);
fprintf(stderr, "printer-uri=\"%s\"\n", uri);
}
@@ -1229,7 +1519,7 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
*ptr++ = '\0';
formats[num_formats++] = ptr;
- if (!_cups_strcasecmp(ptr, "application/octet-stream"))
+ if (!strcasecmp(ptr, "application/octet-stream"))
defformat = ptr;
}
@@ -1238,24 +1528,27 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
prefix = "CMD:";
for (i = 0; i < num_formats; i ++)
{
- if (!_cups_strcasecmp(formats[i], "application/pdf"))
- snprintf(ptr, sizeof(device_id) - (ptr - device_id), "%sPDF", prefix);
- else if (!_cups_strcasecmp(formats[i], "application/postscript"))
- snprintf(ptr, sizeof(device_id) - (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);
- else if (!_cups_strcasecmp(formats[i], "image/jpeg"))
- snprintf(ptr, sizeof(device_id) - (ptr - device_id), "%sJPEG", prefix);
- else if (!_cups_strcasecmp(formats[i], "image/png"))
- snprintf(ptr, sizeof(device_id) - (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]);
+ if (!strcasecmp(formats[i], "application/pdf"))
+ snprintf(ptr, sizeof(device_id) - (size_t)(ptr - device_id), "%sPDF", prefix);
+ else if (!strcasecmp(formats[i], "application/postscript"))
+ snprintf(ptr, sizeof(device_id) - (size_t)(ptr - device_id), "%sPS", prefix);
+ else if (!strcasecmp(formats[i], "application/vnd.hp-PCL"))
+ snprintf(ptr, sizeof(device_id) - (size_t)(ptr - device_id), "%sPCL", prefix);
+ else if (!strcasecmp(formats[i], "image/jpeg"))
+ snprintf(ptr, sizeof(device_id) - (size_t)(ptr - device_id), "%sJPEG", prefix);
+ else if (!strcasecmp(formats[i], "image/png"))
+ snprintf(ptr, sizeof(device_id) - (size_t)(ptr - device_id), "%sPNG", prefix);
+ else if (strcasecmp(formats[i], "application/octet-stream"))
+ snprintf(ptr, sizeof(device_id) - (size_t)(ptr - device_id), "%s%s", prefix, formats[i]);
ptr += strlen(ptr);
prefix = ",";
}
- strlcat(device_id, ";", sizeof(device_id));
+ if (ptr < (device_id + sizeof(device_id) - 1))
+ {
+ *ptr++ = ';';
+ *ptr = '\0';
+ }
/*
* Get the maximum spool size based on the size of the filesystem used for
@@ -1294,12 +1587,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 +1602,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);
@@ -1330,6 +1623,9 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
"document-format-supported", num_formats, NULL,
(const char * const *)formats);
+ /* document-password-supported */
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "document-password-supported", 127);
+
/* finishings-default */
ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM,
"finishings-default", IPP_FINISHINGS_NONE);
@@ -1340,28 +1636,38 @@ 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");
+ /* identify-actions-default */
+ ippAddString (printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "identify-actions-default", NULL, "sound");
+
+ /* identify-actions-supported */
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "identify-actions-supported", sizeof(identify_actions) / sizeof(identify_actions[0]), NULL, identify_actions);
+
+ /* ipp-features-supported */
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "ipp-features-supported", sizeof(features) / sizeof(features[0]), NULL, features);
+
/* ipp-versions-supported */
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
- IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
- "ipp-versions-supported",
- sizeof(versions) / sizeof(versions[0]), NULL, versions);
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "ipp-versions-supported", sizeof(versions) / sizeof(versions[0]), NULL, versions);
+
+ /* job-account-id-default */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_NAME), "job-account-id-default", NULL, "");
/* job-account-id-supported */
ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "job-account-id-supported", 1);
+ /* job-accounting-user-id-default */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_NAME), "job-accounting-user-id-default", NULL, "");
+
/* job-accounting-user-id-supported */
- ippAddBoolean(printer->attrs, IPP_TAG_PRINTER,
- "job-accounting-user-id-supported", 1);
+ ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "job-accounting-user-id-supported", 1);
/* job-creation-attributes-supported */
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
- IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
- "job-creation-attributes-supported",
- sizeof(job_creation) / sizeof(job_creation[0]),
- NULL, job_creation);
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "job-creation-attributes-supported", sizeof(job_creation) / sizeof(job_creation[0]), NULL, job_creation);
+
+ /* job-ids-supported */
+ ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "job-ids-supported", 1);
/* job-k-octets-supported */
ippAddRange(printer->attrs, IPP_TAG_PRINTER, "job-k-octets-supported", 0,
@@ -1371,6 +1677,9 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
"job-password-supported", 4);
+ /* job-preferred-attributes-supported */
+ ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "job-preferred-attributes-supported", 0);
+
/* job-priority-default */
ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
"job-priority-default", 50);
@@ -1381,12 +1690,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 */
@@ -1402,13 +1711,11 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
i ++)
{
if (media_col_sizes[i][2] == _IPP_ENV_ONLY)
- num_database += 2; /* auto + envelope */
+ num_database += 3; /* auto + manual + envelope */
else if (media_col_sizes[i][2] == _IPP_PHOTO_ONLY)
- num_database += 12; /* auto + photographic-* + borderless */
+ num_database += 6 * 3; /* auto + photographic-* from auto, manual, and photo */
else
- num_database += (int)(sizeof(media_type_supported) /
- sizeof(media_type_supported[0])) + 6;
- /* All types + borderless */
+ num_database += 2; /* Regular + borderless */
}
media_col_database = ippAddCollections(printer->attrs, IPP_TAG_PRINTER,
@@ -1418,49 +1725,52 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
i < (int)(sizeof(media_col_sizes) / sizeof(media_col_sizes[0]));
i ++)
{
- for (j = 0;
- j < (int)(sizeof(media_type_supported) /
- sizeof(media_type_supported[0]));
- j ++)
+ switch (media_col_sizes[i][2])
{
- if (media_col_sizes[i][2] == _IPP_ENV_ONLY &&
- strcmp(media_type_supported[j], "auto") &&
- strcmp(media_type_supported[j], "envelope"))
- continue;
- else if (media_col_sizes[i][2] == _IPP_PHOTO_ONLY &&
- strcmp(media_type_supported[j], "auto") &&
- strncmp(media_type_supported[j], "photographic-", 13))
- continue;
+ case _IPP_GENERAL :
+ /*
+ * Regular + borderless for the general class; no source/type
+ * selectors...
+ */
- ippSetCollection(printer->attrs, &media_col_database, media_col_index,
- create_media_col(media_supported[i],
- media_type_supported[j],
- media_col_sizes[i][0],
- media_col_sizes[i][1],
- media_xxx_margin_supported[1]));
- media_col_index ++;
-
- if (media_col_sizes[i][2] != _IPP_ENV_ONLY &&
- (!strcmp(media_type_supported[j], "auto") ||
- !strncmp(media_type_supported[j], "photographic-", 13)))
- {
- /*
- * Add borderless version for this combination...
- */
+ ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], NULL, NULL, media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[1]));
+ ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], NULL, NULL, media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[0]));
+ break;
- ippSetCollection(printer->attrs, &media_col_database, media_col_index,
- create_media_col(media_supported[i],
- media_type_supported[j],
- media_col_sizes[i][0],
- media_col_sizes[i][1],
- media_xxx_margin_supported[0]));
- media_col_index ++;
- }
+ case _IPP_ENV_ONLY :
+ /*
+ * Regular margins for "auto", "manual", and "envelope" sources.
+ */
+
+ ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], "auto", "envelope", media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[1]));
+ ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], "manual", "envelope", media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[1]));
+ ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], "envelope", "envelope", media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[1]));
+ break;
+ case _IPP_PHOTO_ONLY :
+ /*
+ * Photos have specific media types and can only be printed via
+ * the auto, manual, and photo sources...
+ */
+
+ for (j = 0;
+ j < (int)(sizeof(media_type_supported) /
+ sizeof(media_type_supported[0]));
+ j ++)
+ {
+ if (strcmp(media_type_supported[j], "auto") && strncmp(media_type_supported[j], "photographic-", 13))
+ continue;
+
+ ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], "auto", media_type_supported[j], media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[0]));
+ ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], "manual", media_type_supported[j], media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[0]));
+ ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], "photo", media_type_supported[j], media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[0]));
+ }
+ break;
}
}
/* media-col-default */
media_col_default = create_media_col(media_supported[0],
+ media_source_supported[0],
media_type_supported[0],
media_col_sizes[0][0],
media_col_sizes[0][1],
@@ -1472,7 +1782,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 +1790,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 +1809,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);
@@ -1517,6 +1827,9 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
create_media_size(media_col_sizes[i][0],
media_col_sizes[i][1]));
+ /* media-source-supported */
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "media-source-supported", (int)(sizeof(media_source_supported) / sizeof(media_source_supported[0])), NULL, media_source_supported);
+
/* media-top-margin-supported */
ippAddIntegers(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
"media-top-margin-supported",
@@ -1525,28 +1838,23 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
media_xxx_margin_supported);
/* media-type-supported */
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
- IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
- "media-type-supported",
- (int)(sizeof(media_type_supported) /
- sizeof(media_type_supported[0])),
- NULL, media_type_supported);
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "media-type-supported", (int)(sizeof(media_type_supported) / sizeof(media_type_supported[0])), NULL, media_type_supported);
/* multiple-document-handling-supported */
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
- IPP_TAG_KEYWORD | IPP_TAG_CUPS_CONST,
- "multiple-document-handling-supported",
- sizeof(multiple_document_handling) /
- sizeof(multiple_document_handling[0]), NULL,
- multiple_document_handling);
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "multiple-document-handling-supported", sizeof(multiple_document_handling) / sizeof(multiple_document_handling[0]), NULL, multiple_document_handling);
/* multiple-document-jobs-supported */
- ippAddBoolean(printer->attrs, IPP_TAG_PRINTER,
- "multiple-document-jobs-supported", 0);
+ ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "multiple-document-jobs-supported", 0);
+
+ /* multiple-operation-time-out */
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "multiple-operation-time-out", 60);
+
+ /* multiple-operation-time-out-action */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "multiple-operation-time-out-action", NULL, "abort-job");
/* natural-language-configured */
ippAddString(printer->attrs, IPP_TAG_PRINTER,
- IPP_TAG_LANGUAGE | IPP_TAG_CUPS_CONST,
+ IPP_CONST_TAG(IPP_TAG_LANGUAGE),
"natural-language-configured", NULL, "en");
/* number-up-default */
@@ -1571,14 +1879,20 @@ 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");
+ /* overrides-supported */
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "overrides-supported", (int)(sizeof(overrides) / sizeof(overrides[0])), NULL, overrides);
+
+ /* page-ranges-supported */
+ ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "page-ranges-supported", 1);
+
/* pages-per-minute */
ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
"pages-per-minute", ppm);
@@ -1590,24 +1904,43 @@ 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-color-mode-default */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "print-color-mode-default", NULL, "auto");
+
+ /* print-color-mode-supported */
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "print-color-mode-supported", (int)(sizeof(print_color_mode_supported) / sizeof(print_color_mode_supported[0])), NULL, print_color_mode_supported);
+
+ /* print-content-optimize-default */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "print-content-optimize-default", NULL, "auto");
+
+ /* print-content-optimize-supported */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "print-content-optimize-supported", NULL, "auto");
+
+ /* print-rendering-intent-default */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "print-rendering-intent-default", NULL, "auto");
+
+ /* print-rendering-intent-supported */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "print-rendering-intent-supported", NULL, "auto");
+
/* print-quality-default */
- ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM,
- "print-quality-default", IPP_QUALITY_NORMAL);
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM, "print-quality-default", IPP_QUALITY_NORMAL);
/* print-quality-supported */
- ippAddIntegers(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM,
- "print-quality-supported",
- (int)(sizeof(print_quality_supported) /
- sizeof(print_quality_supported[0])),
- print_quality_supported);
+ ippAddIntegers(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM, "print-quality-supported", (int)(sizeof(print_quality_supported) / sizeof(print_quality_supported[0])), print_quality_supported);
/* printer-device-id */
ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_TEXT,
"printer-device-id", NULL, device_id);
+ /* printer-get-attributes-supported */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "printer-get-attributes-supported", NULL, "document-format");
+
+ /* printer-geo-location */
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_UNKNOWN, "printer-geo-location", 0);
+
/* printer-icons */
ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI,
"printer-icons", NULL, icons);
@@ -1643,13 +1976,18 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
}
/* printer-more-info */
- ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI,
- "printer-more-info", NULL, adminurl);
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-more-info", NULL, adminurl);
/* printer-name */
ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_NAME, "printer-name",
NULL, name);
+ /* printer-organization */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_TEXT), "printer-organization", NULL, "Apple Inc.");
+
+ /* printer-organizational-unit */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_TEXT), "printer-organizational-unit", NULL, "Printing Engineering");
+
/* printer-resolution-default */
ippAddResolution(printer->attrs, IPP_TAG_PRINTER,
"printer-resolution-default", IPP_RES_PER_INCH, 600, 600);
@@ -1658,13 +1996,22 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
ippAddResolution(printer->attrs, IPP_TAG_PRINTER,
"printer-resolution-supported", IPP_RES_PER_INCH, 600, 600);
+ /* printer-supply-description */
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_TEXT), "printer-supply-description", (int)(sizeof(printer_supplies) / sizeof(printer_supplies[0])), NULL, printer_supplies);
+
+ /* printer-supply-info-uri */
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-supply-info-uri", NULL, supplyurl);
+
/* printer-uri-supported */
- ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI,
- "printer-uri-supported", NULL, uri);
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-uri-supported", NULL, uri);
+
+ /* printer-uuid */
+ httpAssembleUUID(printer->hostname, port, name, 0, uuid, sizeof(uuid));
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-uuid", NULL, uuid);
/* pwg-raster-document-xxx-supported */
for (i = 0; i < num_formats; i ++)
- if (!_cups_strcasecmp(formats[i], "image/pwg-raster"))
+ if (!strcasecmp(formats[i], "image/pwg-raster"))
break;
if (i < num_formats)
@@ -1687,7 +2034,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 +2042,35 @@ 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);
+ /* urf-supported */
+ for (i = 0; i < num_formats; i ++)
+ if (!strcasecmp(formats[i], "image/urf"))
+ break;
+
+ if (i < num_formats)
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD, "urf-supported", (int)(sizeof(urf_supported) / sizeof(urf_supported[0])) - !duplex, NULL, urf_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);
@@ -1728,8 +2083,7 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
* Register the printer with Bonjour...
*/
- if (!register_printer(printer, location, make, model, docformats, adminurl,
- ppm_color > 0, duplex, subtype))
+ if (!register_printer(printer, location, make, model, docformats, adminurl, uuid + 9, ppm_color > 0, duplex, subtype))
goto bad_printer;
#endif /* HAVE_DNSSD */
@@ -1928,13 +2282,17 @@ 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",
regtype, (int)errorCode);
return;
}
- else if (_cups_strcasecmp(name, printer->dnssd_name))
+ else if (strcasecmp(name, printer->dnssd_name))
{
if (Verbosity)
fprintf(stderr, "Now using DNS-SD service name \"%s\".\n", name);
@@ -1948,6 +2306,31 @@ dnssd_callback(
/*
+ * 'filter_cb()' - Filter printer attributes based on the requested array.
+ */
+
+static int /* O - 1 to copy, 0 to ignore */
+filter_cb(_ipp_filter_t *filter, /* I - Filter parameters */
+ ipp_t *dst, /* I - Destination (unused) */
+ ipp_attribute_t *attr) /* I - Source attribute */
+{
+ /*
+ * Filter attributes as needed...
+ */
+
+// (void)dst;
+
+ ipp_tag_t group = ippGetGroupTag(attr);
+ const char *name = ippGetName(attr);
+
+ if ((filter->group_tag != IPP_TAG_ZERO && group != filter->group_tag && group != IPP_TAG_ZERO) || !name || (!strcmp(name, "media-col-database") && !cupsArrayFind(filter->ra, (void *)name)))
+ return (0);
+
+ return (!filter->ra || cupsArrayFind(filter->ra, (void *)name) != NULL);
+}
+
+
+/*
* 'find_job()' - Find a job specified in a request.
*/
@@ -1959,19 +2342,17 @@ find_job(_ipp_client_t *client) /* I - Client */
*job; /* Matching job, if any */
- key.id = 0;
-
- if ((attr = ippFindAttribute(client->request, "job-uri",
- IPP_TAG_URI)) != NULL)
+ if ((attr = ippFindAttribute(client->request, "job-uri", IPP_TAG_URI)) != NULL)
{
const char *uri = ippGetString(attr, 0, NULL);
if (!strncmp(uri, client->printer->uri, client->printer->urilen) &&
uri[client->printer->urilen] == '/')
key.id = atoi(uri + client->printer->urilen + 1);
+ else
+ return (NULL);
}
- else if ((attr = ippFindAttribute(client->request, "job-id",
- IPP_TAG_INTEGER)) != NULL)
+ else if ((attr = ippFindAttribute(client->request, "job-id", IPP_TAG_INTEGER)) != NULL)
key.id = ippGetInteger(attr, 0);
_cupsRWLockRead(&(client->printer->rwlock));
@@ -2003,7 +2384,7 @@ html_escape(_ipp_client_t *client, /* I - Client */
if (*s == '&' || *s == '<')
{
if (s > start)
- httpWrite2(client->http, start, s - start);
+ httpWrite2(client->http, start, (size_t)(s - start));
if (*s == '&')
httpWrite2(client->http, "&amp;", 5);
@@ -2017,7 +2398,72 @@ 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));
+}
+
+
+/*
+ * 'html_footer()' - Show the web interface footer.
+ *
+ * This function also writes the trailing 0-length chunk.
+ */
+
+static void
+html_footer(_ipp_client_t *client) /* I - Client */
+{
+ html_printf(client,
+ "</div>\n"
+ "</body>\n"
+ "</html>\n");
+ httpWrite2(client->http, "", 0);
+}
+
+
+/*
+ * 'html_header()' - Show the web interface header and title.
+ */
+
+static void
+html_header(_ipp_client_t *client, /* I - Client */
+ const char *title) /* I - Title */
+{
+ html_printf(client,
+ "<!doctype html>\n"
+ "<html>\n"
+ "<head>\n"
+ "<title>%s</title>\n"
+ "<link rel=\"shortcut icon\" href=\"/icon.png\" type=\"image/png\">\n"
+ "<link rel=\"apple-touch-icon\" href=\"/icon.png\" type=\"image/png\">\n"
+ "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\">\n"
+ "<meta name=\"viewport\" content=\"width=device-width\">\n"
+ "<style>\n"
+ "body { font-family: sans-serif; margin: 0; }\n"
+ "div.body { padding: 0px 10px 10px; }\n"
+ "blockquote { background: #dfd; border-radius: 5px; color: #006; padding: 10px; }\n"
+ "table.form { border-collapse: collapse; margin-top: 10px; width: 100%%; }\n"
+ "table.form td, table.form th { padding: 5px 2px; width: 50%%; }\n"
+ "table.form th { text-align: right; }\n"
+ "table.striped { border-bottom: solid thin black; border-collapse: collapse; width: 100%%; }\n"
+ "table.striped tr:nth-child(even) { background: #fcfcfc; }\n"
+ "table.striped tr:nth-child(odd) { background: #f0f0f0; }\n"
+ "table.striped th { background: white; border-bottom: solid thin black; text-align: left; vertical-align: bottom; }\n"
+ "table.striped td { margin: 0; padding: 5px; vertical-align: top; }\n"
+ "table.nav { border-collapse: collapse; width: 100%%; }\n"
+ "table.nav td { margin: 0; text-align: center; }\n"
+ "td.nav a, td.nav a:active, td.nav a:hover, td.nav a:hover:link, td.nav a:hover:link:visited, td.nav a:link, td.nav a:link:visited, td.nav a:visited { background: inherit; color: inherit; font-size: 80%%; text-decoration: none; }\n"
+ "td.nav { background: #333; color: #fff; padding: 4px 8px; width: 33%%; }\n"
+ "td.nav.sel { background: #fff; color: #000; font-weight: bold; }\n"
+ "td.nav:hover { background: #666; color: #fff; }\n"
+ "td.nav:active { background: #000; color: #ff0; }\n"
+ "</style>\n"
+ "</head>\n"
+ "<body>\n"
+ "<table class=\"nav\"><tr>"
+ "<td class=\"nav%s\"><a href=\"/\">Status</a></td>"
+ "<td class=\"nav%s\"><a href=\"/supplies\">Supplies</a></td>"
+ "<td class=\"nav%s\"><a href=\"/media\">Media</a></td>"
+ "</tr></table>\n"
+ "<div class=\"body\">\n", title, !strcmp(client->uri, "/") ? " sel" : "", !strcmp(client->uri, "/supplies") ? " sel" : "", !strcmp(client->uri, "/media") ? " sel" : "");
}
@@ -2054,7 +2500,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++;
@@ -2063,6 +2509,7 @@ html_printf(_ipp_client_t *client, /* I - Client */
{
httpWrite2(client->http, "%", 1);
format ++;
+ start = format;
continue;
}
else if (strchr(" -+#\'", *format))
@@ -2077,7 +2524,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 +2556,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 +2616,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 +2632,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 +2649,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 +2660,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 +2681,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);
}
@@ -2307,6 +2754,61 @@ ipp_cancel_job(_ipp_client_t *client) /* I - Client */
/*
+ * 'ipp_close_job()' - Close an open job.
+ */
+
+static void
+ipp_close_job(_ipp_client_t *client) /* I - Client */
+{
+ _ipp_job_t *job; /* Job information */
+
+
+ /*
+ * Get the job...
+ */
+
+ if ((job = find_job(client)) == NULL)
+ {
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job does not exist.");
+ return;
+ }
+
+ /*
+ * See if the job is already completed, canceled, or aborted; if so,
+ * we can't cancel...
+ */
+
+ switch (job->state)
+ {
+ case IPP_JSTATE_CANCELED :
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
+ "Job #%d is canceled - can\'t close.", job->id);
+ break;
+
+ case IPP_JSTATE_ABORTED :
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
+ "Job #%d is aborted - can\'t close.", job->id);
+ break;
+
+ case IPP_JSTATE_COMPLETED :
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
+ "Job #%d is completed - can\'t close.", job->id);
+ break;
+
+ case IPP_JSTATE_PROCESSING :
+ case IPP_JSTATE_STOPPED :
+ respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
+ "Job #%d is already closed.", job->id);
+ break;
+
+ default :
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+ break;
+ }
+}
+
+
+/*
* 'ipp_create_job()' - Create a job object.
*/
@@ -2358,6 +2860,7 @@ ipp_create_job(_ipp_client_t *client) /* I - Client */
ra = cupsArrayNew((cups_array_func_t)strcmp, NULL);
cupsArrayAdd(ra, "job-id");
cupsArrayAdd(ra, "job-state");
+ cupsArrayAdd(ra, "job-state-message");
cupsArrayAdd(ra, "job-state-reasons");
cupsArrayAdd(ra, "job-uri");
@@ -2556,7 +3059,7 @@ ipp_get_jobs(_ipp_client_t *client) /* I - Client */
(job_comparison > 0 && job->state < job_state) ||
job->id < first_job_id ||
(username && job->username &&
- _cups_strcasecmp(username, job->username)))
+ strcasecmp(username, job->username)))
continue;
if (count > 0)
@@ -2598,69 +3101,160 @@ ipp_get_printer_attributes(
copy_attributes(client->response, printer->attrs, ra, IPP_TAG_ZERO,
IPP_TAG_CUPS_CONST);
+ if (!ra || cupsArrayFind(ra, "media-col-ready"))
+ {
+ int i, /* Looping var */
+ num_ready = 0; /* Number of ready media */
+ ipp_t *ready[3]; /* Ready media */
+
+ if (printer->main_size != _IPP_MEDIA_SIZE_NONE)
+ {
+ if (printer->main_type != _IPP_MEDIA_TYPE_NONE)
+ ready[num_ready ++] = create_media_col(media_supported[printer->main_size], "main", media_type_supported[printer->main_type], media_col_sizes[printer->main_size][0], media_col_sizes[printer->main_size][1], 635);
+ else
+ ready[num_ready ++] = create_media_col(media_supported[printer->main_size], "main", NULL, media_col_sizes[printer->main_size][0], media_col_sizes[printer->main_size][1], 635);
+ }
+ if (printer->envelope_size != _IPP_MEDIA_SIZE_NONE)
+ ready[num_ready ++] = create_media_col(media_supported[printer->envelope_size], "envelope", NULL, media_col_sizes[printer->envelope_size][0], media_col_sizes[printer->envelope_size][1], 635);
+ if (printer->photo_size != _IPP_MEDIA_SIZE_NONE)
+ {
+ if (printer->photo_type != _IPP_MEDIA_TYPE_NONE)
+ ready[num_ready ++] = create_media_col(media_supported[printer->photo_size], "photo", media_type_supported[printer->photo_type], media_col_sizes[printer->photo_size][0], media_col_sizes[printer->photo_size][1], 0);
+ else
+ ready[num_ready ++] = create_media_col(media_supported[printer->photo_size], "photo", NULL, media_col_sizes[printer->photo_size][0], media_col_sizes[printer->photo_size][1], 0);
+ }
+
+ if (num_ready)
+ {
+ ippAddCollections(client->response, IPP_TAG_PRINTER, "media-col-ready", num_ready, (const ipp_t **)ready);
+ for (i = 0; i < num_ready; i ++)
+ ippDelete(ready[i]);
+ }
+ else
+ ippAddOutOfBand(client->response, IPP_TAG_PRINTER, IPP_TAG_NOVALUE, "media-col-ready");
+ }
+
+ if (!ra || cupsArrayFind(ra, "media-ready"))
+ {
+ int num_ready = 0; /* Number of ready media */
+ const char *ready[3]; /* Ready media */
+
+ if (printer->main_size != _IPP_MEDIA_SIZE_NONE)
+ ready[num_ready ++] = media_supported[printer->main_size];
+
+ if (printer->envelope_size != _IPP_MEDIA_SIZE_NONE)
+ ready[num_ready ++] = media_supported[printer->envelope_size];
+
+ if (printer->photo_size != _IPP_MEDIA_SIZE_NONE)
+ ready[num_ready ++] = media_supported[printer->photo_size];
+
+ if (num_ready)
+ ippAddStrings(client->response, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "media-ready", num_ready, NULL, ready);
+ else
+ ippAddOutOfBand(client->response, IPP_TAG_PRINTER, IPP_TAG_NOVALUE, "media-ready");
+ }
+
+ if (!ra || cupsArrayFind(ra, "printer-config-change-date-time"))
+ ippAddDate(client->response, IPP_TAG_PRINTER, "printer-config-change-date-time", ippTimeToDate(printer->config_time));
+
+ if (!ra || cupsArrayFind(ra, "printer-config-change-time"))
+ ippAddInteger(client->response, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "printer-config-change-time", (int)(printer->config_time - printer->start_time));
+
+ if (!ra || cupsArrayFind(ra, "printer-current-time"))
+ ippAddDate(client->response, IPP_TAG_PRINTER, "printer-current-time", ippTimeToDate(time(NULL)));
+
+
if (!ra || cupsArrayFind(ra, "printer-state"))
ippAddInteger(client->response, IPP_TAG_PRINTER, IPP_TAG_ENUM,
"printer-state", printer->state);
+ if (!ra || cupsArrayFind(ra, "printer-state-change-date-time"))
+ ippAddDate(client->response, IPP_TAG_PRINTER, "printer-state-change-date-time", ippTimeToDate(printer->state_time));
+
+ if (!ra || cupsArrayFind(ra, "printer-state-change-time"))
+ ippAddInteger(client->response, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "printer-state-change-time", (int)(printer->state_time - printer->start_time));
+
+ if (!ra || cupsArrayFind(ra, "printer-state-message"))
+ {
+ static const char * const messages[] = { "Idle.", "Printing.", "Stopped." };
+
+ ippAddString(client->response, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_TEXT), "printer-state-message", NULL, messages[printer->state - IPP_PSTATE_IDLE]);
+ }
+
if (!ra || cupsArrayFind(ra, "printer-state-reasons"))
{
- if (printer->state_reasons == _IPP_PSTATE_NONE)
+ if (printer->state_reasons == _IPP_PREASON_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
{
int num_reasons = 0;/* Number of reasons */
const char *reasons[32]; /* Reason strings */
- if (printer->state_reasons & _IPP_PSTATE_OTHER)
+ if (printer->state_reasons & _IPP_PREASON_OTHER)
reasons[num_reasons ++] = "other";
- if (printer->state_reasons & _IPP_PSTATE_COVER_OPEN)
+ if (printer->state_reasons & _IPP_PREASON_COVER_OPEN)
reasons[num_reasons ++] = "cover-open";
- if (printer->state_reasons & _IPP_PSTATE_INPUT_TRAY_MISSING)
+ if (printer->state_reasons & _IPP_PREASON_INPUT_TRAY_MISSING)
reasons[num_reasons ++] = "input-tray-missing";
- if (printer->state_reasons & _IPP_PSTATE_MARKER_SUPPLY_EMPTY)
+ if (printer->state_reasons & _IPP_PREASON_MARKER_SUPPLY_EMPTY)
reasons[num_reasons ++] = "marker-supply-empty-warning";
- if (printer->state_reasons & _IPP_PSTATE_MARKER_SUPPLY_LOW)
+ if (printer->state_reasons & _IPP_PREASON_MARKER_SUPPLY_LOW)
reasons[num_reasons ++] = "marker-supply-low-report";
- if (printer->state_reasons & _IPP_PSTATE_MARKER_WASTE_ALMOST_FULL)
+ if (printer->state_reasons & _IPP_PREASON_MARKER_WASTE_ALMOST_FULL)
reasons[num_reasons ++] = "marker-waste-almost-full-report";
- if (printer->state_reasons & _IPP_PSTATE_MARKER_WASTE_FULL)
+ if (printer->state_reasons & _IPP_PREASON_MARKER_WASTE_FULL)
reasons[num_reasons ++] = "marker-waste-full-warning";
- if (printer->state_reasons & _IPP_PSTATE_MEDIA_EMPTY)
+ if (printer->state_reasons & _IPP_PREASON_MEDIA_EMPTY)
reasons[num_reasons ++] = "media-empty-warning";
- if (printer->state_reasons & _IPP_PSTATE_MEDIA_JAM)
+ if (printer->state_reasons & _IPP_PREASON_MEDIA_JAM)
reasons[num_reasons ++] = "media-jam-warning";
- if (printer->state_reasons & _IPP_PSTATE_MEDIA_LOW)
+ if (printer->state_reasons & _IPP_PREASON_MEDIA_LOW)
reasons[num_reasons ++] = "media-low-report";
- if (printer->state_reasons & _IPP_PSTATE_MEDIA_NEEDED)
+ if (printer->state_reasons & _IPP_PREASON_MEDIA_NEEDED)
reasons[num_reasons ++] = "media-needed-report";
- if (printer->state_reasons & _IPP_PSTATE_MOVING_TO_PAUSED)
+ if (printer->state_reasons & _IPP_PREASON_MOVING_TO_PAUSED)
reasons[num_reasons ++] = "moving-to-paused";
- if (printer->state_reasons & _IPP_PSTATE_PAUSED)
+ if (printer->state_reasons & _IPP_PREASON_PAUSED)
reasons[num_reasons ++] = "paused";
- if (printer->state_reasons & _IPP_PSTATE_SPOOL_AREA_FULL)
+ if (printer->state_reasons & _IPP_PREASON_SPOOL_AREA_FULL)
reasons[num_reasons ++] = "spool-area-full";
- if (printer->state_reasons & _IPP_PSTATE_TONER_EMPTY)
+ if (printer->state_reasons & _IPP_PREASON_TONER_EMPTY)
reasons[num_reasons ++] = "toner-empty-warning";
- if (printer->state_reasons & _IPP_PSTATE_TONER_LOW)
+ if (printer->state_reasons & _IPP_PREASON_TONER_LOW)
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);
}
}
+ if (!ra || cupsArrayFind(ra, "printer-supply"))
+ {
+ int i; /* Looping var */
+ char buffer[256]; /* Supply value buffer */
+ ipp_attribute_t *attr = NULL; /* Attribute */
+ static const char * const colorants[] = { "cyan", "magenta", "yellow", "black", "unknown" };
+
+ for (i = 0; i < 5; i ++)
+ {
+ snprintf(buffer, sizeof(buffer), "index=%d;class=%s;type=%s;unit=percent;maxcapacity=100;level=%d;colorantname=%s;", i + 1, i < 4 ? "supplyThatIsConsumed" : "receptacleThatIsFilled", i < 4 ? "toner" : "wasteToner", printer->supplies[i], colorants[i]);
+
+ if (!attr)
+ attr = ippAddOctetString(client->response, IPP_TAG_PRINTER, "printer-supply", buffer, (int)strlen(buffer));
+ else
+ ippSetOctetString(client->response, &attr, i, buffer, (int)strlen(buffer));
+ }
+ }
+
if (!ra || cupsArrayFind(ra, "printer-up-time"))
- ippAddInteger(client->response, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
- "printer-up-time", (int)time(NULL));
+ ippAddInteger(client->response, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "printer-up-time", (int)(time(NULL) - printer->start_time));
if (!ra || cupsArrayFind(ra, "queued-job-count"))
ippAddInteger(client->response, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
- "queued-job-count",
- printer->active_job &&
- printer->active_job->state < IPP_JSTATE_CANCELED);
+ "queued-job-count", printer->active_job && printer->active_job->state < IPP_JSTATE_CANCELED);
_cupsRWUnlock(&(printer->rwlock));
@@ -2669,6 +3263,20 @@ ipp_get_printer_attributes(
/*
+ * 'ipp_identify_printer()' - Beep or display a message.
+ */
+
+static void
+ipp_identify_printer(
+ _ipp_client_t *client) /* I - Client */
+{
+ /* TODO: Do something */
+
+ respond_ipp(client, IPP_STATUS_OK, NULL);
+}
+
+
+/*
* 'ipp_print_job()' - Create a job object with an attached document.
*/
@@ -2717,24 +3325,10 @@ ipp_print_job(_ipp_client_t *client) /* I - Client */
* Create a file for the request data...
*/
- if (!_cups_strcasecmp(job->format, "image/jpeg"))
- snprintf(filename, sizeof(filename), "%s/%d.jpg",
- client->printer->directory, job->id);
- else if (!_cups_strcasecmp(job->format, "image/png"))
- snprintf(filename, sizeof(filename), "%s/%d.png",
- client->printer->directory, job->id);
- else if (!_cups_strcasecmp(job->format, "image/pwg-raster"))
- snprintf(filename, sizeof(filename), "%s/%d.ras",
- client->printer->directory, job->id);
- else if (!_cups_strcasecmp(job->format, "application/pdf"))
- snprintf(filename, sizeof(filename), "%s/%d.pdf",
- client->printer->directory, job->id);
- else if (!_cups_strcasecmp(job->format, "application/postscript"))
- snprintf(filename, sizeof(filename), "%s/%d.ps",
- client->printer->directory, job->id);
- else
- snprintf(filename, sizeof(filename), "%s/%d.prn",
- client->printer->directory, job->id);
+ create_job_filename(client->printer, job, filename, sizeof(filename));
+
+ if (Verbosity)
+ fprintf(stderr, "Creating job file \"%s\", format \"%s\".\n", filename, job->format);
if ((job->fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0600)) < 0)
{
@@ -2747,7 +3341,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 */
@@ -2804,7 +3398,6 @@ ipp_print_job(_ipp_client_t *client) /* I - Client */
* Process the job...
*/
-#if 0
if (!_cupsThreadCreate((_cups_thread_func_t)process_job, job))
{
job->state = IPP_JSTATE_ABORTED;
@@ -2812,10 +3405,6 @@ ipp_print_job(_ipp_client_t *client) /* I - Client */
return;
}
-#else
- process_job(job);
-#endif /* 0 */
-
/*
* Return the job info...
*/
@@ -2825,6 +3414,7 @@ ipp_print_job(_ipp_client_t *client) /* I - Client */
ra = cupsArrayNew((cups_array_func_t)strcmp, NULL);
cupsArrayAdd(ra, "job-id");
cupsArrayAdd(ra, "job-state");
+ cupsArrayAdd(ra, "job-state-message");
cupsArrayAdd(ra, "job-state-reasons");
cupsArrayAdd(ra, "job-uri");
@@ -2952,16 +3542,16 @@ ipp_print_uri(_ipp_client_t *client) /* I - Client */
* Create a file for the request data...
*/
- if (!_cups_strcasecmp(job->format, "image/jpeg"))
+ if (!strcasecmp(job->format, "image/jpeg"))
snprintf(filename, sizeof(filename), "%s/%d.jpg",
client->printer->directory, job->id);
- else if (!_cups_strcasecmp(job->format, "image/png"))
+ else if (!strcasecmp(job->format, "image/png"))
snprintf(filename, sizeof(filename), "%s/%d.png",
client->printer->directory, job->id);
- else if (!_cups_strcasecmp(job->format, "application/pdf"))
+ else if (!strcasecmp(job->format, "application/pdf"))
snprintf(filename, sizeof(filename), "%s/%d.pdf",
client->printer->directory, job->id);
- else if (!_cups_strcasecmp(job->format, "application/postscript"))
+ else if (!strcasecmp(job->format, "application/postscript"))
snprintf(filename, sizeof(filename), "%s/%d.ps",
client->printer->directory, job->id);
else
@@ -2991,7 +3581,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 +3662,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 */
@@ -3217,14 +3807,17 @@ ipp_send_document(_ipp_client_t *client)/* I - Client */
return;
}
+ copy_attributes(job->attrs, client->request, NULL, IPP_TAG_JOB, 0);
+
/*
* Get the document format for the job...
*/
_cupsRWLockWrite(&(client->printer->rwlock));
- if ((attr = ippFindAttribute(job->attrs, "document-format",
- IPP_TAG_MIMETYPE)) != NULL)
+ if ((attr = ippFindAttribute(job->attrs, "document-format-detected", IPP_TAG_MIMETYPE)) != NULL)
+ job->format = ippGetString(attr, 0, NULL);
+ else if ((attr = ippFindAttribute(job->attrs, "document-format-supplied", IPP_TAG_MIMETYPE)) != NULL)
job->format = ippGetString(attr, 0, NULL);
else
job->format = "application/octet-stream";
@@ -3233,21 +3826,10 @@ ipp_send_document(_ipp_client_t *client)/* I - Client */
* Create a file for the request data...
*/
- if (!_cups_strcasecmp(job->format, "image/jpeg"))
- snprintf(filename, sizeof(filename), "%s/%d.jpg",
- client->printer->directory, job->id);
- else if (!_cups_strcasecmp(job->format, "image/png"))
- snprintf(filename, sizeof(filename), "%s/%d.png",
- client->printer->directory, job->id);
- else if (!_cups_strcasecmp(job->format, "application/pdf"))
- snprintf(filename, sizeof(filename), "%s/%d.pdf",
- client->printer->directory, job->id);
- else if (!_cups_strcasecmp(job->format, "application/postscript"))
- snprintf(filename, sizeof(filename), "%s/%d.ps",
- client->printer->directory, job->id);
- else
- snprintf(filename, sizeof(filename), "%s/%d.prn",
- client->printer->directory, job->id);
+ create_job_filename(client->printer, job, filename, sizeof(filename));
+
+ if (Verbosity)
+ fprintf(stderr, "Creating job file \"%s\", format \"%s\".\n", filename, job->format);
job->fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0600);
@@ -3264,7 +3846,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 */
@@ -3523,16 +4105,16 @@ ipp_send_uri(_ipp_client_t *client) /* I - Client */
* Create a file for the request data...
*/
- if (!_cups_strcasecmp(job->format, "image/jpeg"))
+ if (!strcasecmp(job->format, "image/jpeg"))
snprintf(filename, sizeof(filename), "%s/%d.jpg",
client->printer->directory, job->id);
- else if (!_cups_strcasecmp(job->format, "image/png"))
+ else if (!strcasecmp(job->format, "image/png"))
snprintf(filename, sizeof(filename), "%s/%d.png",
client->printer->directory, job->id);
- else if (!_cups_strcasecmp(job->format, "application/pdf"))
+ else if (!strcasecmp(job->format, "application/pdf"))
snprintf(filename, sizeof(filename), "%s/%d.pdf",
client->printer->directory, job->id);
- else if (!_cups_strcasecmp(job->format, "application/postscript"))
+ else if (!strcasecmp(job->format, "application/postscript"))
snprintf(filename, sizeof(filename), "%s/%d.ps",
client->printer->directory, job->id);
else
@@ -3566,7 +4148,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 +4229,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 */
@@ -3736,6 +4318,40 @@ ipp_validate_job(_ipp_client_t *client) /* I - Client */
/*
+ * 'parse_options()' - Parse URL options into CUPS options.
+ *
+ * The client->options string is destroyed by this function.
+ */
+
+static int /* O - Number of options */
+parse_options(_ipp_client_t *client, /* I - Client */
+ cups_option_t **options) /* O - Options */
+{
+ char *name, /* Name */
+ *value, /* Value */
+ *next; /* Next name=value pair */
+ int num_options = 0; /* Number of options */
+
+
+ *options = NULL;
+
+ for (name = client->options; name && *name; name = next)
+ {
+ if ((value = strchr(name, '=')) == NULL)
+ break;
+
+ *value++ = '\0';
+ if ((next = strchr(value, '&')) != NULL)
+ *next++ = '\0';
+
+ num_options = cupsAddOption(name, value, num_options, options);
+ }
+
+ return (num_options);
+}
+
+
+/*
* 'process_client()' - Process client requests on a thread.
*/
@@ -3746,9 +4362,41 @@ process_client(_ipp_client_t *client) /* I - Client */
* Loop until we are out of requests or timeout (30 seconds)...
*/
+#ifdef HAVE_SSL
+ int first_time = 1; /* First time request? */
+#endif /* HAVE_SSL */
+
while (httpWait(client->http, 30000))
+ {
+#ifdef HAVE_SSL
+ if (first_time)
+ {
+ /*
+ * See if we need to negotiate a TLS connection...
+ */
+
+ char buf[1]; /* First byte from client */
+
+ if (recv(httpGetFd(client->http), buf, 1, MSG_PEEK) == 1 && (!buf[0] || !strchr("DGHOPT", buf[0])))
+ {
+ fprintf(stderr, "%s Starting HTTPS session.\n", client->hostname);
+
+ if (httpEncryption(client->http, HTTP_ENCRYPTION_ALWAYS))
+ {
+ fprintf(stderr, "%s Unable to encrypt connection: %s\n", client->hostname, cupsLastErrorString());
+ break;
+ }
+
+ fprintf(stderr, "%s Connection now encrypted.\n", client->hostname);
+ }
+
+ first_time = 0;
+ }
+#endif /* HAVE_SSL */
+
if (!process_http(client))
break;
+ }
/*
* Close the conection to the client and return...
@@ -3854,13 +4502,17 @@ process_http(_ipp_client_t *client) /* I - Client connection */
if (httpSeparateURI(HTTP_URI_CODING_MOST, uri, scheme, sizeof(scheme),
userpass, sizeof(userpass),
hostname, sizeof(hostname), &port,
- client->uri, sizeof(client->uri)) < HTTP_URI_STATUS_OK)
+ client->uri, sizeof(client->uri)) < HTTP_URI_STATUS_OK &&
+ (http_state != HTTP_STATE_OPTIONS || strcmp(uri, "*")))
{
fprintf(stderr, "%s Bad URI \"%s\".\n", client->hostname, uri);
respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0);
return (0);
}
+ if ((client->options = strchr(client->uri, '?')) != NULL)
+ *(client->options)++ = '\0';
+
/*
* Process the request...
*/
@@ -3895,9 +4547,28 @@ process_http(_ipp_client_t *client) /* I - Client connection */
* Handle HTTP Upgrade...
*/
- if (!_cups_strcasecmp(httpGetField(client->http, HTTP_FIELD_CONNECTION),
+ if (!strcasecmp(httpGetField(client->http, HTTP_FIELD_CONNECTION),
"Upgrade"))
{
+#ifdef HAVE_SSL
+ if (strstr(httpGetField(client->http, HTTP_FIELD_UPGRADE), "TLS/") != NULL && !httpIsEncrypted(client->http))
+ {
+ if (!respond_http(client, HTTP_STATUS_SWITCHING_PROTOCOLS, NULL, NULL, 0))
+ return (0);
+
+ fprintf(stderr, "%s Upgrading to encrypted connection.\n", client->hostname);
+
+ if (httpEncryption(client->http, HTTP_ENCRYPTION_REQUIRED))
+ {
+ fprintf(stderr, "%s Unable to encrypt connection: %s\n", client->hostname, cupsLastErrorString());
+ return (0);
+ }
+
+ fprintf(stderr, "%s Connection now encrypted.\n", client->hostname);
+ }
+ else
+#endif /* HAVE_SSL */
+
if (!respond_http(client, HTTP_STATUS_NOT_IMPLEMENTED, NULL, NULL, 0))
return (0);
}
@@ -3940,7 +4611,7 @@ process_http(_ipp_client_t *client) /* I - Client connection */
{
case HTTP_STATE_OPTIONS :
/*
- * Do HEAD/OPTIONS command...
+ * Do OPTIONS command...
*/
return (respond_http(client, HTTP_STATUS_OK, NULL, NULL, 0));
@@ -3948,11 +4619,10 @@ process_http(_ipp_client_t *client) /* I - Client connection */
case HTTP_STATE_HEAD :
if (!strcmp(client->uri, "/icon.png"))
return (respond_http(client, HTTP_STATUS_OK, NULL, "image/png", 0));
- else if (!strcmp(client->uri, "/"))
+ else if (!strcmp(client->uri, "/") || !strcmp(client->uri, "/media") || !strcmp(client->uri, "/supplies"))
return (respond_http(client, HTTP_STATUS_OK, NULL, "text/html", 0));
else
return (respond_http(client, HTTP_STATUS_NOT_FOUND, NULL, NULL, 0));
- break;
case HTTP_STATE_GET :
if (!strcmp(client->uri, "/icon.png"))
@@ -3972,14 +4642,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);
@@ -3994,30 +4664,300 @@ process_http(_ipp_client_t *client) /* I - Client connection */
* Show web status page...
*/
+ _ipp_job_t *job; /* Current job */
+ int i; /* Looping var */
+ _ipp_preason_t reason; /* Current reason */
+ static const char * const reasons[] =
+ { /* Reason strings */
+ "Other",
+ "Cover Open",
+ "Input Tray Missing",
+ "Marker Supply Empty",
+ "Marker Supply Low",
+ "Marker Waste Almost Full",
+ "Marker Waste Full",
+ "Media Empty",
+ "Media Jam",
+ "Media Low",
+ "Media Needed",
+ "Moving to Paused",
+ "Paused",
+ "Spool Area Full",
+ "Toner Empty",
+ "Toner Low"
+ };
+
if (!respond_http(client, HTTP_STATUS_OK, encoding, "text/html", 0))
return (0);
+ html_header(client, client->printer->name);
html_printf(client,
- "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" "
- "\"http://www.w3.org/TR/html4/strict.dtd\">\n"
- "<html>\n"
- "<head>\n"
- "<title>%s</title>\n"
- "<link rel=\"SHORTCUT ICON\" href=\"/icon.png\" "
- "type=\"image/png\">\n"
- "</head>\n"
- "<body>\n"
- "</body>\n"
- "<h1><img align=\"right\" src=\"/icon.png\">%s</h1>\n"
- "<p>%s, %d job(s).</p>\n"
- "</body>\n"
- "</html>\n",
- client->printer->name, client->printer->name,
- client->printer->state == IPP_PSTATE_IDLE ? "Idle" :
- client->printer->state == IPP_PSTATE_PROCESSING ?
- "Printing" : "Stopped",
- cupsArrayCount(client->printer->jobs));
- httpWrite2(client->http, "", 0);
+ "<p><img align=\"right\" src=\"/icon.png\" width=\"64\" height=\"64\"><b>ippserver (" CUPS_SVERSION ")</b></p>\n"
+ "<p>%s, %d job(s).", client->printer->state == IPP_PSTATE_IDLE ? "Idle" : client->printer->state == IPP_PSTATE_PROCESSING ? "Printing" : "Stopped", cupsArrayCount(client->printer->jobs));
+ for (i = 0, reason = 1; i < (int)(sizeof(reasons) / sizeof(reasons[0])); i ++, reason <<= 1)
+ if (client->printer->state_reasons & reason)
+ html_printf(client, "\n<br>&nbsp;&nbsp;&nbsp;&nbsp;%s", reasons[i]);
+ html_printf(client, "</p>\n");
+
+ if (cupsArrayCount(client->printer->jobs) > 0)
+ {
+ _cupsRWLockRead(&(client->printer->rwlock));
+
+ html_printf(client, "<table class=\"striped\" summary=\"Jobs\"><thead><tr><th>Job #</th><th>Name</th><th>Owner</th><th>When</th></tr></thead><tbody>\n");
+ for (job = (_ipp_job_t *)cupsArrayFirst(client->printer->jobs); job; job = (_ipp_job_t *)cupsArrayNext(client->printer->jobs))
+ {
+ char when[256], /* When job queued/started/finished */
+ hhmmss[64]; /* Time HH:MM:SS */
+
+ switch (job->state)
+ {
+ case IPP_JSTATE_PENDING :
+ case IPP_JSTATE_HELD :
+ snprintf(when, sizeof(when), "Queued at %s", time_string(job->created, hhmmss, sizeof(hhmmss)));
+ break;
+ case IPP_JSTATE_PROCESSING :
+ case IPP_JSTATE_STOPPED :
+ snprintf(when, sizeof(when), "Started at %s", time_string(job->processing, hhmmss, sizeof(hhmmss)));
+ break;
+ case IPP_JSTATE_ABORTED :
+ snprintf(when, sizeof(when), "Aborted at %s", time_string(job->completed, hhmmss, sizeof(hhmmss)));
+ break;
+ case IPP_JSTATE_CANCELED :
+ snprintf(when, sizeof(when), "Canceled at %s", time_string(job->completed, hhmmss, sizeof(hhmmss)));
+ break;
+ case IPP_JSTATE_COMPLETED :
+ snprintf(when, sizeof(when), "Completed at %s", time_string(job->completed, hhmmss, sizeof(hhmmss)));
+ break;
+ }
+
+ html_printf(client, "<tr><td>%d</td><td>%s</td><td>%s</td><td>%s</td></tr>\n", job->id, job->name, job->username, when);
+ }
+ html_printf(client, "</tbody></table>\n");
+
+ _cupsRWUnlock(&(client->printer->rwlock));
+ }
+ html_footer(client);
+
+ return (1);
+ }
+ else if (!strcmp(client->uri, "/media"))
+ {
+ /*
+ * Show web media page...
+ */
+
+ int i, /* Looping var */
+ num_options; /* Number of form options */
+ cups_option_t *options; /* Form options */
+ static const char * const sizes[] =
+ { /* Size strings */
+ "ISO A4",
+ "ISO A5",
+ "ISO A6",
+ "DL Envelope",
+ "US Legal",
+ "US Letter",
+ "#10 Envelope",
+ "3x5 Photo",
+ "3.5x5 Photo",
+ "4x6 Photo",
+ "5x7 Photo"
+ };
+ static const char * const types[] =
+ /* Type strings */
+ {
+ "Auto",
+ "Cardstock",
+ "Envelope",
+ "Labels",
+ "Other",
+ "Glossy Photo",
+ "High-Gloss Photo",
+ "Matte Photo",
+ "Satin Photo",
+ "Semi-Gloss Photo",
+ "Plain",
+ "Letterhead",
+ "Transparency"
+ };
+ static const int sheets[] = /* Number of sheets */
+ {
+ 250,
+ 100,
+ 25,
+ 5,
+ 0
+ };
+
+ if (!respond_http(client, HTTP_STATUS_OK, encoding, "text/html", 0))
+ return (0);
+
+ html_header(client, client->printer->name);
+
+ if ((num_options = parse_options(client, &options)) > 0)
+ {
+ /*
+ * WARNING: A real printer/server implementation MUST NOT implement
+ * media updates via a GET request - GET requests are supposed to be
+ * idempotent (without side-effects) and we obviously are not
+ * authenticating access here. This form is provided solely to
+ * enable testing and development!
+ */
+
+ const char *val; /* Form value */
+
+ if ((val = cupsGetOption("main_size", num_options, options)) != NULL)
+ client->printer->main_size = atoi(val);
+ if ((val = cupsGetOption("main_type", num_options, options)) != NULL)
+ client->printer->main_type = atoi(val);
+ if ((val = cupsGetOption("main_level", num_options, options)) != NULL)
+ client->printer->main_level = atoi(val);
+
+ if ((val = cupsGetOption("envelope_size", num_options, options)) != NULL)
+ client->printer->envelope_size = atoi(val);
+ if ((val = cupsGetOption("envelope_level", num_options, options)) != NULL)
+ client->printer->envelope_level = atoi(val);
+
+ if ((val = cupsGetOption("photo_size", num_options, options)) != NULL)
+ client->printer->photo_size = atoi(val);
+ if ((val = cupsGetOption("photo_type", num_options, options)) != NULL)
+ client->printer->photo_type = atoi(val);
+ if ((val = cupsGetOption("photo_level", num_options, options)) != NULL)
+ client->printer->photo_level = atoi(val);
+
+ if ((client->printer->main_level < 100 && client->printer->main_level > 0) || (client->printer->envelope_level < 25 && client->printer->envelope_level > 0) || (client->printer->photo_level < 25 && client->printer->photo_level > 0))
+ client->printer->state_reasons |= _IPP_PREASON_MEDIA_LOW;
+ else
+ client->printer->state_reasons &= (_ipp_preason_t)~_IPP_PREASON_MEDIA_LOW;
+
+ if ((client->printer->main_level == 0 && client->printer->main_size > _IPP_MEDIA_SIZE_NONE) || (client->printer->envelope_level == 0 && client->printer->envelope_size > _IPP_MEDIA_SIZE_NONE) || (client->printer->photo_level == 0 && client->printer->photo_size > _IPP_MEDIA_SIZE_NONE))
+ {
+ client->printer->state_reasons |= _IPP_PREASON_MEDIA_EMPTY;
+ if (client->printer->active_job)
+ client->printer->state_reasons |= _IPP_PREASON_MEDIA_NEEDED;
+ }
+ else
+ client->printer->state_reasons &= (_ipp_preason_t)~(_IPP_PREASON_MEDIA_EMPTY | _IPP_PREASON_MEDIA_NEEDED);
+
+ html_printf(client, "<blockquote>Media updated.</blockquote>\n");
+ }
+
+ html_printf(client, "<form method=\"GET\" action=\"/media\">\n");
+
+ html_printf(client, "<table class=\"form\" summary=\"Media\">\n");
+ html_printf(client, "<tr><th>Main Tray:</th><td><select name=\"main_size\"><option value=\"-1\">None</option>");
+ for (i = 0; i < (int)(sizeof(sizes) / sizeof(sizes[0])); i ++)
+ if (!strstr(sizes[i], "Envelope") && !strstr(sizes[i], "Photo"))
+ html_printf(client, "<option value=\"%d\"%s>%s</option>", i, i == client->printer->main_size ? " selected" : "", sizes[i]);
+ html_printf(client, "</select> <select name=\"main_type\"><option value=\"-1\">None</option>");
+ for (i = 0; i < (int)(sizeof(types) / sizeof(types[0])); i ++)
+ if (!strstr(types[i], "Photo"))
+ html_printf(client, "<option value=\"%d\"%s>%s</option>", i, i == client->printer->main_type ? " selected" : "", types[i]);
+ html_printf(client, "</select> <select name=\"main_level\">");
+ for (i = 0; i < (int)(sizeof(sheets) / sizeof(sheets[0])); i ++)
+ html_printf(client, "<option value=\"%d\"%s>%d sheets</option>", sheets[i], sheets[i] == client->printer->main_level ? " selected" : "", sheets[i]);
+ html_printf(client, "</select></td></tr>\n");
+
+ html_printf(client,
+ "<tr><th>Envelope Feeder:</th><td><select name=\"envelope_size\"><option value=\"-1\">None</option>");
+ for (i = 0; i < (int)(sizeof(sizes) / sizeof(sizes[0])); i ++)
+ if (strstr(sizes[i], "Envelope"))
+ html_printf(client, "<option value=\"%d\"%s>%s</option>", i, i == client->printer->envelope_size ? " selected" : "", sizes[i]);
+ html_printf(client, "</select> <select name=\"envelope_level\">");
+ for (i = 0; i < (int)(sizeof(sheets) / sizeof(sheets[0])); i ++)
+ html_printf(client, "<option value=\"%d\"%s>%d sheets</option>", sheets[i], sheets[i] == client->printer->envelope_level ? " selected" : "", sheets[i]);
+ html_printf(client, "</select></td></tr>\n");
+
+ html_printf(client,
+ "<tr><th>Photo Tray:</th><td><select name=\"photo_size\"><option value=\"-1\">None</option>");
+ for (i = 0; i < (int)(sizeof(sizes) / sizeof(sizes[0])); i ++)
+ if (strstr(sizes[i], "Photo"))
+ html_printf(client, "<option value=\"%d\"%s>%s</option>", i, i == client->printer->photo_size ? " selected" : "", sizes[i]);
+ html_printf(client, "</select> <select name=\"photo_type\"><option value=\"-1\">None</option>");
+ for (i = 0; i < (int)(sizeof(types) / sizeof(types[0])); i ++)
+ if (strstr(types[i], "Photo"))
+ html_printf(client, "<option value=\"%d\"%s>%s</option>", i, i == client->printer->photo_type ? " selected" : "", types[i]);
+ html_printf(client, "</select> <select name=\"photo_level\">");
+ for (i = 0; i < (int)(sizeof(sheets) / sizeof(sheets[0])); i ++)
+ html_printf(client, "<option value=\"%d\"%s>%d sheets</option>", sheets[i], sheets[i] == client->printer->photo_level ? " selected" : "", sheets[i]);
+ html_printf(client, "</select></td></tr>\n");
+
+ html_printf(client, "<tr><td></td><td><input type=\"submit\" value=\"Update Media\"></td></tr></table></form>\n");
+ html_footer(client);
+
+ return (1);
+ }
+ else if (!strcmp(client->uri, "/supplies"))
+ {
+ /*
+ * Show web supplies page...
+ */
+
+ int i, j, /* Looping vars */
+ num_options; /* Number of form options */
+ cups_option_t *options; /* Form options */
+ static const int levels[] = { 0, 5, 10, 25, 50, 75, 90, 95, 100 };
+
+ if (!respond_http(client, HTTP_STATUS_OK, encoding, "text/html", 0))
+ return (0);
+
+ html_header(client, client->printer->name);
+
+ if ((num_options = parse_options(client, &options)) > 0)
+ {
+ /*
+ * WARNING: A real printer/server implementation MUST NOT implement
+ * supply updates via a GET request - GET requests are supposed to be
+ * idempotent (without side-effects) and we obviously are not
+ * authenticating access here. This form is provided solely to
+ * enable testing and development!
+ */
+
+ char name[64]; /* Form field */
+ const char *val; /* Form value */
+
+ client->printer->state_reasons &= (_ipp_preason_t)~(_IPP_PREASON_MARKER_SUPPLY_EMPTY | _IPP_PREASON_MARKER_SUPPLY_LOW | _IPP_PREASON_MARKER_WASTE_ALMOST_FULL | _IPP_PREASON_MARKER_WASTE_FULL | _IPP_PREASON_TONER_EMPTY | _IPP_PREASON_TONER_LOW);
+
+ for (i = 0; i < (int)(sizeof(printer_supplies) / sizeof(printer_supplies[0])); i ++)
+ {
+ snprintf(name, sizeof(name), "supply_%d", i);
+ if ((val = cupsGetOption(name, num_options, options)) != NULL)
+ {
+ int level = client->printer->supplies[i] = atoi(val);
+ /* New level */
+
+ if (i < 4)
+ {
+ if (level == 0)
+ client->printer->state_reasons |= _IPP_PREASON_TONER_EMPTY;
+ else if (level < 10)
+ client->printer->state_reasons |= _IPP_PREASON_TONER_LOW;
+ }
+ else
+ {
+ if (level == 100)
+ client->printer->state_reasons |= _IPP_PREASON_MARKER_WASTE_FULL;
+ else if (level > 90)
+ client->printer->state_reasons |= _IPP_PREASON_MARKER_WASTE_ALMOST_FULL;
+ }
+ }
+ }
+
+ html_printf(client, "<blockquote>Supplies updated.</blockquote>\n");
+ }
+
+ html_printf(client, "<form method=\"GET\" action=\"/supplies\">\n");
+
+ html_printf(client, "<table class=\"form\" summary=\"Supplies\">\n");
+ for (i = 0; i < (int)(sizeof(printer_supplies) / sizeof(printer_supplies[0])); i ++)
+ {
+ html_printf(client, "<tr><th>%s:</th><td><select name=\"supply_%d\">", printer_supplies[i], i);
+ for (j = 0; j < (int)(sizeof(levels) / sizeof(levels[0])); j ++)
+ html_printf(client, "<option value=\"%d\"%s>%d%%</option>", levels[j], levels[j] == client->printer->supplies[i] ? " selected" : "", levels[j]);
+ html_printf(client, "</select></td></tr>\n");
+ }
+ html_printf(client, "<tr><td></td><td><input type=\"submit\" value=\"Update Supplies\"></td></tr>\n</table>\n</form>\n");
+ html_footer(client);
return (1);
}
@@ -4178,8 +5118,8 @@ process_ipp(_ipp_client_t *client) /* I - Client */
uri = NULL;
if (charset &&
- _cups_strcasecmp(ippGetString(charset, 0, NULL), "us-ascii") &&
- _cups_strcasecmp(ippGetString(charset, 0, NULL), "utf-8"))
+ strcasecmp(ippGetString(charset, 0, NULL), "us-ascii") &&
+ strcasecmp(ippGetString(charset, 0, NULL), "utf-8"))
{
/*
* Bad character set...
@@ -4271,6 +5211,14 @@ process_ipp(_ipp_client_t *client) /* I - Client */
ipp_get_printer_attributes(client);
break;
+ case IPP_OP_CLOSE_JOB :
+ ipp_close_job(client);
+ break;
+
+ case IPP_OP_IDENTIFY_PRINTER :
+ ipp_identify_printer(client);
+ break;
+
default :
respond_ipp(client, IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED,
"Operation not supported.");
@@ -4302,6 +5250,16 @@ process_job(_ipp_job_t *job) /* I - Job */
{
job->state = IPP_JSTATE_PROCESSING;
job->printer->state = IPP_PSTATE_PROCESSING;
+ job->processing = time(NULL);
+
+ while (job->printer->state_reasons & _IPP_PREASON_MEDIA_EMPTY)
+ {
+ job->printer->state_reasons |= _IPP_PREASON_MEDIA_NEEDED;
+
+ sleep(1);
+ }
+
+ job->printer->state_reasons &= (_ipp_preason_t)~_IPP_PREASON_MEDIA_NEEDED;
if (job->printer->command)
{
@@ -4313,19 +5271,79 @@ process_job(_ipp_job_t *job) /* I - Job */
status; /* Exit status */
time_t start, /* Start time */
end; /* End time */
+ char *myargv[3], /* Command-line arguments */
+ *myenvp[200]; /* Environment variables */
+ int myenvc; /* Number of environment variables */
+ ipp_attribute_t *attr; /* Job attribute */
+ char val[1280], /* IPP_NAME=value */
+ *valptr; /* Pointer into string */
fprintf(stderr, "Running command \"%s %s\".\n", job->printer->command,
job->filename);
time(&start);
+ /*
+ * Setup the command-line arguments...
+ */
+
+ myargv[0] = job->printer->command;
+ myargv[1] = job->filename;
+ myargv[2] = NULL;
+
+ /*
+ * Copy the current environment, then add ENV variables for every Job
+ * attribute...
+ */
+
+ for (myenvc = 0; environ[myenvc] && myenvc < (int)(sizeof(myenvp) / sizeof(myenvp[0]) - 1); myenvc ++)
+ myenvp[myenvc] = strdup(environ[myenvc]);
+
+ for (attr = ippFirstAttribute(job->attrs); attr && myenvc < (int)(sizeof(myenvp) / sizeof(myenvp[0]) - 1); attr = ippNextAttribute(job->attrs))
+ {
+ /*
+ * Convert "attribute-name" to "IPP_ATTRIBUTE_NAME=" and then add the
+ * value(s) from the attribute.
+ */
+
+ const char *name = ippGetName(attr);
+ if (!name)
+ continue;
+
+ valptr = val;
+ *valptr++ = 'I';
+ *valptr++ = 'P';
+ *valptr++ = 'P';
+ *valptr++ = '_';
+ while (*name && valptr < (val + sizeof(val) - 2))
+ {
+ if (*name == '-')
+ *valptr++ = '_';
+ else
+ *valptr++ = (char)toupper(*name & 255);
+
+ name ++;
+ }
+ *valptr++ = '=';
+ ippAttributeString(attr, valptr, sizeof(val) - (size_t)(valptr - val));
+
+ myenvp[myenvc++] = strdup(val);
+ }
+ myenvp[myenvc] = NULL;
+
+ /*
+ * Now run the program...
+ */
+
+#ifdef WIN32
+ status = _spawnvpe(_P_WAIT, job->printer->command, myargv, myenvp);
+#else
if ((pid = fork()) == 0)
{
/*
* Child comes here...
*/
- execlp(job->printer->command, job->printer->command, job->filename,
- (void *)NULL);
+ execve(job->printer->command, myargv, myenvp);
exit(errno);
}
else if (pid < 0)
@@ -4335,32 +5353,48 @@ process_job(_ipp_job_t *job) /* I - Job */
*/
perror("Unable to start job processing command");
+ status = -1;
}
else
{
/*
+ * Free memory used for environment...
+ */
+
+ while (myenvc > 0)
+ free(myenvp[-- myenvc]);
+
+ /*
* Wait for child to complete...
*/
-#ifdef HAVE_WAITPID
+# ifdef HAVE_WAITPID
while (waitpid(pid, &status, 0) < 0);
-#else
+# else
while (wait(&status) < 0);
-#endif /* HAVE_WAITPID */
+# endif /* HAVE_WAITPID */
+ }
+#endif /* WIN32 */
- if (status)
- {
- if (WIFEXITED(status))
- fprintf(stderr, "Command \"%s\" exited with status %d.\n",
- job->printer->command, WEXITSTATUS(status));
- else
- fprintf(stderr, "Command \"%s\" terminated with signal %d.\n",
- job->printer->command, WTERMSIG(status));
- }
+ if (status)
+ {
+#ifndef WIN32
+ if (WIFEXITED(status))
+#endif /* !WIN32 */
+ fprintf(stderr, "Command \"%s\" exited with status %d.\n",
+ job->printer->command, WEXITSTATUS(status));
+#ifndef WIN32
else
- fprintf(stderr, "Command \"%s\" completed successfully.\n",
- job->printer->command);
+ fprintf(stderr, "Command \"%s\" terminated with signal %d.\n",
+ job->printer->command, WTERMSIG(status));
+#endif /* !WIN32 */
+ job->state = IPP_JSTATE_ABORTED;
}
+ else if (status < 0)
+ job->state = IPP_JSTATE_ABORTED;
+ else
+ fprintf(stderr, "Command \"%s\" completed successfully.\n",
+ job->printer->command);
/*
* Make sure processing takes at least 5 seconds...
@@ -4376,12 +5410,12 @@ process_job(_ipp_job_t *job) /* I - Job */
* Sleep for a random amount of time to simulate job processing.
*/
- sleep(5 + (rand() % 11));
+ sleep((unsigned)(5 + (rand() % 11)));
}
if (job->cancel)
job->state = IPP_JSTATE_CANCELED;
- else
+ else if (job->state == IPP_JSTATE_PROCESSING)
job->state = IPP_JSTATE_COMPLETED;
job->completed = time(NULL);
@@ -4405,6 +5439,7 @@ register_printer(
const char *model, /* I - Model name */
const char *formats, /* I - Supported formats */
const char *adminurl, /* I - Web interface URL */
+ const char *uuid, /* I - Printer UUID */
int color, /* I - 1 = color, 0 = monochrome */
int duplex, /* I - 1 = duplex, 0 = simplex */
const char *subtype) /* I - Service subtype */
@@ -4441,6 +5476,10 @@ register_printer(
make);
TXTRecordSetValue(&(printer->ipp_txt), "usb_MDL", (uint8_t)strlen(model),
model);
+ TXTRecordSetValue(&(printer->ipp_txt), "UUID", (uint8_t)strlen(uuid), uuid);
+# ifdef HAVE_SSL
+ TXTRecordSetValue(&(printer->ipp_txt), "TLS", 3, "1.2");
+# endif /* HAVE_SSL */
/*
* Create a shared service reference for Bonjour...
@@ -4501,7 +5540,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...
@@ -4586,7 +5625,7 @@ respond_http(
* Format an error message...
*/
- if (!type && !length && code != HTTP_STATUS_OK)
+ if (!type && !length && code != HTTP_STATUS_OK && code != HTTP_STATUS_SWITCHING_PROTOCOLS)
{
snprintf(message, sizeof(message), "%d - %s\n", code, httpStatus(code));
@@ -4762,7 +5801,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;
@@ -4807,6 +5846,23 @@ run_printer(_ipp_printer_t *printer) /* I - Printer */
/*
+ * 'time_string()' - Return the local time in hours, minutes, and seconds.
+ */
+
+static char *
+time_string(time_t tv, /* I - Time value */
+ char *buffer, /* I - Buffer */
+ size_t bufsize) /* I - Size of buffer */
+{
+ struct tm *curtime = localtime(&tv);
+ /* Local time */
+
+ strftime(buffer, bufsize, "%X", curtime);
+ return (buffer);
+}
+
+
+/*
* 'usage()' - Show program usage.
*/
@@ -4876,8 +5932,7 @@ valid_doc_attributes(
* Check operation attributes...
*/
- if ((attr = ippFindAttribute(client->request, "compression",
- IPP_TAG_ZERO)) != NULL)
+ if ((attr = ippFindAttribute(client->request, "compression", IPP_TAG_ZERO)) != NULL)
{
/*
* If compression is specified, only accept a supported value in a Print-Job
@@ -4899,11 +5954,16 @@ valid_doc_attributes(
}
else
{
- fprintf(stderr, "%s %s compression=\"%s\"\n",
- client->hostname, op_name, compression);
+ fprintf(stderr, "%s %s compression=\"%s\"\n", client->hostname, op_name, compression);
+
+ ippAddString(client->request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "compression-supplied", NULL, compression);
if (strcmp(compression, "none"))
+ {
+ if (Verbosity)
+ fprintf(stderr, "Receiving job file with \"%s\" compression.\n", compression);
httpSetField(client->http, HTTP_FIELD_CONTENT_ENCODING, compression);
+ }
}
}
@@ -4911,8 +5971,7 @@ valid_doc_attributes(
* Is it a format we support?
*/
- if ((attr = ippFindAttribute(client->request, "document-format",
- IPP_TAG_ZERO)) != NULL)
+ if ((attr = ippFindAttribute(client->request, "document-format", IPP_TAG_ZERO)) != NULL)
{
if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_MIMETYPE ||
ippGetGroupTag(attr) != IPP_TAG_OPERATION)
@@ -4926,29 +5985,26 @@ valid_doc_attributes(
fprintf(stderr, "%s %s document-format=\"%s\"\n",
client->hostname, op_name, format);
+
+ ippAddString(client->request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format-supplied", NULL, format);
}
}
else
{
- format = ippGetString(ippFindAttribute(client->printer->attrs,
- "document-format-default",
- IPP_TAG_MIMETYPE), 0, NULL);
+ format = ippGetString(ippFindAttribute(client->printer->attrs, "document-format-default", IPP_TAG_MIMETYPE), 0, NULL);
if (!format)
format = "application/octet-stream"; /* Should never happen */
- attr = ippAddString(client->request, IPP_TAG_JOB, IPP_TAG_MIMETYPE,
- "document-format", NULL, format);
+ attr = ippAddString(client->request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format", NULL, format);
}
- if (!strcmp(format, "application/octet-stream") &&
- (ippGetOperation(client->request) == IPP_OP_PRINT_JOB ||
- ippGetOperation(client->request) == IPP_OP_SEND_DOCUMENT))
+ if (!strcmp(format, "application/octet-stream") && (ippGetOperation(client->request) == IPP_OP_PRINT_JOB || ippGetOperation(client->request) == IPP_OP_SEND_DOCUMENT))
{
/*
- * Auto-type the file using the first 4 bytes of the file...
+ * Auto-type the file using the first 8 bytes of the file...
*/
- unsigned char header[4]; /* First 4 bytes of file */
+ unsigned char header[8]; /* First 8 bytes of file */
memset(header, 0, sizeof(header));
httpPeek(client->http, (char *)header, sizeof(header));
@@ -4957,33 +6013,39 @@ valid_doc_attributes(
format = "application/pdf";
else if (!memcmp(header, "%!", 2))
format = "application/postscript";
- else if (!memcmp(header, "\377\330\377", 3) &&
- header[3] >= 0xe0 && header[3] <= 0xef)
+ else if (!memcmp(header, "\377\330\377", 3) && header[3] >= 0xe0 && header[3] <= 0xef)
format = "image/jpeg";
else if (!memcmp(header, "\211PNG", 4))
format = "image/png";
+ else if (!memcmp(header, "RAS2", 4))
+ format = "image/pwg-raster";
+ else if (!memcmp(header, "UNIRAST", 8))
+ format = "image/urf";
+ else
+ format = NULL;
if (format)
+ {
fprintf(stderr, "%s %s Auto-typed document-format=\"%s\"\n",
client->hostname, op_name, format);
- if (!attr)
- attr = ippAddString(client->request, IPP_TAG_JOB, IPP_TAG_MIMETYPE,
- "document-format", NULL, format);
- else
- ippSetString(client->request, &attr, 0, format);
+ ippAddString(client->request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format-detected", NULL, format);
+ }
}
- if (op != IPP_OP_CREATE_JOB &&
- (supported = ippFindAttribute(client->printer->attrs,
- "document-format-supported",
- IPP_TAG_MIMETYPE)) != NULL &&
- !ippContainsString(supported, format))
+ if (op != IPP_OP_CREATE_JOB && (supported = ippFindAttribute(client->printer->attrs, "document-format-supported", IPP_TAG_MIMETYPE)) != NULL && !ippContainsString(supported, format))
{
respond_unsupported(client, attr);
valid = 0;
}
+ /*
+ * document-name
+ */
+
+ if ((attr = ippFindAttribute(client->request, "document-name", IPP_TAG_NAME)) != NULL)
+ ippAddString(client->request, IPP_TAG_JOB, IPP_TAG_NAME, "document-name-supplied", NULL, ippGetString(attr, 0, NULL));
+
return (valid);
}
@@ -5015,8 +6077,7 @@ valid_job_attributes(
* Check the various job template attributes...
*/
- if ((attr = ippFindAttribute(client->request, "copies",
- IPP_TAG_ZERO)) != NULL)
+ if ((attr = ippFindAttribute(client->request, "copies", IPP_TAG_ZERO)) != NULL)
{
if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_INTEGER ||
ippGetInteger(attr, 0) < 1 || ippGetInteger(attr, 0) > 999)
@@ -5026,8 +6087,7 @@ valid_job_attributes(
}
}
- if ((attr = ippFindAttribute(client->request, "ipp-attribute-fidelity",
- IPP_TAG_ZERO)) != NULL)
+ if ((attr = ippFindAttribute(client->request, "ipp-attribute-fidelity", IPP_TAG_ZERO)) != NULL)
{
if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_BOOLEAN)
{
@@ -5036,8 +6096,7 @@ valid_job_attributes(
}
}
- if ((attr = ippFindAttribute(client->request, "job-hold-until",
- IPP_TAG_ZERO)) != NULL)
+ if ((attr = ippFindAttribute(client->request, "job-hold-until", IPP_TAG_ZERO)) != NULL)
{
if (ippGetCount(attr) != 1 ||
(ippGetValueTag(attr) != IPP_TAG_NAME &&
@@ -5050,8 +6109,16 @@ valid_job_attributes(
}
}
- if ((attr = ippFindAttribute(client->request, "job-name",
- IPP_TAG_ZERO)) != NULL)
+ if ((attr = ippFindAttribute(client->request, "job-impressions", IPP_TAG_ZERO)) != NULL)
+ {
+ if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_INTEGER || ippGetInteger(attr, 0) < 0)
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ }
+
+ if ((attr = ippFindAttribute(client->request, "job-name", IPP_TAG_ZERO)) != NULL)
{
if (ippGetCount(attr) != 1 ||
(ippGetValueTag(attr) != IPP_TAG_NAME &&
@@ -5060,10 +6127,13 @@ valid_job_attributes(
respond_unsupported(client, attr);
valid = 0;
}
+
+ ippSetGroupTag(client->request, &attr, IPP_TAG_JOB);
}
+ else
+ ippAddString(client->request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL, "Untitled");
- if ((attr = ippFindAttribute(client->request, "job-priority",
- IPP_TAG_ZERO)) != NULL)
+ if ((attr = ippFindAttribute(client->request, "job-priority", IPP_TAG_ZERO)) != NULL)
{
if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_INTEGER ||
ippGetInteger(attr, 0) < 1 || ippGetInteger(attr, 0) > 100)
@@ -5073,8 +6143,7 @@ valid_job_attributes(
}
}
- if ((attr = ippFindAttribute(client->request, "job-sheets",
- IPP_TAG_ZERO)) != NULL)
+ if ((attr = ippFindAttribute(client->request, "job-sheets", IPP_TAG_ZERO)) != NULL)
{
if (ippGetCount(attr) != 1 ||
(ippGetValueTag(attr) != IPP_TAG_NAME &&
@@ -5087,8 +6156,7 @@ valid_job_attributes(
}
}
- if ((attr = ippFindAttribute(client->request, "media",
- IPP_TAG_ZERO)) != NULL)
+ if ((attr = ippFindAttribute(client->request, "media", IPP_TAG_ZERO)) != NULL)
{
if (ippGetCount(attr) != 1 ||
(ippGetValueTag(attr) != IPP_TAG_NAME &&
@@ -5114,8 +6182,7 @@ valid_job_attributes(
}
}
- if ((attr = ippFindAttribute(client->request, "media-col",
- IPP_TAG_ZERO)) != NULL)
+ if ((attr = ippFindAttribute(client->request, "media-col", IPP_TAG_ZERO)) != NULL)
{
if (ippGetCount(attr) != 1 ||
ippGetValueTag(attr) != IPP_TAG_BEGIN_COLLECTION)
@@ -5126,8 +6193,7 @@ valid_job_attributes(
/* TODO: check for valid media-col */
}
- if ((attr = ippFindAttribute(client->request, "multiple-document-handling",
- IPP_TAG_ZERO)) != NULL)
+ if ((attr = ippFindAttribute(client->request, "multiple-document-handling", IPP_TAG_ZERO)) != NULL)
{
if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_KEYWORD ||
(strcmp(ippGetString(attr, 0, NULL),
@@ -5140,8 +6206,7 @@ valid_job_attributes(
}
}
- if ((attr = ippFindAttribute(client->request, "orientation-requested",
- IPP_TAG_ZERO)) != NULL)
+ if ((attr = ippFindAttribute(client->request, "orientation-requested", IPP_TAG_ZERO)) != NULL)
{
if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_ENUM ||
ippGetInteger(attr, 0) < IPP_ORIENT_PORTRAIT ||
@@ -5152,15 +6217,16 @@ valid_job_attributes(
}
}
- if ((attr = ippFindAttribute(client->request, "page-ranges",
- IPP_TAG_ZERO)) != NULL)
+ if ((attr = ippFindAttribute(client->request, "page-ranges", IPP_TAG_ZERO)) != NULL)
{
- respond_unsupported(client, attr);
+ if (ippGetValueTag(attr) != IPP_TAG_RANGE)
+ {
+ respond_unsupported(client, attr);
valid = 0;
+ }
}
- if ((attr = ippFindAttribute(client->request, "print-quality",
- IPP_TAG_ZERO)) != NULL)
+ if ((attr = ippFindAttribute(client->request, "print-quality", IPP_TAG_ZERO)) != NULL)
{
if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_ENUM ||
ippGetInteger(attr, 0) < IPP_QUALITY_DRAFT ||
@@ -5171,28 +6237,53 @@ valid_job_attributes(
}
}
- if ((attr = ippFindAttribute(client->request, "printer-resolution",
- IPP_TAG_ZERO)) != NULL)
+ if ((attr = ippFindAttribute(client->request, "printer-resolution", IPP_TAG_ZERO)) != NULL)
{
- respond_unsupported(client, attr);
- valid = 0;
+ supported = ippFindAttribute(client->printer->attrs, "printer-resolution-supported", IPP_TAG_RESOLUTION);
+
+ if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_RESOLUTION ||
+ !supported)
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ else
+ {
+ int count, /* Number of supported values */
+ xdpi, /* Horizontal resolution for job template attribute */
+ ydpi, /* Vertical resolution for job template attribute */
+ sydpi; /* Vertical resolution for supported value */
+ ipp_res_t units, /* Units for job template attribute */
+ sunits; /* Units for supported value */
+
+ xdpi = ippGetResolution(attr, 0, &ydpi, &units);
+ count = ippGetCount(supported);
+
+ for (i = 0; i < count; i ++)
+ {
+ if (xdpi == ippGetResolution(supported, i, &sydpi, &sunits) && ydpi == sydpi && units == sunits)
+ break;
+ }
+
+ if (i >= count)
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ }
}
- if ((attr = ippFindAttribute(client->request, "sides",
- IPP_TAG_ZERO)) != NULL)
+ if ((attr = ippFindAttribute(client->request, "sides", IPP_TAG_ZERO)) != NULL)
{
- const char *sides = NULL; /* "sides" value... */
+ const char *sides = ippGetString(attr, 0, NULL);
+ /* "sides" value... */
if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_KEYWORD)
{
respond_unsupported(client, attr);
valid = 0;
}
-
- sides = ippGetString(attr, 0, NULL);
-
- if ((supported = ippFindAttribute(client->printer->attrs, "sides-supported",
- IPP_TAG_KEYWORD)) != NULL)
+ else if ((supported = ippFindAttribute(client->printer->attrs, "sides-supported", IPP_TAG_KEYWORD)) != NULL)
{
if (!ippContainsString(supported, sides))
{
@@ -5212,5 +6303,5 @@ valid_job_attributes(
/*
- * End of "$Id: ippserver.c 11097 2013-07-04 15:54:36Z msweet $".
+ * End of "$Id: ippserver.c 12136 2014-08-29 15:19:40Z msweet $".
*/
diff --git a/test/ippserver.man b/test/ippserver.man
new file mode 100644
index 000000000..a5c1c1c59
--- /dev/null
+++ b/test/ippserver.man
@@ -0,0 +1,172 @@
+.\"
+.\" "$Id$"
+.\"
+.\" ippserver man page for CUPS.
+.\"
+.\" Copyright 2014 by Apple Inc.
+.\"
+.\" These coded instructions, statements, and computer programs are the
+.\" property of Apple Inc. and are protected by Federal copyright
+.\" law. Distribution and use rights are outlined in the file "LICENSE.txt"
+.\" which should have been included with this file. If this file is
+.\" file is missing or damaged, see the license at "http://www.cups.org/".
+.\"
+.TH ippserver 1 "CUPS" "28 August 2014" "Apple Inc."
+.SH NAME
+ippserver \- a simple internet printing protocol server
+.SH SYNOPSIS
+.B ippserver
+[
+.B \-2
+] [
+.B \-M
+.I manufacturer
+] [
+.B \-P
+] [
+.B \-c
+.I command
+] [
+.B \-d
+.I spool-directory
+] [
+.B \-f
+.I type/subtype[,...]
+] [
+.B \-h
+] [
+.B \-i
+.I iconfile.png
+] [
+.B \-k
+] [
+.B \-l
+.I location
+] [
+.B \-m
+.I model
+] [
+.B \-n
+.I hostname
+] [
+.B \-p
+.I port
+] [
+.B \-r
+.I subtype
+] [
+.B \-s
+.I speed[,color-speed]
+] [
+.B \-v[vvv]
+]
+.I service-name
+.SH DESCRIPTION
+.B ippserver
+is a simple Internet Printing Protocol (IPP) server conforming to the IPP Everywhere (PWG 5100.14) specification. It can be used to test client software or act as a very basic print server that runs a command for every job that is printed.
+.SH OPTIONS
+The following options are recognized by
+.B ippserver:
+.TP 5
+.B \-2
+Report support for two-sided (duplex) printing.
+.TP 5
+\fB\-M \fImanufacturer\fR
+Set the manufacturer of the printer.
+The default is "Test".
+.TP 5
+.B \-P
+Report support for PIN printing.
+.TP 5
+\fB\-c \fIcommand\fR
+Run the specified command for each document that is printed.
+.TP 5
+\fB\-d \fIspool-directory\fR
+Specifies the directory that will hold the print files.
+The default is a directory under the user's current temporary directory.
+.TP 5
+\fB\-f \fItype/subtype[,...]\fR
+Specifies a list of MIME media types that the server will accept.
+The default is "application/pdf,image/jpeg,image/pwg-raster".
+.TP 5
+.B \-h
+Shows program help.
+.TP 5
+\fB\-i \fIiconfile.png\fR
+Specifies the printer icon file for the server.
+The default is "printer.png".
+.TP 5
+.B \-k
+Keeps the print documents in the spool directory rather than deleting them.
+.TP 5
+\fB\-l \fIlocation\fR
+Specifies the human-readable location string that is reported by the server.
+The default is the empty string.
+.TP 5
+\fB\-m \fImodel\fR
+Specifies the model name of the printer.
+The default is "Printer".
+.TP 5
+\fB\-n \fIhostname\fR
+Specifies the hostname that is reported by the server.
+The default is the name returned by the
+.BR hostname (1)
+command.
+.TP 5
+\fB\-p \fIport\fR
+Specifies the port number to listen on.
+The default is a user-specific number from 8000 to 8999.
+.TP 5
+\fB\-r \fIsubtype\fR
+Specifies the Bonjour subtype(s) to advertise.
+Separate multiple subtypes with a comma.
+The default is "_print".
+.TP 5
+\fB\-s \fIspeed[,color-speed]\fR
+Specifies the printer speed in pages per minute.
+If two numbers are specified and the second number is greater than zero, the server will report support for color printing.
+The default is "10,0".
+.TP 5
+.B \-v[vvv]
+Be (very) verbose when logging activity to the standard output.
+.SH EXIT STATUS
+The
+.B ippserver
+program returns 1 if it is unable to process the command-line arguments or register the IPP service.
+Otherwise
+.B ippserver
+will run continuously until terminated.
+.SH CONFORMING TO
+The
+.B ippserver
+program is unique to CUPS and conforms to the IPP Everywhere (PWG 5100.14) specification.
+.SH ENVIRONMENT
+.B ippserver
+adds environment variables starting with "IPP_" for all IPP Job attributes in the print request.
+For example, when executing a command for an IPP Job containing the "media" Job Template attribute, the "IPP_MEDIA" environment variable will be set to the value of that attribute.
+.LP
+Enumerated values are converted to their keyword equivalents.
+For example, a "print-quality" Job Template attribute with a enum value of 3 will become the "IPP_PRINT_QUALITY" environment variable with a value of "draft".
+.SH EXAMPLES
+Run
+.B ippserver
+with a service name of My Cool Printer:
+.nf
+
+ ippserver "My Cool Printer"
+.fi
+.LP
+Run the
+.BR file (1)
+command whenever a job is sent to the server:
+.nf
+
+ ippserver \-c file "My Cool Printer"
+.fi
+.SH SEE ALSO
+PWG Internet Printing Protocol Workgroup (http://www.pwg.org/ipp)
+.SH COPYRIGHT
+Copyright \[co] 2007-2014 by Apple Inc.
+.\"
+.\" End of "$Id$".
+.\"
diff --git a/test/ipptool.c b/test/ipptool.c
index 7d0455101..5e6d07f87 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 12143 2014-09-02 13:37:30Z msweet $"
*
* ipptool command for CUPS.
*
@@ -24,9 +24,13 @@
#include <regex.h>
#include <sys/stat.h>
#ifdef WIN32
-# define R_OK 0
+# include <windows.h>
+# ifndef R_OK
+# define R_OK 0
+# endif /* !R_OK */
#else
# include <signal.h>
+# include <termios.h>
#endif /* WIN32 */
#ifndef O_BINARY
# define O_BINARY 0
@@ -123,11 +127,11 @@ typedef struct _cups_vars_s /**** Set of variables ****/
* Globals...
*/
-_cups_transfer_t Transfer = _CUPS_TRANSFER_AUTO;
+static _cups_transfer_t Transfer = _CUPS_TRANSFER_AUTO;
/* How to transfer requests */
-_cups_output_t Output = _CUPS_OUTPUT_LIST;
+static _cups_output_t Output = _CUPS_OUTPUT_LIST;
/* Output mode */
-int Cancel = 0, /* Cancel test? */
+static int Cancel = 0, /* Cancel test? */
IgnoreErrors = 0, /* Ignore errors? */
StopAfterIncludeError = 0,
/* Stop after include errors? */
@@ -141,21 +145,6 @@ int Cancel = 0, /* Cancel test? */
static char *Username = NULL, /* Username from URI */
*Password = NULL; /* Password from URI */
static int PasswordTries = 0; /* Number of tries with password */
-const char * const URIStatusStrings[] = /* URI status strings */
-{
- "URI too large",
- "Bad arguments to function",
- "Bad resource in URI",
- "Bad port number in URI",
- "Bad hostname/address in URI",
- "Bad username in URI",
- "Bad scheme in URI",
- "Bad/empty URI",
- "OK",
- "Missing scheme in URI",
- "Unknown scheme in URI",
- "Missing resource in URI"
-};
/*
@@ -165,11 +154,11 @@ const char * const URIStatusStrings[] = /* URI status strings */
static void add_stringf(cups_array_t *a, const char *s, ...)
__attribute__ ((__format__ (__printf__, 2, 3)));
static int compare_vars(_cups_var_t *a, _cups_var_t *b);
-static int do_tests(_cups_vars_t *vars, const char *testfile);
+static int do_tests(FILE *outfile, _cups_vars_t *vars, const char *testfile);
static void expand_variables(_cups_vars_t *vars, char *dst, const char *src,
size_t dstsize) __attribute__((nonnull(1,2,3)));
static int expect_matches(_cups_expect_t *expect, ipp_tag_t value_tag);
-static ipp_t *get_collection(_cups_vars_t *vars, FILE *fp, int *linenum);
+static ipp_t *get_collection(FILE *outfile, _cups_vars_t *vars, FILE *fp, int *linenum);
static char *get_filename(const char *testfile, char *dst, const char *src,
size_t dstsize);
static char *get_string(ipp_attribute_t *attr, int element, int flags,
@@ -179,26 +168,25 @@ static char *get_token(FILE *fp, char *buf, int buflen,
static char *get_variable(_cups_vars_t *vars, const char *name);
static char *iso_date(ipp_uchar_t *date);
static const char *password_cb(const char *prompt);
-static void print_attr(ipp_attribute_t *attr, ipp_tag_t *group);
-static void print_col(ipp_t *col);
-static void print_csv(ipp_attribute_t *attr, int num_displayed,
+static void pause_message(const char *message);
+static void print_attr(FILE *outfile, int format, ipp_attribute_t *attr, ipp_tag_t *group);
+static void print_csv(FILE *outfile, ipp_attribute_t *attr, int num_displayed,
char **displayed, size_t *widths);
-static void print_fatal_error(const char *s, ...)
- __attribute__ ((__format__ (__printf__, 1, 2)));
-static void print_line(ipp_attribute_t *attr, int num_displayed,
+static void print_fatal_error(FILE *outfile, const char *s, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+static void print_line(FILE *outfile, ipp_attribute_t *attr, int num_displayed,
char **displayed, size_t *widths);
-static void print_xml_header(void);
-static void print_xml_string(const char *element, const char *s);
-static void print_xml_trailer(int success, const char *message);
-static void set_variable(_cups_vars_t *vars, const char *name,
- const char *value);
+static void print_xml_header(FILE *outfile);
+static void print_xml_string(FILE *outfile, const char *element, const char *s);
+static void print_xml_trailer(FILE *outfile, int success, const char *message);
+static void set_variable(FILE *outfile, _cups_vars_t *vars, const char *name, const char *value);
#ifndef WIN32
static void sigterm_handler(int sig);
#endif /* WIN32 */
static int timeout_cb(http_t *http, void *user_data);
static void usage(void) __attribute__((noreturn));
-static int validate_attr(cups_array_t *errors, ipp_attribute_t *attr);
-static int with_value(cups_array_t *errors, char *value, int flags,
+static int validate_attr(FILE *outfile, cups_array_t *errors, ipp_attribute_t *attr);
+static int with_value(FILE *outfile, cups_array_t *errors, char *value, int flags,
ipp_attribute_t *attr, char *matchbuf,
size_t matchlen);
@@ -213,6 +201,8 @@ main(int argc, /* I - Number of command-line args */
{
int i; /* Looping var */
int status; /* Status of tests... */
+ FILE *outfile = stdout;
+ /* Output file */
char *opt, /* Current option */
name[1024], /* Name/value buffer */
*value, /* Pointer to value */
@@ -311,6 +301,33 @@ main(int argc, /* I - Number of command-line args */
Transfer = _CUPS_TRANSFER_LENGTH;
break;
+ case 'P' : /* Output to plist file */
+ i ++;
+
+ if (i >= argc)
+ {
+ _cupsLangPrintf(stderr, _("%s: Missing filename for \"-P\"."), "ipptool");
+ usage();
+ }
+
+ if (outfile != stdout)
+ usage();
+
+ if ((outfile = fopen(argv[i], "w")) == NULL)
+ {
+ _cupsLangPrintf(stderr, _("%s: Unable to open \"%s\": %s"), "ipptool", argv[i], strerror(errno));
+ exit(1);
+ }
+
+ Output = _CUPS_OUTPUT_PLIST;
+
+ if (interval || repeat)
+ {
+ _cupsLangPuts(stderr, _("ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"."));
+ usage();
+ }
+ break;
+
case 'S' : /* Encrypt with SSL */
#ifdef HAVE_SSL
vars.encryption = HTTP_ENCRYPT_ALWAYS;
@@ -369,8 +386,7 @@ main(int argc, /* I - Number of command-line args */
if (interval || repeat)
{
- _cupsLangPuts(stderr, _("ipptool: \"-i\" and \"-n\" are "
- "incompatible with -X\"."));
+ _cupsLangPuts(stderr, _("ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"."));
usage();
}
break;
@@ -395,7 +411,7 @@ main(int argc, /* I - Number of command-line args */
else
value = name + strlen(name);
- set_variable(&vars, name, value);
+ set_variable(outfile, &vars, name, value);
break;
case 'f' : /* Set the default test filename */
@@ -454,36 +470,43 @@ main(int argc, /* I - Number of command-line args */
*/
if (!_cups_strcasecmp(ext, ".gif"))
- set_variable(&vars, "filetype", "image/gif");
+ set_variable(outfile, &vars, "filetype", "image/gif");
else if (!_cups_strcasecmp(ext, ".htm") ||
!_cups_strcasecmp(ext, ".htm.gz") ||
!_cups_strcasecmp(ext, ".html") ||
!_cups_strcasecmp(ext, ".html.gz"))
- set_variable(&vars, "filetype", "text/html");
- else if (!_cups_strcasecmp(ext, ".jpg"))
- set_variable(&vars, "filetype", "image/jpeg");
+ set_variable(outfile, &vars, "filetype", "text/html");
+ else if (!_cups_strcasecmp(ext, ".jpg") ||
+ !_cups_strcasecmp(ext, ".jpeg"))
+ set_variable(outfile, &vars, "filetype", "image/jpeg");
else if (!_cups_strcasecmp(ext, ".pcl") ||
!_cups_strcasecmp(ext, ".pcl.gz"))
- set_variable(&vars, "filetype", "application/vnd.hp-PCL");
+ set_variable(outfile, &vars, "filetype", "application/vnd.hp-PCL");
else if (!_cups_strcasecmp(ext, ".pdf"))
- set_variable(&vars, "filetype", "application/pdf");
+ set_variable(outfile, &vars, "filetype", "application/pdf");
else if (!_cups_strcasecmp(ext, ".png"))
- set_variable(&vars, "filetype", "image/png");
+ set_variable(outfile, &vars, "filetype", "image/png");
else if (!_cups_strcasecmp(ext, ".ps") ||
!_cups_strcasecmp(ext, ".ps.gz"))
- set_variable(&vars, "filetype", "application/postscript");
+ set_variable(outfile, &vars, "filetype", "application/postscript");
else if (!_cups_strcasecmp(ext, ".pwg") ||
!_cups_strcasecmp(ext, ".pwg.gz") ||
!_cups_strcasecmp(ext, ".ras") ||
!_cups_strcasecmp(ext, ".ras.gz"))
- set_variable(&vars, "filetype", "image/pwg-raster");
+ set_variable(outfile, &vars, "filetype", "image/pwg-raster");
+ else if (!_cups_strcasecmp(ext, ".tif") ||
+ !_cups_strcasecmp(ext, ".tiff"))
+ set_variable(outfile, &vars, "filetype", "image/tiff");
else if (!_cups_strcasecmp(ext, ".txt") ||
!_cups_strcasecmp(ext, ".txt.gz"))
- set_variable(&vars, "filetype", "text/plain");
+ set_variable(outfile, &vars, "filetype", "text/plain");
+ else if (!_cups_strcasecmp(ext, ".urf") ||
+ !_cups_strcasecmp(ext, ".urf.gz"))
+ set_variable(outfile, &vars, "filetype", "image/urf");
else if (!_cups_strcasecmp(ext, ".xps"))
- set_variable(&vars, "filetype", "application/openxps");
+ set_variable(outfile, &vars, "filetype", "application/openxps");
else
- set_variable(&vars, "filetype", "application/octet-stream");
+ set_variable(outfile, &vars, "filetype", "application/octet-stream");
}
else
{
@@ -491,7 +514,7 @@ main(int argc, /* I - Number of command-line args */
* Use the "auto-type" MIME media type...
*/
- set_variable(&vars, "filetype", "application/octet-stream");
+ set_variable(outfile, &vars, "filetype", "application/octet-stream");
}
break;
@@ -518,8 +541,7 @@ main(int argc, /* I - Number of command-line args */
if (Output == _CUPS_OUTPUT_PLIST && interval)
{
- _cupsLangPuts(stderr, _("ipptool: \"-i\" and \"-n\" are "
- "incompatible with -X\"."));
+ _cupsLangPuts(stderr, _("ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"."));
usage();
}
break;
@@ -542,8 +564,7 @@ main(int argc, /* I - Number of command-line args */
if (Output == _CUPS_OUTPUT_PLIST && repeat)
{
- _cupsLangPuts(stderr, _("ipptool: \"-i\" and \"-n\" are "
- "incompatible with -X\"."));
+ _cupsLangPuts(stderr, _("ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"."));
usage();
}
break;
@@ -564,7 +585,6 @@ main(int argc, /* I - Number of command-line args */
_cupsLangPrintf(stderr, _("ipptool: Unknown option \"-%c\"."),
*opt);
usage();
- break;
}
}
}
@@ -600,8 +620,7 @@ main(int argc, /* I - Number of command-line args */
if (uri_status != HTTP_URI_OK)
{
- _cupsLangPrintf(stderr, _("ipptool: Bad URI - %s."),
- URIStatusStrings[uri_status - HTTP_URI_OVERFLOW]);
+ _cupsLangPrintf(stderr, _("ipptool: Bad URI - %s."), httpURIStatusString(uri_status));
return (1);
}
@@ -612,7 +631,7 @@ main(int argc, /* I - Number of command-line args */
Username = vars.userpass;
cupsSetPasswordCB(password_cb);
- set_variable(&vars, "uriuser", vars.userpass);
+ set_variable(outfile, &vars, "uriuser", vars.userpass);
}
httpAssembleURI(HTTP_URI_CODING_ALL, uri, sizeof(uri), vars.scheme, NULL,
@@ -628,6 +647,7 @@ main(int argc, /* I - Number of command-line args */
if (!vars.uri)
{
_cupsLangPuts(stderr, _("ipptool: URI required before test file."));
+ _cupsLangPuts(stderr, argv[i]);
usage();
}
@@ -647,7 +667,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 +680,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 +694,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 +771,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 +836,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 +849,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 +894,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 +917,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 +941,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 +962,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 +982,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 +992,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 +1015,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 +1025,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 +1049,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 +1059,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 +1081,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 +1100,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 +1120,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 +1146,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 +1154,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 +1177,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 +1193,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 +1205,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 +1278,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 +1309,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 +1320,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 +1335,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 +1359,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;
}
@@ -1353,7 +1372,17 @@ do_tests(_cups_vars_t *vars, /* I - Variables */
* Name of test...
*/
- get_token(fp, name, sizeof(name), &linenum);
+ get_token(fp, temp, sizeof(temp), &linenum);
+ expand_variables(vars, name, temp, sizeof(name));
+ }
+ 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 +1399,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 +1407,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 +1425,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 +1447,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 +1466,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 +1486,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 +1505,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 +1530,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 +1538,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 +1561,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 +1581,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 +1594,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 +1602,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 +1618,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 +1645,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 +1654,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 +1664,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 +1675,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 +1690,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 +1711,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 +1732,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 +1741,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 +1754,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 +1767,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 +1798,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 +1812,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 +1828,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 +1921,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 +1935,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 +1945,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 +1960,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 +2001,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 +2036,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 +2052,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 +2062,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 +2074,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 +2084,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 +2096,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 +2106,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 +2116,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 +2126,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 +2136,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 +2149,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 +2161,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 +2171,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 +2188,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 +2202,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 +2216,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 +2226,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 +2235,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 +2245,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 +2256,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 +2266,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 +2277,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 +2310,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 +2331,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 +2363,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 +2377,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 +2394,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 +2407,54 @@ do_tests(_cups_vars_t *vars, /* I - Variables */
TestCount ++;
- request->request.op.version[0] = version / 10;
- request->request.op.version[1] = version % 10;
- request->request.op.operation_id = op;
- request->request.op.request_id = request_id;
+ ippSetVersion(request, version / 10, version % 10);
+ ippSetOperation(request, op);
+ ippSetRequestId(request, request_id);
if (Output == _CUPS_OUTPUT_PLIST)
{
- puts("<dict>");
- puts("<key>Name</key>");
- print_xml_string("string", name);
+ fputs("<dict>\n", outfile);
+ fputs("<key>Name</key>\n", outfile);
+ print_xml_string(outfile, "string", name);
if (file_id[0])
{
- puts("<key>FileId</key>");
- print_xml_string("string", file_id);
+ fputs("<key>FileId</key>\n", outfile);
+ print_xml_string(outfile, "string", file_id);
}
if (test_id[0])
{
- puts("<key>TestId</key>");
- print_xml_string("string", test_id);
+ fputs("<key>TestId</key>\n", outfile);
+ print_xml_string(outfile, "string", test_id);
}
- puts("<key>Version</key>");
- printf("<string>%d.%d</string>\n", version / 10, version % 10);
- puts("<key>Operation</key>");
- print_xml_string("string", ippOpString(op));
- puts("<key>RequestId</key>");
- printf("<integer>%d</integer>\n", request_id);
- puts("<key>RequestAttributes</key>");
- puts("<array>");
+ fputs("<key>Version</key>\n", outfile);
+ fprintf(outfile, "<string>%d.%d</string>\n", version / 10, version % 10);
+ fputs("<key>Operation</key>\n", outfile);
+ print_xml_string(outfile, "string", ippOpString(op));
+ fputs("<key>RequestId</key>\n", outfile);
+ fprintf(outfile, "<integer>%d</integer>\n", request_id);
+ fputs("<key>RequestAttributes</key>\n", outfile);
+ fputs("<array>\n", outfile);
if (request->attrs)
{
- puts("<dict>");
+ fputs("<dict>\n", outfile);
for (attrptr = request->attrs,
group = attrptr ? attrptr->group_tag : IPP_TAG_ZERO;
attrptr;
attrptr = attrptr->next)
- print_attr(attrptr, &group);
- puts("</dict>");
+ print_attr(outfile, Output, attrptr, &group);
+ fputs("</dict>\n", outfile);
}
- puts("</array>");
+ fputs("</array>\n", outfile);
}
- else if (Output == _CUPS_OUTPUT_TEST)
+
+ if (Output == _CUPS_OUTPUT_TEST || (Output == _CUPS_OUTPUT_PLIST && outfile != stdout))
{
if (Verbosity)
{
printf(" %s:\n", ippOpString(op));
for (attrptr = request->attrs; attrptr; attrptr = attrptr->next)
- print_attr(attrptr, NULL);
+ print_attr(stdout, _CUPS_OUTPUT_TEST, attrptr, NULL);
}
printf(" %-68.68s [", name);
@@ -2416,14 +2470,17 @@ do_tests(_cups_vars_t *vars, /* I - Variables */
if (Output == _CUPS_OUTPUT_PLIST)
{
- puts("<key>Successful</key>");
- puts("<true />");
- puts("<key>StatusCode</key>");
- print_xml_string("string", "skip");
- puts("<key>ResponseAttributes</key>");
- puts("<dict />");
+ fputs("<key>Successful</key>\n", outfile);
+ fputs("<true />\n", outfile);
+ fputs("<key>Skipped</key>\n", outfile);
+ fputs("<true />\n", outfile);
+ fputs("<key>StatusCode</key>\n", outfile);
+ print_xml_string(outfile, "string", "skip");
+ fputs("<key>ResponseAttributes</key>\n", outfile);
+ fputs("<dict />\n", outfile);
}
- else if (Output == _CUPS_OUTPUT_TEST)
+
+ if (Output == _CUPS_OUTPUT_TEST || (Output == _CUPS_OUTPUT_PLIST && outfile != stdout))
puts("SKIP]");
goto skip_error;
@@ -2464,7 +2521,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 +2552,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 +2658,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 +2851,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 +2887,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 +2899,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 +2947,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 +2979,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 +3000,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 +3015,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 +3037,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 +3061,65 @@ 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);
+ {
+ if (!expect->with_value)
+ {
+ int last = ippGetCount(found) - 1;
+ /* Last element in attribute */
+
+ switch (ippGetValueTag(found))
+ {
+ case IPP_TAG_ENUM :
+ case IPP_TAG_INTEGER :
+ snprintf(buffer, sizeof(buffer), "%d", ippGetInteger(found, last));
+ break;
+
+ case IPP_TAG_BOOLEAN :
+ if (ippGetBoolean(found, last))
+ strlcpy(buffer, "true", sizeof(buffer));
+ else
+ strlcpy(buffer, "false", sizeof(buffer));
+ break;
+
+ case IPP_TAG_RESOLUTION :
+ {
+ int xres, /* Horizontal resolution */
+ yres; /* Vertical resolution */
+ ipp_res_t units; /* Resolution units */
+
+ xres = ippGetResolution(found, last, &yres, &units);
+
+ if (xres == yres)
+ snprintf(buffer, sizeof(buffer), "%d%s", xres, units == IPP_RES_PER_INCH ? "dpi" : "dpcm");
+ else
+ snprintf(buffer, sizeof(buffer), "%dx%d%s", xres, yres, units == IPP_RES_PER_INCH ? "dpi" : "dpcm");
+ }
+ break;
+
+ case IPP_TAG_CHARSET :
+ case IPP_TAG_KEYWORD :
+ case IPP_TAG_LANGUAGE :
+ case IPP_TAG_MIMETYPE :
+ case IPP_TAG_NAME :
+ case IPP_TAG_NAMELANG :
+ case IPP_TAG_TEXT :
+ case IPP_TAG_TEXTLANG :
+ case IPP_TAG_URI :
+ case IPP_TAG_URISCHEME :
+ strlcpy(buffer, ippGetString(found, last, NULL), sizeof(buffer));
+ break;
+
+ default :
+ ippAttributeString(found, buffer, sizeof(buffer));
+ break;
+ }
+ }
+
+ set_variable(outfile, vars, expect->define_value, buffer);
+ }
if (found && expect->repeat_match &&
repeat_count < expect->repeat_limit)
@@ -3024,16 +3134,35 @@ 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);
+
+ if (num_displayed > 0)
+ {
+ for (attrptr = ippFirstAttribute(response); attrptr; attrptr = ippNextAttribute(response))
+ {
+ const char *attrname = ippGetName(attrptr);
+ if (attrname)
+ {
+ for (i = 0; i < num_displayed; i ++)
+ {
+ if (!strcmp(displayed[i], attrname))
+ {
+ print_attr(stdout, _CUPS_OUTPUT_TEST, attrptr, NULL);
+ break;
+ }
+ }
+ }
+ }
+ }
}
- 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 +3185,23 @@ do_tests(_cups_vars_t *vars, /* I - Variables */
if (Output == _CUPS_OUTPUT_PLIST)
{
- puts("<key>Successful</key>");
- puts(prev_pass ? "<true />" : "<false />");
- puts("<key>StatusCode</key>");
- print_xml_string("string", ippErrorString(cupsLastError()));
- puts("<key>ResponseAttributes</key>");
- puts("<array>");
- puts("<dict>");
+ fputs("<key>Successful</key>\n", outfile);
+ fputs(prev_pass ? "<true />\n" : "<false />\n", outfile);
+ fputs("<key>StatusCode</key>\n", outfile);
+ print_xml_string(outfile, "string", ippErrorString(cupsLastError()));
+ fputs("<key>ResponseAttributes</key>\n", outfile);
+ fputs("<array>\n", outfile);
+ fputs("<dict>\n", outfile);
for (attrptr = response ? response->attrs : NULL,
group = attrptr ? attrptr->group_tag : IPP_TAG_ZERO;
attrptr;
attrptr = attrptr->next)
- print_attr(attrptr, &group);
- puts("</dict>");
- puts("</array>");
+ print_attr(outfile, Output, attrptr, &group);
+ fputs("</dict>\n", outfile);
+ fputs("</array>\n", outfile);
}
- else if (Output == _CUPS_OUTPUT_TEST)
+
+ if (Output == _CUPS_OUTPUT_TEST || (Output == _CUPS_OUTPUT_PLIST && outfile != stdout))
{
puts(prev_pass ? "PASS]" : "FAIL]");
@@ -3082,16 +3212,16 @@ do_tests(_cups_vars_t *vars, /* I - Variables */
printf(" status-code = %s (%s)\n", ippErrorString(cupsLastError()),
cupsLastErrorString());
- if (response)
+ if (Verbosity && response)
{
for (attrptr = response->attrs;
attrptr != NULL;
attrptr = attrptr->next)
- print_attr(attrptr, NULL);
+ print_attr(stdout, _CUPS_OUTPUT_TEST, attrptr, NULL);
}
}
}
- else if (!prev_pass)
+ else if (!prev_pass && Output != _CUPS_OUTPUT_QUIET)
fprintf(stderr, "%s\n", cupsLastErrorString());
if (prev_pass && Output >= _CUPS_OUTPUT_LIST && !Verbosity &&
@@ -3115,9 +3245,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 +3259,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 +3272,18 @@ do_tests(_cups_vars_t *vars, /* I - Variables */
{
if (Output == _CUPS_OUTPUT_PLIST)
{
- puts("<key>Errors</key>");
- puts("<array>");
+ fputs("<key>Errors</key>\n", outfile);
+ fputs("<array>\n", outfile);
for (error = (char *)cupsArrayFirst(errors);
error;
error = (char *)cupsArrayNext(errors))
- print_xml_string("string", error);
+ print_xml_string(outfile, "string", error);
- puts("</array>");
+ fputs("</array>\n", outfile);
}
- else
+
+ if (Output == _CUPS_OUTPUT_TEST || (Output == _CUPS_OUTPUT_PLIST && outfile != stdout))
{
for (error = (char *)cupsArrayFirst(errors);
error;
@@ -3161,8 +3292,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 || (Output == _CUPS_OUTPUT_PLIST && outfile != stdout)))
{
for (attrptr = response->attrs;
attrptr != NULL;
@@ -3174,7 +3304,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 +3315,7 @@ do_tests(_cups_vars_t *vars, /* I - Variables */
skip_error:
if (Output == _CUPS_OUTPUT_PLIST)
- puts("</dict>");
+ fputs("</dict>\n", outfile);
fflush(stdout);
@@ -3335,14 +3465,26 @@ expand_variables(_cups_vars_t *vars, /* I - Variables */
}
else if (vars)
{
- strlcpy(temp, src + 1, sizeof(temp));
+ if (src[1] == '{')
+ {
+ src += 2;
+ strlcpy(temp, src, sizeof(temp));
+ if ((tempptr = strchr(temp, '}')) != NULL)
+ *tempptr = '\0';
+ else
+ tempptr = temp + strlen(temp);
+ }
+ else
+ {
+ strlcpy(temp, src + 1, sizeof(temp));
- for (tempptr = temp; *tempptr; tempptr ++)
- if (!isalnum(*tempptr & 255) && *tempptr != '-' && *tempptr != '_')
- break;
+ for (tempptr = temp; *tempptr; tempptr ++)
+ if (!isalnum(*tempptr & 255) && *tempptr != '-' && *tempptr != '_')
+ break;
- if (*tempptr)
- *tempptr = '\0';
+ if (*tempptr)
+ *tempptr = '\0';
+ }
if (!strcmp(temp, "uri"))
value = vars->uri;
@@ -3376,7 +3518,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 +3598,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 +3621,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 +3639,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 +3670,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 +3690,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 +3720,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 +3733,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 +3746,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 +3850,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 +3880,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 +3957,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 +3984,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 +4006,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);
@@ -3946,25 +4087,128 @@ password_cb(const char *prompt) /* I - Prompt (unused) */
/*
+ * 'pause_message()' - Display the message and pause until the user presses a key.
+ */
+
+static void
+pause_message(const char *message) /* I - Message */
+{
+#ifdef WIN32
+ HANDLE tty; /* Console handle */
+ DWORD mode; /* Console mode */
+ char key; /* Key press */
+ DWORD bytes; /* Bytes read for key press */
+
+
+ /*
+ * Disable input echo and set raw input...
+ */
+
+ if ((tty = GetStdHandle(STD_INPUT_HANDLE)) == INVALID_HANDLE_VALUE)
+ return;
+
+ if (!GetConsoleMode(tty, &mode))
+ return;
+
+ if (!SetConsoleMode(tty, 0))
+ return;
+
+#else
+ int tty; /* /dev/tty - never read from stdin */
+ struct termios original, /* Original input mode */
+ noecho; /* No echo input mode */
+ char key; /* Current key press */
+
+
+ /*
+ * Disable input echo and set raw input...
+ */
+
+ if ((tty = open("/dev/tty", O_RDONLY)) < 0)
+ return;
+
+ if (tcgetattr(tty, &original))
+ {
+ close(tty);
+ return;
+ }
+
+ noecho = original;
+ noecho.c_lflag &= (tcflag_t)~(ICANON | ECHO | ECHOE | ISIG);
+
+ if (tcsetattr(tty, TCSAFLUSH, &noecho))
+ {
+ close(tty);
+ return;
+ }
+#endif /* WIN32 */
+
+ /*
+ * Display the prompt...
+ */
+
+ printf("%s\n---- PRESS ANY KEY ----", message);
+ fflush(stdout);
+
+#ifdef WIN32
+ /*
+ * Read a key...
+ */
+
+ ReadFile(tty, &key, 1, &bytes, NULL);
+
+ /*
+ * Cleanup...
+ */
+
+ SetConsoleMode(tty, mode);
+
+#else
+ /*
+ * Read a key...
+ */
+
+ read(tty, &key, 1);
+
+ /*
+ * Cleanup...
+ */
+
+ tcsetattr(tty, TCSAFLUSH, &original);
+ close(tty);
+#endif /* WIN32 */
+
+ /*
+ * Erase the "press any key" prompt...
+ */
+
+ fputs("\r \r", stdout);
+ fflush(stdout);
+}
+
+
+/*
* 'print_attr()' - Print an attribute on the screen.
*/
static void
-print_attr(ipp_attribute_t *attr, /* I - Attribute to print */
+print_attr(FILE *outfile, /* I - Output file */
+ int format, /* I - Output format */
+ ipp_attribute_t *attr, /* I - Attribute to print */
ipp_tag_t *group) /* IO - Current group */
{
int i; /* Looping var */
ipp_attribute_t *colattr; /* Collection attribute */
- if (Output == _CUPS_OUTPUT_PLIST)
+ if (format == _CUPS_OUTPUT_PLIST)
{
if (!attr->name || (group && *group != attr->group_tag))
{
if (attr->group_tag != IPP_TAG_ZERO)
{
- puts("</dict>");
- puts("<dict>");
+ fputs("</dict>\n", outfile);
+ fputs("<dict>\n", outfile);
}
if (group)
@@ -3974,100 +4218,56 @@ print_attr(ipp_attribute_t *attr, /* I - Attribute to print */
if (!attr->name)
return;
- print_xml_string("key", attr->name);
+ print_xml_string(outfile, "key", attr->name);
if (attr->num_values > 1)
- puts("<array>");
+ fputs("<array>\n", outfile);
switch (attr->value_tag)
{
case IPP_TAG_INTEGER :
case IPP_TAG_ENUM :
for (i = 0; i < attr->num_values; i ++)
- if (Output == _CUPS_OUTPUT_PLIST)
- printf("<integer>%d</integer>\n", attr->values[i].integer);
- else
- printf("%d ", attr->values[i].integer);
+ fprintf(outfile, "<integer>%d</integer>\n", attr->values[i].integer);
break;
case IPP_TAG_BOOLEAN :
for (i = 0; i < attr->num_values; i ++)
- if (Output == _CUPS_OUTPUT_PLIST)
- puts(attr->values[i].boolean ? "<true />" : "<false />");
- else if (attr->values[i].boolean)
- fputs("true ", stdout);
- else
- fputs("false ", stdout);
+ fputs(attr->values[i].boolean ? "<true />\n" : "<false />\n", outfile);
break;
case IPP_TAG_RANGE :
for (i = 0; i < attr->num_values; i ++)
- if (Output == _CUPS_OUTPUT_PLIST)
- printf("<dict><key>lower</key><integer>%d</integer>"
- "<key>upper</key><integer>%d</integer></dict>\n",
- attr->values[i].range.lower, attr->values[i].range.upper);
- else
- printf("%d-%d ", attr->values[i].range.lower,
- attr->values[i].range.upper);
+ fprintf(outfile, "<dict><key>lower</key><integer>%d</integer>"
+ "<key>upper</key><integer>%d</integer></dict>\n",
+ attr->values[i].range.lower, attr->values[i].range.upper);
break;
case IPP_TAG_RESOLUTION :
for (i = 0; i < attr->num_values; i ++)
- if (Output == _CUPS_OUTPUT_PLIST)
- printf("<dict><key>xres</key><integer>%d</integer>"
- "<key>yres</key><integer>%d</integer>"
- "<key>units</key><string>%s</string></dict>\n",
- attr->values[i].resolution.xres,
- attr->values[i].resolution.yres,
- attr->values[i].resolution.units == IPP_RES_PER_INCH ?
- "dpi" : "dpcm");
- else
- printf("%dx%d%s ", attr->values[i].resolution.xres,
- attr->values[i].resolution.yres,
- attr->values[i].resolution.units == IPP_RES_PER_INCH ?
- "dpi" : "dpcm");
+ fprintf(outfile, "<dict><key>xres</key><integer>%d</integer>"
+ "<key>yres</key><integer>%d</integer>"
+ "<key>units</key><string>%s</string></dict>\n",
+ attr->values[i].resolution.xres,
+ attr->values[i].resolution.yres,
+ attr->values[i].resolution.units == IPP_RES_PER_INCH ?
+ "dpi" : "dpcm");
break;
case IPP_TAG_DATE :
for (i = 0; i < attr->num_values; i ++)
- if (Output == _CUPS_OUTPUT_PLIST)
- printf("<date>%s</date>\n", iso_date(attr->values[i].date));
- else
- printf("%s ", iso_date(attr->values[i].date));
+ fprintf(outfile, "<date>%s</date>\n", iso_date(attr->values[i].date));
break;
case IPP_TAG_STRING :
for (i = 0; i < attr->num_values; i ++)
{
- if (Output == _CUPS_OUTPUT_PLIST)
- {
- char buffer[IPP_MAX_LENGTH * 5 / 4 + 1];
+ char buffer[IPP_MAX_LENGTH * 5 / 4 + 1];
/* Output buffer */
- printf("<data>%s</data>\n",
- httpEncode64_2(buffer, sizeof(buffer),
- attr->values[i].unknown.data,
- attr->values[i].unknown.length));
- }
- else
- {
- char *ptr, /* Pointer into data */
- *end; /* End of data */
-
- putchar('\"');
- for (ptr = attr->values[i].unknown.data,
- end = ptr + attr->values[i].unknown.length;
- ptr < end;
- ptr ++)
- {
- if (*ptr == '\\' || *ptr == '\"')
- printf("\\%c", *ptr);
- else if (!isprint(*ptr & 255))
- printf("\\%03o", *ptr & 255);
- else
- putchar(*ptr);
- }
- putchar('\"');
- }
+ fprintf(outfile, "<data>%s</data>\n",
+ httpEncode64_2(buffer, sizeof(buffer),
+ attr->values[i].unknown.data,
+ attr->values[i].unknown.length));
}
break;
@@ -4079,178 +4279,69 @@ print_attr(ipp_attribute_t *attr, /* I - Attribute to print */
case IPP_TAG_MIMETYPE :
case IPP_TAG_LANGUAGE :
for (i = 0; i < attr->num_values; i ++)
- if (Output == _CUPS_OUTPUT_PLIST)
- print_xml_string("string", attr->values[i].string.text);
- else
- printf("\"%s\" ", attr->values[i].string.text);
+ print_xml_string(outfile, "string", attr->values[i].string.text);
break;
case IPP_TAG_TEXTLANG :
case IPP_TAG_NAMELANG :
for (i = 0; i < attr->num_values; i ++)
- if (Output == _CUPS_OUTPUT_PLIST)
- {
- fputs("<dict><key>language</key><string>", stdout);
- print_xml_string(NULL, attr->values[i].string.language);
- fputs("</string><key>string</key><string>", stdout);
- print_xml_string(NULL, attr->values[i].string.text);
- puts("</string></dict>");
- }
- else
- printf("\"%s\"[%s] ", attr->values[i].string.text,
- attr->values[i].string.language);
+ {
+ fputs("<dict><key>language</key><string>", outfile);
+ print_xml_string(outfile, NULL, attr->values[i].string.language);
+ fputs("</string><key>string</key><string>", outfile);
+ print_xml_string(outfile, NULL, attr->values[i].string.text);
+ fputs("</string></dict>\n", outfile);
+ }
break;
case IPP_TAG_BEGIN_COLLECTION :
for (i = 0; i < attr->num_values; i ++)
{
- if (Output == _CUPS_OUTPUT_PLIST)
- {
- puts("<dict>");
- for (colattr = attr->values[i].collection->attrs;
- colattr;
- colattr = colattr->next)
- print_attr(colattr, NULL);
- puts("</dict>");
- }
- else
- {
- if (i)
- putchar(' ');
-
- print_col(attr->values[i].collection);
- }
+ fputs("<dict>\n", outfile);
+ for (colattr = attr->values[i].collection->attrs;
+ colattr;
+ colattr = colattr->next)
+ print_attr(outfile, format, colattr, NULL);
+ fputs("</dict>\n", outfile);
}
break;
default :
- if (Output == _CUPS_OUTPUT_PLIST)
- printf("<string>&lt;&lt;%s&gt;&gt;</string>\n",
- ippTagString(attr->value_tag));
- else
- fputs(ippTagString(attr->value_tag), stdout);
+ fprintf(outfile, "<string>&lt;&lt;%s&gt;&gt;</string>\n", ippTagString(attr->value_tag));
break;
}
if (attr->num_values > 1)
- puts("</array>");
+ fputs("</array>\n", outfile);
}
else
{
char buffer[8192]; /* Value buffer */
- if (Output == _CUPS_OUTPUT_TEST)
+ if (format == _CUPS_OUTPUT_TEST)
{
if (!attr->name)
{
- puts(" -- separator --");
+ fputs(" -- separator --\n", outfile);
return;
}
- printf(" %s (%s%s) = ", attr->name,
- attr->num_values > 1 ? "1setOf " : "",
- ippTagString(attr->value_tag));
+ fprintf(outfile, " %s (%s%s) = ", attr->name, attr->num_values > 1 ? "1setOf " : "", ippTagString(attr->value_tag));
}
ippAttributeString(attr, buffer, sizeof(buffer));
- puts(buffer);
+ fprintf(outfile, "%s\n", buffer);
}
}
/*
- * 'print_col()' - Print a collection attribute on the screen.
- */
-
-static void
-print_col(ipp_t *col) /* I - Collection attribute to print */
-{
- int i; /* Looping var */
- ipp_attribute_t *attr; /* Current attribute in collection */
-
-
- fputs("{ ", stdout);
- for (attr = col->attrs; attr; attr = attr->next)
- {
- printf("%s (%s%s) = ", attr->name, attr->num_values > 1 ? "1setOf " : "",
- ippTagString(attr->value_tag));
-
- switch (attr->value_tag)
- {
- case IPP_TAG_INTEGER :
- case IPP_TAG_ENUM :
- for (i = 0; i < attr->num_values; i ++)
- printf("%d ", attr->values[i].integer);
- break;
-
- case IPP_TAG_BOOLEAN :
- for (i = 0; i < attr->num_values; i ++)
- if (attr->values[i].boolean)
- printf("true ");
- else
- printf("false ");
- break;
-
- case IPP_TAG_NOVALUE :
- printf("novalue");
- break;
-
- case IPP_TAG_RANGE :
- for (i = 0; i < attr->num_values; i ++)
- printf("%d-%d ", attr->values[i].range.lower,
- attr->values[i].range.upper);
- break;
-
- case IPP_TAG_RESOLUTION :
- for (i = 0; i < attr->num_values; i ++)
- printf("%dx%d%s ", attr->values[i].resolution.xres,
- attr->values[i].resolution.yres,
- attr->values[i].resolution.units == IPP_RES_PER_INCH ?
- "dpi" : "dpcm");
- break;
-
- case IPP_TAG_STRING :
- case IPP_TAG_TEXT :
- case IPP_TAG_NAME :
- case IPP_TAG_KEYWORD :
- case IPP_TAG_CHARSET :
- case IPP_TAG_URI :
- case IPP_TAG_MIMETYPE :
- case IPP_TAG_LANGUAGE :
- for (i = 0; i < attr->num_values; i ++)
- printf("\"%s\" ", attr->values[i].string.text);
- break;
-
- case IPP_TAG_TEXTLANG :
- case IPP_TAG_NAMELANG :
- for (i = 0; i < attr->num_values; i ++)
- printf("\"%s\"[%s] ", attr->values[i].string.text,
- attr->values[i].string.language);
- break;
-
- case IPP_TAG_BEGIN_COLLECTION :
- for (i = 0; i < attr->num_values; i ++)
- {
- print_col(attr->values[i].collection);
- putchar(' ');
- }
- break;
-
- default :
- break; /* anti-compiler-warning-code */
- }
- }
-
- putchar('}');
-}
-
-
-/*
* 'print_csv()' - Print a line of CSV text.
*/
static void
print_csv(
+ FILE *outfile, /* I - Output file */
ipp_attribute_t *attr, /* I - First attribute for line */
int num_displayed, /* I - Number of attributes to display */
char **displayed, /* I - Attributes to display */
@@ -4285,7 +4376,7 @@ print_csv(
for (i = 0; i < num_displayed; i ++)
{
if (i)
- putchar(',');
+ fputc(',', outfile);
buffer[0] = '\0';
@@ -4303,30 +4394,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 +4429,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 +4451,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 +4465,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 +4499,7 @@ print_line(
for (i = 0; i < num_displayed; i ++)
{
if (i)
- putchar(' ');
+ putc(' ', outfile);
buffer[0] = '\0';
@@ -4421,31 +4514,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 +4550,23 @@ print_line(
*/
static void
-print_xml_header(void)
+print_xml_header(FILE *outfile) /* I - Output file */
{
if (!XMLHeader)
{
- puts("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
- puts("<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" "
- "\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">");
- puts("<plist version=\"1.0\">");
- puts("<dict>");
- puts("<key>ipptoolVersion</key>");
- puts("<string>" CUPS_SVERSION "</string>");
- puts("<key>Transfer</key>");
- printf("<string>%s</string>\n",
- Transfer == _CUPS_TRANSFER_AUTO ? "auto" :
- Transfer == _CUPS_TRANSFER_CHUNKED ? "chunked" : "length");
- puts("<key>Tests</key>");
- puts("<array>");
+ fputs("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n", outfile);
+ fputs("<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" "
+ "\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n", outfile);
+ fputs("<plist version=\"1.0\">\n", outfile);
+ fputs("<dict>\n", outfile);
+ fputs("<key>ipptoolVersion</key>\n", outfile);
+ fputs("<string>" CUPS_SVERSION "</string>\n", outfile);
+ fputs("<key>Transfer</key>\n", outfile);
+ fprintf(outfile, "<string>%s</string>\n",
+ Transfer == _CUPS_TRANSFER_AUTO ? "auto" :
+ Transfer == _CUPS_TRANSFER_CHUNKED ? "chunked" : "length");
+ fputs("<key>Tests</key>\n", outfile);
+ fputs("<array>\n", outfile);
XMLHeader = 1;
}
@@ -4485,20 +4578,21 @@ print_xml_header(void)
*/
static void
-print_xml_string(const char *element, /* I - Element name or NULL */
+print_xml_string(FILE *outfile, /* I - Output file */
+ const char *element, /* I - Element name or NULL */
const char *s) /* I - String to print */
{
if (element)
- printf("<%s>", element);
+ fprintf(outfile, "<%s>", element);
while (*s)
{
if (*s == '&')
- fputs("&amp;", stdout);
+ fputs("&amp;", outfile);
else if (*s == '<')
- fputs("&lt;", stdout);
+ fputs("&lt;", outfile);
else if (*s == '>')
- fputs("&gt;", stdout);
+ fputs("&gt;", outfile);
else if ((*s & 0xe0) == 0xc0)
{
/*
@@ -4507,13 +4601,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 +4618,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 +4637,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 +4654,16 @@ print_xml_string(const char *element, /* I - Element name or NULL */
* Invalid control character...
*/
- putchar('?');
+ putc('?', outfile);
}
else
- putchar(*s);
+ putc(*s, outfile);
s ++;
}
if (element)
- printf("</%s>\n", element);
+ fprintf(outfile, "</%s>\n", element);
}
@@ -4578,21 +4672,22 @@ print_xml_string(const char *element, /* I - Element name or NULL */
*/
static void
-print_xml_trailer(int success, /* I - 1 on success, 0 on failure */
+print_xml_trailer(FILE *outfile, /* I - Output file */
+ int success, /* I - 1 on success, 0 on failure */
const char *message) /* I - Error message or NULL */
{
if (XMLHeader)
{
- puts("</array>");
- puts("<key>Successful</key>");
- puts(success ? "<true />" : "<false />");
+ fputs("</array>\n", outfile);
+ fputs("<key>Successful</key>\n", outfile);
+ fputs(success ? "<true />\n" : "<false />\n", outfile);
if (message)
{
- puts("<key>ErrorMessage</key>");
- print_xml_string("string", message);
+ fputs("<key>ErrorMessage</key>\n", outfile);
+ print_xml_string(outfile, "string", message);
}
- puts("</dict>");
- puts("</plist>");
+ fputs("</dict>\n", outfile);
+ fputs("</plist>\n", outfile);
XMLHeader = 0;
}
@@ -4604,7 +4699,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 +4725,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 +4767,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 +4787,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);
@@ -4706,6 +4803,10 @@ usage(void)
_cupsLangPuts(stderr, _("Usage: ipptool [options] URI filename [ ... "
"filenameN ]"));
_cupsLangPuts(stderr, _("Options:"));
+ _cupsLangPuts(stderr, _(" --help Show help."));
+ _cupsLangPuts(stderr, _(" --stop-after-include-error\n"
+ " Stop tests after a failed INCLUDE."));
+ _cupsLangPuts(stderr, _(" --version Show version."));
_cupsLangPuts(stderr, _(" -4 Connect using IPv4."));
_cupsLangPuts(stderr, _(" -6 Connect using IPv6."));
_cupsLangPuts(stderr, _(" -C Send requests using "
@@ -4715,6 +4816,7 @@ usage(void)
_cupsLangPuts(stderr, _(" -I Ignore errors."));
_cupsLangPuts(stderr, _(" -L Send requests using "
"content-length."));
+ _cupsLangPuts(stderr, _(" -P filename.plist Produce XML plist to a file and test report to standard output."));
_cupsLangPuts(stderr, _(" -S Test with SSL "
"encryption."));
_cupsLangPuts(stderr, _(" -T seconds Set the receive/send "
@@ -4723,12 +4825,14 @@ usage(void)
"version."));
_cupsLangPuts(stderr, _(" -X Produce XML plist instead "
"of plain text."));
+ _cupsLangPuts(stderr, _(" -c Produce CSV output."));
_cupsLangPuts(stderr, _(" -d name=value Set named variable to "
"value."));
_cupsLangPuts(stderr, _(" -f filename Set default request "
"filename."));
_cupsLangPuts(stderr, _(" -i seconds Repeat the last file with "
"the given time interval."));
+ _cupsLangPuts(stderr, _(" -l Produce plain text output."));
_cupsLangPuts(stderr, _(" -n count Repeat the last file the "
"given number of times."));
_cupsLangPuts(stderr, _(" -q Run silently."));
@@ -4744,7 +4848,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 +5114,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 +5127,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 +5303,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 +5411,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 +5464,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 +5509,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 +5565,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 +5575,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 +5630,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 +5786,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 +5866,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 12143 2014-09-02 13:37:30Z msweet $".
*/
diff --git a/test/printer.opacity b/test/printer.opacity
index 595854a24..44d805449 100644
--- a/test/printer.opacity
+++ b/test/printer.opacity
Binary files differ
diff --git a/test/printer.png b/test/printer.png
index 18c05db10..08430fcde 100644
--- a/test/printer.png
+++ b/test/printer.png
Binary files differ
diff --git a/test/run-stp-tests.sh b/test/run-stp-tests.sh
index ce9ead32b..9241fe605 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 12151 2014-09-04 00:57:41Z 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"
if test `uname` = Darwin; then
VALGRIND="$VALGRIND --dsymutil=yes"
fi
export VALGRIND
- echo "Using Valgrind; log files can be found in /tmp/cups-$user/log..."
+ echo "Using Valgrind; log files can be found in $BASE/log..."
;;
*)
@@ -257,15 +265,15 @@ echo ""
case "$usedebugprintfs" in
Y* | y*)
- echo "Enabling debug printfs (level 5); log files can be found in /tmp/cups-$user/log..."
- CUPS_DEBUG_LOG="/tmp/cups-$user/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
+ echo "Enabling debug printfs (level 5); log files can be found in $BASE/log..."
+ CUPS_DEBUG_LOG="$BASE/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
CUPS_DEBUG_LEVEL=5; export CUPS_DEBUG_LEVEL
CUPS_DEBUG_FILTER='^(http|_http|ipp|_ipp|cups.*Request|cupsGetResponse|cupsSend).*$'; export CUPS_DEBUG_FILTER
;;
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9)
- echo "Enabling debug printfs (level $usedebugprintfs); log files can be found in /tmp/cups-$user/log..."
- CUPS_DEBUG_LOG="/tmp/cups-$user/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
+ echo "Enabling debug printfs (level $usedebugprintfs); log files can be found in $BASE/log..."
+ CUPS_DEBUG_LOG="$BASE/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
CUPS_DEBUG_LEVEL="$usedebugprintfs"; export CUPS_DEBUG_LEVEL
CUPS_DEBUG_FILTER='^(http|_http|ipp|_ipp|cups.*Request|cupsGetResponse|cupsSend).*$'; export CUPS_DEBUG_FILTER
;;
@@ -280,67 +288,67 @@ esac
echo "Creating directories for test..."
-rm -rf /tmp/cups-$user
-mkdir /tmp/cups-$user
-mkdir /tmp/cups-$user/bin
-mkdir /tmp/cups-$user/bin/backend
-mkdir /tmp/cups-$user/bin/driver
-mkdir /tmp/cups-$user/bin/filter
-mkdir /tmp/cups-$user/certs
-mkdir /tmp/cups-$user/share
-mkdir /tmp/cups-$user/share/banners
-mkdir /tmp/cups-$user/share/drv
-mkdir /tmp/cups-$user/share/locale
+rm -rf $BASE
+mkdir $BASE
+mkdir $BASE/bin
+mkdir $BASE/bin/backend
+mkdir $BASE/bin/driver
+mkdir $BASE/bin/filter
+mkdir $BASE/certs
+mkdir $BASE/share
+mkdir $BASE/share/banners
+mkdir $BASE/share/drv
+mkdir $BASE/share/locale
for file in ../locale/cups_*.po; do
loc=`basename $file .po | cut -c 6-`
- mkdir /tmp/cups-$user/share/locale/$loc
- ln -s $root/locale/cups_$loc.po /tmp/cups-$user/share/locale/$loc
- ln -s $root/locale/ppdc_$loc.po /tmp/cups-$user/share/locale/$loc
+ mkdir $BASE/share/locale/$loc
+ ln -s $root/locale/cups_$loc.po $BASE/share/locale/$loc
+ ln -s $root/locale/ppdc_$loc.po $BASE/share/locale/$loc
done
-mkdir /tmp/cups-$user/share/mime
-mkdir /tmp/cups-$user/share/model
-mkdir /tmp/cups-$user/share/ppdc
-mkdir /tmp/cups-$user/interfaces
-mkdir /tmp/cups-$user/log
-mkdir /tmp/cups-$user/ppd
-mkdir /tmp/cups-$user/spool
-mkdir /tmp/cups-$user/spool/temp
-mkdir /tmp/cups-$user/ssl
-
-ln -s $root/backend/dnssd /tmp/cups-$user/bin/backend
-ln -s $root/backend/http /tmp/cups-$user/bin/backend
-ln -s $root/backend/ipp /tmp/cups-$user/bin/backend
-ln -s $root/backend/lpd /tmp/cups-$user/bin/backend
-ln -s $root/backend/mdns /tmp/cups-$user/bin/backend
-ln -s $root/backend/pseudo /tmp/cups-$user/bin/backend
-ln -s $root/backend/snmp /tmp/cups-$user/bin/backend
-ln -s $root/backend/socket /tmp/cups-$user/bin/backend
-ln -s $root/backend/usb /tmp/cups-$user/bin/backend
-ln -s $root/cgi-bin /tmp/cups-$user/bin
-ln -s $root/monitor /tmp/cups-$user/bin
-ln -s $root/notifier /tmp/cups-$user/bin
-ln -s $root/scheduler /tmp/cups-$user/bin/daemon
-ln -s $root/filter/commandtops /tmp/cups-$user/bin/filter
-ln -s $root/filter/gziptoany /tmp/cups-$user/bin/filter
-ln -s $root/filter/pstops /tmp/cups-$user/bin/filter
-ln -s $root/filter/rastertoepson /tmp/cups-$user/bin/filter
-ln -s $root/filter/rastertohp /tmp/cups-$user/bin/filter
-ln -s $root/filter/rastertolabel /tmp/cups-$user/bin/filter
-ln -s $root/filter/rastertopwg /tmp/cups-$user/bin/filter
-
-ln -s $root/data/classified /tmp/cups-$user/share/banners
-ln -s $root/data/confidential /tmp/cups-$user/share/banners
-ln -s $root/data/secret /tmp/cups-$user/share/banners
-ln -s $root/data/standard /tmp/cups-$user/share/banners
-ln -s $root/data/topsecret /tmp/cups-$user/share/banners
-ln -s $root/data/unclassified /tmp/cups-$user/share/banners
-ln -s $root/data /tmp/cups-$user/share
-ln -s $root/ppdc/sample.drv /tmp/cups-$user/share/drv
-ln -s $root/conf/mime.types /tmp/cups-$user/share/mime
-ln -s $root/conf/mime.convs /tmp/cups-$user/share/mime
-ln -s $root/data/*.h /tmp/cups-$user/share/ppdc
-ln -s $root/data/*.defs /tmp/cups-$user/share/ppdc
-ln -s $root/templates /tmp/cups-$user/share
+mkdir $BASE/share/mime
+mkdir $BASE/share/model
+mkdir $BASE/share/ppdc
+mkdir $BASE/interfaces
+mkdir $BASE/log
+mkdir $BASE/ppd
+mkdir $BASE/spool
+mkdir $BASE/spool/temp
+mkdir $BASE/ssl
+
+ln -s $root/backend/dnssd $BASE/bin/backend
+ln -s $root/backend/http $BASE/bin/backend
+ln -s $root/backend/ipp $BASE/bin/backend
+ln -s $root/backend/lpd $BASE/bin/backend
+ln -s $root/backend/mdns $BASE/bin/backend
+ln -s $root/backend/pseudo $BASE/bin/backend
+ln -s $root/backend/snmp $BASE/bin/backend
+ln -s $root/backend/socket $BASE/bin/backend
+ln -s $root/backend/usb $BASE/bin/backend
+ln -s $root/cgi-bin $BASE/bin
+ln -s $root/monitor $BASE/bin
+ln -s $root/notifier $BASE/bin
+ln -s $root/scheduler $BASE/bin/daemon
+ln -s $root/filter/commandtops $BASE/bin/filter
+ln -s $root/filter/gziptoany $BASE/bin/filter
+ln -s $root/filter/pstops $BASE/bin/filter
+ln -s $root/filter/rastertoepson $BASE/bin/filter
+ln -s $root/filter/rastertohp $BASE/bin/filter
+ln -s $root/filter/rastertolabel $BASE/bin/filter
+ln -s $root/filter/rastertopwg $BASE/bin/filter
+
+ln -s $root/data/classified $BASE/share/banners
+ln -s $root/data/confidential $BASE/share/banners
+ln -s $root/data/secret $BASE/share/banners
+ln -s $root/data/standard $BASE/share/banners
+ln -s $root/data/topsecret $BASE/share/banners
+ln -s $root/data/unclassified $BASE/share/banners
+ln -s $root/data $BASE/share
+ln -s $root/ppdc/sample.drv $BASE/share/drv
+ln -s $root/conf/mime.types $BASE/share/mime
+ln -s $root/conf/mime.convs $BASE/share/mime
+ln -s $root/data/*.h $BASE/share/ppdc
+ln -s $root/data/*.defs $BASE/share/ppdc
+ln -s $root/templates $BASE/share
#
# Local filters and configuration files...
@@ -358,7 +366,7 @@ instfilter() {
for dir in /usr/libexec/cups/filter /usr/lib/cups/filter; do
if test -x "$dir/$src"; then
- ln -s "$dir/$src" "/tmp/cups-$user/bin/filter/$dst"
+ ln -s "$dir/$src" "$BASE/bin/filter/$dst"
return
fi
done
@@ -366,10 +374,10 @@ instfilter() {
# Source filter not present, create a dummy filter
case $format in
passthru)
- ln -s gziptoany "/tmp/cups-$user/bin/filter/$dst"
+ ln -s gziptoany "$BASE/bin/filter/$dst"
;;
pdf)
- cat >"/tmp/cups-$user/bin/filter/$dst" <<EOF
+ cat >"$BASE/bin/filter/$dst" <<EOF
#!/bin/sh
case "\$5" in
*media=a4* | *media=iso_a4* | *PageSize=A4*)
@@ -380,10 +388,10 @@ case "\$5" in
;;
esac
EOF
- chmod +x "/tmp/cups-$user/bin/filter/$dst"
+ chmod +x "$BASE/bin/filter/$dst"
;;
ps)
- cat >"/tmp/cups-$user/bin/filter/$dst" <<EOF
+ cat >"$BASE/bin/filter/$dst" <<EOF
#!/bin/sh
case "\$5" in
*media=a4* | *media=iso_a4* | *PageSize=A4*)
@@ -394,10 +402,10 @@ case "\$5" in
;;
esac
EOF
- chmod +x "/tmp/cups-$user/bin/filter/$dst"
+ chmod +x "$BASE/bin/filter/$dst"
;;
raster)
- cat >"/tmp/cups-$user/bin/filter/$dst" <<EOF
+ cat >"$BASE/bin/filter/$dst" <<EOF
#!/bin/sh
case "\$5" in
*media=a4* | *media=iso_a4* | *PageSize=A4*)
@@ -408,12 +416,12 @@ case "\$5" in
;;
esac
EOF
- chmod +x "/tmp/cups-$user/bin/filter/$dst"
+ chmod +x "$BASE/bin/filter/$dst"
;;
esac
}
-
-ln -s $root/test/test.convs /tmp/cups-$user/share/mime
+
+ln -s $root/test/test.convs $BASE/share/mime
if test `uname` = Darwin; then
instfilter cgbannertopdf bannertopdf pdf
@@ -435,7 +443,7 @@ else
instfilter texttopdf texttopdf pdf
if test -d /usr/share/cups/charsets; then
- ln -s /usr/share/cups/charsets /tmp/cups-$user/share
+ ln -s /usr/share/cups/charsets $BASE/share
fi
fi
@@ -451,11 +459,11 @@ else
encryption=""
fi
-cat >/tmp/cups-$user/cupsd.conf <<EOF
+cat >$BASE/cupsd.conf <<EOF
StrictConformance Yes
Browsing Off
Listen localhost:$port
-Listen /tmp/cups-$user/sock
+Listen $BASE/sock
PassEnv LOCALEDIR
PassEnv DYLD_INSERT_LIBRARIES
MaxSubscriptions 3
@@ -473,26 +481,30 @@ $encryption
</Policy>
EOF
-cat >/tmp/cups-$user/cups-files.conf <<EOF
+if test $testtype = 0; then
+ echo WebInterface yes >>$BASE/cupsd.conf
+fi
+
+cat >$BASE/cups-files.conf <<EOF
FileDevice yes
Printcap
User $user
-ServerRoot /tmp/cups-$user
-StateDir /tmp/cups-$user
-ServerBin /tmp/cups-$user/bin
-CacheDir /tmp/cups-$user/share
-DataDir /tmp/cups-$user/share
-FontPath /tmp/cups-$user/share/fonts
+ServerRoot $BASE
+StateDir $BASE
+ServerBin $BASE/bin
+CacheDir $BASE/share
+DataDir $BASE/share
+FontPath $BASE/share/fonts
DocumentRoot $root/doc
-RequestRoot /tmp/cups-$user/spool
-TempDir /tmp/cups-$user/spool/temp
-AccessLog /tmp/cups-$user/log/access_log
-ErrorLog /tmp/cups-$user/log/error_log
-PageLog /tmp/cups-$user/log/page_log
+RequestRoot $BASE/spool
+TempDir $BASE/spool/temp
+AccessLog $BASE/log/access_log
+ErrorLog $BASE/log/error_log
+PageLog $BASE/log/page_log
EOF
if test $ssltype != 0 -a `uname` = Darwin; then
- echo "ServerCertificate $HOME/Library/Keychains/login.keychain" >> /tmp/cups-$user/cups-files.conf
+ echo "ServerKeychain $HOME/Library/Keychains/login.keychain" >> $BASE/cups-files.conf
fi
#
@@ -503,7 +515,7 @@ echo "Creating printers.conf for test..."
i=1
while test $i -le $nprinters1; do
- cat >>/tmp/cups-$user/printers.conf <<EOF
+ cat >>$BASE/printers.conf <<EOF
<Printer test-$i>
Accepting Yes
DeviceURI file:/dev/null
@@ -515,13 +527,13 @@ StateMessage Printer $1 is idle.
</Printer>
EOF
- cp testps.ppd /tmp/cups-$user/ppd/test-$i.ppd
+ cp testps.ppd $BASE/ppd/test-$i.ppd
i=`expr $i + 1`
done
while test $i -le $nprinters2; do
- cat >>/tmp/cups-$user/printers.conf <<EOF
+ cat >>$BASE/printers.conf <<EOF
<Printer test-$i>
Accepting Yes
DeviceURI file:/dev/null
@@ -536,10 +548,10 @@ EOF
i=`expr $i + 1`
done
-if test -f /tmp/cups-$user/printers.conf; then
- cp /tmp/cups-$user/printers.conf /tmp/cups-$user/printers.conf.orig
+if test -f $BASE/printers.conf; then
+ cp $BASE/printers.conf $BASE/printers.conf.orig
else
- touch /tmp/cups-$user/printers.conf.orig
+ touch $BASE/printers.conf.orig
fi
#
@@ -580,16 +592,16 @@ export SHLIB_PATH
CUPS_DISABLE_APPLE_DEFAULT=yes; export CUPS_DISABLE_APPLE_DEFAULT
CUPS_SERVER=localhost:8631; export CUPS_SERVER
-CUPS_SERVERROOT=/tmp/cups-$user; export CUPS_SERVERROOT
-CUPS_STATEDIR=/tmp/cups-$user; export CUPS_STATEDIR
-CUPS_DATADIR=/tmp/cups-$user/share; export CUPS_DATADIR
-LOCALEDIR=/tmp/cups-$user/share/locale; export LOCALEDIR
+CUPS_SERVERROOT=$BASE; export CUPS_SERVERROOT
+CUPS_STATEDIR=$BASE; export CUPS_STATEDIR
+CUPS_DATADIR=$BASE/share; export CUPS_DATADIR
+LOCALEDIR=$BASE/share/locale; export LOCALEDIR
#
# Set a new home directory to avoid getting user options mixed in...
#
-HOME=/tmp/cups-$user
+HOME=$BASE
export HOME
#
@@ -607,14 +619,13 @@ 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 &
+ DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib MallocStackLogging=1 ../scheduler/cupsd -c $BASE/cupsd.conf -f >$BASE/log/debug_log 2>&1 &
else
- $VALGRIND ../scheduler/cupsd -c /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 +636,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 +694,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 +766,42 @@ for file in 5*.sh; do
fi
done
+#
+# Log all allocations made by the scheduler...
+#
+if test `uname` = Darwin -a "x$VALGRIND" = x; then
+ malloc_history $cupsd -callTree -showContent >$BASE/log/malloc_log 2>&1
+fi
+
+#
+# Restart the server...
+#
+
+echo $ac_n "Performing restart test: $ac_c"
+echo "" >>$strfile
+echo "\"5.10-restart\":" >>$strfile
+
+kill -HUP $cupsd
+
+while true; do
+ sleep 10
+
+ running=`../systemv/lpstat -r 2>/dev/null`
+ if test "x$running" = "xscheduler is running"; then
+ break
+ fi
+done
+
+description="`lpstat -l -p Test1 | grep Description | sed -e '1,$s/^[^:]*: //g'`"
+if test "x$description" != "xTest Printer 1"; then
+ echo "Failed, printer-info for Test1 is '$description', expected 'Test Printer 1'." >>$strfile
+ echo "FAIL (got '$description', expected 'Test Printer 1')"
+ fail=`expr $fail + 1`
+else
+ echo "Passed." >>$strfile
+ echo PASS
+fi
+
echo "</PRE>" >>$strfile
#
@@ -778,7 +825,7 @@ echo ""
echo "<H2>Summary</H2>" >>$strfile
# Job control files
-count=`ls -1 /tmp/cups-$user/spool | wc -l`
+count=`ls -1 $BASE/spool | wc -l`
count=`expr $count - 1`
if test $count != 0; then
echo "FAIL: $count job control files were not purged."
@@ -790,7 +837,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 +850,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 +862,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 +874,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 +886,11 @@ else
fi
# Did CUPS-Get-Default get logged?
-if $GREP -q CUPS-Get-Default /tmp/cups-$user/log/access_log; then
+if $GREP -q CUPS-Get-Default $BASE/log/access_log; then
echo "FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'"
echo "<P>FAIL: CUPS-Get-Default logged with 'AccessLogLevel actions'</P>" >>$strfile
echo "<PRE>" >>$strfile
- $GREP CUPS-Get-Default /tmp/cups-$user/log/access_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
+ $GREP CUPS-Get-Default $BASE/log/access_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
echo "</PRE>" >>$strfile
fail=`expr $fail + 1`
else
@@ -852,13 +899,13 @@ else
fi
# Emergency log messages
-count=`$GREP '^X ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
+count=`$GREP '^X ' $BASE/log/error_log | wc -l | awk '{print $1}'`
if test $count != 0; then
echo "FAIL: $count emergency messages, expected 0."
- $GREP '^X ' /tmp/cups-$user/log/error_log
+ $GREP '^X ' $BASE/log/error_log
echo "<P>FAIL: $count emergency messages, expected 0.</P>" >>$strfile
echo "<PRE>" >>$strfile
- $GREP '^X ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
+ $GREP '^X ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
echo "</PRE>" >>$strfile
fail=`expr $fail + 1`
else
@@ -867,13 +914,13 @@ else
fi
# Alert log messages
-count=`$GREP '^A ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
+count=`$GREP '^A ' $BASE/log/error_log | wc -l | awk '{print $1}'`
if test $count != 0; then
echo "FAIL: $count alert messages, expected 0."
- $GREP '^A ' /tmp/cups-$user/log/error_log
+ $GREP '^A ' $BASE/log/error_log
echo "<P>FAIL: $count alert messages, expected 0.</P>" >>$strfile
echo "<PRE>" >>$strfile
- $GREP '^A ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
+ $GREP '^A ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
echo "</PRE>" >>$strfile
fail=`expr $fail + 1`
else
@@ -882,13 +929,13 @@ else
fi
# Critical log messages
-count=`$GREP '^C ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
+count=`$GREP '^C ' $BASE/log/error_log | wc -l | awk '{print $1}'`
if test $count != 0; then
echo "FAIL: $count critical messages, expected 0."
- $GREP '^C ' /tmp/cups-$user/log/error_log
+ $GREP '^C ' $BASE/log/error_log
echo "<P>FAIL: $count critical messages, expected 0.</P>" >>$strfile
echo "<PRE>" >>$strfile
- $GREP '^C ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
+ $GREP '^C ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
echo "</PRE>" >>$strfile
fail=`expr $fail + 1`
else
@@ -897,13 +944,13 @@ else
fi
# Error log messages
-count=`$GREP '^E ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
+count=`$GREP '^E ' $BASE/log/error_log | wc -l | awk '{print $1}'`
if test $count != 33; then
echo "FAIL: $count error messages, expected 33."
- $GREP '^E ' /tmp/cups-$user/log/error_log
+ $GREP '^E ' $BASE/log/error_log
echo "<P>FAIL: $count error messages, expected 33.</P>" >>$strfile
echo "<PRE>" >>$strfile
- $GREP '^E ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
+ $GREP '^E ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
echo "</PRE>" >>$strfile
fail=`expr $fail + 1`
else
@@ -912,13 +959,13 @@ else
fi
# Warning log messages
-count=`$GREP '^W ' /tmp/cups-$user/log/error_log | $GREP -v CreateProfile | wc -l | awk '{print $1}'`
-if test $count != 9; then
- echo "FAIL: $count warning messages, expected 9."
- $GREP '^W ' /tmp/cups-$user/log/error_log
- echo "<P>FAIL: $count warning messages, expected 9.</P>" >>$strfile
+count=`$GREP '^W ' $BASE/log/error_log | $GREP -v CreateProfile | wc -l | awk '{print $1}'`
+if test $count != 18; then
+ echo "FAIL: $count warning messages, expected 18."
+ $GREP '^W ' $BASE/log/error_log
+ echo "<P>FAIL: $count warning messages, expected 18.</P>" >>$strfile
echo "<PRE>" >>$strfile
- $GREP '^W ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
+ $GREP '^W ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
echo "</PRE>" >>$strfile
fail=`expr $fail + 1`
else
@@ -927,13 +974,13 @@ else
fi
# Notice log messages
-count=`$GREP '^N ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
+count=`$GREP '^N ' $BASE/log/error_log | wc -l | awk '{print $1}'`
if test $count != 0; then
echo "FAIL: $count notice messages, expected 0."
- $GREP '^N ' /tmp/cups-$user/log/error_log
+ $GREP '^N ' $BASE/log/error_log
echo "<P>FAIL: $count notice messages, expected 0.</P>" >>$strfile
echo "<PRE>" >>$strfile
- $GREP '^N ' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
+ $GREP '^N ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
echo "</PRE>" >>$strfile
fail=`expr $fail + 1`
else
@@ -942,7 +989,7 @@ else
fi
# Info log messages
-count=`$GREP '^I ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
+count=`$GREP '^I ' $BASE/log/error_log | wc -l | awk '{print $1}'`
if test $count = 0; then
echo "FAIL: $count info messages, expected more than 0."
echo "<P>FAIL: $count info messages, expected more than 0.</P>" >>$strfile
@@ -953,7 +1000,7 @@ else
fi
# Debug log messages
-count=`$GREP '^D ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
+count=`$GREP '^D ' $BASE/log/error_log | wc -l | awk '{print $1}'`
if test $count = 0; then
echo "FAIL: $count debug messages, expected more than 0."
echo "<P>FAIL: $count debug messages, expected more than 0.</P>" >>$strfile
@@ -964,7 +1011,7 @@ else
fi
# Debug2 log messages
-count=`$GREP '^d ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
+count=`$GREP '^d ' $BASE/log/error_log | wc -l | awk '{print $1}'`
if test $count = 0; then
echo "FAIL: $count debug2 messages, expected more than 0."
echo "<P>FAIL: $count debug2 messages, expected more than 0.</P>" >>$strfile
@@ -977,17 +1024,17 @@ fi
# Log files...
echo "<H2>access_log</H2>" >>$strfile
echo "<PRE>" >>$strfile
-sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' /tmp/cups-$user/log/access_log >>$strfile
+sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' $BASE/log/access_log >>$strfile
echo "</PRE>" >>$strfile
echo "<H2>error_log</H2>" >>$strfile
echo "<PRE>" >>$strfile
-$GREP -v '^d' /tmp/cups-$user/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
+$GREP -v '^d' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
echo "</PRE>" >>$strfile
echo "<H2>page_log</H2>" >>$strfile
echo "<PRE>" >>$strfile
-sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' /tmp/cups-$user/log/page_log >>$strfile
+sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' $BASE/log/page_log >>$strfile
echo "</PRE>" >>$strfile
#
@@ -1000,13 +1047,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 +1066,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 12151 2014-09-04 00:57:41Z 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 @@
<HTML>
<HEAD>
<META NAME="Description" CONTENT="CUPS Test Report">
- <META NAME="COPYRIGHT" CONTENT="Copyright 2007-2012, All Rights Reserved">
- <META NAME="DOCNUMBER" CONTENT="CUPS-STR-1.7">
+ <META NAME="COPYRIGHT" CONTENT="Copyright 2007-2013, All Rights Reserved">
+ <META NAME="DOCNUMBER" CONTENT="CUPS-STR-2.0">
<META NAME="Author" CONTENT="Apple Inc.">
- <TITLE>CUPS 1.7 Software Test Report</TITLE>
+ <TITLE>CUPS 2.0 Software Test Report</TITLE>
<STYLE TYPE="text/css"><!--
PRE {
font-size: 80%;
@@ -14,10 +14,10 @@
</HEAD>
<BODY>
-<H1>CUPS 1.7 Software Test Report</H1>
+<H1>CUPS 2.0 Software Test Report</H1>
<P>This software test report provides detailed test results that
-are used to evaluate the stability and compliance of CUPS Version 1.7.
+are used to evaluate the stability and compliance of CUPS Version 2.0.
<H2>Document Overview</H2>
diff --git a/test/testhp.ppd b/test/testhp.ppd
index ddc5c2d8f..a71994ed5 100644
--- a/test/testhp.ppd
+++ b/test/testhp.ppd
@@ -1,6 +1,6 @@
*PPD-Adobe: "4.3"
*%
-*% "$Id: testhp.ppd 11397 2013-11-06 20:09:46Z msweet $"
+*% "$Id: testhp.ppd 11398 2013-11-06 20:11:11Z msweet $"
*%
*% Test HP PPD file for CUPS.
*%
@@ -184,5 +184,5 @@
*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM
*Font ZapfDingbats: Special "(001.004S)" Standard ROM
*%
-*% End of "$Id: testhp.ppd 11397 2013-11-06 20:09:46Z msweet $".
+*% End of "$Id: testhp.ppd 11398 2013-11-06 20:11:11Z msweet $".
*%
diff --git a/test/testps.ppd b/test/testps.ppd
index 462c42b35..6251d06e3 100644
--- a/test/testps.ppd
+++ b/test/testps.ppd
@@ -1,6 +1,6 @@
*PPD-Adobe: "4.3"
*%
-*% "$Id: testps.ppd 11397 2013-11-06 20:09:46Z msweet $"
+*% "$Id: testps.ppd 11398 2013-11-06 20:11:11Z msweet $"
*%
*% Test PS PPD file for CUPS.
*%
@@ -179,5 +179,5 @@
*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM
*Font ZapfDingbats: Special "(001.004S)" Standard ROM
*%
-*% End of "$Id: testps.ppd 11397 2013-11-06 20:09:46Z msweet $".
+*% End of "$Id: testps.ppd 11398 2013-11-06 20:11:11Z msweet $".
*%
diff --git a/vcnet/config.h b/vcnet/config.h
index c0e9812bd..9db00bc92 100644
--- a/vcnet/config.h
+++ b/vcnet/config.h
@@ -1,16 +1,16 @@
/*
- * "$Id: config.h 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: config.h 12136 2014-08-29 15:19:40Z msweet $"
*
- * Configuration file for CUPS on Windows.
+ * Configuration file for CUPS on Windows.
*
- * Copyright 2007-2013 by Apple Inc.
- * Copyright 1997-2007 by Easy Software Products.
+ * Copyright 2007-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_
@@ -54,9 +54,19 @@
/*
+ * Map the POSIX strcasecmp() and strncasecmp() functions to the Win32 stricmp()
+ * and strnicmp() functions...
+ */
+
+#define strcasecmp stricmp
+#define strncasecmp strnicmp
+
+
+/*
* Map the POSIX sleep() and usleep() functions to the Win32 Sleep() function...
*/
+typedef unsigned long useconds_t;
#define sleep(X) Sleep(1000 * (X))
#define usleep(X) Sleep((X)/1000)
@@ -70,7 +80,7 @@
# define R_OK 04
# define O_RDONLY _O_RDONLY
# define O_WRONLY _O_WRONLY
-# define O_CREATE _O_CREAT
+# define O_CREAT _O_CREAT
# define O_TRUNC _O_TRUNC
@@ -86,8 +96,8 @@
* Version of software...
*/
-#define CUPS_SVERSION "CUPS v1.7.0"
-#define CUPS_MINIMAL "CUPS/1.7.0"
+#define CUPS_SVERSION "CUPS v2.0.0"
+#define CUPS_MINIMAL "CUPS/2.0.0"
/*
@@ -162,7 +172,7 @@
/*
- * Do we have domain socket support?
+ * Do we have domain socket support, and if so what is the default one?
*/
#undef CUPS_DEFAULT_DOMAINSOCKET
@@ -197,6 +207,13 @@
/*
+ * Do we have posix_spawn?
+ */
+
+/* #undef HAVE_POSIX_SPAWN */
+
+
+/*
* Do we have ZLIB?
*/
@@ -208,10 +225,7 @@
* Do we have PAM stuff?
*/
-#ifndef HAVE_LIBPAM
#define HAVE_LIBPAM 0
-#endif /* !HAVE_LIBPAM */
-
/* #undef HAVE_PAM_PAM_APPL_H */
/* #undef HAVE_PAM_SET_ITEM */
/* #undef HAVE_PAM_SETCRED */
@@ -355,16 +369,15 @@
/* #undef HAVE_CDSASSL */
/* #undef HAVE_GNUTLS */
-/* #undef HAVE_LIBSSL */
#define HAVE_SSPISSL
#define HAVE_SSL
/*
- * Do we have the SSL_set_tlsext_host_name function?
+ * Do we have the gnutls_transport_set_pull_timeout_function function?
*/
-/* #undef HAVE_SSL_SET_TLSEXT_HOST_NAME */
+/* #undef HAVE_GNUTLS_TRANSPORT_SET_PULL_TIMEOUT_FUNCTION */
/*
@@ -390,6 +403,20 @@
/*
+ * Do we have the SecGenerateSelfSignedCertificate function?
+ */
+
+/* #undef HAVE_SECGENERATESELFSIGNEDCERTIFICATE */
+
+
+/*
+ * Do we have the SecKeychainOpen function?
+ */
+
+/* #undef HAVE_SECKEYCHAINOPEN */
+
+
+/*
* Do we have libpaper?
*/
@@ -495,13 +522,6 @@
/*
- * Do we have the AIX usersec.h header file?
- */
-
-/* #undef HAVE_USERSEC_H */
-
-
-/*
* Do we have pthread support?
*/
@@ -517,6 +537,13 @@
/*
+ * Do we have systemd support?
+ */
+
+/* #undef HAVE_SYSTEMD */
+
+
+/*
* Various scripting languages...
*/
@@ -588,18 +615,12 @@
/*
- * Do we have Darwin's IOKit private headers?
- */
-
-/* #undef HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H */
-
-
-/*
* Do we have DBUS?
*/
/* #undef HAVE_DBUS */
/* #undef HAVE_DBUS_MESSAGE_ITER_INIT_APPEND */
+/* #undef HAVE_DBUS_THREADS_INIT */
/*
@@ -771,5 +792,5 @@ static __inline int _cups_abs(int i) { return (i < 0 ? -i : i); }
#endif /* !_CUPS_CONFIG_H_ */
/*
- * End of "$Id: config.h 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: config.h 12136 2014-08-29 15:19:40Z msweet $".
*/
diff --git a/vcnet/cups.sln b/vcnet/cups.sln
index 4f3c0d9cb..277d7623f 100644
--- a/vcnet/cups.sln
+++ b/vcnet/cups.sln
@@ -50,6 +50,13 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ippfind", "ippfind.vcproj",
{CB4AA6F2-3E84-45BE-B505-95CD375E8BE3} = {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}
EndProjectSection
EndProject
+Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "sw-ippeveselfcert10", "sw-ippeveselfcert10.vdproj", "{7F6DD7F5-7DCC-4C7A-8647-E253E4E00A37}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ippserver", "ippserver.vcproj", "{82A03BC7-0746-4B85-8908-3C7A3FAA58A9}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3} = {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@@ -137,6 +144,22 @@ Global
{B484DA0C-62C8-4C32-83B6-CCEB58968B85}.Release|Win32.Build.0 = Release|Win32
{B484DA0C-62C8-4C32-83B6-CCEB58968B85}.Release|x64.ActiveCfg = Release|x64
{B484DA0C-62C8-4C32-83B6-CCEB58968B85}.Release|x64.Build.0 = Release|x64
+ {7F6DD7F5-7DCC-4C7A-8647-E253E4E00A37}.Debug|Win32.ActiveCfg = Debug
+ {7F6DD7F5-7DCC-4C7A-8647-E253E4E00A37}.Debug|Win32.Build.0 = Debug
+ {7F6DD7F5-7DCC-4C7A-8647-E253E4E00A37}.Debug|x64.ActiveCfg = Debug
+ {7F6DD7F5-7DCC-4C7A-8647-E253E4E00A37}.Debug|x64.Build.0 = Debug
+ {7F6DD7F5-7DCC-4C7A-8647-E253E4E00A37}.Release|Win32.ActiveCfg = Release
+ {7F6DD7F5-7DCC-4C7A-8647-E253E4E00A37}.Release|Win32.Build.0 = Release
+ {7F6DD7F5-7DCC-4C7A-8647-E253E4E00A37}.Release|x64.ActiveCfg = Release
+ {7F6DD7F5-7DCC-4C7A-8647-E253E4E00A37}.Release|x64.Build.0 = Release
+ {82A03BC7-0746-4B85-8908-3C7A3FAA58A9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {82A03BC7-0746-4B85-8908-3C7A3FAA58A9}.Debug|Win32.Build.0 = Debug|Win32
+ {82A03BC7-0746-4B85-8908-3C7A3FAA58A9}.Debug|x64.ActiveCfg = Debug|x64
+ {82A03BC7-0746-4B85-8908-3C7A3FAA58A9}.Debug|x64.Build.0 = Debug|x64
+ {82A03BC7-0746-4B85-8908-3C7A3FAA58A9}.Release|Win32.ActiveCfg = Release|Win32
+ {82A03BC7-0746-4B85-8908-3C7A3FAA58A9}.Release|Win32.Build.0 = Release|Win32
+ {82A03BC7-0746-4B85-8908-3C7A3FAA58A9}.Release|x64.ActiveCfg = Release|x64
+ {82A03BC7-0746-4B85-8908-3C7A3FAA58A9}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/vcnet/ippserver.vcproj b/vcnet/ippserver.vcproj
new file mode 100644
index 000000000..fe5aaad6e
--- /dev/null
+++ b/vcnet/ippserver.vcproj
@@ -0,0 +1,357 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="ippserver"
+ ProjectGUID="{82A03BC7-0746-4B85-8908-3C7A3FAA58A9}"
+ RootNamespace="ippserver"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\vcnet;..;..\vcnet\regex"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="1"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="dnssd.lib ws2_32.lib"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory="$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\vcnet;..;..\vcnet\regex"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="1"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="dnssd.lib ws2_32.lib"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\vcnet;..;..\vcnet\regex"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="1"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="dnssd.lib ws2_32.lib"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory="$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\vcnet;..;..\vcnet\regex"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="1"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="dnssd.lib ws2_32.lib"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{5129820B-88C2-40AE-BE81-C7957F76540D}"
+ >
+ <File
+ RelativePath="..\test\ippserver.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{CAF4FFBF-7D66-4368-A03A-3FD0971B59A0}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{17D3B9CD-53D2-47AF-9D2A-4516D777D695}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/vcnet/ipptool-installer.vdproj b/vcnet/ipptool-installer.vdproj
index 64e65c825..555cd2e48 100644
--- a/vcnet/ipptool-installer.vdproj
+++ b/vcnet/ipptool-installer.vdproj
@@ -63,20 +63,20 @@
}
"Entry"
{
- "MsmKey" = "8:_4454D1BB58774F95972FB94388DC5E6A"
- "OwnerKey" = "8:_UNDEFINED"
+ "MsmKey" = "8:_4273A45FE6E54897AC9A4F66D9AA59EC"
+ "OwnerKey" = "8:_8A6033CAC27E4C1185B4FDF7D2BF8D2E"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
- "MsmKey" = "8:_46AB64FF360D4F309866FF5F49C65D88"
+ "MsmKey" = "8:_4454D1BB58774F95972FB94388DC5E6A"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
- "MsmKey" = "8:_4FEB166CB8954184934B4C82D1A99107"
- "OwnerKey" = "8:_73D53D5857124164BE3824FD94E0CB2A"
+ "MsmKey" = "8:_46AB64FF360D4F309866FF5F49C65D88"
+ "OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
@@ -111,38 +111,38 @@
}
"Entry"
{
- "MsmKey" = "8:_73D53D5857124164BE3824FD94E0CB2A"
- "OwnerKey" = "8:_58DC0E72F0944BEFB927AED718CD1660"
+ "MsmKey" = "8:_80DBA85C961E447CB92C95CE1F38C56B"
+ "OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
- "MsmKey" = "8:_73D53D5857124164BE3824FD94E0CB2A"
- "OwnerKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"
+ "MsmKey" = "8:_842C04D73EBC4F5DBC2FD58D5B98D5D1"
+ "OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
- "MsmKey" = "8:_73D53D5857124164BE3824FD94E0CB2A"
- "OwnerKey" = "8:_E97571D3FBE048DABDC59B37762D800F"
+ "MsmKey" = "8:_8A6033CAC27E4C1185B4FDF7D2BF8D2E"
+ "OwnerKey" = "8:_58DC0E72F0944BEFB927AED718CD1660"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
- "MsmKey" = "8:_73D53D5857124164BE3824FD94E0CB2A"
- "OwnerKey" = "8:_D02EB13951314EFD9C539150EF8E53B8"
+ "MsmKey" = "8:_8A6033CAC27E4C1185B4FDF7D2BF8D2E"
+ "OwnerKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
- "MsmKey" = "8:_80DBA85C961E447CB92C95CE1F38C56B"
- "OwnerKey" = "8:_UNDEFINED"
+ "MsmKey" = "8:_8A6033CAC27E4C1185B4FDF7D2BF8D2E"
+ "OwnerKey" = "8:_E97571D3FBE048DABDC59B37762D800F"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
- "MsmKey" = "8:_842C04D73EBC4F5DBC2FD58D5B98D5D1"
- "OwnerKey" = "8:_UNDEFINED"
+ "MsmKey" = "8:_8A6033CAC27E4C1185B4FDF7D2BF8D2E"
+ "OwnerKey" = "8:_D02EB13951314EFD9C539150EF8E53B8"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
@@ -1256,14 +1256,14 @@
{
"Name" = "8:Microsoft Visual Studio"
"ProductName" = "8:ipptool for Windows"
- "ProductCode" = "8:{B5950B89-CE18-455C-B176-E0B74DCDF400}"
- "PackageCode" = "8:{0307E5A5-247E-4097-A50B-35A35B548502}"
+ "ProductCode" = "8:{5B0420A3-BD82-4698-B8A1-9D9EC51A7836}"
+ "PackageCode" = "8:{ECECE842-1E95-48BD-962D-A4E62FBB5F89}"
"UpgradeCode" = "8:{BAB6EBBB-515D-4155-9FEF-D98DA76814CA}"
"RestartWWWService" = "11:FALSE"
"RemovePreviousVersions" = "11:TRUE"
"DetectNewerInstalledVersion" = "11:TRUE"
"InstallAllUsers" = "11:TRUE"
- "ProductVersion" = "8:14.03.2800"
+ "ProductVersion" = "8:13.07.3100"
"Manufacturer" = "8:Apple Inc."
"ARPHELPTELEPHONE" = "8:"
"ARPHELPLINK" = "8:http://www.cups.org/str.php"
@@ -1822,7 +1822,7 @@
}
"MergeModule"
{
- "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_4FEB166CB8954184934B4C82D1A99107"
+ "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_4273A45FE6E54897AC9A4F66D9AA59EC"
{
"UseDynamicProperties" = "11:TRUE"
"IsDependency" = "11:TRUE"
@@ -1836,7 +1836,7 @@
"Feature" = "8:"
"IsolateTo" = "8:"
}
- "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_73D53D5857124164BE3824FD94E0CB2A"
+ "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_8A6033CAC27E4C1185B4FDF7D2BF8D2E"
{
"UseDynamicProperties" = "11:TRUE"
"IsDependency" = "11:TRUE"
@@ -1855,7 +1855,7 @@
{
"{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_58DC0E72F0944BEFB927AED718CD1660"
{
- "SourcePath" = "8:Win32\\Debug\\ippfind.exe"
+ "SourcePath" = "8:Win32\\Release\\ippfind.exe"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
@@ -1883,7 +1883,7 @@
}
"{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_D02EB13951314EFD9C539150EF8E53B8"
{
- "SourcePath" = "8:Win32\\Debug\\regex.dll"
+ "SourcePath" = "8:Win32\\Release\\regex.dll"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
@@ -1911,7 +1911,7 @@
}
"{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_E97571D3FBE048DABDC59B37762D800F"
{
- "SourcePath" = "8:Win32\\Debug\\ipptool.exe"
+ "SourcePath" = "8:Win32\\Release\\ipptool.exe"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
@@ -1939,7 +1939,7 @@
}
"{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_EA282F32A10B4ED1A81AA6133B997C6A"
{
- "SourcePath" = "8:Win32\\Debug\\libcups2.dll"
+ "SourcePath" = "8:Win32\\Release\\libcups2.dll"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
diff --git a/vcnet/libcups2.vcproj b/vcnet/libcups2.vcproj
index 2580eb21a..d22a863ba 100644
--- a/vcnet/libcups2.vcproj
+++ b/vcnet/libcups2.vcproj
@@ -1041,6 +1041,10 @@
</FileConfiguration>
</File>
<File
+ RelativePath="..\cups\libcups2.def"
+ >
+ </File>
+ <File
RelativePath="..\cups\localize.c"
>
</File>
@@ -1317,10 +1321,6 @@
</FileConfiguration>
</File>
<File
- RelativePath="..\cups\sspi.c"
- >
- </File>
- <File
RelativePath="..\cups\string.c"
>
<FileConfiguration
@@ -1397,6 +1397,10 @@
>
</File>
<File
+ RelativePath="..\cups\tls.c"
+ >
+ </File>
+ <File
RelativePath="..\cups\transcode.c"
>
<FileConfiguration
@@ -1527,6 +1531,10 @@
>
</File>
<File
+ RelativePath="..\cups\cups-private.h"
+ >
+ </File>
+ <File
RelativePath="..\cups\cups.h"
>
</File>
@@ -1599,10 +1607,6 @@
>
</File>
<File
- RelativePath="..\cups\sspi-private.h"
- >
- </File>
- <File
RelativePath="..\cups\string-private.h"
>
</File>
diff --git a/vcnet/regex/regcomp.c b/vcnet/regex/regcomp.c
index 5df5d53fc..22e74336a 100644
--- a/vcnet/regex/regcomp.c
+++ b/vcnet/regex/regcomp.c
@@ -1345,7 +1345,7 @@ sopno finish; /* to this less one */
return(ret);
enlarge(p, p->ssize + len); /* this many unexpected additions */
assert(p->ssize >= p->slen + len);
- (void) memcpy((char *)(p->strip + p->slen),
+ (void) memmove((char *)(p->strip + p->slen),
(char *)(p->strip + start), (size_t)len*sizeof(sop));
p->slen += len;
return(ret);
diff --git a/vcnet/setdebug.bat b/vcnet/setdebug.bat
index b780dd29d..dd1afa698 100644
--- a/vcnet/setdebug.bat
+++ b/vcnet/setdebug.bat
@@ -1,5 +1,5 @@
@rem Script to enable debug logging for IPPTOOL
set CUPS_DEBUG_LOG=ipptool.log
set CUPS_DEBUG_LEVEL=6
-set "CUPS_DEBUG_FILTER=^(http|_http|ipp|_ipp|cupsDo|cupsGetResponse|cupsSend|cupsWrite|sspi|_sspi)"
+set "CUPS_DEBUG_FILTER=^(http|_http|ipp|_ipp|cupsDo|cupsGetResponse|cupsSend|cupsWrite)"
diff --git a/vcnet/sw-ippeveselfcert10.vdproj b/vcnet/sw-ippeveselfcert10.vdproj
new file mode 100644
index 000000000..2895a46da
--- /dev/null
+++ b/vcnet/sw-ippeveselfcert10.vdproj
@@ -0,0 +1,1581 @@
+"DeployProject"
+{
+"VSVersion" = "3:800"
+"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}"
+"IsWebType" = "8:FALSE"
+"ProjectName" = "8:sw-ippeveselfcert10"
+"LanguageId" = "3:1033"
+"CodePage" = "3:1252"
+"UILanguageId" = "3:1033"
+"SccProjectName" = "8:"
+"SccLocalPath" = "8:"
+"SccAuxPath" = "8:"
+"SccProvider" = "8:"
+ "Hierarchy"
+ {
+ "Entry"
+ {
+ "MsmKey" = "8:_156E3B06B7D14775B28242360FB7D1A0"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_1A1324305D78463BBFC62269C56DCF0B"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_1BCBABF5693841AE92515645BB7765F4"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_1DBDCFABB8DF28E5F75E41EDAE4BF6BE"
+ "OwnerKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_27AB74FFFBC7436B9EBC6AE23968CFCC"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_299D5816FF7142F3B2791685551AD1DC"
+ "OwnerKey" = "8:_A1CB27EFF4094C39B58D0BE5A272DF1A"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_43D276E6E3054544A6A9828BE66519CD"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_466C1CF41795452A8B76425F8D05D8B8"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_58DC0E72F0944BEFB927AED718CD1660"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_592FC984DBFD494D9FB7DFFEA35AD7A5"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_842C04D73EBC4F5DBC2FD58D5B98D5D1"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_965005559A264140806149D54E2243BB"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_9967519E7058965D4C7DEF47EB39CC50"
+ "OwnerKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_9CB71023ADF84278A4A5EBC398F6C9F3"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_9FBF78D7B89EEA843380D5F10E1954D7"
+ "OwnerKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_A1CB27EFF4094C39B58D0BE5A272DF1A"
+ "OwnerKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_A1CB27EFF4094C39B58D0BE5A272DF1A"
+ "OwnerKey" = "8:_58DC0E72F0944BEFB927AED718CD1660"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_A1CB27EFF4094C39B58D0BE5A272DF1A"
+ "OwnerKey" = "8:_466C1CF41795452A8B76425F8D05D8B8"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_A1CB27EFF4094C39B58D0BE5A272DF1A"
+ "OwnerKey" = "8:_E97571D3FBE048DABDC59B37762D800F"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_A1CB27EFF4094C39B58D0BE5A272DF1A"
+ "OwnerKey" = "8:_D02EB13951314EFD9C539150EF8E53B8"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_A9EA3BF89F284AB4853F0682CE277275"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_B7D835B019744E61A7CC37B57B38694E"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_BD5B70C103EF41D9A30CF249D2B93CEB"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_C430646D6E7C4CBDA84F951AE95EB76F"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_D02EB13951314EFD9C539150EF8E53B8"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_D219587BACAC4D5FB4C8010900A781AD"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_D5CD9D9AB1644688A1D54B1589BDF724"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_E3C6C5A7FDD94965B68960844461D5EA"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_E5E464C7DD97439B929E1EA1844F1FF0"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_E97571D3FBE048DABDC59B37762D800F"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_F22F5380A6E14A43A15A452C7C6F6C07"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ }
+ "Configurations"
+ {
+ "Debug"
+ {
+ "DisplayName" = "8:Debug"
+ "IsDebugOnly" = "11:TRUE"
+ "IsReleaseOnly" = "11:FALSE"
+ "OutputFilename" = "8:sw-ippeveselfcert10-windows.msi"
+ "PackageFilesAs" = "3:2"
+ "PackageFileSize" = "3:-2147483648"
+ "CabType" = "3:1"
+ "Compression" = "3:3"
+ "SignOutput" = "11:FALSE"
+ "CertificateFile" = "8:"
+ "PrivateKeyFile" = "8:"
+ "TimeStampServer" = "8:"
+ "InstallerBootstrapper" = "3:2"
+ "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"
+ {
+ "Enabled" = "11:TRUE"
+ "PromptEnabled" = "11:TRUE"
+ "PrerequisitesLocation" = "2:1"
+ "Url" = "8:"
+ "ComponentsUrl" = "8:"
+ "Items"
+ {
+ "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Net.Framework.3.5.SP1"
+ {
+ "Name" = "8:.NET Framework 3.5 SP1"
+ "ProductCode" = "8:Microsoft.Net.Framework.3.5.SP1"
+ }
+ "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1"
+ {
+ "Name" = "8:Windows Installer 3.1"
+ "ProductCode" = "8:Microsoft.Windows.Installer.3.1"
+ }
+ }
+ }
+ }
+ "Release"
+ {
+ "DisplayName" = "8:Release"
+ "IsDebugOnly" = "11:FALSE"
+ "IsReleaseOnly" = "11:TRUE"
+ "OutputFilename" = "8:ipptool-windows.msi"
+ "PackageFilesAs" = "3:2"
+ "PackageFileSize" = "3:-2147483648"
+ "CabType" = "3:1"
+ "Compression" = "3:3"
+ "SignOutput" = "11:FALSE"
+ "CertificateFile" = "8:"
+ "PrivateKeyFile" = "8:"
+ "TimeStampServer" = "8:"
+ "InstallerBootstrapper" = "3:2"
+ "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"
+ {
+ "Enabled" = "11:TRUE"
+ "PromptEnabled" = "11:TRUE"
+ "PrerequisitesLocation" = "2:1"
+ "Url" = "8:"
+ "ComponentsUrl" = "8:"
+ "Items"
+ {
+ "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Net.Framework.3.5.SP1"
+ {
+ "Name" = "8:.NET Framework 3.5 SP1"
+ "ProductCode" = "8:Microsoft.Net.Framework.3.5.SP1"
+ }
+ "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1"
+ {
+ "Name" = "8:Windows Installer 3.1"
+ "ProductCode" = "8:Microsoft.Windows.Installer.3.1"
+ }
+ }
+ }
+ }
+ }
+ "Deployable"
+ {
+ "CustomAction"
+ {
+ }
+ "DefaultFeature"
+ {
+ "Name" = "8:DefaultFeature"
+ "Title" = "8:"
+ "Description" = "8:"
+ }
+ "ExternalPersistence"
+ {
+ "LaunchCondition"
+ {
+ }
+ }
+ "File"
+ {
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_156E3B06B7D14775B28242360FB7D1A0"
+ {
+ "SourcePath" = "8:..\\everywhere\\document-tests.bat"
+ "TargetName" = "8:document-tests.bat"
+ "Tag" = "8:"
+ "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1A1324305D78463BBFC62269C56DCF0B"
+ {
+ "SourcePath" = "8:..\\doc\\help\\man-ipptoolfile.html"
+ "TargetName" = "8:man-ipptoolfile.html"
+ "Tag" = "8:"
+ "Folder" = "8:_26743E387598422398CF503F7478F9E1"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1BCBABF5693841AE92515645BB7765F4"
+ {
+ "SourcePath" = "8:..\\everywhere\\man-ippserver.html"
+ "TargetName" = "8:man-ippserver.html"
+ "Tag" = "8:"
+ "Folder" = "8:_26743E387598422398CF503F7478F9E1"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1DBDCFABB8DF28E5F75E41EDAE4BF6BE"
+ {
+ "SourcePath" = "8:zlibwapi.dll"
+ "TargetName" = "8:zlibwapi.dll"
+ "Tag" = "8:"
+ "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:TRUE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_27AB74FFFBC7436B9EBC6AE23968CFCC"
+ {
+ "SourcePath" = "8:..\\everywhere\\README.txt"
+ "TargetName" = "8:README.txt"
+ "Tag" = "8:"
+ "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_43D276E6E3054544A6A9828BE66519CD"
+ {
+ "SourcePath" = "8:..\\test\\printer.png"
+ "TargetName" = "8:printer.png"
+ "Tag" = "8:"
+ "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_592FC984DBFD494D9FB7DFFEA35AD7A5"
+ {
+ "SourcePath" = "8:..\\doc\\help\\man-ippfind.html"
+ "TargetName" = "8:man-ippfind.html"
+ "Tag" = "8:"
+ "Folder" = "8:_26743E387598422398CF503F7478F9E1"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_842C04D73EBC4F5DBC2FD58D5B98D5D1"
+ {
+ "SourcePath" = "8:..\\test\\document-a4.pdf"
+ "TargetName" = "8:document-a4.pdf"
+ "Tag" = "8:"
+ "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_965005559A264140806149D54E2243BB"
+ {
+ "SourcePath" = "8:..\\everywhere\\bonjour-access-tests.test"
+ "TargetName" = "8:bonjour-access-tests.test"
+ "Tag" = "8:"
+ "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9967519E7058965D4C7DEF47EB39CC50"
+ {
+ "SourcePath" = "8:CRYPT32.dll"
+ "TargetName" = "8:CRYPT32.dll"
+ "Tag" = "8:"
+ "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:TRUE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9CB71023ADF84278A4A5EBC398F6C9F3"
+ {
+ "SourcePath" = "8:..\\everywhere\\bonjour-tests.bat"
+ "TargetName" = "8:bonjour-tests.bat"
+ "Tag" = "8:"
+ "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9FBF78D7B89EEA843380D5F10E1954D7"
+ {
+ "SourcePath" = "8:Secur32.dll"
+ "TargetName" = "8:Secur32.dll"
+ "Tag" = "8:"
+ "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:TRUE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A9EA3BF89F284AB4853F0682CE277275"
+ {
+ "SourcePath" = "8:..\\everywhere\\bonjour-value-tests.test"
+ "TargetName" = "8:bonjour-value-tests.test"
+ "Tag" = "8:"
+ "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B7D835B019744E61A7CC37B57B38694E"
+ {
+ "SourcePath" = "8:..\\everywhere\\document-tests.test"
+ "TargetName" = "8:document-tests.test"
+ "Tag" = "8:"
+ "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_BD5B70C103EF41D9A30CF249D2B93CEB"
+ {
+ "SourcePath" = "8:setdebug.bat"
+ "TargetName" = "8:setdebug.bat"
+ "Tag" = "8:"
+ "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C430646D6E7C4CBDA84F951AE95EB76F"
+ {
+ "SourcePath" = "8:..\\test\\color.jpg"
+ "TargetName" = "8:color.jpg"
+ "Tag" = "8:"
+ "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_D219587BACAC4D5FB4C8010900A781AD"
+ {
+ "SourcePath" = "8:..\\everywhere\\ipp-tests.test"
+ "TargetName" = "8:ipp-tests.test"
+ "Tag" = "8:"
+ "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_D5CD9D9AB1644688A1D54B1589BDF724"
+ {
+ "SourcePath" = "8:..\\doc\\help\\man-ipptool.html"
+ "TargetName" = "8:man-ipptool.html"
+ "Tag" = "8:"
+ "Folder" = "8:_26743E387598422398CF503F7478F9E1"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E3C6C5A7FDD94965B68960844461D5EA"
+ {
+ "SourcePath" = "8:..\\LICENSE.txt"
+ "TargetName" = "8:LICENSE.txt"
+ "Tag" = "8:"
+ "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E5E464C7DD97439B929E1EA1844F1FF0"
+ {
+ "SourcePath" = "8:..\\everywhere\\ipp-tests.bat"
+ "TargetName" = "8:ipp-tests.bat"
+ "Tag" = "8:"
+ "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F22F5380A6E14A43A15A452C7C6F6C07"
+ {
+ "SourcePath" = "8:..\\test\\document-letter.pdf"
+ "TargetName" = "8:document-letter.pdf"
+ "Tag" = "8:"
+ "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ }
+ "FileType"
+ {
+ }
+ "Folder"
+ {
+ "{1525181F-901A-416C-8A58-119130FE478E}:_BEC0EAE20C954C78B294B83E6696156E"
+ {
+ "Name" = "8:#1919"
+ "AlwaysCreate" = "11:FALSE"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Property" = "8:ProgramMenuFolder"
+ "Folders"
+ {
+ "{9EF0B969-E518-4E46-987F-47570745A589}:_E379D4EDBAD0460BB876711E9062ADB4"
+ {
+ "Name" = "8:IPP Everywhere Printer Self-Certification Tools"
+ "AlwaysCreate" = "11:FALSE"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Property" = "8:_D115D2F4F12143B09D5FDA447A6A7D04"
+ "Folders"
+ {
+ }
+ }
+ }
+ }
+ "{1525181F-901A-416C-8A58-119130FE478E}:_D02CDADE99F344CF92CA1A8D0278861F"
+ {
+ "Name" = "8:#1916"
+ "AlwaysCreate" = "11:FALSE"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Property" = "8:DesktopFolder"
+ "Folders"
+ {
+ }
+ }
+ "{3C67513D-01DD-4637-8A68-80971EB9504F}:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
+ {
+ "DefaultLocation" = "8:[ProgramFilesFolder]\\sw-ippeveselfcert10"
+ "Name" = "8:#1925"
+ "AlwaysCreate" = "11:FALSE"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Property" = "8:TARGETDIR"
+ "Folders"
+ {
+ "{9EF0B969-E518-4E46-987F-47570745A589}:_26743E387598422398CF503F7478F9E1"
+ {
+ "Name" = "8:doc"
+ "AlwaysCreate" = "11:FALSE"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Property" = "8:_5CD53B90FF754768B11ECBEB671A1749"
+ "Folders"
+ {
+ }
+ }
+ "{9EF0B969-E518-4E46-987F-47570745A589}:_EB00D0298C7E441EBD0257AC04FB3560"
+ {
+ "Name" = "8:ipptool"
+ "AlwaysCreate" = "11:FALSE"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Property" = "8:_6F223FB51798428A9F2D64A5A7F2B49C"
+ "Folders"
+ {
+ }
+ }
+ }
+ }
+ }
+ "LaunchCondition"
+ {
+ }
+ "Locator"
+ {
+ }
+ "MsiBootstrapper"
+ {
+ "LangId" = "3:1033"
+ "RequiresElevation" = "11:FALSE"
+ }
+ "Product"
+ {
+ "Name" = "8:Microsoft Visual Studio"
+ "ProductName" = "8:IPP Everywhere Printer Self-Certification Tools"
+ "ProductCode" = "8:{C08E3AC5-4FBF-40DD-BD19-9BE69A609DAF}"
+ "PackageCode" = "8:{25FF31C9-52A0-4838-8F1D-02FB5D5296F4}"
+ "UpgradeCode" = "8:{BAB6EBBB-515D-4155-9FEF-D98DA76814CA}"
+ "RestartWWWService" = "11:FALSE"
+ "RemovePreviousVersions" = "11:TRUE"
+ "DetectNewerInstalledVersion" = "11:TRUE"
+ "InstallAllUsers" = "11:TRUE"
+ "ProductVersion" = "8:14.08.2600"
+ "Manufacturer" = "8:Apple Inc."
+ "ARPHELPTELEPHONE" = "8:"
+ "ARPHELPLINK" = "8:http://www.cups.org/str.php"
+ "Title" = "8:sw-ippeveselfcert10"
+ "Subject" = "8:"
+ "ARPCONTACT" = "8:Apple Inc."
+ "Keywords" = "8:IPP, Internet Printing Protocol"
+ "ARPCOMMENTS" = "8:IPP Everywhere Printer Self-Certification Tools"
+ "ARPURLINFOABOUT" = "8:http://www.cups.org/"
+ "ARPPRODUCTICON" = "8:"
+ "ARPIconIndex" = "3:0"
+ "SearchPath" = "8:"
+ "UseSystemSearchPath" = "11:TRUE"
+ "TargetPlatform" = "3:0"
+ "PreBuildEvent" = "8:"
+ "PostBuildEvent" = "8:"
+ "RunPostBuildEvent" = "3:0"
+ }
+ "Registry"
+ {
+ "HKLM"
+ {
+ "Keys"
+ {
+ "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_BC4E66686BCA4F9A8B24B6CF2728DACD"
+ {
+ "Name" = "8:Software"
+ "Condition" = "8:"
+ "AlwaysCreate" = "11:FALSE"
+ "DeleteAtUninstall" = "11:FALSE"
+ "Transitive" = "11:FALSE"
+ "Keys"
+ {
+ "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_F9AB9B310C7545D993D690F529048AA2"
+ {
+ "Name" = "8:cups.org"
+ "Condition" = "8:"
+ "AlwaysCreate" = "11:FALSE"
+ "DeleteAtUninstall" = "11:FALSE"
+ "Transitive" = "11:FALSE"
+ "Keys"
+ {
+ }
+ "Values"
+ {
+ "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_4E5BAC705A1D44E78C90C6D2A4A7BE20"
+ {
+ "Name" = "8:installdir"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "ValueTypes" = "3:2"
+ "Value" = "8:[TARGETDIR]"
+ }
+ }
+ }
+ }
+ "Values"
+ {
+ }
+ }
+ }
+ }
+ "HKCU"
+ {
+ "Keys"
+ {
+ "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_A4C9879F42874B6B92960A55F2D98922"
+ {
+ "Name" = "8:Software"
+ "Condition" = "8:"
+ "AlwaysCreate" = "11:FALSE"
+ "DeleteAtUninstall" = "11:FALSE"
+ "Transitive" = "11:FALSE"
+ "Keys"
+ {
+ "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_1ACB03C307FB4B85BB27C9913FB58B09"
+ {
+ "Name" = "8:[Manufacturer]"
+ "Condition" = "8:"
+ "AlwaysCreate" = "11:FALSE"
+ "DeleteAtUninstall" = "11:FALSE"
+ "Transitive" = "11:FALSE"
+ "Keys"
+ {
+ }
+ "Values"
+ {
+ }
+ }
+ }
+ "Values"
+ {
+ }
+ }
+ }
+ }
+ "HKCR"
+ {
+ "Keys"
+ {
+ }
+ }
+ "HKU"
+ {
+ "Keys"
+ {
+ }
+ }
+ "HKPU"
+ {
+ "Keys"
+ {
+ }
+ }
+ }
+ "Sequences"
+ {
+ }
+ "Shortcut"
+ {
+ "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_57BCED85BA5944009F56A11D5A9FBBEE"
+ {
+ "Name" = "8:ippfind Documentation"
+ "Arguments" = "8:"
+ "Description" = "8:"
+ "ShowCmd" = "3:1"
+ "IconIndex" = "3:0"
+ "Transitive" = "11:FALSE"
+ "Target" = "8:_592FC984DBFD494D9FB7DFFEA35AD7A5"
+ "Folder" = "8:_E379D4EDBAD0460BB876711E9062ADB4"
+ "WorkingFolder" = "8:_26743E387598422398CF503F7478F9E1"
+ "Icon" = "8:"
+ "Feature" = "8:"
+ }
+ "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_63715171338D40FFBC5B47A1418B4814"
+ {
+ "Name" = "8:README"
+ "Arguments" = "8:"
+ "Description" = "8:"
+ "ShowCmd" = "3:1"
+ "IconIndex" = "3:0"
+ "Transitive" = "11:FALSE"
+ "Target" = "8:_27AB74FFFBC7436B9EBC6AE23968CFCC"
+ "Folder" = "8:_E379D4EDBAD0460BB876711E9062ADB4"
+ "WorkingFolder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
+ "Icon" = "8:"
+ "Feature" = "8:"
+ }
+ "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_70CF74DB997A408DBBFD48AB10F92321"
+ {
+ "Name" = "8:ipptool Documentation"
+ "Arguments" = "8:"
+ "Description" = "8:"
+ "ShowCmd" = "3:1"
+ "IconIndex" = "3:0"
+ "Transitive" = "11:FALSE"
+ "Target" = "8:_D5CD9D9AB1644688A1D54B1589BDF724"
+ "Folder" = "8:_E379D4EDBAD0460BB876711E9062ADB4"
+ "WorkingFolder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
+ "Icon" = "8:"
+ "Feature" = "8:"
+ }
+ "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_962004B0D5CA479A91EFA7F7BF7814C8"
+ {
+ "Name" = "8:ippserver Documentation"
+ "Arguments" = "8:"
+ "Description" = "8:"
+ "ShowCmd" = "3:1"
+ "IconIndex" = "3:0"
+ "Transitive" = "11:FALSE"
+ "Target" = "8:_1BCBABF5693841AE92515645BB7765F4"
+ "Folder" = "8:_E379D4EDBAD0460BB876711E9062ADB4"
+ "WorkingFolder" = "8:_26743E387598422398CF503F7478F9E1"
+ "Icon" = "8:"
+ "Feature" = "8:"
+ }
+ "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_BD2A7DF74D844FF5919EE8340EE36ECD"
+ {
+ "Name" = "8:Test File Documentation"
+ "Arguments" = "8:"
+ "Description" = "8:"
+ "ShowCmd" = "3:1"
+ "IconIndex" = "3:0"
+ "Transitive" = "11:FALSE"
+ "Target" = "8:_1A1324305D78463BBFC62269C56DCF0B"
+ "Folder" = "8:_E379D4EDBAD0460BB876711E9062ADB4"
+ "WorkingFolder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
+ "Icon" = "8:"
+ "Feature" = "8:"
+ }
+ }
+ "UserInterface"
+ {
+ "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_045DF90B1FF941A9BA7A742CFC0A6C00"
+ {
+ "UseDynamicProperties" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdUserInterface.wim"
+ }
+ "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_345BD86390E841A98B74ED3E07945F8C"
+ {
+ "Name" = "8:#1900"
+ "Sequence" = "3:2"
+ "Attributes" = "3:1"
+ "Dialogs"
+ {
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_067C143A8731427180B1568AF8C07375"
+ {
+ "Sequence" = "3:200"
+ "DisplayName" = "8:Installation Folder"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFolderDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_A2F2CC6EB9D7453599E7598D4D0629A5"
+ {
+ "Sequence" = "3:300"
+ "DisplayName" = "8:Confirm Installation"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdAdminConfirmDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_C2B41369B7334F419318792EBA031412"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Welcome"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdAdminWelcomeDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "CopyrightWarning"
+ {
+ "Name" = "8:CopyrightWarning"
+ "DisplayName" = "8:#1002"
+ "Description" = "8:#1102"
+ "Type" = "3:3"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:2"
+ "Value" = "8:This computer program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2."
+ "DefaultValue" = "8:#1202"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "Welcome"
+ {
+ "Name" = "8:Welcome"
+ "DisplayName" = "8:#1003"
+ "Description" = "8:#1103"
+ "Type" = "3:3"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1203"
+ "DefaultValue" = "8:#1203"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_6B654A06090344BA9AA443E0D0296737"
+ {
+ "Name" = "8:#1902"
+ "Sequence" = "3:1"
+ "Attributes" = "3:3"
+ "Dialogs"
+ {
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_FB4E7BBC3DA242309FFB58F9A6194A93"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Finished"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdFinishedDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "UpdateText"
+ {
+ "Name" = "8:UpdateText"
+ "DisplayName" = "8:#1058"
+ "Description" = "8:#1158"
+ "Type" = "3:15"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1258"
+ "DefaultValue" = "8:#1258"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_712819C7C4F042ABB708949BD4426628"
+ {
+ "Name" = "8:#1900"
+ "Sequence" = "3:1"
+ "Attributes" = "3:1"
+ "Dialogs"
+ {
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_2F49D4FACB954AF2B786D2AD9206D053"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Welcome"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdWelcomeDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "CopyrightWarning"
+ {
+ "Name" = "8:CopyrightWarning"
+ "DisplayName" = "8:#1002"
+ "Description" = "8:#1102"
+ "Type" = "3:3"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:2"
+ "Value" = "8:This computer program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2."
+ "DefaultValue" = "8:#1202"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "Welcome"
+ {
+ "Name" = "8:Welcome"
+ "DisplayName" = "8:#1003"
+ "Description" = "8:#1103"
+ "Type" = "3:3"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1203"
+ "DefaultValue" = "8:#1203"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_770E25BC453A464EA8CD51381FDDDD9F"
+ {
+ "Sequence" = "3:300"
+ "DisplayName" = "8:Confirm Installation"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdConfirmDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_9534A64B629F4F868D6D7A384C76DCB2"
+ {
+ "Sequence" = "3:200"
+ "DisplayName" = "8:Installation Folder"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdFolderDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "InstallAllUsersVisible"
+ {
+ "Name" = "8:InstallAllUsersVisible"
+ "DisplayName" = "8:#1059"
+ "Description" = "8:#1159"
+ "Type" = "3:5"
+ "ContextData" = "8:1;True=1;False=0"
+ "Attributes" = "3:0"
+ "Setting" = "3:0"
+ "Value" = "3:1"
+ "DefaultValue" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_770CCEFF81BD46A182A6E816A41A0E81"
+ {
+ "Name" = "8:#1901"
+ "Sequence" = "3:2"
+ "Attributes" = "3:2"
+ "Dialogs"
+ {
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_75E0C1FD245D493DA0D7E3E0BC0C365F"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Progress"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdAdminProgressDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "ShowProgress"
+ {
+ "Name" = "8:ShowProgress"
+ "DisplayName" = "8:#1009"
+ "Description" = "8:#1109"
+ "Type" = "3:5"
+ "ContextData" = "8:1;True=1;False=0"
+ "Attributes" = "3:0"
+ "Setting" = "3:0"
+ "Value" = "3:1"
+ "DefaultValue" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_933B15E9A383418F8ADF3B13F68458F3"
+ {
+ "UseDynamicProperties" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdBasicDialogs.wim"
+ }
+ "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_E310DA8CED734E00950A3C5D630CE987"
+ {
+ "Name" = "8:#1902"
+ "Sequence" = "3:2"
+ "Attributes" = "3:3"
+ "Dialogs"
+ {
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_CB172E69F9C74901BE1040336CFD4F72"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Finished"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFinishedDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_F44F9BE9B54940848289669635E4A5A2"
+ {
+ "Name" = "8:#1901"
+ "Sequence" = "3:1"
+ "Attributes" = "3:2"
+ "Dialogs"
+ {
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_14751F327A634B989283C8F28CFB6DFC"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Progress"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdProgressDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "ShowProgress"
+ {
+ "Name" = "8:ShowProgress"
+ "DisplayName" = "8:#1009"
+ "Description" = "8:#1109"
+ "Type" = "3:5"
+ "ContextData" = "8:1;True=1;False=0"
+ "Attributes" = "3:0"
+ "Setting" = "3:0"
+ "Value" = "3:1"
+ "DefaultValue" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ }
+ "MergeModule"
+ {
+ "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_299D5816FF7142F3B2791685551AD1DC"
+ {
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:TRUE"
+ "SourcePath" = "8:microsoft_vc90_debugcrt_x86.msm"
+ "Properties"
+ {
+ }
+ "LanguageId" = "3:0"
+ "Exclude" = "11:FALSE"
+ "Folder" = "8:"
+ "Feature" = "8:"
+ "IsolateTo" = "8:"
+ }
+ "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_A1CB27EFF4094C39B58D0BE5A272DF1A"
+ {
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:TRUE"
+ "SourcePath" = "8:policy_9_0_Microsoft_VC90_DebugCRT_x86.msm"
+ "Properties"
+ {
+ }
+ "LanguageId" = "3:0"
+ "Exclude" = "11:FALSE"
+ "Folder" = "8:"
+ "Feature" = "8:"
+ "IsolateTo" = "8:"
+ }
+ }
+ "ProjectOutput"
+ {
+ "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_466C1CF41795452A8B76425F8D05D8B8"
+ {
+ "SourcePath" = "8:Win32\\Debug\\ippserver.exe"
+ "TargetName" = "8:"
+ "Tag" = "8:"
+ "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ "ProjectOutputGroupRegister" = "3:1"
+ "OutputConfiguration" = "8:"
+ "OutputGroupCanonicalName" = "8:Built"
+ "OutputProjectGuid" = "8:{82A03BC7-0746-4B85-8908-3C7A3FAA58A9}"
+ "ShowKeyOutput" = "11:TRUE"
+ "ExcludeFilters"
+ {
+ }
+ }
+ "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_58DC0E72F0944BEFB927AED718CD1660"
+ {
+ "SourcePath" = "8:Win32\\Debug\\ippfind.exe"
+ "TargetName" = "8:"
+ "Tag" = "8:"
+ "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ "ProjectOutputGroupRegister" = "3:1"
+ "OutputConfiguration" = "8:"
+ "OutputGroupCanonicalName" = "8:Built"
+ "OutputProjectGuid" = "8:{B484DA0C-62C8-4C32-83B6-CCEB58968B85}"
+ "ShowKeyOutput" = "11:TRUE"
+ "ExcludeFilters"
+ {
+ }
+ }
+ "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_D02EB13951314EFD9C539150EF8E53B8"
+ {
+ "SourcePath" = "8:Win32\\Debug\\regex.dll"
+ "TargetName" = "8:"
+ "Tag" = "8:"
+ "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ "ProjectOutputGroupRegister" = "3:1"
+ "OutputConfiguration" = "8:"
+ "OutputGroupCanonicalName" = "8:Built"
+ "OutputProjectGuid" = "8:{18950A1B-D37A-40C7-B2DF-C12986C0526E}"
+ "ShowKeyOutput" = "11:TRUE"
+ "ExcludeFilters"
+ {
+ }
+ }
+ "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_E97571D3FBE048DABDC59B37762D800F"
+ {
+ "SourcePath" = "8:Win32\\Debug\\ipptool.exe"
+ "TargetName" = "8:"
+ "Tag" = "8:"
+ "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ "ProjectOutputGroupRegister" = "3:1"
+ "OutputConfiguration" = "8:"
+ "OutputGroupCanonicalName" = "8:Built"
+ "OutputProjectGuid" = "8:{B246D91E-61F2-4433-BFD2-6C2A96FBD4D4}"
+ "ShowKeyOutput" = "11:TRUE"
+ "ExcludeFilters"
+ {
+ }
+ }
+ "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_EA282F32A10B4ED1A81AA6133B997C6A"
+ {
+ "SourcePath" = "8:Win32\\Debug\\libcups2.dll"
+ "TargetName" = "8:"
+ "Tag" = "8:"
+ "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ "ProjectOutputGroupRegister" = "3:1"
+ "OutputConfiguration" = "8:"
+ "OutputGroupCanonicalName" = "8:Built"
+ "OutputProjectGuid" = "8:{CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}"
+ "ShowKeyOutput" = "11:TRUE"
+ "ExcludeFilters"
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/xcode/CUPS.xcodeproj/project.pbxproj b/xcode/CUPS.xcodeproj/project.pbxproj
index b16aca116..908e48568 100644
--- a/xcode/CUPS.xcodeproj/project.pbxproj
+++ b/xcode/CUPS.xcodeproj/project.pbxproj
@@ -14,7 +14,9 @@
);
dependencies = (
726AD704135E8AA1002C930D /* PBXTargetDependency */,
+ 2767FC5419267469000F61D3 /* PBXTargetDependency */,
273BF6DE1333B6370022CAAB /* PBXTargetDependency */,
+ 2767FC5619267469000F61D3 /* PBXTargetDependency */,
278C58D6136B641D00836530 /* PBXTargetDependency */,
270CCDB2135E3CDE00007BE2 /* PBXTargetDependency */,
);
@@ -28,6 +30,7 @@
);
dependencies = (
274FF5E313332D4300317ECB /* PBXTargetDependency */,
+ 72BEA8D819AFA8BB0085F0F3 /* PBXTargetDependency */,
72F75A711336FACD004BB496 /* PBXTargetDependency */,
274FF5E513332D4300317ECB /* PBXTargetDependency */,
274FF622133331D300317ECB /* PBXTargetDependency */,
@@ -42,6 +45,8 @@
274FF65E13333A3400317ECB /* PBXTargetDependency */,
724379531333FECE009631B9 /* PBXTargetDependency */,
724379111333E4EA009631B9 /* PBXTargetDependency */,
+ 72BEA8D619AFA8A00085F0F3 /* PBXTargetDependency */,
+ 72BEA8D419AFA89C0085F0F3 /* PBXTargetDependency */,
276683FF1337F7C5000D33D0 /* PBXTargetDependency */,
7243792B1333E962009631B9 /* PBXTargetDependency */,
276683D71337B24A000D33D0 /* PBXTargetDependency */,
@@ -193,11 +198,37 @@
276683FD1337F7B8000D33D0 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
2766840F1337FA38000D33D0 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
276684111337FA7C000D33D0 /* cupsaddsmb.c in Sources */ = {isa = PBXBuildFile; fileRef = 276684101337FA7C000D33D0 /* cupsaddsmb.c */; };
+ 2767FC5219266A36000F61D3 /* testdest.c in Sources */ = {isa = PBXBuildFile; fileRef = 2767FC5119266A36000F61D3 /* testdest.c */; };
+ 2767FC57192674C4000F61D3 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+ 2767FC58192674E0000F61D3 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+ 2767FC5F1926750C000F61D3 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC591926750C000F61D3 /* CoreFoundation.framework */; };
+ 2767FC601926750C000F61D3 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5A1926750C000F61D3 /* libiconv.dylib */; };
+ 2767FC611926750C000F61D3 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5B1926750C000F61D3 /* libresolv.dylib */; };
+ 2767FC621926750C000F61D3 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5C1926750C000F61D3 /* libz.dylib */; };
+ 2767FC631926750C000F61D3 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5D1926750C000F61D3 /* Security.framework */; };
+ 2767FC641926750C000F61D3 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */; };
+ 2767FC6519267538000F61D3 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+ 2767FC6619267538000F61D3 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC591926750C000F61D3 /* CoreFoundation.framework */; };
+ 2767FC6719267538000F61D3 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5B1926750C000F61D3 /* libresolv.dylib */; };
+ 2767FC6819267538000F61D3 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5C1926750C000F61D3 /* libz.dylib */; };
+ 2767FC6919267538000F61D3 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5D1926750C000F61D3 /* Security.framework */; };
+ 2767FC6A19267538000F61D3 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */; };
+ 2767FC6B192685E6000F61D3 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+ 2767FC6C192685E6000F61D3 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC591926750C000F61D3 /* CoreFoundation.framework */; };
+ 2767FC6D192685E6000F61D3 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5A1926750C000F61D3 /* libiconv.dylib */; };
+ 2767FC6E192685E6000F61D3 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5B1926750C000F61D3 /* libresolv.dylib */; };
+ 2767FC6F192685E6000F61D3 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5C1926750C000F61D3 /* libz.dylib */; };
+ 2767FC70192685E6000F61D3 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5D1926750C000F61D3 /* Security.framework */; };
+ 2767FC71192685E6000F61D3 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */; };
+ 2767FC7219268F06000F61D3 /* dest-job.c in Sources */ = {isa = PBXBuildFile; fileRef = 72CF95E018A13543000FCAE4 /* dest-job.c */; };
+ 2767FC7319268F09000F61D3 /* dest-localization.c in Sources */ = {isa = PBXBuildFile; fileRef = 72CF95E118A13543000FCAE4 /* dest-localization.c */; };
+ 2767FC7419268F0C000F61D3 /* dest-options.c in Sources */ = {isa = PBXBuildFile; fileRef = 72CF95E218A13543000FCAE4 /* dest-options.c */; };
278C58E3136B647200836530 /* testhttp.c in Sources */ = {isa = PBXBuildFile; fileRef = 278C58E2136B647200836530 /* testhttp.c */; };
278C58E9136B64B000836530 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
278C58EA136B64B000836530 /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
278C58EB136B64B000836530 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
278C58EC136B64B000836530 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+ 7200511218F492F200E7B81B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
720DD6CD1358FD720064AA82 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
720DD6D31358FDDE0064AA82 /* snmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 720DD6D21358FDDE0064AA82 /* snmp.c */; };
720DD6D413590AB90064AA82 /* ieee1284.c in Sources */ = {isa = PBXBuildFile; fileRef = 724379CA1334000E009631B9 /* ieee1284.c */; };
@@ -329,7 +360,8 @@
7258EAF513459B6D009286F1 /* libcupsimage.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72F75A611336F9A3004BB496 /* libcupsimage.dylib */; };
726AD702135E8A90002C930D /* ippserver.c in Sources */ = {isa = PBXBuildFile; fileRef = 726AD701135E8A90002C930D /* ippserver.c */; };
7271883D1374AB14001A2036 /* mime-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7271883C1374AB14001A2036 /* mime-private.h */; };
- 728FB7E8153600FA005426E1 /* tls.c in Sources */ = {isa = PBXBuildFile; fileRef = 728FB7E3153600FA005426E1 /* tls.c */; };
+ 727AD5B719100A58009F6862 /* tls.c in Sources */ = {isa = PBXBuildFile; fileRef = 727AD5B619100A58009F6862 /* tls.c */; };
+ 727AD5B819100A58009F6862 /* tls.c in Sources */ = {isa = PBXBuildFile; fileRef = 727AD5B619100A58009F6862 /* tls.c */; };
728FB7E91536161C005426E1 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
728FB7EA1536161C005426E1 /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
728FB7EB1536161C005426E1 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
@@ -337,7 +369,28 @@
728FB7EE15361642005426E1 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
728FB7F11536167A005426E1 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EF1536167A005426E1 /* libiconv.dylib */; };
728FB7F21536167A005426E1 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7F01536167A005426E1 /* libresolv.dylib */; };
+ 72BFD5FB191AF0A30005DA37 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+ 72BFD5FC191AF0A30005DA37 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+ 72BFD5FD191AF0A30005DA37 /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+ 72BFD5FE191AF0A30005DA37 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EF1536167A005426E1 /* libiconv.dylib */; };
+ 72BFD5FF191AF0A30005DA37 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7F01536167A005426E1 /* libresolv.dylib */; };
+ 72BFD600191AF0A30005DA37 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EC1536161C005426E1 /* libz.dylib */; };
+ 72BFD601191AF0A30005DA37 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+ 72BFD602191AF1270005DA37 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+ 72BFD603191AF1270005DA37 /* GSS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72D53A2915B49110003F877F /* GSS.framework */; };
+ 72BFD604191AF1270005DA37 /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+ 72BFD605191AF1270005DA37 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EF1536167A005426E1 /* libiconv.dylib */; };
+ 72BFD606191AF1270005DA37 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7F01536167A005426E1 /* libresolv.dylib */; };
+ 72BFD607191AF1270005DA37 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EC1536161C005426E1 /* libz.dylib */; };
+ 72BFD608191AF1270005DA37 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+ 72BFD609191AF14C0005DA37 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
72C16CB9137B195D007E4BF4 /* file.c in Sources */ = {isa = PBXBuildFile; fileRef = 72C16CB8137B195D007E4BF4 /* file.c */; };
+ 72CEF95618A966E000FA9B81 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+ 72CF95E318A13543000FCAE4 /* dest-job.c in Sources */ = {isa = PBXBuildFile; fileRef = 72CF95E018A13543000FCAE4 /* dest-job.c */; };
+ 72CF95E418A13543000FCAE4 /* dest-localization.c in Sources */ = {isa = PBXBuildFile; fileRef = 72CF95E118A13543000FCAE4 /* dest-localization.c */; };
+ 72CF95E518A13543000FCAE4 /* dest-options.c in Sources */ = {isa = PBXBuildFile; fileRef = 72CF95E218A13543000FCAE4 /* dest-options.c */; };
+ 72CF95EC18A19134000FCAE4 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+ 72CF95F318A19165000FCAE4 /* ippfind.c in Sources */ = {isa = PBXBuildFile; fileRef = 72CF95F218A19165000FCAE4 /* ippfind.c */; };
72D53A2A15B49110003F877F /* GSS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72D53A2915B49110003F877F /* GSS.framework */; };
72D53A2D15B4913D003F877F /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72D53A2C15B4913D003F877F /* IOKit.framework */; };
72D53A2E15B4915B003F877F /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
@@ -668,6 +721,27 @@
remoteGlobalIDString = 276684031337FA1D000D33D0;
remoteInfo = cupsaddsmb;
};
+ 2767FC4819266A0D000F61D3 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 274FF6891333B1C400317ECB;
+ remoteInfo = libcups_static;
+ };
+ 2767FC5319267469000F61D3 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 276683EF1337F78E000D33D0;
+ remoteInfo = ipptool;
+ };
+ 2767FC5519267469000F61D3 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 2767FC4619266A0D000F61D3;
+ remoteInfo = testdest;
+ };
278C58D5136B641D00836530 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
@@ -822,6 +896,34 @@
remoteGlobalIDString = 274FF6891333B1C400317ECB;
remoteInfo = libcups_static;
};
+ 72BEA8D319AFA89C0085F0F3 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 726AD6F6135E88F0002C930D;
+ remoteInfo = ippserver;
+ };
+ 72BEA8D519AFA8A00085F0F3 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 72CF95E618A19134000FCAE4;
+ remoteInfo = ippfind;
+ };
+ 72BEA8D719AFA8BB0085F0F3 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 274FF6891333B1C400317ECB;
+ remoteInfo = libcups_static;
+ };
+ 72CF95E818A19134000FCAE4 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 72220EAD1333047D00FCA411;
+ remoteInfo = libcups;
+ };
72F75A651336FA30004BB496 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
@@ -981,6 +1083,15 @@
);
runOnlyForDeploymentPostprocessing = 1;
};
+ 2767FC4C19266A0D000F61D3 /* CopyFiles */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = /usr/share/man/man1/;
+ dstSubfolderSpec = 0;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 1;
+ };
278C58C9136B640300836530 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
@@ -1071,6 +1182,15 @@
);
runOnlyForDeploymentPostprocessing = 1;
};
+ 72CF95ED18A19134000FCAE4 /* CopyFiles */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = /usr/share/man/man1/;
+ dstSubfolderSpec = 0;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 1;
+ };
72F75A501336F950004BB496 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
@@ -1083,6 +1203,9 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
+ 270B267D17F5C06700C8A3A9 /* tls-darwin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "tls-darwin.c"; path = "../cups/tls-darwin.c"; sourceTree = "<group>"; };
+ 270B267E17F5C06700C8A3A9 /* tls-gnutls.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "tls-gnutls.c"; path = "../cups/tls-gnutls.c"; sourceTree = "<group>"; };
+ 270B268117F5C5D600C8A3A9 /* tls-sspi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "tls-sspi.c"; path = "../cups/tls-sspi.c"; sourceTree = "<group>"; };
270CCDA7135E3C9E00007BE2 /* testmime */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testmime; sourceTree = BUILT_PRODUCTS_DIR; };
270CCDBB135E3D3E00007BE2 /* testmime.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testmime.c; path = ../scheduler/testmime.c; sourceTree = "<group>"; };
2732E089137A3F5200FAFEF6 /* cancel.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = cancel.c; path = ../systemv/cancel.c; sourceTree = "<group>"; };
@@ -1093,7 +1216,6 @@
2732E08E137A3F5200FAFEF6 /* lpinfo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lpinfo.c; path = ../systemv/lpinfo.c; sourceTree = "<group>"; };
2732E08F137A3F5200FAFEF6 /* lpmove.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lpmove.c; path = ../systemv/lpmove.c; sourceTree = "<group>"; };
2732E090137A3F5200FAFEF6 /* lpoptions.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lpoptions.c; path = ../systemv/lpoptions.c; sourceTree = "<group>"; };
- 2732E091137A3F5200FAFEF6 /* lppasswd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lppasswd.c; path = ../systemv/lppasswd.c; sourceTree = "<group>"; };
2732E092137A3F5200FAFEF6 /* lpstat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lpstat.c; path = ../systemv/lpstat.c; sourceTree = "<group>"; };
273BF6BD1333B5000022CAAB /* testcups */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testcups; sourceTree = BUILT_PRODUCTS_DIR; };
273BF6C61333B5370022CAAB /* testcups.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testcups.c; path = ../cups/testcups.c; sourceTree = "<group>"; };
@@ -1148,13 +1270,22 @@
276683F91337F7A9000D33D0 /* ipptool.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ipptool.c; path = ../test/ipptool.c; sourceTree = "<group>"; };
276684041337FA1D000D33D0 /* cupsaddsmb */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = cupsaddsmb; sourceTree = BUILT_PRODUCTS_DIR; };
276684101337FA7C000D33D0 /* cupsaddsmb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cupsaddsmb.c; path = ../systemv/cupsaddsmb.c; sourceTree = "<group>"; };
+ 2767FC5019266A0D000F61D3 /* testdest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testdest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 2767FC5119266A36000F61D3 /* testdest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testdest.c; path = ../cups/testdest.c; sourceTree = "<group>"; };
+ 2767FC591926750C000F61D3 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
+ 2767FC5A1926750C000F61D3 /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = usr/lib/libiconv.dylib; sourceTree = SDKROOT; };
+ 2767FC5B1926750C000F61D3 /* libresolv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libresolv.dylib; path = usr/lib/libresolv.dylib; sourceTree = SDKROOT; };
+ 2767FC5C1926750C000F61D3 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
+ 2767FC5D1926750C000F61D3 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
+ 2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
+ 2767FC7519269687000F61D3 /* pwg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pwg.h; path = ../cups/pwg.h; sourceTree = "<group>"; };
+ 2767FC76192696A0000F61D3 /* raster-private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "raster-private.h"; path = "../cups/raster-private.h"; sourceTree = "<group>"; };
278C58CB136B640300836530 /* testhttp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testhttp; sourceTree = BUILT_PRODUCTS_DIR; };
278C58E2136B647200836530 /* testhttp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testhttp.c; path = ../cups/testhttp.c; sourceTree = "<group>"; };
278C58E5136B64AF00836530 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
278C58E6136B64B000836530 /* Kerberos.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Kerberos.framework; path = /System/Library/Frameworks/Kerberos.framework; sourceTree = "<absolute>"; };
278C58E7136B64B000836530 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = "<absolute>"; };
278C58E8136B64B000836530 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = /System/Library/Frameworks/SystemConfiguration.framework; sourceTree = "<absolute>"; };
- 27D3037C134148CB00F022B1 /* libcups_s.exp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.exports; name = libcups_s.exp; path = ../cups/libcups_s.exp; sourceTree = "<group>"; };
27D3037D134148CB00F022B1 /* libcups2.def */ = {isa = PBXFileReference; lastKnownFileType = text; name = libcups2.def; path = ../cups/libcups2.def; sourceTree = "<group>"; };
720DD6C21358FD5F0064AA82 /* snmp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = snmp; sourceTree = BUILT_PRODUCTS_DIR; };
720DD6D21358FDDE0064AA82 /* snmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snmp.c; path = ../backend/snmp.c; sourceTree = "<group>"; };
@@ -1191,7 +1322,7 @@
72220EE0133305BB00FCA411 /* http-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "http-private.h"; path = "../cups/http-private.h"; sourceTree = "<group>"; };
72220EE1133305BB00FCA411 /* http-support.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "http-support.c"; path = "../cups/http-support.c"; sourceTree = "<group>"; };
72220EE2133305BB00FCA411 /* http.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = http.c; path = ../cups/http.c; sourceTree = "<group>"; };
- 72220EE3133305BB00FCA411 /* http.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = http.h; path = ../cups/http.h; sourceTree = "<group>"; };
+ 72220EE3133305BB00FCA411 /* http.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = http.h; path = ../cups/http.h; sourceTree = "<group>"; wrapsLines = 1; };
72220EE4133305BB00FCA411 /* ipp-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "ipp-private.h"; path = "../cups/ipp-private.h"; sourceTree = "<group>"; };
72220EE5133305BB00FCA411 /* ipp-support.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ipp-support.c"; path = "../cups/ipp-support.c"; sourceTree = "<group>"; };
72220EE6133305BB00FCA411 /* ipp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ipp.c; path = ../cups/ipp.c; sourceTree = "<group>"; };
@@ -1276,6 +1407,9 @@
72220FB313330BCE00FCA411 /* mime.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mime.c; path = ../scheduler/mime.c; sourceTree = "<group>"; };
72220FB413330BCE00FCA411 /* mime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mime.h; path = ../scheduler/mime.h; sourceTree = "<group>"; };
72220FB513330BCE00FCA411 /* type.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = type.c; path = ../scheduler/type.c; sourceTree = "<group>"; };
+ 7226369B18AE6D19004ED309 /* org.cups.cups-lpd.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "org.cups.cups-lpd.plist"; path = "../scheduler/org.cups.cups-lpd.plist"; sourceTree = SOURCE_ROOT; };
+ 7226369C18AE6D19004ED309 /* org.cups.cupsd.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = org.cups.cupsd.plist; path = ../scheduler/org.cups.cupsd.plist; sourceTree = SOURCE_ROOT; };
+ 7226369D18AE73BB004ED309 /* config.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; name = config.h.in; path = ../config.h.in; sourceTree = "<group>"; };
7234F41F1378A16F00D3E9C9 /* array-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "array-private.h"; path = "../cups/array-private.h"; sourceTree = "<group>"; };
724378FD1333E43E009631B9 /* ipp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ipp; sourceTree = BUILT_PRODUCTS_DIR; };
724379091333E4E3009631B9 /* backend-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "backend-private.h"; path = "../backend/backend-private.h"; sourceTree = "<group>"; };
@@ -1306,27 +1440,127 @@
7271882213746EA8001A2036 /* rastertohp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = rastertohp.c; path = ../filter/rastertohp.c; sourceTree = "<group>"; };
7271882313746EA8001A2036 /* rastertolabel.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = rastertolabel.c; path = ../filter/rastertolabel.c; sourceTree = "<group>"; };
7271883C1374AB14001A2036 /* mime-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "mime-private.h"; path = "../scheduler/mime-private.h"; sourceTree = "<group>"; };
- 728FB7E0153600FA005426E1 /* tls-darwin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "tls-darwin.c"; path = "../scheduler/tls-darwin.c"; sourceTree = "<group>"; };
- 728FB7E1153600FA005426E1 /* tls-gnutls.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "tls-gnutls.c"; path = "../scheduler/tls-gnutls.c"; sourceTree = "<group>"; };
- 728FB7E2153600FA005426E1 /* tls-openssl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "tls-openssl.c"; path = "../scheduler/tls-openssl.c"; sourceTree = "<group>"; };
- 728FB7E3153600FA005426E1 /* tls.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tls.c; path = ../scheduler/tls.c; sourceTree = "<group>"; };
- 728FB7EC1536161C005426E1 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = ../../../../../usr/lib/libz.dylib; sourceTree = "<group>"; };
- 728FB7EF1536167A005426E1 /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = ../../../../../usr/lib/libiconv.dylib; sourceTree = "<group>"; };
- 728FB7F01536167A005426E1 /* libresolv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libresolv.dylib; path = ../../../../../usr/lib/libresolv.dylib; sourceTree = "<group>"; };
+ 727AD5B619100A58009F6862 /* tls.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tls.c; path = ../cups/tls.c; sourceTree = "<group>"; };
+ 727EF02F192E3498001EF690 /* admin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = admin.c; path = "../cgi-bin/admin.c"; sourceTree = "<group>"; };
+ 727EF030192E3498001EF690 /* cgi-private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "cgi-private.h"; path = "../cgi-bin/cgi-private.h"; sourceTree = "<group>"; };
+ 727EF031192E3498001EF690 /* cgi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = cgi.h; path = "../cgi-bin/cgi.h"; sourceTree = "<group>"; };
+ 727EF032192E3498001EF690 /* classes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = classes.c; path = "../cgi-bin/classes.c"; sourceTree = "<group>"; };
+ 727EF033192E3498001EF690 /* help-index.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "help-index.c"; path = "../cgi-bin/help-index.c"; sourceTree = "<group>"; };
+ 727EF034192E3498001EF690 /* help-index.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "help-index.h"; path = "../cgi-bin/help-index.h"; sourceTree = "<group>"; };
+ 727EF035192E3498001EF690 /* help.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = help.c; path = "../cgi-bin/help.c"; sourceTree = "<group>"; };
+ 727EF036192E3498001EF690 /* html.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = html.c; path = "../cgi-bin/html.c"; sourceTree = "<group>"; };
+ 727EF037192E3498001EF690 /* ipp-var.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "ipp-var.c"; path = "../cgi-bin/ipp-var.c"; sourceTree = "<group>"; };
+ 727EF038192E3498001EF690 /* jobs.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jobs.c; path = "../cgi-bin/jobs.c"; sourceTree = "<group>"; };
+ 727EF039192E3498001EF690 /* makedocset.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = makedocset.c; path = "../cgi-bin/makedocset.c"; sourceTree = "<group>"; };
+ 727EF03A192E3498001EF690 /* printers.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = printers.c; path = "../cgi-bin/printers.c"; sourceTree = "<group>"; };
+ 727EF03B192E3498001EF690 /* search.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = search.c; path = "../cgi-bin/search.c"; sourceTree = "<group>"; };
+ 727EF03C192E3498001EF690 /* template.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = template.c; path = "../cgi-bin/template.c"; sourceTree = "<group>"; };
+ 727EF03D192E3498001EF690 /* testcgi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testcgi.c; path = "../cgi-bin/testcgi.c"; sourceTree = "<group>"; };
+ 727EF03E192E3498001EF690 /* testhi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testhi.c; path = "../cgi-bin/testhi.c"; sourceTree = "<group>"; };
+ 727EF03F192E3498001EF690 /* testtemplate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testtemplate.c; path = "../cgi-bin/testtemplate.c"; sourceTree = "<group>"; };
+ 727EF040192E3498001EF690 /* var.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = var.c; path = "../cgi-bin/var.c"; sourceTree = "<group>"; };
+ 727EF041192E3544001EF690 /* testadmin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testadmin.c; path = ../cups/testadmin.c; sourceTree = "<group>"; };
+ 727EF042192E3544001EF690 /* testarray.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testarray.c; path = ../cups/testarray.c; sourceTree = "<group>"; };
+ 727EF043192E3544001EF690 /* testcache.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testcache.c; path = ../cups/testcache.c; sourceTree = "<group>"; };
+ 727EF044192E3544001EF690 /* testconflicts.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testconflicts.c; path = ../cups/testconflicts.c; sourceTree = "<group>"; };
+ 727EF045192E3544001EF690 /* testfile.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testfile.c; path = ../cups/testfile.c; sourceTree = "<group>"; };
+ 727EF046192E3544001EF690 /* testi18n.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testi18n.c; path = ../cups/testi18n.c; sourceTree = "<group>"; };
+ 727EF047192E3544001EF690 /* testipp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testipp.c; path = ../cups/testipp.c; sourceTree = "<group>"; };
+ 727EF048192E3544001EF690 /* testlang.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testlang.c; path = ../cups/testlang.c; sourceTree = "<group>"; };
+ 727EF049192E3544001EF690 /* testoptions.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testoptions.c; path = ../cups/testoptions.c; sourceTree = "<group>"; };
+ 727EF04A192E3544001EF690 /* testppd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testppd.c; path = ../cups/testppd.c; sourceTree = "<group>"; };
+ 727EF04B192E3544001EF690 /* testpwg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testpwg.c; path = ../cups/testpwg.c; sourceTree = "<group>"; };
+ 727EF04C192E3544001EF690 /* testsnmp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testsnmp.c; path = ../cups/testsnmp.c; sourceTree = "<group>"; };
+ 727EF04D192E3602001EF690 /* testlpd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testlpd.c; path = ../scheduler/testlpd.c; sourceTree = "<group>"; };
+ 727EF04E192E3602001EF690 /* testspeed.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testspeed.c; path = ../scheduler/testspeed.c; sourceTree = "<group>"; };
+ 727EF04F192E3602001EF690 /* testsub.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testsub.c; path = ../scheduler/testsub.c; sourceTree = "<group>"; };
+ 728FB7EC1536161C005426E1 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = "<absolute>"; };
+ 728FB7EF1536167A005426E1 /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = /usr/lib/libiconv.dylib; sourceTree = "<absolute>"; };
+ 728FB7F01536167A005426E1 /* libresolv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libresolv.dylib; path = /usr/lib/libresolv.dylib; sourceTree = "<absolute>"; };
72A4332F155844CF002E172D /* libcups_static.a */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libcups_static.a; sourceTree = BUILT_PRODUCTS_DIR; };
72C16CB8137B195D007E4BF4 /* file.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = file.c; path = ../scheduler/file.c; sourceTree = SOURCE_ROOT; };
- 72D53A2915B49110003F877F /* GSS.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GSS.framework; path = ../../../../../System/Library/Frameworks/GSS.framework; sourceTree = "<group>"; };
- 72D53A2C15B4913D003F877F /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = ../../../../../System/Library/Frameworks/IOKit.framework; sourceTree = "<group>"; };
- 72D53A3315B4925B003F877F /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = ../../../../../System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<group>"; };
+ 72CF95E018A13543000FCAE4 /* dest-job.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "dest-job.c"; path = "../cups/dest-job.c"; sourceTree = "<group>"; };
+ 72CF95E118A13543000FCAE4 /* dest-localization.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "dest-localization.c"; path = "../cups/dest-localization.c"; sourceTree = "<group>"; };
+ 72CF95E218A13543000FCAE4 /* dest-options.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "dest-options.c"; path = "../cups/dest-options.c"; sourceTree = "<group>"; };
+ 72CF95F118A19134000FCAE4 /* ipptool copy */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "ipptool copy"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 72CF95F218A19165000FCAE4 /* ippfind.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ippfind.c; path = ../test/ippfind.c; sourceTree = "<group>"; };
+ 72D53A2915B49110003F877F /* GSS.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GSS.framework; path = /System/Library/Frameworks/GSS.framework; sourceTree = "<absolute>"; };
+ 72D53A2C15B4913D003F877F /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; };
+ 72D53A3315B4925B003F877F /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<absolute>"; };
72D53A3615B4929D003F877F /* colorman.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = colorman.c; path = ../scheduler/colorman.c; sourceTree = "<group>"; };
72D53A3715B4929D003F877F /* colorman.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = colorman.h; path = ../scheduler/colorman.h; sourceTree = "<group>"; };
- 72D53A3915B492FA003F877F /* libpam.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libpam.dylib; path = ../../../../../usr/lib/libpam.dylib; sourceTree = "<group>"; };
+ 72D53A3915B492FA003F877F /* libpam.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libpam.dylib; path = /usr/lib/libpam.dylib; sourceTree = "<absolute>"; };
+ 72E65BA318DC797E00097E89 /* configure.ac */ = {isa = PBXFileReference; lastKnownFileType = text; name = configure.ac; path = ../configure.ac; sourceTree = "<group>"; };
+ 72E65BA418DC799B00097E89 /* cups-common.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-common.m4"; path = "../config-scripts/cups-common.m4"; sourceTree = "<group>"; };
+ 72E65BA518DC799B00097E89 /* cups-compiler.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-compiler.m4"; path = "../config-scripts/cups-compiler.m4"; sourceTree = "<group>"; };
+ 72E65BA618DC799B00097E89 /* cups-defaults.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-defaults.m4"; path = "../config-scripts/cups-defaults.m4"; sourceTree = "<group>"; };
+ 72E65BA718DC799B00097E89 /* cups-directories.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-directories.m4"; path = "../config-scripts/cups-directories.m4"; sourceTree = "<group>"; };
+ 72E65BA818DC799B00097E89 /* cups-dnssd.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-dnssd.m4"; path = "../config-scripts/cups-dnssd.m4"; sourceTree = "<group>"; };
+ 72E65BA918DC799B00097E89 /* cups-gssapi.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-gssapi.m4"; path = "../config-scripts/cups-gssapi.m4"; sourceTree = "<group>"; };
+ 72E65BAA18DC799B00097E89 /* cups-largefile.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-largefile.m4"; path = "../config-scripts/cups-largefile.m4"; sourceTree = "<group>"; };
+ 72E65BAB18DC799B00097E89 /* cups-startup.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-startup.m4"; path = "../config-scripts/cups-startup.m4"; sourceTree = "<group>"; };
+ 72E65BAC18DC799B00097E89 /* cups-libtool.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-libtool.m4"; path = "../config-scripts/cups-libtool.m4"; sourceTree = "<group>"; };
+ 72E65BAD18DC799B00097E89 /* cups-manpages.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-manpages.m4"; path = "../config-scripts/cups-manpages.m4"; sourceTree = "<group>"; };
+ 72E65BAE18DC799B00097E89 /* cups-network.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-network.m4"; path = "../config-scripts/cups-network.m4"; sourceTree = "<group>"; };
+ 72E65BAF18DC799B00097E89 /* cups-opsys.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-opsys.m4"; path = "../config-scripts/cups-opsys.m4"; sourceTree = "<group>"; };
+ 72E65BB018DC799B00097E89 /* cups-pam.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-pam.m4"; path = "../config-scripts/cups-pam.m4"; sourceTree = "<group>"; };
+ 72E65BB118DC799B00097E89 /* cups-poll.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-poll.m4"; path = "../config-scripts/cups-poll.m4"; sourceTree = "<group>"; };
+ 72E65BB218DC799B00097E89 /* cups-scripting.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-scripting.m4"; path = "../config-scripts/cups-scripting.m4"; sourceTree = "<group>"; };
+ 72E65BB318DC799B00097E89 /* cups-sharedlibs.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-sharedlibs.m4"; path = "../config-scripts/cups-sharedlibs.m4"; sourceTree = "<group>"; };
+ 72E65BB418DC799B00097E89 /* cups-ssl.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-ssl.m4"; path = "../config-scripts/cups-ssl.m4"; sourceTree = "<group>"; };
+ 72E65BB518DC799B00097E89 /* cups-threads.m4 */ = {isa = PBXFileReference; lastKnownFileType = text; name = "cups-threads.m4"; path = "../config-scripts/cups-threads.m4"; sourceTree = "<group>"; };
+ 72E65BB618DC79CC00097E89 /* cups-config.in */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; name = "cups-config.in"; path = "../cups-config.in"; sourceTree = "<group>"; };
+ 72E65BB718DC79CC00097E89 /* Makedefs.in */ = {isa = PBXFileReference; lastKnownFileType = text; name = Makedefs.in; path = ../Makedefs.in; sourceTree = "<group>"; };
+ 72E65BB918DC7A3600097E89 /* doc */ = {isa = PBXFileReference; lastKnownFileType = folder; name = doc; path = ../doc; sourceTree = "<group>"; };
+ 72E65BBA18DC7A3600097E89 /* man */ = {isa = PBXFileReference; lastKnownFileType = folder; name = man; path = ../man; sourceTree = "<group>"; };
+ 72E65BBB18DC7A6B00097E89 /* api-array.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "api-array.header"; path = "../cups/api-array.header"; sourceTree = "<group>"; };
+ 72E65BBC18DC7A6B00097E89 /* api-array.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "api-array.shtml"; path = "../cups/api-array.shtml"; sourceTree = "<group>"; };
+ 72E65BBD18DC7A6B00097E89 /* api-cups.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "api-cups.header"; path = "../cups/api-cups.header"; sourceTree = "<group>"; };
+ 72E65BBE18DC7A6B00097E89 /* api-cups.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "api-cups.shtml"; path = "../cups/api-cups.shtml"; sourceTree = "<group>"; };
+ 72E65BBF18DC7A6B00097E89 /* api-filedir.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "api-filedir.header"; path = "../cups/api-filedir.header"; sourceTree = "<group>"; };
+ 72E65BC018DC7A6B00097E89 /* api-filedir.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "api-filedir.shtml"; path = "../cups/api-filedir.shtml"; sourceTree = "<group>"; };
+ 72E65BC118DC7A6B00097E89 /* api-filter.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "api-filter.header"; path = "../cups/api-filter.header"; sourceTree = "<group>"; };
+ 72E65BC218DC7A6B00097E89 /* api-filter.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "api-filter.shtml"; path = "../cups/api-filter.shtml"; sourceTree = "<group>"; };
+ 72E65BC318DC7A6B00097E89 /* api-httpipp.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "api-httpipp.header"; path = "../cups/api-httpipp.header"; sourceTree = "<group>"; };
+ 72E65BC418DC7A6B00097E89 /* api-httpipp.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "api-httpipp.shtml"; path = "../cups/api-httpipp.shtml"; sourceTree = "<group>"; };
+ 72E65BC518DC7A6B00097E89 /* api-overview.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "api-overview.header"; path = "../cups/api-overview.header"; sourceTree = "<group>"; };
+ 72E65BC618DC7A6B00097E89 /* api-overview.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "api-overview.shtml"; path = "../cups/api-overview.shtml"; sourceTree = "<group>"; };
+ 72E65BC718DC7A6B00097E89 /* api-ppd.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "api-ppd.header"; path = "../cups/api-ppd.header"; sourceTree = "<group>"; };
+ 72E65BC818DC7A6B00097E89 /* api-ppd.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "api-ppd.shtml"; path = "../cups/api-ppd.shtml"; sourceTree = "<group>"; };
+ 72E65BC918DC7A7E00097E89 /* api-ppdc.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "api-ppdc.header"; path = "../ppdc/api-ppdc.header"; sourceTree = "<group>"; };
+ 72E65BCA18DC7A7E00097E89 /* api-ppdc.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "api-ppdc.shtml"; path = "../ppdc/api-ppdc.shtml"; sourceTree = "<group>"; };
+ 72E65BCB18DC7A9800097E89 /* api-raster.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "api-raster.header"; path = "../filter/api-raster.header"; sourceTree = "<group>"; };
+ 72E65BCC18DC7A9800097E89 /* api-raster.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "api-raster.shtml"; path = "../filter/api-raster.shtml"; sourceTree = "<group>"; };
+ 72E65BCD18DC7A9800097E89 /* postscript-driver.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "postscript-driver.header"; path = "../filter/postscript-driver.header"; sourceTree = "<group>"; };
+ 72E65BCE18DC7A9800097E89 /* postscript-driver.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "postscript-driver.shtml"; path = "../filter/postscript-driver.shtml"; sourceTree = "<group>"; };
+ 72E65BCF18DC7A9800097E89 /* ppd-compiler.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "ppd-compiler.header"; path = "../filter/ppd-compiler.header"; sourceTree = "<group>"; };
+ 72E65BD018DC7A9800097E89 /* ppd-compiler.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "ppd-compiler.shtml"; path = "../filter/ppd-compiler.shtml"; sourceTree = "<group>"; };
+ 72E65BD118DC7A9800097E89 /* raster-driver.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "raster-driver.header"; path = "../filter/raster-driver.header"; sourceTree = "<group>"; };
+ 72E65BD218DC7A9800097E89 /* raster-driver.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "raster-driver.shtml"; path = "../filter/raster-driver.shtml"; sourceTree = "<group>"; };
+ 72E65BD318DC7A9800097E89 /* spec-ppd.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "spec-ppd.header"; path = "../filter/spec-ppd.header"; sourceTree = "<group>"; };
+ 72E65BD418DC7A9800097E89 /* spec-ppd.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "spec-ppd.shtml"; path = "../filter/spec-ppd.shtml"; sourceTree = "<group>"; };
+ 72E65BD518DC818400097E89 /* org.cups.cups-lpd.plist.in */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = "org.cups.cups-lpd.plist.in"; path = "../scheduler/org.cups.cups-lpd.plist.in"; sourceTree = SOURCE_ROOT; };
+ 72E65BD618DC818400097E89 /* org.cups.cupsd.path.in */ = {isa = PBXFileReference; lastKnownFileType = text; name = org.cups.cupsd.path.in; path = ../scheduler/org.cups.cupsd.path.in; sourceTree = SOURCE_ROOT; };
+ 72E65BD718DC818400097E89 /* org.cups.cupsd.service.in */ = {isa = PBXFileReference; lastKnownFileType = text; name = org.cups.cupsd.service.in; path = ../scheduler/org.cups.cupsd.service.in; sourceTree = SOURCE_ROOT; };
+ 72E65BD818DC818400097E89 /* org.cups.cupsd.socket.in */ = {isa = PBXFileReference; lastKnownFileType = text; name = org.cups.cupsd.socket.in; path = ../scheduler/org.cups.cupsd.socket.in; sourceTree = SOURCE_ROOT; };
+ 72E65BD918DC850A00097E89 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; name = Makefile; path = ../Makefile; sourceTree = "<group>"; };
+ 72E65BDA18DC852700097E89 /* api-mime.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "api-mime.header"; path = "../scheduler/api-mime.header"; sourceTree = SOURCE_ROOT; };
+ 72E65BDB18DC852700097E89 /* api-mime.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "api-mime.shtml"; path = "../scheduler/api-mime.shtml"; sourceTree = SOURCE_ROOT; };
+ 72E65BDC18DC852700097E89 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; name = Makefile; path = ../scheduler/Makefile; sourceTree = SOURCE_ROOT; };
+ 72E65BDD18DCA35700097E89 /* CHANGES-1.7.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "CHANGES-1.7.txt"; path = "../CHANGES-1.7.txt"; sourceTree = "<group>"; };
+ 72E65BDE18DCA35700097E89 /* CHANGES.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = CHANGES.txt; path = ../CHANGES.txt; sourceTree = "<group>"; };
+ 72E65BDF18DCA35700097E89 /* CREDITS.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = CREDITS.txt; path = ../CREDITS.txt; sourceTree = "<group>"; };
+ 72E65BE018DCA35700097E89 /* INSTALL.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = INSTALL.txt; path = ../INSTALL.txt; sourceTree = "<group>"; };
+ 72E65BE118DCA35700097E89 /* IPPTOOL.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = IPPTOOL.txt; path = ../IPPTOOL.txt; sourceTree = "<group>"; };
+ 72E65BE218DCA35700097E89 /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = LICENSE.txt; path = ../LICENSE.txt; sourceTree = "<group>"; };
+ 72E65BE318DCA35700097E89 /* README.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = README.txt; path = ../README.txt; sourceTree = "<group>"; };
72F75A521336F950004BB496 /* cupstestppd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = cupstestppd; sourceTree = BUILT_PRODUCTS_DIR; };
72F75A5B1336F988004BB496 /* cupstestppd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cupstestppd.c; path = ../systemv/cupstestppd.c; sourceTree = "<group>"; };
72F75A611336F9A3004BB496 /* libcupsimage.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libcupsimage.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
72F75A691336FA8A004BB496 /* error.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = error.c; path = ../filter/error.c; sourceTree = "<group>"; };
72F75A6A1336FA8A004BB496 /* interpret.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = interpret.c; path = ../filter/interpret.c; sourceTree = "<group>"; };
72F75A6B1336FA8A004BB496 /* raster.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = raster.c; path = ../filter/raster.c; sourceTree = "<group>"; };
+ 72F7F1D719D1C0CC00870B09 /* org.cups.usb-quirks */ = {isa = PBXFileReference; lastKnownFileType = text; name = "org.cups.usb-quirks"; path = "../backend/org.cups.usb-quirks"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -1334,6 +1568,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 2767FC57192674C4000F61D3 /* libcups_static.a in Frameworks */,
278C58E9136B64B000836530 /* CoreFoundation.framework in Frameworks */,
278C58EA136B64B000836530 /* Kerberos.framework in Frameworks */,
278C58EB136B64B000836530 /* Security.framework in Frameworks */,
@@ -1346,6 +1581,13 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 2767FC5F1926750C000F61D3 /* CoreFoundation.framework in Frameworks */,
+ 2767FC601926750C000F61D3 /* libiconv.dylib in Frameworks */,
+ 2767FC611926750C000F61D3 /* libresolv.dylib in Frameworks */,
+ 2767FC621926750C000F61D3 /* libz.dylib in Frameworks */,
+ 2767FC631926750C000F61D3 /* Security.framework in Frameworks */,
+ 2767FC641926750C000F61D3 /* SystemConfiguration.framework in Frameworks */,
+ 2767FC58192674E0000F61D3 /* libcups_static.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1362,6 +1604,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 7200511218F492F200E7B81B /* CoreFoundation.framework in Frameworks */,
274FF6231333321400317ECB /* libcups.dylib in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -1378,6 +1621,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 72CEF95618A966E000FA9B81 /* libcups.dylib in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1402,6 +1646,14 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 72BFD609191AF14C0005DA37 /* SystemConfiguration.framework in Frameworks */,
+ 72BFD602191AF1270005DA37 /* CoreFoundation.framework in Frameworks */,
+ 72BFD603191AF1270005DA37 /* GSS.framework in Frameworks */,
+ 72BFD604191AF1270005DA37 /* Kerberos.framework in Frameworks */,
+ 72BFD605191AF1270005DA37 /* libiconv.dylib in Frameworks */,
+ 72BFD606191AF1270005DA37 /* libresolv.dylib in Frameworks */,
+ 72BFD607191AF1270005DA37 /* libz.dylib in Frameworks */,
+ 72BFD608191AF1270005DA37 /* Security.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1474,10 +1726,31 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 2767FC4B19266A0D000F61D3 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 2767FC6B192685E6000F61D3 /* libcups_static.a in Frameworks */,
+ 2767FC6C192685E6000F61D3 /* CoreFoundation.framework in Frameworks */,
+ 2767FC6D192685E6000F61D3 /* libiconv.dylib in Frameworks */,
+ 2767FC6E192685E6000F61D3 /* libresolv.dylib in Frameworks */,
+ 2767FC6F192685E6000F61D3 /* libz.dylib in Frameworks */,
+ 2767FC70192685E6000F61D3 /* Security.framework in Frameworks */,
+ 2767FC71192685E6000F61D3 /* SystemConfiguration.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
278C58C8136B640300836530 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 72BFD5FB191AF0A30005DA37 /* libcups_static.a in Frameworks */,
+ 72BFD5FC191AF0A30005DA37 /* CoreFoundation.framework in Frameworks */,
+ 72BFD5FD191AF0A30005DA37 /* Kerberos.framework in Frameworks */,
+ 72BFD5FE191AF0A30005DA37 /* libiconv.dylib in Frameworks */,
+ 72BFD5FF191AF0A30005DA37 /* libresolv.dylib in Frameworks */,
+ 72BFD600191AF0A30005DA37 /* libz.dylib in Frameworks */,
+ 72BFD601191AF0A30005DA37 /* Security.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1585,6 +1858,20 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 2767FC6519267538000F61D3 /* libcups_static.a in Frameworks */,
+ 2767FC6619267538000F61D3 /* CoreFoundation.framework in Frameworks */,
+ 2767FC6719267538000F61D3 /* libresolv.dylib in Frameworks */,
+ 2767FC6819267538000F61D3 /* libz.dylib in Frameworks */,
+ 2767FC6919267538000F61D3 /* Security.framework in Frameworks */,
+ 2767FC6A19267538000F61D3 /* SystemConfiguration.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 72CF95EB18A19134000FCAE4 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 72CF95EC18A19134000FCAE4 /* libcups.dylib in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1611,12 +1898,29 @@
273BF6B81333B4A90022CAAB /* tests */ = {
isa = PBXGroup;
children = (
+ 727EF041192E3544001EF690 /* testadmin.c */,
+ 727EF042192E3544001EF690 /* testarray.c */,
+ 727EF043192E3544001EF690 /* testcache.c */,
+ 727EF044192E3544001EF690 /* testconflicts.c */,
273BF6C61333B5370022CAAB /* testcups.c */,
+ 2767FC5119266A36000F61D3 /* testdest.c */,
+ 727EF045192E3544001EF690 /* testfile.c */,
278C58E2136B647200836530 /* testhttp.c */,
+ 727EF046192E3544001EF690 /* testi18n.c */,
+ 727EF047192E3544001EF690 /* testipp.c */,
+ 727EF048192E3544001EF690 /* testlang.c */,
+ 727EF04D192E3602001EF690 /* testlpd.c */,
270CCDBB135E3D3E00007BE2 /* testmime.c */,
+ 727EF049192E3544001EF690 /* testoptions.c */,
+ 727EF04A192E3544001EF690 /* testppd.c */,
+ 727EF04B192E3544001EF690 /* testpwg.c */,
+ 727EF04C192E3544001EF690 /* testsnmp.c */,
+ 727EF04E192E3602001EF690 /* testspeed.c */,
+ 727EF04F192E3602001EF690 /* testsub.c */,
);
name = tests;
sourceTree = "<group>";
+ wrapsLines = 1;
};
274FF5D513332C2C00317ECB /* daemon */ = {
isa = PBXGroup;
@@ -1630,6 +1934,7 @@
);
name = daemon;
sourceTree = "<group>";
+ wrapsLines = 1;
};
274FF5F41333310400317ECB /* libcupsppdc */ = {
isa = PBXGroup;
@@ -1657,6 +1962,7 @@
);
name = libcupsppdc;
sourceTree = "<group>";
+ wrapsLines = 1;
};
274FF67313333B0A00317ECB /* commands */ = {
isa = PBXGroup;
@@ -1668,6 +1974,7 @@
274FF68713333B6E00317ECB /* cupsfilter.c */,
2732E08B137A3F5200FAFEF6 /* cupstestdsc.c */,
72F75A5B1336F988004BB496 /* cupstestppd.c */,
+ 72CF95F218A19165000FCAE4 /* ippfind.c */,
726AD701135E8A90002C930D /* ippserver.c */,
276683F91337F7A9000D33D0 /* ipptool.c */,
2732E08C137A3F5200FAFEF6 /* lp.c */,
@@ -1675,11 +1982,11 @@
2732E08E137A3F5200FAFEF6 /* lpinfo.c */,
2732E08F137A3F5200FAFEF6 /* lpmove.c */,
2732E090137A3F5200FAFEF6 /* lpoptions.c */,
- 2732E091137A3F5200FAFEF6 /* lppasswd.c */,
2732E092137A3F5200FAFEF6 /* lpstat.c */,
);
name = commands;
sourceTree = "<group>";
+ wrapsLines = 1;
};
276683CB1337B1CC000D33D0 /* ppdc tools */ = {
isa = PBXGroup;
@@ -1692,6 +1999,7 @@
);
name = "ppdc tools";
sourceTree = "<group>";
+ wrapsLines = 1;
};
72220EAF1333047D00FCA411 /* Products */ = {
isa = PBXGroup;
@@ -1723,6 +2031,8 @@
726AD6F7135E88F0002C930D /* ippserver */,
278C58CB136B640300836530 /* testhttp */,
72A4332F155844CF002E172D /* libcups_static.a */,
+ 72CF95F118A19134000FCAE4 /* ipptool copy */,
+ 2767FC5019266A0D000F61D3 /* testdest */,
);
name = Products;
sourceTree = "<group>";
@@ -1731,7 +2041,6 @@
isa = PBXGroup;
children = (
276683561337A8C5000D33D0 /* cups.strings */,
- 27D3037C134148CB00F022B1 /* libcups_s.exp */,
27D3037D134148CB00F022B1 /* libcups2.def */,
72220EB51333052D00FCA411 /* adminutil.c */,
72220EB81333056300FCA411 /* array.c */,
@@ -1743,6 +2052,9 @@
72220EC21333056300FCA411 /* custom.c */,
72220ED1133305BB00FCA411 /* debug.c */,
72220ED2133305BB00FCA411 /* dest.c */,
+ 72CF95E018A13543000FCAE4 /* dest-job.c */,
+ 72CF95E118A13543000FCAE4 /* dest-localization.c */,
+ 72CF95E218A13543000FCAE4 /* dest-options.c */,
72220ED3133305BB00FCA411 /* dir.c */,
72220ED4133305BB00FCA411 /* dir.h */,
72220ED5133305BB00FCA411 /* emit.c */,
@@ -1752,12 +2064,12 @@
72220EDB133305BB00FCA411 /* getifaddrs.c */,
72220EDC133305BB00FCA411 /* getputfile.c */,
72220EDD133305BB00FCA411 /* globals.c */,
+ 72220EE2133305BB00FCA411 /* http.c */,
72220EDE133305BB00FCA411 /* http-addr.c */,
72220EDF133305BB00FCA411 /* http-addrlist.c */,
72220EE1133305BB00FCA411 /* http-support.c */,
- 72220EE2133305BB00FCA411 /* http.c */,
- 72220EE5133305BB00FCA411 /* ipp-support.c */,
72220EE6133305BB00FCA411 /* ipp.c */,
+ 72220EE5133305BB00FCA411 /* ipp-support.c */,
72220EE8133305BB00FCA411 /* langprintf.c */,
72220EEA133305BB00FCA411 /* language.c */,
72220EEC133305BB00FCA411 /* localize.c */,
@@ -1777,12 +2089,17 @@
72220F02133305BB00FCA411 /* string.c */,
72220F03133305BB00FCA411 /* tempfile.c */,
72220F05133305BB00FCA411 /* thread.c */,
+ 727AD5B619100A58009F6862 /* tls.c */,
+ 270B267D17F5C06700C8A3A9 /* tls-darwin.c */,
+ 270B267E17F5C06700C8A3A9 /* tls-gnutls.c */,
+ 270B268117F5C5D600C8A3A9 /* tls-sspi.c */,
72220F06133305BB00FCA411 /* transcode.c */,
72220F08133305BB00FCA411 /* usersys.c */,
72220F09133305BB00FCA411 /* util.c */,
);
name = libcups;
sourceTree = "<group>";
+ wrapsLines = 1;
};
72220F45133305D000FCA411 /* Public Headers */ = {
isa = PBXGroup;
@@ -1798,6 +2115,7 @@
72220FB413330BCE00FCA411 /* mime.h */,
72220EF7133305BB00FCA411 /* ppd.h */,
274FF6091333315100317ECB /* ppdc.h */,
+ 2767FC7519269687000F61D3 /* pwg.h */,
72220EFA133305BB00FCA411 /* raster.h */,
72220EFD133305BB00FCA411 /* sidechannel.h */,
72220F07133305BB00FCA411 /* transcode.h */,
@@ -1805,6 +2123,7 @@
);
name = "Public Headers";
sourceTree = "<group>";
+ wrapsLines = 1;
};
72220F461333060C00FCA411 /* Private Headers */ = {
isa = PBXGroup;
@@ -1821,16 +2140,25 @@
7271883C1374AB14001A2036 /* mime-private.h */,
72220EF5133305BB00FCA411 /* ppd-private.h */,
72220EF9133305BB00FCA411 /* pwg-private.h */,
+ 2767FC76192696A0000F61D3 /* raster-private.h */,
72220EFE133305BB00FCA411 /* snmp-private.h */,
72220F01133305BB00FCA411 /* string-private.h */,
72220F04133305BB00FCA411 /* thread-private.h */,
);
name = "Private Headers";
sourceTree = "<group>";
+ wrapsLines = 1;
};
72220F5D13330A5A00FCA411 /* cupsd */ = {
isa = PBXGroup;
children = (
+ 72E65BDC18DC852700097E89 /* Makefile */,
+ 7226369B18AE6D19004ED309 /* org.cups.cups-lpd.plist */,
+ 72E65BD518DC818400097E89 /* org.cups.cups-lpd.plist.in */,
+ 72E65BD618DC818400097E89 /* org.cups.cupsd.path.in */,
+ 7226369C18AE6D19004ED309 /* org.cups.cupsd.plist */,
+ 72E65BD718DC818400097E89 /* org.cups.cupsd.service.in */,
+ 72E65BD818DC818400097E89 /* org.cups.cupsd.socket.in */,
72D53A3615B4929D003F877F /* colorman.c */,
72D53A3715B4929D003F877F /* colorman.h */,
72220F6913330B0C00FCA411 /* auth.c */,
@@ -1872,14 +2200,11 @@
72220F8D13330B0C00FCA411 /* subscriptions.h */,
72220F8E13330B0C00FCA411 /* sysman.c */,
72220F8F13330B0C00FCA411 /* sysman.h */,
- 728FB7E3153600FA005426E1 /* tls.c */,
- 728FB7E0153600FA005426E1 /* tls-darwin.c */,
- 728FB7E1153600FA005426E1 /* tls-gnutls.c */,
- 728FB7E2153600FA005426E1 /* tls-openssl.c */,
);
name = cupsd;
path = .;
sourceTree = "<group>";
+ wrapsLines = 1;
};
72220FB013330B3400FCA411 /* libcupsmime */ = {
isa = PBXGroup;
@@ -1890,10 +2215,24 @@
);
name = libcupsmime;
sourceTree = "<group>";
+ wrapsLines = 1;
};
72220FB113330B4A00FCA411 /* Frameworks */ = {
isa = PBXGroup;
children = (
+ 2767FC591926750C000F61D3 /* CoreFoundation.framework */,
+ 2767FC5A1926750C000F61D3 /* libiconv.dylib */,
+ 2767FC5B1926750C000F61D3 /* libresolv.dylib */,
+ 2767FC5C1926750C000F61D3 /* libz.dylib */,
+ 2767FC5D1926750C000F61D3 /* Security.framework */,
+ 2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */,
+ 72D53A3915B492FA003F877F /* libpam.dylib */,
+ 72D53A3315B4925B003F877F /* ApplicationServices.framework */,
+ 72D53A2C15B4913D003F877F /* IOKit.framework */,
+ 72D53A2915B49110003F877F /* GSS.framework */,
+ 728FB7EF1536167A005426E1 /* libiconv.dylib */,
+ 728FB7F01536167A005426E1 /* libresolv.dylib */,
+ 728FB7EC1536161C005426E1 /* libz.dylib */,
278C58E5136B64AF00836530 /* CoreFoundation.framework */,
278C58E6136B64B000836530 /* Kerberos.framework */,
278C58E7136B64B000836530 /* Security.framework */,
@@ -1909,6 +2248,7 @@
724378F71333E3CE009631B9 /* backends */ = {
isa = PBXGroup;
children = (
+ 72F7F1D719D1C0CC00870B09 /* org.cups.usb-quirks */,
724379091333E4E3009631B9 /* backend-private.h */,
724379501333FEBB009631B9 /* dnssd.c */,
724379CA1334000E009631B9 /* ieee1284.c */,
@@ -1924,6 +2264,7 @@
);
name = backends;
sourceTree = "<group>";
+ wrapsLines = 1;
};
7258EADC134594A8009286F1 /* filters */ = {
isa = PBXGroup;
@@ -1940,18 +2281,38 @@
);
name = filters;
sourceTree = "<group>";
+ wrapsLines = 1;
+ };
+ 727EF02E192E3461001EF690 /* cgi-bin */ = {
+ isa = PBXGroup;
+ children = (
+ 727EF02F192E3498001EF690 /* admin.c */,
+ 727EF030192E3498001EF690 /* cgi-private.h */,
+ 727EF031192E3498001EF690 /* cgi.h */,
+ 727EF032192E3498001EF690 /* classes.c */,
+ 727EF033192E3498001EF690 /* help-index.c */,
+ 727EF034192E3498001EF690 /* help-index.h */,
+ 727EF035192E3498001EF690 /* help.c */,
+ 727EF036192E3498001EF690 /* html.c */,
+ 727EF037192E3498001EF690 /* ipp-var.c */,
+ 727EF038192E3498001EF690 /* jobs.c */,
+ 727EF039192E3498001EF690 /* makedocset.c */,
+ 727EF03A192E3498001EF690 /* printers.c */,
+ 727EF03B192E3498001EF690 /* search.c */,
+ 727EF03C192E3498001EF690 /* template.c */,
+ 727EF03D192E3498001EF690 /* testcgi.c */,
+ 727EF03E192E3498001EF690 /* testhi.c */,
+ 727EF03F192E3498001EF690 /* testtemplate.c */,
+ 727EF040192E3498001EF690 /* var.c */,
+ );
+ name = "cgi-bin";
+ sourceTree = "<group>";
};
72BF96351333042100B1EAD7 = {
isa = PBXGroup;
children = (
- 72D53A3915B492FA003F877F /* libpam.dylib */,
- 72D53A3315B4925B003F877F /* ApplicationServices.framework */,
- 72D53A2C15B4913D003F877F /* IOKit.framework */,
- 72D53A2915B49110003F877F /* GSS.framework */,
- 728FB7EF1536167A005426E1 /* libiconv.dylib */,
- 728FB7F01536167A005426E1 /* libresolv.dylib */,
- 728FB7EC1536161C005426E1 /* libz.dylib */,
- 72220FB113330B4A00FCA411 /* Frameworks */,
+ 72E65BA218DC796500097E89 /* Autoconf Files */,
+ 72E65BB818DC79F800097E89 /* Documentation */,
72220F45133305D000FCA411 /* Public Headers */,
72220F461333060C00FCA411 /* Private Headers */,
72220EB41333050100FCA411 /* libcups */,
@@ -1959,12 +2320,14 @@
72220FB013330B3400FCA411 /* libcupsmime */,
274FF5F41333310400317ECB /* libcupsppdc */,
724378F71333E3CE009631B9 /* backends */,
+ 727EF02E192E3461001EF690 /* cgi-bin */,
274FF67313333B0A00317ECB /* commands */,
72220F5D13330A5A00FCA411 /* cupsd */,
274FF5D513332C2C00317ECB /* daemon */,
7258EADC134594A8009286F1 /* filters */,
276683CB1337B1CC000D33D0 /* ppdc tools */,
273BF6B81333B4A90022CAAB /* tests */,
+ 72220FB113330B4A00FCA411 /* Frameworks */,
72220EAF1333047D00FCA411 /* Products */,
);
indentWidth = 2;
@@ -1972,6 +2335,80 @@
tabWidth = 8;
wrapsLines = 0;
};
+ 72E65BA218DC796500097E89 /* Autoconf Files */ = {
+ isa = PBXGroup;
+ children = (
+ 72E65BD918DC850A00097E89 /* Makefile */,
+ 72E65BB718DC79CC00097E89 /* Makedefs.in */,
+ 72E65BA318DC797E00097E89 /* configure.ac */,
+ 7226369D18AE73BB004ED309 /* config.h.in */,
+ 72E65BB618DC79CC00097E89 /* cups-config.in */,
+ 72E65BA418DC799B00097E89 /* cups-common.m4 */,
+ 72E65BA518DC799B00097E89 /* cups-compiler.m4 */,
+ 72E65BA618DC799B00097E89 /* cups-defaults.m4 */,
+ 72E65BA718DC799B00097E89 /* cups-directories.m4 */,
+ 72E65BA818DC799B00097E89 /* cups-dnssd.m4 */,
+ 72E65BA918DC799B00097E89 /* cups-gssapi.m4 */,
+ 72E65BAA18DC799B00097E89 /* cups-largefile.m4 */,
+ 72E65BAB18DC799B00097E89 /* cups-startup.m4 */,
+ 72E65BAC18DC799B00097E89 /* cups-libtool.m4 */,
+ 72E65BAD18DC799B00097E89 /* cups-manpages.m4 */,
+ 72E65BAE18DC799B00097E89 /* cups-network.m4 */,
+ 72E65BAF18DC799B00097E89 /* cups-opsys.m4 */,
+ 72E65BB018DC799B00097E89 /* cups-pam.m4 */,
+ 72E65BB118DC799B00097E89 /* cups-poll.m4 */,
+ 72E65BB218DC799B00097E89 /* cups-scripting.m4 */,
+ 72E65BB318DC799B00097E89 /* cups-sharedlibs.m4 */,
+ 72E65BB418DC799B00097E89 /* cups-ssl.m4 */,
+ 72E65BB518DC799B00097E89 /* cups-threads.m4 */,
+ );
+ name = "Autoconf Files";
+ sourceTree = "<group>";
+ };
+ 72E65BB818DC79F800097E89 /* Documentation */ = {
+ isa = PBXGroup;
+ children = (
+ 72E65BDE18DCA35700097E89 /* CHANGES.txt */,
+ 72E65BDD18DCA35700097E89 /* CHANGES-1.7.txt */,
+ 72E65BDF18DCA35700097E89 /* CREDITS.txt */,
+ 72E65BE018DCA35700097E89 /* INSTALL.txt */,
+ 72E65BE118DCA35700097E89 /* IPPTOOL.txt */,
+ 72E65BE218DCA35700097E89 /* LICENSE.txt */,
+ 72E65BE318DCA35700097E89 /* README.txt */,
+ 72E65BB918DC7A3600097E89 /* doc */,
+ 72E65BBA18DC7A3600097E89 /* man */,
+ 72E65BBB18DC7A6B00097E89 /* api-array.header */,
+ 72E65BBC18DC7A6B00097E89 /* api-array.shtml */,
+ 72E65BBD18DC7A6B00097E89 /* api-cups.header */,
+ 72E65BBE18DC7A6B00097E89 /* api-cups.shtml */,
+ 72E65BBF18DC7A6B00097E89 /* api-filedir.header */,
+ 72E65BC018DC7A6B00097E89 /* api-filedir.shtml */,
+ 72E65BC118DC7A6B00097E89 /* api-filter.header */,
+ 72E65BC218DC7A6B00097E89 /* api-filter.shtml */,
+ 72E65BC318DC7A6B00097E89 /* api-httpipp.header */,
+ 72E65BC418DC7A6B00097E89 /* api-httpipp.shtml */,
+ 72E65BDA18DC852700097E89 /* api-mime.header */,
+ 72E65BDB18DC852700097E89 /* api-mime.shtml */,
+ 72E65BC518DC7A6B00097E89 /* api-overview.header */,
+ 72E65BC618DC7A6B00097E89 /* api-overview.shtml */,
+ 72E65BC718DC7A6B00097E89 /* api-ppd.header */,
+ 72E65BC818DC7A6B00097E89 /* api-ppd.shtml */,
+ 72E65BC918DC7A7E00097E89 /* api-ppdc.header */,
+ 72E65BCA18DC7A7E00097E89 /* api-ppdc.shtml */,
+ 72E65BCB18DC7A9800097E89 /* api-raster.header */,
+ 72E65BCC18DC7A9800097E89 /* api-raster.shtml */,
+ 72E65BCD18DC7A9800097E89 /* postscript-driver.header */,
+ 72E65BCE18DC7A9800097E89 /* postscript-driver.shtml */,
+ 72E65BCF18DC7A9800097E89 /* ppd-compiler.header */,
+ 72E65BD018DC7A9800097E89 /* ppd-compiler.shtml */,
+ 72E65BD118DC7A9800097E89 /* raster-driver.header */,
+ 72E65BD218DC7A9800097E89 /* raster-driver.shtml */,
+ 72E65BD318DC7A9800097E89 /* spec-ppd.header */,
+ 72E65BD418DC7A9800097E89 /* spec-ppd.shtml */,
+ );
+ name = Documentation;
+ sourceTree = "<group>";
+ };
72F75A681336FA42004BB496 /* libcupsimage */ = {
isa = PBXGroup;
children = (
@@ -1981,6 +2418,7 @@
);
name = libcupsimage;
sourceTree = "<group>";
+ wrapsLines = 1;
};
/* End PBXGroup section */
@@ -2393,6 +2831,24 @@
productReference = 276684041337FA1D000D33D0 /* cupsaddsmb */;
productType = "com.apple.product-type.tool";
};
+ 2767FC4619266A0D000F61D3 /* testdest */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 2767FC4D19266A0D000F61D3 /* Build configuration list for PBXNativeTarget "testdest" */;
+ buildPhases = (
+ 2767FC4919266A0D000F61D3 /* Sources */,
+ 2767FC4B19266A0D000F61D3 /* Frameworks */,
+ 2767FC4C19266A0D000F61D3 /* CopyFiles */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 2767FC4719266A0D000F61D3 /* PBXTargetDependency */,
+ );
+ name = testdest;
+ productName = testcups;
+ productReference = 2767FC5019266A0D000F61D3 /* testdest */;
+ productType = "com.apple.product-type.tool";
+ };
278C58CA136B640300836530 /* testhttp */ = {
isa = PBXNativeTarget;
buildConfigurationList = 278C58D3136B640300836530 /* Build configuration list for PBXNativeTarget "testhttp" */;
@@ -2610,6 +3066,24 @@
productReference = 726AD6F7135E88F0002C930D /* ippserver */;
productType = "com.apple.product-type.tool";
};
+ 72CF95E618A19134000FCAE4 /* ippfind */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 72CF95EE18A19134000FCAE4 /* Build configuration list for PBXNativeTarget "ippfind" */;
+ buildPhases = (
+ 72CF95E918A19134000FCAE4 /* Sources */,
+ 72CF95EB18A19134000FCAE4 /* Frameworks */,
+ 72CF95ED18A19134000FCAE4 /* CopyFiles */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 72CF95E718A19134000FCAE4 /* PBXTargetDependency */,
+ );
+ name = ippfind;
+ productName = ipptool;
+ productReference = 72CF95F118A19134000FCAE4 /* ipptool copy */;
+ productType = "com.apple.product-type.tool";
+ };
72F75A511336F950004BB496 /* cupstestppd */ = {
isa = PBXNativeTarget;
buildConfigurationList = 72F75A581336F951004BB496 /* Build configuration list for PBXNativeTarget "cupstestppd" */;
@@ -2653,7 +3127,7 @@
72BF96371333042100B1EAD7 /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 0500;
+ LastUpgradeCheck = 0600;
ORGANIZATIONNAME = "Apple Inc.";
};
buildConfigurationList = 72BF963A1333042100B1EAD7 /* Build configuration list for PBXProject "CUPS" */;
@@ -2686,6 +3160,7 @@
72F75A511336F950004BB496 /* cupstestppd */,
724379461333FEA9009631B9 /* dnssd */,
724378FC1333E43E009631B9 /* ipp */,
+ 72CF95E618A19134000FCAE4 /* ippfind */,
726AD6F6135E88F0002C930D /* ippserver */,
276683EF1337F78E000D33D0 /* ipptool */,
724379171333E532009631B9 /* lpd */,
@@ -2698,6 +3173,7 @@
720DD6C11358FD5F0064AA82 /* snmp */,
7243792F1333FB85009631B9 /* socket */,
273BF6BC1333B5000022CAAB /* testcups */,
+ 2767FC4619266A0D000F61D3 /* testdest */,
278C58CA136B640300836530 /* testhttp */,
270CCDA6135E3C9E00007BE2 /* testmime */,
7243795A1333FF1D009631B9 /* usb */,
@@ -2816,6 +3292,7 @@
274FF69E1333B1C400317ECB /* http-addrlist.c in Sources */,
274FF69F1333B1C400317ECB /* http-support.c in Sources */,
274FF6A01333B1C400317ECB /* http.c in Sources */,
+ 2767FC7419268F0C000F61D3 /* dest-options.c in Sources */,
274FF6A11333B1C400317ECB /* ipp-support.c in Sources */,
274FF6A21333B1C400317ECB /* ipp.c in Sources */,
274FF6A31333B1C400317ECB /* langprintf.c in Sources */,
@@ -2826,10 +3303,13 @@
274FF6A81333B1C400317ECB /* md5passwd.c in Sources */,
274FF6A91333B1C400317ECB /* notify.c in Sources */,
274FF6AA1333B1C400317ECB /* options.c in Sources */,
+ 727AD5B819100A58009F6862 /* tls.c in Sources */,
274FF6AB1333B1C400317ECB /* page.c in Sources */,
274FF6AC1333B1C400317ECB /* ppd-cache.c in Sources */,
+ 2767FC7219268F06000F61D3 /* dest-job.c in Sources */,
274FF6AD1333B1C400317ECB /* ppd.c in Sources */,
274FF6AE1333B1C400317ECB /* pwg-media.c in Sources */,
+ 2767FC7319268F09000F61D3 /* dest-localization.c in Sources */,
274FF6AF1333B1C400317ECB /* request.c in Sources */,
274FF6B01333B1C400317ECB /* sidechannel.c in Sources */,
274FF6B11333B1C400317ECB /* snmp.c in Sources */,
@@ -2907,6 +3387,14 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 2767FC4919266A0D000F61D3 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 2767FC5219266A36000F61D3 /* testdest.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
278C58C7136B640300836530 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -2931,6 +3419,7 @@
72220EB61333052D00FCA411 /* adminutil.c in Sources */,
72220EC51333056300FCA411 /* array.c in Sources */,
72220EC71333056300FCA411 /* attr.c in Sources */,
+ 727AD5B719100A58009F6862 /* tls.c in Sources */,
72220EC81333056300FCA411 /* auth.c in Sources */,
72220EC91333056300FCA411 /* backchannel.c in Sources */,
72220ECA1333056300FCA411 /* backend.c in Sources */,
@@ -2950,6 +3439,7 @@
72220F19133305BB00FCA411 /* http-addrlist.c in Sources */,
72220F1B133305BB00FCA411 /* http-support.c in Sources */,
72220F1C133305BB00FCA411 /* http.c in Sources */,
+ 72CF95E518A13543000FCAE4 /* dest-options.c in Sources */,
72220F1F133305BB00FCA411 /* ipp-support.c in Sources */,
72220F20133305BB00FCA411 /* ipp.c in Sources */,
72220F22133305BB00FCA411 /* langprintf.c in Sources */,
@@ -2970,10 +3460,12 @@
72220F3A133305BB00FCA411 /* snprintf.c in Sources */,
72220F3C133305BB00FCA411 /* string.c in Sources */,
72220F3D133305BB00FCA411 /* tempfile.c in Sources */,
+ 72CF95E418A13543000FCAE4 /* dest-localization.c in Sources */,
72220F3F133305BB00FCA411 /* thread.c in Sources */,
72220F40133305BB00FCA411 /* transcode.c in Sources */,
72220F42133305BB00FCA411 /* usersys.c in Sources */,
72220F43133305BB00FCA411 /* util.c in Sources */,
+ 72CF95E318A13543000FCAE4 /* dest-job.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -3005,7 +3497,6 @@
72220FA613330B0C00FCA411 /* subscriptions.c in Sources */,
72220FA713330B0C00FCA411 /* sysman.c in Sources */,
72C16CB9137B195D007E4BF4 /* file.c in Sources */,
- 728FB7E8153600FA005426E1 /* tls.c in Sources */,
72D53A3815B4929D003F877F /* colorman.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -3086,6 +3577,14 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 72CF95E918A19134000FCAE4 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 72CF95F318A19165000FCAE4 /* ippfind.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
72F75A4E1336F950004BB496 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -3327,6 +3826,21 @@
target = 276684031337FA1D000D33D0 /* cupsaddsmb */;
targetProxy = 276684121337FA8D000D33D0 /* PBXContainerItemProxy */;
};
+ 2767FC4719266A0D000F61D3 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 274FF6891333B1C400317ECB /* libcups_static */;
+ targetProxy = 2767FC4819266A0D000F61D3 /* PBXContainerItemProxy */;
+ };
+ 2767FC5419267469000F61D3 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 276683EF1337F78E000D33D0 /* ipptool */;
+ targetProxy = 2767FC5319267469000F61D3 /* PBXContainerItemProxy */;
+ };
+ 2767FC5619267469000F61D3 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 2767FC4619266A0D000F61D3 /* testdest */;
+ targetProxy = 2767FC5519267469000F61D3 /* PBXContainerItemProxy */;
+ };
278C58D6136B641D00836530 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 278C58CA136B640300836530 /* testhttp */;
@@ -3437,6 +3951,26 @@
target = 274FF6891333B1C400317ECB /* libcups_static */;
targetProxy = 726AD705135E8AC5002C930D /* PBXContainerItemProxy */;
};
+ 72BEA8D419AFA89C0085F0F3 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 726AD6F6135E88F0002C930D /* ippserver */;
+ targetProxy = 72BEA8D319AFA89C0085F0F3 /* PBXContainerItemProxy */;
+ };
+ 72BEA8D619AFA8A00085F0F3 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 72CF95E618A19134000FCAE4 /* ippfind */;
+ targetProxy = 72BEA8D519AFA8A00085F0F3 /* PBXContainerItemProxy */;
+ };
+ 72BEA8D819AFA8BB0085F0F3 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 274FF6891333B1C400317ECB /* libcups_static */;
+ targetProxy = 72BEA8D719AFA8BB0085F0F3 /* PBXContainerItemProxy */;
+ };
+ 72CF95E718A19134000FCAE4 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 72220EAD1333047D00FCA411 /* libcups */;
+ targetProxy = 72CF95E818A19134000FCAE4 /* PBXContainerItemProxy */;
+ };
72F75A661336FA30004BB496 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 72220EAD1333047D00FCA411 /* libcups */;
@@ -3517,6 +4051,7 @@
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = macosx;
};
name = Debug;
};
@@ -3524,12 +4059,14 @@
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = macosx;
};
name = Release;
};
274FF5F0133330C800317ECB /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ COMBINE_HIDPI_IMAGES = YES;
EXECUTABLE_PREFIX = "";
INSTALL_PATH = /usr/lib;
PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
@@ -3541,6 +4078,7 @@
274FF5F1133330C800317ECB /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ COMBINE_HIDPI_IMAGES = YES;
EXECUTABLE_PREFIX = "";
INSTALL_PATH = /usr/lib;
PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
@@ -3616,6 +4154,7 @@
274FF6DE1333B1C400317ECB /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ COMBINE_HIDPI_IMAGES = YES;
EXECUTABLE_EXTENSION = a;
EXECUTABLE_PREFIX = "";
INSTALL_PATH = /usr/local/lib;
@@ -3629,6 +4168,7 @@
274FF6DF1333B1C400317ECB /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ COMBINE_HIDPI_IMAGES = YES;
EXECUTABLE_EXTENSION = a;
EXECUTABLE_PREFIX = "";
INSTALL_PATH = /usr/local/lib;
@@ -3767,6 +4307,20 @@
};
name = Release;
};
+ 2767FC4E19266A0D000F61D3 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = testdest;
+ };
+ name = Debug;
+ };
+ 2767FC4F19266A0D000F61D3 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = testdest;
+ };
+ name = Release;
+ };
278C58D1136B640300836530 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -3800,6 +4354,7 @@
72220EB01333047D00FCA411 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ COMBINE_HIDPI_IMAGES = YES;
EXECUTABLE_PREFIX = "";
INSTALL_PATH = /usr/lib;
PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
@@ -3811,6 +4366,7 @@
72220EB11333047D00FCA411 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ COMBINE_HIDPI_IMAGES = YES;
EXECUTABLE_PREFIX = "";
INSTALL_PATH = /usr/lib;
PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
@@ -3838,6 +4394,7 @@
72220FAE13330B2300FCA411 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ COMBINE_HIDPI_IMAGES = YES;
EXECUTABLE_PREFIX = "";
INSTALL_PATH = /usr/lib;
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -3847,6 +4404,7 @@
72220FAF13330B2300FCA411 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ COMBINE_HIDPI_IMAGES = YES;
EXECUTABLE_PREFIX = "";
INSTALL_PATH = /usr/lib;
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -3968,12 +4526,19 @@
72BF963C1333042100B1EAD7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;
+ CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
DEBUG_INFORMATION_FORMAT = dwarf;
GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
+ GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
+ GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_SHADOW = YES;
+ GCC_WARN_SIGN_COMPARE = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_LABEL = YES;
@@ -3994,11 +4559,18 @@
72BF963D1333042100B1EAD7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;
+ CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
+ GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_SHADOW = YES;
+ GCC_WARN_SIGN_COMPARE = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_LABEL = YES;
@@ -4015,6 +4587,22 @@
};
name = Release;
};
+ 72CF95EF18A19134000FCAE4 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ INSTALL_PATH = /usr/bin;
+ PRODUCT_NAME = "ipptool copy";
+ };
+ name = Debug;
+ };
+ 72CF95F018A19134000FCAE4 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ INSTALL_PATH = /usr/bin;
+ PRODUCT_NAME = "ipptool copy";
+ };
+ name = Release;
+ };
72F75A591336F951004BB496 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -4034,6 +4622,7 @@
72F75A631336F9A3004BB496 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ COMBINE_HIDPI_IMAGES = YES;
EXECUTABLE_PREFIX = "";
INSTALL_PATH = /usr/lib;
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -4043,6 +4632,7 @@
72F75A641336F9A3004BB496 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ COMBINE_HIDPI_IMAGES = YES;
EXECUTABLE_PREFIX = "";
INSTALL_PATH = /usr/lib;
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -4223,6 +4813,15 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ 2767FC4D19266A0D000F61D3 /* Build configuration list for PBXNativeTarget "testdest" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 2767FC4E19266A0D000F61D3 /* Debug */,
+ 2767FC4F19266A0D000F61D3 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
278C58D3136B640300836530 /* Build configuration list for PBXNativeTarget "testhttp" */ = {
isa = XCConfigurationList;
buildConfigurations = (
@@ -4340,6 +4939,15 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ 72CF95EE18A19134000FCAE4 /* Build configuration list for PBXNativeTarget "ippfind" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 72CF95EF18A19134000FCAE4 /* Debug */,
+ 72CF95F018A19134000FCAE4 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
72F75A581336F951004BB496 /* Build configuration list for PBXNativeTarget "cupstestppd" */ = {
isa = XCConfigurationList;
buildConfigurations = (
diff --git a/xcode/config.h b/xcode/config.h
index f2cd5bdb8..51a993829 100644
--- a/xcode/config.h
+++ b/xcode/config.h
@@ -1,17 +1,16 @@
-/* config.h. Generated from config.h.in by configure. */
/*
- * "$Id: config.h 4216 2013-03-11 13:57:36Z msweet $"
+ * "$Id: config.h 12140 2014-08-30 01:51:22Z msweet $"
*
- * Configuration file for CUPS.
+ * Configuration file for CUPS and Xcode.
*
- * Copyright 2007-2013 by Apple Inc.
- * Copyright 1997-2007 by Easy Software Products.
+ * Copyright 2007-2014 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products.
*
- * These coded instructions, statements, and computer programs are the
- * property of Apple Inc. and are protected by Federal copyright
- * law. Distribution and use rights are outlined in the file "LICENSE.txt"
- * which should have been included with this file. If this file is
- * file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law. Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file. If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
*/
#ifndef _CUPS_CONFIG_H_
@@ -21,8 +20,8 @@
* Version of software...
*/
-#define CUPS_SVERSION "CUPS v1.7.0"
-#define CUPS_MINIMAL "CUPS/1.7.0"
+#define CUPS_SVERSION "CUPS v2.0.0"
+#define CUPS_MINIMAL "CUPS/2.0.0"
/*
@@ -33,6 +32,7 @@
#define CUPS_DEFAULT_GROUP "_lp"
#define CUPS_DEFAULT_SYSTEM_GROUPS "admin"
#define CUPS_DEFAULT_PRINTOPERATOR_AUTH "@AUTHKEY(system.print.operator) @admin @lpadmin"
+#define CUPS_DEFAULT_SYSTEM_AUTHKEY "system.print.admin"
/*
@@ -132,6 +132,13 @@
/*
+ * Do we have posix_spawn?
+ */
+
+#define HAVE_POSIX_SPAWN 1
+
+
+/*
* Do we have ZLIB?
*/
@@ -290,18 +297,10 @@
#define HAVE_CDSASSL 1
/* #undef HAVE_GNUTLS */
-/* #undef HAVE_LIBSSL */
#define HAVE_SSL 1
/*
- * Do we have the SSL_set_tlsext_host_name function?
- */
-
-/* #undef HAVE_SSL_SET_TLSEXT_HOST_NAME */
-
-
-/*
* What Security framework headers do we have?
*/
@@ -324,6 +323,20 @@
/*
+ * Do we have the SecGenerateSelfSignedCertificate function?
+ */
+
+/* #undef HAVE_SECGENERATESELFSIGNEDCERTIFICATE */
+
+
+/*
+ * Do we have the SecKeychainOpen function?
+ */
+
+#define HAVE_SECKEYCHAINOPEN 1
+
+
+/*
* Do we have libpaper?
*/
@@ -429,13 +442,6 @@
/*
- * Do we have the AIX usersec.h header file?
- */
-
-/* #undef HAVE_USERSEC_H */
-
-
-/*
* Do we have pthread support?
*/
@@ -448,6 +454,7 @@
#define HAVE_LAUNCH_H 1
#define HAVE_LAUNCHD 1
+#undef HAVE_LAUNCH_ACTIVATE_SOCKET
/*
@@ -523,13 +530,6 @@
/*
- * Do we have Darwin's IOKit private headers?
- */
-
-/* #undef HAVE_IOKIT_PWR_MGT_IOPMLIBPRIVATE_H */
-
-
-/*
* Do we have DBUS?
*/
@@ -625,13 +625,6 @@
/*
- * Do we have vproc_transaction_begin/end?
- */
-
-#define HAVE_VPROC_TRANSACTION_BEGIN 1
-
-
-/*
* Do we have libusb?
*/
@@ -706,5 +699,5 @@ static __inline int _cups_abs(int i) { return (i < 0 ? -i : i); }
#endif /* !_CUPS_CONFIG_H_ */
/*
- * End of "$Id: config.h 4216 2013-03-11 13:57:36Z msweet $".
+ * End of "$Id: config.h 12140 2014-08-30 01:51:22Z msweet $".
*/